@downcity/agent 1.1.437 → 1.1.445

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 (702) hide show
  1. package/README.md +25 -18
  2. package/bin/agent/Agent.d.ts +44 -20
  3. package/bin/agent/Agent.d.ts.map +1 -1
  4. package/bin/agent/Agent.js +114 -69
  5. package/bin/agent/Agent.js.map +1 -1
  6. package/bin/agent/AgentInstructions.d.ts +18 -4
  7. package/bin/agent/AgentInstructions.d.ts.map +1 -1
  8. package/bin/agent/AgentInstructions.js +33 -14
  9. package/bin/agent/AgentInstructions.js.map +1 -1
  10. package/bin/agent/AgentMemoryStorage.d.ts +1 -1
  11. package/bin/agent/AgentMemoryStorage.d.ts.map +1 -1
  12. package/bin/agent/AgentMemoryStorage.js.map +1 -1
  13. package/bin/agent/AgentSessions.d.ts +29 -16
  14. package/bin/agent/AgentSessions.d.ts.map +1 -1
  15. package/bin/agent/AgentSessions.js +42 -22
  16. package/bin/agent/AgentSessions.js.map +1 -1
  17. package/bin/group/Group.d.ts +13 -12
  18. package/bin/group/Group.d.ts.map +1 -1
  19. package/bin/group/Group.js +24 -23
  20. package/bin/group/Group.js.map +1 -1
  21. package/bin/group/GroupSession.d.ts.map +1 -1
  22. package/bin/group/GroupSession.js +13 -9
  23. package/bin/group/GroupSession.js.map +1 -1
  24. package/bin/group/GroupSessions.d.ts +27 -2
  25. package/bin/group/GroupSessions.d.ts.map +1 -1
  26. package/bin/group/GroupSessions.js +68 -21
  27. package/bin/group/GroupSessions.js.map +1 -1
  28. package/bin/group/storage/LocalGroupSessionDataStore.d.ts +8 -0
  29. package/bin/group/storage/LocalGroupSessionDataStore.d.ts.map +1 -1
  30. package/bin/group/storage/LocalGroupSessionDataStore.js +1 -1
  31. package/bin/group/storage/LocalGroupSessionDataStore.js.map +1 -1
  32. package/bin/group/storage/LocalGroupSessionStore.d.ts +64 -5
  33. package/bin/group/storage/LocalGroupSessionStore.d.ts.map +1 -1
  34. package/bin/group/storage/LocalGroupSessionStore.js +114 -23
  35. package/bin/group/storage/LocalGroupSessionStore.js.map +1 -1
  36. package/bin/index.d.ts +25 -30
  37. package/bin/index.d.ts.map +1 -1
  38. package/bin/index.js +14 -14
  39. package/bin/index.js.map +1 -1
  40. package/bin/{executor/model → model}/ModelGenerate.d.ts +1 -1
  41. package/bin/model/ModelGenerate.d.ts.map +1 -0
  42. package/bin/model/ModelGenerate.js.map +1 -0
  43. package/bin/{executor/model → model}/ModelRequestRunner.d.ts +1 -1
  44. package/bin/model/ModelRequestRunner.d.ts.map +1 -0
  45. package/bin/model/ModelRequestRunner.js.map +1 -0
  46. package/bin/{executor/model → model}/ModelStepRunner.d.ts +6 -7
  47. package/bin/model/ModelStepRunner.d.ts.map +1 -0
  48. package/bin/{executor/model → model}/ModelStepRunner.js +16 -10
  49. package/bin/model/ModelStepRunner.js.map +1 -0
  50. package/bin/model/ModelStreamConsumer.d.ts.map +1 -0
  51. package/bin/model/ModelStreamConsumer.js.map +1 -0
  52. package/bin/model/ModelStreamFailure.d.ts.map +1 -0
  53. package/bin/model/ModelStreamFailure.js.map +1 -0
  54. package/bin/model/ToolInputValidation.d.ts +28 -0
  55. package/bin/model/ToolInputValidation.d.ts.map +1 -0
  56. package/bin/model/ToolInputValidation.js +37 -0
  57. package/bin/model/ToolInputValidation.js.map +1 -0
  58. package/bin/model/messages/ChatMessageMarkup.d.ts.map +1 -0
  59. package/bin/model/messages/ChatMessageMarkup.js.map +1 -0
  60. package/bin/{executor → model}/messages/ChatMessageMarkupTypes.d.ts +1 -1
  61. package/bin/model/messages/ChatMessageMarkupTypes.d.ts.map +1 -0
  62. package/bin/{executor → model}/messages/ChatMessageMarkupTypes.js +1 -1
  63. package/bin/model/messages/ChatMessageMarkupTypes.js.map +1 -0
  64. package/bin/model/messages/SessionAttachmentMapper.d.ts.map +1 -0
  65. package/bin/model/messages/SessionAttachmentMapper.js.map +1 -0
  66. package/bin/model/messages/SessionMessageLog.d.ts.map +1 -0
  67. package/bin/model/messages/SessionMessageLog.js.map +1 -0
  68. package/bin/model/messages/SessionModelMessages.d.ts.map +1 -0
  69. package/bin/{executor → model}/messages/SessionModelMessages.js +0 -1
  70. package/bin/model/messages/SessionModelMessages.js.map +1 -0
  71. package/bin/model/prompts/SystemPromptAssets.d.ts.map +1 -0
  72. package/bin/{executor/composer/system/default → model/prompts}/SystemPromptAssets.js +1 -1
  73. package/bin/model/prompts/SystemPromptAssets.js.map +1 -0
  74. package/bin/model/prompts/assets/core.prompt.d.ts +7 -0
  75. package/bin/model/prompts/assets/core.prompt.d.ts.map +1 -0
  76. package/bin/model/prompts/assets/core.prompt.js +8 -0
  77. package/bin/model/prompts/assets/core.prompt.js.map +1 -0
  78. package/bin/session/Session.d.ts +29 -17
  79. package/bin/session/Session.d.ts.map +1 -1
  80. package/bin/session/Session.js +161 -134
  81. package/bin/session/Session.js.map +1 -1
  82. package/bin/session/input/SessionHookRunner.d.ts +52 -0
  83. package/bin/session/input/SessionHookRunner.d.ts.map +1 -0
  84. package/bin/session/input/SessionHookRunner.js +51 -0
  85. package/bin/session/input/SessionHookRunner.js.map +1 -0
  86. package/bin/session/input/SessionSystem.d.ts +26 -0
  87. package/bin/session/input/SessionSystem.d.ts.map +1 -0
  88. package/bin/session/{SessionSystem.js → input/SessionSystem.js} +27 -23
  89. package/bin/session/input/SessionSystem.js.map +1 -0
  90. package/bin/session/input/StepInput.d.ts +77 -0
  91. package/bin/session/input/StepInput.d.ts.map +1 -0
  92. package/bin/session/input/StepInput.js +429 -0
  93. package/bin/session/input/StepInput.js.map +1 -0
  94. package/bin/session/input/composer/AdaptiveContextCheckpoint.d.ts +33 -0
  95. package/bin/session/input/composer/AdaptiveContextCheckpoint.d.ts.map +1 -0
  96. package/bin/session/input/composer/AdaptiveContextCheckpoint.js +83 -0
  97. package/bin/session/input/composer/AdaptiveContextCheckpoint.js.map +1 -0
  98. package/bin/session/input/composer/AdaptiveContextParts.d.ts +26 -0
  99. package/bin/session/input/composer/AdaptiveContextParts.d.ts.map +1 -0
  100. package/bin/session/input/composer/AdaptiveContextParts.js +124 -0
  101. package/bin/session/input/composer/AdaptiveContextParts.js.map +1 -0
  102. package/bin/session/input/composer/ComposerAssembly.d.ts +21 -0
  103. package/bin/session/input/composer/ComposerAssembly.d.ts.map +1 -0
  104. package/bin/session/input/composer/ComposerAssembly.js +64 -0
  105. package/bin/session/input/composer/ComposerAssembly.js.map +1 -0
  106. package/bin/session/{composer/policies/SessionSummaryPrompts.d.ts → input/composer/ContextSummaryPrompts.d.ts} +5 -3
  107. package/bin/session/input/composer/ContextSummaryPrompts.d.ts.map +1 -0
  108. package/bin/session/{composer/policies/SessionSummaryPrompts.js → input/composer/ContextSummaryPrompts.js} +5 -3
  109. package/bin/session/input/composer/ContextSummaryPrompts.js.map +1 -0
  110. package/bin/session/input/composer/DefaultSessionComposer.d.ts +24 -0
  111. package/bin/session/input/composer/DefaultSessionComposer.d.ts.map +1 -0
  112. package/bin/session/input/composer/DefaultSessionComposer.js +108 -0
  113. package/bin/session/input/composer/DefaultSessionComposer.js.map +1 -0
  114. package/bin/session/input/composer/FullHistorySessionComposer.d.ts +19 -0
  115. package/bin/session/input/composer/FullHistorySessionComposer.d.ts.map +1 -0
  116. package/bin/session/input/composer/FullHistorySessionComposer.js +36 -0
  117. package/bin/session/input/composer/FullHistorySessionComposer.js.map +1 -0
  118. package/bin/session/{SessionLoop.d.ts → loop/SessionLoop.d.ts} +34 -7
  119. package/bin/session/loop/SessionLoop.d.ts.map +1 -0
  120. package/bin/session/{SessionLoop.js → loop/SessionLoop.js} +79 -16
  121. package/bin/session/loop/SessionLoop.js.map +1 -0
  122. package/bin/session/{SessionQueue.d.ts → loop/SessionQueue.d.ts} +9 -1
  123. package/bin/session/loop/SessionQueue.d.ts.map +1 -0
  124. package/bin/session/{SessionQueue.js → loop/SessionQueue.js} +19 -0
  125. package/bin/session/loop/SessionQueue.js.map +1 -0
  126. package/bin/session/{SessionState.d.ts → loop/SessionState.d.ts} +4 -5
  127. package/bin/session/loop/SessionState.d.ts.map +1 -0
  128. package/bin/session/{SessionState.js → loop/SessionState.js} +6 -25
  129. package/bin/session/loop/SessionState.js.map +1 -0
  130. package/bin/session/{SessionTitle.d.ts → loop/SessionTitle.d.ts} +4 -4
  131. package/bin/session/loop/SessionTitle.d.ts.map +1 -0
  132. package/bin/session/{SessionTitle.js → loop/SessionTitle.js} +3 -3
  133. package/bin/session/loop/SessionTitle.js.map +1 -0
  134. package/bin/session/loop/SessionTitleTask.d.ts.map +1 -0
  135. package/bin/session/loop/SessionTitleTask.js.map +1 -0
  136. package/bin/session/{runtime → loop}/SessionTurnCompletion.d.ts +7 -0
  137. package/bin/session/loop/SessionTurnCompletion.d.ts.map +1 -0
  138. package/bin/session/{runtime → loop}/SessionTurnCompletion.js +25 -6
  139. package/bin/session/loop/SessionTurnCompletion.js.map +1 -0
  140. package/bin/session/loop/SessionTurnContext.d.ts +12 -0
  141. package/bin/session/loop/SessionTurnContext.d.ts.map +1 -0
  142. package/bin/session/{runtime → loop}/SessionTurnContext.js +14 -67
  143. package/bin/session/loop/SessionTurnContext.js.map +1 -0
  144. package/bin/session/loop/SessionTurnFileDiff.d.ts.map +1 -0
  145. package/bin/session/{runtime → loop}/SessionTurnFileDiff.js +1 -1
  146. package/bin/session/loop/SessionTurnFileDiff.js.map +1 -0
  147. package/bin/session/{messages → loop}/SessionTurnFileDiffBuilder.d.ts +3 -3
  148. package/bin/session/loop/SessionTurnFileDiffBuilder.d.ts.map +1 -0
  149. package/bin/session/loop/SessionTurnFileDiffBuilder.js.map +1 -0
  150. package/bin/session/messages/ApprovalInteraction.d.ts +30 -0
  151. package/bin/session/messages/ApprovalInteraction.d.ts.map +1 -0
  152. package/bin/session/messages/ApprovalInteraction.js +61 -0
  153. package/bin/session/messages/ApprovalInteraction.js.map +1 -0
  154. package/bin/session/messages/SessionAgentMessageState.d.ts +47 -18
  155. package/bin/session/messages/SessionAgentMessageState.d.ts.map +1 -1
  156. package/bin/session/messages/SessionAgentMessageState.js +224 -86
  157. package/bin/session/messages/SessionAgentMessageState.js.map +1 -1
  158. package/bin/session/messages/SessionAgentMessageWriter.d.ts +15 -4
  159. package/bin/session/messages/SessionAgentMessageWriter.d.ts.map +1 -1
  160. package/bin/session/messages/SessionAgentMessageWriter.js +57 -37
  161. package/bin/session/messages/SessionAgentMessageWriter.js.map +1 -1
  162. package/bin/session/messages/SessionAgentParts.d.ts +14 -0
  163. package/bin/session/messages/SessionAgentParts.d.ts.map +1 -0
  164. package/bin/session/messages/SessionAgentParts.js +20 -0
  165. package/bin/session/messages/SessionAgentParts.js.map +1 -0
  166. package/bin/session/{execution → messages}/SessionAssistantOutputAdapter.d.ts +2 -2
  167. package/bin/session/messages/SessionAssistantOutputAdapter.d.ts.map +1 -0
  168. package/bin/session/messages/SessionAssistantOutputAdapter.js.map +1 -0
  169. package/bin/session/messages/SessionEventHub.d.ts.map +1 -0
  170. package/bin/session/messages/SessionEventHub.js.map +1 -0
  171. package/bin/session/messages/SessionInteractions.d.ts +57 -0
  172. package/bin/session/messages/SessionInteractions.d.ts.map +1 -0
  173. package/bin/session/messages/SessionInteractions.js +178 -0
  174. package/bin/session/messages/SessionInteractions.js.map +1 -0
  175. package/bin/session/messages/SessionJsonValue.d.ts +1 -3
  176. package/bin/session/messages/SessionJsonValue.d.ts.map +1 -1
  177. package/bin/session/messages/SessionJsonValue.js +0 -19
  178. package/bin/session/messages/SessionJsonValue.js.map +1 -1
  179. package/bin/session/messages/SessionMessageCache.d.ts +55 -0
  180. package/bin/session/messages/SessionMessageCache.d.ts.map +1 -0
  181. package/bin/session/messages/SessionMessageCache.js +133 -0
  182. package/bin/session/messages/SessionMessageCache.js.map +1 -0
  183. package/bin/session/messages/SessionMessageState.d.ts +17 -0
  184. package/bin/session/messages/SessionMessageState.d.ts.map +1 -0
  185. package/bin/session/messages/SessionMessageState.js +34 -0
  186. package/bin/session/messages/SessionMessageState.js.map +1 -0
  187. package/bin/session/messages/SessionMessageTimeline.d.ts.map +1 -0
  188. package/bin/session/{browse → messages}/SessionMessageTimeline.js +0 -1
  189. package/bin/session/messages/SessionMessageTimeline.js.map +1 -0
  190. package/bin/session/{SessionMessages.d.ts → messages/SessionMessages.d.ts} +35 -43
  191. package/bin/session/messages/SessionMessages.d.ts.map +1 -0
  192. package/bin/session/{SessionMessages.js → messages/SessionMessages.js} +178 -196
  193. package/bin/session/messages/SessionMessages.js.map +1 -0
  194. package/bin/session/messages/SessionModelRequestWarning.d.ts.map +1 -0
  195. package/bin/session/messages/SessionModelRequestWarning.js.map +1 -0
  196. package/bin/session/messages/SessionMutationFactory.d.ts +26 -0
  197. package/bin/session/messages/SessionMutationFactory.d.ts.map +1 -0
  198. package/bin/session/messages/SessionMutationFactory.js +38 -0
  199. package/bin/session/messages/SessionMutationFactory.js.map +1 -0
  200. package/bin/session/messages/SessionUserMessage.d.ts +5 -7
  201. package/bin/session/messages/SessionUserMessage.d.ts.map +1 -1
  202. package/bin/session/messages/SessionUserMessage.js +5 -28
  203. package/bin/session/messages/SessionUserMessage.js.map +1 -1
  204. package/bin/{executor/core-engine/CoreEngineSignals.d.ts → session/runner/AssistantParts.d.ts} +4 -9
  205. package/bin/session/runner/AssistantParts.d.ts.map +1 -0
  206. package/bin/{executor/core-engine/CoreEngineSignals.js → session/runner/AssistantParts.js} +4 -17
  207. package/bin/session/runner/AssistantParts.js.map +1 -0
  208. package/bin/session/runner/ContextPressure.d.ts +15 -0
  209. package/bin/session/runner/ContextPressure.d.ts.map +1 -0
  210. package/bin/{executor/core-engine/CoreEngineContextCompaction.js → session/runner/ContextPressure.js} +11 -11
  211. package/bin/session/runner/ContextPressure.js.map +1 -0
  212. package/bin/session/runner/ContextRetry.d.ts +39 -0
  213. package/bin/session/runner/ContextRetry.d.ts.map +1 -0
  214. package/bin/{executor/services/ExecutorRecoveryPolicy.js → session/runner/ContextRetry.js} +19 -19
  215. package/bin/session/runner/ContextRetry.js.map +1 -0
  216. package/bin/{executor/core-engine/CoreEngineError.d.ts → session/runner/ModelFailure.d.ts} +4 -4
  217. package/bin/session/runner/ModelFailure.d.ts.map +1 -0
  218. package/bin/{executor/core-engine/CoreEngineError.js → session/runner/ModelFailure.js} +4 -4
  219. package/bin/session/runner/ModelFailure.js.map +1 -0
  220. package/bin/session/runner/SessionExecutor.d.ts +108 -0
  221. package/bin/session/runner/SessionExecutor.d.ts.map +1 -0
  222. package/bin/session/runner/SessionExecutor.js +430 -0
  223. package/bin/session/runner/SessionExecutor.js.map +1 -0
  224. package/bin/session/runner/ToolLoopDecision.d.ts +60 -0
  225. package/bin/session/runner/ToolLoopDecision.d.ts.map +1 -0
  226. package/bin/{executor/core-engine/CoreEngineLoopDecision.js → session/runner/ToolLoopDecision.js} +5 -5
  227. package/bin/session/runner/ToolLoopDecision.js.map +1 -0
  228. package/bin/session/runner/ToolLoopLimits.d.ts +30 -0
  229. package/bin/session/runner/ToolLoopLimits.d.ts.map +1 -0
  230. package/bin/session/runner/ToolLoopLimits.js +46 -0
  231. package/bin/session/runner/ToolLoopLimits.js.map +1 -0
  232. package/bin/session/{browse → storage}/Browse.d.ts +1 -1
  233. package/bin/session/storage/Browse.d.ts.map +1 -0
  234. package/bin/session/{browse → storage}/Browse.js +1 -1
  235. package/bin/session/storage/Browse.js.map +1 -0
  236. package/bin/session/storage/LocalSessionStore.js +1 -1
  237. package/bin/session/storage/LocalSessionStore.js.map +1 -1
  238. package/bin/session/storage/LocalStorePaths.d.ts +0 -2
  239. package/bin/session/storage/LocalStorePaths.d.ts.map +1 -1
  240. package/bin/session/storage/LocalStorePaths.js +1 -1
  241. package/bin/session/storage/LocalStorePaths.js.map +1 -1
  242. package/bin/session/storage/Metadata.d.ts +1 -23
  243. package/bin/session/storage/Metadata.d.ts.map +1 -1
  244. package/bin/session/storage/Metadata.js +0 -18
  245. package/bin/session/storage/Metadata.js.map +1 -1
  246. package/bin/session/storage/RuntimeSessionPort.d.ts +0 -4
  247. package/bin/session/storage/RuntimeSessionPort.d.ts.map +1 -1
  248. package/bin/session/storage/RuntimeSessionPort.js +0 -1
  249. package/bin/session/storage/RuntimeSessionPort.js.map +1 -1
  250. package/bin/session/{preview → storage}/SessionMessagePreview.d.ts.map +1 -1
  251. package/bin/session/{preview → storage}/SessionMessagePreview.js +0 -1
  252. package/bin/session/{preview → storage}/SessionMessagePreview.js.map +1 -1
  253. package/bin/session/storage/SessionStorageCodec.d.ts.map +1 -1
  254. package/bin/session/storage/SessionStorageCodec.js +36 -18
  255. package/bin/session/storage/SessionStorageCodec.js.map +1 -1
  256. package/bin/session/storage/SessionStorageSchema.d.ts +1 -1
  257. package/bin/session/storage/SessionStorageSchema.js +1 -1
  258. package/bin/session/storage/SqliteSessionStorage.d.ts +6 -4
  259. package/bin/session/storage/SqliteSessionStorage.d.ts.map +1 -1
  260. package/bin/session/storage/SqliteSessionStorage.js +21 -18
  261. package/bin/session/storage/SqliteSessionStorage.js.map +1 -1
  262. package/bin/tools/ask/AskQuestionAnswers.d.ts +20 -0
  263. package/bin/tools/ask/AskQuestionAnswers.d.ts.map +1 -0
  264. package/bin/tools/ask/AskQuestionAnswers.js +99 -0
  265. package/bin/tools/ask/AskQuestionAnswers.js.map +1 -0
  266. package/bin/tools/ask/AskQuestionsTool.d.ts +5 -2
  267. package/bin/tools/ask/AskQuestionsTool.d.ts.map +1 -1
  268. package/bin/tools/ask/AskQuestionsTool.js +23 -31
  269. package/bin/tools/ask/AskQuestionsTool.js.map +1 -1
  270. package/bin/tools/ask/AskQuestionsToolSchemas.d.ts +1 -1
  271. package/bin/types/agent/AgentOptions.d.ts +16 -8
  272. package/bin/types/agent/AgentOptions.d.ts.map +1 -1
  273. package/bin/types/agent/AgentSessionCollection.d.ts +8 -0
  274. package/bin/types/agent/AgentSessionCollection.d.ts.map +1 -1
  275. package/bin/types/agent/SessionActor.d.ts +3 -3
  276. package/bin/types/agent/SessionActor.d.ts.map +1 -1
  277. package/bin/types/group/DispatchStrategy.js +1 -1
  278. package/bin/types/group/DispatchStrategy.js.map +1 -1
  279. package/bin/types/group/GroupSession.d.ts +41 -1
  280. package/bin/types/group/GroupSession.d.ts.map +1 -1
  281. package/bin/types/group/GroupSessionStore.d.ts +30 -3
  282. package/bin/types/group/GroupSessionStore.d.ts.map +1 -1
  283. package/bin/types/model/ModelRequest.d.ts.map +1 -0
  284. package/bin/types/model/ModelRequest.js.map +1 -0
  285. package/bin/types/sdk/AgentSessionAction.d.ts +1 -9
  286. package/bin/types/sdk/AgentSessionAction.d.ts.map +1 -1
  287. package/bin/types/session/{AdaptivePartContextPolicy.d.ts → ContextCheckpoint.d.ts} +10 -9
  288. package/bin/types/session/ContextCheckpoint.d.ts.map +1 -0
  289. package/bin/types/session/ContextCheckpoint.js +8 -0
  290. package/bin/types/session/ContextCheckpoint.js.map +1 -0
  291. package/bin/types/session/SessionAgentMessageState.d.ts +6 -10
  292. package/bin/types/session/SessionAgentMessageState.d.ts.map +1 -1
  293. package/bin/types/session/SessionAgentMessageState.js +3 -2
  294. package/bin/types/session/SessionAgentMessageState.js.map +1 -1
  295. package/bin/types/session/SessionComposer.d.ts +65 -36
  296. package/bin/types/session/SessionComposer.d.ts.map +1 -1
  297. package/bin/types/session/SessionComposer.js +7 -2
  298. package/bin/types/session/SessionComposer.js.map +1 -1
  299. package/bin/types/session/SessionExecution.d.ts +15 -11
  300. package/bin/types/session/SessionExecution.d.ts.map +1 -1
  301. package/bin/types/session/SessionExecution.js +1 -1
  302. package/bin/types/session/SessionInteractions.d.ts +0 -2
  303. package/bin/types/session/SessionInteractions.d.ts.map +1 -1
  304. package/bin/types/session/SessionLocalState.d.ts +0 -4
  305. package/bin/types/session/SessionLocalState.d.ts.map +1 -1
  306. package/bin/types/session/SessionLoop.d.ts +33 -12
  307. package/bin/types/session/SessionLoop.d.ts.map +1 -1
  308. package/bin/types/session/SessionMessages.d.ts +3 -29
  309. package/bin/types/session/SessionMessages.d.ts.map +1 -1
  310. package/bin/types/session/SessionOptions.d.ts +16 -13
  311. package/bin/types/session/SessionOptions.d.ts.map +1 -1
  312. package/bin/types/session/SessionPort.d.ts +0 -3
  313. package/bin/types/session/SessionPort.d.ts.map +1 -1
  314. package/bin/types/session/SessionState.d.ts +0 -1
  315. package/bin/types/session/SessionState.d.ts.map +1 -1
  316. package/bin/types/session/SessionSystem.d.ts +10 -12
  317. package/bin/types/session/SessionSystem.d.ts.map +1 -1
  318. package/bin/types/session/SessionTool.d.ts +2 -2
  319. package/bin/types/session/SessionTool.d.ts.map +1 -1
  320. package/bin/types/session/SessionTurnCompletion.d.ts +12 -2
  321. package/bin/types/session/SessionTurnCompletion.d.ts.map +1 -1
  322. package/bin/types/session/SessionTurnFileDiff.d.ts +4 -4
  323. package/bin/types/session/SessionTurnFileDiff.d.ts.map +1 -1
  324. package/bin/types/session/{SessionComposition.d.ts → StepInput.d.ts} +17 -15
  325. package/bin/types/session/StepInput.d.ts.map +1 -0
  326. package/bin/types/session/StepInput.js +8 -0
  327. package/bin/types/session/StepInput.js.map +1 -0
  328. package/bin/types/store/SessionHistoryMeta.d.ts.map +1 -0
  329. package/bin/types/store/SessionHistoryMeta.js.map +1 -0
  330. package/bin/types/store/SessionStorage.d.ts +17 -12
  331. package/bin/types/store/SessionStorage.d.ts.map +1 -1
  332. package/bin/types/tool/BoundAgentTool.d.ts +36 -0
  333. package/bin/types/tool/BoundAgentTool.d.ts.map +1 -0
  334. package/bin/types/tool/BoundAgentTool.js +13 -0
  335. package/bin/types/tool/BoundAgentTool.js.map +1 -0
  336. package/bin/types/tools/ask/AskQuestionsTool.d.ts +9 -13
  337. package/bin/types/tools/ask/AskQuestionsTool.d.ts.map +1 -1
  338. package/bin/types/tools/ask/AskQuestionsTool.js +3 -2
  339. package/bin/types/tools/ask/AskQuestionsTool.js.map +1 -1
  340. package/bin/types/turn/SessionAssistantOutput.d.ts.map +1 -0
  341. package/bin/types/turn/SessionAssistantOutput.js.map +1 -0
  342. package/bin/types/{executor → turn}/SessionTurnContext.d.ts +10 -28
  343. package/bin/types/turn/SessionTurnContext.d.ts.map +1 -0
  344. package/bin/types/turn/SessionTurnContext.js.map +1 -0
  345. package/bin/{executor/ids/resolveSessionId.d.ts → utils/ResolveSessionId.d.ts} +1 -1
  346. package/bin/utils/ResolveSessionId.d.ts.map +1 -0
  347. package/bin/{executor/ids/resolveSessionId.js → utils/ResolveSessionId.js} +1 -1
  348. package/bin/utils/ResolveSessionId.js.map +1 -0
  349. package/bin/utils/Time.d.ts +5 -8
  350. package/bin/utils/Time.d.ts.map +1 -1
  351. package/bin/utils/Time.js +5 -54
  352. package/bin/utils/Time.js.map +1 -1
  353. package/package.json +2 -2
  354. package/scripts/ask-question-answers.test.mjs +132 -0
  355. package/scripts/group-session-archive.test.mjs +193 -0
  356. package/scripts/{core-engine-model-stream.test.mjs → model-step-runner.test.mjs} +97 -4
  357. package/scripts/rewrite-build-aliases.mjs +3 -4
  358. package/scripts/session-action-part.test.mjs +172 -0
  359. package/scripts/session-agent-message-part-order.test.mjs +13 -7
  360. package/scripts/{core-engine-context-compaction.test.mjs → session-executor-context-pressure.test.mjs} +40 -32
  361. package/scripts/{executor-failure-result.test.mjs → session-executor-failure-result.test.mjs} +17 -14
  362. package/scripts/session-executor-max-steps.test.mjs +143 -0
  363. package/scripts/session-initialization.test.mjs +3 -4
  364. package/scripts/session-interaction-migration.test.mjs +145 -0
  365. package/scripts/session-interaction-mutation.test.mjs +202 -0
  366. package/scripts/session-messages-error-part.test.mjs +1 -1
  367. package/scripts/session-messages-error.test.mjs +1 -1
  368. package/scripts/session-prompt-idempotency.test.mjs +4 -2
  369. package/scripts/session-queue.test.mjs +21 -1
  370. package/scripts/session-storage-sqlite.test.mjs +3 -3
  371. package/scripts/session-system-blocks.test.mjs +61 -39
  372. package/scripts/session-turn-context.test.mjs +37 -40
  373. package/scripts/verify-build-aliases.mjs +1 -1
  374. package/src/agent/Agent.ts +137 -80
  375. package/src/agent/AgentInstructions.ts +48 -15
  376. package/src/agent/AgentMemoryStorage.ts +1 -1
  377. package/src/agent/AgentSessions.ts +60 -38
  378. package/src/group/Group.ts +27 -24
  379. package/src/group/GroupSession.ts +12 -8
  380. package/src/group/GroupSessions.ts +79 -20
  381. package/src/group/storage/LocalGroupSessionDataStore.ts +9 -1
  382. package/src/group/storage/LocalGroupSessionStore.ts +138 -28
  383. package/src/index.ts +35 -52
  384. package/src/{executor/model → model}/ModelGenerate.ts +3 -3
  385. package/src/{executor/model → model}/ModelRequestRunner.ts +2 -2
  386. package/src/{executor/model → model}/ModelStepRunner.ts +22 -19
  387. package/src/{executor/model → model}/ModelStreamConsumer.ts +1 -1
  388. package/src/model/README.md +117 -0
  389. package/src/model/ToolInputValidation.ts +58 -0
  390. package/src/{executor → model}/messages/ChatMessageMarkupTypes.ts +1 -1
  391. package/src/{executor → model}/messages/SessionModelMessages.ts +0 -1
  392. package/src/{executor/composer/system/default → model/prompts}/SystemPromptAssets.ts +1 -1
  393. package/src/model/prompts/assets/core.prompt.ts +9 -0
  394. package/src/{executor/composer/system/default → model/prompts}/assets/core.prompt.ts.txt +26 -25
  395. package/src/session/Session.ts +185 -151
  396. package/src/session/input/SessionHookRunner.ts +100 -0
  397. package/src/session/{SessionSystem.ts → input/SessionSystem.ts} +31 -29
  398. package/src/session/input/StepInput.ts +507 -0
  399. package/src/session/input/composer/AdaptiveContextCheckpoint.ts +115 -0
  400. package/src/session/input/composer/AdaptiveContextParts.ts +166 -0
  401. package/src/session/input/composer/ComposerAssembly.ts +81 -0
  402. package/src/session/{composer/policies/SessionSummaryPrompts.ts → input/composer/ContextSummaryPrompts.ts} +5 -2
  403. package/src/session/input/composer/DefaultSessionComposer.ts +147 -0
  404. package/src/session/input/composer/FullHistorySessionComposer.ts +55 -0
  405. package/src/session/loop/README.md +28 -0
  406. package/src/session/{SessionLoop.ts → loop/SessionLoop.ts} +100 -24
  407. package/src/session/{SessionQueue.ts → loop/SessionQueue.ts} +18 -0
  408. package/src/session/{SessionState.ts → loop/SessionState.ts} +4 -21
  409. package/src/session/{SessionTitle.ts → loop/SessionTitle.ts} +3 -3
  410. package/src/session/{runtime → loop}/SessionTurnCompletion.ts +27 -8
  411. package/src/session/{runtime → loop}/SessionTurnContext.ts +19 -93
  412. package/src/session/{runtime → loop}/SessionTurnFileDiff.ts +1 -1
  413. package/src/session/{messages → loop}/SessionTurnFileDiffBuilder.ts +4 -4
  414. package/src/session/messages/ApprovalInteraction.ts +77 -0
  415. package/src/session/messages/README.md +27 -0
  416. package/src/session/messages/SessionAgentMessageState.ts +324 -113
  417. package/src/session/messages/SessionAgentMessageWriter.ts +82 -45
  418. package/src/session/messages/SessionAgentParts.ts +39 -0
  419. package/src/session/{execution → messages}/SessionAssistantOutputAdapter.ts +2 -2
  420. package/src/session/messages/SessionInteractions.ts +227 -0
  421. package/src/session/messages/SessionJsonValue.ts +1 -18
  422. package/src/session/messages/SessionMessageCache.ts +171 -0
  423. package/src/session/messages/SessionMessageState.ts +42 -0
  424. package/src/session/{browse → messages}/SessionMessageTimeline.ts +0 -1
  425. package/src/session/{SessionMessages.ts → messages/SessionMessages.ts} +225 -284
  426. package/src/session/messages/SessionMutationFactory.ts +58 -0
  427. package/src/session/messages/SessionUserMessage.ts +7 -32
  428. package/src/{executor/core-engine/CoreEngineSignals.ts → session/runner/AssistantParts.ts} +3 -21
  429. package/src/{executor/core-engine/CoreEngineContextCompaction.ts → session/runner/ContextPressure.ts} +10 -10
  430. package/src/{executor/services/ExecutorRecoveryPolicy.ts → session/runner/ContextRetry.ts} +25 -25
  431. package/src/{executor/core-engine/CoreEngineError.ts → session/runner/ModelFailure.ts} +3 -3
  432. package/src/session/runner/SessionExecutor.ts +633 -0
  433. package/src/session/runner/ToolLoopDecision.ts +98 -0
  434. package/src/session/runner/ToolLoopLimits.ts +53 -0
  435. package/src/session/{browse → storage}/Browse.ts +2 -2
  436. package/src/session/storage/LocalSessionStore.ts +1 -1
  437. package/src/session/storage/LocalStorePaths.ts +1 -1
  438. package/src/session/storage/Metadata.ts +1 -44
  439. package/src/session/storage/RuntimeSessionPort.ts +0 -5
  440. package/src/session/{preview → storage}/SessionMessagePreview.ts +0 -1
  441. package/src/session/storage/SessionStorageCodec.ts +54 -28
  442. package/src/session/storage/SessionStorageSchema.ts +1 -1
  443. package/src/session/storage/SqliteSessionStorage.ts +29 -22
  444. package/src/tools/ask/AskQuestionAnswers.ts +125 -0
  445. package/src/tools/ask/AskQuestionsTool.ts +32 -37
  446. package/src/types/agent/AgentOptions.ts +17 -8
  447. package/src/types/agent/AgentSessionCollection.ts +9 -0
  448. package/src/types/agent/SessionActor.ts +3 -4
  449. package/src/types/group/DispatchStrategy.ts +1 -1
  450. package/src/types/group/GroupSession.ts +44 -1
  451. package/src/types/group/GroupSessionStore.ts +30 -3
  452. package/src/types/sdk/AgentSessionAction.ts +1 -14
  453. package/src/types/session/{AdaptivePartContextPolicy.ts → ContextCheckpoint.ts} +9 -8
  454. package/src/types/session/SessionAgentMessageState.ts +6 -16
  455. package/src/types/session/SessionComposer.ts +67 -39
  456. package/src/types/session/SessionExecution.ts +15 -13
  457. package/src/types/session/SessionInteractions.ts +0 -2
  458. package/src/types/session/SessionLocalState.ts +0 -5
  459. package/src/types/session/SessionLoop.ts +37 -12
  460. package/src/types/session/SessionMessages.ts +3 -34
  461. package/src/types/session/SessionOptions.ts +18 -13
  462. package/src/types/session/SessionPort.ts +0 -4
  463. package/src/types/session/SessionState.ts +0 -1
  464. package/src/types/session/SessionSystem.ts +10 -16
  465. package/src/types/session/SessionTool.ts +2 -2
  466. package/src/types/session/SessionTurnCompletion.ts +12 -2
  467. package/src/types/session/SessionTurnFileDiff.ts +4 -4
  468. package/src/types/session/{SessionComposition.ts → StepInput.ts} +22 -14
  469. package/src/types/store/SessionStorage.ts +17 -12
  470. package/src/types/tool/BoundAgentTool.ts +38 -0
  471. package/src/types/tools/ask/AskQuestionsTool.ts +11 -13
  472. package/src/types/{executor → turn}/SessionTurnContext.ts +8 -34
  473. package/src/utils/Time.ts +12 -64
  474. package/tsconfig.json +1 -2
  475. package/tsconfig.tsbuildinfo +1 -1
  476. package/bin/executor/Executor.d.ts +0 -92
  477. package/bin/executor/Executor.d.ts.map +0 -1
  478. package/bin/executor/Executor.js +0 -232
  479. package/bin/executor/Executor.js.map +0 -1
  480. package/bin/executor/composer/system/default/SystemPromptAssets.d.ts.map +0 -1
  481. package/bin/executor/composer/system/default/SystemPromptAssets.js.map +0 -1
  482. package/bin/executor/composer/system/default/assets/core.prompt.d.ts +0 -7
  483. package/bin/executor/composer/system/default/assets/core.prompt.d.ts.map +0 -1
  484. package/bin/executor/composer/system/default/assets/core.prompt.js +0 -8
  485. package/bin/executor/composer/system/default/assets/core.prompt.js.map +0 -1
  486. package/bin/executor/core-engine/CoreEngineContextCompaction.d.ts +0 -15
  487. package/bin/executor/core-engine/CoreEngineContextCompaction.d.ts.map +0 -1
  488. package/bin/executor/core-engine/CoreEngineContextCompaction.js.map +0 -1
  489. package/bin/executor/core-engine/CoreEngineError.d.ts.map +0 -1
  490. package/bin/executor/core-engine/CoreEngineError.js.map +0 -1
  491. package/bin/executor/core-engine/CoreEngineLoopDecision.d.ts +0 -26
  492. package/bin/executor/core-engine/CoreEngineLoopDecision.d.ts.map +0 -1
  493. package/bin/executor/core-engine/CoreEngineLoopDecision.js.map +0 -1
  494. package/bin/executor/core-engine/CoreEngineRunner.d.ts +0 -48
  495. package/bin/executor/core-engine/CoreEngineRunner.d.ts.map +0 -1
  496. package/bin/executor/core-engine/CoreEngineRunner.js +0 -343
  497. package/bin/executor/core-engine/CoreEngineRunner.js.map +0 -1
  498. package/bin/executor/core-engine/CoreEngineSignals.d.ts.map +0 -1
  499. package/bin/executor/core-engine/CoreEngineSignals.js.map +0 -1
  500. package/bin/executor/ids/resolveSessionId.d.ts.map +0 -1
  501. package/bin/executor/ids/resolveSessionId.js.map +0 -1
  502. package/bin/executor/messages/ChatMessageMarkup.d.ts.map +0 -1
  503. package/bin/executor/messages/ChatMessageMarkup.js.map +0 -1
  504. package/bin/executor/messages/ChatMessageMarkupTypes.d.ts.map +0 -1
  505. package/bin/executor/messages/ChatMessageMarkupTypes.js.map +0 -1
  506. package/bin/executor/messages/SessionAttachmentMapper.d.ts.map +0 -1
  507. package/bin/executor/messages/SessionAttachmentMapper.js.map +0 -1
  508. package/bin/executor/messages/SessionMessageLog.d.ts.map +0 -1
  509. package/bin/executor/messages/SessionMessageLog.js.map +0 -1
  510. package/bin/executor/messages/SessionModelMessages.d.ts.map +0 -1
  511. package/bin/executor/messages/SessionModelMessages.js.map +0 -1
  512. package/bin/executor/model/ModelGenerate.d.ts.map +0 -1
  513. package/bin/executor/model/ModelGenerate.js.map +0 -1
  514. package/bin/executor/model/ModelRequestRunner.d.ts.map +0 -1
  515. package/bin/executor/model/ModelRequestRunner.js.map +0 -1
  516. package/bin/executor/model/ModelStepRunner.d.ts.map +0 -1
  517. package/bin/executor/model/ModelStepRunner.js.map +0 -1
  518. package/bin/executor/model/ModelStreamConsumer.d.ts.map +0 -1
  519. package/bin/executor/model/ModelStreamConsumer.js.map +0 -1
  520. package/bin/executor/model/ModelStreamFailure.d.ts.map +0 -1
  521. package/bin/executor/model/ModelStreamFailure.js.map +0 -1
  522. package/bin/executor/services/ExecutorRecoveryPolicy.d.ts +0 -39
  523. package/bin/executor/services/ExecutorRecoveryPolicy.d.ts.map +0 -1
  524. package/bin/executor/services/ExecutorRecoveryPolicy.js.map +0 -1
  525. package/bin/executor/types/SessionHistoryMeta.d.ts.map +0 -1
  526. package/bin/executor/types/SessionHistoryMeta.js.map +0 -1
  527. package/bin/executor/types/SessionLoop.d.ts +0 -59
  528. package/bin/executor/types/SessionLoop.d.ts.map +0 -1
  529. package/bin/executor/types/SessionLoop.js +0 -9
  530. package/bin/executor/types/SessionLoop.js.map +0 -1
  531. package/bin/executor/types/SessionPrompts.d.ts +0 -14
  532. package/bin/executor/types/SessionPrompts.d.ts.map +0 -1
  533. package/bin/executor/types/SessionPrompts.js +0 -8
  534. package/bin/executor/types/SessionPrompts.js.map +0 -1
  535. package/bin/session/DefaultSessionComposer.d.ts +0 -24
  536. package/bin/session/DefaultSessionComposer.d.ts.map +0 -1
  537. package/bin/session/DefaultSessionComposer.js +0 -99
  538. package/bin/session/DefaultSessionComposer.js.map +0 -1
  539. package/bin/session/SessionComposition.d.ts +0 -49
  540. package/bin/session/SessionComposition.d.ts.map +0 -1
  541. package/bin/session/SessionComposition.js +0 -309
  542. package/bin/session/SessionComposition.js.map +0 -1
  543. package/bin/session/SessionHookPoints.d.ts +0 -15
  544. package/bin/session/SessionHookPoints.d.ts.map +0 -1
  545. package/bin/session/SessionHookPoints.js +0 -15
  546. package/bin/session/SessionHookPoints.js.map +0 -1
  547. package/bin/session/SessionHooks.d.ts +0 -38
  548. package/bin/session/SessionHooks.d.ts.map +0 -1
  549. package/bin/session/SessionHooks.js +0 -71
  550. package/bin/session/SessionHooks.js.map +0 -1
  551. package/bin/session/SessionLoop.d.ts.map +0 -1
  552. package/bin/session/SessionLoop.js.map +0 -1
  553. package/bin/session/SessionMessages.d.ts.map +0 -1
  554. package/bin/session/SessionMessages.js.map +0 -1
  555. package/bin/session/SessionQueue.d.ts.map +0 -1
  556. package/bin/session/SessionQueue.js.map +0 -1
  557. package/bin/session/SessionState.d.ts.map +0 -1
  558. package/bin/session/SessionState.js.map +0 -1
  559. package/bin/session/SessionSystem.d.ts +0 -19
  560. package/bin/session/SessionSystem.d.ts.map +0 -1
  561. package/bin/session/SessionSystem.js.map +0 -1
  562. package/bin/session/SessionTitle.d.ts.map +0 -1
  563. package/bin/session/SessionTitle.js.map +0 -1
  564. package/bin/session/browse/Browse.d.ts.map +0 -1
  565. package/bin/session/browse/Browse.js.map +0 -1
  566. package/bin/session/browse/SessionMessageTimeline.d.ts.map +0 -1
  567. package/bin/session/browse/SessionMessageTimeline.js.map +0 -1
  568. package/bin/session/composer/policies/AdaptivePartContextPolicy.d.ts +0 -35
  569. package/bin/session/composer/policies/AdaptivePartContextPolicy.d.ts.map +0 -1
  570. package/bin/session/composer/policies/AdaptivePartContextPolicy.js +0 -256
  571. package/bin/session/composer/policies/AdaptivePartContextPolicy.js.map +0 -1
  572. package/bin/session/composer/policies/FullHistoryContextPolicy.d.ts +0 -24
  573. package/bin/session/composer/policies/FullHistoryContextPolicy.d.ts.map +0 -1
  574. package/bin/session/composer/policies/FullHistoryContextPolicy.js +0 -31
  575. package/bin/session/composer/policies/FullHistoryContextPolicy.js.map +0 -1
  576. package/bin/session/composer/policies/SessionSummaryPrompts.d.ts.map +0 -1
  577. package/bin/session/composer/policies/SessionSummaryPrompts.js.map +0 -1
  578. package/bin/session/control/SessionInteractions.d.ts +0 -39
  579. package/bin/session/control/SessionInteractions.d.ts.map +0 -1
  580. package/bin/session/control/SessionInteractions.js +0 -255
  581. package/bin/session/control/SessionInteractions.js.map +0 -1
  582. package/bin/session/execution/SessionAssistantOutputAdapter.d.ts.map +0 -1
  583. package/bin/session/execution/SessionAssistantOutputAdapter.js.map +0 -1
  584. package/bin/session/execution/tools/SessionShellApprovalAdapter.d.ts +0 -28
  585. package/bin/session/execution/tools/SessionShellApprovalAdapter.d.ts.map +0 -1
  586. package/bin/session/execution/tools/SessionShellApprovalAdapter.js +0 -87
  587. package/bin/session/execution/tools/SessionShellApprovalAdapter.js.map +0 -1
  588. package/bin/session/messages/SessionAgentActionPartWriter.d.ts +0 -22
  589. package/bin/session/messages/SessionAgentActionPartWriter.d.ts.map +0 -1
  590. package/bin/session/messages/SessionAgentActionPartWriter.js +0 -36
  591. package/bin/session/messages/SessionAgentActionPartWriter.js.map +0 -1
  592. package/bin/session/messages/SessionMessageInteractionWriter.d.ts +0 -46
  593. package/bin/session/messages/SessionMessageInteractionWriter.d.ts.map +0 -1
  594. package/bin/session/messages/SessionMessageInteractionWriter.js +0 -183
  595. package/bin/session/messages/SessionMessageInteractionWriter.js.map +0 -1
  596. package/bin/session/messages/SessionTurnFileDiffBuilder.d.ts.map +0 -1
  597. package/bin/session/messages/SessionTurnFileDiffBuilder.js.map +0 -1
  598. package/bin/session/runtime/SessionEventHub.d.ts.map +0 -1
  599. package/bin/session/runtime/SessionEventHub.js.map +0 -1
  600. package/bin/session/runtime/SessionModelRequestWarning.d.ts.map +0 -1
  601. package/bin/session/runtime/SessionModelRequestWarning.js.map +0 -1
  602. package/bin/session/runtime/SessionTitleTask.d.ts.map +0 -1
  603. package/bin/session/runtime/SessionTitleTask.js.map +0 -1
  604. package/bin/session/runtime/SessionTurnCompletion.d.ts.map +0 -1
  605. package/bin/session/runtime/SessionTurnCompletion.js.map +0 -1
  606. package/bin/session/runtime/SessionTurnContext.d.ts +0 -29
  607. package/bin/session/runtime/SessionTurnContext.d.ts.map +0 -1
  608. package/bin/session/runtime/SessionTurnContext.js.map +0 -1
  609. package/bin/session/runtime/SessionTurnFileDiff.d.ts.map +0 -1
  610. package/bin/session/runtime/SessionTurnFileDiff.js.map +0 -1
  611. package/bin/types/action/ActionResult.d.ts +0 -35
  612. package/bin/types/action/ActionResult.d.ts.map +0 -1
  613. package/bin/types/action/ActionResult.js +0 -18
  614. package/bin/types/action/ActionResult.js.map +0 -1
  615. package/bin/types/executor/ModelRequest.d.ts.map +0 -1
  616. package/bin/types/executor/ModelRequest.js.map +0 -1
  617. package/bin/types/executor/SessionAssistantOutput.d.ts.map +0 -1
  618. package/bin/types/executor/SessionAssistantOutput.js.map +0 -1
  619. package/bin/types/executor/SessionToolExecutionContext.d.ts +0 -23
  620. package/bin/types/executor/SessionToolExecutionContext.d.ts.map +0 -1
  621. package/bin/types/executor/SessionToolExecutionContext.js +0 -10
  622. package/bin/types/executor/SessionToolExecutionContext.js.map +0 -1
  623. package/bin/types/executor/SessionTurnContext.d.ts.map +0 -1
  624. package/bin/types/executor/SessionTurnContext.js.map +0 -1
  625. package/bin/types/session/AdaptivePartContextPolicy.d.ts.map +0 -1
  626. package/bin/types/session/AdaptivePartContextPolicy.js +0 -7
  627. package/bin/types/session/AdaptivePartContextPolicy.js.map +0 -1
  628. package/bin/types/session/SessionComposition.d.ts.map +0 -1
  629. package/bin/types/session/SessionComposition.js +0 -8
  630. package/bin/types/session/SessionComposition.js.map +0 -1
  631. package/bin/types/session/SessionContextPolicy.d.ts +0 -70
  632. package/bin/types/session/SessionContextPolicy.d.ts.map +0 -1
  633. package/bin/types/session/SessionContextPolicy.js +0 -8
  634. package/bin/types/session/SessionContextPolicy.js.map +0 -1
  635. package/bin/types/tools/ToolActionExecutionContext.d.ts +0 -30
  636. package/bin/types/tools/ToolActionExecutionContext.d.ts.map +0 -1
  637. package/bin/types/tools/ToolActionExecutionContext.js +0 -8
  638. package/bin/types/tools/ToolActionExecutionContext.js.map +0 -1
  639. package/src/executor/Executor.ts +0 -319
  640. package/src/executor/README.md +0 -92
  641. package/src/executor/composer/system/default/assets/core.prompt.ts +0 -9
  642. package/src/executor/core-engine/CoreEngineLoopDecision.ts +0 -63
  643. package/src/executor/core-engine/CoreEngineRunner.ts +0 -458
  644. package/src/executor/types/SessionLoop.ts +0 -69
  645. package/src/executor/types/SessionPrompts.ts +0 -14
  646. package/src/session/DefaultSessionComposer.ts +0 -123
  647. package/src/session/SessionComposition.ts +0 -370
  648. package/src/session/SessionHookPoints.ts +0 -17
  649. package/src/session/SessionHooks.ts +0 -85
  650. package/src/session/composer/policies/AdaptivePartContextPolicy.ts +0 -307
  651. package/src/session/composer/policies/FullHistoryContextPolicy.ts +0 -36
  652. package/src/session/control/SessionInteractions.ts +0 -311
  653. package/src/session/execution/tools/SessionShellApprovalAdapter.ts +0 -105
  654. package/src/session/messages/SessionAgentActionPartWriter.ts +0 -54
  655. package/src/session/messages/SessionMessageInteractionWriter.ts +0 -279
  656. package/src/types/action/ActionResult.ts +0 -50
  657. package/src/types/executor/SessionToolExecutionContext.ts +0 -26
  658. package/src/types/session/SessionContextPolicy.ts +0 -77
  659. package/src/types/tools/ToolActionExecutionContext.ts +0 -32
  660. /package/bin/{executor/model → model}/ModelGenerate.js +0 -0
  661. /package/bin/{executor/model → model}/ModelRequestRunner.js +0 -0
  662. /package/bin/{executor/model → model}/ModelStreamConsumer.d.ts +0 -0
  663. /package/bin/{executor/model → model}/ModelStreamConsumer.js +0 -0
  664. /package/bin/{executor/model → model}/ModelStreamFailure.d.ts +0 -0
  665. /package/bin/{executor/model → model}/ModelStreamFailure.js +0 -0
  666. /package/bin/{executor → model}/messages/ChatMessageMarkup.d.ts +0 -0
  667. /package/bin/{executor → model}/messages/ChatMessageMarkup.js +0 -0
  668. /package/bin/{executor → model}/messages/SessionAttachmentMapper.d.ts +0 -0
  669. /package/bin/{executor → model}/messages/SessionAttachmentMapper.js +0 -0
  670. /package/bin/{executor → model}/messages/SessionMessageLog.d.ts +0 -0
  671. /package/bin/{executor → model}/messages/SessionMessageLog.js +0 -0
  672. /package/bin/{executor → model}/messages/SessionModelMessages.d.ts +0 -0
  673. /package/bin/{executor/composer/system/default → model/prompts}/SystemPromptAssets.d.ts +0 -0
  674. /package/bin/session/{runtime → loop}/SessionTitleTask.d.ts +0 -0
  675. /package/bin/session/{runtime → loop}/SessionTitleTask.js +0 -0
  676. /package/bin/session/{runtime → loop}/SessionTurnFileDiff.d.ts +0 -0
  677. /package/bin/session/{messages → loop}/SessionTurnFileDiffBuilder.js +0 -0
  678. /package/bin/session/{execution → messages}/SessionAssistantOutputAdapter.js +0 -0
  679. /package/bin/session/{runtime → messages}/SessionEventHub.d.ts +0 -0
  680. /package/bin/session/{runtime → messages}/SessionEventHub.js +0 -0
  681. /package/bin/session/{browse → messages}/SessionMessageTimeline.d.ts +0 -0
  682. /package/bin/session/{runtime → messages}/SessionModelRequestWarning.d.ts +0 -0
  683. /package/bin/session/{runtime → messages}/SessionModelRequestWarning.js +0 -0
  684. /package/bin/session/{preview → storage}/SessionMessagePreview.d.ts +0 -0
  685. /package/bin/types/{executor → model}/ModelRequest.d.ts +0 -0
  686. /package/bin/types/{executor → model}/ModelRequest.js +0 -0
  687. /package/bin/{executor/types → types/store}/SessionHistoryMeta.d.ts +0 -0
  688. /package/bin/{executor/types → types/store}/SessionHistoryMeta.js +0 -0
  689. /package/bin/types/{executor → turn}/SessionAssistantOutput.d.ts +0 -0
  690. /package/bin/types/{executor → turn}/SessionAssistantOutput.js +0 -0
  691. /package/bin/types/{executor → turn}/SessionTurnContext.js +0 -0
  692. /package/src/{executor/model → model}/ModelStreamFailure.ts +0 -0
  693. /package/src/{executor → model}/messages/ChatMessageMarkup.ts +0 -0
  694. /package/src/{executor → model}/messages/SessionAttachmentMapper.ts +0 -0
  695. /package/src/{executor → model}/messages/SessionMessageLog.ts +0 -0
  696. /package/src/session/{runtime → loop}/SessionTitleTask.ts +0 -0
  697. /package/src/session/{runtime → messages}/SessionEventHub.ts +0 -0
  698. /package/src/session/{runtime → messages}/SessionModelRequestWarning.ts +0 -0
  699. /package/src/types/{executor → model}/ModelRequest.ts +0 -0
  700. /package/src/{executor/types → types/store}/SessionHistoryMeta.ts +0 -0
  701. /package/src/types/{executor → turn}/SessionAssistantOutput.ts +0 -0
  702. /package/src/{executor/ids/resolveSessionId.ts → utils/ResolveSessionId.ts} +0 -0
