@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,167 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { renderHook } from "@testing-library/react";
3
+ import { create } from "@bufbuild/protobuf";
4
+ import {
5
+ AgentExecutionSchema,
6
+ AgentExecutionStatusSchema,
7
+ type AgentExecution,
8
+ } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
9
+ import {
10
+ ContextInfoSchema,
11
+ SummarizationEventSchema,
12
+ } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/context_pb";
13
+ import { useContextWindow } from "../useContextWindow";
14
+
15
+ function makeExecution(overrides?: {
16
+ currentTokenCount?: number;
17
+ contextWindowLimit?: number;
18
+ triggerThreshold?: number;
19
+ targetTokens?: number;
20
+ summarizationEnabled?: boolean;
21
+ utilizationPercent?: number;
22
+ }): AgentExecution {
23
+ const exec = create(AgentExecutionSchema);
24
+ const status = create(AgentExecutionStatusSchema);
25
+ const contextInfo = create(ContextInfoSchema);
26
+
27
+ contextInfo.currentTokenCount = overrides?.currentTokenCount ?? 10_000;
28
+ contextInfo.contextWindowLimit = overrides?.contextWindowLimit ?? 200_000;
29
+ contextInfo.summarizationTriggerThreshold = overrides?.triggerThreshold ?? 180_000;
30
+ contextInfo.summarizationTargetTokens = overrides?.targetTokens ?? 160_000;
31
+ contextInfo.summarizationEnabled = overrides?.summarizationEnabled ?? true;
32
+ contextInfo.utilizationPercent = overrides?.utilizationPercent ?? 5;
33
+
34
+ status.contextInfo = contextInfo;
35
+ exec.status = status;
36
+ return exec;
37
+ }
38
+
39
+ function makeExecutionWithSummarization(): AgentExecution {
40
+ const exec = makeExecution({
41
+ currentTokenCount: 80_000,
42
+ contextWindowLimit: 200_000,
43
+ utilizationPercent: 40,
44
+ });
45
+
46
+ const event = create(SummarizationEventSchema);
47
+ event.timestamp = "2026-05-16T10:30:00.000Z";
48
+ event.tokensBefore = 180_000;
49
+ event.tokensAfter = 80_000;
50
+ event.compressionRatio = 0.56;
51
+ event.durationMs = 2300;
52
+ event.summarizationModel = "claude-haiku-4";
53
+ event.messagesBefore = 42;
54
+ event.messagesAfter = 12;
55
+ event.summarizationCostUsd = 0.0008;
56
+
57
+ exec.status!.contextInfo!.summarizationEvents.push(event);
58
+ return exec;
59
+ }
60
+
61
+ describe("useContextWindow", () => {
62
+ it("returns empty state when execution is null", () => {
63
+ const { result } = renderHook(() => useContextWindow(null));
64
+
65
+ expect(result.current.hasContextInfo).toBe(false);
66
+ expect(result.current.health).toBe("healthy");
67
+ expect(result.current.currentTokenCount).toBe(0);
68
+ expect(result.current.summarizationEvents).toHaveLength(0);
69
+ });
70
+
71
+ it("returns empty state when execution has no context_info", () => {
72
+ const exec = create(AgentExecutionSchema);
73
+ exec.status = create(AgentExecutionStatusSchema);
74
+
75
+ const { result } = renderHook(() => useContextWindow(exec));
76
+
77
+ expect(result.current.hasContextInfo).toBe(false);
78
+ });
79
+
80
+ it("returns empty state when context_window_limit is 0", () => {
81
+ const exec = makeExecution({ contextWindowLimit: 0 });
82
+
83
+ const { result } = renderHook(() => useContextWindow(exec));
84
+
85
+ expect(result.current.hasContextInfo).toBe(false);
86
+ });
87
+
88
+ it("extracts context info correctly for healthy utilization", () => {
89
+ const exec = makeExecution({
90
+ currentTokenCount: 42_000,
91
+ contextWindowLimit: 200_000,
92
+ triggerThreshold: 180_000,
93
+ targetTokens: 160_000,
94
+ utilizationPercent: 21,
95
+ });
96
+
97
+ const { result } = renderHook(() => useContextWindow(exec));
98
+
99
+ expect(result.current.hasContextInfo).toBe(true);
100
+ expect(result.current.currentTokenCount).toBe(42_000);
101
+ expect(result.current.contextWindowLimit).toBe(200_000);
102
+ expect(result.current.utilizationPercent).toBe(21);
103
+ expect(result.current.triggerThreshold).toBe(180_000);
104
+ expect(result.current.targetTokens).toBe(160_000);
105
+ expect(result.current.summarizationEnabled).toBe(true);
106
+ expect(result.current.health).toBe("healthy");
107
+ expect(result.current.isNearThreshold).toBe(false);
108
+ });
109
+
110
+ it("returns warning health for 70-90% utilization", () => {
111
+ const exec = makeExecution({ utilizationPercent: 75 });
112
+
113
+ const { result } = renderHook(() => useContextWindow(exec));
114
+
115
+ expect(result.current.health).toBe("warning");
116
+ });
117
+
118
+ it("returns critical health for 90%+ utilization", () => {
119
+ const exec = makeExecution({ utilizationPercent: 92 });
120
+
121
+ const { result } = renderHook(() => useContextWindow(exec));
122
+
123
+ expect(result.current.health).toBe("critical");
124
+ });
125
+
126
+ it("detects near-threshold correctly", () => {
127
+ const exec = makeExecution({
128
+ currentTokenCount: 172_000,
129
+ contextWindowLimit: 200_000,
130
+ triggerThreshold: 180_000,
131
+ utilizationPercent: 86,
132
+ });
133
+
134
+ const { result } = renderHook(() => useContextWindow(exec));
135
+
136
+ expect(result.current.isNearThreshold).toBe(true);
137
+ });
138
+
139
+ it("maps summarization events correctly", () => {
140
+ const exec = makeExecutionWithSummarization();
141
+
142
+ const { result } = renderHook(() => useContextWindow(exec));
143
+
144
+ expect(result.current.summarizationEvents).toHaveLength(1);
145
+
146
+ const event = result.current.summarizationEvents[0];
147
+ expect(event.tokensBefore).toBe(180_000);
148
+ expect(event.tokensAfter).toBe(80_000);
149
+ expect(event.compressionRatio).toBeCloseTo(0.56);
150
+ expect(event.durationMs).toBe(2300);
151
+ expect(event.model).toBe("claude-haiku-4");
152
+ expect(event.messagesBefore).toBe(42);
153
+ expect(event.messagesAfter).toBe(12);
154
+ expect(event.costUsd).toBeCloseTo(0.0008);
155
+ });
156
+
157
+ it("returns stable reference across re-renders with same input", () => {
158
+ const exec = makeExecution();
159
+ const { result, rerender } = renderHook(() => useContextWindow(exec));
160
+
161
+ const first = result.current;
162
+ rerender();
163
+ const second = result.current;
164
+
165
+ expect(second).toBe(first);
166
+ });
167
+ });
@@ -13,6 +13,25 @@ export type { UseExecutionStreamReturn } from "./useExecutionStream";
13
13
  export { UsageWidget, formatCost, formatTokenCount } from "./UsageWidget";
