@stigmer/react 2.0.0 → 3.0.0

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 (705) hide show
  1. package/README.md +64 -2
  2. package/agent/AgentDetailView.d.ts +26 -1
  3. package/agent/AgentDetailView.d.ts.map +1 -1
  4. package/agent/AgentDetailView.js +9 -2
  5. package/agent/AgentDetailView.js.map +1 -1
  6. package/agent/useAgentSetup.d.ts +19 -0
  7. package/agent/useAgentSetup.d.ts.map +1 -1
  8. package/agent/useAgentSetup.js +15 -1
  9. package/agent/useAgentSetup.js.map +1 -1
  10. package/agent-instance/AgentInstanceDetailPanel.d.ts +26 -0
  11. package/agent-instance/AgentInstanceDetailPanel.d.ts.map +1 -0
  12. package/agent-instance/AgentInstanceDetailPanel.js +94 -0
  13. package/agent-instance/AgentInstanceDetailPanel.js.map +1 -0
  14. package/agent-instance/AgentInstanceEmptyState.d.ts +17 -0
  15. package/agent-instance/AgentInstanceEmptyState.d.ts.map +1 -0
  16. package/agent-instance/AgentInstanceEmptyState.js +21 -0
  17. package/agent-instance/AgentInstanceEmptyState.js.map +1 -0
  18. package/agent-instance/AgentInstanceList.d.ts +38 -0
  19. package/agent-instance/AgentInstanceList.d.ts.map +1 -0
  20. package/agent-instance/AgentInstanceList.js +75 -0
  21. package/agent-instance/AgentInstanceList.js.map +1 -0
  22. package/agent-instance/CreateAgentInstanceDialog.d.ts +24 -0
  23. package/agent-instance/CreateAgentInstanceDialog.d.ts.map +1 -0
  24. package/agent-instance/CreateAgentInstanceDialog.js +78 -0
  25. package/agent-instance/CreateAgentInstanceDialog.js.map +1 -0
  26. package/agent-instance/index.d.ts +14 -0
  27. package/agent-instance/index.d.ts.map +1 -1
  28. package/agent-instance/index.js +7 -0
  29. package/agent-instance/index.js.map +1 -1
  30. package/agent-instance/useAgentInstances.d.ts +34 -0
  31. package/agent-instance/useAgentInstances.d.ts.map +1 -0
  32. package/agent-instance/useAgentInstances.js +37 -0
  33. package/agent-instance/useAgentInstances.js.map +1 -0
  34. package/agent-instance/useDeleteAgentInstance.d.ts +42 -0
  35. package/agent-instance/useDeleteAgentInstance.d.ts.map +1 -0
  36. package/agent-instance/useDeleteAgentInstance.js +48 -0
  37. package/agent-instance/useDeleteAgentInstance.js.map +1 -0
  38. package/agent-instance/useUpdateAgentInstance.d.ts +36 -0
  39. package/agent-instance/useUpdateAgentInstance.d.ts.map +1 -0
  40. package/agent-instance/useUpdateAgentInstance.js +47 -0
  41. package/agent-instance/useUpdateAgentInstance.js.map +1 -0
  42. package/composer/SessionComposer.d.ts +18 -0
  43. package/composer/SessionComposer.d.ts.map +1 -1
  44. package/composer/SessionComposer.js +27 -3
  45. package/composer/SessionComposer.js.map +1 -1
  46. package/execution/ApprovalCard.d.ts.map +1 -1
  47. package/execution/ApprovalCard.js +6 -3
  48. package/execution/ApprovalCard.js.map +1 -1
  49. package/execution/MessageThread.d.ts +3 -0
  50. package/execution/MessageThread.d.ts.map +1 -1
  51. package/execution/MessageThread.js +12 -2
  52. package/execution/MessageThread.js.map +1 -1
  53. package/execution/PlanArtifactCard.d.ts +29 -0
  54. package/execution/PlanArtifactCard.d.ts.map +1 -0
  55. package/execution/PlanArtifactCard.js +59 -0
  56. package/execution/PlanArtifactCard.js.map +1 -0
  57. package/execution/ResultView.d.ts +24 -0
  58. package/execution/ResultView.d.ts.map +1 -0
  59. package/execution/ResultView.js +152 -0
  60. package/execution/ResultView.js.map +1 -0
  61. package/execution/SubAgentSection.js +1 -1
  62. package/execution/SubAgentSection.js.map +1 -1
  63. package/execution/ToolCallDetail.d.ts +13 -19
  64. package/execution/ToolCallDetail.d.ts.map +1 -1
  65. package/execution/ToolCallDetail.js +42 -70
  66. package/execution/ToolCallDetail.js.map +1 -1
  67. package/execution/ToolCallGroup.js +2 -2
  68. package/execution/ToolCallGroup.js.map +1 -1
  69. package/execution/ToolCallItem.d.ts.map +1 -1
  70. package/execution/ToolCallItem.js +13 -9
  71. package/execution/ToolCallItem.js.map +1 -1
  72. package/execution/index.d.ts +7 -1
  73. package/execution/index.d.ts.map +1 -1
  74. package/execution/index.js +4 -1
  75. package/execution/index.js.map +1 -1
  76. package/execution/tool-categories.d.ts +30 -21
  77. package/execution/tool-categories.d.ts.map +1 -1
  78. package/execution/tool-categories.js +57 -49
  79. package/execution/tool-categories.js.map +1 -1
  80. package/execution/tool-presenter.d.ts +60 -0
  81. package/execution/tool-presenter.d.ts.map +1 -0
  82. package/execution/tool-presenter.js +81 -0
  83. package/execution/tool-presenter.js.map +1 -0
  84. package/execution/useCreateAgentExecution.d.ts +9 -0
  85. package/execution/useCreateAgentExecution.d.ts.map +1 -1
  86. package/execution/useCreateAgentExecution.js +1 -0
  87. package/execution/useCreateAgentExecution.js.map +1 -1
  88. package/index.d.ts +6 -5
  89. package/index.d.ts.map +1 -1
  90. package/index.js +7 -4
  91. package/index.js.map +1 -1
  92. package/library/detect-plan-artifact.d.ts +26 -0
  93. package/library/detect-plan-artifact.d.ts.map +1 -0
  94. package/library/detect-plan-artifact.js +37 -0
  95. package/library/detect-plan-artifact.js.map +1 -0
  96. package/library/index.d.ts +1 -0
  97. package/library/index.d.ts.map +1 -1
  98. package/library/index.js +1 -0
  99. package/library/index.js.map +1 -1
  100. package/package.json +4 -4
  101. package/provider.d.ts +5 -3
  102. package/provider.d.ts.map +1 -1
  103. package/provider.js.map +1 -1
  104. package/runner-adapter.d.ts +19 -4
  105. package/runner-adapter.d.ts.map +1 -1
  106. package/runner-adapter.js.map +1 -1
  107. package/session/NewSessionViewer.d.ts +10 -1
  108. package/session/NewSessionViewer.d.ts.map +1 -1
  109. package/session/NewSessionViewer.js +2 -2
  110. package/session/NewSessionViewer.js.map +1 -1
  111. package/session/SessionViewer.d.ts.map +1 -1
  112. package/session/SessionViewer.js +17 -2
  113. package/session/SessionViewer.js.map +1 -1
  114. package/session/useCreateSession.d.ts.map +1 -1
  115. package/session/useCreateSession.js +4 -6
  116. package/session/useCreateSession.js.map +1 -1
  117. package/session/useLocalSessionWorker.d.ts +33 -0
  118. package/session/useLocalSessionWorker.d.ts.map +1 -0
  119. package/session/useLocalSessionWorker.js +65 -0
  120. package/session/useLocalSessionWorker.js.map +1 -0
  121. package/session/useNewSessionFlow.d.ts.map +1 -1
  122. package/session/useNewSessionFlow.js +22 -1
  123. package/session/useNewSessionFlow.js.map +1 -1
  124. package/session/useSessionConversation.d.ts +12 -0
  125. package/session/useSessionConversation.d.ts.map +1 -1
  126. package/session/useSessionConversation.js +11 -0
  127. package/session/useSessionConversation.js.map +1 -1
  128. package/session/useSessionPageFlow.d.ts +23 -0
  129. package/session/useSessionPageFlow.d.ts.map +1 -1
  130. package/session/useSessionPageFlow.js +21 -1
  131. package/session/useSessionPageFlow.js.map +1 -1
  132. package/src/__tests__/runner-adapter.test.tsx +14 -107
  133. package/src/agent/AgentDetailView.tsx +49 -1
  134. package/src/agent/__tests__/useAgentSetup.resolveToInstance.test.tsx +73 -0
  135. package/src/agent/useAgentSetup.ts +48 -1
  136. package/src/agent-instance/AgentInstanceDetailPanel.tsx +359 -0
  137. package/src/agent-instance/AgentInstanceEmptyState.tsx +87 -0
  138. package/src/agent-instance/AgentInstanceList.tsx +329 -0
  139. package/src/agent-instance/CreateAgentInstanceDialog.tsx +258 -0
  140. package/src/agent-instance/__tests__/agent-instance-hooks.test.tsx +213 -0
  141. package/src/agent-instance/index.ts +15 -0
  142. package/src/agent-instance/useAgentInstances.ts +66 -0
  143. package/src/agent-instance/useDeleteAgentInstance.ts +73 -0
  144. package/src/agent-instance/useUpdateAgentInstance.ts +67 -0
  145. package/src/composer/SessionComposer.tsx +54 -2
  146. package/src/execution/ApprovalCard.tsx +22 -3
  147. package/src/execution/MessageThread.tsx +27 -3
  148. package/src/execution/PlanArtifactCard.tsx +257 -0
  149. package/src/execution/ResultView.tsx +366 -0
  150. package/src/execution/SubAgentSection.tsx +5 -0
  151. package/src/execution/ToolCallDetail.tsx +72 -173
  152. package/src/execution/ToolCallGroup.tsx +2 -2
  153. package/src/execution/ToolCallItem.tsx +25 -12
  154. package/src/execution/__tests__/ApprovalCard.test.tsx +99 -0
  155. package/src/execution/__tests__/ResultView.test.tsx +95 -0
  156. package/src/execution/__tests__/subagent-thread-item.test.ts +153 -0
  157. package/src/execution/__tests__/tool-presenter.test.tsx +78 -0
  158. package/src/execution/index.ts +16 -0
  159. package/src/execution/tool-categories.ts +80 -66
  160. package/src/execution/tool-presenter.ts +118 -0
  161. package/src/execution/useCreateAgentExecution.ts +10 -0
  162. package/src/index.ts +32 -1
  163. package/src/library/__tests__/detect-plan-artifact.test.ts +75 -0
  164. package/src/library/detect-plan-artifact.ts +43 -0
  165. package/src/library/index.ts +6 -0
  166. package/src/provider.tsx +5 -3
  167. package/src/runner-adapter.ts +19 -4
  168. package/src/session/NewSessionViewer.tsx +11 -0
  169. package/src/session/SessionViewer.tsx +46 -2
  170. package/src/session/__tests__/group-sessions.test.ts +3 -5
  171. package/src/session/__tests__/useLocalSessionWorker.test.tsx +194 -0
  172. package/src/session/__tests__/useNewSessionFlow.test.tsx +80 -4
  173. package/src/session/__tests__/useSessionConversation.test.tsx +89 -0
  174. package/src/session/__tests__/useSessionPageFlow.autoApprove.test.tsx +149 -0
  175. package/src/session/useCreateSession.ts +4 -7
  176. package/src/session/useLocalSessionWorker.ts +73 -0
  177. package/src/session/useNewSessionFlow.ts +23 -1
  178. package/src/session/useSessionConversation.ts +18 -0
  179. package/src/session/useSessionPageFlow.ts +51 -1
  180. package/src/workflow/__tests__/useWorkflowExecution.test.tsx +2 -2
  181. package/styles.css +1 -1
  182. package/__tests__/hooks.test.d.ts +0 -2
  183. package/__tests__/hooks.test.d.ts.map +0 -1
  184. package/__tests__/hooks.test.js +0 -35
  185. package/__tests__/hooks.test.js.map +0 -1
  186. package/__tests__/runner-adapter.test.d.ts +0 -2
  187. package/__tests__/runner-adapter.test.d.ts.map +0 -1
  188. package/__tests__/runner-adapter.test.js +0 -153
  189. package/__tests__/runner-adapter.test.js.map +0 -1
  190. package/activity/__tests__/useRecentActivity-optimistic.test.d.ts +0 -2
  191. package/activity/__tests__/useRecentActivity-optimistic.test.d.ts.map +0 -1
  192. package/activity/__tests__/useRecentActivity-optimistic.test.js +0 -139
  193. package/activity/__tests__/useRecentActivity-optimistic.test.js.map +0 -1
  194. package/activity/__tests__/useRecentActivity.test.d.ts +0 -2
  195. package/activity/__tests__/useRecentActivity.test.d.ts.map +0 -1
  196. package/activity/__tests__/useRecentActivity.test.js +0 -107
  197. package/activity/__tests__/useRecentActivity.test.js.map +0 -1
  198. package/agent/__tests__/useAgent.test.d.ts +0 -2
  199. package/agent/__tests__/useAgent.test.d.ts.map +0 -1
  200. package/agent/__tests__/useAgent.test.js +0 -86
  201. package/agent/__tests__/useAgent.test.js.map +0 -1
  202. package/agent/__tests__/useDefaultAgent.test.d.ts +0 -2
  203. package/agent/__tests__/useDefaultAgent.test.d.ts.map +0 -1
  204. package/agent/__tests__/useDefaultAgent.test.js +0 -135
  205. package/agent/__tests__/useDefaultAgent.test.js.map +0 -1
  206. package/billing/__tests__/CreditLedgerTable.test.d.ts +0 -2
  207. package/billing/__tests__/CreditLedgerTable.test.d.ts.map +0 -1
  208. package/billing/__tests__/CreditLedgerTable.test.js +0 -74
  209. package/billing/__tests__/CreditLedgerTable.test.js.map +0 -1
  210. package/composer/__tests__/ComposerToolbar-directAction.test.d.ts +0 -2
  211. package/composer/__tests__/ComposerToolbar-directAction.test.d.ts.map +0 -1
  212. package/composer/__tests__/ComposerToolbar-directAction.test.js +0 -64
  213. package/composer/__tests__/ComposerToolbar-directAction.test.js.map +0 -1
  214. package/composer/__tests__/SessionComposer-contract.test.d.ts +0 -2
  215. package/composer/__tests__/SessionComposer-contract.test.d.ts.map +0 -1
  216. package/composer/__tests__/SessionComposer-contract.test.js +0 -87
  217. package/composer/__tests__/SessionComposer-contract.test.js.map +0 -1
  218. package/composer/__tests__/SessionComposer-fileref.test.d.ts +0 -2
  219. package/composer/__tests__/SessionComposer-fileref.test.d.ts.map +0 -1
  220. package/composer/__tests__/SessionComposer-fileref.test.js +0 -132
  221. package/composer/__tests__/SessionComposer-fileref.test.js.map +0 -1
  222. package/composer/__tests__/SessionComposer-memo.test.d.ts +0 -2
  223. package/composer/__tests__/SessionComposer-memo.test.d.ts.map +0 -1
  224. package/composer/__tests__/SessionComposer-memo.test.js +0 -28
  225. package/composer/__tests__/SessionComposer-memo.test.js.map +0 -1
  226. package/composer/__tests__/useComposer.test.d.ts +0 -2
  227. package/composer/__tests__/useComposer.test.d.ts.map +0 -1
  228. package/composer/__tests__/useComposer.test.js +0 -139
  229. package/composer/__tests__/useComposer.test.js.map +0 -1
  230. package/environment/__tests__/systemEnvVars.test.d.ts +0 -2
  231. package/environment/__tests__/systemEnvVars.test.d.ts.map +0 -1
  232. package/environment/__tests__/systemEnvVars.test.js +0 -76
  233. package/environment/__tests__/systemEnvVars.test.js.map +0 -1
  234. package/execution/__tests__/MessageThread.test.d.ts +0 -2
  235. package/execution/__tests__/MessageThread.test.d.ts.map +0 -1
  236. package/execution/__tests__/MessageThread.test.js +0 -164
  237. package/execution/__tests__/MessageThread.test.js.map +0 -1
  238. package/execution/__tests__/PlanCompletionCard.test.d.ts +0 -2
  239. package/execution/__tests__/PlanCompletionCard.test.d.ts.map +0 -1
  240. package/execution/__tests__/PlanCompletionCard.test.js +0 -53
  241. package/execution/__tests__/PlanCompletionCard.test.js.map +0 -1
  242. package/execution/__tests__/buildThreadItems-plan-completion.test.d.ts +0 -2
  243. package/execution/__tests__/buildThreadItems-plan-completion.test.d.ts.map +0 -1
  244. package/execution/__tests__/buildThreadItems-plan-completion.test.js +0 -137
  245. package/execution/__tests__/buildThreadItems-plan-completion.test.js.map +0 -1
  246. package/execution/__tests__/execution-phases.test.d.ts +0 -2
  247. package/execution/__tests__/execution-phases.test.d.ts.map +0 -1
  248. package/execution/__tests__/execution-phases.test.js +0 -25
  249. package/execution/__tests__/execution-phases.test.js.map +0 -1
  250. package/execution/__tests__/file-path-resolver.test.d.ts +0 -2
  251. package/execution/__tests__/file-path-resolver.test.d.ts.map +0 -1
  252. package/execution/__tests__/file-path-resolver.test.js +0 -180
  253. package/execution/__tests__/file-path-resolver.test.js.map +0 -1
  254. package/execution/__tests__/message-entry.test.d.ts +0 -2
  255. package/execution/__tests__/message-entry.test.d.ts.map +0 -1
  256. package/execution/__tests__/message-entry.test.js +0 -178
  257. package/execution/__tests__/message-entry.test.js.map +0 -1
  258. package/execution/__tests__/thread-keys.test.d.ts +0 -2
  259. package/execution/__tests__/thread-keys.test.d.ts.map +0 -1
  260. package/execution/__tests__/thread-keys.test.js +0 -462
  261. package/execution/__tests__/thread-keys.test.js.map +0 -1
  262. package/execution/__tests__/thread-memoization.test.d.ts +0 -2
  263. package/execution/__tests__/thread-memoization.test.d.ts.map +0 -1
  264. package/execution/__tests__/thread-memoization.test.js +0 -262
  265. package/execution/__tests__/thread-memoization.test.js.map +0 -1
  266. package/execution/__tests__/thread-skeleton.test.d.ts +0 -2
  267. package/execution/__tests__/thread-skeleton.test.d.ts.map +0 -1
  268. package/execution/__tests__/thread-skeleton.test.js +0 -35
  269. package/execution/__tests__/thread-skeleton.test.js.map +0 -1
  270. package/execution/__tests__/useContextWindow.test.d.ts +0 -2
  271. package/execution/__tests__/useContextWindow.test.d.ts.map +0 -1
  272. package/execution/__tests__/useContextWindow.test.js +0 -121
  273. package/execution/__tests__/useContextWindow.test.js.map +0 -1
  274. package/execution/__tests__/useExecutionStream.test.d.ts +0 -2
  275. package/execution/__tests__/useExecutionStream.test.d.ts.map +0 -1
  276. package/execution/__tests__/useExecutionStream.test.js +0 -253
  277. package/execution/__tests__/useExecutionStream.test.js.map +0 -1
  278. package/execution/__tests__/useSessionVariables-stability.test.d.ts +0 -2
  279. package/execution/__tests__/useSessionVariables-stability.test.d.ts.map +0 -1
  280. package/execution/__tests__/useSessionVariables-stability.test.js +0 -69
  281. package/execution/__tests__/useSessionVariables-stability.test.js.map +0 -1
  282. package/execution/__tests__/virtualized-thread.test.d.ts +0 -2
  283. package/execution/__tests__/virtualized-thread.test.d.ts.map +0 -1
  284. package/execution/__tests__/virtualized-thread.test.js +0 -274
  285. package/execution/__tests__/virtualized-thread.test.js.map +0 -1
  286. package/file-reference/__tests__/FileReferenceChipList.test.d.ts +0 -2
  287. package/file-reference/__tests__/FileReferenceChipList.test.d.ts.map +0 -1
  288. package/file-reference/__tests__/FileReferenceChipList.test.js +0 -48
  289. package/file-reference/__tests__/FileReferenceChipList.test.js.map +0 -1
  290. package/file-reference/__tests__/useFileReferences.test.d.ts +0 -2
  291. package/file-reference/__tests__/useFileReferences.test.d.ts.map +0 -1
  292. package/file-reference/__tests__/useFileReferences.test.js +0 -90
  293. package/file-reference/__tests__/useFileReferences.test.js.map +0 -1
  294. package/github/__tests__/parseGitUrl.test.d.ts +0 -2
  295. package/github/__tests__/parseGitUrl.test.d.ts.map +0 -1
  296. package/github/__tests__/parseGitUrl.test.js +0 -47
  297. package/github/__tests__/parseGitUrl.test.js.map +0 -1
  298. package/github/__tests__/useGitHubTreeLister.test.d.ts +0 -2
  299. package/github/__tests__/useGitHubTreeLister.test.d.ts.map +0 -1
  300. package/github/__tests__/useGitHubTreeLister.test.js +0 -112
  301. package/github/__tests__/useGitHubTreeLister.test.js.map +0 -1
  302. package/internal/__tests__/ResizableSplit.test.d.ts +0 -2
  303. package/internal/__tests__/ResizableSplit.test.d.ts.map +0 -1
  304. package/internal/__tests__/ResizableSplit.test.js +0 -118
  305. package/internal/__tests__/ResizableSplit.test.js.map +0 -1
  306. package/internal/__tests__/fetch-cache.test.d.ts +0 -2
  307. package/internal/__tests__/fetch-cache.test.d.ts.map +0 -1
  308. package/internal/__tests__/fetch-cache.test.js +0 -182
  309. package/internal/__tests__/fetch-cache.test.js.map +0 -1
  310. package/internal/__tests__/stream-controller.test.d.ts +0 -2
  311. package/internal/__tests__/stream-controller.test.d.ts.map +0 -1
  312. package/internal/__tests__/stream-controller.test.js +0 -327
  313. package/internal/__tests__/stream-controller.test.js.map +0 -1
  314. package/internal/__tests__/thread-animation.test.d.ts +0 -2
  315. package/internal/__tests__/thread-animation.test.d.ts.map +0 -1
  316. package/internal/__tests__/thread-animation.test.js +0 -79
  317. package/internal/__tests__/thread-animation.test.js.map +0 -1
  318. package/internal/__tests__/useAutoScroll.test.d.ts +0 -2
  319. package/internal/__tests__/useAutoScroll.test.d.ts.map +0 -1
  320. package/internal/__tests__/useAutoScroll.test.js +0 -188
  321. package/internal/__tests__/useAutoScroll.test.js.map +0 -1
  322. package/internal/__tests__/useFetch-cache.test.d.ts +0 -2
  323. package/internal/__tests__/useFetch-cache.test.d.ts.map +0 -1
  324. package/internal/__tests__/useFetch-cache.test.js +0 -137
  325. package/internal/__tests__/useFetch-cache.test.js.map +0 -1
  326. package/internal/__tests__/useFetch-identity-reset.test.d.ts +0 -2
  327. package/internal/__tests__/useFetch-identity-reset.test.d.ts.map +0 -1
  328. package/internal/__tests__/useFetch-identity-reset.test.js +0 -281
  329. package/internal/__tests__/useFetch-identity-reset.test.js.map +0 -1
  330. package/internal/__tests__/useFetch.test.d.ts +0 -2
  331. package/internal/__tests__/useFetch.test.d.ts.map +0 -1
  332. package/internal/__tests__/useFetch.test.js +0 -95
  333. package/internal/__tests__/useFetch.test.js.map +0 -1
  334. package/internal/dev/__tests__/use-key-stability.test.d.ts +0 -2
  335. package/internal/dev/__tests__/use-key-stability.test.d.ts.map +0 -1
  336. package/internal/dev/__tests__/use-key-stability.test.js +0 -72
  337. package/internal/dev/__tests__/use-key-stability.test.js.map +0 -1
  338. package/internal/dev/__tests__/use-render-tracer.test.d.ts +0 -2
  339. package/internal/dev/__tests__/use-render-tracer.test.d.ts.map +0 -1
  340. package/internal/dev/__tests__/use-render-tracer.test.js +0 -55
  341. package/internal/dev/__tests__/use-render-tracer.test.js.map +0 -1
  342. package/internal/file-tree/__tests__/FileTreeNode-drag.test.d.ts +0 -2
  343. package/internal/file-tree/__tests__/FileTreeNode-drag.test.d.ts.map +0 -1
  344. package/internal/file-tree/__tests__/FileTreeNode-drag.test.js +0 -55
  345. package/internal/file-tree/__tests__/FileTreeNode-drag.test.js.map +0 -1
  346. package/internal/file-tree/__tests__/buildFileTree.test.d.ts +0 -2
  347. package/internal/file-tree/__tests__/buildFileTree.test.d.ts.map +0 -1
  348. package/internal/file-tree/__tests__/buildFileTree.test.js +0 -102
  349. package/internal/file-tree/__tests__/buildFileTree.test.js.map +0 -1
  350. package/internal/file-tree/__tests__/filterFileTree.test.d.ts +0 -2
  351. package/internal/file-tree/__tests__/filterFileTree.test.d.ts.map +0 -1
  352. package/internal/file-tree/__tests__/filterFileTree.test.js +0 -120
  353. package/internal/file-tree/__tests__/filterFileTree.test.js.map +0 -1
  354. package/internal/store/__tests__/conversation-store.test.d.ts +0 -2
  355. package/internal/store/__tests__/conversation-store.test.d.ts.map +0 -1
  356. package/internal/store/__tests__/conversation-store.test.js +0 -200
  357. package/internal/store/__tests__/conversation-store.test.js.map +0 -1
  358. package/internal/store/__tests__/selection-store.test.d.ts +0 -2
  359. package/internal/store/__tests__/selection-store.test.d.ts.map +0 -1
  360. package/internal/store/__tests__/selection-store.test.js +0 -93
  361. package/internal/store/__tests__/selection-store.test.js.map +0 -1
  362. package/internal/store/__tests__/structural-share.test.d.ts +0 -2
  363. package/internal/store/__tests__/structural-share.test.d.ts.map +0 -1
  364. package/internal/store/__tests__/structural-share.test.js +0 -368
  365. package/internal/store/__tests__/structural-share.test.js.map +0 -1
  366. package/internal/store/__tests__/workflow-execution-event-store.test.d.ts +0 -2
  367. package/internal/store/__tests__/workflow-execution-event-store.test.d.ts.map +0 -1
  368. package/internal/store/__tests__/workflow-execution-event-store.test.js +0 -215
  369. package/internal/store/__tests__/workflow-execution-event-store.test.js.map +0 -1
  370. package/invitation/__tests__/useCreateInvitation.test.d.ts +0 -2
  371. package/invitation/__tests__/useCreateInvitation.test.d.ts.map +0 -1
  372. package/invitation/__tests__/useCreateInvitation.test.js +0 -152
  373. package/invitation/__tests__/useCreateInvitation.test.js.map +0 -1
  374. package/models/__tests__/HarnessSelector.test.d.ts +0 -2
  375. package/models/__tests__/HarnessSelector.test.d.ts.map +0 -1
  376. package/models/__tests__/HarnessSelector.test.js +0 -160
  377. package/models/__tests__/HarnessSelector.test.js.map +0 -1
  378. package/models/__tests__/harness.test.d.ts +0 -2
  379. package/models/__tests__/harness.test.d.ts.map +0 -1
  380. package/models/__tests__/harness.test.js +0 -50
  381. package/models/__tests__/harness.test.js.map +0 -1
  382. package/models/__tests__/useModelRegistry.test.d.ts +0 -2
  383. package/models/__tests__/useModelRegistry.test.d.ts.map +0 -1
  384. package/models/__tests__/useModelRegistry.test.js +0 -246
  385. package/models/__tests__/useModelRegistry.test.js.map +0 -1
  386. package/session/__tests__/execution-target.test.d.ts +0 -2
  387. package/session/__tests__/execution-target.test.d.ts.map +0 -1
  388. package/session/__tests__/execution-target.test.js +0 -34
  389. package/session/__tests__/execution-target.test.js.map +0 -1
  390. package/session/__tests__/group-sessions.test.d.ts +0 -2
  391. package/session/__tests__/group-sessions.test.d.ts.map +0 -1
  392. package/session/__tests__/group-sessions.test.js +0 -91
  393. package/session/__tests__/group-sessions.test.js.map +0 -1
  394. package/session/__tests__/session-spec-converters.test.d.ts +0 -2
  395. package/session/__tests__/session-spec-converters.test.d.ts.map +0 -1
  396. package/session/__tests__/session-spec-converters.test.js +0 -160
  397. package/session/__tests__/session-spec-converters.test.js.map +0 -1
  398. package/session/__tests__/useCreateSession.test.d.ts +0 -2
  399. package/session/__tests__/useCreateSession.test.d.ts.map +0 -1
  400. package/session/__tests__/useCreateSession.test.js +0 -228
  401. package/session/__tests__/useCreateSession.test.js.map +0 -1
  402. package/session/__tests__/useNewSessionFlow.test.d.ts +0 -2
  403. package/session/__tests__/useNewSessionFlow.test.d.ts.map +0 -1
  404. package/session/__tests__/useNewSessionFlow.test.js +0 -364
  405. package/session/__tests__/useNewSessionFlow.test.js.map +0 -1
  406. package/session/__tests__/usePersistedModel.test.d.ts +0 -2
  407. package/session/__tests__/usePersistedModel.test.d.ts.map +0 -1
  408. package/session/__tests__/usePersistedModel.test.js +0 -96
  409. package/session/__tests__/usePersistedModel.test.js.map +0 -1
  410. package/session/__tests__/useSession.test.d.ts +0 -2
  411. package/session/__tests__/useSession.test.d.ts.map +0 -1
  412. package/session/__tests__/useSession.test.js +0 -93
  413. package/session/__tests__/useSession.test.js.map +0 -1
  414. package/session/__tests__/useSessionConversation.test.d.ts +0 -2
  415. package/session/__tests__/useSessionConversation.test.d.ts.map +0 -1
  416. package/session/__tests__/useSessionConversation.test.js +0 -246
  417. package/session/__tests__/useSessionConversation.test.js.map +0 -1
  418. package/session/__tests__/useSessionList.test.d.ts +0 -2
  419. package/session/__tests__/useSessionList.test.d.ts.map +0 -1
  420. package/session/__tests__/useSessionList.test.js +0 -63
  421. package/session/__tests__/useSessionList.test.js.map +0 -1
  422. package/session/__tests__/useSessionUsage.test.d.ts +0 -2
  423. package/session/__tests__/useSessionUsage.test.d.ts.map +0 -1
  424. package/session/__tests__/useSessionUsage.test.js +0 -146
  425. package/session/__tests__/useSessionUsage.test.js.map +0 -1
  426. package/session/inspector/__tests__/useSessionInspector.test.d.ts +0 -2
  427. package/session/inspector/__tests__/useSessionInspector.test.d.ts.map +0 -1
  428. package/session/inspector/__tests__/useSessionInspector.test.js +0 -195
  429. package/session/inspector/__tests__/useSessionInspector.test.js.map +0 -1
  430. package/test/__tests__/samples.test.d.ts +0 -2
  431. package/test/__tests__/samples.test.d.ts.map +0 -1
  432. package/test/__tests__/samples.test.js +0 -152
  433. package/test/__tests__/samples.test.js.map +0 -1
  434. package/workflow/__tests__/ExecutionInspector.test.d.ts +0 -2
  435. package/workflow/__tests__/ExecutionInspector.test.d.ts.map +0 -1
  436. package/workflow/__tests__/ExecutionInspector.test.js +0 -91
  437. package/workflow/__tests__/ExecutionInspector.test.js.map +0 -1
  438. package/workflow/__tests__/WorkflowArchitectDialog.test.d.ts +0 -2
  439. package/workflow/__tests__/WorkflowArchitectDialog.test.d.ts.map +0 -1
  440. package/workflow/__tests__/WorkflowArchitectDialog.test.js +0 -126
  441. package/workflow/__tests__/WorkflowArchitectDialog.test.js.map +0 -1
  442. package/workflow/__tests__/WorkflowRefinePanel.test.d.ts +0 -2
  443. package/workflow/__tests__/WorkflowRefinePanel.test.d.ts.map +0 -1
  444. package/workflow/__tests__/WorkflowRefinePanel.test.js +0 -138
  445. package/workflow/__tests__/WorkflowRefinePanel.test.js.map +0 -1
  446. package/workflow/__tests__/WorkflowRepairCard.test.d.ts +0 -2
  447. package/workflow/__tests__/WorkflowRepairCard.test.d.ts.map +0 -1
  448. package/workflow/__tests__/WorkflowRepairCard.test.js +0 -158
  449. package/workflow/__tests__/WorkflowRepairCard.test.js.map +0 -1
  450. package/workflow/__tests__/WorkflowTaskApprovalCard.test.d.ts +0 -2
  451. package/workflow/__tests__/WorkflowTaskApprovalCard.test.d.ts.map +0 -1
  452. package/workflow/__tests__/WorkflowTaskApprovalCard.test.js +0 -221
  453. package/workflow/__tests__/WorkflowTaskApprovalCard.test.js.map +0 -1
  454. package/workflow/__tests__/WorkflowTaskApprovalSummary.test.d.ts +0 -2
  455. package/workflow/__tests__/WorkflowTaskApprovalSummary.test.d.ts.map +0 -1
  456. package/workflow/__tests__/WorkflowTaskApprovalSummary.test.js +0 -94
  457. package/workflow/__tests__/WorkflowTaskApprovalSummary.test.js.map +0 -1
  458. package/workflow/__tests__/agent-call-live-experience.test.d.ts +0 -11
  459. package/workflow/__tests__/agent-call-live-experience.test.d.ts.map +0 -1
  460. package/workflow/__tests__/agent-call-live-experience.test.js +0 -379
  461. package/workflow/__tests__/agent-call-live-experience.test.js.map +0 -1
  462. package/workflow/__tests__/branch-commands.test.d.ts +0 -2
  463. package/workflow/__tests__/branch-commands.test.d.ts.map +0 -1
  464. package/workflow/__tests__/branch-commands.test.js +0 -165
  465. package/workflow/__tests__/branch-commands.test.js.map +0 -1
  466. package/workflow/__tests__/caption-dimensions.test.d.ts +0 -2
  467. package/workflow/__tests__/caption-dimensions.test.d.ts.map +0 -1
  468. package/workflow/__tests__/caption-dimensions.test.js +0 -89
  469. package/workflow/__tests__/caption-dimensions.test.js.map +0 -1
  470. package/workflow/__tests__/clipboard.test.d.ts +0 -2
  471. package/workflow/__tests__/clipboard.test.d.ts.map +0 -1
  472. package/workflow/__tests__/clipboard.test.js +0 -172
  473. package/workflow/__tests__/clipboard.test.js.map +0 -1
  474. package/workflow/__tests__/cncf-yaml-to-graph.test.d.ts +0 -2
  475. package/workflow/__tests__/cncf-yaml-to-graph.test.d.ts.map +0 -1
  476. package/workflow/__tests__/cncf-yaml-to-graph.test.js +0 -479
  477. package/workflow/__tests__/cncf-yaml-to-graph.test.js.map +0 -1
  478. package/workflow/__tests__/context-menu-logic.test.d.ts +0 -2
  479. package/workflow/__tests__/context-menu-logic.test.d.ts.map +0 -1
  480. package/workflow/__tests__/context-menu-logic.test.js +0 -97
  481. package/workflow/__tests__/context-menu-logic.test.js.map +0 -1
  482. package/workflow/__tests__/derive-execution-overlays.test.d.ts +0 -2
  483. package/workflow/__tests__/derive-execution-overlays.test.d.ts.map +0 -1
  484. package/workflow/__tests__/derive-execution-overlays.test.js +0 -338
  485. package/workflow/__tests__/derive-execution-overlays.test.js.map +0 -1
  486. package/workflow/__tests__/derive-task-detail.test.d.ts +0 -2
  487. package/workflow/__tests__/derive-task-detail.test.d.ts.map +0 -1
  488. package/workflow/__tests__/derive-task-detail.test.js +0 -1035
  489. package/workflow/__tests__/derive-task-detail.test.js.map +0 -1
  490. package/workflow/__tests__/derive-waterfall-entries.test.d.ts +0 -2
  491. package/workflow/__tests__/derive-waterfall-entries.test.d.ts.map +0 -1
  492. package/workflow/__tests__/derive-waterfall-entries.test.js +0 -419
  493. package/workflow/__tests__/derive-waterfall-entries.test.js.map +0 -1
  494. package/workflow/__tests__/execution-graph.test.d.ts +0 -2
  495. package/workflow/__tests__/execution-graph.test.d.ts.map +0 -1
  496. package/workflow/__tests__/execution-graph.test.js +0 -251
  497. package/workflow/__tests__/execution-graph.test.js.map +0 -1
  498. package/workflow/__tests__/execution-inspector.test.d.ts +0 -2
  499. package/workflow/__tests__/execution-inspector.test.d.ts.map +0 -1
  500. package/workflow/__tests__/execution-inspector.test.js +0 -248
  501. package/workflow/__tests__/execution-inspector.test.js.map +0 -1
  502. package/workflow/__tests__/extract-workflow-yaml.test.d.ts +0 -2
  503. package/workflow/__tests__/extract-workflow-yaml.test.d.ts.map +0 -1
  504. package/workflow/__tests__/extract-workflow-yaml.test.js +0 -135
  505. package/workflow/__tests__/extract-workflow-yaml.test.js.map +0 -1
  506. package/workflow/__tests__/format-utils.test.d.ts +0 -2
  507. package/workflow/__tests__/format-utils.test.d.ts.map +0 -1
  508. package/workflow/__tests__/format-utils.test.js +0 -128
  509. package/workflow/__tests__/format-utils.test.js.map +0 -1
  510. package/workflow/__tests__/inspector-commands.test.d.ts +0 -2
  511. package/workflow/__tests__/inspector-commands.test.d.ts.map +0 -1
  512. package/workflow/__tests__/inspector-commands.test.js +0 -110
  513. package/workflow/__tests__/inspector-commands.test.js.map +0 -1
  514. package/workflow/__tests__/inspector-forms.test.d.ts +0 -2
  515. package/workflow/__tests__/inspector-forms.test.d.ts.map +0 -1
  516. package/workflow/__tests__/inspector-forms.test.js +0 -114
  517. package/workflow/__tests__/inspector-forms.test.js.map +0 -1
  518. package/workflow/__tests__/inspector-tabs.test.d.ts +0 -2
  519. package/workflow/__tests__/inspector-tabs.test.d.ts.map +0 -1
  520. package/workflow/__tests__/inspector-tabs.test.js +0 -81
  521. package/workflow/__tests__/inspector-tabs.test.js.map +0 -1
  522. package/workflow/__tests__/kind-metadata.test.d.ts +0 -2
  523. package/workflow/__tests__/kind-metadata.test.d.ts.map +0 -1
  524. package/workflow/__tests__/kind-metadata.test.js +0 -80
  525. package/workflow/__tests__/kind-metadata.test.js.map +0 -1
  526. package/workflow/__tests__/motion-preference.test.d.ts +0 -2
  527. package/workflow/__tests__/motion-preference.test.d.ts.map +0 -1
  528. package/workflow/__tests__/motion-preference.test.js +0 -42
  529. package/workflow/__tests__/motion-preference.test.js.map +0 -1
  530. package/workflow/__tests__/node-popover.test.d.ts +0 -2
  531. package/workflow/__tests__/node-popover.test.d.ts.map +0 -1
  532. package/workflow/__tests__/node-popover.test.js +0 -130
  533. package/workflow/__tests__/node-popover.test.js.map +0 -1
  534. package/workflow/__tests__/node-shell.test.d.ts +0 -2
  535. package/workflow/__tests__/node-shell.test.d.ts.map +0 -1
  536. package/workflow/__tests__/node-shell.test.js +0 -210
  537. package/workflow/__tests__/node-shell.test.js.map +0 -1
  538. package/workflow/__tests__/overview-graph.test.d.ts +0 -2
  539. package/workflow/__tests__/overview-graph.test.d.ts.map +0 -1
  540. package/workflow/__tests__/overview-graph.test.js +0 -83
  541. package/workflow/__tests__/overview-graph.test.js.map +0 -1
  542. package/workflow/__tests__/overview-summary.test.d.ts +0 -2
  543. package/workflow/__tests__/overview-summary.test.d.ts.map +0 -1
  544. package/workflow/__tests__/overview-summary.test.js +0 -73
  545. package/workflow/__tests__/overview-summary.test.js.map +0 -1
  546. package/workflow/__tests__/shortcut-registry.test.d.ts +0 -2
  547. package/workflow/__tests__/shortcut-registry.test.d.ts.map +0 -1
  548. package/workflow/__tests__/shortcut-registry.test.js +0 -111
  549. package/workflow/__tests__/shortcut-registry.test.js.map +0 -1
  550. package/workflow/__tests__/starter-workflow-yaml.test.d.ts +0 -2
  551. package/workflow/__tests__/starter-workflow-yaml.test.d.ts.map +0 -1
  552. package/workflow/__tests__/starter-workflow-yaml.test.js +0 -44
  553. package/workflow/__tests__/starter-workflow-yaml.test.js.map +0 -1
  554. package/workflow/__tests__/structured-data-viewer.test.d.ts +0 -2
  555. package/workflow/__tests__/structured-data-viewer.test.d.ts.map +0 -1
  556. package/workflow/__tests__/structured-data-viewer.test.js +0 -438
  557. package/workflow/__tests__/structured-data-viewer.test.js.map +0 -1
  558. package/workflow/__tests__/t09-branch-management.test.d.ts +0 -2
  559. package/workflow/__tests__/t09-branch-management.test.d.ts.map +0 -1
  560. package/workflow/__tests__/t09-branch-management.test.js +0 -433
  561. package/workflow/__tests__/t09-branch-management.test.js.map +0 -1
  562. package/workflow/__tests__/task-type-visual-registry.test.d.ts +0 -2
  563. package/workflow/__tests__/task-type-visual-registry.test.d.ts.map +0 -1
  564. package/workflow/__tests__/task-type-visual-registry.test.js +0 -99
  565. package/workflow/__tests__/task-type-visual-registry.test.js.map +0 -1
  566. package/workflow/__tests__/useActiveTaskName.test.d.ts +0 -2
  567. package/workflow/__tests__/useActiveTaskName.test.d.ts.map +0 -1
  568. package/workflow/__tests__/useActiveTaskName.test.js +0 -80
  569. package/workflow/__tests__/useActiveTaskName.test.js.map +0 -1
  570. package/workflow/__tests__/useDiagnoseExecutionFlow.test.d.ts +0 -2
  571. package/workflow/__tests__/useDiagnoseExecutionFlow.test.d.ts.map +0 -1
  572. package/workflow/__tests__/useDiagnoseExecutionFlow.test.js +0 -363
  573. package/workflow/__tests__/useDiagnoseExecutionFlow.test.js.map +0 -1
  574. package/workflow/__tests__/useExecutionAnnouncements.test.d.ts +0 -2
  575. package/workflow/__tests__/useExecutionAnnouncements.test.d.ts.map +0 -1
  576. package/workflow/__tests__/useExecutionAnnouncements.test.js +0 -85
  577. package/workflow/__tests__/useExecutionAnnouncements.test.js.map +0 -1
  578. package/workflow/__tests__/useFollowExecution.test.d.ts +0 -2
  579. package/workflow/__tests__/useFollowExecution.test.d.ts.map +0 -1
  580. package/workflow/__tests__/useFollowExecution.test.js +0 -130
  581. package/workflow/__tests__/useFollowExecution.test.js.map +0 -1
  582. package/workflow/__tests__/useRefineWorkflowFlow.test.d.ts +0 -2
  583. package/workflow/__tests__/useRefineWorkflowFlow.test.d.ts.map +0 -1
  584. package/workflow/__tests__/useRefineWorkflowFlow.test.js +0 -367
  585. package/workflow/__tests__/useRefineWorkflowFlow.test.js.map +0 -1
  586. package/workflow/__tests__/useRunWorkflowFlow.test.d.ts +0 -2
  587. package/workflow/__tests__/useRunWorkflowFlow.test.d.ts.map +0 -1
  588. package/workflow/__tests__/useRunWorkflowFlow.test.js +0 -385
  589. package/workflow/__tests__/useRunWorkflowFlow.test.js.map +0 -1
  590. package/workflow/__tests__/useWorkflowArchitectFlow.test.d.ts +0 -2
  591. package/workflow/__tests__/useWorkflowArchitectFlow.test.d.ts.map +0 -1
  592. package/workflow/__tests__/useWorkflowArchitectFlow.test.js +0 -376
  593. package/workflow/__tests__/useWorkflowArchitectFlow.test.js.map +0 -1
  594. package/workflow/__tests__/useWorkflowExecution.test.d.ts +0 -2
  595. package/workflow/__tests__/useWorkflowExecution.test.d.ts.map +0 -1
  596. package/workflow/__tests__/useWorkflowExecution.test.js +0 -229
  597. package/workflow/__tests__/useWorkflowExecution.test.js.map +0 -1
  598. package/workflow/__tests__/useWorkflowExecutionActions.test.d.ts +0 -2
  599. package/workflow/__tests__/useWorkflowExecutionActions.test.d.ts.map +0 -1
  600. package/workflow/__tests__/useWorkflowExecutionActions.test.js +0 -191
  601. package/workflow/__tests__/useWorkflowExecutionActions.test.js.map +0 -1
  602. package/workflow/__tests__/useWorkflowExecutionEventStream.test.d.ts +0 -2
  603. package/workflow/__tests__/useWorkflowExecutionEventStream.test.d.ts.map +0 -1
  604. package/workflow/__tests__/useWorkflowExecutionEventStream.test.js +0 -291
  605. package/workflow/__tests__/useWorkflowExecutionEventStream.test.js.map +0 -1
  606. package/workflow/__tests__/workflow-instance-hooks.test.d.ts +0 -2
  607. package/workflow/__tests__/workflow-instance-hooks.test.d.ts.map +0 -1
  608. package/workflow/__tests__/workflow-instance-hooks.test.js +0 -153
  609. package/workflow/__tests__/workflow-instance-hooks.test.js.map +0 -1
  610. package/workflow/__tests__/workflow-summary-panel.test.d.ts +0 -2
  611. package/workflow/__tests__/workflow-summary-panel.test.d.ts.map +0 -1
  612. package/workflow/__tests__/workflow-summary-panel.test.js +0 -85
  613. package/workflow/__tests__/workflow-summary-panel.test.js.map +0 -1
  614. package/workflow/__tests__/workflow-uses-trigger-input.test.d.ts +0 -2
  615. package/workflow/__tests__/workflow-uses-trigger-input.test.d.ts.map +0 -1
  616. package/workflow/__tests__/workflow-uses-trigger-input.test.js +0 -144
  617. package/workflow/__tests__/workflow-uses-trigger-input.test.js.map +0 -1
  618. package/workflow/__tests__/workflow-yaml-diff.test.d.ts +0 -2
  619. package/workflow/__tests__/workflow-yaml-diff.test.d.ts.map +0 -1
  620. package/workflow/__tests__/workflow-yaml-diff.test.js +0 -110
  621. package/workflow/__tests__/workflow-yaml-diff.test.js.map +0 -1
  622. package/workflow/diff/__tests__/build-diff-graph.test.d.ts +0 -2
  623. package/workflow/diff/__tests__/build-diff-graph.test.d.ts.map +0 -1
  624. package/workflow/diff/__tests__/build-diff-graph.test.js +0 -115
  625. package/workflow/diff/__tests__/build-diff-graph.test.js.map +0 -1
  626. package/workflow/diff/__tests__/graph-diff.test.d.ts +0 -2
  627. package/workflow/diff/__tests__/graph-diff.test.d.ts.map +0 -1
  628. package/workflow/diff/__tests__/graph-diff.test.js +0 -196
  629. package/workflow/diff/__tests__/graph-diff.test.js.map +0 -1
  630. package/workflow/execution-comparison/__tests__/derive-execution-comparison.test.d.ts +0 -2
  631. package/workflow/execution-comparison/__tests__/derive-execution-comparison.test.d.ts.map +0 -1
  632. package/workflow/execution-comparison/__tests__/derive-execution-comparison.test.js +0 -263
  633. package/workflow/execution-comparison/__tests__/derive-execution-comparison.test.js.map +0 -1
  634. package/workflow/execution-history/__tests__/derive-execution-row.test.d.ts +0 -2
  635. package/workflow/execution-history/__tests__/derive-execution-row.test.d.ts.map +0 -1
  636. package/workflow/execution-history/__tests__/derive-execution-row.test.js +0 -276
  637. package/workflow/execution-history/__tests__/derive-execution-row.test.js.map +0 -1
  638. package/workflow/execution-history/__tests__/derive-failure-analysis.test.d.ts +0 -2
  639. package/workflow/execution-history/__tests__/derive-failure-analysis.test.d.ts.map +0 -1
  640. package/workflow/execution-history/__tests__/derive-failure-analysis.test.js +0 -132
  641. package/workflow/execution-history/__tests__/derive-failure-analysis.test.js.map +0 -1
  642. package/workflow/layout/__tests__/dagre-layout-engine.test.d.ts +0 -2
  643. package/workflow/layout/__tests__/dagre-layout-engine.test.d.ts.map +0 -1
  644. package/workflow/layout/__tests__/dagre-layout-engine.test.js +0 -105
  645. package/workflow/layout/__tests__/dagre-layout-engine.test.js.map +0 -1
  646. package/workflow/layout/__tests__/layout-postprocessor.test.d.ts +0 -2
  647. package/workflow/layout/__tests__/layout-postprocessor.test.d.ts.map +0 -1
  648. package/workflow/layout/__tests__/layout-postprocessor.test.js +0 -123
  649. package/workflow/layout/__tests__/layout-postprocessor.test.js.map +0 -1
  650. package/workflow/layout/__tests__/port-assignment.test.d.ts +0 -2
  651. package/workflow/layout/__tests__/port-assignment.test.d.ts.map +0 -1
  652. package/workflow/layout/__tests__/port-assignment.test.js +0 -200
  653. package/workflow/layout/__tests__/port-assignment.test.js.map +0 -1
  654. package/workflow/layout/__tests__/registry-dimensions.test.d.ts +0 -2
  655. package/workflow/layout/__tests__/registry-dimensions.test.d.ts.map +0 -1
  656. package/workflow/layout/__tests__/registry-dimensions.test.js +0 -104
  657. package/workflow/layout/__tests__/registry-dimensions.test.js.map +0 -1
  658. package/workflow/layout/__tests__/useElkLayoutEngine.test.d.ts +0 -2
  659. package/workflow/layout/__tests__/useElkLayoutEngine.test.d.ts.map +0 -1
  660. package/workflow/layout/__tests__/useElkLayoutEngine.test.js +0 -106
  661. package/workflow/layout/__tests__/useElkLayoutEngine.test.js.map +0 -1
  662. package/workflow/layout/__tests__/workflow-preprocessor.test.d.ts +0 -2
  663. package/workflow/layout/__tests__/workflow-preprocessor.test.d.ts.map +0 -1
  664. package/workflow/layout/__tests__/workflow-preprocessor.test.js +0 -138
  665. package/workflow/layout/__tests__/workflow-preprocessor.test.js.map +0 -1
  666. package/workflow/picker/__tests__/compatibility.test.d.ts +0 -2
  667. package/workflow/picker/__tests__/compatibility.test.d.ts.map +0 -1
  668. package/workflow/picker/__tests__/compatibility.test.js +0 -93
  669. package/workflow/picker/__tests__/compatibility.test.js.map +0 -1
  670. package/workflow/picker/__tests__/insertion-context.test.d.ts +0 -2
  671. package/workflow/picker/__tests__/insertion-context.test.d.ts.map +0 -1
  672. package/workflow/picker/__tests__/insertion-context.test.js +0 -67
  673. package/workflow/picker/__tests__/insertion-context.test.js.map +0 -1
  674. package/workflow/picker/__tests__/recents.test.d.ts +0 -2
  675. package/workflow/picker/__tests__/recents.test.d.ts.map +0 -1
  676. package/workflow/picker/__tests__/recents.test.js +0 -81
  677. package/workflow/picker/__tests__/recents.test.js.map +0 -1
  678. package/workflow/picker/__tests__/suggestions.test.d.ts +0 -2
  679. package/workflow/picker/__tests__/suggestions.test.d.ts.map +0 -1
  680. package/workflow/picker/__tests__/suggestions.test.js +0 -111
  681. package/workflow/picker/__tests__/suggestions.test.js.map +0 -1
  682. package/workflow/templates/__tests__/derive-template-metadata.test.d.ts +0 -2
  683. package/workflow/templates/__tests__/derive-template-metadata.test.d.ts.map +0 -1
  684. package/workflow/templates/__tests__/derive-template-metadata.test.js +0 -317
  685. package/workflow/templates/__tests__/derive-template-metadata.test.js.map +0 -1
  686. package/workflow/templates/__tests__/workflow-template-gallery.test.d.ts +0 -2
  687. package/workflow/templates/__tests__/workflow-template-gallery.test.d.ts.map +0 -1
  688. package/workflow/templates/__tests__/workflow-template-gallery.test.js +0 -119
  689. package/workflow/templates/__tests__/workflow-template-gallery.test.js.map +0 -1
  690. package/workspace/__tests__/WorkspaceEditor-initialPanel.test.d.ts +0 -2
  691. package/workspace/__tests__/WorkspaceEditor-initialPanel.test.d.ts.map +0 -1
  692. package/workspace/__tests__/WorkspaceEditor-initialPanel.test.js +0 -82
  693. package/workspace/__tests__/WorkspaceEditor-initialPanel.test.js.map +0 -1
  694. package/workspace/__tests__/useWorkspaceEntries-stability.test.d.ts +0 -2
  695. package/workspace/__tests__/useWorkspaceEntries-stability.test.d.ts.map +0 -1
  696. package/workspace/__tests__/useWorkspaceEntries-stability.test.js +0 -57
  697. package/workspace/__tests__/useWorkspaceEntries-stability.test.js.map +0 -1
  698. package/workspace/__tests__/useWorkspaceFiles.test.d.ts +0 -2
  699. package/workspace/__tests__/useWorkspaceFiles.test.d.ts.map +0 -1
  700. package/workspace/__tests__/useWorkspaceFiles.test.js +0 -128
  701. package/workspace/__tests__/useWorkspaceFiles.test.js.map +0 -1
  702. package/workspace/__tests__/useWorkspaceSources.test.d.ts +0 -2
  703. package/workspace/__tests__/useWorkspaceSources.test.d.ts.map +0 -1
  704. package/workspace/__tests__/useWorkspaceSources.test.js +0 -98
  705. package/workspace/__tests__/useWorkspaceSources.test.js.map +0 -1
