@stigmer/react 0.5.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (691) hide show
  1. package/activity/group-activity.d.ts +13 -0
  2. package/activity/group-activity.d.ts.map +1 -0
  3. package/activity/group-activity.js +54 -0
  4. package/activity/group-activity.js.map +1 -0
  5. package/activity/index.d.ts +4 -0
  6. package/activity/index.d.ts.map +1 -0
  7. package/activity/index.js +3 -0
  8. package/activity/index.js.map +1 -0
  9. package/activity/types.d.ts +34 -0
  10. package/activity/types.d.ts.map +1 -0
  11. package/activity/types.js +2 -0
  12. package/activity/types.js.map +1 -0
  13. package/activity/useRecentActivity.d.ts +35 -0
  14. package/activity/useRecentActivity.d.ts.map +1 -0
  15. package/activity/useRecentActivity.js +73 -0
  16. package/activity/useRecentActivity.js.map +1 -0
  17. package/agent/AgentPicker.d.ts.map +1 -1
  18. package/agent/AgentPicker.js +4 -2
  19. package/agent/AgentPicker.js.map +1 -1
  20. package/billing/BillingSection.d.ts.map +1 -1
  21. package/billing/BillingSection.js +1 -1
  22. package/billing/BillingSection.js.map +1 -1
  23. package/composer/ComposerToolbar.d.ts +5 -1
  24. package/composer/ComposerToolbar.d.ts.map +1 -1
  25. package/composer/ComposerToolbar.js +4 -3
  26. package/composer/ComposerToolbar.js.map +1 -1
  27. package/composer/ContextChip.d.ts +7 -2
  28. package/composer/ContextChip.d.ts.map +1 -1
  29. package/composer/ContextChip.js +2 -1
  30. package/composer/ContextChip.js.map +1 -1
  31. package/composer/InteractionModePicker.d.ts +40 -0
  32. package/composer/InteractionModePicker.d.ts.map +1 -0
  33. package/composer/InteractionModePicker.js +76 -0
  34. package/composer/InteractionModePicker.js.map +1 -0
  35. package/composer/SessionComposer.d.ts +64 -64
  36. package/composer/SessionComposer.d.ts.map +1 -1
  37. package/composer/SessionComposer.js +52 -11
  38. package/composer/SessionComposer.js.map +1 -1
  39. package/composer/__tests__/SessionComposer-memo.test.js +10 -5
  40. package/composer/__tests__/SessionComposer-memo.test.js.map +1 -1
  41. package/composer/index.d.ts +3 -1
  42. package/composer/index.d.ts.map +1 -1
  43. package/composer/index.js +1 -0
  44. package/composer/index.js.map +1 -1
  45. package/dashboard/DashboardFailedRuns.d.ts +19 -0
  46. package/dashboard/DashboardFailedRuns.d.ts.map +1 -0
  47. package/dashboard/DashboardFailedRuns.js +35 -0
  48. package/dashboard/DashboardFailedRuns.js.map +1 -0
  49. package/dashboard/DashboardKPICards.d.ts +19 -0
  50. package/dashboard/DashboardKPICards.d.ts.map +1 -0
  51. package/dashboard/DashboardKPICards.js +80 -0
  52. package/dashboard/DashboardKPICards.js.map +1 -0
  53. package/dashboard/OperationalDashboard.d.ts +37 -0
  54. package/dashboard/OperationalDashboard.d.ts.map +1 -0
  55. package/dashboard/OperationalDashboard.js +48 -0
  56. package/dashboard/OperationalDashboard.js.map +1 -0
  57. package/dashboard/index.d.ts +8 -0
  58. package/dashboard/index.d.ts.map +1 -0
  59. package/dashboard/index.js +9 -0
  60. package/dashboard/index.js.map +1 -0
  61. package/dashboard/types.d.ts +49 -0
  62. package/dashboard/types.d.ts.map +1 -0
  63. package/dashboard/types.js +2 -0
  64. package/dashboard/types.js.map +1 -0
  65. package/dashboard/useAgentExecutionSummary.d.ts +33 -0
  66. package/dashboard/useAgentExecutionSummary.d.ts.map +1 -0
  67. package/dashboard/useAgentExecutionSummary.js +32 -0
  68. package/dashboard/useAgentExecutionSummary.js.map +1 -0
  69. package/dashboard/useDashboardFailedRuns.d.ts +18 -0
  70. package/dashboard/useDashboardFailedRuns.d.ts.map +1 -0
  71. package/dashboard/useDashboardFailedRuns.js +86 -0
  72. package/dashboard/useDashboardFailedRuns.js.map +1 -0
  73. package/dashboard/useDashboardSummary.d.ts +32 -0
  74. package/dashboard/useDashboardSummary.d.ts.map +1 -0
  75. package/dashboard/useDashboardSummary.js +67 -0
  76. package/dashboard/useDashboardSummary.js.map +1 -0
  77. package/environment/usePersonalEnvironment.d.ts.map +1 -1
  78. package/environment/usePersonalEnvironment.js +1 -0
  79. package/environment/usePersonalEnvironment.js.map +1 -1
  80. package/execution/ContextGauge.d.ts +45 -0
  81. package/execution/ContextGauge.d.ts.map +1 -0
  82. package/execution/ContextGauge.js +82 -0
  83. package/execution/ContextGauge.js.map +1 -0
  84. package/execution/InteractionModeBadge.d.ts +24 -0
  85. package/execution/InteractionModeBadge.d.ts.map +1 -0
  86. package/execution/InteractionModeBadge.js +29 -0
  87. package/execution/InteractionModeBadge.js.map +1 -0
  88. package/execution/MessageThread.d.ts +33 -3
  89. package/execution/MessageThread.d.ts.map +1 -1
  90. package/execution/MessageThread.js +51 -9
  91. package/execution/MessageThread.js.map +1 -1
  92. package/execution/PlanCompletionCard.d.ts +23 -0
  93. package/execution/PlanCompletionCard.d.ts.map +1 -0
  94. package/execution/PlanCompletionCard.js +28 -0
  95. package/execution/PlanCompletionCard.js.map +1 -0
  96. package/execution/SummarizationBadge.d.ts +30 -0
  97. package/execution/SummarizationBadge.d.ts.map +1 -0
  98. package/execution/SummarizationBadge.js +61 -0
  99. package/execution/SummarizationBadge.js.map +1 -0
  100. package/execution/SummarizationCard.d.ts +27 -0
  101. package/execution/SummarizationCard.d.ts.map +1 -0
  102. package/execution/SummarizationCard.js +47 -0
  103. package/execution/SummarizationCard.js.map +1 -0
  104. package/execution/__tests__/PlanCompletionCard.test.d.ts +2 -0
  105. package/execution/__tests__/PlanCompletionCard.test.d.ts.map +1 -0
  106. package/execution/__tests__/PlanCompletionCard.test.js +53 -0
  107. package/execution/__tests__/PlanCompletionCard.test.js.map +1 -0
  108. package/execution/__tests__/buildThreadItems-plan-completion.test.d.ts +2 -0
  109. package/execution/__tests__/buildThreadItems-plan-completion.test.d.ts.map +1 -0
  110. package/execution/__tests__/buildThreadItems-plan-completion.test.js +137 -0
  111. package/execution/__tests__/buildThreadItems-plan-completion.test.js.map +1 -0
  112. package/execution/__tests__/useContextWindow.test.d.ts +2 -0
  113. package/execution/__tests__/useContextWindow.test.d.ts.map +1 -0
  114. package/execution/__tests__/useContextWindow.test.js +121 -0
  115. package/execution/__tests__/useContextWindow.test.js.map +1 -0
  116. package/execution/index.d.ts +12 -0
  117. package/execution/index.d.ts.map +1 -1
  118. package/execution/index.js +6 -0
  119. package/execution/index.js.map +1 -1
  120. package/execution/useContextWindow.d.ts +71 -0
  121. package/execution/useContextWindow.d.ts.map +1 -0
  122. package/execution/useContextWindow.js +91 -0
  123. package/execution/useContextWindow.js.map +1 -0
  124. package/execution/useCreateAgentExecution.d.ts +9 -0
  125. package/execution/useCreateAgentExecution.d.ts.map +1 -1
  126. package/execution/useCreateAgentExecution.js +15 -3
  127. package/execution/useCreateAgentExecution.js.map +1 -1
  128. package/index.d.ts +11 -6
  129. package/index.d.ts.map +1 -1
  130. package/index.js +13 -3
  131. package/index.js.map +1 -1
  132. package/inline-edit/InlineEditKeyValue.d.ts +5 -1
  133. package/inline-edit/InlineEditKeyValue.d.ts.map +1 -1
  134. package/inline-edit/InlineEditKeyValue.js +3 -3
  135. package/inline-edit/InlineEditKeyValue.js.map +1 -1
  136. package/internal/VirtualizedThread.d.ts +2 -1
  137. package/internal/VirtualizedThread.d.ts.map +1 -1
  138. package/internal/VirtualizedThread.js +3 -2
  139. package/internal/VirtualizedThread.js.map +1 -1
  140. package/internal/store/index.d.ts +1 -0
  141. package/internal/store/index.d.ts.map +1 -1
  142. package/internal/store/index.js +1 -0
  143. package/internal/store/index.js.map +1 -1
  144. package/internal/store/workflow-execution-event-store.d.ts +92 -0
  145. package/internal/store/workflow-execution-event-store.d.ts.map +1 -0
  146. package/internal/store/workflow-execution-event-store.js +298 -0
  147. package/internal/store/workflow-execution-event-store.js.map +1 -0
  148. package/internal/useFetch.js +2 -2
  149. package/internal/useFetch.js.map +1 -1
  150. package/library/ScopeToggle.d.ts +13 -9
  151. package/library/ScopeToggle.d.ts.map +1 -1
  152. package/library/ScopeToggle.js +43 -22
  153. package/library/ScopeToggle.js.map +1 -1
  154. package/library/VisibilityToggle.js +14 -5
  155. package/library/VisibilityToggle.js.map +1 -1
  156. package/library/index.d.ts +1 -0
  157. package/library/index.d.ts.map +1 -1
  158. package/library/index.js +1 -0
  159. package/library/index.js.map +1 -1
  160. package/library/useExportResource.d.ts +3 -2
  161. package/library/useExportResource.d.ts.map +1 -1
  162. package/library/useExportResource.js +11 -6
  163. package/library/useExportResource.js.map +1 -1
  164. package/mcp-server/McpServerDetailView.d.ts.map +1 -1
  165. package/mcp-server/McpServerDetailView.js +169 -58
  166. package/mcp-server/McpServerDetailView.js.map +1 -1
  167. package/mcp-server/McpServerPicker.d.ts.map +1 -1
  168. package/mcp-server/McpServerPicker.js +4 -2
  169. package/mcp-server/McpServerPicker.js.map +1 -1
  170. package/models/ModelRegistryContext.d.ts +2 -0
  171. package/models/ModelRegistryContext.d.ts.map +1 -1
  172. package/models/ModelRegistryContext.js +1 -0
  173. package/models/ModelRegistryContext.js.map +1 -1
  174. package/models/ModelSelector.d.ts.map +1 -1
  175. package/models/ModelSelector.js +2 -2
  176. package/models/ModelSelector.js.map +1 -1
  177. package/models/__tests__/useModelRegistry.test.js +4 -3
  178. package/models/__tests__/useModelRegistry.test.js.map +1 -1
  179. package/models/useModelRegistry.d.ts +2 -0
  180. package/models/useModelRegistry.d.ts.map +1 -1
  181. package/models/useModelRegistry.js +3 -2
  182. package/models/useModelRegistry.js.map +1 -1
  183. package/package.json +16 -5
  184. package/provider.d.ts.map +1 -1
  185. package/provider.js +232 -22
  186. package/provider.js.map +1 -1
  187. package/resource-detail/ResourceDetailShell.d.ts +1 -1
  188. package/resource-detail/ResourceDetailShell.d.ts.map +1 -1
  189. package/resource-detail/ResourceDetailShell.js +6 -6
  190. package/resource-detail/ResourceDetailShell.js.map +1 -1
  191. package/resource-detail/types.d.ts +23 -0
  192. package/resource-detail/types.d.ts.map +1 -1
  193. package/resource-detail/useDeleteResource.d.ts +1 -1
  194. package/resource-detail/useDeleteResource.d.ts.map +1 -1
  195. package/resource-detail/useDeleteResource.js +5 -0
  196. package/resource-detail/useDeleteResource.js.map +1 -1
  197. package/resource-workbench/components/ResourceWorkbench.d.ts.map +1 -1
  198. package/resource-workbench/components/ResourceWorkbench.js +2 -1
  199. package/resource-workbench/components/ResourceWorkbench.js.map +1 -1
  200. package/session/__tests__/session-spec-converters.test.d.ts +2 -0
  201. package/session/__tests__/session-spec-converters.test.d.ts.map +1 -0
  202. package/session/__tests__/session-spec-converters.test.js +162 -0
  203. package/session/__tests__/session-spec-converters.test.js.map +1 -0
  204. package/session/__tests__/useNewSessionFlow.test.js +2 -2
  205. package/session/__tests__/useNewSessionFlow.test.js.map +1 -1
  206. package/session/__tests__/usePersistedModel.test.js +1 -1
  207. package/session/__tests__/usePersistedModel.test.js.map +1 -1
  208. package/session/group-sessions.d.ts +17 -0
  209. package/session/group-sessions.d.ts.map +1 -1
  210. package/session/group-sessions.js +46 -0
  211. package/session/group-sessions.js.map +1 -1
  212. package/session/index.d.ts +4 -2
  213. package/session/index.d.ts.map +1 -1
  214. package/session/index.js +2 -1
  215. package/session/index.js.map +1 -1
  216. package/session/session-spec-converters.d.ts +24 -0
  217. package/session/session-spec-converters.d.ts.map +1 -0
  218. package/session/session-spec-converters.js +72 -0
  219. package/session/session-spec-converters.js.map +1 -0
  220. package/session/useNewSessionFlow.d.ts.map +1 -1
  221. package/session/useNewSessionFlow.js +1 -0
  222. package/session/useNewSessionFlow.js.map +1 -1
  223. package/session/useSessionConversation.d.ts +7 -0
  224. package/session/useSessionConversation.d.ts.map +1 -1
  225. package/session/useSessionConversation.js +2 -56
  226. package/session/useSessionConversation.js.map +1 -1
  227. package/session/useSessionPageFlow.d.ts +5 -0
  228. package/session/useSessionPageFlow.d.ts.map +1 -1
  229. package/session/useSessionPageFlow.js +21 -6
  230. package/session/useSessionPageFlow.js.map +1 -1
  231. package/session/useSessionSearch.d.ts +57 -0
  232. package/session/useSessionSearch.d.ts.map +1 -0
  233. package/session/useSessionSearch.js +94 -0
  234. package/session/useSessionSearch.js.map +1 -0
  235. package/session/useSessionUsage.d.ts.map +1 -1
  236. package/session/useSessionUsage.js +65 -4
  237. package/session/useSessionUsage.js.map +1 -1
  238. package/settings/UsageSection.d.ts.map +1 -1
  239. package/settings/UsageSection.js +1 -4
  240. package/settings/UsageSection.js.map +1 -1
  241. package/skill/SkillPicker.d.ts.map +1 -1
  242. package/skill/SkillPicker.js +4 -2
  243. package/skill/SkillPicker.js.map +1 -1
  244. package/src/activity/group-activity.ts +65 -0
  245. package/src/activity/index.ts +13 -0
  246. package/src/activity/types.ts +35 -0
  247. package/src/activity/useRecentActivity.ts +131 -0
  248. package/src/agent/AgentPicker.tsx +6 -1
  249. package/src/billing/BillingSection.tsx +3 -2
  250. package/src/composer/ComposerToolbar.tsx +19 -1
  251. package/src/composer/ContextChip.tsx +20 -11
  252. package/src/composer/InteractionModePicker.tsx +189 -0
  253. package/src/composer/SessionComposer.tsx +137 -11
  254. package/src/composer/__tests__/SessionComposer-memo.test.ts +11 -6
  255. package/src/composer/index.ts +7 -0
  256. package/src/dashboard/DashboardFailedRuns.tsx +109 -0
  257. package/src/dashboard/DashboardKPICards.tsx +128 -0
  258. package/src/dashboard/OperationalDashboard.tsx +96 -0
  259. package/src/dashboard/index.ts +37 -0
  260. package/src/dashboard/types.ts +50 -0
  261. package/src/dashboard/useAgentExecutionSummary.ts +71 -0
  262. package/src/dashboard/useDashboardFailedRuns.ts +122 -0
  263. package/src/dashboard/useDashboardSummary.ts +109 -0
  264. package/src/environment/usePersonalEnvironment.ts +1 -0
  265. package/src/execution/ContextGauge.tsx +243 -0
  266. package/src/execution/InteractionModeBadge.tsx +70 -0
  267. package/src/execution/MessageThread.tsx +88 -3
  268. package/src/execution/PlanCompletionCard.tsx +105 -0
  269. package/src/execution/SummarizationBadge.tsx +188 -0
  270. package/src/execution/SummarizationCard.tsx +126 -0
  271. package/src/execution/__tests__/PlanCompletionCard.test.tsx +67 -0
  272. package/src/execution/__tests__/buildThreadItems-plan-completion.test.ts +197 -0
  273. package/src/execution/__tests__/useContextWindow.test.ts +167 -0
  274. package/src/execution/index.ts +22 -0
  275. package/src/execution/useContextWindow.ts +148 -0
  276. package/src/execution/useCreateAgentExecution.ts +26 -3
  277. package/src/index.ts +227 -0
  278. package/src/inline-edit/InlineEditKeyValue.tsx +23 -0
  279. package/src/internal/VirtualizedThread.tsx +4 -1
  280. package/src/internal/store/index.ts +6 -0
  281. package/src/internal/store/workflow-execution-event-store.ts +391 -0
  282. package/src/internal/useFetch.ts +2 -2
  283. package/src/library/ScopeToggle.tsx +88 -20
  284. package/src/library/VisibilityToggle.tsx +54 -13
  285. package/src/library/index.ts +2 -0
  286. package/src/library/useExportResource.ts +12 -9
  287. package/src/mcp-server/McpServerDetailView.tsx +509 -203
  288. package/src/mcp-server/McpServerPicker.tsx +6 -1
  289. package/src/models/ModelRegistryContext.ts +3 -0
  290. package/src/models/ModelSelector.tsx +25 -2
  291. package/src/models/__tests__/useModelRegistry.test.tsx +5 -3
  292. package/src/models/useModelRegistry.ts +5 -2
  293. package/src/provider.tsx +264 -26
  294. package/src/resource-detail/ResourceDetailShell.tsx +21 -4
  295. package/src/resource-detail/types.ts +25 -0
  296. package/src/resource-detail/useDeleteResource.ts +6 -1
  297. package/src/resource-workbench/components/ResourceWorkbench.tsx +4 -0
  298. package/src/session/__tests__/session-spec-converters.test.ts +185 -0
  299. package/src/session/__tests__/useNewSessionFlow.test.tsx +2 -2
  300. package/src/session/__tests__/usePersistedModel.test.tsx +1 -1
  301. package/src/session/group-sessions.ts +65 -0
  302. package/src/session/index.ts +8 -2
  303. package/src/session/session-spec-converters.ts +86 -0
  304. package/src/session/useNewSessionFlow.ts +1 -0
  305. package/src/session/useSessionConversation.ts +13 -64
  306. package/src/session/useSessionPageFlow.ts +29 -7
  307. package/src/session/useSessionSearch.ts +149 -0
  308. package/src/session/useSessionUsage.ts +72 -4
  309. package/src/settings/UsageSection.tsx +1 -9
  310. package/src/skill/SkillPicker.tsx +6 -1
  311. package/src/workflow/ApprovalFormBuilder.tsx +1017 -0
  312. package/src/workflow/BranchConditionBuilder.tsx +451 -0
  313. package/src/workflow/CanvasActionsContext.ts +12 -0
  314. package/src/workflow/CanvasContextMenu.tsx +364 -0
  315. package/src/workflow/CanvasTaskNode.tsx +372 -0
  316. package/src/workflow/CanvasTransitionEdge.tsx +122 -0
  317. package/src/workflow/CostByWorkflowChart.tsx +120 -0
  318. package/src/workflow/ExecutionSummaryWidget.tsx +194 -0
  319. package/src/workflow/ExecutionTrendChart.tsx +157 -0
  320. package/src/workflow/FailedRunsWidget.tsx +109 -0
  321. package/src/workflow/PendingApprovalsWidget.tsx +115 -0
  322. package/src/workflow/TaskConfigForm.tsx +618 -0
  323. package/src/workflow/TaskKindRegistryContext.ts +36 -0
  324. package/src/workflow/TaskPickerPopover.tsx +326 -0
  325. package/src/workflow/WorkflowArchitectDialog.tsx +505 -0
  326. package/src/workflow/WorkflowCanvasEditor.tsx +651 -0
  327. package/src/workflow/WorkflowCanvasInner.tsx +160 -0
  328. package/src/workflow/WorkflowDashboard.tsx +124 -0
  329. package/src/workflow/WorkflowDetailView.tsx +527 -0
  330. package/src/workflow/WorkflowEditorView.tsx +547 -0
  331. package/src/workflow/WorkflowExecutionApprovalCard.tsx +129 -0
  332. package/src/workflow/WorkflowExecutionArtifactPanel.tsx +112 -0
  333. package/src/workflow/WorkflowExecutionCostPanel.tsx +131 -0
  334. package/src/workflow/WorkflowExecutionHeader.tsx +194 -0
  335. package/src/workflow/WorkflowExecutionPhaseBadge.tsx +188 -0
  336. package/src/workflow/WorkflowExecutionTaskPanel.tsx +135 -0
  337. package/src/workflow/WorkflowExecutionTimeline.tsx +118 -0
  338. package/src/workflow/WorkflowExecutionTimelineEvent.tsx +488 -0
  339. package/src/workflow/WorkflowExecutionViewer.tsx +248 -0
  340. package/src/workflow/WorkflowInspectorPanel.tsx +568 -0
  341. package/src/workflow/WorkflowRefinePanel.tsx +411 -0
  342. package/src/workflow/WorkflowRepairCard.tsx +433 -0
  343. package/src/workflow/WorkflowRunDialog.tsx +220 -0
  344. package/src/workflow/WorkflowRunForm.tsx +245 -0
  345. package/src/workflow/WorkflowTaskList.tsx +177 -0
  346. package/src/workflow/WorkflowTaskPalette.tsx +248 -0
  347. package/src/workflow/WorkflowTopologyGraph.tsx +250 -0
  348. package/src/workflow/WorkflowYamlEditor.tsx +271 -0
  349. package/src/workflow/__tests__/starter-workflow-yaml.test.ts +57 -0
  350. package/src/workflow/canvas-constants.ts +87 -0
  351. package/src/workflow/canvas-icons.tsx +36 -0
  352. package/src/workflow/extract-workflow-yaml.ts +87 -0
  353. package/src/workflow/graph-commands.ts +675 -0
  354. package/src/workflow/index.ts +375 -0
  355. package/src/workflow/serialize-workflow-yaml.ts +546 -0
  356. package/src/workflow/starter-workflow-yaml.ts +29 -0
  357. package/src/workflow/types.ts +99 -0
  358. package/src/workflow/useCanvasKeyboardShortcuts.ts +134 -0
  359. package/src/workflow/useDiagnoseExecutionFlow.ts +378 -0
  360. package/src/workflow/useGraphHistory.ts +138 -0
  361. package/src/workflow/usePendingApprovals.ts +89 -0
  362. package/src/workflow/useRefineWorkflowFlow.ts +321 -0
  363. package/src/workflow/useResolveAgentExecutionSession.ts +57 -0
  364. package/src/workflow/useRunWorkflowFlow.ts +235 -0
  365. package/src/workflow/useTaskKindRegistry.ts +135 -0
  366. package/src/workflow/useWorkflow.ts +78 -0
  367. package/src/workflow/useWorkflowArchitectFlow.ts +303 -0
  368. package/src/workflow/useWorkflowCanvas.ts +882 -0
  369. package/src/workflow/useWorkflowCount.ts +66 -0
  370. package/src/workflow/useWorkflowDashboardSummary.ts +71 -0
  371. package/src/workflow/useWorkflowEditor.ts +106 -0
  372. package/src/workflow/useWorkflowExecution.ts +67 -0
  373. package/src/workflow/useWorkflowExecutionActions.ts +179 -0
  374. package/src/workflow/useWorkflowExecutionArtifacts.ts +57 -0
  375. package/src/workflow/useWorkflowExecutionEventLog.ts +111 -0
  376. package/src/workflow/useWorkflowExecutionEventStream.ts +244 -0
  377. package/src/workflow/useWorkflowExecutionList.ts +121 -0
  378. package/src/workflow/useWorkflowInstances.ts +62 -0
  379. package/src/workflow/useWorkflowList.ts +79 -0
  380. package/src/workflow/useWorkflowSave.ts +84 -0
  381. package/src/workflow/useWorkflowTopology.ts +229 -0
  382. package/src/workflow/useWorkflowValidation.ts +329 -0
  383. package/src/workflow/useWorkflowYaml.ts +49 -0
  384. package/src/workflow/workflow-graph-conversions.ts +796 -0
  385. package/src/workflow/workflow-graph-model.ts +83 -0
  386. package/src/workflow/workflow-yaml-diff.ts +132 -0
  387. package/styles.css +1 -1
  388. package/workflow/ApprovalFormBuilder.d.ts +24 -0
  389. package/workflow/ApprovalFormBuilder.d.ts.map +1 -0
  390. package/workflow/ApprovalFormBuilder.js +347 -0
  391. package/workflow/ApprovalFormBuilder.js.map +1 -0
  392. package/workflow/BranchConditionBuilder.d.ts +29 -0
  393. package/workflow/BranchConditionBuilder.d.ts.map +1 -0
  394. package/workflow/BranchConditionBuilder.js +170 -0
  395. package/workflow/BranchConditionBuilder.js.map +1 -0
  396. package/workflow/CanvasActionsContext.d.ts +8 -0
  397. package/workflow/CanvasActionsContext.d.ts.map +1 -0
  398. package/workflow/CanvasActionsContext.js +4 -0
  399. package/workflow/CanvasActionsContext.js.map +1 -0
  400. package/workflow/CanvasContextMenu.d.ts +59 -0
  401. package/workflow/CanvasContextMenu.d.ts.map +1 -0
  402. package/workflow/CanvasContextMenu.js +98 -0
  403. package/workflow/CanvasContextMenu.js.map +1 -0
  404. package/workflow/CanvasTaskNode.d.ts +21 -0
  405. package/workflow/CanvasTaskNode.d.ts.map +1 -0
  406. package/workflow/CanvasTaskNode.js +125 -0
  407. package/workflow/CanvasTaskNode.js.map +1 -0
  408. package/workflow/CanvasTransitionEdge.d.ts +24 -0
  409. package/workflow/CanvasTransitionEdge.d.ts.map +1 -0
  410. package/workflow/CanvasTransitionEdge.js +50 -0
  411. package/workflow/CanvasTransitionEdge.js.map +1 -0
  412. package/workflow/CostByWorkflowChart.d.ts +15 -0
  413. package/workflow/CostByWorkflowChart.d.ts.map +1 -0
  414. package/workflow/CostByWorkflowChart.js +45 -0
  415. package/workflow/CostByWorkflowChart.js.map +1 -0
  416. package/workflow/ExecutionSummaryWidget.d.ts +16 -0
  417. package/workflow/ExecutionSummaryWidget.d.ts.map +1 -0
  418. package/workflow/ExecutionSummaryWidget.js +93 -0
  419. package/workflow/ExecutionSummaryWidget.js.map +1 -0
  420. package/workflow/ExecutionTrendChart.d.ts +14 -0
  421. package/workflow/ExecutionTrendChart.d.ts.map +1 -0
  422. package/workflow/ExecutionTrendChart.js +67 -0
  423. package/workflow/ExecutionTrendChart.js.map +1 -0
  424. package/workflow/FailedRunsWidget.d.ts +19 -0
  425. package/workflow/FailedRunsWidget.d.ts.map +1 -0
  426. package/workflow/FailedRunsWidget.js +37 -0
  427. package/workflow/FailedRunsWidget.js.map +1 -0
  428. package/workflow/PendingApprovalsWidget.d.ts +19 -0
  429. package/workflow/PendingApprovalsWidget.d.ts.map +1 -0
  430. package/workflow/PendingApprovalsWidget.js +35 -0
  431. package/workflow/PendingApprovalsWidget.js.map +1 -0
  432. package/workflow/TaskConfigForm.d.ts +29 -0
  433. package/workflow/TaskConfigForm.d.ts.map +1 -0
  434. package/workflow/TaskConfigForm.js +230 -0
  435. package/workflow/TaskConfigForm.js.map +1 -0
  436. package/workflow/TaskKindRegistryContext.d.ts +24 -0
  437. package/workflow/TaskKindRegistryContext.d.ts.map +1 -0
  438. package/workflow/TaskKindRegistryContext.js +25 -0
  439. package/workflow/TaskKindRegistryContext.js.map +1 -0
  440. package/workflow/TaskPickerPopover.d.ts +33 -0
  441. package/workflow/TaskPickerPopover.d.ts.map +1 -0
  442. package/workflow/TaskPickerPopover.js +110 -0
  443. package/workflow/TaskPickerPopover.js.map +1 -0
  444. package/workflow/WorkflowArchitectDialog.d.ts +48 -0
  445. package/workflow/WorkflowArchitectDialog.d.ts.map +1 -0
  446. package/workflow/WorkflowArchitectDialog.js +129 -0
  447. package/workflow/WorkflowArchitectDialog.js.map +1 -0
  448. package/workflow/WorkflowCanvasEditor.d.ts +38 -0
  449. package/workflow/WorkflowCanvasEditor.d.ts.map +1 -0
  450. package/workflow/WorkflowCanvasEditor.js +287 -0
  451. package/workflow/WorkflowCanvasEditor.js.map +1 -0
  452. package/workflow/WorkflowCanvasInner.d.ts +32 -0
  453. package/workflow/WorkflowCanvasInner.d.ts.map +1 -0
  454. package/workflow/WorkflowCanvasInner.js +49 -0
  455. package/workflow/WorkflowCanvasInner.js.map +1 -0
  456. package/workflow/WorkflowDashboard.d.ts +35 -0
  457. package/workflow/WorkflowDashboard.d.ts.map +1 -0
  458. package/workflow/WorkflowDashboard.js +59 -0
  459. package/workflow/WorkflowDashboard.js.map +1 -0
  460. package/workflow/WorkflowDetailView.d.ts +63 -0
  461. package/workflow/WorkflowDetailView.d.ts.map +1 -0
  462. package/workflow/WorkflowDetailView.js +202 -0
  463. package/workflow/WorkflowDetailView.js.map +1 -0
  464. package/workflow/WorkflowEditorView.d.ts +43 -0
  465. package/workflow/WorkflowEditorView.d.ts.map +1 -0
  466. package/workflow/WorkflowEditorView.js +165 -0
  467. package/workflow/WorkflowEditorView.js.map +1 -0
  468. package/workflow/WorkflowExecutionApprovalCard.d.ts +27 -0
  469. package/workflow/WorkflowExecutionApprovalCard.d.ts.map +1 -0
  470. package/workflow/WorkflowExecutionApprovalCard.js +32 -0
  471. package/workflow/WorkflowExecutionApprovalCard.js.map +1 -0
  472. package/workflow/WorkflowExecutionArtifactPanel.d.ts +15 -0
  473. package/workflow/WorkflowExecutionArtifactPanel.d.ts.map +1 -0
  474. package/workflow/WorkflowExecutionArtifactPanel.js +53 -0
  475. package/workflow/WorkflowExecutionArtifactPanel.js.map +1 -0
  476. package/workflow/WorkflowExecutionCostPanel.d.ts +18 -0
  477. package/workflow/WorkflowExecutionCostPanel.d.ts.map +1 -0
  478. package/workflow/WorkflowExecutionCostPanel.js +44 -0
  479. package/workflow/WorkflowExecutionCostPanel.js.map +1 -0
  480. package/workflow/WorkflowExecutionHeader.d.ts +26 -0
  481. package/workflow/WorkflowExecutionHeader.d.ts.map +1 -0
  482. package/workflow/WorkflowExecutionHeader.js +68 -0
  483. package/workflow/WorkflowExecutionHeader.js.map +1 -0
  484. package/workflow/WorkflowExecutionPhaseBadge.d.ts +23 -0
  485. package/workflow/WorkflowExecutionPhaseBadge.d.ts.map +1 -0
  486. package/workflow/WorkflowExecutionPhaseBadge.js +99 -0
  487. package/workflow/WorkflowExecutionPhaseBadge.js.map +1 -0
  488. package/workflow/WorkflowExecutionTaskPanel.d.ts +24 -0
  489. package/workflow/WorkflowExecutionTaskPanel.d.ts.map +1 -0
  490. package/workflow/WorkflowExecutionTaskPanel.js +59 -0
  491. package/workflow/WorkflowExecutionTaskPanel.js.map +1 -0
  492. package/workflow/WorkflowExecutionTimeline.d.ts +27 -0
  493. package/workflow/WorkflowExecutionTimeline.d.ts.map +1 -0
  494. package/workflow/WorkflowExecutionTimeline.js +51 -0
  495. package/workflow/WorkflowExecutionTimeline.js.map +1 -0
  496. package/workflow/WorkflowExecutionTimelineEvent.d.ts +18 -0
  497. package/workflow/WorkflowExecutionTimelineEvent.d.ts.map +1 -0
  498. package/workflow/WorkflowExecutionTimelineEvent.js +210 -0
  499. package/workflow/WorkflowExecutionTimelineEvent.js.map +1 -0
  500. package/workflow/WorkflowExecutionViewer.d.ts +45 -0
  501. package/workflow/WorkflowExecutionViewer.d.ts.map +1 -0
  502. package/workflow/WorkflowExecutionViewer.js +75 -0
  503. package/workflow/WorkflowExecutionViewer.js.map +1 -0
  504. package/workflow/WorkflowInspectorPanel.d.ts +46 -0
  505. package/workflow/WorkflowInspectorPanel.d.ts.map +1 -0
  506. package/workflow/WorkflowInspectorPanel.js +152 -0
  507. package/workflow/WorkflowInspectorPanel.js.map +1 -0
  508. package/workflow/WorkflowRefinePanel.d.ts +30 -0
  509. package/workflow/WorkflowRefinePanel.d.ts.map +1 -0
  510. package/workflow/WorkflowRefinePanel.js +107 -0
  511. package/workflow/WorkflowRefinePanel.js.map +1 -0
  512. package/workflow/WorkflowRepairCard.d.ts +35 -0
  513. package/workflow/WorkflowRepairCard.d.ts.map +1 -0
  514. package/workflow/WorkflowRepairCard.js +113 -0
  515. package/workflow/WorkflowRepairCard.js.map +1 -0
  516. package/workflow/WorkflowRunDialog.d.ts +51 -0
  517. package/workflow/WorkflowRunDialog.d.ts.map +1 -0
  518. package/workflow/WorkflowRunDialog.js +75 -0
  519. package/workflow/WorkflowRunDialog.js.map +1 -0
  520. package/workflow/WorkflowRunForm.d.ts +62 -0
  521. package/workflow/WorkflowRunForm.d.ts.map +1 -0
  522. package/workflow/WorkflowRunForm.js +64 -0
  523. package/workflow/WorkflowRunForm.js.map +1 -0
  524. package/workflow/WorkflowTaskList.d.ts +25 -0
  525. package/workflow/WorkflowTaskList.d.ts.map +1 -0
  526. package/workflow/WorkflowTaskList.js +89 -0
  527. package/workflow/WorkflowTaskList.js.map +1 -0
  528. package/workflow/WorkflowTaskPalette.d.ts +22 -0
  529. package/workflow/WorkflowTaskPalette.d.ts.map +1 -0
  530. package/workflow/WorkflowTaskPalette.js +83 -0
  531. package/workflow/WorkflowTaskPalette.js.map +1 -0
  532. package/workflow/WorkflowTopologyGraph.d.ts +22 -0
  533. package/workflow/WorkflowTopologyGraph.d.ts.map +1 -0
  534. package/workflow/WorkflowTopologyGraph.js +123 -0
  535. package/workflow/WorkflowTopologyGraph.js.map +1 -0
  536. package/workflow/WorkflowYamlEditor.d.ts +43 -0
  537. package/workflow/WorkflowYamlEditor.d.ts.map +1 -0
  538. package/workflow/WorkflowYamlEditor.js +215 -0
  539. package/workflow/WorkflowYamlEditor.js.map +1 -0
  540. package/workflow/__tests__/starter-workflow-yaml.test.d.ts +2 -0
  541. package/workflow/__tests__/starter-workflow-yaml.test.d.ts.map +1 -0
  542. package/workflow/__tests__/starter-workflow-yaml.test.js +44 -0
  543. package/workflow/__tests__/starter-workflow-yaml.test.js.map +1 -0
  544. package/workflow/canvas-constants.d.ts +56 -0
  545. package/workflow/canvas-constants.d.ts.map +1 -0
  546. package/workflow/canvas-constants.js +74 -0
  547. package/workflow/canvas-constants.js.map +1 -0
  548. package/workflow/canvas-icons.d.ts +13 -0
  549. package/workflow/canvas-icons.d.ts.map +1 -0
  550. package/workflow/canvas-icons.js +21 -0
  551. package/workflow/canvas-icons.js.map +1 -0
  552. package/workflow/extract-workflow-yaml.d.ts +22 -0
  553. package/workflow/extract-workflow-yaml.d.ts.map +1 -0
  554. package/workflow/extract-workflow-yaml.js +63 -0
  555. package/workflow/extract-workflow-yaml.js.map +1 -0
  556. package/workflow/graph-commands.d.ts +209 -0
  557. package/workflow/graph-commands.d.ts.map +1 -0
  558. package/workflow/graph-commands.js +516 -0
  559. package/workflow/graph-commands.js.map +1 -0
  560. package/workflow/index.d.ts +66 -0
  561. package/workflow/index.d.ts.map +1 -0
  562. package/workflow/index.js +88 -0
  563. package/workflow/index.js.map +1 -0
  564. package/workflow/serialize-workflow-yaml.d.ts +39 -0
  565. package/workflow/serialize-workflow-yaml.d.ts.map +1 -0
  566. package/workflow/serialize-workflow-yaml.js +413 -0
  567. package/workflow/serialize-workflow-yaml.js.map +1 -0
  568. package/workflow/starter-workflow-yaml.d.ts +12 -0
  569. package/workflow/starter-workflow-yaml.d.ts.map +1 -0
  570. package/workflow/starter-workflow-yaml.js +30 -0
  571. package/workflow/starter-workflow-yaml.js.map +1 -0
  572. package/workflow/types.d.ts +80 -0
  573. package/workflow/types.d.ts.map +1 -0
  574. package/workflow/types.js +2 -0
  575. package/workflow/types.js.map +1 -0
  576. package/workflow/useCanvasKeyboardShortcuts.d.ts +34 -0
  577. package/workflow/useCanvasKeyboardShortcuts.d.ts.map +1 -0
  578. package/workflow/useCanvasKeyboardShortcuts.js +108 -0
  579. package/workflow/useCanvasKeyboardShortcuts.js.map +1 -0
  580. package/workflow/useDiagnoseExecutionFlow.d.ts +87 -0
  581. package/workflow/useDiagnoseExecutionFlow.d.ts.map +1 -0
  582. package/workflow/useDiagnoseExecutionFlow.js +257 -0
  583. package/workflow/useDiagnoseExecutionFlow.js.map +1 -0
  584. package/workflow/useGraphHistory.d.ts +28 -0
  585. package/workflow/useGraphHistory.d.ts.map +1 -0
  586. package/workflow/useGraphHistory.js +106 -0
  587. package/workflow/useGraphHistory.js.map +1 -0
  588. package/workflow/usePendingApprovals.d.ts +35 -0
  589. package/workflow/usePendingApprovals.d.ts.map +1 -0
  590. package/workflow/usePendingApprovals.js +50 -0
  591. package/workflow/usePendingApprovals.js.map +1 -0
  592. package/workflow/useRefineWorkflowFlow.d.ts +75 -0
  593. package/workflow/useRefineWorkflowFlow.d.ts.map +1 -0
  594. package/workflow/useRefineWorkflowFlow.js +216 -0
  595. package/workflow/useRefineWorkflowFlow.js.map +1 -0
  596. package/workflow/useResolveAgentExecutionSession.d.ts +33 -0
  597. package/workflow/useResolveAgentExecutionSession.d.ts.map +1 -0
  598. package/workflow/useResolveAgentExecutionSession.js +37 -0
  599. package/workflow/useResolveAgentExecutionSession.js.map +1 -0
  600. package/workflow/useRunWorkflowFlow.d.ts +82 -0
  601. package/workflow/useRunWorkflowFlow.d.ts.map +1 -0
  602. package/workflow/useRunWorkflowFlow.js +145 -0
  603. package/workflow/useRunWorkflowFlow.js.map +1 -0
  604. package/workflow/useTaskKindRegistry.d.ts +96 -0
  605. package/workflow/useTaskKindRegistry.d.ts.map +1 -0
  606. package/workflow/useTaskKindRegistry.js +75 -0
  607. package/workflow/useTaskKindRegistry.js.map +1 -0
  608. package/workflow/useWorkflow.d.ts +47 -0
  609. package/workflow/useWorkflow.d.ts.map +1 -0
  610. package/workflow/useWorkflow.js +53 -0
  611. package/workflow/useWorkflow.js.map +1 -0
  612. package/workflow/useWorkflowArchitectFlow.d.ts +96 -0
  613. package/workflow/useWorkflowArchitectFlow.d.ts.map +1 -0
  614. package/workflow/useWorkflowArchitectFlow.js +179 -0
  615. package/workflow/useWorkflowArchitectFlow.js.map +1 -0
  616. package/workflow/useWorkflowCanvas.d.ts +66 -0
  617. package/workflow/useWorkflowCanvas.d.ts.map +1 -0
  618. package/workflow/useWorkflowCanvas.js +628 -0
  619. package/workflow/useWorkflowCanvas.js.map +1 -0
  620. package/workflow/useWorkflowCount.d.ts +47 -0
  621. package/workflow/useWorkflowCount.d.ts.map +1 -0
  622. package/workflow/useWorkflowCount.js +26 -0
  623. package/workflow/useWorkflowCount.js.map +1 -0
  624. package/workflow/useWorkflowDashboardSummary.d.ts +34 -0
  625. package/workflow/useWorkflowDashboardSummary.d.ts.map +1 -0
  626. package/workflow/useWorkflowDashboardSummary.js +33 -0
  627. package/workflow/useWorkflowDashboardSummary.js.map +1 -0
  628. package/workflow/useWorkflowEditor.d.ts +45 -0
  629. package/workflow/useWorkflowEditor.d.ts.map +1 -0
  630. package/workflow/useWorkflowEditor.js +52 -0
  631. package/workflow/useWorkflowEditor.js.map +1 -0
  632. package/workflow/useWorkflowExecution.d.ts +37 -0
  633. package/workflow/useWorkflowExecution.d.ts.map +1 -0
  634. package/workflow/useWorkflowExecution.js +43 -0
  635. package/workflow/useWorkflowExecution.js.map +1 -0
  636. package/workflow/useWorkflowExecutionActions.d.ts +41 -0
  637. package/workflow/useWorkflowExecutionActions.d.ts.map +1 -0
  638. package/workflow/useWorkflowExecutionActions.js +86 -0
  639. package/workflow/useWorkflowExecutionActions.js.map +1 -0
  640. package/workflow/useWorkflowExecutionArtifacts.d.ts +26 -0
  641. package/workflow/useWorkflowExecutionArtifacts.d.ts.map +1 -0
  642. package/workflow/useWorkflowExecutionArtifacts.js +29 -0
  643. package/workflow/useWorkflowExecutionArtifacts.js.map +1 -0
  644. package/workflow/useWorkflowExecutionEventLog.d.ts +47 -0
  645. package/workflow/useWorkflowExecutionEventLog.d.ts.map +1 -0
  646. package/workflow/useWorkflowExecutionEventLog.js +59 -0
  647. package/workflow/useWorkflowExecutionEventLog.js.map +1 -0
  648. package/workflow/useWorkflowExecutionEventStream.d.ts +61 -0
  649. package/workflow/useWorkflowExecutionEventStream.d.ts.map +1 -0
  650. package/workflow/useWorkflowExecutionEventStream.js +161 -0
  651. package/workflow/useWorkflowExecutionEventStream.js.map +1 -0
  652. package/workflow/useWorkflowExecutionList.d.ts +49 -0
  653. package/workflow/useWorkflowExecutionList.d.ts.map +1 -0
  654. package/workflow/useWorkflowExecutionList.js +65 -0
  655. package/workflow/useWorkflowExecutionList.js.map +1 -0
  656. package/workflow/useWorkflowInstances.d.ts +30 -0
  657. package/workflow/useWorkflowInstances.d.ts.map +1 -0
  658. package/workflow/useWorkflowInstances.js +33 -0
  659. package/workflow/useWorkflowInstances.js.map +1 -0
  660. package/workflow/useWorkflowList.d.ts +57 -0
  661. package/workflow/useWorkflowList.d.ts.map +1 -0
  662. package/workflow/useWorkflowList.js +29 -0
  663. package/workflow/useWorkflowList.js.map +1 -0
  664. package/workflow/useWorkflowSave.d.ts +25 -0
  665. package/workflow/useWorkflowSave.d.ts.map +1 -0
  666. package/workflow/useWorkflowSave.js +61 -0
  667. package/workflow/useWorkflowSave.js.map +1 -0
  668. package/workflow/useWorkflowTopology.d.ts +40 -0
  669. package/workflow/useWorkflowTopology.d.ts.map +1 -0
  670. package/workflow/useWorkflowTopology.js +163 -0
  671. package/workflow/useWorkflowTopology.js.map +1 -0
  672. package/workflow/useWorkflowValidation.d.ts +27 -0
  673. package/workflow/useWorkflowValidation.d.ts.map +1 -0
  674. package/workflow/useWorkflowValidation.js +253 -0
  675. package/workflow/useWorkflowValidation.js.map +1 -0
  676. package/workflow/useWorkflowYaml.d.ts +26 -0
  677. package/workflow/useWorkflowYaml.d.ts.map +1 -0
  678. package/workflow/useWorkflowYaml.js +26 -0
  679. package/workflow/useWorkflowYaml.js.map +1 -0
  680. package/workflow/workflow-graph-conversions.d.ts +70 -0
  681. package/workflow/workflow-graph-conversions.d.ts.map +1 -0
  682. package/workflow/workflow-graph-conversions.js +634 -0
  683. package/workflow/workflow-graph-conversions.js.map +1 -0
  684. package/workflow/workflow-graph-model.d.ts +83 -0
  685. package/workflow/workflow-graph-model.d.ts.map +1 -0
  686. package/workflow/workflow-graph-model.js +5 -0
  687. package/workflow/workflow-graph-model.js.map +1 -0
  688. package/workflow/workflow-yaml-diff.d.ts +24 -0
  689. package/workflow/workflow-yaml-diff.d.ts.map +1 -0
  690. package/workflow/workflow-yaml-diff.js +96 -0
  691. package/workflow/workflow-yaml-diff.js.map +1 -0
