@stigmer/react 0.5.1 → 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 (625) 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/InteractionModePicker.d.ts +40 -0
  28. package/composer/InteractionModePicker.d.ts.map +1 -0
  29. package/composer/InteractionModePicker.js +76 -0
  30. package/composer/InteractionModePicker.js.map +1 -0
  31. package/composer/SessionComposer.d.ts +53 -64
  32. package/composer/SessionComposer.d.ts.map +1 -1
  33. package/composer/SessionComposer.js +20 -8
  34. package/composer/SessionComposer.js.map +1 -1
  35. package/composer/__tests__/SessionComposer-memo.test.js +10 -5
  36. package/composer/__tests__/SessionComposer-memo.test.js.map +1 -1
  37. package/composer/index.d.ts +3 -1
  38. package/composer/index.d.ts.map +1 -1
  39. package/composer/index.js +1 -0
  40. package/composer/index.js.map +1 -1
  41. package/dashboard/DashboardFailedRuns.d.ts +19 -0
  42. package/dashboard/DashboardFailedRuns.d.ts.map +1 -0
  43. package/dashboard/DashboardFailedRuns.js +35 -0
  44. package/dashboard/DashboardFailedRuns.js.map +1 -0
  45. package/dashboard/DashboardKPICards.d.ts +19 -0
  46. package/dashboard/DashboardKPICards.d.ts.map +1 -0
  47. package/dashboard/DashboardKPICards.js +80 -0
  48. package/dashboard/DashboardKPICards.js.map +1 -0
  49. package/dashboard/OperationalDashboard.d.ts +37 -0
  50. package/dashboard/OperationalDashboard.d.ts.map +1 -0
  51. package/dashboard/OperationalDashboard.js +48 -0
  52. package/dashboard/OperationalDashboard.js.map +1 -0
  53. package/dashboard/index.d.ts +8 -0
  54. package/dashboard/index.d.ts.map +1 -0
  55. package/dashboard/index.js +9 -0
  56. package/dashboard/index.js.map +1 -0
  57. package/dashboard/types.d.ts +49 -0
  58. package/dashboard/types.d.ts.map +1 -0
  59. package/dashboard/types.js +2 -0
  60. package/dashboard/types.js.map +1 -0
  61. package/dashboard/useAgentExecutionSummary.d.ts +33 -0
  62. package/dashboard/useAgentExecutionSummary.d.ts.map +1 -0
  63. package/dashboard/useAgentExecutionSummary.js +32 -0
  64. package/dashboard/useAgentExecutionSummary.js.map +1 -0
  65. package/dashboard/useDashboardFailedRuns.d.ts +18 -0
  66. package/dashboard/useDashboardFailedRuns.d.ts.map +1 -0
  67. package/dashboard/useDashboardFailedRuns.js +86 -0
  68. package/dashboard/useDashboardFailedRuns.js.map +1 -0
  69. package/dashboard/useDashboardSummary.d.ts +32 -0
  70. package/dashboard/useDashboardSummary.d.ts.map +1 -0
  71. package/dashboard/useDashboardSummary.js +67 -0
  72. package/dashboard/useDashboardSummary.js.map +1 -0
  73. package/execution/ContextGauge.d.ts +45 -0
  74. package/execution/ContextGauge.d.ts.map +1 -0
  75. package/execution/ContextGauge.js +82 -0
  76. package/execution/ContextGauge.js.map +1 -0
  77. package/execution/InteractionModeBadge.d.ts +24 -0
  78. package/execution/InteractionModeBadge.d.ts.map +1 -0
  79. package/execution/InteractionModeBadge.js +29 -0
  80. package/execution/InteractionModeBadge.js.map +1 -0
  81. package/execution/MessageThread.d.ts +33 -3
  82. package/execution/MessageThread.d.ts.map +1 -1
  83. package/execution/MessageThread.js +51 -9
  84. package/execution/MessageThread.js.map +1 -1
  85. package/execution/PlanCompletionCard.d.ts +23 -0
  86. package/execution/PlanCompletionCard.d.ts.map +1 -0
  87. package/execution/PlanCompletionCard.js +28 -0
  88. package/execution/PlanCompletionCard.js.map +1 -0
  89. package/execution/SummarizationBadge.d.ts +30 -0
  90. package/execution/SummarizationBadge.d.ts.map +1 -0
  91. package/execution/SummarizationBadge.js +61 -0
  92. package/execution/SummarizationBadge.js.map +1 -0
  93. package/execution/SummarizationCard.d.ts +27 -0
  94. package/execution/SummarizationCard.d.ts.map +1 -0
  95. package/execution/SummarizationCard.js +47 -0
  96. package/execution/SummarizationCard.js.map +1 -0
  97. package/execution/__tests__/PlanCompletionCard.test.d.ts +2 -0
  98. package/execution/__tests__/PlanCompletionCard.test.d.ts.map +1 -0
  99. package/execution/__tests__/PlanCompletionCard.test.js +53 -0
  100. package/execution/__tests__/PlanCompletionCard.test.js.map +1 -0
  101. package/execution/__tests__/buildThreadItems-plan-completion.test.d.ts +2 -0
  102. package/execution/__tests__/buildThreadItems-plan-completion.test.d.ts.map +1 -0
  103. package/execution/__tests__/buildThreadItems-plan-completion.test.js +137 -0
  104. package/execution/__tests__/buildThreadItems-plan-completion.test.js.map +1 -0
  105. package/execution/__tests__/useContextWindow.test.d.ts +2 -0
  106. package/execution/__tests__/useContextWindow.test.d.ts.map +1 -0
  107. package/execution/__tests__/useContextWindow.test.js +121 -0
  108. package/execution/__tests__/useContextWindow.test.js.map +1 -0
  109. package/execution/index.d.ts +12 -0
  110. package/execution/index.d.ts.map +1 -1
  111. package/execution/index.js +6 -0
  112. package/execution/index.js.map +1 -1
  113. package/execution/useContextWindow.d.ts +71 -0
  114. package/execution/useContextWindow.d.ts.map +1 -0
  115. package/execution/useContextWindow.js +91 -0
  116. package/execution/useContextWindow.js.map +1 -0
  117. package/execution/useCreateAgentExecution.d.ts +9 -0
  118. package/execution/useCreateAgentExecution.d.ts.map +1 -1
  119. package/execution/useCreateAgentExecution.js +15 -3
  120. package/execution/useCreateAgentExecution.js.map +1 -1
  121. package/index.d.ts +9 -4
  122. package/index.d.ts.map +1 -1
  123. package/index.js +12 -2
  124. package/index.js.map +1 -1
  125. package/internal/VirtualizedThread.d.ts +2 -1
  126. package/internal/VirtualizedThread.d.ts.map +1 -1
  127. package/internal/VirtualizedThread.js +3 -2
  128. package/internal/VirtualizedThread.js.map +1 -1
  129. package/internal/store/index.d.ts +1 -0
  130. package/internal/store/index.d.ts.map +1 -1
  131. package/internal/store/index.js +1 -0
  132. package/internal/store/index.js.map +1 -1
  133. package/internal/store/workflow-execution-event-store.d.ts +92 -0
  134. package/internal/store/workflow-execution-event-store.d.ts.map +1 -0
  135. package/internal/store/workflow-execution-event-store.js +298 -0
  136. package/internal/store/workflow-execution-event-store.js.map +1 -0
  137. package/library/ScopeToggle.d.ts +13 -9
  138. package/library/ScopeToggle.d.ts.map +1 -1
  139. package/library/ScopeToggle.js +43 -22
  140. package/library/ScopeToggle.js.map +1 -1
  141. package/library/VisibilityToggle.js +14 -5
  142. package/library/VisibilityToggle.js.map +1 -1
  143. package/library/index.d.ts +1 -0
  144. package/library/index.d.ts.map +1 -1
  145. package/library/index.js +1 -0
  146. package/library/index.js.map +1 -1
  147. package/library/useExportResource.d.ts +3 -2
  148. package/library/useExportResource.d.ts.map +1 -1
  149. package/library/useExportResource.js +11 -6
  150. package/library/useExportResource.js.map +1 -1
  151. package/mcp-server/McpServerDetailView.d.ts.map +1 -1
  152. package/mcp-server/McpServerDetailView.js +25 -13
  153. package/mcp-server/McpServerDetailView.js.map +1 -1
  154. package/mcp-server/McpServerPicker.d.ts.map +1 -1
  155. package/mcp-server/McpServerPicker.js +4 -2
  156. package/mcp-server/McpServerPicker.js.map +1 -1
  157. package/package.json +16 -5
  158. package/provider.d.ts.map +1 -1
  159. package/provider.js +164 -1
  160. package/provider.js.map +1 -1
  161. package/resource-detail/ResourceDetailShell.d.ts +1 -1
  162. package/resource-detail/ResourceDetailShell.d.ts.map +1 -1
  163. package/resource-detail/ResourceDetailShell.js +6 -6
  164. package/resource-detail/ResourceDetailShell.js.map +1 -1
  165. package/resource-detail/types.d.ts +23 -0
  166. package/resource-detail/types.d.ts.map +1 -1
  167. package/resource-detail/useDeleteResource.d.ts +1 -1
  168. package/resource-detail/useDeleteResource.d.ts.map +1 -1
  169. package/resource-detail/useDeleteResource.js +5 -0
  170. package/resource-detail/useDeleteResource.js.map +1 -1
  171. package/resource-workbench/components/ResourceWorkbench.d.ts.map +1 -1
  172. package/resource-workbench/components/ResourceWorkbench.js +2 -1
  173. package/resource-workbench/components/ResourceWorkbench.js.map +1 -1
  174. package/session/useNewSessionFlow.d.ts.map +1 -1
  175. package/session/useNewSessionFlow.js +1 -0
  176. package/session/useNewSessionFlow.js.map +1 -1
  177. package/session/useSessionConversation.d.ts +7 -0
  178. package/session/useSessionConversation.d.ts.map +1 -1
  179. package/session/useSessionConversation.js +1 -0
  180. package/session/useSessionConversation.js.map +1 -1
  181. package/session/useSessionPageFlow.d.ts.map +1 -1
  182. package/session/useSessionPageFlow.js +1 -0
  183. package/session/useSessionPageFlow.js.map +1 -1
  184. package/session/useSessionUsage.d.ts.map +1 -1
  185. package/session/useSessionUsage.js +65 -4
  186. package/session/useSessionUsage.js.map +1 -1
  187. package/settings/UsageSection.d.ts.map +1 -1
  188. package/settings/UsageSection.js +1 -4
  189. package/settings/UsageSection.js.map +1 -1
  190. package/skill/SkillPicker.d.ts.map +1 -1
  191. package/skill/SkillPicker.js +4 -2
  192. package/skill/SkillPicker.js.map +1 -1
  193. package/src/activity/group-activity.ts +65 -0
  194. package/src/activity/index.ts +13 -0
  195. package/src/activity/types.ts +35 -0
  196. package/src/activity/useRecentActivity.ts +131 -0
  197. package/src/agent/AgentPicker.tsx +6 -1
  198. package/src/billing/BillingSection.tsx +3 -2
  199. package/src/composer/ComposerToolbar.tsx +19 -1
  200. package/src/composer/InteractionModePicker.tsx +189 -0
  201. package/src/composer/SessionComposer.tsx +85 -8
  202. package/src/composer/__tests__/SessionComposer-memo.test.ts +11 -6
  203. package/src/composer/index.ts +7 -0
  204. package/src/dashboard/DashboardFailedRuns.tsx +109 -0
  205. package/src/dashboard/DashboardKPICards.tsx +128 -0
  206. package/src/dashboard/OperationalDashboard.tsx +96 -0
  207. package/src/dashboard/index.ts +37 -0
  208. package/src/dashboard/types.ts +50 -0
  209. package/src/dashboard/useAgentExecutionSummary.ts +71 -0
  210. package/src/dashboard/useDashboardFailedRuns.ts +122 -0
  211. package/src/dashboard/useDashboardSummary.ts +109 -0
  212. package/src/execution/ContextGauge.tsx +243 -0
  213. package/src/execution/InteractionModeBadge.tsx +70 -0
  214. package/src/execution/MessageThread.tsx +88 -3
  215. package/src/execution/PlanCompletionCard.tsx +105 -0
  216. package/src/execution/SummarizationBadge.tsx +188 -0
  217. package/src/execution/SummarizationCard.tsx +126 -0
  218. package/src/execution/__tests__/PlanCompletionCard.test.tsx +67 -0
  219. package/src/execution/__tests__/buildThreadItems-plan-completion.test.ts +197 -0
  220. package/src/execution/__tests__/useContextWindow.test.ts +167 -0
  221. package/src/execution/index.ts +22 -0
  222. package/src/execution/useContextWindow.ts +148 -0
  223. package/src/execution/useCreateAgentExecution.ts +26 -3
  224. package/src/index.ts +222 -0
  225. package/src/internal/VirtualizedThread.tsx +4 -1
  226. package/src/internal/store/index.ts +6 -0
  227. package/src/internal/store/workflow-execution-event-store.ts +391 -0
  228. package/src/library/ScopeToggle.tsx +88 -20
  229. package/src/library/VisibilityToggle.tsx +54 -13
  230. package/src/library/index.ts +2 -0
  231. package/src/library/useExportResource.ts +12 -9
  232. package/src/mcp-server/McpServerDetailView.tsx +80 -148
  233. package/src/mcp-server/McpServerPicker.tsx +6 -1
  234. package/src/provider.tsx +195 -8
  235. package/src/resource-detail/ResourceDetailShell.tsx +21 -4
  236. package/src/resource-detail/types.ts +25 -0
  237. package/src/resource-detail/useDeleteResource.ts +6 -1
  238. package/src/resource-workbench/components/ResourceWorkbench.tsx +4 -0
  239. package/src/session/useNewSessionFlow.ts +1 -0
  240. package/src/session/useSessionConversation.ts +8 -0
  241. package/src/session/useSessionPageFlow.ts +1 -0
  242. package/src/session/useSessionUsage.ts +72 -4
  243. package/src/settings/UsageSection.tsx +1 -9
  244. package/src/skill/SkillPicker.tsx +6 -1
  245. package/src/workflow/ApprovalFormBuilder.tsx +1017 -0
  246. package/src/workflow/BranchConditionBuilder.tsx +451 -0
  247. package/src/workflow/CanvasActionsContext.ts +12 -0
  248. package/src/workflow/CanvasContextMenu.tsx +364 -0
  249. package/src/workflow/CanvasTaskNode.tsx +372 -0
  250. package/src/workflow/CanvasTransitionEdge.tsx +122 -0
  251. package/src/workflow/CostByWorkflowChart.tsx +120 -0
  252. package/src/workflow/ExecutionSummaryWidget.tsx +194 -0
  253. package/src/workflow/ExecutionTrendChart.tsx +157 -0
  254. package/src/workflow/FailedRunsWidget.tsx +109 -0
  255. package/src/workflow/PendingApprovalsWidget.tsx +115 -0
  256. package/src/workflow/TaskConfigForm.tsx +618 -0
  257. package/src/workflow/TaskKindRegistryContext.ts +36 -0
  258. package/src/workflow/TaskPickerPopover.tsx +326 -0
  259. package/src/workflow/WorkflowArchitectDialog.tsx +505 -0
  260. package/src/workflow/WorkflowCanvasEditor.tsx +651 -0
  261. package/src/workflow/WorkflowCanvasInner.tsx +160 -0
  262. package/src/workflow/WorkflowDashboard.tsx +124 -0
  263. package/src/workflow/WorkflowDetailView.tsx +527 -0
  264. package/src/workflow/WorkflowEditorView.tsx +547 -0
  265. package/src/workflow/WorkflowExecutionApprovalCard.tsx +129 -0
  266. package/src/workflow/WorkflowExecutionArtifactPanel.tsx +112 -0
  267. package/src/workflow/WorkflowExecutionCostPanel.tsx +131 -0
  268. package/src/workflow/WorkflowExecutionHeader.tsx +194 -0
  269. package/src/workflow/WorkflowExecutionPhaseBadge.tsx +188 -0
  270. package/src/workflow/WorkflowExecutionTaskPanel.tsx +135 -0
  271. package/src/workflow/WorkflowExecutionTimeline.tsx +118 -0
  272. package/src/workflow/WorkflowExecutionTimelineEvent.tsx +488 -0
  273. package/src/workflow/WorkflowExecutionViewer.tsx +248 -0
  274. package/src/workflow/WorkflowInspectorPanel.tsx +568 -0
  275. package/src/workflow/WorkflowRefinePanel.tsx +411 -0
  276. package/src/workflow/WorkflowRepairCard.tsx +433 -0
  277. package/src/workflow/WorkflowRunDialog.tsx +220 -0
  278. package/src/workflow/WorkflowRunForm.tsx +245 -0
  279. package/src/workflow/WorkflowTaskList.tsx +177 -0
  280. package/src/workflow/WorkflowTaskPalette.tsx +248 -0
  281. package/src/workflow/WorkflowTopologyGraph.tsx +250 -0
  282. package/src/workflow/WorkflowYamlEditor.tsx +271 -0
  283. package/src/workflow/__tests__/starter-workflow-yaml.test.ts +57 -0
  284. package/src/workflow/canvas-constants.ts +87 -0
  285. package/src/workflow/canvas-icons.tsx +36 -0
  286. package/src/workflow/extract-workflow-yaml.ts +87 -0
  287. package/src/workflow/graph-commands.ts +675 -0
  288. package/src/workflow/index.ts +375 -0
  289. package/src/workflow/serialize-workflow-yaml.ts +546 -0
  290. package/src/workflow/starter-workflow-yaml.ts +29 -0
  291. package/src/workflow/types.ts +99 -0
  292. package/src/workflow/useCanvasKeyboardShortcuts.ts +134 -0
  293. package/src/workflow/useDiagnoseExecutionFlow.ts +378 -0
  294. package/src/workflow/useGraphHistory.ts +138 -0
  295. package/src/workflow/usePendingApprovals.ts +89 -0
  296. package/src/workflow/useRefineWorkflowFlow.ts +321 -0
  297. package/src/workflow/useResolveAgentExecutionSession.ts +57 -0
  298. package/src/workflow/useRunWorkflowFlow.ts +235 -0
  299. package/src/workflow/useTaskKindRegistry.ts +135 -0
  300. package/src/workflow/useWorkflow.ts +78 -0
  301. package/src/workflow/useWorkflowArchitectFlow.ts +303 -0
  302. package/src/workflow/useWorkflowCanvas.ts +882 -0
  303. package/src/workflow/useWorkflowCount.ts +66 -0
  304. package/src/workflow/useWorkflowDashboardSummary.ts +71 -0
  305. package/src/workflow/useWorkflowEditor.ts +106 -0
  306. package/src/workflow/useWorkflowExecution.ts +67 -0
  307. package/src/workflow/useWorkflowExecutionActions.ts +179 -0
  308. package/src/workflow/useWorkflowExecutionArtifacts.ts +57 -0
  309. package/src/workflow/useWorkflowExecutionEventLog.ts +111 -0
  310. package/src/workflow/useWorkflowExecutionEventStream.ts +244 -0
  311. package/src/workflow/useWorkflowExecutionList.ts +121 -0
  312. package/src/workflow/useWorkflowInstances.ts +62 -0
  313. package/src/workflow/useWorkflowList.ts +79 -0
  314. package/src/workflow/useWorkflowSave.ts +84 -0
  315. package/src/workflow/useWorkflowTopology.ts +229 -0
  316. package/src/workflow/useWorkflowValidation.ts +329 -0
  317. package/src/workflow/useWorkflowYaml.ts +49 -0
  318. package/src/workflow/workflow-graph-conversions.ts +796 -0
  319. package/src/workflow/workflow-graph-model.ts +83 -0
  320. package/src/workflow/workflow-yaml-diff.ts +132 -0
  321. package/styles.css +1 -1
  322. package/workflow/ApprovalFormBuilder.d.ts +24 -0
  323. package/workflow/ApprovalFormBuilder.d.ts.map +1 -0
  324. package/workflow/ApprovalFormBuilder.js +347 -0
  325. package/workflow/ApprovalFormBuilder.js.map +1 -0
  326. package/workflow/BranchConditionBuilder.d.ts +29 -0
  327. package/workflow/BranchConditionBuilder.d.ts.map +1 -0
  328. package/workflow/BranchConditionBuilder.js +170 -0
  329. package/workflow/BranchConditionBuilder.js.map +1 -0
  330. package/workflow/CanvasActionsContext.d.ts +8 -0
  331. package/workflow/CanvasActionsContext.d.ts.map +1 -0
  332. package/workflow/CanvasActionsContext.js +4 -0
  333. package/workflow/CanvasActionsContext.js.map +1 -0
  334. package/workflow/CanvasContextMenu.d.ts +59 -0
  335. package/workflow/CanvasContextMenu.d.ts.map +1 -0
  336. package/workflow/CanvasContextMenu.js +98 -0
  337. package/workflow/CanvasContextMenu.js.map +1 -0
  338. package/workflow/CanvasTaskNode.d.ts +21 -0
  339. package/workflow/CanvasTaskNode.d.ts.map +1 -0
  340. package/workflow/CanvasTaskNode.js +125 -0
  341. package/workflow/CanvasTaskNode.js.map +1 -0
  342. package/workflow/CanvasTransitionEdge.d.ts +24 -0
  343. package/workflow/CanvasTransitionEdge.d.ts.map +1 -0
  344. package/workflow/CanvasTransitionEdge.js +50 -0
  345. package/workflow/CanvasTransitionEdge.js.map +1 -0
  346. package/workflow/CostByWorkflowChart.d.ts +15 -0
  347. package/workflow/CostByWorkflowChart.d.ts.map +1 -0
  348. package/workflow/CostByWorkflowChart.js +45 -0
  349. package/workflow/CostByWorkflowChart.js.map +1 -0
  350. package/workflow/ExecutionSummaryWidget.d.ts +16 -0
  351. package/workflow/ExecutionSummaryWidget.d.ts.map +1 -0
  352. package/workflow/ExecutionSummaryWidget.js +93 -0
  353. package/workflow/ExecutionSummaryWidget.js.map +1 -0
  354. package/workflow/ExecutionTrendChart.d.ts +14 -0
  355. package/workflow/ExecutionTrendChart.d.ts.map +1 -0
  356. package/workflow/ExecutionTrendChart.js +67 -0
  357. package/workflow/ExecutionTrendChart.js.map +1 -0
  358. package/workflow/FailedRunsWidget.d.ts +19 -0
  359. package/workflow/FailedRunsWidget.d.ts.map +1 -0
  360. package/workflow/FailedRunsWidget.js +37 -0
  361. package/workflow/FailedRunsWidget.js.map +1 -0
  362. package/workflow/PendingApprovalsWidget.d.ts +19 -0
  363. package/workflow/PendingApprovalsWidget.d.ts.map +1 -0
  364. package/workflow/PendingApprovalsWidget.js +35 -0
  365. package/workflow/PendingApprovalsWidget.js.map +1 -0
  366. package/workflow/TaskConfigForm.d.ts +29 -0
  367. package/workflow/TaskConfigForm.d.ts.map +1 -0
  368. package/workflow/TaskConfigForm.js +230 -0
  369. package/workflow/TaskConfigForm.js.map +1 -0
  370. package/workflow/TaskKindRegistryContext.d.ts +24 -0
  371. package/workflow/TaskKindRegistryContext.d.ts.map +1 -0
  372. package/workflow/TaskKindRegistryContext.js +25 -0
  373. package/workflow/TaskKindRegistryContext.js.map +1 -0
  374. package/workflow/TaskPickerPopover.d.ts +33 -0
  375. package/workflow/TaskPickerPopover.d.ts.map +1 -0
  376. package/workflow/TaskPickerPopover.js +110 -0
  377. package/workflow/TaskPickerPopover.js.map +1 -0
  378. package/workflow/WorkflowArchitectDialog.d.ts +48 -0
  379. package/workflow/WorkflowArchitectDialog.d.ts.map +1 -0
  380. package/workflow/WorkflowArchitectDialog.js +129 -0
  381. package/workflow/WorkflowArchitectDialog.js.map +1 -0
  382. package/workflow/WorkflowCanvasEditor.d.ts +38 -0
  383. package/workflow/WorkflowCanvasEditor.d.ts.map +1 -0
  384. package/workflow/WorkflowCanvasEditor.js +287 -0
  385. package/workflow/WorkflowCanvasEditor.js.map +1 -0
  386. package/workflow/WorkflowCanvasInner.d.ts +32 -0
  387. package/workflow/WorkflowCanvasInner.d.ts.map +1 -0
  388. package/workflow/WorkflowCanvasInner.js +49 -0
  389. package/workflow/WorkflowCanvasInner.js.map +1 -0
  390. package/workflow/WorkflowDashboard.d.ts +35 -0
  391. package/workflow/WorkflowDashboard.d.ts.map +1 -0
  392. package/workflow/WorkflowDashboard.js +59 -0
  393. package/workflow/WorkflowDashboard.js.map +1 -0
  394. package/workflow/WorkflowDetailView.d.ts +63 -0
  395. package/workflow/WorkflowDetailView.d.ts.map +1 -0
  396. package/workflow/WorkflowDetailView.js +202 -0
  397. package/workflow/WorkflowDetailView.js.map +1 -0
  398. package/workflow/WorkflowEditorView.d.ts +43 -0
  399. package/workflow/WorkflowEditorView.d.ts.map +1 -0
  400. package/workflow/WorkflowEditorView.js +165 -0
  401. package/workflow/WorkflowEditorView.js.map +1 -0
  402. package/workflow/WorkflowExecutionApprovalCard.d.ts +27 -0
  403. package/workflow/WorkflowExecutionApprovalCard.d.ts.map +1 -0
  404. package/workflow/WorkflowExecutionApprovalCard.js +32 -0
  405. package/workflow/WorkflowExecutionApprovalCard.js.map +1 -0
  406. package/workflow/WorkflowExecutionArtifactPanel.d.ts +15 -0
  407. package/workflow/WorkflowExecutionArtifactPanel.d.ts.map +1 -0
  408. package/workflow/WorkflowExecutionArtifactPanel.js +53 -0
  409. package/workflow/WorkflowExecutionArtifactPanel.js.map +1 -0
  410. package/workflow/WorkflowExecutionCostPanel.d.ts +18 -0
  411. package/workflow/WorkflowExecutionCostPanel.d.ts.map +1 -0
  412. package/workflow/WorkflowExecutionCostPanel.js +44 -0
  413. package/workflow/WorkflowExecutionCostPanel.js.map +1 -0
  414. package/workflow/WorkflowExecutionHeader.d.ts +26 -0
  415. package/workflow/WorkflowExecutionHeader.d.ts.map +1 -0
  416. package/workflow/WorkflowExecutionHeader.js +68 -0
  417. package/workflow/WorkflowExecutionHeader.js.map +1 -0
  418. package/workflow/WorkflowExecutionPhaseBadge.d.ts +23 -0
  419. package/workflow/WorkflowExecutionPhaseBadge.d.ts.map +1 -0
  420. package/workflow/WorkflowExecutionPhaseBadge.js +99 -0
  421. package/workflow/WorkflowExecutionPhaseBadge.js.map +1 -0
  422. package/workflow/WorkflowExecutionTaskPanel.d.ts +24 -0
  423. package/workflow/WorkflowExecutionTaskPanel.d.ts.map +1 -0
  424. package/workflow/WorkflowExecutionTaskPanel.js +59 -0
  425. package/workflow/WorkflowExecutionTaskPanel.js.map +1 -0
  426. package/workflow/WorkflowExecutionTimeline.d.ts +27 -0
  427. package/workflow/WorkflowExecutionTimeline.d.ts.map +1 -0
  428. package/workflow/WorkflowExecutionTimeline.js +51 -0
  429. package/workflow/WorkflowExecutionTimeline.js.map +1 -0
  430. package/workflow/WorkflowExecutionTimelineEvent.d.ts +18 -0
  431. package/workflow/WorkflowExecutionTimelineEvent.d.ts.map +1 -0
  432. package/workflow/WorkflowExecutionTimelineEvent.js +210 -0
  433. package/workflow/WorkflowExecutionTimelineEvent.js.map +1 -0
  434. package/workflow/WorkflowExecutionViewer.d.ts +45 -0
  435. package/workflow/WorkflowExecutionViewer.d.ts.map +1 -0
  436. package/workflow/WorkflowExecutionViewer.js +75 -0
  437. package/workflow/WorkflowExecutionViewer.js.map +1 -0
  438. package/workflow/WorkflowInspectorPanel.d.ts +46 -0
  439. package/workflow/WorkflowInspectorPanel.d.ts.map +1 -0
  440. package/workflow/WorkflowInspectorPanel.js +152 -0
  441. package/workflow/WorkflowInspectorPanel.js.map +1 -0
  442. package/workflow/WorkflowRefinePanel.d.ts +30 -0
  443. package/workflow/WorkflowRefinePanel.d.ts.map +1 -0
  444. package/workflow/WorkflowRefinePanel.js +107 -0
  445. package/workflow/WorkflowRefinePanel.js.map +1 -0
  446. package/workflow/WorkflowRepairCard.d.ts +35 -0
  447. package/workflow/WorkflowRepairCard.d.ts.map +1 -0
  448. package/workflow/WorkflowRepairCard.js +113 -0
  449. package/workflow/WorkflowRepairCard.js.map +1 -0
  450. package/workflow/WorkflowRunDialog.d.ts +51 -0
  451. package/workflow/WorkflowRunDialog.d.ts.map +1 -0
  452. package/workflow/WorkflowRunDialog.js +75 -0
  453. package/workflow/WorkflowRunDialog.js.map +1 -0
  454. package/workflow/WorkflowRunForm.d.ts +62 -0
  455. package/workflow/WorkflowRunForm.d.ts.map +1 -0
  456. package/workflow/WorkflowRunForm.js +64 -0
  457. package/workflow/WorkflowRunForm.js.map +1 -0
  458. package/workflow/WorkflowTaskList.d.ts +25 -0
  459. package/workflow/WorkflowTaskList.d.ts.map +1 -0
  460. package/workflow/WorkflowTaskList.js +89 -0
  461. package/workflow/WorkflowTaskList.js.map +1 -0
  462. package/workflow/WorkflowTaskPalette.d.ts +22 -0
  463. package/workflow/WorkflowTaskPalette.d.ts.map +1 -0
  464. package/workflow/WorkflowTaskPalette.js +83 -0
  465. package/workflow/WorkflowTaskPalette.js.map +1 -0
  466. package/workflow/WorkflowTopologyGraph.d.ts +22 -0
  467. package/workflow/WorkflowTopologyGraph.d.ts.map +1 -0
  468. package/workflow/WorkflowTopologyGraph.js +123 -0
  469. package/workflow/WorkflowTopologyGraph.js.map +1 -0
  470. package/workflow/WorkflowYamlEditor.d.ts +43 -0
  471. package/workflow/WorkflowYamlEditor.d.ts.map +1 -0
  472. package/workflow/WorkflowYamlEditor.js +215 -0
  473. package/workflow/WorkflowYamlEditor.js.map +1 -0
  474. package/workflow/__tests__/starter-workflow-yaml.test.d.ts +2 -0
  475. package/workflow/__tests__/starter-workflow-yaml.test.d.ts.map +1 -0
  476. package/workflow/__tests__/starter-workflow-yaml.test.js +44 -0
  477. package/workflow/__tests__/starter-workflow-yaml.test.js.map +1 -0
  478. package/workflow/canvas-constants.d.ts +56 -0
  479. package/workflow/canvas-constants.d.ts.map +1 -0
  480. package/workflow/canvas-constants.js +74 -0
  481. package/workflow/canvas-constants.js.map +1 -0
  482. package/workflow/canvas-icons.d.ts +13 -0
  483. package/workflow/canvas-icons.d.ts.map +1 -0
  484. package/workflow/canvas-icons.js +21 -0
  485. package/workflow/canvas-icons.js.map +1 -0
  486. package/workflow/extract-workflow-yaml.d.ts +22 -0
  487. package/workflow/extract-workflow-yaml.d.ts.map +1 -0
  488. package/workflow/extract-workflow-yaml.js +63 -0
  489. package/workflow/extract-workflow-yaml.js.map +1 -0
  490. package/workflow/graph-commands.d.ts +209 -0
  491. package/workflow/graph-commands.d.ts.map +1 -0
  492. package/workflow/graph-commands.js +516 -0
  493. package/workflow/graph-commands.js.map +1 -0
  494. package/workflow/index.d.ts +66 -0
  495. package/workflow/index.d.ts.map +1 -0
  496. package/workflow/index.js +88 -0
  497. package/workflow/index.js.map +1 -0
  498. package/workflow/serialize-workflow-yaml.d.ts +39 -0
  499. package/workflow/serialize-workflow-yaml.d.ts.map +1 -0
  500. package/workflow/serialize-workflow-yaml.js +413 -0
  501. package/workflow/serialize-workflow-yaml.js.map +1 -0
  502. package/workflow/starter-workflow-yaml.d.ts +12 -0
  503. package/workflow/starter-workflow-yaml.d.ts.map +1 -0
  504. package/workflow/starter-workflow-yaml.js +30 -0
  505. package/workflow/starter-workflow-yaml.js.map +1 -0
  506. package/workflow/types.d.ts +80 -0
  507. package/workflow/types.d.ts.map +1 -0
  508. package/workflow/types.js +2 -0
  509. package/workflow/types.js.map +1 -0
  510. package/workflow/useCanvasKeyboardShortcuts.d.ts +34 -0
  511. package/workflow/useCanvasKeyboardShortcuts.d.ts.map +1 -0
  512. package/workflow/useCanvasKeyboardShortcuts.js +108 -0
  513. package/workflow/useCanvasKeyboardShortcuts.js.map +1 -0
  514. package/workflow/useDiagnoseExecutionFlow.d.ts +87 -0
  515. package/workflow/useDiagnoseExecutionFlow.d.ts.map +1 -0
  516. package/workflow/useDiagnoseExecutionFlow.js +257 -0
  517. package/workflow/useDiagnoseExecutionFlow.js.map +1 -0
  518. package/workflow/useGraphHistory.d.ts +28 -0
  519. package/workflow/useGraphHistory.d.ts.map +1 -0
  520. package/workflow/useGraphHistory.js +106 -0
  521. package/workflow/useGraphHistory.js.map +1 -0
  522. package/workflow/usePendingApprovals.d.ts +35 -0
  523. package/workflow/usePendingApprovals.d.ts.map +1 -0
  524. package/workflow/usePendingApprovals.js +50 -0
  525. package/workflow/usePendingApprovals.js.map +1 -0
  526. package/workflow/useRefineWorkflowFlow.d.ts +75 -0
  527. package/workflow/useRefineWorkflowFlow.d.ts.map +1 -0
  528. package/workflow/useRefineWorkflowFlow.js +216 -0
  529. package/workflow/useRefineWorkflowFlow.js.map +1 -0
  530. package/workflow/useResolveAgentExecutionSession.d.ts +33 -0
  531. package/workflow/useResolveAgentExecutionSession.d.ts.map +1 -0
  532. package/workflow/useResolveAgentExecutionSession.js +37 -0
  533. package/workflow/useResolveAgentExecutionSession.js.map +1 -0
  534. package/workflow/useRunWorkflowFlow.d.ts +82 -0
  535. package/workflow/useRunWorkflowFlow.d.ts.map +1 -0
  536. package/workflow/useRunWorkflowFlow.js +145 -0
  537. package/workflow/useRunWorkflowFlow.js.map +1 -0
  538. package/workflow/useTaskKindRegistry.d.ts +96 -0
  539. package/workflow/useTaskKindRegistry.d.ts.map +1 -0
  540. package/workflow/useTaskKindRegistry.js +75 -0
  541. package/workflow/useTaskKindRegistry.js.map +1 -0
  542. package/workflow/useWorkflow.d.ts +47 -0
  543. package/workflow/useWorkflow.d.ts.map +1 -0
  544. package/workflow/useWorkflow.js +53 -0
  545. package/workflow/useWorkflow.js.map +1 -0
  546. package/workflow/useWorkflowArchitectFlow.d.ts +96 -0
  547. package/workflow/useWorkflowArchitectFlow.d.ts.map +1 -0
  548. package/workflow/useWorkflowArchitectFlow.js +179 -0
  549. package/workflow/useWorkflowArchitectFlow.js.map +1 -0
  550. package/workflow/useWorkflowCanvas.d.ts +66 -0
  551. package/workflow/useWorkflowCanvas.d.ts.map +1 -0
  552. package/workflow/useWorkflowCanvas.js +628 -0
  553. package/workflow/useWorkflowCanvas.js.map +1 -0
  554. package/workflow/useWorkflowCount.d.ts +47 -0
  555. package/workflow/useWorkflowCount.d.ts.map +1 -0
  556. package/workflow/useWorkflowCount.js +26 -0
  557. package/workflow/useWorkflowCount.js.map +1 -0
  558. package/workflow/useWorkflowDashboardSummary.d.ts +34 -0
  559. package/workflow/useWorkflowDashboardSummary.d.ts.map +1 -0
  560. package/workflow/useWorkflowDashboardSummary.js +33 -0
  561. package/workflow/useWorkflowDashboardSummary.js.map +1 -0
  562. package/workflow/useWorkflowEditor.d.ts +45 -0
  563. package/workflow/useWorkflowEditor.d.ts.map +1 -0
  564. package/workflow/useWorkflowEditor.js +52 -0
  565. package/workflow/useWorkflowEditor.js.map +1 -0
  566. package/workflow/useWorkflowExecution.d.ts +37 -0
  567. package/workflow/useWorkflowExecution.d.ts.map +1 -0
  568. package/workflow/useWorkflowExecution.js +43 -0
  569. package/workflow/useWorkflowExecution.js.map +1 -0
  570. package/workflow/useWorkflowExecutionActions.d.ts +41 -0
  571. package/workflow/useWorkflowExecutionActions.d.ts.map +1 -0
  572. package/workflow/useWorkflowExecutionActions.js +86 -0
  573. package/workflow/useWorkflowExecutionActions.js.map +1 -0
  574. package/workflow/useWorkflowExecutionArtifacts.d.ts +26 -0
  575. package/workflow/useWorkflowExecutionArtifacts.d.ts.map +1 -0
  576. package/workflow/useWorkflowExecutionArtifacts.js +29 -0
  577. package/workflow/useWorkflowExecutionArtifacts.js.map +1 -0
  578. package/workflow/useWorkflowExecutionEventLog.d.ts +47 -0
  579. package/workflow/useWorkflowExecutionEventLog.d.ts.map +1 -0
  580. package/workflow/useWorkflowExecutionEventLog.js +59 -0
  581. package/workflow/useWorkflowExecutionEventLog.js.map +1 -0
  582. package/workflow/useWorkflowExecutionEventStream.d.ts +61 -0
  583. package/workflow/useWorkflowExecutionEventStream.d.ts.map +1 -0
  584. package/workflow/useWorkflowExecutionEventStream.js +161 -0
  585. package/workflow/useWorkflowExecutionEventStream.js.map +1 -0
  586. package/workflow/useWorkflowExecutionList.d.ts +49 -0
  587. package/workflow/useWorkflowExecutionList.d.ts.map +1 -0
  588. package/workflow/useWorkflowExecutionList.js +65 -0
  589. package/workflow/useWorkflowExecutionList.js.map +1 -0
  590. package/workflow/useWorkflowInstances.d.ts +30 -0
  591. package/workflow/useWorkflowInstances.d.ts.map +1 -0
  592. package/workflow/useWorkflowInstances.js +33 -0
  593. package/workflow/useWorkflowInstances.js.map +1 -0
  594. package/workflow/useWorkflowList.d.ts +57 -0
  595. package/workflow/useWorkflowList.d.ts.map +1 -0
  596. package/workflow/useWorkflowList.js +29 -0
  597. package/workflow/useWorkflowList.js.map +1 -0
  598. package/workflow/useWorkflowSave.d.ts +25 -0
  599. package/workflow/useWorkflowSave.d.ts.map +1 -0
  600. package/workflow/useWorkflowSave.js +61 -0
  601. package/workflow/useWorkflowSave.js.map +1 -0
  602. package/workflow/useWorkflowTopology.d.ts +40 -0
  603. package/workflow/useWorkflowTopology.d.ts.map +1 -0
  604. package/workflow/useWorkflowTopology.js +163 -0
  605. package/workflow/useWorkflowTopology.js.map +1 -0
  606. package/workflow/useWorkflowValidation.d.ts +27 -0
  607. package/workflow/useWorkflowValidation.d.ts.map +1 -0
  608. package/workflow/useWorkflowValidation.js +253 -0
  609. package/workflow/useWorkflowValidation.js.map +1 -0
  610. package/workflow/useWorkflowYaml.d.ts +26 -0
  611. package/workflow/useWorkflowYaml.d.ts.map +1 -0
  612. package/workflow/useWorkflowYaml.js +26 -0
  613. package/workflow/useWorkflowYaml.js.map +1 -0
  614. package/workflow/workflow-graph-conversions.d.ts +70 -0
  615. package/workflow/workflow-graph-conversions.d.ts.map +1 -0
  616. package/workflow/workflow-graph-conversions.js +634 -0
  617. package/workflow/workflow-graph-conversions.js.map +1 -0
  618. package/workflow/workflow-graph-model.d.ts +83 -0
  619. package/workflow/workflow-graph-model.d.ts.map +1 -0
  620. package/workflow/workflow-graph-model.js +5 -0
  621. package/workflow/workflow-graph-model.js.map +1 -0
  622. package/workflow/workflow-yaml-diff.d.ts +24 -0
  623. package/workflow/workflow-yaml-diff.d.ts.map +1 -0
  624. package/workflow/workflow-yaml-diff.js +96 -0
  625. package/workflow/workflow-yaml-diff.js.map +1 -0