@@ -18,25 +18,27 @@ import type {
18
18
  AgentSessionTurnResult,
19
19
  } from "@/types/sdk/AgentSessionTurn.js";
20
20
  import { is_agent_session_prompt_input_empty } from "@/types/sdk/AgentSessionPrompt.js";
21
- import type {
21
+ import type { SessionStepExecutionInput, SessionTurnExecutionResult } from "@/types/session/SessionExecution.js";
22
+ import {
23
+ is_provider_context_limit_error,
22
24
  SessionExecutor,
23
- SessionTurnExecutionResult,
24
- } from "@/types/session/SessionExecution.js";
25
- import type { SessionTurnContext } from "@/types/executor/SessionTurnContext.js";
26
- import { create_session_turn_context } from "@/session/runtime/SessionTurnContext.js";
27
- import { SessionEventHub } from "@/session/runtime/SessionEventHub.js";
28
- import { SessionState } from "@/session/SessionState.js";
25
+ type SessionExecutorPort,
26
+ } from "@/session/runner/SessionExecutor.js";
27
+ import type { StepInput } from "@/session/input/StepInput.js";
28
+ import type { SessionTurnContext } from "@/types/turn/SessionTurnContext.js";
29
+ import { create_session_turn_context } from "@/session/loop/SessionTurnContext.js";
30
+ import { SessionEventHub } from "@/session/messages/SessionEventHub.js";
31
+ import { SessionState } from "@/session/loop/SessionState.js";
29
32
  import {
30
33
  normalize_session_user_parts,
31
34
  SessionMessages,
32
- } from "@/session/SessionMessages.js";
33
- import type { ShellApprovalGateway } from "@downcity/type";
35
+ } from "@/session/messages/SessionMessages.js";
34
36
  import type {
35
37
  SessionInteractionLifecycle,
36
38
  SessionInteractionPort,
37
39
  } from "@downcity/type";