@@ -5,6 +5,8 @@ import { DEFAULT_MODEL_ID, DEFAULT_CURSOR_MODEL_ID, parseRegistryJson } from "..
5
5
  import { ModelRegistryContext } from "../../models/ModelRegistryContext";
6
6
  import type { ModelRegistryState } from "../../models/ModelRegistryContext";
7
7
  import { ExecutionTargetContext } from "../../execution-target-context";
8
+ import { RunnerAdapterContext } from "../../runner-adapter";
9
+ import type { RunnerAdapter } from "../../runner-adapter";
8
10
  import type { UseCreateSessionReturn } from "../useCreateSession";
9
11
 
10
12
  const mockCreateSession = vi.fn<UseCreateSessionReturn["create"]>();
@@ -72,19 +74,38 @@ const TEST_MODELS = parseRegistryJson({
72
74
  ],
73
75
  });
74
76
 
75
- function createWrapper(executionTarget?: "local" | "cloud") {
77
+ function createWrapper(
78
+ executionTarget?: "local" | "cloud",
79
+ adapter: RunnerAdapter | null = null,
80
+ ) {
76
81
  const state: ModelRegistryState = { models: TEST_MODELS, isLoading: false, error: null, refetch: () => {} };
77
82
  return function Wrapper({ children }: { children: ReactNode }) {
78
83
  return (
79
84
  <ExecutionTargetContext.Provider value={executionTarget}>
80
- <ModelRegistryContext.Provider value={state}>
81
- {children}
82
- </ModelRegistryContext.Provider>
85
+ <RunnerAdapterContext.Provider value={adapter}>
86
+ <ModelRegistryContext.Provider value={state}>
87
+ {children}
88
+ </ModelRegistryContext.Provider>
89
+ </RunnerAdapterContext.Provider>
83
90
  </ExecutionTargetContext.Provider>
84
91
  );
85
92
  };
86
93
  }
87
94
 
95
+ function createMockAdapter(): RunnerAdapter & {
96
+ onSessionOpened: ReturnType<typeof vi.fn>;
97
+ onSessionClosed: ReturnType<typeof vi.fn>;
98
+ onWorkflowExecutionCreated: ReturnType<typeof vi.fn>;
99
+ onWorkflowExecutionTerminated: ReturnType<typeof vi.fn>;
100
+ } {
101
+ return {
102
+ onSessionOpened: vi.fn().mockResolvedValue(undefined),
103
+ onSessionClosed: vi.fn().mockResolvedValue(undefined),
104
+ onWorkflowExecutionCreated: vi.fn().mockResolvedValue(undefined),
105
+ onWorkflowExecutionTerminated: vi.fn().mockResolvedValue(undefined),
106
+ };
107
+ }
108
+
88
109
  const STORAGE_KEY_HARNESS = "stigmer:session:harness";
89
110
  const STORAGE_KEY_MODEL_NATIVE = "stigmer:session:model";
90
111
  const STORAGE_KEY_MODEL_CURSOR = "stigmer:session:model:cursor";
@@ -392,6 +413,61 @@ describe("useNewSessionFlow", () => {
392
413
  });
393
414
  });