@@ -0,0 +1,106 @@
1
+ "use client";
2
+ import { useState, useCallback, useRef, useEffect } from "react";
3
+ import { GraphHistory } from "./graph-commands";
4
+ /**
5
+ * React wrapper around {@link GraphHistory} providing undo/redo state
6
+ * management and keyboard shortcut binding.
7
+ *
8
+ * Keyboard shortcuts (Ctrl/Cmd+Z, Ctrl/Cmd+Shift+Z) are only active
9
+ * when the referenced container element contains the active focus target,
10
+ * preventing conflicts with other editors on the page.
11
+ *
12
+ * @param initialModel - The starting graph model (from YAML parse).
13
+ * @param containerRef - Ref to the DOM element that scopes keyboard shortcuts.
14
+ *
15
+ * @since T15 Batch 2 (Node Authoring)
16
+ */
17
+ export function useGraphHistory(initialModel, containerRef) {
18
+ const historyRef = useRef(null);
19
+ const [model, setModel] = useState(null);
20
+ const [, setVersion] = useState(0);
21
+ if (initialModel && !historyRef.current) {
22
+ historyRef.current = new GraphHistory(initialModel);
23
+ if (!model) {
24
+ setModel(initialModel);
25
+ }
26
+ }
27
+ const forceUpdate = useCallback(() => {
28
+ setVersion((v) => v + 1);
29
+ }, []);
30
+ const dispatch = useCallback((command) => {
31
+ const history = historyRef.current;
32
+ if (!history)
33
+ throw new Error("GraphHistory not initialized.");
34
+ const next = history.dispatch(command);
35
+ setModel(next);
36
+ forceUpdate();
37
+ return next;
38
+ }, [forceUpdate]);
39
+ const undo = useCallback(() => {
40
+ const history = historyRef.current;
41
+ if (!history?.canUndo)
42
+ return;
43
+ const next = history.undo();
44
+ setModel(next);
45
+ forceUpdate();
46
+ }, [forceUpdate]);
47
+ const redo = useCallback(() => {
48
+ const history = historyRef.current;
49
+ if (!history?.canRedo)
50
+ return;
51
+ const next = history.redo();
52
+ setModel(next);
53
+ forceUpdate();
54
+ }, [forceUpdate]);
55
+ const reset = useCallback((newModel) => {
56
+ if (historyRef.current) {
57
+ historyRef.current.reset(newModel);
58
+ }
59
+ else {
60
+ historyRef.current = new GraphHistory(newModel);
61
+ }
62
+ setModel(newModel);
63
+ forceUpdate();
64
+ }, [forceUpdate]);
65
+ // Keyboard shortcuts: Ctrl/Cmd+Z (undo), Ctrl/Cmd+Shift+Z (redo)
66
+ useEffect(() => {
67
+ const container = containerRef.current;
68
+ if (!container)
69
+ return;
70
+ function handleKeyDown(e) {
71
+ if (!container?.contains(document.activeElement) && document.activeElement !== container) {
72
+ return;
73
+ }
74
+ const isMod = e.metaKey || e.ctrlKey;
75
+ if (!isMod || e.key.toLowerCase() !== "z")
76
+ return;
77
+ e.preventDefault();
78
+ e.stopPropagation();
79
+ if (e.shiftKey) {
80
+ redo();
81
+ }
82
+ else {
83
+ undo();
84
+ }
85
+ }
86
+ document.addEventListener("keydown", handleKeyDown, true);
87
+ return () => document.removeEventListener("keydown", handleKeyDown, true);
88
+ }, [containerRef, undo, redo]);
89
+ const canUndo = historyRef.current?.canUndo ?? false;
90
+ const canRedo = historyRef.current?.canRedo ?? false;
91
+ const emptyModel = {
92
+ document: { dsl: "1.0.0", namespace: "", name: "", version: "0.0.1" },
93
+ nodes: [],
94
+ edges: [],
95
+ };
96
+ return {
97
+ currentModel: model ?? emptyModel,
98
+ canUndo,
99
+ canRedo,
100
+ dispatch,
101
+ undo,
102
+ redo,
103
+ reset,
104
+ };
105
+ }
106
+ //# sourceMappingURL=useGraphHistory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGraphHistory.js","sourceRoot":"","sources":["../../src/workflow/useGraphHistory.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIjE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAahD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAC7B,YAAuC,EACvC,YAA8C;IAE9C,MAAM,UAAU,GAAG,MAAM,CAAsB,IAAI,CAAC,CAAC;IACrD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAA4B,IAAI,CAAC,CAAC;IACpE,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,YAAY,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QACxC,UAAU,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,YAAY,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,QAAQ,CAAC,YAAY,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,WAAW,CAC1B,CAAC,OAAqB,EAAsB,EAAE;QAC5C,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,WAAW,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC,EACD,CAAC,WAAW,CAAC,CACd,CAAC;IAEF,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5B,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE,OAAO;YAAE,OAAO;QAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,WAAW,EAAE,CAAC;IAChB,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5B,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE,OAAO;YAAE,OAAO;QAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,WAAW,EAAE,CAAC;IAChB,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,MAAM,KAAK,GAAG,WAAW,CACvB,CAAC,QAA4B,EAAE,EAAE;QAC/B,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,OAAO,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC;QACD,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnB,WAAW,EAAE,CAAC;IAChB,CAAC,EACD,CAAC,WAAW,CAAC,CACd,CAAC;IAEF,iEAAiE;IACjE,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;QACvC,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,SAAS,aAAa,CAAC,CAAgB;YACrC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;gBACzF,OAAO;YACT,CAAC;YAED,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC;YACrC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,GAAG;gBAAE,OAAO;YAElD,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,CAAC,CAAC,eAAe,EAAE,CAAC;YAEpB,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACf,IAAI,EAAE,CAAC;YACT,CAAC;iBAAM,CAAC;gBACN,IAAI,EAAE,CAAC;YACT,CAAC;QACH,CAAC;QAED,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;QAC1D,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IAC5E,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAE/B,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC;IACrD,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC;IAErD,MAAM,UAAU,GAAuB;QACrC,QAAQ,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;QACrE,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,EAAE;KACV,CAAC;IAEF,OAAO;QACL,YAAY,EAAE,KAAK,IAAI,UAAU;QACjC,OAAO;QACP,OAAO;QACP,QAAQ;QACR,IAAI;QACJ,IAAI;QACJ,KAAK;KACN,CAAC;AACJ,CAAC"}
@@ -0,0 +1,35 @@
1
+ import type { PendingApproval } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/io_pb";
2
+ export interface UsePendingApprovalsOptions {
3
+ /** Organization slug. When empty, the hook does not fetch. */
4
+ readonly org: string | null | undefined;
5
+ /** Maximum results per page. @default 20 */
6
+ readonly pageSize?: number;
7
+ /** Refetch interval in milliseconds. `0` or `false` disables. @default 30000 */
8
+ readonly refetchInterval?: number | false;
9
+ }
10
+ export interface UsePendingApprovalsReturn {
11
+ readonly approvals: readonly PendingApproval[];
12
+ readonly totalCount: number;
13
+ readonly isLoading: boolean;
14
+ readonly isRefetching: boolean;
15
+ readonly error: Error | null;
16
+ readonly refetch: () => void;
17
+ }
18
+ /**
19
+ * Data hook that fetches pending human_input approvals for an organization.
20
+ *
21
+ * Returns workflow executions with active human_input tasks awaiting
22
+ * reviewer decisions. Includes task name, requester, and timeout info.
23
+ *
24
+ * Auto-refreshes every 30 seconds by default since pending approvals
25
+ * are time-sensitive.
26
+ *
27
+ * @example
28
+ * ```tsx
29
+ * const { approvals, totalCount, isLoading } = usePendingApprovals({
30
+ * org: "acme",
31
+ * });
32
+ * ```
33
+ */
34
+ export declare function usePendingApprovals(options: UsePendingApprovalsOptions): UsePendingApprovalsReturn;
35
+ //# sourceMappingURL=usePendingApprovals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePendingApprovals.d.ts","sourceRoot":"","sources":["../../src/workflow/usePendingApprovals.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+DAA+D,CAAC;AAKrG,MAAM,WAAW,0BAA0B;IACzC,8DAA8D;IAC9D,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACxC,4CAA4C;IAC5C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,gFAAgF;IAChF,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CAC3C;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,SAAS,EAAE,SAAS,eAAe,EAAE,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;CAC9B;AAYD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,0BAA0B,GAClC,yBAAyB,CAkC3B"}
@@ -0,0 +1,50 @@
1
+ "use client";
2
+ import { create } from "@bufbuild/protobuf";
3
+ import { ListPendingApprovalsRequestSchema } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/io_pb";
4
+ import { useStigmer } from "../hooks";
5
+ import { useFetch } from "../internal/useFetch";
6
+ const INITIAL_DATA = {
7
+ approvals: [],
8
+ totalCount: 0,
9
+ };
10
+ /**
11
+ * Data hook that fetches pending human_input approvals for an organization.
12
+ *
13
+ * Returns workflow executions with active human_input tasks awaiting
14
+ * reviewer decisions. Includes task name, requester, and timeout info.
15
+ *
16
+ * Auto-refreshes every 30 seconds by default since pending approvals
17
+ * are time-sensitive.
18
+ *
19
+ * @example
20
+ * ```tsx
21
+ * const { approvals, totalCount, isLoading } = usePendingApprovals({
22
+ * org: "acme",
23
+ * });
24
+ * ```
25
+ */
26
+ export function usePendingApprovals(options) {
27
+ const stigmer = useStigmer();
28
+ const org = options.org ?? "";
29
+ const pageSize = options.pageSize ?? 20;
30
+ const refetchInterval = options.refetchInterval ?? 30_000;
31
+ const fetchFn = org
32
+ ? async () => {
33
+ const resp = await stigmer.workflowExecution.listPendingApprovals(create(ListPendingApprovalsRequestSchema, { org, pageSize }));
34
+ return {
35
+ approvals: [...resp.entries],
36
+ totalCount: resp.totalCount,
37
+ };
38
+ }
39
+ : null;
40
+ const { data, isLoading, isRefetching, error, refetch } = useFetch(fetchFn, [stigmer, org, pageSize], INITIAL_DATA, { refetchInterval: refetchInterval || false });
41
+ return {
42
+ approvals: data.approvals,
43
+ totalCount: data.totalCount,
44
+ isLoading,
45
+ isRefetching,
46
+ error,
47
+ refetch,
48
+ };
49
+ }
50
+ //# sourceMappingURL=usePendingApprovals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePendingApprovals.js","sourceRoot":"","sources":["../../src/workflow/usePendingApprovals.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,EAAE,iCAAiC,EAAE,MAAM,+DAA+D,CAAC;AAClH,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAyBhD,MAAM,YAAY,GAAyB;IACzC,SAAS,EAAE,EAAE;IACb,UAAU,EAAE,CAAC;CACd,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAmC;IAEnC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;IACxC,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,MAAM,CAAC;IAE1D,MAAM,OAAO,GAAG,GAAG;QACjB,CAAC,CAAC,KAAK,IAAI,EAAE;YACT,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,oBAAoB,CAC/D,MAAM,CAAC,iCAAiC,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAC7D,CAAC;YACF,OAAO;gBACL,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;gBAC5B,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC;QACJ,CAAC;QACH,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,GACrD,QAAQ,CACN,OAAO,EACP,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,EACxB,YAAY,EACZ,EAAE,eAAe,EAAE,eAAe,IAAI,KAAK,EAAE,CAC9C,CAAC;IAEJ,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,SAAS;QACT,YAAY;QACZ,KAAK;QACL,OAAO;KACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,75 @@
1
+ import type { AgentExecution } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
2
+ /**
3
+ * Lifecycle phases for the workflow refinement flow.
4
+ *
5
+ * - `idle` — panel open, no conversation yet
6
+ * - `starting` — creating session (first turn) + execution
7
+ * - `streaming` — agent is working (tool calls, validation, refinement)
8
+ * - `complete` — agent finished, YAML was extracted (diff showing)
9
+ * - `ready` — agent finished without YAML (clarifying question / explanation),
10
+ * or user accepted/discarded a previous result
11
+ * - `error` — a failure occurred (RPC, stream)
12
+ */
13
+ export type RefinePhase = "idle" | "starting" | "streaming" | "complete" | "ready" | "error";
14
+ /** Options for {@link useRefineWorkflowFlow}. */
15
+ export interface UseRefineWorkflowFlowOptions {
16
+ /** Organization slug for session and execution creation. */
17
+ readonly org: string;
18
+ /** Live YAML from the editor. Captured via ref at send-time, not reactively. */
19
+ readonly currentYaml: string;
20
+ /** Called when any step fails. Also available via the `error` return. */
21
+ readonly onError?: (message: string) => void;
22
+ }
23
+ /** Return value of {@link useRefineWorkflowFlow}. */
24
+ export interface UseRefineWorkflowFlowReturn {
25
+ /** Current lifecycle phase. */
26
+ readonly phase: RefinePhase;
27
+ /** Completed execution snapshots for MessageThread (chronological). */
28
+ readonly completedExecutions: readonly AgentExecution[];
29
+ /** Currently streaming execution, or null when idle/between turns. */
30
+ readonly activeExecution: AgentExecution | null;
31
+ /** `true` while the agent execution is actively streaming. */
32
+ readonly isStreaming: boolean;
33
+ /** Extracted YAML from the latest turn (null unless phase is `complete`). */
34
+ readonly extractedYaml: string | null;
35
+ /** Agent's explanation prose from the latest turn. */
36
+ readonly explanation: string | null;
37
+ /** Human-readable error message, or `null` when healthy. */
38
+ readonly error: string | null;
39
+ /** Send a refinement instruction. Creates session on first call. */
40
+ readonly sendInstruction: (instruction: string) => Promise<void>;
41
+ /** Accept the extracted YAML. Returns the YAML string. Transitions to `ready`. */
42
+ readonly acceptResult: () => string | null;
43
+ /** Discard the extracted YAML without applying. Transitions to `ready`. */
44
+ readonly discardResult: () => void;
45
+ /** Reset all state to initial values. Does not delete the server-side session. */
46
+ readonly reset: () => void;
47
+ }
48
+ /**
49
+ * Behavior hook that orchestrates agent-powered workflow refinement
50
+ * using the built-in Workflow Architect system agent.
51
+ *
52
+ * Manages a multi-turn conversation within a single Session:
53
+ * - First turn creates a Session + AgentExecution
54
+ * - Subsequent turns reuse the Session (conversational context)
55
+ * - Each turn streams agent messages via {@link useExecutionStream}
56
+ * - YAML is extracted from agent responses via {@link extractWorkflowYaml}
57
+ *
58
+ * The `currentYaml` prop is captured at send-time (ref-based, not reactive)
59
+ * and included in the message only when it differs from the last-sent version.
60
+ *
61
+ * Framework-agnostic (DD-004), referentially stable returns (DD-010).
62
+ *
63
+ * @example
64
+ * ```tsx
65
+ * const flow = useRefineWorkflowFlow({
66
+ * org: "acme",
67
+ * currentYaml: editor.yaml,
68
+ * onError: (msg) => toast.error(msg),
69
+ * });
70
+ *
71
+ * <WorkflowRefinePanel flow={flow} onAccept={...} onClose={...} />
72
+ * ```
73
+ */
74
+ export declare function useRefineWorkflowFlow(options: UseRefineWorkflowFlowOptions): UseRefineWorkflowFlowReturn;
75
+ //# sourceMappingURL=useRefineWorkflowFlow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRefineWorkflowFlow.d.ts","sourceRoot":"","sources":["../../src/workflow/useRefineWorkflowFlow.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6DAA6D,CAAC;AAalG;;;;;;;;;;GAUG;AACH,MAAM,MAAM,WAAW,GACnB,MAAM,GACN,UAAU,GACV,WAAW,GACX,UAAU,GACV,OAAO,GACP,OAAO,CAAC;AAEZ,iDAAiD;AACjD,MAAM,WAAW,4BAA4B;IAC3C,4DAA4D;IAC5D,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AAED,qDAAqD;AACrD,MAAM,WAAW,2BAA2B;IAC1C,+BAA+B;IAC/B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,uEAAuE;IACvE,QAAQ,CAAC,mBAAmB,EAAE,SAAS,cAAc,EAAE,CAAC;IACxD,sEAAsE;IACtE,QAAQ,CAAC,eAAe,EAAE,cAAc,GAAG,IAAI,CAAC;IAChD,8DAA8D;IAC9D,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,sDAAsD;IACtD,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,oEAAoE;IACpE,QAAQ,CAAC,eAAe,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,kFAAkF;IAClF,QAAQ,CAAC,YAAY,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC3C,2EAA2E;IAC3E,QAAQ,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC;IACnC,kFAAkF;IAClF,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;CAC5B;AAKD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,4BAA4B,GACpC,2BAA2B,CA0N7B"}
@@ -0,0 +1,216 @@
1
+ "use client";
2
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
3
+ import { ExecutionPhase } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
4
+ import { getUserMessage } from "@stigmer/sdk";
5
+ import { useCreateSession } from "../session/useCreateSession";
6
+ import { useCreateAgentExecution } from "../execution/useCreateAgentExecution";
7
+ import { useExecutionStream } from "../execution/useExecutionStream";
8
+ import { isTerminalPhase } from "../execution/execution-phases";
9
+ import { useConversationStoreRef } from "../internal/store";
10
+ import { extractWorkflowYaml, } from "./extract-workflow-yaml";
11
+ const AGENT_REF = { org: "", slug: "workflow-architect" };
12
+ const MIN_INSTRUCTION_LENGTH = 5;
13
+ /**
14
+ * Behavior hook that orchestrates agent-powered workflow refinement
15
+ * using the built-in Workflow Architect system agent.
16
+ *
17
+ * Manages a multi-turn conversation within a single Session:
18
+ * - First turn creates a Session + AgentExecution
19
+ * - Subsequent turns reuse the Session (conversational context)
20
+ * - Each turn streams agent messages via {@link useExecutionStream}
21
+ * - YAML is extracted from agent responses via {@link extractWorkflowYaml}
22
+ *
23
+ * The `currentYaml` prop is captured at send-time (ref-based, not reactive)
24
+ * and included in the message only when it differs from the last-sent version.
25
+ *
26
+ * Framework-agnostic (DD-004), referentially stable returns (DD-010).
27
+ *
28
+ * @example
29
+ * ```tsx
30
+ * const flow = useRefineWorkflowFlow({
31
+ * org: "acme",
32
+ * currentYaml: editor.yaml,
33
+ * onError: (msg) => toast.error(msg),
34
+ * });
35
+ *
36
+ * <WorkflowRefinePanel flow={flow} onAccept={...} onClose={...} />
37
+ * ```
38
+ */
39
+ export function useRefineWorkflowFlow(options) {
40
+ const { org, currentYaml, onError } = options;
41
+ const [phase, setPhase] = useState("idle");
42
+ const [executionId, setExecutionId] = useState(null);
43
+ const [completedExecutions, setCompletedExecutions] = useState([]);
44
+ const [extracted, setExtracted] = useState(null);
45
+ const [error, setError] = useState(null);
46
+ const orgRef = useRef(org);
47
+ orgRef.current = org;
48
+ const yamlRef = useRef(currentYaml);
49
+ yamlRef.current = currentYaml;
50
+ const onErrorRef = useRef(onError);
51
+ onErrorRef.current = onError;
52
+ const sessionIdRef = useRef(null);
53
+ const lastSentYamlRef = useRef(null);
54
+ const prevTerminalRef = useRef(false);
55
+ const { create: createSession } = useCreateSession();
56
+ const { create: createExecution } = useCreateAgentExecution();
57
+ const conversationStore = useConversationStoreRef();
58
+ const stream = useExecutionStream(executionId, {
59
+ store: conversationStore,
60
+ });
61
+ // -------------------------------------------------------------------------
62
+ // Terminal phase detection — extract YAML or transition to ready
63
+ // -------------------------------------------------------------------------
64
+ useEffect(() => {
65
+ if (phase !== "streaming")
66
+ return;
67
+ const isTerminal = stream.phase !== ExecutionPhase.EXECUTION_PHASE_UNSPECIFIED &&
68
+ isTerminalPhase(stream.phase);
69
+ if (isTerminal && !prevTerminalRef.current) {
70
+ prevTerminalRef.current = true;
71
+ if (stream.execution) {
72
+ setCompletedExecutions((prev) => [...prev, stream.execution]);
73
+ }
74
+ const result = extractWorkflowYaml(stream.execution);
75
+ if (result) {
76
+ setExtracted(result);
77
+ setPhase("complete");
78
+ }
79
+ else {
80
+ setPhase("ready");
81
+ }
82
+ setExecutionId(null);
83
+ }
84
+ }, [phase, stream.phase, stream.execution]);
85
+ // -------------------------------------------------------------------------
86
+ // Stream error surfacing
87
+ // -------------------------------------------------------------------------
88
+ useEffect(() => {
89
+ if (stream.error && phase === "streaming") {
90
+ const msg = getUserMessage(stream.error, "Agent stream interrupted");
91
+ setPhase("error");
92
+ setError(msg);
93
+ onErrorRef.current?.(msg);
94
+ }
95
+ }, [stream.error, phase]);
96
+ // -------------------------------------------------------------------------
97
+ // Build the message with optional YAML context
98
+ // -------------------------------------------------------------------------
99
+ const buildMessage = useCallback((instruction) => {
100
+ const capturedYaml = yamlRef.current;
101
+ const yamlChanged = capturedYaml !== lastSentYamlRef.current;
102
+ lastSentYamlRef.current = capturedYaml;
103
+ if (yamlChanged && capturedYaml) {
104
+ return ("Here is the current workflow YAML:\n\n" +
105
+ "```yaml\n" +
106
+ capturedYaml +
107
+ "\n```\n\n" +
108
+ instruction);
109
+ }
110
+ return instruction;
111
+ }, []);
112
+ // -------------------------------------------------------------------------
113
+ // Send a refinement instruction
114
+ // -------------------------------------------------------------------------
115
+ const sendInstruction = useCallback(async (instruction) => {
116
+ const trimmed = instruction.trim();
117
+ if (trimmed.length < MIN_INSTRUCTION_LENGTH) {
118
+ setError(`Instruction must be at least ${MIN_INSTRUCTION_LENGTH} characters`);
119
+ return;
120
+ }
121
+ if (phase !== "idle" &&
122
+ phase !== "ready" &&
123
+ phase !== "complete" &&
124
+ phase !== "error") {
125
+ return;
126
+ }
127
+ setPhase("starting");
128
+ setError(null);
129
+ setExtracted(null);
130
+ prevTerminalRef.current = false;
131
+ try {
132
+ let activeSessionId = sessionIdRef.current;
133
+ if (!activeSessionId) {
134
+ const { sessionId: newSessionId } = await createSession({
135
+ org: orgRef.current,
136
+ agentRef: { ...AGENT_REF, org: orgRef.current },
137
+ });
138
+ sessionIdRef.current = newSessionId;
139
+ activeSessionId = newSessionId;
140
+ }
141
+ const message = buildMessage(trimmed);
142
+ const { executionId: newExecutionId } = await createExecution({
143
+ org: orgRef.current,
144
+ sessionId: activeSessionId,
145
+ message,
146
+ });
147
+ setExecutionId(newExecutionId);
148
+ setPhase("streaming");
149
+ }
150
+ catch (err) {
151
+ const msg = getUserMessage(err, "Failed to start the Workflow Architect agent");
152
+ setPhase("error");
153
+ setError(msg);
154
+ onErrorRef.current?.(msg);
155
+ }
156
+ }, [phase, createSession, createExecution, buildMessage]);
157
+ // -------------------------------------------------------------------------
158
+ // Accept / discard extracted YAML
159
+ // -------------------------------------------------------------------------
160
+ const acceptResult = useCallback(() => {
161
+ if (phase !== "complete" || !extracted)
162
+ return null;
163
+ const yaml = extracted.yaml;
164
+ setExtracted(null);
165
+ setPhase("ready");
166
+ return yaml;
167
+ }, [phase, extracted]);
168
+ const discardResult = useCallback(() => {
169
+ if (phase !== "complete")
170
+ return;
171
+ setExtracted(null);
172
+ setPhase("ready");
173
+ }, [phase]);
174
+ // -------------------------------------------------------------------------
175
+ // Reset all state
176
+ // -------------------------------------------------------------------------
177
+ const reset = useCallback(() => {
178
+ setPhase("idle");
179
+ setExecutionId(null);
180
+ setCompletedExecutions([]);
181
+ setExtracted(null);
182
+ setError(null);
183
+ sessionIdRef.current = null;
184
+ lastSentYamlRef.current = null;
185
+ prevTerminalRef.current = false;
186
+ }, []);
187
+ // -------------------------------------------------------------------------
188
+ // Referentially stable return (DD-010)
189
+ // -------------------------------------------------------------------------
190
+ return useMemo(() => ({
191
+ phase,
192
+ completedExecutions,
193
+ activeExecution: stream.execution,
194
+ isStreaming: stream.isStreaming || stream.isConnecting,
195
+ extractedYaml: extracted?.yaml ?? null,
196
+ explanation: extracted?.explanation ?? null,
197
+ error,
198
+ sendInstruction,
199
+ acceptResult,
200
+ discardResult,
201
+ reset,
202
+ }), [
203
+ phase,
204
+ completedExecutions,
205
+ stream.execution,
206
+ stream.isStreaming,
207
+ stream.isConnecting,
208
+ extracted,
209
+ error,
210
+ sendInstruction,
211
+ acceptResult,
212
+ discardResult,
213
+ reset,
214
+ ]);
215
+ }
216
+ //# sourceMappingURL=useRefineWorkflowFlow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRefineWorkflowFlow.js","sourceRoot":"","sources":["../../src/workflow/useRefineWorkflowFlow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /** Return value of {@link useResolveAgentExecutionSession}. */
2
+ export interface UseResolveAgentExecutionSessionReturn {
3
+ /** The resolved session ID, or `null` while loading or on error. */
4
+ readonly sessionId: string | null;
5
+ /** `true` while the fetch is in flight. */
6
+ readonly isLoading: boolean;
7
+ /** Error from the last failed request, or `null` when healthy. */
8
+ readonly error: Error | null;
9
+ }
10
+ /**
11
+ * Resolves an AgentExecution ID (`aex_*`) to its parent Session ID.
12
+ *
13
+ * This hook fetches the AgentExecution resource and extracts
14
+ * `spec.sessionId`. Use it when navigating from a workflow execution
15
+ * context (which knows the child agent execution ID) to the session
16
+ * page (which requires the session ID).
17
+ *
18
+ * Pass `null` to skip fetching (stable no-op).
19
+ *
20
+ * @example
21
+ * ```tsx
22
+ * function DrillDown({ agentExecutionId }: { agentExecutionId: string }) {
23
+ * const { sessionId, isLoading } = useResolveAgentExecutionSession(agentExecutionId);
24
+ * useEffect(() => {
25
+ * if (sessionId) navigateToSession(sessionId);
26
+ * }, [sessionId]);
27
+ * if (isLoading) return <Spinner />;
28
+ * return null;
29
+ * }
30
+ * ```
31
+ */
32
+ export declare function useResolveAgentExecutionSession(agentExecutionId: string | null): UseResolveAgentExecutionSessionReturn;
33
+ //# sourceMappingURL=useResolveAgentExecutionSession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useResolveAgentExecutionSession.d.ts","sourceRoot":"","sources":["../../src/workflow/useResolveAgentExecutionSession.ts"],"names":[],"mappings":"AAKA,+DAA+D;AAC/D,MAAM,WAAW,qCAAqC;IACpD,oEAAoE;IACpE,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,2CAA2C;IAC3C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,+BAA+B,CAC7C,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAC9B,qCAAqC,CAiBvC"}
@@ -0,0 +1,37 @@
1
+ "use client";
2
+ import { useStigmer } from "../hooks";
3
+ import { useFetch } from "../internal/useFetch";
4
+ /**
5
+ * Resolves an AgentExecution ID (`aex_*`) to its parent Session ID.
6
+ *
7
+ * This hook fetches the AgentExecution resource and extracts
8
+ * `spec.sessionId`. Use it when navigating from a workflow execution
9
+ * context (which knows the child agent execution ID) to the session
10
+ * page (which requires the session ID).
11
+ *
12
+ * Pass `null` to skip fetching (stable no-op).
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * function DrillDown({ agentExecutionId }: { agentExecutionId: string }) {
17
+ * const { sessionId, isLoading } = useResolveAgentExecutionSession(agentExecutionId);
18
+ * useEffect(() => {
19
+ * if (sessionId) navigateToSession(sessionId);
20
+ * }, [sessionId]);
21
+ * if (isLoading) return <Spinner />;
22
+ * return null;
23
+ * }
24
+ * ```
25
+ */
26
+ export function useResolveAgentExecutionSession(agentExecutionId) {
27
+ const stigmer = useStigmer();
28
+ const fetchFn = agentExecutionId
29
+ ? async () => {
30
+ const execution = await stigmer.agentExecution.get(agentExecutionId);
31
+ return execution.spec?.sessionId ?? null;
32
+ }
33
+ : null;
34
+ const { data: sessionId, isLoading, error } = useFetch(fetchFn, [agentExecutionId, stigmer], null);
35
+ return { sessionId, isLoading, error };
36
+ }
37
+ //# sourceMappingURL=useResolveAgentExecutionSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useResolveAgentExecutionSession.js","sourceRoot":"","sources":["../../src/workflow/useResolveAgentExecutionSession.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAYhD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,+BAA+B,CAC7C,gBAA+B;IAE/B,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAE7B,MAAM,OAAO,GAAG,gBAAgB;QAC9B,CAAC,CAAC,KAAK,IAAI,EAAE;YACT,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YACrE,OAAO,SAAS,CAAC,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC;QAC3C,CAAC;QACH,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,QAAQ,CACpD,OAAO,EACP,CAAC,gBAAgB,EAAE,OAAO,CAAC,EAC3B,IAAI,CACL,CAAC;IAEF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACzC,CAAC"}