@stigmer/react 0.5.0 → 1.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 (691) hide show
  1. package/activity/group-activity.d.ts +13 -0
  2. package/activity/group-activity.d.ts.map +1 -0
  3. package/activity/group-activity.js +54 -0
  4. package/activity/group-activity.js.map +1 -0
  5. package/activity/index.d.ts +4 -0
  6. package/activity/index.d.ts.map +1 -0
  7. package/activity/index.js +3 -0
  8. package/activity/index.js.map +1 -0
  9. package/activity/types.d.ts +34 -0
  10. package/activity/types.d.ts.map +1 -0
  11. package/activity/types.js +2 -0
  12. package/activity/types.js.map +1 -0
  13. package/activity/useRecentActivity.d.ts +35 -0
  14. package/activity/useRecentActivity.d.ts.map +1 -0
  15. package/activity/useRecentActivity.js +73 -0
  16. package/activity/useRecentActivity.js.map +1 -0
  17. package/agent/AgentPicker.d.ts.map +1 -1
  18. package/agent/AgentPicker.js +4 -2
  19. package/agent/AgentPicker.js.map +1 -1
  20. package/billing/BillingSection.d.ts.map +1 -1
  21. package/billing/BillingSection.js +1 -1
  22. package/billing/BillingSection.js.map +1 -1
  23. package/composer/ComposerToolbar.d.ts +5 -1
  24. package/composer/ComposerToolbar.d.ts.map +1 -1
  25. package/composer/ComposerToolbar.js +4 -3
  26. package/composer/ComposerToolbar.js.map +1 -1
  27. package/composer/ContextChip.d.ts +7 -2
  28. package/composer/ContextChip.d.ts.map +1 -1
  29. package/composer/ContextChip.js +2 -1
  30. package/composer/ContextChip.js.map +1 -1
  31. package/composer/InteractionModePicker.d.ts +40 -0
  32. package/composer/InteractionModePicker.d.ts.map +1 -0
  33. package/composer/InteractionModePicker.js +76 -0
  34. package/composer/InteractionModePicker.js.map +1 -0
  35. package/composer/SessionComposer.d.ts +64 -64
  36. package/composer/SessionComposer.d.ts.map +1 -1
  37. package/composer/SessionComposer.js +52 -11
  38. package/composer/SessionComposer.js.map +1 -1
  39. package/composer/__tests__/SessionComposer-memo.test.js +10 -5
  40. package/composer/__tests__/SessionComposer-memo.test.js.map +1 -1
  41. package/composer/index.d.ts +3 -1
  42. package/composer/index.d.ts.map +1 -1
  43. package/composer/index.js +1 -0
  44. package/composer/index.js.map +1 -1
  45. package/dashboard/DashboardFailedRuns.d.ts +19 -0
  46. package/dashboard/DashboardFailedRuns.d.ts.map +1 -0
  47. package/dashboard/DashboardFailedRuns.js +35 -0
  48. package/dashboard/DashboardFailedRuns.js.map +1 -0
  49. package/dashboard/DashboardKPICards.d.ts +19 -0
  50. package/dashboard/DashboardKPICards.d.ts.map +1 -0
  51. package/dashboard/DashboardKPICards.js +80 -0
  52. package/dashboard/DashboardKPICards.js.map +1 -0
  53. package/dashboard/OperationalDashboard.d.ts +37 -0
  54. package/dashboard/OperationalDashboard.d.ts.map +1 -0
  55. package/dashboard/OperationalDashboard.js +48 -0
  56. package/dashboard/OperationalDashboard.js.map +1 -0
  57. package/dashboard/index.d.ts +8 -0
  58. package/dashboard/index.d.ts.map +1 -0
  59. package/dashboard/index.js +9 -0
  60. package/dashboard/index.js.map +1 -0
  61. package/dashboard/types.d.ts +49 -0
  62. package/dashboard/types.d.ts.map +1 -0
  63. package/dashboard/types.js +2 -0
  64. package/dashboard/types.js.map +1 -0
  65. package/dashboard/useAgentExecutionSummary.d.ts +33 -0
  66. package/dashboard/useAgentExecutionSummary.d.ts.map +1 -0
  67. package/dashboard/useAgentExecutionSummary.js +32 -0
  68. package/dashboard/useAgentExecutionSummary.js.map +1 -0
  69. package/dashboard/useDashboardFailedRuns.d.ts +18 -0
  70. package/dashboard/useDashboardFailedRuns.d.ts.map +1 -0
  71. package/dashboard/useDashboardFailedRuns.js +86 -0
  72. package/dashboard/useDashboardFailedRuns.js.map +1 -0
  73. package/dashboard/useDashboardSummary.d.ts +32 -0
  74. package/dashboard/useDashboardSummary.d.ts.map +1 -0
  75. package/dashboard/useDashboardSummary.js +67 -0
  76. package/dashboard/useDashboardSummary.js.map +1 -0
  77. package/environment/usePersonalEnvironment.d.ts.map +1 -1
  78. package/environment/usePersonalEnvironment.js +1 -0
  79. package/environment/usePersonalEnvironment.js.map +1 -1
  80. package/execution/ContextGauge.d.ts +45 -0
  81. package/execution/ContextGauge.d.ts.map +1 -0
  82. package/execution/ContextGauge.js +82 -0
  83. package/execution/ContextGauge.js.map +1 -0
  84. package/execution/InteractionModeBadge.d.ts +24 -0
  85. package/execution/InteractionModeBadge.d.ts.map +1 -0
  86. package/execution/InteractionModeBadge.js +29 -0
  87. package/execution/InteractionModeBadge.js.map +1 -0
  88. package/execution/MessageThread.d.ts +33 -3
  89. package/execution/MessageThread.d.ts.map +1 -1
  90. package/execution/MessageThread.js +51 -9
  91. package/execution/MessageThread.js.map +1 -1
  92. package/execution/PlanCompletionCard.d.ts +23 -0
  93. package/execution/PlanCompletionCard.d.ts.map +1 -0
  94. package/execution/PlanCompletionCard.js +28 -0
  95. package/execution/PlanCompletionCard.js.map +1 -0
  96. package/execution/SummarizationBadge.d.ts +30 -0
  97. package/execution/SummarizationBadge.d.ts.map +1 -0
  98. package/execution/SummarizationBadge.js +61 -0
  99. package/execution/SummarizationBadge.js.map +1 -0
  100. package/execution/SummarizationCard.d.ts +27 -0
  101. package/execution/SummarizationCard.d.ts.map +1 -0
  102. package/execution/SummarizationCard.js +47 -0
  103. package/execution/SummarizationCard.js.map +1 -0
  104. package/execution/__tests__/PlanCompletionCard.test.d.ts +2 -0
  105. package/execution/__tests__/PlanCompletionCard.test.d.ts.map +1 -0
  106. package/execution/__tests__/PlanCompletionCard.test.js +53 -0
  107. package/execution/__tests__/PlanCompletionCard.test.js.map +1 -0
  108. package/execution/__tests__/buildThreadItems-plan-completion.test.d.ts +2 -0
  109. package/execution/__tests__/buildThreadItems-plan-completion.test.d.ts.map +1 -0
  110. package/execution/__tests__/buildThreadItems-plan-completion.test.js +137 -0
  111. package/execution/__tests__/buildThreadItems-plan-completion.test.js.map +1 -0
  112. package/execution/__tests__/useContextWindow.test.d.ts +2 -0
  113. package/execution/__tests__/useContextWindow.test.d.ts.map +1 -0
  114. package/execution/__tests__/useContextWindow.test.js +121 -0
  115. package/execution/__tests__/useContextWindow.test.js.map +1 -0
  116. package/execution/index.d.ts +12 -0
  117. package/execution/index.d.ts.map +1 -1
  118. package/execution/index.js +6 -0
  119. package/execution/index.js.map +1 -1
  120. package/execution/useContextWindow.d.ts +71 -0
  121. package/execution/useContextWindow.d.ts.map +1 -0
  122. package/execution/useContextWindow.js +91 -0
  123. package/execution/useContextWindow.js.map +1 -0
  124. package/execution/useCreateAgentExecution.d.ts +9 -0
  125. package/execution/useCreateAgentExecution.d.ts.map +1 -1
  126. package/execution/useCreateAgentExecution.js +15 -3
  127. package/execution/useCreateAgentExecution.js.map +1 -1
  128. package/index.d.ts +11 -6
  129. package/index.d.ts.map +1 -1
  130. package/index.js +13 -3
  131. package/index.js.map +1 -1
  132. package/inline-edit/InlineEditKeyValue.d.ts +5 -1
  133. package/inline-edit/InlineEditKeyValue.d.ts.map +1 -1
  134. package/inline-edit/InlineEditKeyValue.js +3 -3
  135. package/inline-edit/InlineEditKeyValue.js.map +1 -1
  136. package/internal/VirtualizedThread.d.ts +2 -1
  137. package/internal/VirtualizedThread.d.ts.map +1 -1
  138. package/internal/VirtualizedThread.js +3 -2
  139. package/internal/VirtualizedThread.js.map +1 -1
  140. package/internal/store/index.d.ts +1 -0
  141. package/internal/store/index.d.ts.map +1 -1
  142. package/internal/store/index.js +1 -0
  143. package/internal/store/index.js.map +1 -1
  144. package/internal/store/workflow-execution-event-store.d.ts +92 -0
  145. package/internal/store/workflow-execution-event-store.d.ts.map +1 -0
  146. package/internal/store/workflow-execution-event-store.js +298 -0
  147. package/internal/store/workflow-execution-event-store.js.map +1 -0
  148. package/internal/useFetch.js +2 -2
  149. package/internal/useFetch.js.map +1 -1
  150. package/library/ScopeToggle.d.ts +13 -9
  151. package/library/ScopeToggle.d.ts.map +1 -1
  152. package/library/ScopeToggle.js +43 -22
  153. package/library/ScopeToggle.js.map +1 -1
  154. package/library/VisibilityToggle.js +14 -5
  155. package/library/VisibilityToggle.js.map +1 -1
  156. package/library/index.d.ts +1 -0
  157. package/library/index.d.ts.map +1 -1
  158. package/library/index.js +1 -0
  159. package/library/index.js.map +1 -1
  160. package/library/useExportResource.d.ts +3 -2
  161. package/library/useExportResource.d.ts.map +1 -1
  162. package/library/useExportResource.js +11 -6
  163. package/library/useExportResource.js.map +1 -1
  164. package/mcp-server/McpServerDetailView.d.ts.map +1 -1
  165. package/mcp-server/McpServerDetailView.js +169 -58
  166. package/mcp-server/McpServerDetailView.js.map +1 -1
  167. package/mcp-server/McpServerPicker.d.ts.map +1 -1
  168. package/mcp-server/McpServerPicker.js +4 -2
  169. package/mcp-server/McpServerPicker.js.map +1 -1
  170. package/models/ModelRegistryContext.d.ts +2 -0
  171. package/models/ModelRegistryContext.d.ts.map +1 -1
  172. package/models/ModelRegistryContext.js +1 -0
  173. package/models/ModelRegistryContext.js.map +1 -1
  174. package/models/ModelSelector.d.ts.map +1 -1
  175. package/models/ModelSelector.js +2 -2
  176. package/models/ModelSelector.js.map +1 -1
  177. package/models/__tests__/useModelRegistry.test.js +4 -3
  178. package/models/__tests__/useModelRegistry.test.js.map +1 -1
  179. package/models/useModelRegistry.d.ts +2 -0
  180. package/models/useModelRegistry.d.ts.map +1 -1
  181. package/models/useModelRegistry.js +3 -2
  182. package/models/useModelRegistry.js.map +1 -1
  183. package/package.json +16 -5
  184. package/provider.d.ts.map +1 -1
  185. package/provider.js +232 -22
  186. package/provider.js.map +1 -1
  187. package/resource-detail/ResourceDetailShell.d.ts +1 -1
  188. package/resource-detail/ResourceDetailShell.d.ts.map +1 -1
  189. package/resource-detail/ResourceDetailShell.js +6 -6
  190. package/resource-detail/ResourceDetailShell.js.map +1 -1
  191. package/resource-detail/types.d.ts +23 -0
  192. package/resource-detail/types.d.ts.map +1 -1
  193. package/resource-detail/useDeleteResource.d.ts +1 -1
  194. package/resource-detail/useDeleteResource.d.ts.map +1 -1
  195. package/resource-detail/useDeleteResource.js +5 -0
  196. package/resource-detail/useDeleteResource.js.map +1 -1
  197. package/resource-workbench/components/ResourceWorkbench.d.ts.map +1 -1
  198. package/resource-workbench/components/ResourceWorkbench.js +2 -1
  199. package/resource-workbench/components/ResourceWorkbench.js.map +1 -1
  200. package/session/__tests__/session-spec-converters.test.d.ts +2 -0
  201. package/session/__tests__/session-spec-converters.test.d.ts.map +1 -0
  202. package/session/__tests__/session-spec-converters.test.js +162 -0
  203. package/session/__tests__/session-spec-converters.test.js.map +1 -0
  204. package/session/__tests__/useNewSessionFlow.test.js +2 -2
  205. package/session/__tests__/useNewSessionFlow.test.js.map +1 -1
  206. package/session/__tests__/usePersistedModel.test.js +1 -1
  207. package/session/__tests__/usePersistedModel.test.js.map +1 -1
  208. package/session/group-sessions.d.ts +17 -0
  209. package/session/group-sessions.d.ts.map +1 -1
  210. package/session/group-sessions.js +46 -0
  211. package/session/group-sessions.js.map +1 -1
  212. package/session/index.d.ts +4 -2
  213. package/session/index.d.ts.map +1 -1
  214. package/session/index.js +2 -1
  215. package/session/index.js.map +1 -1
  216. package/session/session-spec-converters.d.ts +24 -0
  217. package/session/session-spec-converters.d.ts.map +1 -0
  218. package/session/session-spec-converters.js +72 -0
  219. package/session/session-spec-converters.js.map +1 -0
  220. package/session/useNewSessionFlow.d.ts.map +1 -1
  221. package/session/useNewSessionFlow.js +1 -0
  222. package/session/useNewSessionFlow.js.map +1 -1
  223. package/session/useSessionConversation.d.ts +7 -0
  224. package/session/useSessionConversation.d.ts.map +1 -1
  225. package/session/useSessionConversation.js +2 -56
  226. package/session/useSessionConversation.js.map +1 -1
  227. package/session/useSessionPageFlow.d.ts +5 -0
  228. package/session/useSessionPageFlow.d.ts.map +1 -1
  229. package/session/useSessionPageFlow.js +21 -6
  230. package/session/useSessionPageFlow.js.map +1 -1
  231. package/session/useSessionSearch.d.ts +57 -0
  232. package/session/useSessionSearch.d.ts.map +1 -0
  233. package/session/useSessionSearch.js +94 -0
  234. package/session/useSessionSearch.js.map +1 -0
  235. package/session/useSessionUsage.d.ts.map +1 -1
  236. package/session/useSessionUsage.js +65 -4
  237. package/session/useSessionUsage.js.map +1 -1
  238. package/settings/UsageSection.d.ts.map +1 -1
  239. package/settings/UsageSection.js +1 -4
  240. package/settings/UsageSection.js.map +1 -1
  241. package/skill/SkillPicker.d.ts.map +1 -1
  242. package/skill/SkillPicker.js +4 -2
  243. package/skill/SkillPicker.js.map +1 -1
  244. package/src/activity/group-activity.ts +65 -0
  245. package/src/activity/index.ts +13 -0
  246. package/src/activity/types.ts +35 -0
  247. package/src/activity/useRecentActivity.ts +131 -0
  248. package/src/agent/AgentPicker.tsx +6 -1
  249. package/src/billing/BillingSection.tsx +3 -2
  250. package/src/composer/ComposerToolbar.tsx +19 -1
  251. package/src/composer/ContextChip.tsx +20 -11
  252. package/src/composer/InteractionModePicker.tsx +189 -0
  253. package/src/composer/SessionComposer.tsx +137 -11
  254. package/src/composer/__tests__/SessionComposer-memo.test.ts +11 -6
  255. package/src/composer/index.ts +7 -0
  256. package/src/dashboard/DashboardFailedRuns.tsx +109 -0
  257. package/src/dashboard/DashboardKPICards.tsx +128 -0
  258. package/src/dashboard/OperationalDashboard.tsx +96 -0
  259. package/src/dashboard/index.ts +37 -0
  260. package/src/dashboard/types.ts +50 -0
  261. package/src/dashboard/useAgentExecutionSummary.ts +71 -0
  262. package/src/dashboard/useDashboardFailedRuns.ts +122 -0
  263. package/src/dashboard/useDashboardSummary.ts +109 -0
  264. package/src/environment/usePersonalEnvironment.ts +1 -0
  265. package/src/execution/ContextGauge.tsx +243 -0
  266. package/src/execution/InteractionModeBadge.tsx +70 -0
  267. package/src/execution/MessageThread.tsx +88 -3
  268. package/src/execution/PlanCompletionCard.tsx +105 -0
  269. package/src/execution/SummarizationBadge.tsx +188 -0
  270. package/src/execution/SummarizationCard.tsx +126 -0
  271. package/src/execution/__tests__/PlanCompletionCard.test.tsx +67 -0
  272. package/src/execution/__tests__/buildThreadItems-plan-completion.test.ts +197 -0
  273. package/src/execution/__tests__/useContextWindow.test.ts +167 -0
  274. package/src/execution/index.ts +22 -0
  275. package/src/execution/useContextWindow.ts +148 -0
  276. package/src/execution/useCreateAgentExecution.ts +26 -3
  277. package/src/index.ts +227 -0
  278. package/src/inline-edit/InlineEditKeyValue.tsx +23 -0
  279. package/src/internal/VirtualizedThread.tsx +4 -1
  280. package/src/internal/store/index.ts +6 -0
  281. package/src/internal/store/workflow-execution-event-store.ts +391 -0
  282. package/src/internal/useFetch.ts +2 -2
  283. package/src/library/ScopeToggle.tsx +88 -20
  284. package/src/library/VisibilityToggle.tsx +54 -13
  285. package/src/library/index.ts +2 -0
  286. package/src/library/useExportResource.ts +12 -9
  287. package/src/mcp-server/McpServerDetailView.tsx +509 -203
  288. package/src/mcp-server/McpServerPicker.tsx +6 -1
  289. package/src/models/ModelRegistryContext.ts +3 -0
  290. package/src/models/ModelSelector.tsx +25 -2
  291. package/src/models/__tests__/useModelRegistry.test.tsx +5 -3
  292. package/src/models/useModelRegistry.ts +5 -2
  293. package/src/provider.tsx +264 -26
  294. package/src/resource-detail/ResourceDetailShell.tsx +21 -4
  295. package/src/resource-detail/types.ts +25 -0
  296. package/src/resource-detail/useDeleteResource.ts +6 -1
  297. package/src/resource-workbench/components/ResourceWorkbench.tsx +4 -0
  298. package/src/session/__tests__/session-spec-converters.test.ts +185 -0
  299. package/src/session/__tests__/useNewSessionFlow.test.tsx +2 -2
  300. package/src/session/__tests__/usePersistedModel.test.tsx +1 -1
  301. package/src/session/group-sessions.ts +65 -0
  302. package/src/session/index.ts +8 -2
  303. package/src/session/session-spec-converters.ts +86 -0
  304. package/src/session/useNewSessionFlow.ts +1 -0
  305. package/src/session/useSessionConversation.ts +13 -64
  306. package/src/session/useSessionPageFlow.ts +29 -7
  307. package/src/session/useSessionSearch.ts +149 -0
  308. package/src/session/useSessionUsage.ts +72 -4
  309. package/src/settings/UsageSection.tsx +1 -9
  310. package/src/skill/SkillPicker.tsx +6 -1
  311. package/src/workflow/ApprovalFormBuilder.tsx +1017 -0
  312. package/src/workflow/BranchConditionBuilder.tsx +451 -0
  313. package/src/workflow/CanvasActionsContext.ts +12 -0
  314. package/src/workflow/CanvasContextMenu.tsx +364 -0
  315. package/src/workflow/CanvasTaskNode.tsx +372 -0
  316. package/src/workflow/CanvasTransitionEdge.tsx +122 -0
  317. package/src/workflow/CostByWorkflowChart.tsx +120 -0
  318. package/src/workflow/ExecutionSummaryWidget.tsx +194 -0
  319. package/src/workflow/ExecutionTrendChart.tsx +157 -0
  320. package/src/workflow/FailedRunsWidget.tsx +109 -0
  321. package/src/workflow/PendingApprovalsWidget.tsx +115 -0
  322. package/src/workflow/TaskConfigForm.tsx +618 -0
  323. package/src/workflow/TaskKindRegistryContext.ts +36 -0
  324. package/src/workflow/TaskPickerPopover.tsx +326 -0
  325. package/src/workflow/WorkflowArchitectDialog.tsx +505 -0
  326. package/src/workflow/WorkflowCanvasEditor.tsx +651 -0
  327. package/src/workflow/WorkflowCanvasInner.tsx +160 -0
  328. package/src/workflow/WorkflowDashboard.tsx +124 -0
  329. package/src/workflow/WorkflowDetailView.tsx +527 -0
  330. package/src/workflow/WorkflowEditorView.tsx +547 -0
  331. package/src/workflow/WorkflowExecutionApprovalCard.tsx +129 -0
  332. package/src/workflow/WorkflowExecutionArtifactPanel.tsx +112 -0
  333. package/src/workflow/WorkflowExecutionCostPanel.tsx +131 -0
  334. package/src/workflow/WorkflowExecutionHeader.tsx +194 -0
  335. package/src/workflow/WorkflowExecutionPhaseBadge.tsx +188 -0
  336. package/src/workflow/WorkflowExecutionTaskPanel.tsx +135 -0
  337. package/src/workflow/WorkflowExecutionTimeline.tsx +118 -0
  338. package/src/workflow/WorkflowExecutionTimelineEvent.tsx +488 -0
  339. package/src/workflow/WorkflowExecutionViewer.tsx +248 -0
  340. package/src/workflow/WorkflowInspectorPanel.tsx +568 -0
  341. package/src/workflow/WorkflowRefinePanel.tsx +411 -0
  342. package/src/workflow/WorkflowRepairCard.tsx +433 -0
  343. package/src/workflow/WorkflowRunDialog.tsx +220 -0
  344. package/src/workflow/WorkflowRunForm.tsx +245 -0
  345. package/src/workflow/WorkflowTaskList.tsx +177 -0
  346. package/src/workflow/WorkflowTaskPalette.tsx +248 -0
  347. package/src/workflow/WorkflowTopologyGraph.tsx +250 -0
  348. package/src/workflow/WorkflowYamlEditor.tsx +271 -0
  349. package/src/workflow/__tests__/starter-workflow-yaml.test.ts +57 -0
  350. package/src/workflow/canvas-constants.ts +87 -0
  351. package/src/workflow/canvas-icons.tsx +36 -0
  352. package/src/workflow/extract-workflow-yaml.ts +87 -0
  353. package/src/workflow/graph-commands.ts +675 -0
  354. package/src/workflow/index.ts +375 -0
  355. package/src/workflow/serialize-workflow-yaml.ts +546 -0
  356. package/src/workflow/starter-workflow-yaml.ts +29 -0
  357. package/src/workflow/types.ts +99 -0
  358. package/src/workflow/useCanvasKeyboardShortcuts.ts +134 -0
  359. package/src/workflow/useDiagnoseExecutionFlow.ts +378 -0
  360. package/src/workflow/useGraphHistory.ts +138 -0
  361. package/src/workflow/usePendingApprovals.ts +89 -0
  362. package/src/workflow/useRefineWorkflowFlow.ts +321 -0
  363. package/src/workflow/useResolveAgentExecutionSession.ts +57 -0
  364. package/src/workflow/useRunWorkflowFlow.ts +235 -0
  365. package/src/workflow/useTaskKindRegistry.ts +135 -0
  366. package/src/workflow/useWorkflow.ts +78 -0
  367. package/src/workflow/useWorkflowArchitectFlow.ts +303 -0
  368. package/src/workflow/useWorkflowCanvas.ts +882 -0
  369. package/src/workflow/useWorkflowCount.ts +66 -0
  370. package/src/workflow/useWorkflowDashboardSummary.ts +71 -0
  371. package/src/workflow/useWorkflowEditor.ts +106 -0
  372. package/src/workflow/useWorkflowExecution.ts +67 -0
  373. package/src/workflow/useWorkflowExecutionActions.ts +179 -0
  374. package/src/workflow/useWorkflowExecutionArtifacts.ts +57 -0
  375. package/src/workflow/useWorkflowExecutionEventLog.ts +111 -0
  376. package/src/workflow/useWorkflowExecutionEventStream.ts +244 -0
  377. package/src/workflow/useWorkflowExecutionList.ts +121 -0
  378. package/src/workflow/useWorkflowInstances.ts +62 -0
  379. package/src/workflow/useWorkflowList.ts +79 -0
  380. package/src/workflow/useWorkflowSave.ts +84 -0
  381. package/src/workflow/useWorkflowTopology.ts +229 -0
  382. package/src/workflow/useWorkflowValidation.ts +329 -0
  383. package/src/workflow/useWorkflowYaml.ts +49 -0
  384. package/src/workflow/workflow-graph-conversions.ts +796 -0
  385. package/src/workflow/workflow-graph-model.ts +83 -0
  386. package/src/workflow/workflow-yaml-diff.ts +132 -0
  387. package/styles.css +1 -1
  388. package/workflow/ApprovalFormBuilder.d.ts +24 -0
  389. package/workflow/ApprovalFormBuilder.d.ts.map +1 -0
  390. package/workflow/ApprovalFormBuilder.js +347 -0
  391. package/workflow/ApprovalFormBuilder.js.map +1 -0
  392. package/workflow/BranchConditionBuilder.d.ts +29 -0
  393. package/workflow/BranchConditionBuilder.d.ts.map +1 -0
  394. package/workflow/BranchConditionBuilder.js +170 -0
  395. package/workflow/BranchConditionBuilder.js.map +1 -0
  396. package/workflow/CanvasActionsContext.d.ts +8 -0
  397. package/workflow/CanvasActionsContext.d.ts.map +1 -0
  398. package/workflow/CanvasActionsContext.js +4 -0
  399. package/workflow/CanvasActionsContext.js.map +1 -0
  400. package/workflow/CanvasContextMenu.d.ts +59 -0
  401. package/workflow/CanvasContextMenu.d.ts.map +1 -0
  402. package/workflow/CanvasContextMenu.js +98 -0
  403. package/workflow/CanvasContextMenu.js.map +1 -0
  404. package/workflow/CanvasTaskNode.d.ts +21 -0
  405. package/workflow/CanvasTaskNode.d.ts.map +1 -0
  406. package/workflow/CanvasTaskNode.js +125 -0
  407. package/workflow/CanvasTaskNode.js.map +1 -0
  408. package/workflow/CanvasTransitionEdge.d.ts +24 -0
  409. package/workflow/CanvasTransitionEdge.d.ts.map +1 -0
  410. package/workflow/CanvasTransitionEdge.js +50 -0
  411. package/workflow/CanvasTransitionEdge.js.map +1 -0
  412. package/workflow/CostByWorkflowChart.d.ts +15 -0
  413. package/workflow/CostByWorkflowChart.d.ts.map +1 -0
  414. package/workflow/CostByWorkflowChart.js +45 -0
  415. package/workflow/CostByWorkflowChart.js.map +1 -0
  416. package/workflow/ExecutionSummaryWidget.d.ts +16 -0
  417. package/workflow/ExecutionSummaryWidget.d.ts.map +1 -0
  418. package/workflow/ExecutionSummaryWidget.js +93 -0
  419. package/workflow/ExecutionSummaryWidget.js.map +1 -0
  420. package/workflow/ExecutionTrendChart.d.ts +14 -0
  421. package/workflow/ExecutionTrendChart.d.ts.map +1 -0
  422. package/workflow/ExecutionTrendChart.js +67 -0
  423. package/workflow/ExecutionTrendChart.js.map +1 -0
  424. package/workflow/FailedRunsWidget.d.ts +19 -0
  425. package/workflow/FailedRunsWidget.d.ts.map +1 -0
  426. package/workflow/FailedRunsWidget.js +37 -0
  427. package/workflow/FailedRunsWidget.js.map +1 -0
  428. package/workflow/PendingApprovalsWidget.d.ts +19 -0
  429. package/workflow/PendingApprovalsWidget.d.ts.map +1 -0
  430. package/workflow/PendingApprovalsWidget.js +35 -0
  431. package/workflow/PendingApprovalsWidget.js.map +1 -0
  432. package/workflow/TaskConfigForm.d.ts +29 -0
  433. package/workflow/TaskConfigForm.d.ts.map +1 -0
  434. package/workflow/TaskConfigForm.js +230 -0
  435. package/workflow/TaskConfigForm.js.map +1 -0
  436. package/workflow/TaskKindRegistryContext.d.ts +24 -0
  437. package/workflow/TaskKindRegistryContext.d.ts.map +1 -0
  438. package/workflow/TaskKindRegistryContext.js +25 -0
  439. package/workflow/TaskKindRegistryContext.js.map +1 -0
  440. package/workflow/TaskPickerPopover.d.ts +33 -0
  441. package/workflow/TaskPickerPopover.d.ts.map +1 -0
  442. package/workflow/TaskPickerPopover.js +110 -0
  443. package/workflow/TaskPickerPopover.js.map +1 -0
  444. package/workflow/WorkflowArchitectDialog.d.ts +48 -0
  445. package/workflow/WorkflowArchitectDialog.d.ts.map +1 -0
  446. package/workflow/WorkflowArchitectDialog.js +129 -0
  447. package/workflow/WorkflowArchitectDialog.js.map +1 -0
  448. package/workflow/WorkflowCanvasEditor.d.ts +38 -0
  449. package/workflow/WorkflowCanvasEditor.d.ts.map +1 -0
  450. package/workflow/WorkflowCanvasEditor.js +287 -0
  451. package/workflow/WorkflowCanvasEditor.js.map +1 -0
  452. package/workflow/WorkflowCanvasInner.d.ts +32 -0
  453. package/workflow/WorkflowCanvasInner.d.ts.map +1 -0
  454. package/workflow/WorkflowCanvasInner.js +49 -0
  455. package/workflow/WorkflowCanvasInner.js.map +1 -0
  456. package/workflow/WorkflowDashboard.d.ts +35 -0
  457. package/workflow/WorkflowDashboard.d.ts.map +1 -0
  458. package/workflow/WorkflowDashboard.js +59 -0
  459. package/workflow/WorkflowDashboard.js.map +1 -0
  460. package/workflow/WorkflowDetailView.d.ts +63 -0
  461. package/workflow/WorkflowDetailView.d.ts.map +1 -0
  462. package/workflow/WorkflowDetailView.js +202 -0
  463. package/workflow/WorkflowDetailView.js.map +1 -0
  464. package/workflow/WorkflowEditorView.d.ts +43 -0
  465. package/workflow/WorkflowEditorView.d.ts.map +1 -0
  466. package/workflow/WorkflowEditorView.js +165 -0
  467. package/workflow/WorkflowEditorView.js.map +1 -0
  468. package/workflow/WorkflowExecutionApprovalCard.d.ts +27 -0
  469. package/workflow/WorkflowExecutionApprovalCard.d.ts.map +1 -0
  470. package/workflow/WorkflowExecutionApprovalCard.js +32 -0
  471. package/workflow/WorkflowExecutionApprovalCard.js.map +1 -0
  472. package/workflow/WorkflowExecutionArtifactPanel.d.ts +15 -0
  473. package/workflow/WorkflowExecutionArtifactPanel.d.ts.map +1 -0
  474. package/workflow/WorkflowExecutionArtifactPanel.js +53 -0
  475. package/workflow/WorkflowExecutionArtifactPanel.js.map +1 -0
  476. package/workflow/WorkflowExecutionCostPanel.d.ts +18 -0
  477. package/workflow/WorkflowExecutionCostPanel.d.ts.map +1 -0
  478. package/workflow/WorkflowExecutionCostPanel.js +44 -0
  479. package/workflow/WorkflowExecutionCostPanel.js.map +1 -0
  480. package/workflow/WorkflowExecutionHeader.d.ts +26 -0
  481. package/workflow/WorkflowExecutionHeader.d.ts.map +1 -0
  482. package/workflow/WorkflowExecutionHeader.js +68 -0
  483. package/workflow/WorkflowExecutionHeader.js.map +1 -0
  484. package/workflow/WorkflowExecutionPhaseBadge.d.ts +23 -0
  485. package/workflow/WorkflowExecutionPhaseBadge.d.ts.map +1 -0
  486. package/workflow/WorkflowExecutionPhaseBadge.js +99 -0
  487. package/workflow/WorkflowExecutionPhaseBadge.js.map +1 -0
  488. package/workflow/WorkflowExecutionTaskPanel.d.ts +24 -0
  489. package/workflow/WorkflowExecutionTaskPanel.d.ts.map +1 -0
  490. package/workflow/WorkflowExecutionTaskPanel.js +59 -0
  491. package/workflow/WorkflowExecutionTaskPanel.js.map +1 -0
  492. package/workflow/WorkflowExecutionTimeline.d.ts +27 -0
  493. package/workflow/WorkflowExecutionTimeline.d.ts.map +1 -0
  494. package/workflow/WorkflowExecutionTimeline.js +51 -0
  495. package/workflow/WorkflowExecutionTimeline.js.map +1 -0
  496. package/workflow/WorkflowExecutionTimelineEvent.d.ts +18 -0
  497. package/workflow/WorkflowExecutionTimelineEvent.d.ts.map +1 -0
  498. package/workflow/WorkflowExecutionTimelineEvent.js +210 -0
  499. package/workflow/WorkflowExecutionTimelineEvent.js.map +1 -0
  500. package/workflow/WorkflowExecutionViewer.d.ts +45 -0
  501. package/workflow/WorkflowExecutionViewer.d.ts.map +1 -0
  502. package/workflow/WorkflowExecutionViewer.js +75 -0
  503. package/workflow/WorkflowExecutionViewer.js.map +1 -0
  504. package/workflow/WorkflowInspectorPanel.d.ts +46 -0
  505. package/workflow/WorkflowInspectorPanel.d.ts.map +1 -0
  506. package/workflow/WorkflowInspectorPanel.js +152 -0
  507. package/workflow/WorkflowInspectorPanel.js.map +1 -0
  508. package/workflow/WorkflowRefinePanel.d.ts +30 -0
  509. package/workflow/WorkflowRefinePanel.d.ts.map +1 -0
  510. package/workflow/WorkflowRefinePanel.js +107 -0
  511. package/workflow/WorkflowRefinePanel.js.map +1 -0
  512. package/workflow/WorkflowRepairCard.d.ts +35 -0
  513. package/workflow/WorkflowRepairCard.d.ts.map +1 -0
  514. package/workflow/WorkflowRepairCard.js +113 -0
  515. package/workflow/WorkflowRepairCard.js.map +1 -0
  516. package/workflow/WorkflowRunDialog.d.ts +51 -0
  517. package/workflow/WorkflowRunDialog.d.ts.map +1 -0
  518. package/workflow/WorkflowRunDialog.js +75 -0
  519. package/workflow/WorkflowRunDialog.js.map +1 -0
  520. package/workflow/WorkflowRunForm.d.ts +62 -0
  521. package/workflow/WorkflowRunForm.d.ts.map +1 -0
  522. package/workflow/WorkflowRunForm.js +64 -0
  523. package/workflow/WorkflowRunForm.js.map +1 -0
  524. package/workflow/WorkflowTaskList.d.ts +25 -0
  525. package/workflow/WorkflowTaskList.d.ts.map +1 -0
  526. package/workflow/WorkflowTaskList.js +89 -0
  527. package/workflow/WorkflowTaskList.js.map +1 -0
  528. package/workflow/WorkflowTaskPalette.d.ts +22 -0
  529. package/workflow/WorkflowTaskPalette.d.ts.map +1 -0
  530. package/workflow/WorkflowTaskPalette.js +83 -0
  531. package/workflow/WorkflowTaskPalette.js.map +1 -0
  532. package/workflow/WorkflowTopologyGraph.d.ts +22 -0
  533. package/workflow/WorkflowTopologyGraph.d.ts.map +1 -0
  534. package/workflow/WorkflowTopologyGraph.js +123 -0
  535. package/workflow/WorkflowTopologyGraph.js.map +1 -0
  536. package/workflow/WorkflowYamlEditor.d.ts +43 -0
  537. package/workflow/WorkflowYamlEditor.d.ts.map +1 -0
  538. package/workflow/WorkflowYamlEditor.js +215 -0
  539. package/workflow/WorkflowYamlEditor.js.map +1 -0
  540. package/workflow/__tests__/starter-workflow-yaml.test.d.ts +2 -0
  541. package/workflow/__tests__/starter-workflow-yaml.test.d.ts.map +1 -0
  542. package/workflow/__tests__/starter-workflow-yaml.test.js +44 -0
  543. package/workflow/__tests__/starter-workflow-yaml.test.js.map +1 -0
  544. package/workflow/canvas-constants.d.ts +56 -0
  545. package/workflow/canvas-constants.d.ts.map +1 -0
  546. package/workflow/canvas-constants.js +74 -0
  547. package/workflow/canvas-constants.js.map +1 -0
  548. package/workflow/canvas-icons.d.ts +13 -0
  549. package/workflow/canvas-icons.d.ts.map +1 -0
  550. package/workflow/canvas-icons.js +21 -0
  551. package/workflow/canvas-icons.js.map +1 -0
  552. package/workflow/extract-workflow-yaml.d.ts +22 -0
  553. package/workflow/extract-workflow-yaml.d.ts.map +1 -0
  554. package/workflow/extract-workflow-yaml.js +63 -0
  555. package/workflow/extract-workflow-yaml.js.map +1 -0
  556. package/workflow/graph-commands.d.ts +209 -0
  557. package/workflow/graph-commands.d.ts.map +1 -0
  558. package/workflow/graph-commands.js +516 -0
  559. package/workflow/graph-commands.js.map +1 -0
  560. package/workflow/index.d.ts +66 -0
  561. package/workflow/index.d.ts.map +1 -0
  562. package/workflow/index.js +88 -0
  563. package/workflow/index.js.map +1 -0
  564. package/workflow/serialize-workflow-yaml.d.ts +39 -0
  565. package/workflow/serialize-workflow-yaml.d.ts.map +1 -0
  566. package/workflow/serialize-workflow-yaml.js +413 -0
  567. package/workflow/serialize-workflow-yaml.js.map +1 -0
  568. package/workflow/starter-workflow-yaml.d.ts +12 -0
  569. package/workflow/starter-workflow-yaml.d.ts.map +1 -0
  570. package/workflow/starter-workflow-yaml.js +30 -0
  571. package/workflow/starter-workflow-yaml.js.map +1 -0
  572. package/workflow/types.d.ts +80 -0
  573. package/workflow/types.d.ts.map +1 -0
  574. package/workflow/types.js +2 -0
  575. package/workflow/types.js.map +1 -0
  576. package/workflow/useCanvasKeyboardShortcuts.d.ts +34 -0
  577. package/workflow/useCanvasKeyboardShortcuts.d.ts.map +1 -0
  578. package/workflow/useCanvasKeyboardShortcuts.js +108 -0
  579. package/workflow/useCanvasKeyboardShortcuts.js.map +1 -0
  580. package/workflow/useDiagnoseExecutionFlow.d.ts +87 -0
  581. package/workflow/useDiagnoseExecutionFlow.d.ts.map +1 -0
  582. package/workflow/useDiagnoseExecutionFlow.js +257 -0
  583. package/workflow/useDiagnoseExecutionFlow.js.map +1 -0
  584. package/workflow/useGraphHistory.d.ts +28 -0
  585. package/workflow/useGraphHistory.d.ts.map +1 -0
  586. package/workflow/useGraphHistory.js +106 -0
  587. package/workflow/useGraphHistory.js.map +1 -0
  588. package/workflow/usePendingApprovals.d.ts +35 -0
  589. package/workflow/usePendingApprovals.d.ts.map +1 -0
  590. package/workflow/usePendingApprovals.js +50 -0
  591. package/workflow/usePendingApprovals.js.map +1 -0
  592. package/workflow/useRefineWorkflowFlow.d.ts +75 -0
  593. package/workflow/useRefineWorkflowFlow.d.ts.map +1 -0
  594. package/workflow/useRefineWorkflowFlow.js +216 -0
  595. package/workflow/useRefineWorkflowFlow.js.map +1 -0
  596. package/workflow/useResolveAgentExecutionSession.d.ts +33 -0
  597. package/workflow/useResolveAgentExecutionSession.d.ts.map +1 -0
  598. package/workflow/useResolveAgentExecutionSession.js +37 -0
  599. package/workflow/useResolveAgentExecutionSession.js.map +1 -0
  600. package/workflow/useRunWorkflowFlow.d.ts +82 -0
  601. package/workflow/useRunWorkflowFlow.d.ts.map +1 -0
  602. package/workflow/useRunWorkflowFlow.js +145 -0
  603. package/workflow/useRunWorkflowFlow.js.map +1 -0
  604. package/workflow/useTaskKindRegistry.d.ts +96 -0
  605. package/workflow/useTaskKindRegistry.d.ts.map +1 -0
  606. package/workflow/useTaskKindRegistry.js +75 -0
  607. package/workflow/useTaskKindRegistry.js.map +1 -0
  608. package/workflow/useWorkflow.d.ts +47 -0
  609. package/workflow/useWorkflow.d.ts.map +1 -0
  610. package/workflow/useWorkflow.js +53 -0
  611. package/workflow/useWorkflow.js.map +1 -0
  612. package/workflow/useWorkflowArchitectFlow.d.ts +96 -0
  613. package/workflow/useWorkflowArchitectFlow.d.ts.map +1 -0
  614. package/workflow/useWorkflowArchitectFlow.js +179 -0
  615. package/workflow/useWorkflowArchitectFlow.js.map +1 -0
  616. package/workflow/useWorkflowCanvas.d.ts +66 -0
  617. package/workflow/useWorkflowCanvas.d.ts.map +1 -0
  618. package/workflow/useWorkflowCanvas.js +628 -0
  619. package/workflow/useWorkflowCanvas.js.map +1 -0
  620. package/workflow/useWorkflowCount.d.ts +47 -0
  621. package/workflow/useWorkflowCount.d.ts.map +1 -0
  622. package/workflow/useWorkflowCount.js +26 -0
  623. package/workflow/useWorkflowCount.js.map +1 -0
  624. package/workflow/useWorkflowDashboardSummary.d.ts +34 -0
  625. package/workflow/useWorkflowDashboardSummary.d.ts.map +1 -0
  626. package/workflow/useWorkflowDashboardSummary.js +33 -0
  627. package/workflow/useWorkflowDashboardSummary.js.map +1 -0
  628. package/workflow/useWorkflowEditor.d.ts +45 -0
  629. package/workflow/useWorkflowEditor.d.ts.map +1 -0
  630. package/workflow/useWorkflowEditor.js +52 -0
  631. package/workflow/useWorkflowEditor.js.map +1 -0
  632. package/workflow/useWorkflowExecution.d.ts +37 -0
  633. package/workflow/useWorkflowExecution.d.ts.map +1 -0
  634. package/workflow/useWorkflowExecution.js +43 -0
  635. package/workflow/useWorkflowExecution.js.map +1 -0
  636. package/workflow/useWorkflowExecutionActions.d.ts +41 -0
  637. package/workflow/useWorkflowExecutionActions.d.ts.map +1 -0
  638. package/workflow/useWorkflowExecutionActions.js +86 -0
  639. package/workflow/useWorkflowExecutionActions.js.map +1 -0
  640. package/workflow/useWorkflowExecutionArtifacts.d.ts +26 -0
  641. package/workflow/useWorkflowExecutionArtifacts.d.ts.map +1 -0
  642. package/workflow/useWorkflowExecutionArtifacts.js +29 -0
  643. package/workflow/useWorkflowExecutionArtifacts.js.map +1 -0
  644. package/workflow/useWorkflowExecutionEventLog.d.ts +47 -0
  645. package/workflow/useWorkflowExecutionEventLog.d.ts.map +1 -0
  646. package/workflow/useWorkflowExecutionEventLog.js +59 -0
  647. package/workflow/useWorkflowExecutionEventLog.js.map +1 -0
  648. package/workflow/useWorkflowExecutionEventStream.d.ts +61 -0
  649. package/workflow/useWorkflowExecutionEventStream.d.ts.map +1 -0
  650. package/workflow/useWorkflowExecutionEventStream.js +161 -0
  651. package/workflow/useWorkflowExecutionEventStream.js.map +1 -0
  652. package/workflow/useWorkflowExecutionList.d.ts +49 -0
  653. package/workflow/useWorkflowExecutionList.d.ts.map +1 -0
  654. package/workflow/useWorkflowExecutionList.js +65 -0
  655. package/workflow/useWorkflowExecutionList.js.map +1 -0
  656. package/workflow/useWorkflowInstances.d.ts +30 -0
  657. package/workflow/useWorkflowInstances.d.ts.map +1 -0
  658. package/workflow/useWorkflowInstances.js +33 -0
  659. package/workflow/useWorkflowInstances.js.map +1 -0
  660. package/workflow/useWorkflowList.d.ts +57 -0
  661. package/workflow/useWorkflowList.d.ts.map +1 -0
  662. package/workflow/useWorkflowList.js +29 -0
  663. package/workflow/useWorkflowList.js.map +1 -0
  664. package/workflow/useWorkflowSave.d.ts +25 -0
  665. package/workflow/useWorkflowSave.d.ts.map +1 -0
  666. package/workflow/useWorkflowSave.js +61 -0
  667. package/workflow/useWorkflowSave.js.map +1 -0
  668. package/workflow/useWorkflowTopology.d.ts +40 -0
  669. package/workflow/useWorkflowTopology.d.ts.map +1 -0
  670. package/workflow/useWorkflowTopology.js +163 -0
  671. package/workflow/useWorkflowTopology.js.map +1 -0
  672. package/workflow/useWorkflowValidation.d.ts +27 -0
  673. package/workflow/useWorkflowValidation.d.ts.map +1 -0
  674. package/workflow/useWorkflowValidation.js +253 -0
  675. package/workflow/useWorkflowValidation.js.map +1 -0
  676. package/workflow/useWorkflowYaml.d.ts +26 -0
  677. package/workflow/useWorkflowYaml.d.ts.map +1 -0
  678. package/workflow/useWorkflowYaml.js +26 -0
  679. package/workflow/useWorkflowYaml.js.map +1 -0
  680. package/workflow/workflow-graph-conversions.d.ts +70 -0
  681. package/workflow/workflow-graph-conversions.d.ts.map +1 -0
  682. package/workflow/workflow-graph-conversions.js +634 -0
  683. package/workflow/workflow-graph-conversions.js.map +1 -0
  684. package/workflow/workflow-graph-model.d.ts +83 -0
  685. package/workflow/workflow-graph-model.d.ts.map +1 -0
  686. package/workflow/workflow-graph-model.js +5 -0
  687. package/workflow/workflow-graph-model.js.map +1 -0
  688. package/workflow/workflow-yaml-diff.d.ts +24 -0
  689. package/workflow/workflow-yaml-diff.d.ts.map +1 -0
  690. package/workflow/workflow-yaml-diff.js +96 -0
  691. package/workflow/workflow-yaml-diff.js.map +1 -0