14
14
  export type { UsageWidgetProps } from "./UsageWidget";
15
15
 
16
+ export { useContextWindow } from "./useContextWindow";
17
+ export type {
18
+ ContextHealth,
19
+ SummarizationEventView,
20
+ UseContextWindowReturn,
21
+ } from "./useContextWindow";
22
+
23
+ export { ContextGauge } from "./ContextGauge";
24
+ export type { ContextGaugeProps } from "./ContextGauge";
25
+
26
+ export { SummarizationBadge } from "./SummarizationBadge";
27
+ export type { SummarizationBadgeProps } from "./SummarizationBadge";
28
+
29
+ export { SummarizationCard } from "./SummarizationCard";
30
+ export type { SummarizationCardProps } from "./SummarizationCard";
31
+
32
+ export { PlanCompletionCard } from "./PlanCompletionCard";
33
+ export type { PlanCompletionCardProps } from "./PlanCompletionCard";
34
+
16
35
  export { useExecutionArtifacts } from "./useExecutionArtifacts";
17
36
  export type { UseExecutionArtifactsReturn } from "./useExecutionArtifacts";
18
37
 
@@ -38,6 +57,9 @@ export type { ArtifactRenderMode } from "./artifact-utils";
38
57
  export { ExecutionPhaseBadge } from "./ExecutionPhaseBadge";
39
58
  export type { ExecutionPhaseBadgeProps } from "./ExecutionPhaseBadge";