38
- import { SessionAssistantOutputAdapter } from "@/session/execution/SessionAssistantOutputAdapter.js";
39
- import { SessionQueue } from "@/session/SessionQueue.js";
40
+ import { SessionAssistantOutputAdapter } from "@/session/messages/SessionAssistantOutputAdapter.js";
41
+ import { SessionQueue } from "@/session/loop/SessionQueue.js";
40
42
  import { extract_session_message_text } from "@/session/messages/SessionMessageText.js";
41
43
  import type {
42
44
  ActiveSessionTurnState,
@@ -47,18 +49,18 @@ import type {
47
49
  SessionCommand,
48
50
  SessionCommandCompletion,
49
51
  } from "@/types/session/SessionCommand.js";
50
- import { create_session_model_request_warning } from "@/session/runtime/SessionModelRequestWarning.js";
52
+ import { create_session_model_request_warning } from "@/session/messages/SessionModelRequestWarning.js";
51
53
  import {
52
54
  complete_session_turn,
53
55
  fail_session_turn,
54
- } from "@/session/runtime/SessionTurnCompletion.js";
56
+ TURN_STOPPED_MESSAGE,
57
+ } from "@/session/loop/SessionTurnCompletion.js";
55
58
  import {
56
59
  append_session_turn_file_diff,
57
60
  publish_session_turn_file_diff,
58
- } from "@/session/runtime/SessionTurnFileDiff.js";
61
+ } from "@/session/loop/SessionTurnFileDiff.js";
59
62
  import type { SessionTurnCompletionOptions } from "@/types/session/SessionTurnCompletion.js";