394
415
 
416
+ describe("submit — local runner worker (eager attach)", () => {
417
+ it("attaches the worker before creating the first execution", async () => {
418
+ const adapter = createMockAdapter();
419
+ const opts = defaultOptions();
420
+ const { result } = renderHook(() => useNewSessionFlow(opts), {
421
+ wrapper: createWrapper("local", adapter),
422
+ });
423
+
424
+ await act(async () => {
425
+ await result.current.submit("Hello");
426
+ });
427
+
428
+ expect(adapter.onSessionOpened).toHaveBeenCalledTimes(1);
429
+ expect(adapter.onSessionOpened).toHaveBeenCalledWith("sess-new");
430
+ expect(adapter.onSessionClosed).not.toHaveBeenCalled();
431
+
432
+ // The worker must be polling before the first execution exists.
433
+ const openedOrder = adapter.onSessionOpened.mock.invocationCallOrder[0];
434
+ const execOrder = mockCreateExecution.mock.invocationCallOrder[0];
435
+ expect(openedOrder).toBeLessThan(execOrder);
436
+ });
437
+
438
+ it("does not attach a worker when the target is cloud", async () => {
439
+ const adapter = createMockAdapter();
440
+ const opts = defaultOptions();
441
+ const { result } = renderHook(() => useNewSessionFlow(opts), {
442
+ wrapper: createWrapper("cloud", adapter),
443
+ });
444
+
445
+ await act(async () => {
446
+ await result.current.submit("Hello");
447
+ });
448
+
449
+ expect(adapter.onSessionOpened).not.toHaveBeenCalled();
450
+ });
451
+
452
+ it("detaches the worker when the first execution fails (no leak)", async () => {
453
+ const adapter = createMockAdapter();
454
+ mockCreateExecution.mockRejectedValueOnce(new Error("execution boom"));
455
+ const opts = defaultOptions();
456
+ const { result } = renderHook(() => useNewSessionFlow(opts), {
457
+ wrapper: createWrapper("local", adapter),
458
+ });
459
+
460
+ await act(async () => {
461
+ await result.current.submit("Hello");
462
+ });
463
+
464
+ expect(adapter.onSessionOpened).toHaveBeenCalledWith("sess-new");
465
+ expect(adapter.onSessionClosed).toHaveBeenCalledWith("sess-new");
466
+ expect(result.current.submitError).not.toBeNull();
467
+ expect(opts.onError).toHaveBeenCalled();
468
+ });
469
+ });
470
+
395
471
  describe("submit while default agent is loading", () => {
396
472
  it("awaits default agent and creates session when fetch resolves", async () => {
397
473
  const resolvedAgent = { status: { defaultInstanceId: "awaited-inst" } };
@@ -12,6 +12,9 @@ import { SessionSchema, type Session } from "@stigmer/protos/ai/stigmer/agentic/
12
12
  import { ApiResourceMetadataSchema } from "@stigmer/protos/ai/stigmer/commons/apiresource/metadata_pb";
13
13
  import type { Stigmer } from "@stigmer/sdk";
14
14
  import { StigmerContext } from "../../context";
15
+ import { ExecutionTargetContext } from "../../execution-target-context";
16
+ import { RunnerAdapterContext } from "../../runner-adapter";
17
+ import type { RunnerAdapter } from "../../runner-adapter";
15
18
  import { useSessionConversation } from "../useSessionConversation";
16
19
 
17
20
  function makeSession(id: string): Session {
@@ -356,3 +359,89 @@ describe("useSessionConversation", () => {
356
359
  );
357
360
  });
358
361
  });
362
+
363
+ describe("useSessionConversation — local runner worker lifecycle", () => {
364
+ let methods: MockMethods;
365
+ let mockStigmer: Stigmer;
366
+ let stream: ReturnType<typeof createControllableStream<AgentExecution>>;
367
+
368
+ function createMockAdapter(): RunnerAdapter & {
369
+ onSessionOpened: ReturnType<typeof vi.fn>;
370
+ onSessionClosed: ReturnType<typeof vi.fn>;
371
+ onWorkflowExecutionCreated: ReturnType<typeof vi.fn>;
372
+ onWorkflowExecutionTerminated: ReturnType<typeof vi.fn>;
373
+ } {
374
+ return {
375
+ onSessionOpened: vi.fn().mockResolvedValue(undefined),
376
+ onSessionClosed: vi.fn().mockResolvedValue(undefined),
377
+ onWorkflowExecutionCreated: vi.fn().mockResolvedValue(undefined),
378
+ onWorkflowExecutionTerminated: vi.fn().mockResolvedValue(undefined),
379
+ };
380
+ }
381
+
382
+ function localWrapper(client: Stigmer, adapter: RunnerAdapter) {
383
+ return function Wrapper({ children }: { children: ReactNode }) {
384
+ return (
385
+ <ExecutionTargetContext.Provider value="local">
386
+ <RunnerAdapterContext.Provider value={adapter}>
387
+ <StigmerContext.Provider value={client}>
388
+ {children}
389
+ </StigmerContext.Provider>
390
+ </RunnerAdapterContext.Provider>
391
+ </ExecutionTargetContext.Provider>
392
+ );
393
+ };
394
+ }
395
+
396
+ beforeEach(() => {
397
+ stream = createControllableStream<AgentExecution>();
398
+ methods = {
399
+ sessionGet: vi.fn().mockResolvedValue(makeSession("session-1")),
400
+ listBySession: vi.fn().mockResolvedValue({ entries: [] }),
401
+ executionCreate: vi.fn(),
402
+ subscribe: vi.fn().mockReturnValue(stream.generator),
403
+ submitApproval: vi.fn().mockResolvedValue({}),
404
+ };
405
+ mockStigmer = createMockStigmer(methods);
406
+ });
407
+
408
+ it("attaches the worker once when a local session opens and detaches on close", async () => {
409
+ const adapter = createMockAdapter();
410
+ const { unmount } = renderHook(
411
+ () => useSessionConversation("session-1", "org"),
412
+ { wrapper: localWrapper(mockStigmer, adapter) },
413
+ );
414
+
415
+ // The session loads asynchronously; the worker attaches once loaded.
416
+ await waitFor(() => {
417
+ expect(adapter.onSessionOpened).toHaveBeenCalledWith("session-1");
418
+ });
419
+ expect(adapter.onSessionOpened).toHaveBeenCalledTimes(1);
420
+ expect(adapter.onSessionClosed).not.toHaveBeenCalled();
421
+
422
+ unmount();
423
+
424
+ expect(adapter.onSessionClosed).toHaveBeenCalledTimes(1);
425
+ expect(adapter.onSessionClosed).toHaveBeenCalledWith("session-1");
426
+ });
427
+
428
+ it("does not attach when no adapter is configured", async () => {
429
+ // No adapter in the tree → no-op. Just verify the conversation still loads.
430
+ const { result } = renderHook(
431
+ () => useSessionConversation("session-1", "org"),
432
+ {
433
+ wrapper: function Wrapper({ children }: { children: ReactNode }) {
434
+ return (
435
+ <StigmerContext.Provider value={mockStigmer}>
436
+ {children}
437
+ </StigmerContext.Provider>
438
+ );
439
+ },
440
+ },
441
+ );
442
+
443
+ await waitFor(() => {
444
+ expect(result.current.session).not.toBeNull();
445
+ });
446
+ });
447
+ });
@@ -0,0 +1,149 @@
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
2
+ import { renderHook, act } from "@testing-library/react";
3
+ import { ApprovalAction } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
4
+
5
+ // ---------------------------------------------------------------------------
6
+ // Mocks — useSessionPageFlow composes many hooks; we stub them to isolate the
7
+ // session-scoped auto-approve behavior (gate sets it, follow-ups carry it,
8
+ // "Turn off" reverts it).
9
+ // ---------------------------------------------------------------------------
10
+
11
+ const mockSubmitApproval = vi.fn<(t: string, a: ApprovalAction, c?: string) => Promise<void>>();
12
+ const mockSendFollowUp = vi.fn();
13
+
14
+ const mockConv = {
15
+ session: { spec: {} },
16
+ isLoading: false,
17
+ completedExecutions: [] as unknown[],
18
+ activeStreamExecution: null,
19
+ workspaceEntries: [] as unknown[],
20
+ submitApproval: mockSubmitApproval,
21
+ sendFollowUp: mockSendFollowUp,
22
+ };
23
+ vi.mock("../useSessionConversation", () => ({
24
+ useSessionConversation: () => mockConv,
25
+ }));
26
+
27
+ vi.mock("../../hooks", () => ({
28
+ useStigmer: () => ({ agent: { getByReference: vi.fn() } }),
29
+ }));
30
+
31
+ vi.mock("../../agent", () => ({
32
+ useDefaultAgent: () => ({ agent: null, isLoading: false, error: null }),
33
+ }));
34
+
35
+ const mockWorkspace = {
36
+ entries: [],
37
+ hasEntries: false,
38
+ toInput: vi.fn().mockReturnValue([]),
39
+ addGitRepo: vi.fn(),
40
+ addLocalPath: vi.fn(),
41
+ removeEntry: vi.fn(),
42
+ clear: vi.fn(),
43
+ };
44
+ vi.mock("../../workspace", () => ({
45
+ useWorkspaceEntries: () => mockWorkspace,
46
+ }));
47
+
48
+ const mockSessionVariables = {
49
+ variables: [],
50
+ isEmpty: true,
51
+ clear: vi.fn(),
52
+ };
53
+ vi.mock("../../execution/useSessionVariables", () => ({
54
+ useSessionVariables: () => mockSessionVariables,
55
+ }));
56
+
57
+ vi.mock("../usePersistedModel", () => ({
58
+ usePersistedModel: () => ["model-x", vi.fn()] as const,
59
+ }));
60
+
61
+ vi.mock("../useAgentRefFromSession", () => ({
62
+ useAgentRefFromSession: () => ({ agentRef: null }),
63
+ }));
64
+
65
+ import { useSessionPageFlow } from "../useSessionPageFlow";
66
+
67
+ const OPTS = { sessionId: "ses_1", org: "acme" };
68
+
69
+ describe("useSessionPageFlow — gate-driven auto-approve", () => {
70
+ beforeEach(() => {
71
+ mockSubmitApproval.mockResolvedValue(undefined);
72
+ });
73
+ afterEach(() => {
74
+ vi.clearAllMocks();
75
+ });
76
+
77
+ it("defaults autoApproveAll to false", () => {
78
+ const { result } = renderHook(() => useSessionPageFlow(OPTS));
79
+ expect(result.current.autoApproveAll).toBe(false);
80
+ });
81
+
82
+ it("flips autoApproveAll when the gate decision is APPROVE_ALL", async () => {
83
+ const { result } = renderHook(() => useSessionPageFlow(OPTS));
84
+
85
+ await act(async () => {
86
+ await result.current.submitApproval("tc1", ApprovalAction.APPROVE_ALL);
87
+ });
88
+
89
+ expect(result.current.autoApproveAll).toBe(true);
90
+ // Still delegates to the underlying conversation submit.
91
+ expect(mockSubmitApproval).toHaveBeenCalledWith("tc1", ApprovalAction.APPROVE_ALL, undefined);
92
+ });
93
+
94
+ it("does NOT flip autoApproveAll for a plain APPROVE", async () => {
95
+ const { result } = renderHook(() => useSessionPageFlow(OPTS));
96
+
97
+ await act(async () => {
98
+ await result.current.submitApproval("tc1", ApprovalAction.APPROVE);
99
+ });
100
+
101
+ expect(result.current.autoApproveAll).toBe(false);
102
+ });
103
+
104
+ it("carries autoApproveAll into follow-up submissions once enabled", async () => {
105
+ const { result } = renderHook(() => useSessionPageFlow(OPTS));
106
+
107
+ await act(async () => {
108
+ await result.current.submitApproval("tc1", ApprovalAction.APPROVE_ALL);
109
+ });
110
+ await act(async () => {
111
+ await result.current.handleSubmit("next message");
112
+ });
113
+
114
+ expect(mockSendFollowUp).toHaveBeenCalledTimes(1);
115
+ const followUpOpts = mockSendFollowUp.mock.calls[0][1];
116
+ expect(followUpOpts.autoApproveAll).toBe(true);
117
+ });
118
+
119
+ it("does not carry autoApproveAll before any APPROVE_ALL decision", async () => {
120
+ const { result } = renderHook(() => useSessionPageFlow(OPTS));
121
+
122
+ await act(async () => {
123
+ await result.current.handleSubmit("first message");
124
+ });
125
+
126
+ const followUpOpts = mockSendFollowUp.mock.calls[0][1];
127
+ expect(followUpOpts.autoApproveAll).toBeUndefined();
128
+ });
129
+
130
+ it("reverts via setAutoApproveAll(false) so follow-ups stop carrying it", async () => {
131
+ const { result } = renderHook(() => useSessionPageFlow(OPTS));
132
+
133
+ await act(async () => {
134
+ await result.current.submitApproval("tc1", ApprovalAction.APPROVE_ALL);
135
+ });
136
+ expect(result.current.autoApproveAll).toBe(true);
137
+
138
+ act(() => {
139
+ result.current.setAutoApproveAll(false);
140
+ });
141
+ expect(result.current.autoApproveAll).toBe(false);
142
+
143
+ await act(async () => {
144
+ await result.current.handleSubmit("after turn off");
145
+ });
146
+ const followUpOpts = mockSendFollowUp.mock.calls.at(-1)?.[1];
147
+ expect(followUpOpts.autoApproveAll).toBeUndefined();
148
+ });
149
+ });
@@ -12,7 +12,6 @@ import { toError } from "../internal/toError";
12
12
  import { toProtoHarness, type HarnessOption } from "../models/harness";
13
13
  import { toProtoExecutionTarget, type ExecutionTargetOption } from "./execution-target";
14
14
  import { useExecutionTarget } from "../execution-target-context";
15
- import { useRunnerAdapter } from "../runner-adapter";
16
15
 
17
16
  /** Shared fields present in both variants of {@link CreateSessionInput}. */
18
17
  export interface SharedSessionFields {
@@ -130,7 +129,6 @@ export interface UseCreateSessionReturn {
130
129
  export function useCreateSession(): UseCreateSessionReturn {
131
130
  const stigmer = useStigmer();
132
131
  const contextTarget = useExecutionTarget();
133
- const adapter = useRunnerAdapter();
134
132
  const [isCreating, setIsCreating] = useState(false);
135
133
  const [error, setError] = useState<Error | null>(null);
136
134
 
@@ -183,10 +181,9 @@ export function useCreateSession(): UseCreateSessionReturn {
183
181
 
184
182
  const sessionId = session.metadata!.id;
185
183
 
186
- if (adapter && resolvedTarget === "local") {
187
- await adapter.onSessionCreated(sessionId);
188
- }
189
-
184
+ // Worker lifecycle is owned by the session view (useSessionConversation
185
+ // attaches on open / detaches on close). The new-session flow attaches
186
+ // eagerly for the first execution; creation alone needs no worker.
190
187
  return { sessionId };
191
188
  } catch (err) {
192
189
  setError(toError(err));
@@ -195,7 +192,7 @@ export function useCreateSession(): UseCreateSessionReturn {
195
192
  setIsCreating(false);
196
193
  }
197
194
  },
198
- [stigmer, contextTarget, adapter],
195
+ [stigmer, contextTarget],
199
196
  );
200
197
 
201
198
  return { create, isCreating, error, clearError };
@@ -0,0 +1,73 @@
1
+ "use client";
2
+
3
+ import { useEffect, useMemo } from "react";
4
+ import type { Session } from "@stigmer/protos/ai/stigmer/agentic/session/v1/api_pb";
5
+ import { ExecutionTarget } from "@stigmer/protos/ai/stigmer/agentic/session/v1/enum_pb";
6
+ import { useRunnerAdapter } from "../runner-adapter";
7
+ import { useExecutionTarget } from "../execution-target-context";
8
+ import { fromProtoExecutionTarget } from "./execution-target";
9
+
10
+ /**
11
+ * Drives the local runner worker lifecycle for an open session.
12
+ *
13
+ * A `Session` is a long-lived, multi-turn conversation with **no terminal
14
+ * phase** — its runner worker must keep polling the session task queue for as
15
+ * long as the session is open, because `sendFollowUp` creates new executions
16
+ * without re-attaching a worker. The lifecycle is therefore
17
+ * **attach-on-open / detach-on-close**: attach when the session is opened
18
+ * (this hook mounts with a loaded, local session and an adapter present),
19
+ * detach when it is closed (unmount or `sessionId` change). This also closes
20
+ * the "re-opening an existing session leaves its task queue without a poller"
21
+ * gap that previously made follow-ups silently hang.
22
+ *
23
+ * Wired once from {@link useSessionConversation} so every consumer — web,
24
+ * desktop, Ink/terminal, and custom headless hosts — gets the behavior for
25
+ * free. It is a no-op unless a `runnerAdapter` is configured **and** the
26
+ * session resolves to local execution (cloud sessions are server-provisioned).
27
+ *
28
+ * The effect depends only on stable primitives (`adapter`, `sessionId`, and
29
+ * the derived `effectiveTarget` string) and **never on the `session` object**.
30
+ * `useSessionConversation` refetches the session frequently; keying the effect
31
+ * on the object would tear down and restart the worker on every refetch
32
+ * (DD-010 / reference-stability). `executionTarget` is immutable after the
33
+ * first execution, so the derived string stays stable across refetches.
34
+ *
35
+ * @param sessionId - The session being viewed, or `null` to skip.
36
+ * @param session - The loaded session, or `null` while loading. The worker is
37
+ * not attached until the session loads, so the decision uses the session's
38
+ * own (authoritative) execution target rather than the provider default.
39
+ */
40
+ export function useLocalSessionWorker(
41
+ sessionId: string | null,
42
+ session: Session | null,
43
+ ): void {
44
+ const adapter = useRunnerAdapter();
45
+ const contextTarget = useExecutionTarget();
46
+
47
+ // Resolve the session's effective execution target as a stable primitive.
48
+ // `undefined` until the session loads — so we never attach a local worker
49
+ // before we know whether the session actually runs locally (which would
50
+ // spuriously start a worker for a cloud session opened in a local-default
51
+ // app). When the spec is UNSPECIFIED, fall back to the provider target.
52
+ const isLoaded = session != null;
53
+ const specTarget = session?.spec?.executionTarget;
54
+ const effectiveTarget = useMemo(() => {
55
+ if (!isLoaded) return undefined;
56
+ return (
57
+ fromProtoExecutionTarget(specTarget ?? ExecutionTarget.UNSPECIFIED) ??
58
+ contextTarget
59
+ );
60
+ }, [isLoaded, specTarget, contextTarget]);
61
+
62
+ useEffect(() => {
63
+ if (!adapter || !sessionId || effectiveTarget !== "local") return;
64
+
65
+ // Fire-and-forget: a runner-start failure must not crash the session view.
66
+ // The host adapter's add/remove are idempotent, so React's cleanup-driven
67
+ // detach-old/attach-new on `sessionId` change is safe.
68
+ adapter.onSessionOpened(sessionId).catch(() => {});
69
+ return () => {
70
+ adapter.onSessionClosed(sessionId).catch(() => {});
71
+ };
72
+ }, [adapter, sessionId, effectiveTarget]);
73
+ }
@@ -15,6 +15,7 @@ import { useCreateSession } from "./useCreateSession";
15
15
  import { useCreateAgentExecution } from "../execution/useCreateAgentExecution";
16
16
  import type { ExecutionTargetOption } from "./execution-target";
17
17
  import { useExecutionTarget } from "../execution-target-context";
18
+ import { useRunnerAdapter } from "../runner-adapter";
18
19
 
19
20
  const DEFAULT_AGENT_TIMEOUT_MS = 10_000;
20
21
 
@@ -160,6 +161,7 @@ export function useNewSessionFlow(
160
161
  const { org, onSessionCreated, onError } = options;
161
162
  const contextTarget = useExecutionTarget();
162
163
  const executionTarget = options.executionTarget ?? contextTarget;
164
+ const adapter = useRunnerAdapter();
163
165
 
164
166
  const [harness, setHarnessRaw] = useState<HarnessOption>(() => {
165
167
  if (typeof window === "undefined") return DEFAULT_HARNESS;
@@ -306,7 +308,26 @@ export function useNewSessionFlow(
306
308
  }));
307
309
  }
308
310
 
309
- await createExecution({ ...executionFields, sessionId });
311
+ // Local execution: attach the session's runner worker before creating
312
+ // the first execution. The session view (useSessionConversation) owns
313
+ // the steady-state lifecycle, but it is not mounted yet — navigation
314
+ // happens after onSessionCreated below — so without this eager attach
315
+ // the first execution would have no poller until the view mounts.
316
+ if (adapter && executionTarget === "local") {
317
+ await adapter.onSessionOpened(sessionId);
318
+ }
319
+
320
+ try {
321
+ await createExecution({ ...executionFields, sessionId });
322
+ } catch (err) {
323
+ // The first execution failed and the session view will not mount,
324
+ // so detach the worker we just attached to avoid leaking it.
325
+ if (adapter && executionTarget === "local") {
326
+ adapter.onSessionClosed(sessionId).catch(() => {});
327
+ }
328
+ throw err;
329
+ }
330
+
310
331
  sessionVariables.clear();
311
332
  onSessionCreated(sessionId);
312
333
  } catch (err) {
@@ -322,6 +343,7 @@ export function useNewSessionFlow(
322
343
  org,
323
344
  harness,
324
345
  executionTarget,
346
+ adapter,
325
347
  validModelId,
326
348
  workspace,
327
349
  mcpServerUsages,
@@ -24,6 +24,7 @@ import { useSubmitApproval } from "../execution/useSubmitApproval";
24
24
  import { useSession } from "./useSession";
25
25
  import { useSessionExecutions } from "./useSessionExecutions";
26
26
  import { useUpdateSession } from "./useUpdateSession";
27
+ import { useLocalSessionWorker } from "./useLocalSessionWorker";
27
28
  import {
28
29
  specWorkspaceToInput,
29
30
  specMcpUsagesToInput,
@@ -83,6 +84,12 @@ export interface SendFollowUpOptions {
83
84
  * - `"plan"`: read-only analysis, no file mutations.
84
85
  */
85
86
  readonly interactionMode?: "agent" | "plan";
87
+ /**
88
+ * Auto-approve every tool call for this execution (bypass the HITL gate).
89
+ *
90
+ * @see {@link CreateAgentExecutionInput.autoApproveAll}
91
+ */
92
+ readonly autoApproveAll?: boolean;
86
93
  /**
87
94
  * Workspace-relative file paths the user wants the agent to focus on.
88
95
  *
@@ -191,6 +198,12 @@ export interface UseSessionConversationReturn {
191
198
  * Platform builders get the complete conversation loop without
192
199
  * reimplementing orchestration logic.
193
200
  *
201
+ * For local execution, this hook also owns the session's runner worker
202
+ * lifecycle: while the session is open it keeps a worker polling the
203
+ * session task queue, and it tears the worker down on close. This is a
204
+ * no-op unless a `runnerAdapter` is configured and the session runs
205
+ * locally, so it is safe in every environment.
206
+ *
194
207
  * @param sessionId - Session to display and converse in. Pass `null` to skip.
195
208
  * @param org - Organization slug for creating follow-up executions.
196
209
  *
@@ -251,6 +264,10 @@ export function useSessionConversation(
251
264
  clearError: clearApprovalError,
252
265
  } = useSubmitApproval();
253
266
 
267
+ // Local execution: attach the session's runner worker while it is open and
268
+ // detach it on close. No-op for cloud sessions or when no adapter is set.
269
+ useLocalSessionWorker(sessionId, session);
270
+
254
271
  const [pendingExecutionId, setPendingExecutionId] = useState<string | null>(
255
272
  null,
256
273
  );
@@ -382,6 +399,7 @@ export function useSessionConversation(
382
399
  runtimeEnv: options?.runtimeEnv,
383
400
  attachments: options?.attachments,
384
401
  interactionMode: options?.interactionMode,
402
+ autoApproveAll: options?.autoApproveAll,
385
403
  workspaceFileRefs: options?.workspaceFileRefs,
386
404
  });
387
405
  setPendingExecutionId(result.executionId);
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
4
4
  import type { McpServerUsageInput, ResourceRef } from "@stigmer/sdk";
5
+ import { ApprovalAction } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
5
6
  import type { AgentResolution } from "../agent";
6
7
  import { useDefaultAgent } from "../agent";
7
8
  import { useStigmer } from "../hooks";
@@ -87,6 +88,31 @@ export interface UseSessionPageFlowReturn {
87
88
  /** Session variables (per-execution secrets) manager. */
88
89
  readonly sessionVariables: UseSessionVariablesReturn;
89
90
 
91
+ /**
92
+ * Session-scoped "auto-approve tool calls" preference.
93
+ *
94
+ * `false` by default. Flipped to `true` when the user chooses
95
+ * "Approve & don't ask again" at an approval gate (see {@link submitApproval}),
96
+ * and carried into every subsequent follow-up via {@link handleSubmit}. Held in
97
+ * memory only — reset on reload / new session, never persisted server-side.
98
+ */
99
+ readonly autoApproveAll: boolean;
100
+ /**
101
+ * Toggle the session-scoped auto-approve preference. The reversible "Turn off"
102
+ * control in the UI calls this with `false`.
103
+ */
104
+ readonly setAutoApproveAll: (value: boolean) => void;
105
+
106
+ /**
107
+ * Submit an approval decision for a pending tool call.
108
+ *
109
+ * Wraps {@link UseSessionConversationReturn.submitApproval}: when the action is
110
+ * `APPROVAL_ACTION_APPROVE_ALL`, it also flips the session-scoped
111
+ * {@link autoApproveAll} preference so future follow-ups skip the gate. The
112
+ * server independently auto-approves the rest of the current execution.
113
+ */
114
+ readonly submitApproval: UseSessionConversationReturn["submitApproval"];
115
+
90
116
  /**
91
117
  * Submit a follow-up message. Handles agent override resolution
92
118
  * (if the user changed the agent mid-session) and delegates to
@@ -186,6 +212,24 @@ export function useSessionPageFlow(
186
212
  const [skillRefs, setSkillRefs] = useState<ResourceRef[]>([]);
187
213
  const initialSyncDone = useRef(false);
188
214
 
215
+ // Session-scoped auto-approve, set at the approval gate (not pre-armed in the
216
+ // composer). Lives only in memory for the life of this page — reset on reload.
217
+ const [autoApproveAll, setAutoApproveAll] = useState(false);
218
+
219
+ const submitApproval = useCallback<UseSessionConversationReturn["submitApproval"]>(
220
+ async (toolCallId, action, comment) => {
221
+ // "Approve & don't ask again": remember the choice for the rest of this
222
+ // live session so future follow-ups carry auto_approve_all. The control
223
+ // plane separately resolves the current execution's remaining gates and
224
+ // the runner skips the gate for the rest of that run.
225
+ if (action === ApprovalAction.APPROVE_ALL) {
226
+ setAutoApproveAll(true);
227
+ }
228
+ await conv.submitApproval(toolCallId, action, comment);
229
+ },
230
+ [conv.submitApproval],
231
+ );
232
+
189
233
  // -------------------------------------------------------------------------
190
234
  // Agent — derive from session, allow mid-session changes
191
235
  // -------------------------------------------------------------------------
@@ -283,12 +327,15 @@ export function useSessionPageFlow(
283
327
  runtimeEnv: context?.runtimeEnv,
284
328
  attachments: context?.attachments,
285
329
  interactionMode: context?.interactionMode,
330
+ // Sourced from the session-scoped preference set at the approval gate,
331
+ // not from the composer (the pre-arm toggle was removed).
332
+ autoApproveAll: autoApproveAll || undefined,
286
333
  workspaceFileRefs: context?.workspaceFileRefs,
287
334
  });
288
335
 
289
336
  sessionVariables.clear();
290
337
  },
291
- [conv.sendFollowUp, modelId, workspace, mcpServerUsages, skillRefs, sessionVariables.clear, resolution, agentRef, sessionInstanceId, stigmer],
338
+ [conv.sendFollowUp, modelId, workspace, mcpServerUsages, skillRefs, sessionVariables.clear, resolution, agentRef, sessionInstanceId, stigmer, autoApproveAll],
292
339
  );
293
340
 
294
341
  // -------------------------------------------------------------------------
@@ -333,6 +380,9 @@ export function useSessionPageFlow(
333
380
  setSkillRefs,
334
381
  workspace,
335
382
  sessionVariables,
383
+ autoApproveAll,
384
+ setAutoApproveAll,
385
+ submitApproval,
336
386
  handleSubmit,
337
387
  displayExecution,
338
388
  allExecutions,
@@ -48,8 +48,8 @@ function makeMockAdapter(): RunnerAdapter & { calls: string[][] } {
48
48
  const calls: string[][] = [];
49
49
  return {
50
50
  calls,
51
- onSessionCreated: vi.fn(async (id: string) => { calls.push(["onSessionCreated", id]); }),
52
- onSessionTerminated: vi.fn(async (id: string) => { calls.push(["onSessionTerminated", id]); }),
51
+ onSessionOpened: vi.fn(async (id: string) => { calls.push(["onSessionOpened", id]); }),
52
+ onSessionClosed: vi.fn(async (id: string) => { calls.push(["onSessionClosed", id]); }),
53
53
  onWorkflowExecutionCreated: vi.fn(async (id: string) => { calls.push(["onWorkflowExecutionCreated", id]); }),
54
54
  onWorkflowExecutionTerminated: vi.fn(async (id: string) => { calls.push(["onWorkflowExecutionTerminated", id]); }),
55
55
  };