@@ -0,0 +1,185 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import {
3
+ specWorkspaceToInput,
4
+ specMcpUsagesToInput,
5
+ specSkillRefsToInput,
6
+ } from "../session-spec-converters";
7
+ import type { Session } from "@stigmer/protos/ai/stigmer/agentic/session/v1/api_pb";
8
+ import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
9
+
10
+ type SessionSpec = Session["spec"];
11
+
12
+ function makeSpec(overrides: Partial<NonNullable<SessionSpec>> = {}): SessionSpec {
13
+ return {
14
+ agentInstanceId: "",
15
+ subject: "",
16
+ threadId: "",
17
+ sandboxId: "",
18
+ metadata: {},
19
+ workspaceEntries: [],
20
+ mcpServerUsages: [],
21
+ skillRefs: [],
22
+ runnerId: "",
23
+ harness: 0,
24
+ cursorMode: 0,
25
+ ...overrides,
26
+ } as unknown as SessionSpec;
27
+ }
28
+
29
+ describe("specWorkspaceToInput", () => {
30
+ it("returns undefined for undefined spec", () => {
31
+ expect(specWorkspaceToInput(undefined)).toBeUndefined();
32
+ });
33
+
34
+ it("returns empty array for spec with no workspace entries", () => {
35
+ expect(specWorkspaceToInput(makeSpec())).toEqual([]);
36
+ });
37
+
38
+ it("converts git repo entries", () => {
39
+ const spec = makeSpec({
40
+ workspaceEntries: [
41
+ {
42
+ name: "my-repo",
43
+ source: {
44
+ source: {
45
+ case: "gitRepo" as const,
46
+ value: { url: "https://github.com/org/repo", branch: "main", commit: "", depth: 0 },
47
+ },
48
+ },
49
+ },
50
+ ] as unknown as SessionSpec extends undefined ? never : NonNullable<SessionSpec>["workspaceEntries"],
51
+ });
52
+
53
+ const result = specWorkspaceToInput(spec);
54
+ expect(result).toEqual([
55
+ {
56
+ name: "my-repo",
57
+ source: {
58
+ gitRepo: {
59
+ url: "https://github.com/org/repo",
60
+ branch: "main",
61
+ commit: undefined,
62
+ depth: undefined,
63
+ },
64
+ },
65
+ },
66
+ ]);
67
+ });
68
+
69
+ it("converts local path entries", () => {
70
+ const spec = makeSpec({
71
+ workspaceEntries: [
72
+ {
73
+ name: "local",
74
+ source: {
75
+ source: {
76
+ case: "localPath" as const,
77
+ value: { path: "/home/user/project" },
78
+ },
79
+ },
80
+ },
81
+ ] as unknown as SessionSpec extends undefined ? never : NonNullable<SessionSpec>["workspaceEntries"],
82
+ });
83
+
84
+ const result = specWorkspaceToInput(spec);
85
+ expect(result).toEqual([
86
+ {
87
+ name: "local",
88
+ source: {
89
+ localPath: { path: "/home/user/project" },
90
+ },
91
+ },
92
+ ]);
93
+ });
94
+ });
95
+
96
+ describe("specMcpUsagesToInput", () => {
97
+ it("returns undefined for undefined spec", () => {
98
+ expect(specMcpUsagesToInput(undefined)).toBeUndefined();
99
+ });
100
+
101
+ it("returns empty array for spec with no MCP server usages", () => {
102
+ expect(specMcpUsagesToInput(makeSpec())).toEqual([]);
103
+ });
104
+
105
+ it("converts MCP server usages with ref and enabled tools", () => {
106
+ const spec = makeSpec({
107
+ mcpServerUsages: [
108
+ {
109
+ mcpServerRef: {
110
+ org: "acme",
111
+ slug: "github-tools",
112
+ version: "v1",
113
+ kind: ApiResourceKind.mcp_server,
114
+ },
115
+ enabledTools: ["create_issue", "list_prs"],
116
+ toolApprovalOverrides: [],
117
+ },
118
+ ] as unknown as NonNullable<SessionSpec>["mcpServerUsages"],
119
+ });
120
+
121
+ const result = specMcpUsagesToInput(spec);
122
+ expect(result).toEqual([
123
+ {
124
+ mcpServerRef: {
125
+ org: "acme",
126
+ slug: "github-tools",
127
+ version: "v1",
128
+ kind: ApiResourceKind.mcp_server,
129
+ },
130
+ enabledTools: ["create_issue", "list_prs"],
131
+ toolApprovalOverrides: undefined,
132
+ },
133
+ ]);
134
+ });
135
+
136
+ it("converts MCP server usages with tool approval overrides", () => {
137
+ const spec = makeSpec({
138
+ mcpServerUsages: [
139
+ {
140
+ mcpServerRef: {
141
+ org: "acme",
142
+ slug: "shell",
143
+ version: "",
144
+ kind: ApiResourceKind.mcp_server,
145
+ },
146
+ enabledTools: [],
147
+ toolApprovalOverrides: [
148
+ { toolName: "exec", requiresApproval: true, message: "Dangerous" },
149
+ ],
150
+ },
151
+ ] as unknown as NonNullable<SessionSpec>["mcpServerUsages"],
152
+ });
153
+
154
+ const result = specMcpUsagesToInput(spec);
155
+ expect(result).toHaveLength(1);
156
+ expect(result![0].toolApprovalOverrides).toEqual([
157
+ { toolName: "exec", requiresApproval: true, message: "Dangerous" },
158
+ ]);
159
+ });
160
+ });
161
+
162
+ describe("specSkillRefsToInput", () => {
163
+ it("returns undefined for undefined spec", () => {
164
+ expect(specSkillRefsToInput(undefined)).toBeUndefined();
165
+ });
166
+
167
+ it("returns empty array for spec with no skill refs", () => {
168
+ expect(specSkillRefsToInput(makeSpec())).toEqual([]);
169
+ });
170
+
171
+ it("converts skill references", () => {
172
+ const spec = makeSpec({
173
+ skillRefs: [
174
+ { org: "acme", slug: "code-review", version: "v2", kind: ApiResourceKind.skill },
175
+ { org: "acme", slug: "testing", version: "", kind: ApiResourceKind.skill },
176
+ ] as unknown as NonNullable<SessionSpec>["skillRefs"],
177
+ });
178
+
179
+ const result = specSkillRefsToInput(spec);
180
+ expect(result).toEqual([
181
+ { org: "acme", slug: "code-review", version: "v2", kind: ApiResourceKind.skill },
182
+ { org: "acme", slug: "testing", version: undefined, kind: ApiResourceKind.skill },
183
+ ]);
184
+ });
185
+ });
@@ -82,7 +82,7 @@ const TEST_MODELS = parseRegistryJson({
82
82
  });