60
63
 
61
- const TURN_STOPPED_MESSAGE = "Turn stopped";
62
64
  const QUEUED_PROMPT_CANCELLED_MESSAGE =
63
65
  "Prompt cancelled because session was stopped";
64
66
 
@@ -69,17 +71,20 @@ export class SessionLoop {
69
71
  private readonly session_id: string;
70
72
  private readonly session_origin: SessionLoopOptions["session_origin"];
71
73
  private readonly workspace_path: string;
72
- private readonly executor: SessionExecutor;
74
+ private readonly step_input: StepInput | null;
75
+ private readonly session_executor: SessionExecutorPort;
73
76
  private readonly maintain_context: SessionLoopOptions["maintain_context"];
74
77
  private readonly state: SessionState;
75
78
  private readonly messages: SessionMessages;
76
79
  private readonly events: SessionEventHub;
77
80
  private readonly logger: SessionLoopOptions["logger"];
81
+ /** 读取当前生效的扩展处理器集合。 */
82
+ private readonly get_hooks: SessionLoopOptions["get_hooks"];
83
+ /** 构造当前 Turn 的调用环境快照。 */
84
+ private readonly create_call_context: SessionLoopOptions["create_call_context"];
78
85
  private readonly interactions:
79
86
  SessionInteractionLifecycle & SessionInteractionPort;
80
- private readonly shell_approval_gateway: ShellApprovalGateway;
81
- private readonly queue: SessionQueue;
82
- private pending_prompt_count = 0;
87
+ private readonly queue: SessionQueue; private pending_prompt_count = 0;
83
88
  private processing_promise: Promise<void> | null = null;
84
89
  private active_turn: ActiveSessionTurnState | null = null;
85
90
  /** 尚未完成 canonical 接收的幂等 Prompt,防止进程内并发重复入队。 */
@@ -89,21 +94,34 @@ export class SessionLoop {
89
94
  this.session_id = String(options.session_id || "").trim();
90
95
  this.session_origin = options.session_origin;
91
96
  this.workspace_path = String(options.workspace_path || "").trim();
92
- this.executor = options.executor;
93
97
  this.maintain_context = options.maintain_context;
94
98
  this.state = options.state;
95
99
  this.messages = options.messages;
96
100
  this.events = options.events;
97
101
  this.logger = options.logger;
102
+ this.get_hooks = options.get_hooks;
103
+ this.create_call_context = options.create_call_context;
98
104
  this.queue = options.queue;
99
105
  this.interactions = options.interactions;
100
- this.shell_approval_gateway = options.shell_approval_gateway;
101
106
  if (!this.session_id) {
102
107
  throw new Error("SessionLoop requires a non-empty session_id");
103
108
  }
104
109
  if (!this.workspace_path) {
105
110
  throw new Error("SessionLoop requires a non-empty workspace_path");
106
111
  }
112
+ this.step_input = options.step_input ?? null;
113
+ this.session_executor = options.executor ??
114
+ new SessionExecutor({
115
+ session_id: this.session_id,
116
+ logger: this.logger,
117
+ is_context_limit: is_provider_context_limit_error,
118
+ advance_context: options.advance_context,
119
+ });
120
+ }
121
+
122
+ /** 返回当前 Session 是否正在执行模型请求。 */
123
+ is_executing(): boolean {
124
+ return this.session_executor.is_executing();
107
125
  }
108
126
 
109
127
  /**
@@ -315,6 +333,27 @@ export class SessionLoop {
315
333
  }
316
334
  }
317
335
 
336
+ /**
337
+ * 在 Turn 收口前抽干尚未处理的 Maintenance Command。
338
+ *
339
+ * 关键点(中文)
340
+ * - 收尾窗口内到达的配置变更 Action 借此与当前 Agent Message 共享同一条 Message。
341
+ * - 只抽 Maintenance;Prompt 继续留在 FIFO 里由下一 Turn 消费。
342
+ */
343
+ private async drain_queued_maintenance_commands(): Promise<void> {
344
+ const drained = this.queue.drain_maintenance();
345
+ for (let index = 0; index < drained.length; index += 1) {
346
+ const command = drained[index];
347
+ try {
348
+ await this.execute_command(command);
349
+ } catch {
350
+ // 失败时保留尚未处理的 Maintenance;Action 自己负责失败观测。
351
+ this.queue.restore_front(drained.slice(index));
352
+ break;
353
+ }
354
+ }
355
+ }
356
+
318
357
  /** 执行 Command,并尽力持久化其声明的 canonical 完成信息。 */
319
358
  private async execute_command(command: SessionCommand): Promise<void> {
320
359
  await command.execute();
@@ -475,7 +514,7 @@ export class SessionLoop {
475
514
  }
476
515
  let result: SessionTurnExecutionResult;
477
516
  try {
478
- result = await this.executor.execute({ turn_context });
517
+ result = await this.run_turn_with_context_advance(turn_context);
479
518
  } catch (error) {
480
519
  result = {
481
520
  text: "",
@@ -487,7 +526,7 @@ export class SessionLoop {
487
526
  if (!result.success && !turn_context.lifecycle.abort_signal.aborted && result.error) {
488
527
  await assistant_output.append_error({
489
528
  scope: "turn",
490
- code: "turn_execution_failed",
529
+ code: result.error_code || "turn_execution_failed",
491
530
  message: result.error,
492
531
  recoverable: true,
493
532
  });
@@ -502,6 +541,8 @@ export class SessionLoop {
502
541
  logger: this.logger,
503
542
  });
504
543
 
544
+ await this.drain_queued_maintenance_commands();
545
+
505
546
  await assistant_output.finish({
506
547
  status: turn_context.lifecycle.abort_signal.aborted
507
548
  ? "stopped"
@@ -521,6 +562,40 @@ export class SessionLoop {
521
562
  };
522
563
  }
523
564
 
565
+ /**
566
+ * 执行 Turn;上下文推进与重试由执行器内部负责。
567
+ *
568
+ * 关键点(中文):每次重试都重新装配 Step 输入,保证读到刚推进的上下文。
569
+ */
570
+ private async run_turn_with_context_advance(
571
+ turn_context: SessionTurnContext,
572
+ ): Promise<SessionTurnExecutionResult> {
573
+ return await this.session_executor.execute({
574
+ turn_context,
575
+ resolve_step_input: async (advance_count) =>
576
+ await this.require_step_input(turn_context, advance_count),
577
+ });
578
+ }
579
+
580
+ /**
581
+ * 解析当前 Step 的输入。
582
+ *
583
+ * 关键点(中文):注入执行器时本 Loop 不拥有输入装配能力;回调一旦被调用即说明注入契约
584
+ * 被破坏,因此直接报错而不是静默返回空输入。
585
+ */
586
+ private async require_step_input(
587
+ turn_context: SessionTurnContext,
588
+ advance_count: number,
589
+ ): Promise<SessionStepExecutionInput> {
590
+ const step_input = this.step_input;
591
+ if (!step_input) {
592
+ throw new Error(
593
+ "SessionLoop was given an executor and cannot assemble step input",
594
+ );
595
+ }
596
+ return await step_input.build(turn_context, advance_count);
597
+ }
598
+
524
599
  /** 在 Turn 创建时建立其唯一执行上下文和 Assistant 输出端口。 */
525
600
  private create_turn_context(
526
601
  active_turn: ActiveSessionTurnState,
@@ -550,7 +625,6 @@ export class SessionLoop {
550
625
  },
551
626
  has_pending_step_input: () => this.has_pending_prompt(),
552
627
  assistant_output,
553
- shell_approval_gateway: this.shell_approval_gateway,
554
628
  interactions: this.interactions,
555
629
  on_effects_changed: (effects) => {
556
630
  publish_session_turn_file_diff({
@@ -624,6 +698,8 @@ export class SessionLoop {
624
698
  events: this.events,
625
699
  logger: this.logger,
626
700
  stopped_message: TURN_STOPPED_MESSAGE,
701
+ get_hooks: this.get_hooks,
702
+ create_call_context: this.create_call_context,
627
703
  };
628
704
  }
629
705
  }
@@ -31,6 +31,24 @@ export class SessionQueue {
31
31
  return this.commands.splice(0, this.commands.length);
32
32
  }
33
33
 
34
+ /**
35
+ * 只取出当前全部 Maintenance Command,并保留 Prompt 的相对顺序。
36
+ *
37
+ * Turn 收口前用它抽干配置类命令,让这些 Action 与当前 Agent Message 共享同一条
38
+ * Message;Prompt 必须留在队列里由后续 Turn 消费,否则会在没有后续 Step 的情况下
39
+ * 被持久化为 steer 却永远得不到响应。
40
+ */
41
+ drain_maintenance(): SessionCommand[] {
42
+ const drained: SessionCommand[] = [];
43
+ const retained: SessionCommand[] = [];
44
+ for (const command of this.commands) {
45
+ if (command.kind === "maintenance") drained.push(command);
46
+ else retained.push(command);
47
+ }
48
+ this.commands.splice(0, this.commands.length, ...retained);
49
+ return drained;
50
+ }
51
+
34
52
  /** 把尚未处理的 Command 恢复到队列头部。 */
35
53
  restore_front(commands: SessionCommand[]): void {
36
54
  this.commands.unshift(...commands);
@@ -16,18 +16,18 @@ import {
16
16
  normalize_session_title,
17
17
  resolve_system_timezone,
18
18
  } from "@/session/storage/Metadata.js";
19
- import { ensure_session_title } from "@/session/SessionTitle.js";
19
+ import { ensure_session_title } from "@/session/loop/SessionTitle.js";
20
20
  import type {
21
21
  AgentSessionConfigSnapshot,
22
22
  } from "@/types/agent/SessionTypes.js";
23
23
  import type { SessionLocalState } from "@/types/session/SessionLocalState.js";
24
24
  import { generate_id } from "@/utils/Id.js";
25
25
  import type { Logger } from "@/utils/logger/Logger.js";
26
- import { SessionTitleTask } from "@/session/runtime/SessionTitleTask.js";
26
+ import { SessionTitleTask } from "@/session/loop/SessionTitleTask.js";
27
27
  import type { SessionStateOptions } from "@/types/session/SessionState.js";
28
28
  import type { SessionStorage } from "@/types/store/SessionStorage.js";
29
29
  import type { SessionApprovalMode } from "@downcity/type";
30
- import { create_session_model_request_warning } from "@/session/runtime/SessionModelRequestWarning.js";
30
+ import { create_session_model_request_warning } from "@/session/messages/SessionModelRequestWarning.js";
31
31
 
32
32
  /** 创建单个 Session 唯一的可变内存状态。 */
33
33
  export function create_session_local_state(): SessionLocalState {
@@ -38,7 +38,6 @@ export function create_session_local_state(): SessionLocalState {
38
38
  created_at: Date.now(),
39
39
  timezone: resolve_system_timezone(),
40
40
  initialize_promise: null,
41
- ensure_configured_promise: null,
42
41
  };
43
42
  }
44
43
 
@@ -60,7 +59,6 @@ export class SessionState {
60
59
  private readonly store: SessionStorage;
61
60
  private readonly state: SessionLocalState;
62
61
  private readonly logger: Logger;
63
- private readonly ensure_configured_hook?: SessionStateOptions["ensure_configured_hook"];
64
62
  private readonly get_model: SessionStateOptions["get_model"];
65
63
  private readonly publish_event: SessionStateOptions["publish_event"];
66
64
  private readonly title_task: SessionTitleTask;
@@ -73,7 +71,6 @@ export class SessionState {
73
71
  this.store = options.store;
74
72
  this.state = options.state;
75
73
  this.logger = options.logger;
76
- this.ensure_configured_hook = options.ensure_configured_hook;
77
74
  this.get_model = options.get_model;
78
75
  this.publish_event = options.publish_event;
79
76
  this.title_task = new SessionTitleTask({
@@ -153,24 +150,10 @@ export class SessionState {
153
150
  }
154
151
 
155
152
  /**
156
- * 在执行前确保当前 session 已完成初始化与宿主装配。
153
+ * 在执行前确保当前 session 已完成初始化。
157
154
  */
158
155
  async ensure_ready_for_execution(): Promise<void> {
159
156
  await this.initialize();
160
- if (this.state.ensure_configured_promise) {
161
- await this.state.ensure_configured_promise;
162
- return;
163
- }
164
- this.state.ensure_configured_promise = (async () => {
165
- if (!this.ensure_configured_hook) return;
166
- await this.ensure_configured_hook();
167
- })();
168
- try {
169
- await this.state.ensure_configured_promise;
170
- } catch (error) {
171
- this.state.ensure_configured_promise = null;
172
- throw error;
173
- }
174
157
  }
175
158
 
176
159
  /**
@@ -11,14 +11,14 @@ import type { ModelClient } from "@downcity/type";
11
11
  import {
12
12
  build_text_model_messages,
13
13
  generate_model,
14
- } from "@executor/model/ModelGenerate.js";
15
- import type { SessionHistoryMeta } from "@/executor/types/SessionHistoryMeta.js";
14
+ } from "@/model/ModelGenerate.js";
15
+ import type { SessionHistoryMeta } from "@/types/store/SessionHistoryMeta.js";
16
16
  import type { Logger } from "@/utils/logger/Logger.js";
17
17
  import { normalize_session_title } from "@/session/storage/Metadata.js";
18
18
  import type { SessionStorage } from "@/types/store/SessionStorage.js";
19
19
  import type { SessionMessage } from "@downcity/type";
20
20
  import { extract_session_message_text } from "@/session/messages/SessionMessageText.js";
21
- import type { ModelRequestFailureReporter } from "@/types/executor/ModelRequest.js";
21
+ import type { ModelRequestFailureReporter } from "@/types/model/ModelRequest.js";
22
22
 
23
23
  const GENERATED_SESSION_TITLE_MAX_CHARS = 24;
24
24
 
@@ -12,7 +12,16 @@ import type { SessionTurnExecutionResult } from "@/types/session/SessionExecutio
12
12
  import type { ActiveSessionTurnState } from "@/types/session/SessionLoop.js";
13
13
  import type { SessionTurnCompletionOptions } from "@/types/session/SessionTurnCompletion.js";
14
14
  import type { SessionTurnCommittedHookValue } from "@downcity/type";
15
- import { SESSION_HOOK_POINTS } from "@/session/SessionHookPoints.js";
15
+ import { SESSION_HOOK_POINTS } from "@downcity/type";
16
+ import { run_effect_point } from "@/session/input/SessionHookRunner.js";
17
+
18
+ /**
19
+ * Turn 被用户中止时的规范错误文本。
20
+ *
21
+ * 关键点(中文):执行器产出该文本,Turn 收口处比对它未决定是否写入 Error Part,
22
+ * 因此两侧必须引用同一个常量。
23
+ */
24
+ export const TURN_STOPPED_MESSAGE = "Turn stopped";
16
25
 
17
26
  /** 使用 Executor 结果完成当前 Turn。 */
18
27
  export async function complete_session_turn(
@@ -103,8 +112,7 @@ async function notify_turn_committed(
103
112
  active_turn: ActiveSessionTurnState,
104
113
  status: SessionTurnCommittedHookValue["status"],
105
114
  ): Promise<void> {
106
- const hooks = active_turn.turn_context?.step.hooks;
107
- if (!hooks) return;
115
+ const hooks = options.get_hooks();
108
116
  try {
109
117
  const messages = (await options.messages.list_history_messages())
110
118
  .filter((message) => message.turn_id === active_turn.turn_id)
@@ -115,12 +123,23 @@ async function notify_turn_committed(
115
123
  status,
116
124
  messages: messages as SessionMessage[],
117
125
  };
118
- await hooks.effect(
119
- SESSION_HOOK_POINTS.turn_committed,
120
- value as unknown as JsonValue,
121
- );
126
+ const context = options.create_call_context({
127
+ turn_id: active_turn.turn_id,
128
+ abort_signal: active_turn.turn_context?.lifecycle.abort_signal
129
+ ?? new AbortController().signal,
130
+ });
131
+ await run_effect_point({
132
+ hooks,
133
+ point_name: SESSION_HOOK_POINTS.turn_committed,
134
+ value: value as unknown as JsonValue,
135
+ context,
136
+ on_error: async (point_name, error) =>
137
+ await log_turn_warning(options, active_turn, "session power effect failed", error, {
138
+ point_name,
139
+ }),
140
+ });
122
141
  } catch (error) {
123
- await log_turn_warning(options, active_turn, "session plugin effect failed", error, {
142
+ await log_turn_warning(options, active_turn, "session power effect failed", error, {
124
143
  point_name: SESSION_HOOK_POINTS.turn_committed,
125
144
  });
126
145
  }
@@ -3,42 +3,25 @@
3
3
  *
4
4
  * 关键点(中文)
5
5
  * - Session 创建并拥有上下文,Executor 和 Tool 通过领域分区协作。
6
- * - 所有可变数组、Plugin lease 与取消监听都封装在本模块内。
7
- * - Plugin 每次只获得新建的只读快照,不能越过扩展边界访问内核运行能力。
6
+ * - 所有可变数组、Power lease 与取消监听都封装在本模块内。
7
+ * - Power 每次只获得新建的只读快照,不能越过扩展边界访问内核运行能力。
8
8
  */
9
9
 
10
- import type { RuntimeToolEffect } from "@downcity/type";
10
+ import type { ToolEffect } from "@downcity/type";
11
11
  import type { SessionUserMessage } from "@downcity/type";
12
12
  import type { SessionAgentContent } from "@downcity/type";
13
13
  import type {
14
14
  SessionTurnContext,
15
15
  SessionTurnContextInit,
16
- } from "@/types/executor/SessionTurnContext.js";
17
- import type { SessionHookContext } from "@downcity/type";
18
- import type { SessionHookScopeRuntime } from "@downcity/type";
16
+ } from "@/types/turn/SessionTurnContext.js";
17
+ import type { SessionHookContextBlock } from "@downcity/type";
19
18
  import type { SessionOrigin } from "@downcity/type";
20
19
  import { normalize_session_origin } from "@downcity/type";
21
- import type { SessionHookContextBlock } from "@downcity/type";
22
-
23
- /** 非 Turn 查询创建 Plugin 只读快照所需的稳定 Session 状态。 */
24
- export interface CreateSessionHookContextInput {
25
- /** 当前 Session 标识。 */
26
- session_id: string;
27
- /** 当前 Session 的完整来源元数据。 */
28
- session_origin: SessionOrigin;
29
- /** 当前 Session 所属项目根目录。 */
30
- project_root: string;
31
- /** 当前 Session 已生效的 Workspace 环境变量。 */
32
- workspace_env: Readonly<Record<string, string>>;
33
- /** 当前 Session 已生效的 Agent instruction 文本。 */
34
- agent_systems: readonly string[];
35
- }
36
20
 
37
21
  /** SessionTurnContext 的唯一内置实现。 */
38
22
  class DefaultSessionTurnContext implements SessionTurnContext {
39
23
  readonly session: SessionTurnContext["session"];
40
24
  readonly interactions: SessionTurnContext["interactions"];
41
- readonly shell: SessionTurnContext["shell"];
42
25
 
43
26
  private readonly abort_controller = new AbortController();
44
27
  private readonly upstream_abort_signal?: AbortSignal;
@@ -46,14 +29,13 @@ class DefaultSessionTurnContext implements SessionTurnContext {
46
29
  private disposed = false;
47
30
  private workspace_env_snapshot?: Readonly<Record<string, string>>;
48
31
  private agent_systems_snapshot: readonly string[] = Object.freeze([]);
49
- private hook_scope?: SessionHookScopeRuntime;
50
- /** 整个 Turn 共享的 Plugin 动态上下文,不随 Step lease 切换而失效。 */
51
- private plugin_context_blocks_snapshot: readonly SessionHookContextBlock[] = Object.freeze([]);
32
+ /** 整个 Turn 共享的扩展动态上下文。 */
33
+ private power_context_blocks_snapshot: readonly SessionHookContextBlock[] = Object.freeze([]);
52
34
  /** 并发或重复解析时复用的唯一 Promise。 */
53
- private plugin_context_blocks_promise?: Promise<readonly SessionHookContextBlock[]>;
35
+ private power_context_blocks_promise?: Promise<readonly SessionHookContextBlock[]>;
54
36
  private observed_user_messages: SessionUserMessage[] = [];
55
37
  private pending_assistant_parts: SessionAgentContent[] = [];
56
- private turn_effects: RuntimeToolEffect[] = [];
38
+ private turn_effects: ToolEffect[] = [];
57
39
 
58
40
  readonly lifecycle: SessionTurnContext["lifecycle"];
59
41
  readonly step: SessionTurnContext["step"];
@@ -78,11 +60,6 @@ class DefaultSessionTurnContext implements SessionTurnContext {
78
60
  ...(project_root ? { project_root } : {}),
79
61
  });
80
62
  this.interactions = init.interactions;
81
- this.shell = Object.freeze({
82
- ...(init.shell_approval_gateway
83
- ? { approval_gateway: init.shell_approval_gateway }
84
- : {}),
85
- });
86
63
 
87
64
  this.upstream_abort_signal = init.abort_signal;
88
65
  this.abort_from_upstream = () => {
@@ -118,11 +95,8 @@ class DefaultSessionTurnContext implements SessionTurnContext {
118
95
  get agent_systems() {
119
96
  return context.agent_systems_snapshot;
120
97
  },
121
- get hooks() {
122
- return context.hook_scope;
123
- },
124
- get plugin_context_blocks() {
125
- return context.plugin_context_blocks_snapshot;
98
+ get power_context_blocks() {
99
+ return context.power_context_blocks_snapshot;
126
100
  },
127
101
  commit: (input) => {
128
102
  context.workspace_env_snapshot = Object.freeze({
@@ -132,16 +106,8 @@ class DefaultSessionTurnContext implements SessionTurnContext {
132
106
  ...input.agent_systems,
133
107
  ]);
134
108
  },
135
- replace_hooks: async (hooks) => {
136
- const previous = context.hook_scope;
137
- context.hook_scope = hooks;
138
- if (previous && previous !== hooks) await previous.close();
139
- },
140
- resolve_plugin_context_blocks: async (resolver) =>
141
- await context.resolve_plugin_context_blocks(resolver),
142
- release: async () => await context.release_extensions(),
143
- hook_context: (call_id?: string) =>
144
- context.create_hook_context(call_id),
109
+ resolve_power_context_blocks: async (resolver) =>
110
+ await context.resolve_power_context_blocks(resolver),
145
111
  });
146
112
 
147
113
  this.input = Object.freeze({
@@ -196,13 +162,13 @@ class DefaultSessionTurnContext implements SessionTurnContext {
196
162
  });
197
163
  }
198
164
 
199
- /** 每个 Turn 只执行一次 Plugin 动态上下文解析,并保存不可变快照。 */
200
- private async resolve_plugin_context_blocks(
165
+ /** 每个 Turn 只执行一次 Power 动态上下文解析,并保存不可变快照。 */
166
+ private async resolve_power_context_blocks(
201
167
  resolver: () => Promise<readonly SessionHookContextBlock[]>,
202
168
  ): Promise<readonly SessionHookContextBlock[]> {
203
- this.plugin_context_blocks_promise ??= (async () => {
169
+ this.power_context_blocks_promise ??= (async () => {
204
170
  const blocks = await resolver();
205
- this.plugin_context_blocks_snapshot = Object.freeze(
171
+ this.power_context_blocks_snapshot = Object.freeze(
206
172
  (Array.isArray(blocks) ? blocks : []).map((block) => Object.freeze({
207
173
  ...block,
208
174
  ...(block.citations
@@ -210,35 +176,9 @@ class DefaultSessionTurnContext implements SessionTurnContext {
210
176
  : {}),
211
177
  })),
212
178
  );
213
- return this.plugin_context_blocks_snapshot;
179
+ return this.power_context_blocks_snapshot;
214
180
  })();
215
- return await this.plugin_context_blocks_promise;
216
- }
217
-
218
- /** 为 City 扩展生成不共享根对象引用的只读快照。 */
219
- private create_hook_context(call_id?: string): SessionHookContext {
220
- const normalized_call_id = String(call_id || "").trim();
221
- return Object.freeze({
222
- session_id: this.session.session_id,
223
- session_origin: this.session.origin,
224
- turn_id: this.session.turn_id,
225
- ...(normalized_call_id ? { call_id: normalized_call_id } : {}),
226
- ...(this.session.project_root
227
- ? { project_root: this.session.project_root }
228
- : {}),
229
- ...(this.workspace_env_snapshot
230
- ? { workspace_env: this.workspace_env_snapshot }
231
- : {}),
232
- agent_systems: this.agent_systems_snapshot,
233
- abort_signal: this.abort_controller.signal,
234
- });
235
- }
236
-
237
- /** 释放当前 Step 捕获的 Plugin Hook 作用域。 */
238
- private async release_extensions(): Promise<void> {
239
- const extensions = this.hook_scope;
240
- this.hook_scope = undefined;
241
- await extensions?.close();
181
+ return await this.power_context_blocks_promise;
242
182
  }
243
183
 
244
184
  /** 闭合当前运行拥有的全部资源。 */
@@ -249,7 +189,6 @@ class DefaultSessionTurnContext implements SessionTurnContext {
249
189
  "abort",
250
190
  this.abort_from_upstream,
251
191
  );
252
- await this.release_extensions();
253
192
  }
254
193
  }
255
194
 
@@ -259,16 +198,3 @@ export function create_session_turn_context(
259
198
  ): SessionTurnContext {
260
199
  return new DefaultSessionTurnContext(init);
261
200
  }
262
-
263
- /** 为非 Turn 的 system 查询创建 Plugin 可读取的 Session 快照。 */
264
- export function create_session_hook_context(
265
- input: CreateSessionHookContextInput,
266
- ): SessionHookContext {
267
- return Object.freeze({
268
- session_id: input.session_id,
269
- session_origin: Object.freeze(normalize_session_origin(input.session_origin)),
270
- project_root: input.project_root,
271
- workspace_env: Object.freeze({ ...input.workspace_env }),
272
- agent_systems: Object.freeze([...input.agent_systems]),
273
- });
274
- }
@@ -9,7 +9,7 @@ import { nanoid } from "nanoid";
9
9
  import {
10
10
  build_session_turn_file_diff,
11
11
  build_session_turn_file_diff_summary,
12
- } from "@/session/messages/SessionTurnFileDiffBuilder.js";
12
+ } from "@/session/loop/SessionTurnFileDiffBuilder.js";
13
13
  import { SESSION_TURN_FILE_DIFF_DATA_TYPE } from "@/session/messages/SessionTurnFileDiffData.js";
14
14
  import type {
15
15
  AppendSessionTurnFileDiffInput,
@@ -13,7 +13,7 @@ import {
13
13
  formatPatch,
14
14
  structuredPatch,
15
15
  } from "diff";
16
- import type { RuntimeToolEffect } from "@downcity/type";
16
+ import type { ToolEffect } from "@downcity/type";
17
17
  import {
18
18
  WORKSPACE_FILE_MUTATION_EFFECT_TYPE,
19
19
  type WorkspaceFileMutation,
@@ -40,7 +40,7 @@ interface CollectedFileMutation {
40
40
  /** 把当前 Turn effects 中的结构化文件修改收敛为可持久化 Diff。 */
41
41
  export function build_session_turn_file_diff(
42
42
  workspace_path: string,
43
- effects: readonly RuntimeToolEffect[],
43
+ effects: readonly ToolEffect[],
44
44
  ): SessionTurnFileDiffData | undefined {
45
45
  const files = collect_session_turn_file_diffs(workspace_path, effects);
46
46
  if (files.length === 0) return undefined;
@@ -54,7 +54,7 @@ export function build_session_turn_file_diff(
54
54
  /** 从当前 Turn effects 收敛只含统计的实时摘要,供 Thinking 状态行轻量展示。 */
55
55
  export function build_session_turn_file_diff_summary(
56
56
  workspace_path: string,
57
- effects: readonly RuntimeToolEffect[],
57
+ effects: readonly ToolEffect[],
58
58
  ): SessionTurnFileDiffSummary {
59
59
  const files = collect_session_turn_file_diffs(workspace_path, effects);
60
60
  return {
@@ -67,7 +67,7 @@ export function build_session_turn_file_diff_summary(
67
67
  /** 把 effects 收敛为稳定排序的文件 Diff 列表;空列表表示当前没有结构化修改。 */
68
68
  function collect_session_turn_file_diffs(
69
69
  workspace_path: string,
70
- effects: readonly RuntimeToolEffect[],
70
+ effects: readonly ToolEffect[],
71
71
  ): SessionTurnFileDiff[] {
72
72
  const mutations = effects.flatMap((effect) => {
73
73
  const mutation = read_workspace_file_mutation_effect(effect);