@@ -0,0 +1,89 @@
1
+ "use client";
2
+
3
+ import { create } from "@bufbuild/protobuf";
4
+ import type { PendingApproval } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/io_pb";
5
+ import { ListPendingApprovalsRequestSchema } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/io_pb";
6
+ import { useStigmer } from "../hooks";
7
+ import { useFetch } from "../internal/useFetch";
8
+
9
+ export interface UsePendingApprovalsOptions {
10
+ /** Organization slug. When empty, the hook does not fetch. */
11
+ readonly org: string | null | undefined;
12
+ /** Maximum results per page. @default 20 */
13
+ readonly pageSize?: number;
14
+ /** Refetch interval in milliseconds. `0` or `false` disables. @default 30000 */
15
+ readonly refetchInterval?: number | false;
16
+ }
17
+
18
+ export interface UsePendingApprovalsReturn {
19
+ readonly approvals: readonly PendingApproval[];
20
+ readonly totalCount: number;
21
+ readonly isLoading: boolean;
22
+ readonly isRefetching: boolean;
23
+ readonly error: Error | null;
24
+ readonly refetch: () => void;
25
+ }
26
+
27
+ interface PendingApprovalsData {
28
+ approvals: readonly PendingApproval[];
29
+ totalCount: number;
30
+ }
31
+
32
+ const INITIAL_DATA: PendingApprovalsData = {
33
+ approvals: [],
34
+ totalCount: 0,
35
+ };
36
+
37
+ /**
38
+ * Data hook that fetches pending human_input approvals for an organization.
39
+ *
40
+ * Returns workflow executions with active human_input tasks awaiting
41
+ * reviewer decisions. Includes task name, requester, and timeout info.
42
+ *
43
+ * Auto-refreshes every 30 seconds by default since pending approvals
44
+ * are time-sensitive.
45
+ *
46
+ * @example
47
+ * ```tsx
48
+ * const { approvals, totalCount, isLoading } = usePendingApprovals({
49
+ * org: "acme",
50
+ * });
51
+ * ```
52
+ */
53
+ export function usePendingApprovals(
54
+ options: UsePendingApprovalsOptions,
55
+ ): UsePendingApprovalsReturn {
56
+ const stigmer = useStigmer();
57
+ const org = options.org ?? "";
58
+ const pageSize = options.pageSize ?? 20;
59
+ const refetchInterval = options.refetchInterval ?? 30_000;
60
+
61
+ const fetchFn = org
62
+ ? async () => {
63
+ const resp = await stigmer.workflowExecution.listPendingApprovals(
64
+ create(ListPendingApprovalsRequestSchema, { org, pageSize }),
65
+ );
66
+ return {
67
+ approvals: [...resp.entries],
68
+ totalCount: resp.totalCount,
69
+ };
70
+ }
71
+ : null;
72
+
73
+ const { data, isLoading, isRefetching, error, refetch } =
74
+ useFetch<PendingApprovalsData>(
75
+ fetchFn,
76
+ [stigmer, org, pageSize],
77
+ INITIAL_DATA,
78
+ { refetchInterval: refetchInterval || false },
79
+ );
80
+
81
+ return {
82
+ approvals: data.approvals,
83
+ totalCount: data.totalCount,
84
+ isLoading,
85
+ isRefetching,
86
+ error,
87
+ refetch,
88
+ };
89
+ }
@@ -0,0 +1,321 @@
1
+ "use client";
2
+
3
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
4
+ import type { AgentExecution } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
5
+ import { ExecutionPhase } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
6
+ import { getUserMessage } from "@stigmer/sdk";
7
+ import { useCreateSession } from "../session/useCreateSession";
8
+ import { useCreateAgentExecution } from "../execution/useCreateAgentExecution";
9
+ import { useExecutionStream } from "../execution/useExecutionStream";
10
+ import { isTerminalPhase } from "../execution/execution-phases";
11
+ import { useConversationStoreRef } from "../internal/store";
12
+ import {
13
+ extractWorkflowYaml,
14
+ type ExtractedWorkflowYaml,
15
+ } from "./extract-workflow-yaml";
16
+
17
+ /**
18
+ * Lifecycle phases for the workflow refinement flow.
19
+ *
20
+ * - `idle` — panel open, no conversation yet
21
+ * - `starting` — creating session (first turn) + execution
22
+ * - `streaming` — agent is working (tool calls, validation, refinement)
23
+ * - `complete` — agent finished, YAML was extracted (diff showing)
24
+ * - `ready` — agent finished without YAML (clarifying question / explanation),
25
+ * or user accepted/discarded a previous result
26
+ * - `error` — a failure occurred (RPC, stream)
27
+ */
28
+ export type RefinePhase =
29
+ | "idle"
30
+ | "starting"
31
+ | "streaming"
32
+ | "complete"
33
+ | "ready"
34
+ | "error";
35
+
36
+ /** Options for {@link useRefineWorkflowFlow}. */
37
+ export interface UseRefineWorkflowFlowOptions {
38
+ /** Organization slug for session and execution creation. */
39
+ readonly org: string;
40
+ /** Live YAML from the editor. Captured via ref at send-time, not reactively. */
41
+ readonly currentYaml: string;
42
+ /** Called when any step fails. Also available via the `error` return. */
43
+ readonly onError?: (message: string) => void;
44
+ }
45
+
46
+ /** Return value of {@link useRefineWorkflowFlow}. */
47
+ export interface UseRefineWorkflowFlowReturn {
48
+ /** Current lifecycle phase. */
49
+ readonly phase: RefinePhase;
50
+ /** Completed execution snapshots for MessageThread (chronological). */
51
+ readonly completedExecutions: readonly AgentExecution[];
52
+ /** Currently streaming execution, or null when idle/between turns. */
53
+ readonly activeExecution: AgentExecution | null;
54
+ /** `true` while the agent execution is actively streaming. */
55
+ readonly isStreaming: boolean;
56
+ /** Extracted YAML from the latest turn (null unless phase is `complete`). */
57
+ readonly extractedYaml: string | null;
58
+ /** Agent's explanation prose from the latest turn. */
59
+ readonly explanation: string | null;
60
+ /** Human-readable error message, or `null` when healthy. */
61
+ readonly error: string | null;
62
+ /** Send a refinement instruction. Creates session on first call. */
63
+ readonly sendInstruction: (instruction: string) => Promise<void>;
64
+ /** Accept the extracted YAML. Returns the YAML string. Transitions to `ready`. */
65
+ readonly acceptResult: () => string | null;
66
+ /** Discard the extracted YAML without applying. Transitions to `ready`. */
67
+ readonly discardResult: () => void;
68
+ /** Reset all state to initial values. Does not delete the server-side session. */
69
+ readonly reset: () => void;
70
+ }
71
+
72
+ const AGENT_REF = { org: "", slug: "workflow-architect" } as const;
73
+ const MIN_INSTRUCTION_LENGTH = 5;
74
+
75
+ /**
76
+ * Behavior hook that orchestrates agent-powered workflow refinement
77
+ * using the built-in Workflow Architect system agent.
78
+ *
79
+ * Manages a multi-turn conversation within a single Session:
80
+ * - First turn creates a Session + AgentExecution
81
+ * - Subsequent turns reuse the Session (conversational context)
82
+ * - Each turn streams agent messages via {@link useExecutionStream}
83
+ * - YAML is extracted from agent responses via {@link extractWorkflowYaml}
84
+ *
85
+ * The `currentYaml` prop is captured at send-time (ref-based, not reactive)
86
+ * and included in the message only when it differs from the last-sent version.
87
+ *
88
+ * Framework-agnostic (DD-004), referentially stable returns (DD-010).
89
+ *
90
+ * @example
91
+ * ```tsx
92
+ * const flow = useRefineWorkflowFlow({
93
+ * org: "acme",
94
+ * currentYaml: editor.yaml,
95
+ * onError: (msg) => toast.error(msg),
96
+ * });
97
+ *
98
+ * <WorkflowRefinePanel flow={flow} onAccept={...} onClose={...} />
99
+ * ```
100
+ */
101
+ export function useRefineWorkflowFlow(
102
+ options: UseRefineWorkflowFlowOptions,
103
+ ): UseRefineWorkflowFlowReturn {
104
+ const { org, currentYaml, onError } = options;
105
+
106
+ const [phase, setPhase] = useState<RefinePhase>("idle");
107
+ const [executionId, setExecutionId] = useState<string | null>(null);
108
+ const [completedExecutions, setCompletedExecutions] = useState<
109
+ AgentExecution[]
110
+ >([]);
111
+ const [extracted, setExtracted] = useState<ExtractedWorkflowYaml | null>(
112
+ null,
113
+ );
114
+ const [error, setError] = useState<string | null>(null);
115
+
116
+ const orgRef = useRef(org);
117
+ orgRef.current = org;
118
+ const yamlRef = useRef(currentYaml);
119
+ yamlRef.current = currentYaml;
120
+ const onErrorRef = useRef(onError);
121
+ onErrorRef.current = onError;
122
+
123
+ const sessionIdRef = useRef<string | null>(null);
124
+ const lastSentYamlRef = useRef<string | null>(null);
125
+ const prevTerminalRef = useRef(false);
126
+
127
+ const { create: createSession } = useCreateSession();
128
+ const { create: createExecution } = useCreateAgentExecution();
129
+ const conversationStore = useConversationStoreRef();
130
+ const stream = useExecutionStream(executionId, {
131
+ store: conversationStore,
132
+ });
133
+
134
+ // -------------------------------------------------------------------------
135
+ // Terminal phase detection — extract YAML or transition to ready
136
+ // -------------------------------------------------------------------------
137
+ useEffect(() => {
138
+ if (phase !== "streaming") return;
139
+
140
+ const isTerminal =
141
+ stream.phase !== ExecutionPhase.EXECUTION_PHASE_UNSPECIFIED &&
142
+ isTerminalPhase(stream.phase);
143
+
144
+ if (isTerminal && !prevTerminalRef.current) {
145
+ prevTerminalRef.current = true;
146
+
147
+ if (stream.execution) {
148
+ setCompletedExecutions((prev) => [...prev, stream.execution!]);
149
+ }
150
+
151
+ const result = extractWorkflowYaml(stream.execution);
152
+ if (result) {
153
+ setExtracted(result);
154
+ setPhase("complete");
155
+ } else {
156
+ setPhase("ready");
157
+ }
158
+
159
+ setExecutionId(null);
160
+ }
161
+ }, [phase, stream.phase, stream.execution]);
162
+
163
+ // -------------------------------------------------------------------------
164
+ // Stream error surfacing
165
+ // -------------------------------------------------------------------------
166
+ useEffect(() => {
167
+ if (stream.error && phase === "streaming") {
168
+ const msg = getUserMessage(stream.error, "Agent stream interrupted");
169
+ setPhase("error");
170
+ setError(msg);
171
+ onErrorRef.current?.(msg);
172
+ }
173
+ }, [stream.error, phase]);
174
+
175
+ // -------------------------------------------------------------------------
176
+ // Build the message with optional YAML context
177
+ // -------------------------------------------------------------------------
178
+ const buildMessage = useCallback((instruction: string): string => {
179
+ const capturedYaml = yamlRef.current;
180
+ const yamlChanged = capturedYaml !== lastSentYamlRef.current;
181
+
182
+ lastSentYamlRef.current = capturedYaml;
183
+
184
+ if (yamlChanged && capturedYaml) {
185
+ return (
186
+ "Here is the current workflow YAML:\n\n" +
187
+ "```yaml\n" +
188
+ capturedYaml +
189
+ "\n```\n\n" +
190
+ instruction
191
+ );
192
+ }
193
+
194
+ return instruction;
195
+ }, []);
196
+
197
+ // -------------------------------------------------------------------------
198
+ // Send a refinement instruction
199
+ // -------------------------------------------------------------------------
200
+ const sendInstruction = useCallback(
201
+ async (instruction: string) => {
202
+ const trimmed = instruction.trim();
203
+ if (trimmed.length < MIN_INSTRUCTION_LENGTH) {
204
+ setError(
205
+ `Instruction must be at least ${MIN_INSTRUCTION_LENGTH} characters`,
206
+ );
207
+ return;
208
+ }
209
+
210
+ if (
211
+ phase !== "idle" &&
212
+ phase !== "ready" &&
213
+ phase !== "complete" &&
214
+ phase !== "error"
215
+ ) {
216
+ return;
217
+ }
218
+
219
+ setPhase("starting");
220
+ setError(null);
221
+ setExtracted(null);
222
+ prevTerminalRef.current = false;
223
+
224
+ try {
225
+ let activeSessionId = sessionIdRef.current;
226
+
227
+ if (!activeSessionId) {
228
+ const { sessionId: newSessionId } = await createSession({
229
+ org: orgRef.current,
230
+ agentRef: { ...AGENT_REF, org: orgRef.current },
231
+ });
232
+ sessionIdRef.current = newSessionId;
233
+ activeSessionId = newSessionId;
234
+ }
235
+
236
+ const message = buildMessage(trimmed);
237
+
238
+ const { executionId: newExecutionId } = await createExecution({
239
+ org: orgRef.current,
240
+ sessionId: activeSessionId,
241
+ message,
242
+ });
243
+
244
+ setExecutionId(newExecutionId);
245
+ setPhase("streaming");
246
+ } catch (err) {
247
+ const msg = getUserMessage(
248
+ err,
249
+ "Failed to start the Workflow Architect agent",
250
+ );
251
+ setPhase("error");
252
+ setError(msg);
253
+ onErrorRef.current?.(msg);
254
+ }
255
+ },
256
+ [phase, createSession, createExecution, buildMessage],
257
+ );
258
+
259
+ // -------------------------------------------------------------------------
260
+ // Accept / discard extracted YAML
261
+ // -------------------------------------------------------------------------
262
+ const acceptResult = useCallback((): string | null => {
263
+ if (phase !== "complete" || !extracted) return null;
264
+ const yaml = extracted.yaml;
265
+ setExtracted(null);
266
+ setPhase("ready");
267
+ return yaml;
268
+ }, [phase, extracted]);
269
+
270
+ const discardResult = useCallback(() => {
271
+ if (phase !== "complete") return;
272
+ setExtracted(null);
273
+ setPhase("ready");
274
+ }, [phase]);
275
+
276
+ // -------------------------------------------------------------------------
277
+ // Reset all state
278
+ // -------------------------------------------------------------------------
279
+ const reset = useCallback(() => {
280
+ setPhase("idle");
281
+ setExecutionId(null);
282
+ setCompletedExecutions([]);
283
+ setExtracted(null);
284
+ setError(null);
285
+ sessionIdRef.current = null;
286
+ lastSentYamlRef.current = null;
287
+ prevTerminalRef.current = false;
288
+ }, []);
289
+
290
+ // -------------------------------------------------------------------------
291
+ // Referentially stable return (DD-010)
292
+ // -------------------------------------------------------------------------
293
+ return useMemo(
294
+ () => ({
295
+ phase,
296
+ completedExecutions,
297
+ activeExecution: stream.execution,
298
+ isStreaming: stream.isStreaming || stream.isConnecting,
299
+ extractedYaml: extracted?.yaml ?? null,
300
+ explanation: extracted?.explanation ?? null,
301
+ error,
302
+ sendInstruction,
303
+ acceptResult,
304
+ discardResult,
305
+ reset,
306
+ }),
307
+ [
308
+ phase,
309
+ completedExecutions,
310
+ stream.execution,
311
+ stream.isStreaming,
312
+ stream.isConnecting,
313
+ extracted,
314
+ error,
315
+ sendInstruction,
316
+ acceptResult,
317
+ discardResult,
318
+ reset,
319
+ ],
320
+ );
321
+ }
@@ -0,0 +1,57 @@
1
+ "use client";
2
+
3
+ import { useStigmer } from "../hooks";
4
+ import { useFetch } from "../internal/useFetch";
5
+
6
+ /** Return value of {@link useResolveAgentExecutionSession}. */
7
+ export interface UseResolveAgentExecutionSessionReturn {
8
+ /** The resolved session ID, or `null` while loading or on error. */
9
+ readonly sessionId: string | null;
10
+ /** `true` while the fetch is in flight. */
11
+ readonly isLoading: boolean;
12
+ /** Error from the last failed request, or `null` when healthy. */
13
+ readonly error: Error | null;
14
+ }
15
+
16
+ /**
17
+ * Resolves an AgentExecution ID (`aex_*`) to its parent Session ID.
18
+ *
19
+ * This hook fetches the AgentExecution resource and extracts
20
+ * `spec.sessionId`. Use it when navigating from a workflow execution
21
+ * context (which knows the child agent execution ID) to the session
22
+ * page (which requires the session ID).
23
+ *
24
+ * Pass `null` to skip fetching (stable no-op).
25
+ *
26
+ * @example
27
+ * ```tsx
28
+ * function DrillDown({ agentExecutionId }: { agentExecutionId: string }) {
29
+ * const { sessionId, isLoading } = useResolveAgentExecutionSession(agentExecutionId);
30
+ * useEffect(() => {
31
+ * if (sessionId) navigateToSession(sessionId);
32
+ * }, [sessionId]);
33
+ * if (isLoading) return <Spinner />;
34
+ * return null;
35
+ * }
36
+ * ```
37
+ */
38
+ export function useResolveAgentExecutionSession(
39
+ agentExecutionId: string | null,
40
+ ): UseResolveAgentExecutionSessionReturn {
41
+ const stigmer = useStigmer();
42
+
43
+ const fetchFn = agentExecutionId
44
+ ? async () => {
45
+ const execution = await stigmer.agentExecution.get(agentExecutionId);
46
+ return execution.spec?.sessionId ?? null;
47
+ }
48
+ : null;
49
+
50
+ const { data: sessionId, isLoading, error } = useFetch(
51
+ fetchFn,
52
+ [agentExecutionId, stigmer],
53
+ null,
54
+ );
55
+
56
+ return { sessionId, isLoading, error };
57
+ }
@@ -0,0 +1,235 @@
1
+ "use client";
2
+
3
+ import { useCallback, useMemo, useRef, useState } from "react";
4
+ import type { Workflow } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/api_pb";
5
+ import type { WorkflowInstance } from "@stigmer/protos/ai/stigmer/agentic/workflowinstance/v1/api_pb";
6
+ import type { WorkflowExecution } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/api_pb";
7
+ import type { EnvVarDeclaration } from "@stigmer/protos/ai/stigmer/agentic/environment/v1/spec_pb";
8
+ import { getUserMessage } from "@stigmer/sdk";
9
+ import { useStigmer } from "../hooks";
10
+ import { toError } from "../internal/toError";
11
+
12
+ /** Field-level validation errors keyed by field name. */
13
+ export type RunWorkflowFieldErrors = Record<string, string>;
14
+
15
+ /** Options for {@link useRunWorkflowFlow}. */
16
+ export interface UseRunWorkflowFlowOptions {
17
+ /** Organization slug that owns the workflow. */
18
+ readonly org: string;
19
+ /** Workflow resource (must include metadata and spec). */
20
+ readonly workflow: Workflow;
21
+ /** Available workflow instances (for instance selector). */
22
+ readonly instances: readonly WorkflowInstance[];
23
+ /**
24
+ * Called after the execution is created successfully.
25
+ * Receives the execution ID for navigation.
26
+ */
27
+ readonly onSuccess: (executionId: string) => void;
28
+ /**
29
+ * Called when submission fails. Receives a human-readable message.
30
+ * Errors are also available via {@link UseRunWorkflowFlowReturn.error}.
31
+ */
32
+ readonly onError?: (message: string) => void;
33
+ }
34
+
35
+ /** Return value of {@link useRunWorkflowFlow}. */
36
+ export interface UseRunWorkflowFlowReturn {
37
+ /** Current trigger message value. */
38
+ readonly triggerMessage: string;
39
+ /** Update the trigger message. */
40
+ readonly setTriggerMessage: (value: string) => void;
41
+
42
+ /** Current runtime environment variable overrides (keyed by var name). */
43
+ readonly runtimeEnv: Record<string, string>;
44
+ /** Update a single env var value. */
45
+ readonly setEnvVar: (key: string, value: string) => void;
46
+
47
+ /** Selected instance ID, or `null` for server-resolved default. */
48
+ readonly selectedInstanceId: string | null;
49
+ /** Update the selected instance. */
50
+ readonly setSelectedInstanceId: (id: string | null) => void;
51
+
52
+ /** Declared environment variables from the workflow spec. */
53
+ readonly envDeclarations: Record<string, EnvVarDeclaration>;
54
+
55
+ /** Field-level validation errors (empty when valid). */
56
+ readonly fieldErrors: RunWorkflowFieldErrors;
57
+
58
+ /** `true` while the create execution RPC is in flight. */
59
+ readonly isSubmitting: boolean;
60
+ /** Error from the last failed submission, or `null`. */
61
+ readonly error: string | null;
62
+
63
+ /** Validate form fields. Returns `true` if valid. */
64
+ readonly validate: () => boolean;
65
+ /** Validate, then create the workflow execution. */
66
+ readonly submit: () => Promise<void>;
67
+ /** Reset all form state to initial values. */
68
+ readonly reset: () => void;
69
+ }
70
+
71
+ /**
72
+ * Behavior hook that orchestrates the "run a workflow" flow.
73
+ *
74
+ * Manages form state (trigger message, runtime env overrides, instance
75
+ * selection), validates required fields, and calls
76
+ * `WorkflowExecutionClient.create()` on submission. On success, the
77
+ * consumer-provided `onSuccess` callback receives the execution ID for
78
+ * navigation or further action.
79
+ *
80
+ * This hook is framework-agnostic — it works identically in Next.js,
81
+ * Vite, Tauri, or any React environment. Navigation and toast feedback
82
+ * are the consumer's responsibility.
83
+ *
84
+ * @example
85
+ * ```tsx
86
+ * const flow = useRunWorkflowFlow({
87
+ * org: "acme",
88
+ * workflow,
89
+ * instances,
90
+ * onSuccess: (id) => router.push(`/workflows/executions/${id}`),
91
+ * onError: (msg) => toast.error(msg),
92
+ * });
93
+ *
94
+ * <input value={flow.triggerMessage} onChange={e => flow.setTriggerMessage(e.target.value)} />
95
+ * <button onClick={flow.submit} disabled={flow.isSubmitting}>Run</button>
96
+ * ```
97
+ */
98
+ export function useRunWorkflowFlow(
99
+ options: UseRunWorkflowFlowOptions,
100
+ ): UseRunWorkflowFlowReturn {
101
+ const { org, workflow, instances, onSuccess, onError } = options;
102
+ const stigmer = useStigmer();
103
+
104
+ const [triggerMessage, setTriggerMessage] = useState("");
105
+ const [runtimeEnv, setRuntimeEnv] = useState<Record<string, string>>({});
106
+ const [selectedInstanceId, setSelectedInstanceId] = useState<string | null>(
107
+ null,
108
+ );
109
+ const [isSubmitting, setIsSubmitting] = useState(false);
110
+ const [error, setError] = useState<string | null>(null);
111
+ const [fieldErrors, setFieldErrors] = useState<RunWorkflowFieldErrors>({});
112
+
113
+ const stigmerRef = useRef(stigmer);
114
+ stigmerRef.current = stigmer;
115
+ const onSuccessRef = useRef(onSuccess);
116
+ onSuccessRef.current = onSuccess;
117
+ const onErrorRef = useRef(onError);
118
+ onErrorRef.current = onError;
119
+
120
+ const envDeclarations = useMemo<Record<string, EnvVarDeclaration>>(
121
+ () => (workflow.spec?.env ? { ...workflow.spec.env } : {}),
122
+ [workflow.spec?.env],
123
+ );
124
+
125
+ const setEnvVar = useCallback((key: string, value: string) => {
126
+ setRuntimeEnv((prev) => ({ ...prev, [key]: value }));
127
+ setFieldErrors((prev) => {
128
+ if (!prev[key]) return prev;
129
+ const next = { ...prev };
130
+ delete next[key];
131
+ return next;
132
+ });
133
+ }, []);
134
+
135
+ const validate = useCallback((): boolean => {
136
+ const errors: RunWorkflowFieldErrors = {};
137
+ for (const [key, decl] of Object.entries(envDeclarations)) {
138
+ if (!decl.optional && !runtimeEnv[key]?.trim()) {
139
+ errors[key] = `${key} is required`;
140
+ }
141
+ }
142
+ setFieldErrors(errors);
143
+ return Object.keys(errors).length === 0;
144
+ }, [envDeclarations, runtimeEnv]);
145
+
146
+ const submit = useCallback(async () => {
147
+ if (isSubmitting) return;
148
+ if (!validate()) return;
149
+
150
+ setIsSubmitting(true);
151
+ setError(null);
152
+
153
+ try {
154
+ const workflowName =
155
+ workflow.metadata?.name || workflow.metadata?.slug || "Workflow";
156
+
157
+ const envInput: Record<string, { value: string; isSecret?: boolean }> =
158
+ {};
159
+ for (const [key, value] of Object.entries(runtimeEnv)) {
160
+ if (value.trim()) {
161
+ const isSecret = envDeclarations[key]?.isSecret ?? false;
162
+ envInput[key] = { value, isSecret };
163
+ }
164
+ }
165
+
166
+ const execution: WorkflowExecution =
167
+ await stigmerRef.current.workflowExecution.create({
168
+ name: `${workflowName} execution`,
169
+ org,
170
+ workflowId: selectedInstanceId
171
+ ? undefined
172
+ : workflow.metadata?.id,
173
+ workflowInstanceId: selectedInstanceId ?? undefined,
174
+ triggerMessage: triggerMessage || undefined,
175
+ triggerMetadata: {
176
+ source: "ui",
177
+ timestamp: new Date().toISOString(),
178
+ },
179
+ runtimeEnv:
180
+ Object.keys(envInput).length > 0 ? envInput : undefined,
181
+ });
182
+
183
+ const executionId = execution.metadata?.id;
184
+ if (!executionId) {
185
+ throw new Error(
186
+ "Execution was created but no ID was returned. Please check the executions list.",
187
+ );
188
+ }
189
+
190
+ onSuccessRef.current(executionId);
191
+ } catch (err) {
192
+ const message = getUserMessage(
193
+ err,
194
+ "Failed to start workflow execution",
195
+ );
196
+ setError(message);
197
+ onErrorRef.current?.(message);
198
+ } finally {
199
+ setIsSubmitting(false);
200
+ }
201
+ }, [
202
+ isSubmitting,
203
+ validate,
204
+ workflow.metadata,
205
+ org,
206
+ selectedInstanceId,
207
+ triggerMessage,
208
+ runtimeEnv,
209
+ envDeclarations,
210
+ ]);
211
+
212
+ const reset = useCallback(() => {
213
+ setTriggerMessage("");
214
+ setRuntimeEnv({});
215
+ setSelectedInstanceId(null);
216
+ setError(null);
217
+ setFieldErrors({});
218
+ }, []);
219
+
220
+ return {
221
+ triggerMessage,
222
+ setTriggerMessage,
223
+ runtimeEnv,
224
+ setEnvVar,
225
+ selectedInstanceId,
226
+ setSelectedInstanceId,
227
+ envDeclarations,
228
+ fieldErrors,
229
+ isSubmitting,
230
+ error,
231
+ validate,
232
+ submit,
233
+ reset,
234
+ };
235
+ }