@stigmer/react 2.0.1 → 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
@@ -1,17 +1,14 @@
1
1
  "use client";
2
2
 
3
3
  import type { ToolCall } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/message_pb";
4
- import { ToolCallStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
4
+ import type { ToolResultView } from "@stigmer/sdk";
5
5
  import { cn } from "@stigmer/theme";
6
- import { resolveToolCategory } from "./tool-categories";
7
6
  import { McpToolDetail } from "./McpToolDetail";
8
- import { useSandboxNormalize } from "./SandboxContext";
9
7
  import { ToolArgsView } from "./ToolArgsView";
10
- import {
11
- CollapsibleCode,
12
- CollapsiblePre,
13
- formatResult,
14
- } from "./tool-rendering-primitives";
8
+ import { ResultView } from "./ResultView";
9
+ import { useToolPresentation } from "./tool-presenter";
10
+ import type { ToolCategory } from "./tool-categories";
11
+ import { CollapsiblePre } from "./tool-rendering-primitives";
15
12
 
16
13
  /** Props for {@link ToolCallDetail}. */
17
14
  export interface ToolCallDetailProps {
@@ -22,25 +19,20 @@ export interface ToolCallDetailProps {
22
19
  }
23
20
 
24
21
  /**
25
- * Renders the detail panel for a single tool call with
26
- * category-specific visual treatments.
22
+ * Renders the detail panel for a single tool call with category-specific
23
+ * treatments.
27
24
  *
28
- * Arguments are rendered through the shared {@link ToolArgsView}
29
- * dispatch (same component used by {@link ApprovalCard}), ensuring
30
- * visual parity between pre-execution approval previews and
31
- * post-execution detail views. Result/output sections are layered
32
- * on top by this component.
25
+ * Arguments render through the shared {@link ToolArgsView} (same component used
26
+ * by {@link ApprovalCard}); results render through {@link ResultView}, driven by
27
+ * `@stigmer/sdk`'s `normalizeToolResult` so an edit shows a diff, a shell shows
28
+ * a terminal with an exit badge, a search shows a match list, and unknown tools
29
+ * degrade to readable JSON instead of a raw dump.
33
30
  *
34
- * - **Shell tools**: terminal-style command + output
35
- * - **File tools (read/write/edit/delete)**: file path + content + result
36
- * - **Search tools (grep/glob)**: pattern + results
37
- * - **Think**: muted italic thought block
38
- * - **MCP tools**: structured args + parsed result via {@link McpToolDetail}
39
- * - **Unknown tools**: generic args + result JSON rendering
31
+ * Composition varies by category to avoid redundancy: an edit shows only the
32
+ * diff (which already names the file and quantifies the change); a write shows
33
+ * its input content; a read shows just the path.
40
34
  *
41
- * Used inside {@link ToolCallItem} when expanded, but also
42
- * independently importable by platform builders who compose
43
- * their own tool call UI.
35
+ * Importable on its own by platform builders composing custom tool UIs.
44
36
  *
45
37
  * @example
46
38
  * ```tsx
@@ -48,147 +40,83 @@ export interface ToolCallDetailProps {
48
40
  * ```
49
41
  */
50
42
  export function ToolCallDetail({ toolCall, className }: ToolCallDetailProps) {
51
- const category = resolveToolCategory(toolCall.name, toolCall.mcpServerSlug);
52
- const isFailed = toolCall.status === ToolCallStatus.TOOL_CALL_FAILED;
43
+ const { category, result } = useToolPresentation(toolCall);
53
44
 
54
45
  return (
55
46
  <div className={cn("space-y-2 text-xs", className)}>
56
- <CategoryRenderer toolCall={toolCall} categoryName={category.category} />
57
-
58
- {isFailed && toolCall.error && (
59
- <div className="space-y-1">
60
- <span className="font-medium text-destructive">Error</span>
61
- <pre className="whitespace-pre-wrap break-words rounded-md border border-destructive/20 bg-destructive-subtle p-2 font-mono text-destructive">
62
- {toolCall.error}
63
- </pre>
64
- </div>
65
- )}
47
+ <CategoryDetail toolCall={toolCall} category={category} result={result} />
66
48
  </div>
67
49
  );
68
50
  }
69
51
 
70
52
  // ---------------------------------------------------------------------------
71
- // Category-specific renderers
53
+ // Category composition
72
54
  //
73
- // Each renderer composes:
74
- // MetadataRow (duration, slug) + ToolArgsView (shared args) + result section
75
- //
76
- // Think and MCP have fully custom rendering that doesn't fit the
77
- // MetadataRow + ToolArgsView + Result pattern.
55
+ // Each category composes from three parts: MetadataRow (duration, slug),
56
+ // ToolArgsView (the input), and ResultView (the effect). The combination is
57
+ // chosen to be informative without duplication.
78
58
  // ---------------------------------------------------------------------------
79
59
 
80
- function CategoryRenderer({
60
+ function CategoryDetail({
81
61
  toolCall,
82
- categoryName,
62
+ category,
63
+ result,
83
64
  }: {
84
65
  toolCall: ToolCall;
85
- categoryName: string;
66
+ category: ToolCategory;
67
+ result: ToolResultView;
86
68
  }) {
87
- switch (categoryName) {
88
- case "shell":
89
- return <ShellToolDetail toolCall={toolCall} />;
90
- case "read":
91
- return <FileToolDetail toolCall={toolCall} mode="read" />;
92
- case "write":
93
- return <FileToolDetail toolCall={toolCall} mode="write" />;
94
- case "edit":
95
- return <FileToolDetail toolCall={toolCall} mode="edit" />;
96
- case "delete":
97
- return <FileToolDetail toolCall={toolCall} mode="delete" />;
98
- case "search":
99
- case "list":
100
- return <SearchToolDetail toolCall={toolCall} />;
69
+ const args = <ArgsSection toolCall={toolCall} />;
70
+
71
+ switch (category) {
101
72
  case "think":
102
73
  return <ThinkToolDetail toolCall={toolCall} />;
74
+
103
75
  case "mcp":
104
76
  return <McpToolDetail toolCall={toolCall} />;
105
- default:
106
- return <GenericToolDetail toolCall={toolCall} />;
107
- }
108
- }
109
-
110
- function ShellToolDetail({ toolCall }: { toolCall: ToolCall }) {
111
- const duration = formatDuration(toolCall.startedAt, toolCall.completedAt);
112
- const normalize = useSandboxNormalize();
113
-
114
- return (
115
- <>
116
- <MetadataRow toolCall={toolCall} duration={duration} />
117
77
 
118
- <ToolArgsView
119
- toolName={toolCall.name}
120
- args={toolCall.args as Record<string, unknown> | null}
121
- mcpServerSlug={toolCall.mcpServerSlug}
122
- />
123
-
124
- {toolCall.result && (
125
- <div className="space-y-1">
126
- <span className="font-medium text-muted-foreground">Output</span>
127
- <div className="rounded-md border border-border bg-[var(--stgm-terminal-bg,#1a1a2e)] p-2.5">
128
- <CollapsiblePre
129
- content={normalize(toolCall.result)}
130
- className="text-[var(--stgm-terminal-fg,#e0e0e0)]"
131
- />
132
- </div>
133
- </div>
134
- )}
135
- </>
136
- );
137
- }
138
-
139
- /**
140
- * For **read**: metadata + path only (content is noise for the user).
141
- * For **write/edit/delete**: metadata + path + content (via ToolArgsView) + result.
142
- */
143
- function FileToolDetail({
144
- toolCall,
145
- mode,
146
- }: {
147
- toolCall: ToolCall;
148
- mode: "read" | "write" | "edit" | "delete";
149
- }) {
150
- const duration = formatDuration(toolCall.startedAt, toolCall.completedAt);
151
-
152
- return (
153
- <>
154
- <MetadataRow toolCall={toolCall} duration={duration} />
78
+ case "edit":
79
+ // The diff already names the file and quantifies the change, so it stands
80
+ // alone — showing the new content as an argument would duplicate it.
81
+ return (
82
+ <>
83
+ <MetadataRow toolCall={toolCall} />
84
+ <ResultView view={result} />
85
+ </>
86
+ );
155
87
 
156
- <ToolArgsView
157
- toolName={toolCall.name}
158
- args={toolCall.args as Record<string, unknown> | null}
159
- mcpServerSlug={toolCall.mcpServerSlug}
160
- />
88
+ case "read":
89
+ case "write":
90
+ case "delete":
91
+ // The input is the point (path, or path + written content). Only surface a
92
+ // result body when it carries new information — i.e. an error.
93
+ return (
94
+ <>
95
+ <MetadataRow toolCall={toolCall} />
96
+ {args}
97
+ {result.type === "error" && <ResultView view={result} />}
98
+ </>
99
+ );
161
100
 
162
- {mode !== "read" && toolCall.result && (
163
- <CollapsibleCode
164
- label="Result"
165
- content={formatResult(toolCall.result)}
166
- />
167
- )}
168
- </>
169
- );
101
+ default:
102
+ // shell, search, list, fetch, web-search, unknown: input + effect.
103
+ return (
104
+ <>
105
+ <MetadataRow toolCall={toolCall} />
106
+ {args}
107
+ <ResultView view={result} />
108
+ </>
109
+ );
110
+ }
170
111
  }
171
112
 
172
- function SearchToolDetail({ toolCall }: { toolCall: ToolCall }) {
173
- const duration = formatDuration(toolCall.startedAt, toolCall.completedAt);
174
-
113
+ function ArgsSection({ toolCall }: { toolCall: ToolCall }) {
175
114
  return (
176
- <>
177
- <MetadataRow toolCall={toolCall} duration={duration} />
178
-
179
- <ToolArgsView
180
- toolName={toolCall.name}
181
- args={toolCall.args as Record<string, unknown> | null}
182
- mcpServerSlug={toolCall.mcpServerSlug}
183
- />
184
-
185
- {toolCall.result && (
186
- <CollapsibleCode
187
- label="Results"
188
- content={formatResult(toolCall.result)}
189
- />
190
- )}
191
- </>
115
+ <ToolArgsView
116
+ toolName={toolCall.name}
117
+ args={toolCall.args as Record<string, unknown> | null}
118
+ mcpServerSlug={toolCall.mcpServerSlug}
119
+ />
192
120
  );
193
121
  }
194
122
 
@@ -208,40 +136,12 @@ function ThinkToolDetail({ toolCall }: { toolCall: ToolCall }) {
208
136
  );
209
137
  }
210
138
 
211
- function GenericToolDetail({ toolCall }: { toolCall: ToolCall }) {
212
- const duration = formatDuration(toolCall.startedAt, toolCall.completedAt);
213
-
214
- return (
215
- <>
216
- <MetadataRow toolCall={toolCall} duration={duration} />
217
-
218
- <ToolArgsView
219
- toolName={toolCall.name}
220
- args={toolCall.args as Record<string, unknown> | null}
221
- mcpServerSlug={toolCall.mcpServerSlug}
222
- />
223
-
224
- {toolCall.result && (
225
- <CollapsibleCode
226
- label="Result"
227
- content={formatResult(toolCall.result)}
228
- />
229
- )}
230
- </>
231
- );
232
- }
233
-
234
139
  // ---------------------------------------------------------------------------
235
140
  // Shared sub-components
236
141
  // ---------------------------------------------------------------------------
237
142
 
238
- function MetadataRow({
239
- toolCall,
240
- duration,
241
- }: {
242
- toolCall: ToolCall;
243
- duration: string | null;
244
- }) {
143
+ function MetadataRow({ toolCall }: { toolCall: ToolCall }) {
144
+ const duration = formatDuration(toolCall.startedAt, toolCall.completedAt);
245
145
  const hasMetadata = toolCall.mcpServerSlug || duration;
246
146
  if (!hasMetadata) return null;
247
147
 
@@ -262,9 +162,8 @@ function MetadataRow({
262
162
  // ---------------------------------------------------------------------------
263
163
 
264
164
  /**
265
- * Returns a human-readable duration string from two ISO 8601
266
- * timestamps. Returns `null` when either timestamp is empty or
267
- * invalid.
165
+ * Returns a human-readable duration string from two ISO 8601 timestamps, or
166
+ * `null` when either timestamp is empty or invalid.
268
167
  */
269
168
  export function formatDuration(
270
169
  startedAt: string,
@@ -10,7 +10,7 @@ import {
10
10
  import { cn } from "@stigmer/theme";
11
11
  import { useRenderTracer } from "../internal/dev";
12
12
  import { ToolCallItem } from "./ToolCallItem";
13
- import { resolveToolCategory, extractPrimaryArg } from "./tool-categories";
13
+ import { resolveToolCategoryFromCall, extractPrimaryArg } from "./tool-categories";
14
14
 
15
15
  /** Props for {@link ToolCallGroup}. */
16
16
  export interface ToolCallGroupProps {
@@ -91,7 +91,7 @@ function defaultFormatSummary(
91
91
  ): string {
92
92
  if (toolCalls.length === 1) {
93
93
  const tc = toolCalls[0];
94
- const cat = resolveToolCategory(tc.name, tc.mcpServerSlug);
94
+ const cat = resolveToolCategoryFromCall(tc);
95
95
  const primary = extractPrimaryArg(tc);
96
96
  if (primary) {
97
97
  const truncated =
@@ -11,11 +11,8 @@ import { cn } from "@stigmer/theme";
11
11
  import { ToolCallDetail, formatDuration } from "./ToolCallDetail";
12
12
  import { SubAgentSection } from "./SubAgentSection";
13
13
  import { FilePathLink } from "./FilePathLink";
14
- import {
15
- resolveToolCategory,
16
- extractPrimaryArg,
17
- type ToolCategory,
18
- } from "./tool-categories";
14
+ import { type ToolCategory } from "./tool-categories";
15
+ import { useToolPresentation } from "./tool-presenter";
19
16
  import { useSandboxNormalize } from "./SandboxContext";
20
17
  import { useThreadSelection } from "./useThreadSelection";
21
18
 
@@ -71,13 +68,12 @@ export function ToolCallItem({
71
68
  const duration = formatDuration(toolCall.startedAt, toolCall.completedAt);
72
69
  const isSubAgent = subAgentExecution != null;
73
70
 
74
- const categoryInfo = resolveToolCategory(toolCall.name, toolCall.mcpServerSlug);
75
- const CategoryIcon = CATEGORY_ICON[categoryInfo.category];
76
- const primaryArg = extractPrimaryArg(toolCall);
71
+ const { category, label, primaryArg, resultSummary } = useToolPresentation(toolCall);
72
+ const CategoryIcon = CATEGORY_ICON[category];
77
73
 
78
74
  const displayLabel = isSubAgent
79
- ? subAgentExecution.subject || subAgentExecution.name || categoryInfo.label
80
- : categoryInfo.label;
75
+ ? subAgentExecution.subject || subAgentExecution.name || label
76
+ : label;
81
77
 
82
78
  const normalize = useSandboxNormalize();
83
79
  const approvalBadge = getApprovalBadge(toolCall);
@@ -88,7 +84,7 @@ export function ToolCallItem({
88
84
  // expandable to show the error.
89
85
  const isNonExpandableRead =
90
86
  !isSubAgent &&
91
- categoryInfo.category === "read" &&
87
+ category === "read" &&
92
88
  (toolCall.status === ToolCallStatus.TOOL_CALL_COMPLETED ||
93
89
  toolCall.status === ToolCallStatus.TOOL_CALL_SKIPPED);
94
90
 
@@ -175,7 +171,7 @@ export function ToolCallItem({
175
171
 
176
172
  const displaySubtitle = isSubAgent
177
173
  ? null
178
- : categoryInfo.category === "shell" && primaryArg
174
+ : category === "shell" && primaryArg
179
175
  ? normalize(primaryArg)
180
176
  : primaryArg;
181
177
 
@@ -208,6 +204,11 @@ export function ToolCallItem({
208
204
  {displaySubtitle}
209
205
  </span>
210
206
  )}
207
+ {!isSubAgent && resultSummary && (
208
+ <span className="shrink-0 tabular-nums text-muted-foreground">
209
+ {resultSummary}
210
+ </span>
211
+ )}
211
212
  </span>
212
213
 
213
214
  {trailingContent}
@@ -300,6 +301,8 @@ export const CATEGORY_ICON: Record<ToolCategory, () => React.JSX.Element> = {
300
301
  delete: TrashIcon,
301
302
  search: SearchIcon,
302
303
  list: FolderIcon,
304
+ fetch: GlobeIcon,
305
+ "web-search": GlobeIcon,
303
306
  think: BrainIcon,
304
307
  "sub-agent": BotIcon,
305
308
  internal: WrenchIcon,
@@ -307,6 +310,16 @@ export const CATEGORY_ICON: Record<ToolCategory, () => React.JSX.Element> = {
307
310
  unknown: WrenchIcon,
308
311
  };
309
312
 
313
+ function GlobeIcon() {
314
+ return (
315
+ <svg width="12" height="12" viewBox="0 0 12 12" fill="none" stroke="currentColor" strokeWidth="1.2" strokeLinecap="round" strokeLinejoin="round">
316
+ <circle cx="6" cy="6" r="4.5" />
317
+ <path d="M1.5 6H10.5" />
318
+ <path d="M6 1.5C7.5 3 7.5 9 6 10.5C4.5 9 4.5 3 6 1.5Z" />
319
+ </svg>
320
+ );
321
+ }
322
+
310
323
  function TerminalIcon() {
311
324
  return (
312
325
  <svg width="12" height="12" viewBox="0 0 12 12" fill="none" stroke="currentColor" strokeWidth="1.2" strokeLinecap="round" strokeLinejoin="round">
@@ -0,0 +1,99 @@
1
+ import { describe, it, expect, afterEach, vi } from "vitest";
2
+ import { render, cleanup, fireEvent } from "@testing-library/react";
3
+ import { create } from "@bufbuild/protobuf";
4
+ import { PendingApprovalSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/approval_pb";
5
+ import { ApprovalAction } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
6
+ import { ToolKind } from "@stigmer/sdk";
7
+ import { ApprovalCard } from "../ApprovalCard";
8
+
9
+ afterEach(cleanup);
10
+
11
+ const noop = () => {};
12
+
13
+ describe("ApprovalCard tool classification", () => {
14
+ it("honors the denormalized wire tool_kind for a name not in the fallback map", () => {
15
+ // A future/unknown tool name that the name-based resolver cannot classify —
16
+ // only the server-projected tool_kind can. This proves the backend
17
+ // denormalization (Go + Java PendingApproval projection) is consumed.
18
+ const approval = create(PendingApprovalSchema, {
19
+ toolCallId: "tc1",
20
+ toolName: "SomeFutureEditTool",
21
+ toolKind: ToolKind.FILE_EDIT,
22
+ argsPreview: "{}",
23
+ });
24
+
25
+ const { getByText } = render(
26
+ <ApprovalCard pendingApproval={approval} onSubmit={noop} />,
27
+ );
28
+
29
+ // FILE_EDIT presentation label, not a humanized tool name.
30
+ expect(getByText("Edit")).toBeTruthy();
31
+ });
32
+
33
+ it("falls back to name-based classification when tool_kind is unset (legacy)", () => {
34
+ const approval = create(PendingApprovalSchema, {
35
+ toolCallId: "tc2",
36
+ toolName: "delete_file",
37
+ // toolKind left UNSPECIFIED — legacy execution.
38
+ argsPreview: '{"path":"/tmp/x"}',
39
+ });
40
+
41
+ const { getByText } = render(
42
+ <ApprovalCard pendingApproval={approval} onSubmit={noop} />,
43
+ );
44
+
45
+ expect(getByText("Delete")).toBeTruthy();
46
+ });
47
+ });
48
+
49
+ describe("ApprovalCard approve-all action", () => {
50
+ it("renders the subordinate 'Approve & don't ask again' action", () => {
51
+ const approval = create(PendingApprovalSchema, {
52
+ toolCallId: "tc3",
53
+ toolName: "delete_file",
54
+ argsPreview: '{"path":"/tmp/x"}',
55
+ });
56
+
57
+ const { getByText, getByLabelText } = render(
58
+ <ApprovalCard pendingApproval={approval} onSubmit={noop} />,
59
+ );
60
+
61
+ expect(getByText("Approve")).toBeTruthy();
62
+ expect(getByLabelText("Approve & don't ask again")).toBeTruthy();
63
+ });
64
+
65
+ it("submits APPROVE_ALL when the subordinate action is clicked", () => {
66
+ const onSubmit = vi.fn();
67
+ const approval = create(PendingApprovalSchema, {
68
+ toolCallId: "tc4",
69
+ toolName: "delete_file",
70
+ argsPreview: '{"path":"/tmp/x"}',
71
+ });
72
+
73
+ const { getByLabelText } = render(
74
+ <ApprovalCard pendingApproval={approval} onSubmit={onSubmit} />,
75
+ );
76
+
77
+ fireEvent.click(getByLabelText("Approve & don't ask again"));
78
+
79
+ expect(onSubmit).toHaveBeenCalledTimes(1);
80
+ expect(onSubmit).toHaveBeenCalledWith(ApprovalAction.APPROVE_ALL);
81
+ });
82
+
83
+ it("submits a plain APPROVE when the primary action is clicked", () => {
84
+ const onSubmit = vi.fn();
85
+ const approval = create(PendingApprovalSchema, {
86
+ toolCallId: "tc5",
87
+ toolName: "delete_file",
88
+ argsPreview: '{"path":"/tmp/x"}',
89
+ });
90
+
91
+ const { getByLabelText } = render(
92
+ <ApprovalCard pendingApproval={approval} onSubmit={onSubmit} />,
93
+ );
94
+
95
+ fireEvent.click(getByLabelText("Approve"));
96
+
97
+ expect(onSubmit).toHaveBeenCalledWith(ApprovalAction.APPROVE);
98
+ });
99
+ });
@@ -0,0 +1,95 @@
1
+ import { describe, it, expect, afterEach } from "vitest";
2
+ import { render, cleanup } from "@testing-library/react";
3
+ import type { ToolResultView } from "@stigmer/sdk";
4
+ import { ResultView, summarizeResultView } from "../ResultView";
5
+
6
+ afterEach(cleanup);
7
+
8
+ describe("ResultView", () => {
9
+ it("renders an edit diff with add/remove counts from the envelope", () => {
10
+ const view: ToolResultView = {
11
+ type: "diff",
12
+ path: "/workspace/x.md",
13
+ linesAdded: 40,
14
+ linesRemoved: 0,
15
+ };
16
+ const { container } = render(<ResultView view={view} />);
17
+ expect(container.textContent).toContain("+40");
18
+ expect(container.textContent).toContain("-0");
19
+ });
20
+
21
+ it("renders a computed diff hunk from old/new text", () => {
22
+ const view: ToolResultView = {
23
+ type: "diff",
24
+ path: "/workspace/x.md",
25
+ oldText: "hello",
26
+ newText: "hello world",
27
+ };
28
+ const { container } = render(<ResultView view={view} />);
29
+ // The new line is rendered as an addition.
30
+ expect(container.textContent).toContain("hello world");
31
+ });
32
+
33
+ it("renders a terminal with a non-zero exit badge", () => {
34
+ const view: ToolResultView = {
35
+ type: "terminal",
36
+ stdout: "boom",
37
+ stderr: "",
38
+ exitCode: 1,
39
+ };
40
+ const { container } = render(<ResultView view={view} />);
41
+ expect(container.textContent).toContain("exit 1");
42
+ expect(container.textContent).toContain("boom");
43
+ });
44
+
45
+ it("renders a search match list", () => {
46
+ const view: ToolResultView = {
47
+ type: "search",
48
+ matches: [{ text: "a" }, { text: "b" }],
49
+ count: 2,
50
+ };
51
+ const { container } = render(<ResultView view={view} />);
52
+ expect(container.textContent).toContain("2 matches");
53
+ });
54
+
55
+ it("renders unknown JSON results as a labeled code block, not a raw dump", () => {
56
+ const view: ToolResultView = { type: "json", value: { a: 1 } };
57
+ const { container } = render(<ResultView view={view} />);
58
+ expect(container.textContent).toContain("Result");
59
+ expect(container.textContent).toContain('"a": 1');
60
+ });
61
+
62
+ it("renders an error", () => {
63
+ const view: ToolResultView = { type: "error", message: "it broke" };
64
+ const { container } = render(<ResultView view={view} />);
65
+ expect(container.textContent).toContain("Error");
66
+ expect(container.textContent).toContain("it broke");
67
+ });
68
+
69
+ it("renders nothing for empty", () => {
70
+ const { container } = render(<ResultView view={{ type: "empty" }} />);
71
+ expect(container.textContent).toBe("");
72
+ });
73
+ });
74
+
75
+ describe("summarizeResultView", () => {
76
+ it("summarizes a diff", () => {
77
+ expect(
78
+ summarizeResultView({ type: "diff", path: "x", linesAdded: 3, linesRemoved: 1 }),
79
+ ).toBe("+3 -1");
80
+ });
81
+
82
+ it("summarizes a failed terminal but not a successful one", () => {
83
+ expect(summarizeResultView({ type: "terminal", stdout: "", stderr: "", exitCode: 2 })).toBe("exit 2");
84
+ expect(summarizeResultView({ type: "terminal", stdout: "", stderr: "", exitCode: 0 })).toBeNull();
85
+ });
86
+
87
+ it("summarizes search and list counts", () => {
88
+ expect(summarizeResultView({ type: "search", matches: [], count: 3 })).toBe("3 matches");
89
+ expect(summarizeResultView({ type: "list", entries: [], count: 1 })).toBe("1 item");
90
+ });
91
+
92
+ it("returns null when there is nothing to summarize", () => {
93
+ expect(summarizeResultView({ type: "text", text: "hi" })).toBeNull();
94
+ });
95
+ });