40
59
 
60
+ export { InteractionModeBadge } from "./InteractionModeBadge";
61
+ export type { InteractionModeBadgeProps } from "./InteractionModeBadge";
62
+
41
63
  export { SetupProgress } from "./SetupProgress";
42
64
  export type { SetupProgressProps } from "./SetupProgress";
43
65
 
@@ -0,0 +1,148 @@
1
+ "use client";
2
+
3
+ import { useMemo } from "react";
4
+ import type { AgentExecution } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
5
+ import type { SummarizationEvent } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/context_pb";
6
+
7
+ /**
8
+ * Context window health state derived from utilization percentage.
9
+ *
10
+ * Matches the thresholds documented in context.proto (ContextInfo.utilization_percent):
11
+ * - 0-70%: healthy (green)
12
+ * - 70-90%: warning (yellow, approaching summarization threshold)
13
+ * - 90%+: critical (red, at or above trigger threshold)
14
+ */
15
+ export type ContextHealth = "healthy" | "warning" | "critical";
16
+
17
+ /** Normalized view of a single summarization event for rendering. */
18
+ export interface SummarizationEventView {
19
+ readonly timestamp: string;
20
+ readonly tokensBefore: number;
21
+ readonly tokensAfter: number;
22
+ readonly compressionRatio: number;
23
+ readonly durationMs: number;
24
+ readonly model: string;
25
+ readonly messagesBefore: number;
26
+ readonly messagesAfter: number;
27
+ readonly costUsd: number;
28
+ }
29
+
30
+ /** Return value of {@link useContextWindow}. */
31
+ export interface UseContextWindowReturn {
32
+ /** `true` when real `ContextInfo` data is available (native harness). */
33
+ readonly hasContextInfo: boolean;
34
+ /** Current token count in the context window. 0 when unavailable. */
35
+ readonly currentTokenCount: number;
36
+ /** Model's maximum context window size in tokens. 0 when unavailable. */
37
+ readonly contextWindowLimit: number;
38
+ /** Context utilization as a percentage (0-100). 0 when unavailable. */
39
+ readonly utilizationPercent: number;
40
+ /** Token threshold that triggers summarization. 0 when unavailable. */
41
+ readonly triggerThreshold: number;
42
+ /** Target token count after summarization. 0 when unavailable. */
43
+ readonly targetTokens: number;
44
+ /** Whether automatic summarization is enabled for this execution. */
45
+ readonly summarizationEnabled: boolean;
46
+ /** Summarization events ordered chronologically (oldest first). */
47
+ readonly summarizationEvents: readonly SummarizationEventView[];
48
+ /** Derived health state based on utilization thresholds. */
49
+ readonly health: ContextHealth;
50
+ /** `true` when utilization is within 5% of the trigger threshold. */
51
+ readonly isNearThreshold: boolean;
52
+ }
53
+
54
+ const HEALTHY_CEILING = 70;
55
+ const WARNING_CEILING = 90;
56
+ const NEAR_THRESHOLD_MARGIN = 5;
57
+
58
+ const EMPTY: UseContextWindowReturn = {
59
+ hasContextInfo: false,
60
+ currentTokenCount: 0,
61
+ contextWindowLimit: 0,
62
+ utilizationPercent: 0,
63
+ triggerThreshold: 0,
64
+ targetTokens: 0,
65
+ summarizationEnabled: false,
66
+ summarizationEvents: [],
67
+ health: "healthy",
68
+ isNearThreshold: false,
69
+ };
70
+
71
+ function deriveHealth(utilization: number): ContextHealth {
72
+ if (utilization >= WARNING_CEILING) return "critical";
73
+ if (utilization >= HEALTHY_CEILING) return "warning";
74
+ return "healthy";
75
+ }
76
+
77
+ function mapEvent(e: SummarizationEvent): SummarizationEventView {
78
+ return {
79
+ timestamp: e.timestamp,
80
+ tokensBefore: e.tokensBefore,
81
+ tokensAfter: e.tokensAfter,
82
+ compressionRatio: e.compressionRatio,
83
+ durationMs: e.durationMs,
84
+ model: e.summarizationModel,
85
+ messagesBefore: e.messagesBefore,
86
+ messagesAfter: e.messagesAfter,
87
+ costUsd: e.summarizationCostUsd,
88
+ };
89
+ }
90
+
91
+ /**
92
+ * Extracts context window information from an execution's status.
93
+ *
94
+ * Provides real-time visibility into context utilization, summarization
95
+ * thresholds, and summarization history for the native harness. Returns
96
+ * a stable empty state when `ContextInfo` is absent (e.g., Cursor harness
97
+ * where context is managed externally).
98
+ *
99
+ * The derived `health` and `isNearThreshold` fields are intended for
100
+ * driving visual indicators (gauge color, alert badges) without coupling
101
+ * rendering components to threshold arithmetic.
102
+ *
103
+ * @param execution - The execution snapshot from `useExecutionStream`, or `null`.
104
+ *
105
+ * @example
106
+ * ```tsx
107
+ * const { execution } = useExecutionStream(executionId);
108
+ * const ctx = useContextWindow(execution);
109
+ *
110
+ * if (ctx.hasContextInfo) {
111
+ * return <ContextGauge {...ctx} />;
112
+ * }
113
+ * ```
114
+ */
115
+ export function useContextWindow(
116
+ execution: AgentExecution | null,
117
+ ): UseContextWindowReturn {
118
+ const contextInfo = execution?.status?.contextInfo ?? null;
119
+
120
+ const events = useMemo(() => {
121
+ if (!contextInfo?.summarizationEvents?.length) return [];
122
+ return contextInfo.summarizationEvents.map(mapEvent);
123
+ }, [contextInfo?.summarizationEvents]);
124
+
125
+ return useMemo((): UseContextWindowReturn => {
126
+ if (!contextInfo || contextInfo.contextWindowLimit === 0) return EMPTY;
127
+
128
+ const utilization = contextInfo.utilizationPercent;
129
+ const trigger = contextInfo.summarizationTriggerThreshold;
130
+ const triggerPercent =
131
+ trigger > 0 && contextInfo.contextWindowLimit > 0
132
+ ? (trigger / contextInfo.contextWindowLimit) * 100
133
+ : WARNING_CEILING;
134
+
135
+ return {
136
+ hasContextInfo: true,
137
+ currentTokenCount: contextInfo.currentTokenCount,
138
+ contextWindowLimit: contextInfo.contextWindowLimit,
139
+ utilizationPercent: utilization,
140
+ triggerThreshold: trigger,
141
+ targetTokens: contextInfo.summarizationTargetTokens,
142
+ summarizationEnabled: contextInfo.summarizationEnabled,
143
+ summarizationEvents: events,
144
+ health: deriveHealth(utilization),
145
+ isNearThreshold: utilization >= triggerPercent - NEAR_THRESHOLD_MARGIN,
146
+ };
147
+ }, [contextInfo, events]);
148
+ }
@@ -2,9 +2,15 @@
2
2
 