83
83
 
84
84
  function createWrapper() {
85
- const state: ModelRegistryState = { models: TEST_MODELS, isLoading: false, error: null };
85
+ const state: ModelRegistryState = { models: TEST_MODELS, isLoading: false, error: null, refetch: () => {} };
86
86
  return function Wrapper({ children }: { children: ReactNode }) {
87
87
  return (
88
88
  <ModelRegistryContext.Provider value={state}>
@@ -284,7 +284,7 @@ describe("useNewSessionFlow", () => {
284
284
  describe("model validation timing", () => {
285
285
  it("does not restore model while registry is loading", () => {
286
286
  localStorage.setItem(STORAGE_KEY_MODEL_NATIVE, DEFAULT_MODEL_ID);
287
- const loadingState: ModelRegistryState = { models: [], isLoading: true, error: null };
287
+ const loadingState: ModelRegistryState = { models: [], isLoading: true, error: null, refetch: () => {} };
288
288
 
289
289
  function LoadingWrapper({ children }: { children: ReactNode }) {
290
290
  return (
@@ -14,7 +14,7 @@ const TEST_MODELS = parseRegistryJson({
14
14
  });
15
15
 
16
16
  function createWrapper() {
17
- const state: ModelRegistryState = { models: TEST_MODELS, isLoading: false, error: null };
17
+ const state: ModelRegistryState = { models: TEST_MODELS, isLoading: false, error: null, refetch: () => {} };
18
18
  return function Wrapper({ children }: { children: ReactNode }) {
19
19
  return (
20
20
  <ModelRegistryContext.Provider value={state}>
@@ -1,4 +1,5 @@
1
1
  import type { Session } from "@stigmer/protos/ai/stigmer/agentic/session/v1/api_pb";
2
+ import type { SearchResult } from "@stigmer/protos/ai/stigmer/search/v1/io_pb";
2
3
  import { timestampDate } from "@bufbuild/protobuf/wkt";
3
4
 
4
5
  /** A time-based group of sessions produced by {@link groupSessionsByTime}. */
@@ -9,11 +10,24 @@ export interface SessionGroup {
9
10
  readonly sessions: readonly Session[];
10
11
  }
11
12
 
13
+ /** A time-based group of search results produced by {@link groupSearchResultsByTime}. */
14
+ export interface SearchResultGroup {
15
+ /** Display label for this group (e.g. "Today", "Yesterday"). */
16
+ readonly label: string;
17
+ /** Search results belonging to this group, in their original input order. */
18
+ readonly entries: readonly SearchResult[];
19
+ }
20
+
12
21
  interface Bucket {
13
22
  label: string;
14
23
  sessions: Session[];
15
24
  }
16
25
 
26
+ interface SearchResultBucket {
27
+ label: string;
28
+ entries: SearchResult[];
29
+ }
30
+
17
31
  /**
18
32
  * Groups sessions by their creation timestamp into time-based buckets:
19
33
  * "Today", "Yesterday", "Previous 7 Days", "Previous 30 Days", "Older".
@@ -91,6 +105,57 @@ export function groupSessionsByTime(
91
105
  return buckets.filter((b) => b.sessions.length > 0);
92
106
  }
93
107
 
108
+ /**
109
+ * Groups SearchResult entries by their `createdAt` timestamp into time-based
110
+ * buckets, identical to {@link groupSessionsByTime} but for lightweight
111
+ * search results.
112
+ *
113
+ * @param entries - SearchResult entries (from SearchService session search).
114
+ * @param now - Reference time for grouping; defaults to current time.
115
+ */
116
+ export function groupSearchResultsByTime(
117
+ entries: readonly SearchResult[],
118
+ now?: Date,
119
+ ): readonly SearchResultGroup[] {
120
+ const ref = now ?? new Date();
121
+ const todayStart = startOfDay(ref);
122
+ const yesterdayStart = addDays(todayStart, -1);
123
+ const sevenDaysAgo = addDays(todayStart, -6);
124
+ const thirtyDaysAgo = addDays(todayStart, -29);
125
+
126
+ const buckets: SearchResultBucket[] = [
127
+ { label: "Today", entries: [] },
128
+ { label: "Yesterday", entries: [] },
129
+ { label: "Previous 7 Days", entries: [] },
130
+ { label: "Previous 30 Days", entries: [] },
131
+ { label: "Older", entries: [] },
132
+ ];
133
+
134
+ for (const entry of entries) {
135
+ const ts = entry.createdAt;
136
+ const date = ts ? timestampDate(ts) : null;
137
+
138
+ if (!date) {
139
+ buckets[buckets.length - 1].entries.push(entry);
140
+ continue;
141
+ }
142
+
143
+ if (date >= todayStart) {
144
+ buckets[0].entries.push(entry);
145
+ } else if (date >= yesterdayStart) {
146
+ buckets[1].entries.push(entry);
147
+ } else if (date >= sevenDaysAgo) {
148
+ buckets[2].entries.push(entry);
149
+ } else if (date >= thirtyDaysAgo) {
150
+ buckets[3].entries.push(entry);
151
+ } else {
152
+ buckets[4].entries.push(entry);
153
+ }
154
+ }
155
+
156
+ return buckets.filter((b) => b.entries.length > 0);
157
+ }
158
+
94
159
  function startOfDay(date: Date): Date {
95
160
  const d = new Date(date);
96
161
  d.setHours(0, 0, 0, 0);
@@ -76,8 +76,14 @@ export type {
76
76
  DraftParams,
77
77
  } from "./draft";
78
78
 
79
- export { groupSessionsByTime } from "./group-sessions";
80
- export type { SessionGroup } from "./group-sessions";
79
+ export { groupSessionsByTime, groupSearchResultsByTime } from "./group-sessions";
80
+ export type { SessionGroup, SearchResultGroup } from "./group-sessions";
81
+
82
+ export { useSessionSearch } from "./useSessionSearch";
83
+ export type {
84
+ UseSessionSearchOptions,
85
+ UseSessionSearchReturn,
86
+ } from "./useSessionSearch";
81
87
 
82
88
  // Session utilities (re-exported from @stigmer/sdk)
83
89
  export { PENDING_SUBJECT, resolvedSubject } from "@stigmer/sdk";
@@ -0,0 +1,86 @@
1
+ import type { Session } from "@stigmer/protos/ai/stigmer/agentic/session/v1/api_pb";
2
+ import type {
3
+ McpServerUsageInput,
4
+ ResourceRef,
5
+ WorkspaceEntryInput,
6
+ } from "@stigmer/sdk";
7
+
8
+ /**
9
+ * Convert proto workspace entries back to SDK input format.
10
+ *
11
+ * Used by `useSessionConversation` (session update with replace semantics)
12
+ * and `useSessionPageFlow` (hydrating composer state from a loaded session).
13
+ */
14
+ export function specWorkspaceToInput(
15
+ spec: Session["spec"],
16
+ ): WorkspaceEntryInput[] | undefined {
17
+ return spec?.workspaceEntries?.map((e): WorkspaceEntryInput => {
18
+ if (e.source?.source.case === "gitRepo") {
19
+ const v = e.source.source.value;
20
+ return {
21
+ name: e.name || undefined,
22
+ source: {
23
+ gitRepo: {
24
+ url: v.url,
25
+ branch: v.branch || undefined,
26
+ commit: v.commit || undefined,
27
+ depth: v.depth || undefined,
28
+ },
29
+ },
30
+ };
31
+ }
32
+ if (e.source?.source.case === "localPath") {
33
+ return {
34
+ name: e.name || undefined,
35
+ source: {
36
+ localPath: { path: e.source.source.value.path || undefined },
37
+ },
38
+ };
39
+ }
40
+ return { name: e.name || undefined, source: {} };
41
+ });
42
+ }
43
+
44
+ /**
45
+ * Convert proto MCP server usages back to SDK input format.
46
+ *
47
+ * Used by `useSessionConversation` (session update with replace semantics)
48
+ * and `useSessionPageFlow` (hydrating composer state from a loaded session).
49
+ */
50
+ export function specMcpUsagesToInput(
51
+ spec: Session["spec"],
52
+ ): McpServerUsageInput[] | undefined {
53
+ return spec?.mcpServerUsages?.map((u) => ({
54
+ mcpServerRef: {
55
+ org: u.mcpServerRef?.org ?? "",
56
+ slug: u.mcpServerRef?.slug ?? "",
57
+ version: u.mcpServerRef?.version || undefined,
58
+ kind: u.mcpServerRef?.kind,
59
+ },
60
+ enabledTools: u.enabledTools?.length ? [...u.enabledTools] : undefined,
61
+ toolApprovalOverrides: u.toolApprovalOverrides?.length
62
+ ? u.toolApprovalOverrides.map((o) => ({
63
+ toolName: o.toolName || undefined,
64
+ requiresApproval: o.requiresApproval || undefined,
65
+ message: o.message || undefined,
66
+ }))
67
+ : undefined,
68
+ }));
69
+ }
70
+
71
+ /**
72
+ * Convert proto skill references back to SDK input format.
73
+ *
74
+ * Used by `useSessionConversation` (session update with replace semantics)
75
+ * and `useSessionPageFlow` (hydrating composer state from a loaded session).
76
+ */
77
+ export function specSkillRefsToInput(
78
+ spec: Session["spec"],
79
+ ): ResourceRef[] | undefined {
80
+ return spec?.skillRefs?.map((r) => ({
81
+ org: r.org ?? "",
82
+ slug: r.slug ?? "",
83
+ version: r.version || undefined,
84
+ kind: r.kind,
85
+ }));
86
+ }
@@ -275,6 +275,7 @@ export function useNewSessionFlow(
275
275
  modelName: selectedModel ?? validModelId,
276
276
  runtimeEnv: context?.runtimeEnv,
277
277
  attachments: context?.attachments,
278
+ interactionMode: context?.interactionMode,
278
279
  };
279
280
 
280
281
  let sessionId: string;
@@ -24,6 +24,11 @@ import { useSubmitApproval } from "../execution/useSubmitApproval";
24
24
  import { useSession } from "./useSession";
25
25
  import { useSessionExecutions } from "./useSessionExecutions";
26
26
  import { useUpdateSession } from "./useUpdateSession";
27
+ import {
28
+ specWorkspaceToInput,
29
+ specMcpUsagesToInput,
30
+ specSkillRefsToInput,
31
+ } from "./session-spec-converters";
27
32
 
28
33
  /**
29
34
  * Options for {@link UseSessionConversationReturn.sendFollowUp}.
@@ -71,6 +76,13 @@ export interface SendFollowUpOptions {
71
76
  * @see {@link CreateAgentExecutionInput.attachments}
72
77
  */
73
78
  readonly attachments?: AttachmentInput[];
79
+ /**
80
+ * Interaction mode for this execution.
81
+ *
82
+ * - `"agent"` (default): full tool access.
83
+ * - `"plan"`: read-only analysis, no file mutations.
84
+ */
85
+ readonly interactionMode?: "agent" | "plan";
74
86
  }
75
87
 
76
88
  /**
@@ -360,6 +372,7 @@ export function useSessionConversation(
360
372
  modelName: options?.modelName,
361
373
  runtimeEnv: options?.runtimeEnv,
362
374
  attachments: options?.attachments,
375
+ interactionMode: options?.interactionMode,
363
376
  });
364
377
  setPendingExecutionId(result.executionId);
365
378
  refetch();
@@ -479,67 +492,3 @@ function buildUpdateInput(
479
492
  };
480
493
  }
481
494
 
482
- /** Convert proto workspace entries back to SDK input format. */
483
- function specWorkspaceToInput(
484
- spec: Session["spec"],
485
- ): WorkspaceEntryInput[] | undefined {
486
- return spec?.workspaceEntries?.map((e): WorkspaceEntryInput => {
487
- if (e.source?.source.case === "gitRepo") {
488
- const v = e.source.source.value;
489
- return {
490
- name: e.name || undefined,
491
- source: {
492
- gitRepo: {
493
- url: v.url,
494
- branch: v.branch || undefined,
495
- commit: v.commit || undefined,
496
- depth: v.depth || undefined,
497
- },
498
- },
499
- };
500
- }
501
- if (e.source?.source.case === "localPath") {
502
- return {
503
- name: e.name || undefined,
504
- source: {
505
- localPath: { path: e.source.source.value.path || undefined },
506
- },
507
- };
508
- }
509
- return { name: e.name || undefined, source: {} };
510
- });
511
- }
512
-
513
- /** Convert proto MCP server usages back to SDK input format. */
514
- function specMcpUsagesToInput(
515
- spec: Session["spec"],
516
- ): McpServerUsageInput[] | undefined {
517
- return spec?.mcpServerUsages?.map((u) => ({
518
- mcpServerRef: {
519
- org: u.mcpServerRef?.org ?? "",
520
- slug: u.mcpServerRef?.slug ?? "",
521
- version: u.mcpServerRef?.version || undefined,
522
- kind: u.mcpServerRef?.kind,
523
- },
524
- enabledTools: u.enabledTools?.length ? [...u.enabledTools] : undefined,
525
- toolApprovalOverrides: u.toolApprovalOverrides?.length
526
- ? u.toolApprovalOverrides.map((o) => ({
527
- toolName: o.toolName || undefined,
528
- requiresApproval: o.requiresApproval || undefined,
529
- message: o.message || undefined,
530
- }))
531
- : undefined,
532
- }));
533
- }
534
-
535
- /** Convert proto skill references back to SDK input format. */
536
- function specSkillRefsToInput(
537
- spec: Session["spec"],
538
- ): ResourceRef[] | undefined {
539
- return spec?.skillRefs?.map((r) => ({
540
- org: r.org ?? "",
541
- slug: r.slug ?? "",
542
- version: r.version || undefined,
543
- kind: r.kind,
544
- }));
545
- }
@@ -13,6 +13,7 @@ import { Harness } from "@stigmer/protos/ai/stigmer/agentic/session/v1/enum_pb";
13
13
  import { useSessionConversation, type UseSessionConversationReturn } from "./useSessionConversation";
14
14
  import { useAgentRefFromSession } from "./useAgentRefFromSession";
15
15
  import { usePersistedModel, type UsePersistedModelReturn } from "./usePersistedModel";
16
+ import { specMcpUsagesToInput, specSkillRefsToInput } from "./session-spec-converters";
16
17
 
17
18
  /**
18
19
  * Well-known Daytona sandbox workspace root. Used as the SDK safety-net
@@ -55,6 +56,11 @@ export interface UseSessionPageFlowReturn {
55
56
  readonly resolution: AgentResolution | null;
56
57
  /** Update the agent resolution. */
57
58
  readonly setResolution: (r: AgentResolution | null) => void;
59
+ /**
60
+ * `true` when the session's agent is the org's default agent.
61
+ * Used to render the agent chip as non-removable in the composer.
62
+ */
63
+ readonly isDefaultAgent: boolean;
58
64
 
59
65
  /** Active MCP server configurations for follow-ups. */
60
66
  readonly mcpServerUsages: McpServerUsageInput[];
@@ -177,31 +183,33 @@ export function useSessionPageFlow(
177
183
 
178
184
  const [agentRef, setAgentRef] = useState<ResourceRef | null>(null);
179
185
  const [resolution, setResolution] = useState<AgentResolution | null>(null);
186
+ const [isDefaultAgent, setIsDefaultAgent] = useState(false);
180
187
  const [agentInitDone, setAgentInitDone] = useState(false);
181
188
 
182
189
  if (!agentInitDone && derivedAgentRef && sessionInstanceId && !isDefaultAgentLoading) {
183
190
  setAgentInitDone(true);
191
+ setAgentRef(derivedAgentRef);
192
+ setResolution({ mode: "saved", instanceId: sessionInstanceId });
184
193
 
185
194
  const isDefault =
186
195
  defaultAgent &&
187
196
  derivedAgentRef.org === defaultAgent.metadata?.org &&
188
197
  derivedAgentRef.slug === defaultAgent.metadata?.slug;
189
-
190
- if (!isDefault) {
191
- setAgentRef(derivedAgentRef);
192
- setResolution({ mode: "saved", instanceId: sessionInstanceId });
193
- }
198
+ setIsDefaultAgent(!!isDefault);
194
199
  }
195
200
 
196
201
  // -------------------------------------------------------------------------
197
- // Workspace sync entries from session on first load
202
+ // Session spec sync hydrate workspace, MCP servers, and skills on first load
198
203
  // -------------------------------------------------------------------------
199
204
 
200
205
  useEffect(() => {
201
206
  if (!conv.session || initialSyncDone.current) return;
202
207
  initialSyncDone.current = true;
203
208
 
204
- const protoEntries = conv.session.spec?.workspaceEntries ?? [];
209
+ const spec = conv.session.spec;
210
+
211
+ // Workspace entries
212
+ const protoEntries = spec?.workspaceEntries ?? [];
205
213
  for (const entry of protoEntries) {
206
214
  if (entry.source?.source.case === "gitRepo") {
207
215
  const { url, branch } = entry.source.source.value;
@@ -210,6 +218,18 @@ export function useSessionPageFlow(
210
218
  workspace.addLocalPath(entry.source.source.value.path);
211
219
  }
212
220
  }
221
+
222
+ // MCP server usages
223
+ const mcpInputs = specMcpUsagesToInput(spec);
224
+ if (mcpInputs?.length) {
225
+ setMcpServerUsages(mcpInputs);
226
+ }
227
+
228
+ // Skill references
229
+ const skillInputs = specSkillRefsToInput(spec);
230
+ if (skillInputs?.length) {
231
+ setSkillRefs(skillInputs);
232
+ }
213
233
  }, [conv.session, workspace]);
214
234
 
215
235
  // -------------------------------------------------------------------------
@@ -249,6 +269,7 @@ export function useSessionPageFlow(
249
269
  skillRefs: skillRefs.length > 0 ? skillRefs : undefined,
250
270
  runtimeEnv: context?.runtimeEnv,
251
271
  attachments: context?.attachments,
272
+ interactionMode: context?.interactionMode,
252
273
  });
253
274
 
254
275
  sessionVariables.clear();
@@ -290,6 +311,7 @@ export function useSessionPageFlow(
290
311
  setAgentRef,
291
312
  resolution,
292
313
  setResolution,
314
+ isDefaultAgent,
293
315
  mcpServerUsages,
294
316
  setMcpServerUsages,
295
317
  skillRefs,