@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
@@ -12,6 +12,10 @@ export interface InlineEditKeyValueProps extends InlineEditBaseProps {
12
12
  readonly onSave: (rows: KeyValueRow[]) => Promise<boolean>;
13
13
  /** Label for the "key" column. @default "Key" */
14
14
  readonly keyLabel?: string;
15
+ /** Show the value alongside the key in read mode and provide a value input in edit mode. @default false */
16
+ readonly showValue?: boolean;
17
+ /** Label for the "value" column (only relevant when showValue is true). @default "Value" */
18
+ readonly valueLabel?: string;
15
19
  /** Show the "secret" toggle per row. @default false */
16
20
  readonly showSecretToggle?: boolean;
17
21
  /** Show the "optional" toggle per row. @default false */
@@ -35,6 +39,8 @@ export function InlineEditKeyValue({
35
39
  value,
36
40
  onSave,
37
41
  keyLabel = "Key",
42
+ showValue = false,
43
+ valueLabel = "Value",
38
44
  showSecretToggle = false,
39
45
  showOptionalToggle = false,
40
46
  showDescription = false,
@@ -99,6 +105,11 @@ export function InlineEditKeyValue({
99
105
  <code className="shrink-0 font-mono text-sm font-medium text-foreground">
100
106
  {row.key}
101
107
  </code>
108
+ {showValue && (
109
+ <span className="min-w-0 break-all font-mono text-xs text-muted-foreground">
110
+ {row.value}
111
+ </span>
112
+ )}
102
113
  {showSecretToggle && (
103
114
  <span className="shrink-0 rounded bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground">
104
115
  {row.isSecret ? "secret" : "config"}
@@ -137,6 +148,18 @@ export function InlineEditKeyValue({
137
148
  "focus:outline-none focus:ring-2 focus:ring-ring",
138
149
  )}
139
150
  />
151
+ {showValue && (
152
+ <input
153
+ type="text"
154
+ value={row.value}
155
+ onChange={(e) => updateRow(i, { value: e.target.value })}
156
+ placeholder={valueLabel}
157
+ className={cn(
158
+ "rounded-md border border-border bg-input-bg px-2 py-1 font-mono text-sm text-foreground",
159
+ "focus:outline-none focus:ring-2 focus:ring-ring",
160
+ )}
161
+ />
162
+ )}
140
163
  {showDescription && (
141
164
  <input
142
165
  type="text"
@@ -37,6 +37,7 @@ export interface VirtualizedThreadProps {
37
37
  readonly submittingApprovalIds?: ReadonlySet<string>;
38
38
  readonly filePathCtx: FilePathContextValue;
39
39
  readonly sandboxCtx: SandboxContextValue;
40
+ readonly onBuildFromPlan?: () => void;
40
41
  }
41
42
 
42
43
  // ---------------------------------------------------------------------------
@@ -93,6 +94,7 @@ export function VirtualizedThread({
93
94
  submittingApprovalIds,
94
95
  filePathCtx,
95
96
  sandboxCtx,
97
+ onBuildFromPlan,
96
98
  }: VirtualizedThreadProps) {
97
99
  const virtuosoRef = useRef<VirtuosoHandle>(null);
98
100
  const scrollerRef = useRef<HTMLDivElement | null>(null);
@@ -121,8 +123,9 @@ export function VirtualizedThread({
121
123
  formatToolCallSummary,
122
124
  onApprovalSubmit,
123
125
  submittingApprovalIds,
126
+ onBuildFromPlan,
124
127
  }),
125
- [formatToolCallSummary, onApprovalSubmit, submittingApprovalIds],
128
+ [formatToolCallSummary, onApprovalSubmit, submittingApprovalIds, onBuildFromPlan],
126
129
  );
127
130
 
128
131
  return (
@@ -6,6 +6,12 @@ import { ConversationStore, type StreamState } from "./conversation-store";
6
6
 
7
7
  export { ConversationStore, type StreamState } from "./conversation-store";
8
8
  export { structuralShare } from "./structural-share";
9
+ export {
10
+ WorkflowExecutionEventStore,
11
+ type WorkflowEventStreamState,
12
+ type DerivedTaskState,
13
+ type DerivedCostSummary,
14
+ } from "./workflow-execution-event-store";
9
15
 
10
16
  // ---------------------------------------------------------------------------
11
17
  // Context
@@ -0,0 +1,391 @@
1
+ import type { WorkflowExecutionEvent } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/event_pb";
2
+ import { WorkflowEventType } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/event_pb";
3
+ import type { WorkflowTaskKind } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/enum_pb";
4
+
5
+ // ---------------------------------------------------------------------------
6
+ // Stream state (mirrors ConversationStore's StreamState shape)
7
+ // ---------------------------------------------------------------------------
8
+
9
+ export type WorkflowEventStreamState =
10
+ | { readonly stage: "idle" }
11
+ | { readonly stage: "connecting"; readonly executionId: string }
12
+ | { readonly stage: "streaming"; readonly executionId: string }
13
+ | { readonly stage: "complete"; readonly executionId: string }
14
+ | {
15
+ readonly stage: "error";
16
+ readonly executionId: string;
17
+ readonly error: Error;
18
+ }
19
+ | { readonly stage: "unsupported"; readonly executionId: string };
20
+
21
+ const IDLE_STATE: WorkflowEventStreamState = { stage: "idle" };
22
+
23
+ // ---------------------------------------------------------------------------
24
+ // Derived state types
25
+ // ---------------------------------------------------------------------------
26
+
27
+ export interface DerivedTaskState {
28
+ readonly taskName: string;
29
+ readonly taskKind: WorkflowTaskKind;
30
+ readonly status: "pending" | "running" | "completed" | "failed" | "skipped" | "retrying" | "waiting_approval";
31
+ readonly durationMs: number;
32
+ readonly costMicros: bigint;
33
+ readonly tokensUsed: bigint;
34
+ readonly attemptNumber: number;
35
+ readonly error: string;
36
+ readonly childExecutionId: string;
37
+ }
38
+
39
+ export interface DerivedCostSummary {
40
+ readonly costConsumedMicros: bigint;
41
+ readonly costRemainingMicros: bigint;
42
+ readonly tokensConsumed: bigint;
43
+ readonly tokensRemaining: bigint;
44
+ readonly thresholdBreached: boolean;
45
+ }
46
+
47
+ const BIGINT_ZERO = BigInt(0);
48
+ const BIGINT_NEG_ONE = BigInt(-1);
49
+
50
+ const EMPTY_COST_SUMMARY: DerivedCostSummary = {
51
+ costConsumedMicros: BIGINT_ZERO,
52
+ costRemainingMicros: BIGINT_NEG_ONE,
53
+ tokensConsumed: BIGINT_ZERO,
54
+ tokensRemaining: BIGINT_NEG_ONE,
55
+ thresholdBreached: false,
56
+ };
57
+
58
+ // ---------------------------------------------------------------------------
59
+ // WorkflowExecutionEventStore
60
+ // ---------------------------------------------------------------------------
61
+
62
+ type Listener = () => void;
63
+
64
+ /**
65
+ * Framework-agnostic store that accumulates workflow execution events
66
+ * in an append-only list and derives task states and cost summaries.
67
+ *
68
+ * Implements the contract required by React's `useSyncExternalStore`.
69
+ *
70
+ * Unlike `ConversationStore` (which stores mutable execution snapshots
71
+ * and applies structural sharing), this store is append-only: events
72
+ * are immutable once received. Derived state (task map, cost summary)
73
+ * is lazily recomputed and cached.
74
+ */
75
+ export class WorkflowExecutionEventStore {
76
+ private _events: readonly WorkflowExecutionEvent[] = [];
77
+ private _streamState: WorkflowEventStreamState = IDLE_STATE;
78
+ private _listeners = new Set<Listener>();
79
+
80
+ private _taskStatesCache: ReadonlyMap<string, DerivedTaskState> | null = null;
81
+ private _costSummaryCache: DerivedCostSummary | null = null;
82
+ private _totalTasks = 0;
83
+
84
+ // -- Ingestion -----------------------------------------------------------
85
+
86
+ /**
87
+ * Append new events to the store. Deduplicates by sequence_number
88
+ * and maintains ascending order. Notifies listeners only when new
89
+ * events are actually added.
90
+ */
91
+ appendEvents(events: readonly WorkflowExecutionEvent[]): void {
92
+ if (events.length === 0) return;
93
+
94
+ const currentMax = this._events.length > 0
95
+ ? this._events[this._events.length - 1].sequenceNumber
96
+ : BIGINT_ZERO;
97
+
98
+ const newEvents = events.filter((e) => e.sequenceNumber > currentMax);
99
+ if (newEvents.length === 0) return;
100
+
101
+ newEvents.sort((a, b) => {
102
+ if (a.sequenceNumber < b.sequenceNumber) return -1;
103
+ if (a.sequenceNumber > b.sequenceNumber) return 1;
104
+ return 0;
105
+ });
106
+
107
+ this._events = [...this._events, ...newEvents];
108
+ this._taskStatesCache = null;
109
+ this._costSummaryCache = null;
110
+
111
+ for (const evt of newEvents) {
112
+ if (
113
+ evt.eventType === WorkflowEventType.execution_started &&
114
+ evt.payload.case === "executionStarted"
115
+ ) {
116
+ this._totalTasks = evt.payload.value.totalTasks;
117
+ }
118
+ }
119
+
120
+ this._notify();
121
+ }
122
+
123
+ /**
124
+ * Transition the stream lifecycle state.
125
+ */
126
+ setStreamState(state: WorkflowEventStreamState): void {
127
+ if (streamStateEqual(this._streamState, state)) return;
128
+ this._streamState = state;
129
+ this._notify();
130
+ }
131
+
132
+ /**
133
+ * Reset to initial state.
134
+ */
135
+ reset(): void {
136
+ const wasEmpty =
137
+ this._events.length === 0 && this._streamState.stage === "idle";
138
+ this._events = [];
139
+ this._streamState = IDLE_STATE;
140
+ this._taskStatesCache = null;
141
+ this._costSummaryCache = null;
142
+ this._totalTasks = 0;
143
+ if (!wasEmpty) this._notify();
144
+ }
145
+
146
+ // -- useSyncExternalStore selectors -------------------------------------
147
+
148
+ subscribe = (listener: Listener): (() => void) => {
149
+ this._listeners.add(listener);
150
+ return () => {
151
+ this._listeners.delete(listener);
152
+ };
153
+ };
154
+
155
+ getEvents = (): readonly WorkflowExecutionEvent[] => {
156
+ return this._events;
157
+ };
158
+
159
+ getStreamState = (): WorkflowEventStreamState => {
160
+ return this._streamState;
161
+ };
162
+
163
+ getLatestSequence = (): bigint => {
164
+ if (this._events.length === 0) return BIGINT_ZERO;
165
+ return this._events[this._events.length - 1].sequenceNumber;
166
+ };
167
+
168
+ getTotalTasks = (): number => {
169
+ return this._totalTasks;
170
+ };
171
+
172
+ /**
173
+ * Derived task state map, lazily computed and cached until new
174
+ * events are appended. Walks the event list once per invalidation
175
+ * to build a `Map<taskName, DerivedTaskState>`.
176
+ */
177
+ getTaskStates = (): ReadonlyMap<string, DerivedTaskState> => {
178
+ if (this._taskStatesCache) return this._taskStatesCache;
179
+ this._taskStatesCache = deriveTaskStates(this._events);
180
+ return this._taskStatesCache;
181
+ };
182
+
183
+ /**
184
+ * Derived cost summary from the latest budget_checkpoint event.
185
+ * Falls back to aggregating task_completed events when no checkpoint exists.
186
+ */
187
+ getCostSummary = (): DerivedCostSummary => {
188
+ if (this._costSummaryCache) return this._costSummaryCache;
189
+ this._costSummaryCache = deriveCostSummary(this._events);
190
+ return this._costSummaryCache;
191
+ };
192
+
193
+ // -- Internal ------------------------------------------------------------
194
+
195
+ private _notify(): void {
196
+ for (const listener of this._listeners) {
197
+ listener();
198
+ }
199
+ }
200
+ }
201
+
202
+ // ---------------------------------------------------------------------------
203
+ // Derivation helpers
204
+ // ---------------------------------------------------------------------------
205
+
206
+ function deriveTaskStates(
207
+ events: readonly WorkflowExecutionEvent[],
208
+ ): ReadonlyMap<string, DerivedTaskState> {
209
+ const map = new Map<string, DerivedTaskState>();
210
+
211
+ for (const evt of events) {
212
+ const taskName = evt.taskName;
213
+ if (!taskName) continue;
214
+
215
+ const prev = map.get(taskName);
216
+ const p = evt.payload;
217
+
218
+ switch (p.case) {
219
+ case "taskStarted":
220
+ map.set(taskName, {
221
+ taskName,
222
+ taskKind: p.value.taskKind,
223
+ status: "running",
224
+ durationMs: 0,
225
+ costMicros: prev?.costMicros ?? BIGINT_ZERO,
226
+ tokensUsed: prev?.tokensUsed ?? BIGINT_ZERO,
227
+ attemptNumber: p.value.attemptNumber,
228
+ error: "",
229
+ childExecutionId: prev?.childExecutionId ?? "",
230
+ });
231
+ break;
232
+
233
+ case "taskCompleted":
234
+ map.set(taskName, {
235
+ taskName,
236
+ taskKind: p.value.taskKind,
237
+ status: "completed",
238
+ durationMs: Number(p.value.durationMs),
239
+ costMicros: p.value.costMicros,
240
+ tokensUsed: p.value.tokensUsed,
241
+ attemptNumber: prev?.attemptNumber ?? 1,
242
+ error: "",
243
+ childExecutionId: prev?.childExecutionId ?? "",
244
+ });
245
+ break;
246
+
247
+ case "taskFailed":
248
+ map.set(taskName, {
249
+ taskName,
250
+ taskKind: p.value.taskKind,
251
+ status: p.value.willRetry ? "retrying" : "failed",
252
+ durationMs: Number(p.value.durationMs),
253
+ costMicros: prev?.costMicros ?? BIGINT_ZERO,
254
+ tokensUsed: prev?.tokensUsed ?? BIGINT_ZERO,
255
+ attemptNumber: p.value.attemptNumber,
256
+ error: p.value.error,
257
+ childExecutionId: prev?.childExecutionId ?? "",
258
+ });
259
+ break;
260
+
261
+ case "taskSkipped":
262
+ map.set(taskName, {
263
+ taskName,
264
+ taskKind: p.value.taskKind,
265
+ status: "skipped",
266
+ durationMs: 0,
267
+ costMicros: BIGINT_ZERO,
268
+ tokensUsed: BIGINT_ZERO,
269
+ attemptNumber: 0,
270
+ error: "",
271
+ childExecutionId: prev?.childExecutionId ?? "",
272
+ });
273
+ break;
274
+
275
+ case "taskRetrying":
276
+ if (prev) {
277
+ map.set(taskName, { ...prev, status: "retrying" });
278
+ }
279
+ break;
280
+
281
+ case "agentCallStarted":
282
+ if (prev) {
283
+ map.set(taskName, {
284
+ ...prev,
285
+ childExecutionId: p.value.childExecutionId,
286
+ });
287
+ }
288
+ break;
289
+
290
+ case "agentCallCompleted":
291
+ if (prev) {
292
+ map.set(taskName, {
293
+ ...prev,
294
+ costMicros: p.value.costMicros,
295
+ tokensUsed: p.value.tokensConsumed,
296
+ });
297
+ }
298
+ break;
299
+
300
+ case "approvalRequested":
301
+ if (prev) {
302
+ map.set(taskName, { ...prev, status: "waiting_approval" });
303
+ }
304
+ break;
305
+
306
+ case "approvalResolved":
307
+ if (prev && prev.status === "waiting_approval") {
308
+ map.set(taskName, { ...prev, status: "running" });
309
+ }
310
+ break;
311
+ }
312
+ }
313
+
314
+ return map;
315
+ }
316
+
317
+ function deriveCostSummary(
318
+ events: readonly WorkflowExecutionEvent[],
319
+ ): DerivedCostSummary {
320
+ // Prefer the latest budget_checkpoint event
321
+ for (let i = events.length - 1; i >= 0; i--) {
322
+ const p = events[i].payload;
323
+ if (p.case === "budgetCheckpoint") {
324
+ return {
325
+ costConsumedMicros: p.value.costConsumedMicros,
326
+ costRemainingMicros: p.value.costRemainingMicros,
327
+ tokensConsumed: p.value.tokensConsumed,
328
+ tokensRemaining: p.value.tokensRemaining,
329
+ thresholdBreached: p.value.thresholdBreached,
330
+ };
331
+ }
332
+ }
333
+
334
+ // Fall back to execution_completed summary
335
+ for (let i = events.length - 1; i >= 0; i--) {
336
+ const p = events[i].payload;
337
+ if (p.case === "executionCompleted") {
338
+ return {
339
+ costConsumedMicros: p.value.totalCostMicros,
340
+ costRemainingMicros: BIGINT_NEG_ONE,
341
+ tokensConsumed: p.value.totalTokens,
342
+ tokensRemaining: BIGINT_NEG_ONE,
343
+ thresholdBreached: false,
344
+ };
345
+ }
346
+ }
347
+
348
+ // Fall back to aggregating task_completed events
349
+ let totalCost = BIGINT_ZERO;
350
+ let totalTokens = BIGINT_ZERO;
351
+ for (const evt of events) {
352
+ if (evt.payload.case === "taskCompleted") {
353
+ totalCost += evt.payload.value.costMicros;
354
+ totalTokens += evt.payload.value.tokensUsed;
355
+ }
356
+ }
357
+
358
+ if (totalCost > BIGINT_ZERO || totalTokens > BIGINT_ZERO) {
359
+ return {
360
+ costConsumedMicros: totalCost,
361
+ costRemainingMicros: BIGINT_NEG_ONE,
362
+ tokensConsumed: totalTokens,
363
+ tokensRemaining: BIGINT_NEG_ONE,
364
+ thresholdBreached: false,
365
+ };
366
+ }
367
+
368
+ return EMPTY_COST_SUMMARY;
369
+ }
370
+
371
+ // ---------------------------------------------------------------------------
372
+ // Stream state equality
373
+ // ---------------------------------------------------------------------------
374
+
375
+ function streamStateEqual(
376
+ a: WorkflowEventStreamState,
377
+ b: WorkflowEventStreamState,
378
+ ): boolean {
379
+ if (a.stage !== b.stage) return false;
380
+ if (a.stage === "idle") return true;
381
+ if (
382
+ a.stage === "error" &&
383
+ b.stage === "error" &&
384
+ a.executionId === b.executionId &&
385
+ a.error === b.error
386
+ )
387
+ return true;
388
+ if ("executionId" in a && "executionId" in b)
389
+ return a.executionId === b.executionId;
390
+ return false;
391
+ }
@@ -94,8 +94,8 @@ export function useFetch<T>(
94
94
  const hasDataRef = useRef(
95
95
  cacheKey && cache ? cache.has(cacheKey) : false,
96
96
  );
97
- const isFetchingRef = useRef(false);
98
- const [isFetching, setIsFetching] = useState(false);
97
+ const isFetchingRef = useRef(fetchFn !== null);
98
+ const [isFetching, setIsFetching] = useState(fetchFn !== null);
99
99
 
100
100
  // Stable ref for cache — avoids adding cache to effect deps while
101
101
  // still letting the effect body access the current instance.
@@ -14,29 +14,45 @@ export interface ScopeToggleProps {
14
14
  readonly disabled?: boolean;
15
15
  /** Additional CSS classes applied to the root element. */
16
16
  readonly className?: string;
17
+ /**
18
+ * When true, renders icon-only buttons without text labels.
19
+ * Useful inside space-constrained contexts like picker popovers.
20
+ * Each button retains an accessible `aria-label`.
21
+ */
22
+ readonly compact?: boolean;
17
23
  }
18
24
 
19
- const SCOPE_OPTIONS: readonly {
25
+ const OPTIONS: readonly {
20
26
  readonly value: ResourceListScope;
21
27
  readonly label: string;
28
+ readonly ariaLabel: string;
29
+ readonly icon: (props: { className?: string }) => React.JSX.Element;
22
30
  }[] = [
23
- { value: "org", label: "Org" },
24
- { value: "all", label: "All" },
31
+ {
32
+ value: "org",
33
+ label: "Org",
34
+ ariaLabel: "Organization only",
35
+ icon: OrgIcon,
36
+ },
37
+ {
38
+ value: "all",
39
+ label: "All",
40
+ ariaLabel: "All including public",
41
+ icon: GlobeIcon,
42
+ },
25
43
  ];
26
44
 
27
45
  /**
28
- * Segmented control for toggling resource scope between "Org"
29
- * (only the current organization's resources) and "All"
30
- * (including public and platform resources).
46
+ * Segmented control for switching resource list scope between
47
+ * organization-only and all (including public community resources).
48
+ *
49
+ * Renders as a WAI-ARIA Radio Group with roving tabindex and
50
+ * arrow-key navigation. Follows the same visual pattern as
51
+ * {@link VisibilityToggle}.
31
52
  *
32
- * Designed for use in Library list headers alongside a search input.
33
53
  * The component is controlled — the consumer owns the `value` state
34
54
  * and handles persistence (e.g., localStorage).
35
55
  *
36
- * Implements the WAI-ARIA Radio Group pattern with roving tabindex
37
- * for keyboard navigation: Arrow Left/Right moves focus and selects,
38
- * Tab enters/exits the group.
39
- *
40
56
  * All visual properties flow through `--stgm-*` tokens.
41
57
  *
42
58
  * @example
@@ -54,28 +70,35 @@ export function ScopeToggle({
54
70
  onChange,
55
71
  disabled = false,
56
72
  className,
73
+ compact = false,
57
74
  }: ScopeToggleProps) {
58
75
  const optionRefs = useRef<(HTMLButtonElement | null)[]>([]);
59
76
 
77
+ const handleSelect = useCallback(
78
+ (next: ResourceListScope) => {
79
+ if (next !== value) onChange(next);
80
+ },
81
+ [value, onChange],
82
+ );
83
+
60
84
  const handleKeyDown = useCallback(
61
85
  (e: React.KeyboardEvent<HTMLButtonElement>, index: number) => {
62
86
  let nextIndex: number | null = null;
63
87
 
64
88
  if (e.key === "ArrowRight" || e.key === "ArrowDown") {
65
89
  e.preventDefault();
66
- nextIndex = (index + 1) % SCOPE_OPTIONS.length;
90
+ nextIndex = (index + 1) % OPTIONS.length;
67
91
  } else if (e.key === "ArrowLeft" || e.key === "ArrowUp") {
68
92
  e.preventDefault();
69
- nextIndex =
70
- (index - 1 + SCOPE_OPTIONS.length) % SCOPE_OPTIONS.length;
93
+ nextIndex = (index - 1 + OPTIONS.length) % OPTIONS.length;
71
94
  }
72
95
 
73
96
  if (nextIndex !== null) {
74
97
  optionRefs.current[nextIndex]?.focus();
75
- onChange(SCOPE_OPTIONS[nextIndex].value);
98
+ handleSelect(OPTIONS[nextIndex].value);
76
99
  }
77
100
  },
78
- [onChange],
101
+ [handleSelect],
79
102
  );
80
103
 
81
104
  return (
@@ -89,8 +112,9 @@ export function ScopeToggle({
89
112
  className,
90
113
  )}
91
114
  >
92
- {SCOPE_OPTIONS.map((option, index) => {
115
+ {OPTIONS.map((option, index) => {
93
116
  const isSelected = value === option.value;
117
+ const Icon = option.icon;
94
118
 
95
119
  return (
96
120
  <button
@@ -101,22 +125,66 @@ export function ScopeToggle({
101
125
  type="button"
102
126
  role="radio"
103
127
  aria-checked={isSelected}
128
+ aria-label={option.ariaLabel}
129
+ title={compact ? option.ariaLabel : undefined}
104
130
  tabIndex={isSelected ? 0 : -1}
105
131
  disabled={disabled}
106
- onClick={() => onChange(option.value)}
132
+ onClick={() => handleSelect(option.value)}
107
133
  onKeyDown={(e) => handleKeyDown(e, index)}
108
134
  className={cn(
109
- "cursor-pointer rounded-sm px-3 py-1 text-xs font-medium transition-colors",
135
+ "inline-flex cursor-pointer items-center gap-1 rounded-sm px-2 py-1 text-xs font-medium transition-colors",
110
136
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
111
137
  isSelected
112
138
  ? "bg-background text-foreground shadow-sm"
113
139
  : "text-muted-foreground hover:text-foreground",
114
140
  )}
115
141
  >
116
- {option.label}
142
+ <Icon className="size-3" />
143
+ {!compact && option.label}
117
144
  </button>
118
145
  );
119
146
  })}
120
147
  </div>
121
148
  );
122
149
  }
150
+
151
+ // ---------------------------------------------------------------------------
152
+ // Icons — inline SVGs following the SDK pattern (no icon library dependency)
153
+ // ---------------------------------------------------------------------------
154
+
155
+ function OrgIcon({ className }: { readonly className?: string }) {
156
+ return (
157
+ <svg
158
+ className={className}
159
+ viewBox="0 0 16 16"
160
+ fill="none"
161
+ stroke="currentColor"
162
+ strokeWidth="1.5"
163
+ strokeLinecap="round"
164
+ strokeLinejoin="round"
165
+ aria-hidden="true"
166
+ >
167
+ <rect x="4" y="2" width="8" height="12" rx="1" />
168
+ <path d="M6.5 5h3M6.5 8h3M6.5 11h3" />
169
+ </svg>
170
+ );
171
+ }
172
+
173
+ function GlobeIcon({ className }: { readonly className?: string }) {
174
+ return (
175
+ <svg
176
+ className={className}
177
+ viewBox="0 0 16 16"
178
+ fill="none"
179
+ stroke="currentColor"
180
+ strokeWidth="1.5"
181
+ strokeLinecap="round"
182
+ strokeLinejoin="round"
183
+ aria-hidden="true"
184
+ >
185
+ <circle cx="8" cy="8" r="6" />
186
+ <path d="M2 8h12" />
187
+ <path d="M8 2c1.66 1.46 2.6 3.63 2.6 6s-.94 4.54-2.6 6c-1.66-1.46-2.6-3.63-2.6-6s.94-4.54 2.6-6Z" />
188
+ </svg>
189
+ );
190
+ }