@stigmer/react 2.0.1 → 3.0.1

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
package/src/index.ts CHANGED
@@ -4,6 +4,9 @@ export { StigmerContext } from "./context";
4
4
 
5
5
  // Runner adapter
6
6
  export { type RunnerAdapter, useRunnerAdapter } from "./runner-adapter";
7
+ // Construction helper lives in @stigmer/sdk (framework-agnostic); re-exported
8
+ // here so React embedders import it alongside the adapter interface.
9
+ export { type RunnerWorkerHost, createRunnerAdapter } from "@stigmer/sdk";
7
10
 
8
11
  // Fetch cache
9
12
  export { FetchCacheProvider } from "./internal/FetchCacheProvider";
@@ -193,6 +196,15 @@ export {
193
196
  formatTokenCount,
194
197
  ToolCallGroup,
195
198
  ToolCallDetail,
199
+ ResultView,
200
+ summarizeResultView,
201
+ useToolPresentation,
202
+ registerToolPresenter,
203
+ getToolPresenter,
204
+ resolveToolCategory,
205
+ resolveToolCategoryFromCall,
206
+ resolveToolCategoryFromKind,
207
+ toolKindToCategoryInfo,
196
208
  McpToolDetail,
197
209
  parseMcpResult,
198
210
  formatDuration,
@@ -252,6 +264,9 @@ export type {
252
264
  UseContextWindowReturn,
253
265
  ToolCallGroupProps,
254
266
  ToolCallDetailProps,
267
+ ResultViewProps,
268
+ ToolPresentation,
269
+ ToolPresenter,
255
270
  McpToolDetailProps,
256
271
  McpArgsViewProps,
257
272
  McpMetadataRowProps,
@@ -827,6 +842,8 @@ export {
827
842
  isSkillPackage,
828
843
  detectSkillPackage,
829
844
  useDetectSkillPackage,
845
+ isPlanArtifact,
846
+ findPlanArtifact,
830
847
  parseResourceYaml,
831
848
  serializeAgentYaml,
832
849
  serializeMcpServerYaml,
@@ -919,19 +936,33 @@ export type {
919
936
  DateRangePreset,
920
937
  } from "./usage";
921
938
 
922
- // Agent Instance — data hooks, list hook, personal convenience hook, and behavior hook
939
+ // Agent Instance — data hooks, mutation hooks, management components, and behavior hook
923
940
  export {
924
941
  useAgentInstance,
925
942
  useAgentInstanceList,
943
+ useAgentInstances,
926
944
  usePersonalAgentInstance,
927
945
  useCreateAgentInstance,
946
+ useUpdateAgentInstance,
947
+ useDeleteAgentInstance,
948
+ AgentInstanceList,
949
+ AgentInstanceEmptyState,
950
+ CreateAgentInstanceDialog,
951
+ AgentInstanceDetailPanel,
928
952
  } from "./agent-instance";
929
953
  export type {
930
954
  UseAgentInstanceReturn,
931
955
  UseAgentInstanceListReturn,
956
+ UseAgentInstancesReturn,
932
957
  GetOrCreatePersonalInstanceInput,
933
958
  UsePersonalAgentInstanceReturn,
934
959
  UseCreateAgentInstanceReturn,
960
+ UseUpdateAgentInstanceReturn,
961
+ UseDeleteAgentInstanceReturn,
962
+ AgentInstanceListProps,
963
+ AgentInstanceEmptyStateProps,
964
+ CreateAgentInstanceDialogProps,
965
+ AgentInstanceDetailPanelProps,
935
966
  } from "./agent-instance";
936
967
 
937
968
  // Tabs — accessible tabbed panel primitive
@@ -0,0 +1,75 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { create } from "@bufbuild/protobuf";
3
+ import {
4
+ AgentExecutionSchema,
5
+ AgentExecutionStatusSchema,
6
+ } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
7
+ import { ExecutionArtifactSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/artifact_pb";
8
+ import { ExecutionArtifactKind } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
9
+ import {
10
+ isPlanArtifact,
11
+ findPlanArtifact,
12
+ PLAN_ARTIFACT_NAME,
13
+ } from "../detect-plan-artifact";
14
+
15
+ function artifact(opts: { name: string; kind?: ExecutionArtifactKind; storageKey?: string }) {
16
+ return create(ExecutionArtifactSchema, {
17
+ name: opts.name,
18
+ kind: opts.kind ?? ExecutionArtifactKind.FILE,
19
+ storageKey: opts.storageKey ?? `artifacts/exec/${opts.name}`,
20
+ });
21
+ }
22
+
23
+ function executionWith(...artifacts: ReturnType<typeof artifact>[]) {
24
+ return create(AgentExecutionSchema, {
25
+ status: create(AgentExecutionStatusSchema, { artifacts }),
26
+ });
27
+ }
28
+
29
+ describe("isPlanArtifact", () => {
30
+ it("is true for a FILE artifact named plan.md", () => {
31
+ expect(isPlanArtifact(artifact({ name: PLAN_ARTIFACT_NAME }))).toBe(true);
32
+ });
33
+
34
+ it("is false for a directory named plan.md", () => {
35
+ expect(
36
+ isPlanArtifact(artifact({ name: "plan.md", kind: ExecutionArtifactKind.DIRECTORY })),
37
+ ).toBe(false);
38
+ });
39
+
40
+ it("is false for other file names", () => {
41
+ expect(isPlanArtifact(artifact({ name: "report.md" }))).toBe(false);
42
+ expect(isPlanArtifact(artifact({ name: "plan.txt" }))).toBe(false);
43
+ });
44
+ });
45
+
46
+ describe("findPlanArtifact", () => {
47
+ it("returns undefined for null/empty executions", () => {
48
+ expect(findPlanArtifact(null)).toBeUndefined();
49
+ expect(findPlanArtifact(undefined)).toBeUndefined();
50
+ expect(findPlanArtifact(executionWith())).toBeUndefined();
51
+ });
52
+
53
+ it("finds the plan.md among other artifacts", () => {
54
+ const exec = executionWith(
55
+ artifact({ name: "notes.txt" }),
56
+ artifact({ name: PLAN_ARTIFACT_NAME, storageKey: "artifacts/exec/plan.md" }),
57
+ artifact({ name: "data.json" }),
58
+ );
59
+ const plan = findPlanArtifact(exec);
60
+ expect(plan?.name).toBe(PLAN_ARTIFACT_NAME);
61
+ expect(plan?.storageKey).toBe("artifacts/exec/plan.md");
62
+ });
63
+
64
+ it("returns the latest plan.md when more than one is present", () => {
65
+ const exec = executionWith(
66
+ artifact({ name: PLAN_ARTIFACT_NAME, storageKey: "artifacts/exec/plan.md#old" }),
67
+ artifact({ name: PLAN_ARTIFACT_NAME, storageKey: "artifacts/exec/plan.md#new" }),
68
+ );
69
+ expect(findPlanArtifact(exec)?.storageKey).toBe("artifacts/exec/plan.md#new");
70
+ });
71
+
72
+ it("returns undefined when no plan artifact exists", () => {
73
+ expect(findPlanArtifact(executionWith(artifact({ name: "report.md" })))).toBeUndefined();
74
+ });
75
+ });
@@ -0,0 +1,43 @@
1
+ import type { AgentExecution } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
2
+ import type { ExecutionArtifact } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/artifact_pb";
3
+ import { ExecutionArtifactKind } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
4
+
5
+ /**
6
+ * Canonical filename a Plan-mode execution publishes its plan under. Kept in
7
+ * sync with the runner's `publishPlanArtifact` (shared/plan-artifact.ts).
8
+ */
9
+ export const PLAN_ARTIFACT_NAME = "plan.md";
10
+
11
+ /**
12
+ * Returns `true` when an artifact is the published plan: a FILE artifact named
13
+ * `plan.md`.
14
+ *
15
+ * Detection is by convention — the same lightweight, content-free approach used
16
+ * for skill packages ({@link isSkillPackage}) — so the UI never needs an extra
17
+ * RPC to know a plan exists. The plan's text is fetched on demand via
18
+ * {@link useArtifactContent} only when the user expands the Plan card.
19
+ */
20
+ export function isPlanArtifact(artifact: ExecutionArtifact): boolean {
21
+ return (
22
+ artifact.kind === ExecutionArtifactKind.FILE &&
23
+ artifact.name === PLAN_ARTIFACT_NAME
24
+ );
25
+ }
26
+
27
+ /**
28
+ * Finds the plan artifact on a completed execution, or `undefined` when none
29
+ * was published (older executions, or a plan that failed to upload).
30
+ *
31
+ * Returns the latest `plan.md` if more than one is present — the runner
32
+ * replaces rather than appends, so this is defensive.
33
+ */
34
+ export function findPlanArtifact(
35
+ execution: AgentExecution | null | undefined,
36
+ ): ExecutionArtifact | undefined {
37
+ const artifacts = execution?.status?.artifacts;
38
+ if (!artifacts || artifacts.length === 0) return undefined;
39
+ for (let i = artifacts.length - 1; i >= 0; i--) {
40
+ if (isPlanArtifact(artifacts[i])) return artifacts[i];
41
+ }
42
+ return undefined;
43
+ }
@@ -24,6 +24,12 @@ export {
24
24
  } from "./detect-skill-package";
25
25
  export type { SkillPackageDetection } from "./detect-skill-package";
26
26
 
27
+ export {
28
+ isPlanArtifact,
29
+ findPlanArtifact,
30
+ PLAN_ARTIFACT_NAME,
31
+ } from "./detect-plan-artifact";
32
+
27
33
  export { useDetectSkillPackage } from "./useDetectSkillPackage";
28
34
  export type { UseDetectSkillPackageReturn } from "./useDetectSkillPackage";
29
35
 
package/src/provider.tsx CHANGED
@@ -56,9 +56,11 @@ export interface StigmerProviderProps {
56
56
  /**
57
57
  * Runner adapter for local execution lifecycle management.
58
58
  *
59
- * When `executionTarget` is `"local"`, SDK hooks automatically call
60
- * the adapter after session/execution creation and on terminal phase
61
- * detection. Cloud consumers omit this prop entirely.
59
+ * When `executionTarget` is `"local"`, SDK hooks automatically drive
60
+ * the adapter at the right lifecycle points: sessions on open/close
61
+ * (the session view attaches a worker while open and detaches on close)
62
+ * and workflow executions on create/terminal. Cloud consumers omit this
63
+ * prop entirely.
62
64
  *
63
65
  * Desktop apps provide a Tauri-based adapter; self-hosted customers
64
66
  * provide their own implementation of the {@link RunnerAdapter}
@@ -10,6 +10,13 @@ import { createContext, useContext } from "react";
10
10
  * the adapter at the appropriate lifecycle points. The consumer never
11
11
  * needs to know about runner management — it is handled transparently.
12
12
  *
13
+ * Sessions and workflow executions have different lifecycles. A session is
14
+ * a long-lived, multi-turn conversation with no terminal phase, so its
15
+ * worker is tied to whether the session is open (in use): `onSessionOpened`
16
+ * when the session viewer opens it, `onSessionClosed` when it closes. A
17
+ * workflow execution runs to a terminal phase, so its worker is tied to
18
+ * creation and completion.
19
+ *
13
20
  * Each environment provides its own implementation:
14
21
  * - Desktop app: wraps the embedded Tauri runner process
15
22
  * - CLI: wraps the daemon runner
@@ -17,10 +24,18 @@ import { createContext, useContext } from "react";
17
24
  * - Cloud: no adapter needed (server handles provisioning)
18
25
  */
19
26
  export interface RunnerAdapter {
20
- /** Called by SDK hooks after a session is created with executionTarget=LOCAL. */
21
- onSessionCreated(sessionId: string): Promise<void>;
22
- /** Called by SDK hooks when a session reaches a terminal phase. */
23
- onSessionTerminated(sessionId: string): Promise<void>;
27
+ /**
28
+ * Called by SDK hooks when a local session is opened (engaged). The
29
+ * adapter should ensure a runner worker is polling the session's task
30
+ * queue. Idempotent: may be called again for an already-open session
31
+ * (e.g. when the same session is re-opened).
32
+ */
33
+ onSessionOpened(sessionId: string): Promise<void>;
34
+ /**
35
+ * Called by SDK hooks when a local session is closed (no longer in use).
36
+ * The adapter should tear down the session's runner worker.
37
+ */
38
+ onSessionClosed(sessionId: string): Promise<void>;
24
39
  /** Called by SDK hooks after a workflow execution is created with executionTarget=LOCAL. */
25
40
  onWorkflowExecutionCreated(executionId: string): Promise<void>;
26
41
  /** Called by SDK hooks when a workflow execution reaches a terminal phase. */
@@ -46,6 +46,15 @@ export interface NewSessionViewerProps {
46
46
 
47
47
  /** Agent to auto-select on mount (used for draft flows). */
48
48
  readonly initialAgentRef?: ResourceRef;
49
+ /**
50
+ * Pre-bind the new session to a specific `AgentInstance` on mount.
51
+ *
52
+ * Requires `initialAgentRef`. When both are set, the session is created
53
+ * against this exact configured deployment (the env-collection flow is
54
+ * skipped because the instance already binds its environment). Powers the
55
+ * "Start session" action on the Agent detail page's Instances tab.
56
+ */
57
+ readonly initialInstanceId?: string;
49
58
  /** Files to auto-attach on mount (used for edit flows). */
50
59
  readonly initialAttachments?: File[];
51
60
 
@@ -114,6 +123,7 @@ export function NewSessionViewer({
114
123
  onBrowseLocalFolder,
115
124
  workspaceFileLister,
116
125
  initialAgentRef,
126
+ initialInstanceId,
117
127
  initialAttachments,
118
128
  heading = "What would you like to work on?",
119
129
  placeholder = "Describe what you need help with\u2026",
@@ -219,6 +229,7 @@ export function NewSessionViewer({
219
229
  onAgentRefChange={flow.setAgentRef}
220
230
  onAgentResolutionChange={flow.setResolution}
221
231
  initialAgentRef={initialAgentRef}
232
+ initialInstanceId={initialInstanceId}
222
233
  initialAttachments={initialAttachments}
223
234
  mcpServerUsages={flow.mcpServerUsages}
224
235
  onMcpServerUsagesChange={flow.setMcpServerUsages}
@@ -137,7 +137,12 @@ export function SessionViewer({
137
137
 
138
138
  const handleBuildFromPlan = useCallback(() => {
139
139
  setInteractionMode("agent");
140
- composerRef.current?.setMessage("Implement the plan above");
140
+ // Reference the plan explicitly (it is also published as plan.md) and direct
141
+ // the agent to act on it, rather than a bare "implement" that relies on the
142
+ // model re-reading its own prior message.
143
+ composerRef.current?.setMessage(
144
+ "Implement the plan above (saved as plan.md). Follow it step by step and make the changes it describes.",
145
+ );
141
146
  composerRef.current?.focus();
142
147
  }, []);
143
148
 
@@ -251,7 +256,7 @@ function ConversationColumn({
251
256
  executions={conv.completedExecutions}
252
257
  activeStreamExecution={conv.activeStreamExecution}
253
258
  pendingUserMessage={conv.pendingUserMessage}
254
- onApprovalSubmit={conv.submitApproval}
259
+ onApprovalSubmit={flow.submitApproval}
255
260
  submittingApprovalIds={conv.submittingApprovalIds}
256
261
  workspaceEntries={conv.workspaceEntries}
257
262
  sandboxWorkspaceRoot={flow.sandboxWorkspaceRoot}
@@ -269,6 +274,9 @@ function ConversationColumn({
269
274
  {(conv.sendError || conv.approvalError) && (
270
275
  <SendErrorBanner error={(conv.sendError ?? conv.approvalError)!} />
271
276
  )}
277
+ {flow.autoApproveAll && (
278
+ <AutoApproveIndicator onTurnOff={() => flow.setAutoApproveAll(false)} />
279
+ )}
272
280
  <SessionComposer
273
281
  ref={composerRef}
274
282
  onSubmit={flow.handleSubmit}
@@ -449,6 +457,33 @@ function SessionStarting() {
449
457
  );
450
458
  }
451
459
 
460
+ /**
461
+ * Low-weight, always-visible indicator shown while the session-scoped
462
+ * auto-approve preference is active. The "Turn off" control reverts the
463
+ * preference in one click — the safety affordance for "Approve & don't ask
464
+ * again". Nothing about approvals appears until the user opts in at a gate.
465
+ */
466
+ function AutoApproveIndicator({ onTurnOff }: { onTurnOff: () => void }) {
467
+ return (
468
+ <div
469
+ role="status"
470
+ className="flex items-center gap-2 border-t border-border-muted px-4 py-1.5 text-xs text-muted-foreground"
471
+ >
472
+ <ShieldCheckIcon />
473
+ <span className="min-w-0 flex-1 truncate">
474
+ Auto-approving tool calls for this session
475
+ </span>
476
+ <button
477
+ type="button"
478
+ onClick={onTurnOff}
479
+ className="shrink-0 rounded font-medium text-foreground underline-offset-2 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
480
+ >
481
+ Turn off
482
+ </button>
483
+ </div>
484
+ );
485
+ }
486
+
452
487
  function SendErrorBanner({ error }: { error: Error }) {
453
488
  if (isSecretFlowError(error)) {
454
489
  return <SecretFlowErrorGuide error={error} className="mx-4 my-2" />;
@@ -504,3 +539,12 @@ function LoaderIcon() {
504
539
  </svg>
505
540
  );
506
541
  }
542
+
543
+ function ShieldCheckIcon() {
544
+ return (
545
+ <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="shrink-0 text-success" aria-hidden="true">
546
+ <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" />
547
+ <path d="m9 12 2 2 4-4" />
548
+ </svg>
549
+ );
550
+ }
@@ -1,11 +1,9 @@
1
1
  import { describe, it, expect } from "vitest";
2
2
  import { create } from "@bufbuild/protobuf";
3
3
  import { timestampFromDate } from "@bufbuild/protobuf/wkt";
4
+ import { SessionSchema } from "@stigmer/protos/ai/stigmer/agentic/session/v1/api_pb";
4
5
  import {
5
- SessionSchema,
6
- SessionStatusSchema,
7
- } from "@stigmer/protos/ai/stigmer/agentic/session/v1/api_pb";
8
- import {
6
+ ApiResourceAuditStatusSchema,
9
7
  ApiResourceAuditSchema,
10
8
  ApiResourceAuditInfoSchema,
11
9
  } from "@stigmer/protos/ai/stigmer/commons/apiresource/status_pb";
@@ -20,7 +18,7 @@ function makeSession(date: Date | null) {
20
18
  auditInfo.createdAt = timestampFromDate(date);
21
19
  const audit = create(ApiResourceAuditSchema);
22
20
  audit.specAudit = auditInfo;
23
- const status = create(SessionStatusSchema);
21
+ const status = create(ApiResourceAuditStatusSchema);
24
22
  status.audit = audit;
25
23
  session.status = status;
26
24
  }
@@ -0,0 +1,194 @@
1
+ import { describe, it, expect, vi, beforeEach } from "vitest";
2
+ import { renderHook } from "@testing-library/react";
3
+ import type { ReactNode } 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 { ExecutionTargetContext } from "../../execution-target-context";
7
+ import { RunnerAdapterContext } from "../../runner-adapter";
8
+ import type { RunnerAdapter } from "../../runner-adapter";
9
+ import { useLocalSessionWorker } from "../useLocalSessionWorker";
10
+
11
+ function createMockAdapter(): RunnerAdapter & {
12
+ onSessionOpened: ReturnType<typeof vi.fn>;
13
+ onSessionClosed: ReturnType<typeof vi.fn>;
14
+ onWorkflowExecutionCreated: ReturnType<typeof vi.fn>;
15
+ onWorkflowExecutionTerminated: ReturnType<typeof vi.fn>;
16
+ } {
17
+ return {
18
+ onSessionOpened: vi.fn().mockResolvedValue(undefined),
19
+ onSessionClosed: vi.fn().mockResolvedValue(undefined),
20
+ onWorkflowExecutionCreated: vi.fn().mockResolvedValue(undefined),
21
+ onWorkflowExecutionTerminated: vi.fn().mockResolvedValue(undefined),
22
+ };
23
+ }
24
+
25
+ /** Build a minimal Session with a given execution target. */
26
+ function makeSession(target: ExecutionTarget): Session {
27
+ return { spec: { executionTarget: target } } as Session;
28
+ }
29
+
30
+ function wrapper(
31
+ adapter: RunnerAdapter | null,
32
+ contextTarget?: "local" | "cloud",
33
+ ) {
34
+ return function Wrapper({ children }: { children: ReactNode }) {
35
+ return (
36
+ <ExecutionTargetContext.Provider value={contextTarget}>
37
+ <RunnerAdapterContext.Provider value={adapter}>
38
+ {children}
39
+ </RunnerAdapterContext.Provider>
40
+ </ExecutionTargetContext.Provider>
41
+ );
42
+ };
43
+ }
44
+
45
+ describe("useLocalSessionWorker", () => {
46
+ beforeEach(() => {
47
+ vi.restoreAllMocks();
48
+ });
49
+
50
+ it("attaches the worker on mount for a loaded local session", () => {
51
+ const adapter = createMockAdapter();
52
+ renderHook(
53
+ () => useLocalSessionWorker("ses-1", makeSession(ExecutionTarget.LOCAL)),
54
+ { wrapper: wrapper(adapter, "local") },
55
+ );
56
+
57
+ expect(adapter.onSessionOpened).toHaveBeenCalledTimes(1);
58
+ expect(adapter.onSessionOpened).toHaveBeenCalledWith("ses-1");
59
+ expect(adapter.onSessionClosed).not.toHaveBeenCalled();
60
+ });
61
+
62
+ it("detaches the worker on unmount", () => {
63
+ const adapter = createMockAdapter();
64
+ const { unmount } = renderHook(
65
+ () => useLocalSessionWorker("ses-1", makeSession(ExecutionTarget.LOCAL)),
66
+ { wrapper: wrapper(adapter, "local") },
67
+ );
68
+
69
+ unmount();
70
+
71
+ expect(adapter.onSessionClosed).toHaveBeenCalledTimes(1);
72
+ expect(adapter.onSessionClosed).toHaveBeenCalledWith("ses-1");
73
+ });
74
+
75
+ it("is a no-op when no adapter is configured", () => {
76
+ // No adapter → nothing to assert beyond "does not throw".
77
+ expect(() =>
78
+ renderHook(
79
+ () => useLocalSessionWorker("ses-1", makeSession(ExecutionTarget.LOCAL)),
80
+ { wrapper: wrapper(null, "local") },
81
+ ),
82
+ ).not.toThrow();
83
+ });
84
+
85
+ it("does not attach for a cloud session", () => {
86
+ const adapter = createMockAdapter();
87
+ renderHook(
88
+ () => useLocalSessionWorker("ses-1", makeSession(ExecutionTarget.CLOUD)),
89
+ { wrapper: wrapper(adapter, "local") },
90
+ );
91
+
92
+ expect(adapter.onSessionOpened).not.toHaveBeenCalled();
93
+ });
94
+
95
+ it("does not attach until the session has loaded", () => {
96
+ const adapter = createMockAdapter();
97
+ const { rerender } = renderHook(
98
+ ({ session }: { session: Session | null }) =>
99
+ useLocalSessionWorker("ses-1", session),
100
+ {
101
+ wrapper: wrapper(adapter, "local"),
102
+ initialProps: { session: null } as { session: Session | null },
103
+ },
104
+ );
105
+
106
+ // Loading: target unknown → no attach yet.
107
+ expect(adapter.onSessionOpened).not.toHaveBeenCalled();
108
+
109
+ // Loaded as local → attaches now.
110
+ rerender({ session: makeSession(ExecutionTarget.LOCAL) });
111
+ expect(adapter.onSessionOpened).toHaveBeenCalledTimes(1);
112
+ });
113
+
114
+ it("falls back to the provider target when the session spec is unspecified", () => {
115
+ const adapter = createMockAdapter();
116
+ renderHook(
117
+ () =>
118
+ useLocalSessionWorker(
119
+ "ses-1",
120
+ makeSession(ExecutionTarget.UNSPECIFIED),
121
+ ),
122
+ { wrapper: wrapper(adapter, "local") },
123
+ );
124
+
125
+ expect(adapter.onSessionOpened).toHaveBeenCalledWith("ses-1");
126
+ });
127
+
128
+ it("does not attach when spec is unspecified and provider target is not local", () => {
129
+ const adapter = createMockAdapter();
130
+ renderHook(
131
+ () =>
132
+ useLocalSessionWorker(
133
+ "ses-1",
134
+ makeSession(ExecutionTarget.UNSPECIFIED),
135
+ ),
136
+ { wrapper: wrapper(adapter, "cloud") },
137
+ );
138
+
139
+ expect(adapter.onSessionOpened).not.toHaveBeenCalled();
140
+ });
141
+
142
+ it("detaches the old session and attaches the new one on sessionId change", () => {
143
+ const adapter = createMockAdapter();
144
+ const { rerender } = renderHook(
145
+ ({ sessionId }: { sessionId: string }) =>
146
+ useLocalSessionWorker(sessionId, makeSession(ExecutionTarget.LOCAL)),
147
+ { wrapper: wrapper(adapter, "local"), initialProps: { sessionId: "ses-1" } },
148
+ );
149
+
150
+ expect(adapter.onSessionOpened).toHaveBeenCalledWith("ses-1");
151
+
152
+ rerender({ sessionId: "ses-2" });
153
+
154
+ expect(adapter.onSessionClosed).toHaveBeenCalledWith("ses-1");
155
+ expect(adapter.onSessionOpened).toHaveBeenCalledWith("ses-2");
156
+ });
157
+
158
+ // DD-010 regression guard: useSessionConversation refetches the session
159
+ // constantly. A refetch that returns a new object with the same execution
160
+ // target must NOT thrash the runner (no extra open/close).
161
+ it("does not re-attach when a refetch returns a new session object with the same target", () => {
162
+ const adapter = createMockAdapter();
163
+ const { rerender } = renderHook(
164
+ ({ session }: { session: Session }) =>
165
+ useLocalSessionWorker("ses-1", session),
166
+ {
167
+ wrapper: wrapper(adapter, "local"),
168
+ initialProps: { session: makeSession(ExecutionTarget.LOCAL) },
169
+ },
170
+ );
171
+
172
+ expect(adapter.onSessionOpened).toHaveBeenCalledTimes(1);
173
+
174
+ // Simulate three refetches returning fresh objects with identical target.
175
+ rerender({ session: makeSession(ExecutionTarget.LOCAL) });
176
+ rerender({ session: makeSession(ExecutionTarget.LOCAL) });
177
+ rerender({ session: makeSession(ExecutionTarget.LOCAL) });
178
+
179
+ expect(adapter.onSessionOpened).toHaveBeenCalledTimes(1);
180
+ expect(adapter.onSessionClosed).not.toHaveBeenCalled();
181
+ });
182
+
183
+ it("swallows adapter errors so the session view never crashes", () => {
184
+ const adapter = createMockAdapter();
185
+ adapter.onSessionOpened.mockRejectedValue(new Error("runner down"));
186
+
187
+ expect(() =>
188
+ renderHook(
189
+ () => useLocalSessionWorker("ses-1", makeSession(ExecutionTarget.LOCAL)),
190
+ { wrapper: wrapper(adapter, "local") },
191
+ ),
192
+ ).not.toThrow();
193
+ });
194
+ });