3
3
  import { useCallback, useState } from "react";
4
4
  import type { AttachmentInput, EnvVarInput } from "@stigmer/sdk";
5
+ import { InteractionMode } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
5
6
  import { useStigmer } from "../hooks";
6
7
  import { toError } from "../internal/toError";
7
8
 
9
+ const INTERACTION_MODE_MAP: Record<string, InteractionMode> = {
10
+ agent: InteractionMode.AGENT,
11
+ plan: InteractionMode.PLAN,
12
+ };
13
+
8
14
  /** Input for {@link UseCreateAgentExecutionReturn.create}. */
9
15
  export interface CreateAgentExecutionInput {
10
16
  /** Organization slug that owns the session. */
@@ -43,6 +49,15 @@ export interface CreateAgentExecutionInput {
43
49
  * files from their mount paths (default `/inputs/{filename}`).
44
50
  */
45
51
  readonly attachments?: AttachmentInput[];
52
+ /**
53
+ * Interaction mode for this execution.
54
+ *
55
+ * - `"agent"` (default): full tool access.
56
+ * - `"plan"`: read-only analysis, no file mutations.
57
+ *
58
+ * Maps to `ExecutionConfig.interaction_mode` in the proto.
59
+ */
60
+ readonly interactionMode?: "agent" | "plan";
46
61
  }
47
62
 
48
63
  /** Resolved output of {@link UseCreateAgentExecutionReturn.create}. */
@@ -120,15 +135,23 @@ export function useCreateAgentExecution(): UseCreateAgentExecutionReturn {
120
135
  setError(null);
121
136
 
122
137
  try {
138
+ const hasConfig = input.modelName || input.interactionMode;
139
+ const executionConfig = hasConfig
140
+ ? {
141
+ ...(input.modelName ? { modelName: input.modelName } : {}),
142
+ ...(input.interactionMode
143
+ ? { interactionMode: INTERACTION_MODE_MAP[input.interactionMode] ?? InteractionMode.UNSPECIFIED }
144
+ : {}),
145
+ }
146
+ : undefined;
147
+
123
148
  const execution = await stigmer.agentExecution.create({
124
149
  name: `execution-${Date.now()}`,
125
150
  org: input.org,
126
151
  sessionId: input.sessionId,
127
152
  agentId: input.agentId,
128
153
  message: input.message,
129
- executionConfig: input.modelName
130
- ? { modelName: input.modelName }
131
- : undefined,
154
+ executionConfig,
132
155
  runtimeEnv: input.runtimeEnv,
133
156
  attachments: input.attachments,
134
157
  });
package/src/index.ts CHANGED
@@ -128,6 +128,19 @@ export type {
128
128
  SearchResultGroup,
129
129
  } from "./session";
130
130
 
131
+ // Activity — unified recent activity (sessions + workflow executions)
132
+ export {
133
+ useRecentActivity,
134
+ groupRecentActivityByTime,
135
+ } from "./activity";
136
+ export type {
137
+ RecentActivityType,
138
+ RecentActivityEntry,
139
+ RecentActivityGroup,
140
+ UseRecentActivityOptions,
141
+ UseRecentActivityReturn,
142
+ } from "./activity";
143
+
131
144
  // Execution — behavior hooks, styled components, and utilities (AgentExecution aggregate)
132
145
  export {
133
146
  isTerminalPhase,
@@ -135,6 +148,7 @@ export {
135
148
  useExecutionStream,
136
149
  useSubmitApproval,
137
150
  ExecutionPhaseBadge,
151
+ InteractionModeBadge,
138
152
  SetupProgress,
139
153
  ExecutionProgress,
140
154
  TodoList,
@@ -142,6 +156,11 @@ export {
142
156
  findActiveTodo,
143
157
  todoCompletionSummary,
144
158
  UsageWidget,
159
+ ContextGauge,
160
+ SummarizationBadge,
161
+ SummarizationCard,
162
+ PlanCompletionCard,
163
+ useContextWindow,
145
164
  formatCost,
146
165
  formatTokenCount,
147
166
  ToolCallGroup,
@@ -191,10 +210,18 @@ export type {
191
210
  UseExecutionStreamReturn,
192
211
  UseSubmitApprovalReturn,
193
212
  ExecutionPhaseBadgeProps,
213
+ InteractionModeBadgeProps,
194
214
  SetupProgressProps,
195
215
  ExecutionProgressProps,
196
216
  TodoListProps,
197
217
  UsageWidgetProps,
218
+ ContextGaugeProps,
219
+ SummarizationBadgeProps,
220
+ SummarizationCardProps,
221
+ PlanCompletionCardProps,
222
+ ContextHealth,
223
+ SummarizationEventView,
224
+ UseContextWindowReturn,
198
225
  ToolCallGroupProps,
199
226
  ToolCallDetailProps,
200
227
  McpToolDetailProps,
@@ -253,12 +280,16 @@ export type {
253
280
  export {
254
281
  useComposer,
255
282
  SessionComposer,
283
+ InteractionModePicker,
256
284
  } from "./composer";
257
285
  export type {
258
286
  UseComposerOptions,
259
287
  UseComposerReturn,
288
+ SessionComposerHandle,
260
289
  SessionComposerProps,
261
290
  SessionComposerSubmitContext,
291
+ InteractionModePickerProps,
292
+ InteractionModeOption,
262
293
  } from "./composer";
263
294
 
264
295
  // MCP Server — data hook, count hook, list hook, search hook, picker, config panel, tool selector, detail view, setup orchestration, OAuth connect, and update
@@ -1073,3 +1104,194 @@ export type {
1073
1104
  ResourceWorkbenchProps,
1074
1105
  ResourceAvatarProps,
1075
1106
  } from "./resource-workbench";
1107
+
1108
+ // Workflow — data hooks, styled components, task kind registry
1109
+ export {
1110
+ TaskKindRegistryContext,
1111
+ useTaskKindRegistry,
1112
+ useWorkflow,
1113
+ useWorkflowList,
1114
+ useWorkflowCount,
1115
+ useWorkflowInstances,
1116
+ useWorkflowExecutionList,
1117
+ useWorkflowExecution,
1118
+ useWorkflowExecutionEventLog,
1119
+ useWorkflowExecutionArtifacts,
1120
+ useWorkflowExecutionEventStream,
1121
+ useWorkflowExecutionActions,
1122
+ WorkflowExecutionPhaseBadge,
1123
+ WorkflowTaskList,
1124
+ WorkflowDetailView,
1125
+ WorkflowExecutionViewer,
1126
+ WorkflowExecutionHeader,
1127
+ WorkflowExecutionTimeline,
1128
+ WorkflowExecutionTaskPanel,
1129
+ WorkflowExecutionCostPanel,
1130
+ WorkflowExecutionArtifactPanel,
1131
+ WorkflowExecutionApprovalCard,
1132
+ serializeWorkflowYaml,
1133
+ parseWorkflowYaml,
1134
+ useWorkflowYaml,
1135
+ useWorkflowSave,
1136
+ useWorkflowValidation,
1137
+ useWorkflowTopology,
1138
+ WorkflowYamlEditor,
1139
+ WorkflowTopologyGraph,
1140
+ useWorkflowEditor,
1141
+ WorkflowEditorView,
1142
+ useRunWorkflowFlow,
1143
+ WorkflowRunForm,
1144
+ WorkflowRunDialog,
1145
+ useWorkflowDashboardSummary,
1146
+ usePendingApprovals,
1147
+ ExecutionSummaryWidget,
1148
+ PendingApprovalsWidget,
1149
+ FailedRunsWidget,
1150
+ WorkflowDashboard,
1151
+ START_NODE_ID,
1152
+ END_NODE_ID,
1153
+ yamlToGraph,
1154
+ graphToYaml,
1155
+ graphToWorkflowInput,
1156
+ useWorkflowCanvas,
1157
+ TASK_KIND_DRAG_MIME,
1158
+ WorkflowCanvasEditor,
1159
+ WorkflowTaskPalette,
1160
+ TaskPickerPopover,
1161
+ CanvasContextMenu,
1162
+ WorkflowInspectorPanel,
1163
+ TaskConfigForm,
1164
+ BranchConditionBuilder,
1165
+ ApprovalFormBuilder,
1166
+ useResolveAgentExecutionSession,
1167
+ CostByWorkflowChart,
1168
+ ExecutionTrendChart,
1169
+ extractWorkflowYaml,
1170
+ useWorkflowArchitectFlow,
1171
+ WorkflowArchitectDialog,
1172
+ useRefineWorkflowFlow,
1173
+ WorkflowRefinePanel,
1174
+ computeUnifiedDiff,
1175
+ useDiagnoseExecutionFlow,
1176
+ WorkflowRepairCard,
1177
+ STARTER_WORKFLOW_YAML,
1178
+ } from "./workflow";
1179
+ export type {
1180
+ TaskKindDescriptor,
1181
+ TaskKindCategory,
1182
+ TaskFieldDescriptor,
1183
+ TaskFieldType,
1184
+ TaskFieldGroup,
1185
+ TaskKindRegistryState,
1186
+ UseTaskKindRegistryReturn,
1187
+ UseWorkflowReturn,
1188
+ UseWorkflowListOptions,
1189
+ UseWorkflowListReturn,
1190
+ UseWorkflowCountOptions,
1191
+ UseWorkflowCountReturn,
1192
+ UseWorkflowInstancesReturn,
1193
+ UseWorkflowExecutionListOptions,
1194
+ UseWorkflowExecutionListReturn,
1195
+ UseWorkflowExecutionReturn,
1196
+ UseWorkflowExecutionEventLogOptions,
1197
+ UseWorkflowExecutionEventLogReturn,
1198
+ UseWorkflowExecutionArtifactsReturn,
1199
+ UseWorkflowExecutionEventStreamOptions,
1200
+ UseWorkflowExecutionEventStreamReturn,
1201
+ UseWorkflowExecutionActionsReturn,
1202
+ WorkflowExecutionPhaseBadgeProps,
1203
+ WorkflowTaskListProps,
1204
+ WorkflowDetailViewProps,
1205
+ WorkflowExecutionViewerProps,
1206
+ WorkflowExecutionHeaderProps,
1207
+ WorkflowExecutionTimelineProps,
1208
+ WorkflowExecutionTaskPanelProps,
1209
+ WorkflowExecutionCostPanelProps,
1210
+ WorkflowExecutionArtifactPanelProps,
1211
+ WorkflowExecutionApprovalCardProps,
1212
+ UseWorkflowYamlReturn,
1213
+ UseWorkflowSaveReturn,
1214
+ UseWorkflowValidationReturn,
1215
+ UseWorkflowTopologyReturn,
1216
+ TopologyNode,
1217
+ TopologyEdge,
1218
+ TopologyNodeCategory,
1219
+ WorkflowYamlEditorProps,
1220
+ WorkflowTopologyGraphProps,
1221
+ UseWorkflowEditorOptions,
1222
+ UseWorkflowEditorReturn,
1223
+ WorkflowEditorViewProps,
1224
+ WorkflowEditorMode,
1225
+ UseRunWorkflowFlowOptions,
1226
+ UseRunWorkflowFlowReturn,
1227
+ RunWorkflowFieldErrors,
1228
+ WorkflowRunFormProps,
1229
+ WorkflowRunDialogProps,
1230
+ UseWorkflowDashboardSummaryOptions,
1231
+ UseWorkflowDashboardSummaryReturn,
1232
+ UsePendingApprovalsOptions,
1233
+ UsePendingApprovalsReturn,
1234
+ ExecutionSummaryWidgetProps,
1235
+ PendingApprovalsWidgetProps,
1236
+ FailedRunsWidgetProps,
1237
+ WorkflowDashboardProps,
1238
+ WorkflowGraphModel,
1239
+ WorkflowGraphNode,
1240
+ WorkflowGraphEdge,
1241
+ WorkflowGraphDocument,
1242
+ WorkflowGraphEnvVar,
1243
+ WorkflowGraphBudget,
1244
+ CanvasSelection,
1245
+ UseWorkflowCanvasReturn,
1246
+ WorkflowCanvasEditorProps,
1247
+ WorkflowTaskPaletteProps,
1248
+ TaskPickerPopoverProps,
1249
+ CanvasContextMenuProps,
1250
+ CanvasContextMenuTarget,
1251
+ WorkflowInspectorPanelProps,
1252
+ TaskConfigFormProps,
1253
+ BranchConditionBuilderProps,
1254
+ ApprovalFormBuilderProps,
1255
+ UseResolveAgentExecutionSessionReturn,
1256
+ CostByWorkflowChartProps,
1257
+ ExecutionTrendChartProps,
1258
+ ExtractedWorkflowYaml,
1259
+ ArchitectPhase,
1260
+ UseWorkflowArchitectFlowOptions,
1261
+ UseWorkflowArchitectFlowReturn,
1262
+ WorkflowArchitectDialogProps,
1263
+ RefinePhase,
1264
+ UseRefineWorkflowFlowOptions,
1265
+ UseRefineWorkflowFlowReturn,
1266
+ WorkflowRefinePanelProps,
1267
+ DiffLine as WorkflowDiffLine,
1268
+ DiffLineType as WorkflowDiffLineType,
1269
+ DiagnosePhase,
1270
+ UseDiagnoseExecutionFlowOptions,
1271
+ UseDiagnoseExecutionFlowReturn,
1272
+ WorkflowRepairCardProps,
1273
+ } from "./workflow";
1274
+
1275
+ // ─── Dashboard (Unified Platform) ──────────────────────────────────────────
1276
+ export {
1277
+ // Types
1278
+ type DashboardSummary,
1279
+ type DashboardFailedRun,
1280
+ // Data Hooks
1281
+ useAgentExecutionSummary,
1282
+ AgentExecutionSummaryTimeWindow,
1283
+ type UseAgentExecutionSummaryOptions,
1284
+ type UseAgentExecutionSummaryReturn,
1285
+ useDashboardSummary,
1286
+ type UseDashboardSummaryOptions,
1287
+ type UseDashboardSummaryReturn,
1288
+ useDashboardFailedRuns,
1289
+ type UseDashboardFailedRunsReturn,
1290
+ // Styled Components
1291
+ DashboardKPICards,
1292
+ type DashboardKPICardsProps,
1293
+ DashboardFailedRuns,
1294
+ type DashboardFailedRunsProps,
1295
+ OperationalDashboard,
1296
+ type OperationalDashboardProps,
1297
+ } from "./dashboard";
@@ -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 (