@stigmer/react 0.4.8 → 0.5.1

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 (709) hide show
  1. package/action-menu/ActionMenu.d.ts +64 -0
  2. package/action-menu/ActionMenu.d.ts.map +1 -0
  3. package/action-menu/ActionMenu.js +78 -0
  4. package/action-menu/ActionMenu.js.map +1 -0
  5. package/action-menu/index.d.ts +3 -0
  6. package/action-menu/index.d.ts.map +1 -0
  7. package/action-menu/index.js +2 -0
  8. package/action-menu/index.js.map +1 -0
  9. package/action-menu/types.d.ts +65 -0
  10. package/action-menu/types.d.ts.map +1 -0
  11. package/action-menu/types.js +2 -0
  12. package/action-menu/types.js.map +1 -0
  13. package/agent/AgentCreationWizard.d.ts +55 -0
  14. package/agent/AgentCreationWizard.d.ts.map +1 -0
  15. package/agent/AgentCreationWizard.js +115 -0
  16. package/agent/AgentCreationWizard.js.map +1 -0
  17. package/agent/AgentDetailView.d.ts +77 -9
  18. package/agent/AgentDetailView.d.ts.map +1 -1
  19. package/agent/AgentDetailView.js +265 -87
  20. package/agent/AgentDetailView.js.map +1 -1
  21. package/agent/index.d.ts +8 -0
  22. package/agent/index.d.ts.map +1 -1
  23. package/agent/index.js +4 -0
  24. package/agent/index.js.map +1 -1
  25. package/agent/internal/agentToInput.d.ts +12 -0
  26. package/agent/internal/agentToInput.d.ts.map +1 -0
  27. package/agent/internal/agentToInput.js +72 -0
  28. package/agent/internal/agentToInput.js.map +1 -0
  29. package/agent/steps/CapabilitiesStep.d.ts +16 -0
  30. package/agent/steps/CapabilitiesStep.d.ts.map +1 -0
  31. package/agent/steps/CapabilitiesStep.js +80 -0
  32. package/agent/steps/CapabilitiesStep.js.map +1 -0
  33. package/agent/steps/IdentityStep.d.ts +18 -0
  34. package/agent/steps/IdentityStep.d.ts.map +1 -0
  35. package/agent/steps/IdentityStep.js +43 -0
  36. package/agent/steps/IdentityStep.js.map +1 -0
  37. package/agent/steps/ReviewStep.d.ts +23 -0
  38. package/agent/steps/ReviewStep.d.ts.map +1 -0
  39. package/agent/steps/ReviewStep.js +73 -0
  40. package/agent/steps/ReviewStep.js.map +1 -0
  41. package/agent/steps/types.d.ts +35 -0
  42. package/agent/steps/types.d.ts.map +1 -0
  43. package/agent/steps/types.js +16 -0
  44. package/agent/steps/types.js.map +1 -0
  45. package/agent/useCreateAgent.d.ts +45 -0
  46. package/agent/useCreateAgent.d.ts.map +1 -0
  47. package/agent/useCreateAgent.js +50 -0
  48. package/agent/useCreateAgent.js.map +1 -0
  49. package/agent/useUpdateAgent.d.ts +24 -0
  50. package/agent/useUpdateAgent.d.ts.map +1 -0
  51. package/agent/useUpdateAgent.js +35 -0
  52. package/agent/useUpdateAgent.js.map +1 -0
  53. package/composer/ContextChip.d.ts +7 -2
  54. package/composer/ContextChip.d.ts.map +1 -1
  55. package/composer/ContextChip.js +2 -1
  56. package/composer/ContextChip.js.map +1 -1
  57. package/composer/SessionComposer.d.ts +11 -0
  58. package/composer/SessionComposer.d.ts.map +1 -1
  59. package/composer/SessionComposer.js +33 -4
  60. package/composer/SessionComposer.js.map +1 -1
  61. package/dependency-graph/DependencyGraph.d.ts +37 -0
  62. package/dependency-graph/DependencyGraph.d.ts.map +1 -0
  63. package/dependency-graph/DependencyGraph.js +88 -0
  64. package/dependency-graph/DependencyGraph.js.map +1 -0
  65. package/dependency-graph/DependencyTreeNode.d.ts +23 -0
  66. package/dependency-graph/DependencyTreeNode.d.ts.map +1 -0
  67. package/dependency-graph/DependencyTreeNode.js +99 -0
  68. package/dependency-graph/DependencyTreeNode.js.map +1 -0
  69. package/dependency-graph/index.d.ts +4 -0
  70. package/dependency-graph/index.d.ts.map +1 -0
  71. package/dependency-graph/index.js +5 -0
  72. package/dependency-graph/index.js.map +1 -0
  73. package/dependency-graph/types.d.ts +130 -0
  74. package/dependency-graph/types.d.ts.map +1 -0
  75. package/dependency-graph/types.js +2 -0
  76. package/dependency-graph/types.js.map +1 -0
  77. package/dependency-graph/useDependencyGraph.d.ts +27 -0
  78. package/dependency-graph/useDependencyGraph.d.ts.map +1 -0
  79. package/dependency-graph/useDependencyGraph.js +129 -0
  80. package/dependency-graph/useDependencyGraph.js.map +1 -0
  81. package/empty-state/EmptyState.d.ts +29 -0
  82. package/empty-state/EmptyState.d.ts.map +1 -0
  83. package/empty-state/EmptyState.js +45 -0
  84. package/empty-state/EmptyState.js.map +1 -0
  85. package/empty-state/index.d.ts +4 -0
  86. package/empty-state/index.d.ts.map +1 -0
  87. package/empty-state/index.js +3 -0
  88. package/empty-state/index.js.map +1 -0
  89. package/empty-state/types.d.ts +73 -0
  90. package/empty-state/types.d.ts.map +1 -0
  91. package/empty-state/types.js +2 -0
  92. package/empty-state/types.js.map +1 -0
  93. package/empty-state/useEmptyState.d.ts +18 -0
  94. package/empty-state/useEmptyState.d.ts.map +1 -0
  95. package/empty-state/useEmptyState.js +72 -0
  96. package/empty-state/useEmptyState.js.map +1 -0
  97. package/environment/usePersonalEnvironment.d.ts.map +1 -1
  98. package/environment/usePersonalEnvironment.js +1 -0
  99. package/environment/usePersonalEnvironment.js.map +1 -1
  100. package/feedback/StigmerToaster.d.ts +18 -0
  101. package/feedback/StigmerToaster.d.ts.map +1 -0
  102. package/feedback/StigmerToaster.js +31 -0
  103. package/feedback/StigmerToaster.js.map +1 -0
  104. package/feedback/index.d.ts +4 -0
  105. package/feedback/index.d.ts.map +1 -0
  106. package/feedback/index.js +3 -0
  107. package/feedback/index.js.map +1 -0
  108. package/feedback/toast.d.ts +14 -0
  109. package/feedback/toast.d.ts.map +1 -0
  110. package/feedback/toast.js +14 -0
  111. package/feedback/toast.js.map +1 -0
  112. package/feedback/types.d.ts +4 -0
  113. package/feedback/types.d.ts.map +1 -0
  114. package/feedback/types.js +2 -0
  115. package/feedback/types.js.map +1 -0
  116. package/index.d.ts +32 -12
  117. package/index.d.ts.map +1 -1
  118. package/index.js +30 -10
  119. package/index.js.map +1 -1
  120. package/inline-edit/InlineEditImage.d.ts +20 -0
  121. package/inline-edit/InlineEditImage.d.ts.map +1 -0
  122. package/inline-edit/InlineEditImage.js +85 -0
  123. package/inline-edit/InlineEditImage.js.map +1 -0
  124. package/inline-edit/InlineEditKeyValue.d.ts +33 -0
  125. package/inline-edit/InlineEditKeyValue.d.ts.map +1 -0
  126. package/inline-edit/InlineEditKeyValue.js +67 -0
  127. package/inline-edit/InlineEditKeyValue.js.map +1 -0
  128. package/inline-edit/InlineEditResourceList.d.ts +34 -0
  129. package/inline-edit/InlineEditResourceList.d.ts.map +1 -0
  130. package/inline-edit/InlineEditResourceList.js +99 -0
  131. package/inline-edit/InlineEditResourceList.js.map +1 -0
  132. package/inline-edit/InlineEditSelect.d.ts +18 -0
  133. package/inline-edit/InlineEditSelect.d.ts.map +1 -0
  134. package/inline-edit/InlineEditSelect.js +54 -0
  135. package/inline-edit/InlineEditSelect.js.map +1 -0
  136. package/inline-edit/InlineEditText.d.ts +23 -0
  137. package/inline-edit/InlineEditText.d.ts.map +1 -0
  138. package/inline-edit/InlineEditText.js +79 -0
  139. package/inline-edit/InlineEditText.js.map +1 -0
  140. package/inline-edit/InlineEditTextarea.d.ts +22 -0
  141. package/inline-edit/InlineEditTextarea.d.ts.map +1 -0
  142. package/inline-edit/InlineEditTextarea.js +83 -0
  143. package/inline-edit/InlineEditTextarea.js.map +1 -0
  144. package/inline-edit/index.d.ts +16 -0
  145. package/inline-edit/index.d.ts.map +1 -0
  146. package/inline-edit/index.js +8 -0
  147. package/inline-edit/index.js.map +1 -0
  148. package/inline-edit/types.d.ts +42 -0
  149. package/inline-edit/types.d.ts.map +1 -0
  150. package/inline-edit/types.js +2 -0
  151. package/inline-edit/types.js.map +1 -0
  152. package/inline-edit/useInlineFieldSave.d.ts +23 -0
  153. package/inline-edit/useInlineFieldSave.d.ts.map +1 -0
  154. package/inline-edit/useInlineFieldSave.js +44 -0
  155. package/inline-edit/useInlineFieldSave.js.map +1 -0
  156. package/internal/Tabs.d.ts +4 -38
  157. package/internal/Tabs.d.ts.map +1 -1
  158. package/internal/Tabs.js +3 -62
  159. package/internal/Tabs.js.map +1 -1
  160. package/internal/useFetch.js +2 -2
  161. package/internal/useFetch.js.map +1 -1
  162. package/library/ImportResourceDialog.d.ts +43 -0
  163. package/library/ImportResourceDialog.d.ts.map +1 -0
  164. package/library/ImportResourceDialog.js +90 -0
  165. package/library/ImportResourceDialog.js.map +1 -0
  166. package/library/index.d.ts +7 -4
  167. package/library/index.d.ts.map +1 -1
  168. package/library/index.js +4 -2
  169. package/library/index.js.map +1 -1
  170. package/library/serialize-resource-yaml.d.ts +53 -0
  171. package/library/serialize-resource-yaml.d.ts.map +1 -1
  172. package/library/serialize-resource-yaml.js +275 -0
  173. package/library/serialize-resource-yaml.js.map +1 -1
  174. package/library/useExportResource.d.ts +56 -0
  175. package/library/useExportResource.d.ts.map +1 -0
  176. package/library/useExportResource.js +137 -0
  177. package/library/useExportResource.js.map +1 -0
  178. package/library/useImportResource.d.ts +84 -0
  179. package/library/useImportResource.d.ts.map +1 -0
  180. package/library/useImportResource.js +188 -0
  181. package/library/useImportResource.js.map +1 -0
  182. package/mcp-server/McpServerCreationWizard.d.ts +55 -0
  183. package/mcp-server/McpServerCreationWizard.d.ts.map +1 -0
  184. package/mcp-server/McpServerCreationWizard.js +121 -0
  185. package/mcp-server/McpServerCreationWizard.js.map +1 -0
  186. package/mcp-server/McpServerDetailView.d.ts +21 -1
  187. package/mcp-server/McpServerDetailView.d.ts.map +1 -1
  188. package/mcp-server/McpServerDetailView.js +235 -43
  189. package/mcp-server/McpServerDetailView.js.map +1 -1
  190. package/mcp-server/index.d.ts +8 -0
  191. package/mcp-server/index.d.ts.map +1 -1
  192. package/mcp-server/index.js +4 -0
  193. package/mcp-server/index.js.map +1 -1
  194. package/mcp-server/internal/mcpServerToInput.d.ts +12 -0
  195. package/mcp-server/internal/mcpServerToInput.d.ts.map +1 -0
  196. package/mcp-server/internal/mcpServerToInput.js +81 -0
  197. package/mcp-server/internal/mcpServerToInput.js.map +1 -0
  198. package/mcp-server/steps/EnvironmentAuthStep.d.ts +15 -0
  199. package/mcp-server/steps/EnvironmentAuthStep.d.ts.map +1 -0
  200. package/mcp-server/steps/EnvironmentAuthStep.js +55 -0
  201. package/mcp-server/steps/EnvironmentAuthStep.js.map +1 -0
  202. package/mcp-server/steps/IdentityTransportStep.d.ts +19 -0
  203. package/mcp-server/steps/IdentityTransportStep.d.ts.map +1 -0
  204. package/mcp-server/steps/IdentityTransportStep.js +73 -0
  205. package/mcp-server/steps/IdentityTransportStep.js.map +1 -0
  206. package/mcp-server/steps/ReviewStep.d.ts +23 -0
  207. package/mcp-server/steps/ReviewStep.d.ts.map +1 -0
  208. package/mcp-server/steps/ReviewStep.js +137 -0
  209. package/mcp-server/steps/ReviewStep.js.map +1 -0
  210. package/mcp-server/steps/types.d.ts +56 -0
  211. package/mcp-server/steps/types.d.ts.map +1 -0
  212. package/mcp-server/steps/types.js +27 -0
  213. package/mcp-server/steps/types.js.map +1 -0
  214. package/mcp-server/useCreateMcpServer.d.ts +45 -0
  215. package/mcp-server/useCreateMcpServer.d.ts.map +1 -0
  216. package/mcp-server/useCreateMcpServer.js +50 -0
  217. package/mcp-server/useCreateMcpServer.js.map +1 -0
  218. package/mcp-server/useUpdateMcpServer.d.ts +24 -0
  219. package/mcp-server/useUpdateMcpServer.d.ts.map +1 -0
  220. package/mcp-server/useUpdateMcpServer.js +35 -0
  221. package/mcp-server/useUpdateMcpServer.js.map +1 -0
  222. package/models/ModelRegistryContext.d.ts +2 -0
  223. package/models/ModelRegistryContext.d.ts.map +1 -1
  224. package/models/ModelRegistryContext.js +1 -0
  225. package/models/ModelRegistryContext.js.map +1 -1
  226. package/models/ModelSelector.d.ts.map +1 -1
  227. package/models/ModelSelector.js +2 -2
  228. package/models/ModelSelector.js.map +1 -1
  229. package/models/__tests__/useModelRegistry.test.js +4 -3
  230. package/models/__tests__/useModelRegistry.test.js.map +1 -1
  231. package/models/useModelRegistry.d.ts +2 -0
  232. package/models/useModelRegistry.d.ts.map +1 -1
  233. package/models/useModelRegistry.js +3 -2
  234. package/models/useModelRegistry.js.map +1 -1
  235. package/package.json +8 -4
  236. package/provider.d.ts.map +1 -1
  237. package/provider.js +69 -22
  238. package/provider.js.map +1 -1
  239. package/resource-creation/CreationPicker.d.ts +60 -0
  240. package/resource-creation/CreationPicker.d.ts.map +1 -0
  241. package/resource-creation/CreationPicker.js +74 -0
  242. package/resource-creation/CreationPicker.js.map +1 -0
  243. package/resource-creation/StepIndicator.d.ts +28 -0
  244. package/resource-creation/StepIndicator.d.ts.map +1 -0
  245. package/resource-creation/StepIndicator.js +40 -0
  246. package/resource-creation/StepIndicator.js.map +1 -0
  247. package/resource-creation/TemplateCard.d.ts +24 -0
  248. package/resource-creation/TemplateCard.d.ts.map +1 -0
  249. package/resource-creation/TemplateCard.js +68 -0
  250. package/resource-creation/TemplateCard.js.map +1 -0
  251. package/resource-creation/TemplateGallery.d.ts +43 -0
  252. package/resource-creation/TemplateGallery.d.ts.map +1 -0
  253. package/resource-creation/TemplateGallery.js +78 -0
  254. package/resource-creation/TemplateGallery.js.map +1 -0
  255. package/resource-creation/WizardNav.d.ts +31 -0
  256. package/resource-creation/WizardNav.d.ts.map +1 -0
  257. package/resource-creation/WizardNav.js +29 -0
  258. package/resource-creation/WizardNav.js.map +1 -0
  259. package/resource-creation/WizardShell.d.ts +41 -0
  260. package/resource-creation/WizardShell.d.ts.map +1 -0
  261. package/resource-creation/WizardShell.js +55 -0
  262. package/resource-creation/WizardShell.js.map +1 -0
  263. package/resource-creation/index.d.ts +21 -0
  264. package/resource-creation/index.d.ts.map +1 -0
  265. package/resource-creation/index.js +14 -0
  266. package/resource-creation/index.js.map +1 -0
  267. package/resource-creation/templates/agent-templates.d.ts +15 -0
  268. package/resource-creation/templates/agent-templates.d.ts.map +1 -0
  269. package/resource-creation/templates/agent-templates.js +148 -0
  270. package/resource-creation/templates/agent-templates.js.map +1 -0
  271. package/resource-creation/templates/index.d.ts +5 -0
  272. package/resource-creation/templates/index.d.ts.map +1 -0
  273. package/resource-creation/templates/index.js +5 -0
  274. package/resource-creation/templates/index.js.map +1 -0
  275. package/resource-creation/templates/mcp-server-templates.d.ts +15 -0
  276. package/resource-creation/templates/mcp-server-templates.d.ts.map +1 -0
  277. package/resource-creation/templates/mcp-server-templates.js +92 -0
  278. package/resource-creation/templates/mcp-server-templates.js.map +1 -0
  279. package/resource-creation/templates/types.d.ts +48 -0
  280. package/resource-creation/templates/types.d.ts.map +1 -0
  281. package/resource-creation/templates/types.js +16 -0
  282. package/resource-creation/templates/types.js.map +1 -0
  283. package/resource-creation/types.d.ts +88 -0
  284. package/resource-creation/types.d.ts.map +1 -0
  285. package/resource-creation/types.js +2 -0
  286. package/resource-creation/types.js.map +1 -0
  287. package/resource-creation/useTemplateFilter.d.ts +43 -0
  288. package/resource-creation/useTemplateFilter.d.ts.map +1 -0
  289. package/resource-creation/useTemplateFilter.js +73 -0
  290. package/resource-creation/useTemplateFilter.js.map +1 -0
  291. package/resource-creation/useWizardState.d.ts +67 -0
  292. package/resource-creation/useWizardState.d.ts.map +1 -0
  293. package/resource-creation/useWizardState.js +143 -0
  294. package/resource-creation/useWizardState.js.map +1 -0
  295. package/resource-detail/ConfirmDialog.d.ts +44 -0
  296. package/resource-detail/ConfirmDialog.d.ts.map +1 -0
  297. package/resource-detail/ConfirmDialog.js +62 -0
  298. package/resource-detail/ConfirmDialog.js.map +1 -0
  299. package/resource-detail/ResourceActionBar.d.ts +42 -0
  300. package/resource-detail/ResourceActionBar.d.ts.map +1 -0
  301. package/resource-detail/ResourceActionBar.js +64 -0
  302. package/resource-detail/ResourceActionBar.js.map +1 -0
  303. package/resource-detail/ResourceDetailShell.d.ts +36 -0
  304. package/resource-detail/ResourceDetailShell.d.ts.map +1 -0
  305. package/resource-detail/ResourceDetailShell.js +65 -0
  306. package/resource-detail/ResourceDetailShell.js.map +1 -0
  307. package/resource-detail/Section.d.ts +18 -0
  308. package/resource-detail/Section.d.ts.map +1 -0
  309. package/resource-detail/Section.js +18 -0
  310. package/resource-detail/Section.js.map +1 -0
  311. package/resource-detail/index.d.ts +15 -0
  312. package/resource-detail/index.d.ts.map +1 -0
  313. package/resource-detail/index.js +10 -0
  314. package/resource-detail/index.js.map +1 -0
  315. package/resource-detail/types.d.ts +146 -0
  316. package/resource-detail/types.d.ts.map +1 -0
  317. package/resource-detail/types.js +2 -0
  318. package/resource-detail/types.js.map +1 -0
  319. package/resource-detail/useConfirmAction.d.ts +41 -0
  320. package/resource-detail/useConfirmAction.d.ts.map +1 -0
  321. package/resource-detail/useConfirmAction.js +30 -0
  322. package/resource-detail/useConfirmAction.js.map +1 -0
  323. package/resource-detail/useCopyResource.d.ts +28 -0
  324. package/resource-detail/useCopyResource.d.ts.map +1 -0
  325. package/resource-detail/useCopyResource.js +46 -0
  326. package/resource-detail/useCopyResource.js.map +1 -0
  327. package/resource-detail/useDeleteResource.d.ts +40 -0
  328. package/resource-detail/useDeleteResource.d.ts.map +1 -0
  329. package/resource-detail/useDeleteResource.js +83 -0
  330. package/resource-detail/useDeleteResource.js.map +1 -0
  331. package/resource-detail/useDetailTabs.d.ts +46 -0
  332. package/resource-detail/useDetailTabs.d.ts.map +1 -0
  333. package/resource-detail/useDetailTabs.js +47 -0
  334. package/resource-detail/useDetailTabs.js.map +1 -0
  335. package/resource-workbench/components/BulkActionBar.d.ts +36 -0
  336. package/resource-workbench/components/BulkActionBar.d.ts.map +1 -0
  337. package/resource-workbench/components/BulkActionBar.js +35 -0
  338. package/resource-workbench/components/BulkActionBar.js.map +1 -0
  339. package/resource-workbench/components/ColumnHeader.d.ts +23 -0
  340. package/resource-workbench/components/ColumnHeader.d.ts.map +1 -0
  341. package/resource-workbench/components/ColumnHeader.js +25 -0
  342. package/resource-workbench/components/ColumnHeader.js.map +1 -0
  343. package/resource-workbench/components/FilterBar.d.ts +33 -0
  344. package/resource-workbench/components/FilterBar.d.ts.map +1 -0
  345. package/resource-workbench/components/FilterBar.js +72 -0
  346. package/resource-workbench/components/FilterBar.js.map +1 -0
  347. package/resource-workbench/components/ResourceAvatar.d.ts +29 -0
  348. package/resource-workbench/components/ResourceAvatar.d.ts.map +1 -0
  349. package/resource-workbench/components/ResourceAvatar.js +51 -0
  350. package/resource-workbench/components/ResourceAvatar.js.map +1 -0
  351. package/resource-workbench/components/ResourceCards.d.ts +39 -0
  352. package/resource-workbench/components/ResourceCards.d.ts.map +1 -0
  353. package/resource-workbench/components/ResourceCards.js +41 -0
  354. package/resource-workbench/components/ResourceCards.js.map +1 -0
  355. package/resource-workbench/components/ResourceInspector.d.ts +26 -0
  356. package/resource-workbench/components/ResourceInspector.d.ts.map +1 -0
  357. package/resource-workbench/components/ResourceInspector.js +22 -0
  358. package/resource-workbench/components/ResourceInspector.js.map +1 -0
  359. package/resource-workbench/components/ResourceList.d.ts +39 -0
  360. package/resource-workbench/components/ResourceList.d.ts.map +1 -0
  361. package/resource-workbench/components/ResourceList.js +41 -0
  362. package/resource-workbench/components/ResourceList.js.map +1 -0
  363. package/resource-workbench/components/ResourceTable.d.ts +47 -0
  364. package/resource-workbench/components/ResourceTable.d.ts.map +1 -0
  365. package/resource-workbench/components/ResourceTable.js +78 -0
  366. package/resource-workbench/components/ResourceTable.js.map +1 -0
  367. package/resource-workbench/components/ResourceWorkbench.d.ts +131 -0
  368. package/resource-workbench/components/ResourceWorkbench.d.ts.map +1 -0
  369. package/resource-workbench/components/ResourceWorkbench.js +170 -0
  370. package/resource-workbench/components/ResourceWorkbench.js.map +1 -0
  371. package/resource-workbench/components/SelectionCheckbox.d.ts +24 -0
  372. package/resource-workbench/components/SelectionCheckbox.d.ts.map +1 -0
  373. package/resource-workbench/components/SelectionCheckbox.js +16 -0
  374. package/resource-workbench/components/SelectionCheckbox.js.map +1 -0
  375. package/resource-workbench/components/StatusBadge.d.ts +31 -0
  376. package/resource-workbench/components/StatusBadge.d.ts.map +1 -0
  377. package/resource-workbench/components/StatusBadge.js +75 -0
  378. package/resource-workbench/components/StatusBadge.js.map +1 -0
  379. package/resource-workbench/components/ViewSwitcher.d.ts +21 -0
  380. package/resource-workbench/components/ViewSwitcher.d.ts.map +1 -0
  381. package/resource-workbench/components/ViewSwitcher.js +37 -0
  382. package/resource-workbench/components/ViewSwitcher.js.map +1 -0
  383. package/resource-workbench/hooks/useResourceCollection.d.ts +93 -0
  384. package/resource-workbench/hooks/useResourceCollection.d.ts.map +1 -0
  385. package/resource-workbench/hooks/useResourceCollection.js +133 -0
  386. package/resource-workbench/hooks/useResourceCollection.js.map +1 -0
  387. package/resource-workbench/hooks/useResourceFilters.d.ts +73 -0
  388. package/resource-workbench/hooks/useResourceFilters.d.ts.map +1 -0
  389. package/resource-workbench/hooks/useResourceFilters.js +105 -0
  390. package/resource-workbench/hooks/useResourceFilters.js.map +1 -0
  391. package/resource-workbench/hooks/useResourceSelection.d.ts +44 -0
  392. package/resource-workbench/hooks/useResourceSelection.d.ts.map +1 -0
  393. package/resource-workbench/hooks/useResourceSelection.js +123 -0
  394. package/resource-workbench/hooks/useResourceSelection.js.map +1 -0
  395. package/resource-workbench/hooks/useViewPreference.d.ts +32 -0
  396. package/resource-workbench/hooks/useViewPreference.d.ts.map +1 -0
  397. package/resource-workbench/hooks/useViewPreference.js +60 -0
  398. package/resource-workbench/hooks/useViewPreference.js.map +1 -0
  399. package/resource-workbench/index.d.ts +34 -0
  400. package/resource-workbench/index.d.ts.map +1 -0
  401. package/resource-workbench/index.js +19 -0
  402. package/resource-workbench/index.js.map +1 -0
  403. package/resource-workbench/types.d.ts +165 -0
  404. package/resource-workbench/types.d.ts.map +1 -0
  405. package/resource-workbench/types.js +2 -0
  406. package/resource-workbench/types.js.map +1 -0
  407. package/runner/RunnerDetailView.d.ts +44 -0
  408. package/runner/RunnerDetailView.d.ts.map +1 -0
  409. package/runner/RunnerDetailView.js +154 -0
  410. package/runner/RunnerDetailView.js.map +1 -0
  411. package/runner/RunnerListPanel.d.ts +26 -1
  412. package/runner/RunnerListPanel.d.ts.map +1 -1
  413. package/runner/RunnerListPanel.js +68 -46
  414. package/runner/RunnerListPanel.js.map +1 -1
  415. package/runner/index.d.ts +7 -1
  416. package/runner/index.d.ts.map +1 -1
  417. package/runner/index.js +3 -0
  418. package/runner/index.js.map +1 -1
  419. package/runner/shared.d.ts +31 -0
  420. package/runner/shared.d.ts.map +1 -0
  421. package/runner/shared.js +55 -0
  422. package/runner/shared.js.map +1 -0
  423. package/runner/useRunner.d.ts +37 -0
  424. package/runner/useRunner.d.ts.map +1 -0
  425. package/runner/useRunner.js +24 -0
  426. package/runner/useRunner.js.map +1 -0
  427. package/session/__tests__/group-sessions.test.js +3 -3
  428. package/session/__tests__/group-sessions.test.js.map +1 -1
  429. package/session/__tests__/session-spec-converters.test.d.ts +2 -0
  430. package/session/__tests__/session-spec-converters.test.d.ts.map +1 -0
  431. package/session/__tests__/session-spec-converters.test.js +162 -0
  432. package/session/__tests__/session-spec-converters.test.js.map +1 -0
  433. package/session/__tests__/useNewSessionFlow.test.js +2 -2
  434. package/session/__tests__/useNewSessionFlow.test.js.map +1 -1
  435. package/session/__tests__/usePersistedModel.test.js +1 -1
  436. package/session/__tests__/usePersistedModel.test.js.map +1 -1
  437. package/session/group-sessions.d.ts +17 -0
  438. package/session/group-sessions.d.ts.map +1 -1
  439. package/session/group-sessions.js +46 -0
  440. package/session/group-sessions.js.map +1 -1
  441. package/session/index.d.ts +4 -2
  442. package/session/index.d.ts.map +1 -1
  443. package/session/index.js +2 -1
  444. package/session/index.js.map +1 -1
  445. package/session/session-spec-converters.d.ts +24 -0
  446. package/session/session-spec-converters.d.ts.map +1 -0
  447. package/session/session-spec-converters.js +72 -0
  448. package/session/session-spec-converters.js.map +1 -0
  449. package/session/useSessionConversation.d.ts.map +1 -1
  450. package/session/useSessionConversation.js +1 -56
  451. package/session/useSessionConversation.js.map +1 -1
  452. package/session/useSessionPageFlow.d.ts +5 -0
  453. package/session/useSessionPageFlow.d.ts.map +1 -1
  454. package/session/useSessionPageFlow.js +20 -6
  455. package/session/useSessionPageFlow.js.map +1 -1
  456. package/session/useSessionSearch.d.ts +57 -0
  457. package/session/useSessionSearch.d.ts.map +1 -0
  458. package/session/useSessionSearch.js +94 -0
  459. package/session/useSessionSearch.js.map +1 -0
  460. package/skill/SkillDetailView.d.ts +70 -7
  461. package/skill/SkillDetailView.d.ts.map +1 -1
  462. package/skill/SkillDetailView.js +107 -39
  463. package/skill/SkillDetailView.js.map +1 -1
  464. package/skill/SkillDiffDialog.d.ts +42 -0
  465. package/skill/SkillDiffDialog.d.ts.map +1 -0
  466. package/skill/SkillDiffDialog.js +72 -0
  467. package/skill/SkillDiffDialog.js.map +1 -0
  468. package/skill/SkillFileBrowser.d.ts +31 -0
  469. package/skill/SkillFileBrowser.d.ts.map +1 -0
  470. package/skill/SkillFileBrowser.js +105 -0
  471. package/skill/SkillFileBrowser.js.map +1 -0
  472. package/skill/SkillUploader.d.ts +39 -0
  473. package/skill/SkillUploader.d.ts.map +1 -0
  474. package/skill/SkillUploader.js +141 -0
  475. package/skill/SkillUploader.js.map +1 -0
  476. package/skill/index.d.ts +18 -0
  477. package/skill/index.d.ts.map +1 -1
  478. package/skill/index.js +9 -0
  479. package/skill/index.js.map +1 -1
  480. package/skill/internal/computeArtifactHash.d.ts +9 -0
  481. package/skill/internal/computeArtifactHash.d.ts.map +1 -0
  482. package/skill/internal/computeArtifactHash.js +14 -0
  483. package/skill/internal/computeArtifactHash.js.map +1 -0
  484. package/skill/internal/fetchAndUnpackArtifact.d.ts +16 -0
  485. package/skill/internal/fetchAndUnpackArtifact.d.ts.map +1 -0
  486. package/skill/internal/fetchAndUnpackArtifact.js +34 -0
  487. package/skill/internal/fetchAndUnpackArtifact.js.map +1 -0
  488. package/skill/usePushSkill.d.ts +53 -0
  489. package/skill/usePushSkill.d.ts.map +1 -0
  490. package/skill/usePushSkill.js +57 -0
  491. package/skill/usePushSkill.js.map +1 -0
  492. package/skill/useSkillArtifact.d.ts +37 -0
  493. package/skill/useSkillArtifact.d.ts.map +1 -0
  494. package/skill/useSkillArtifact.js +76 -0
  495. package/skill/useSkillArtifact.js.map +1 -0
  496. package/skill/useSkillDiff.d.ts +31 -0
  497. package/skill/useSkillDiff.d.ts.map +1 -0
  498. package/skill/useSkillDiff.js +97 -0
  499. package/skill/useSkillDiff.js.map +1 -0
  500. package/skill/useSkillDuplicateCheck.d.ts +34 -0
  501. package/skill/useSkillDuplicateCheck.d.ts.map +1 -0
  502. package/skill/useSkillDuplicateCheck.js +58 -0
  503. package/skill/useSkillDuplicateCheck.js.map +1 -0
  504. package/skill/useSkillUpload.d.ts +69 -0
  505. package/skill/useSkillUpload.d.ts.map +1 -0
  506. package/skill/useSkillUpload.js +157 -0
  507. package/skill/useSkillUpload.js.map +1 -0
  508. package/skill/useSkillVersions.d.ts +46 -0
  509. package/skill/useSkillVersions.d.ts.map +1 -0
  510. package/skill/useSkillVersions.js +104 -0
  511. package/skill/useSkillVersions.js.map +1 -0
  512. package/src/action-menu/ActionMenu.tsx +151 -0
  513. package/src/action-menu/index.ts +9 -0
  514. package/src/action-menu/types.ts +70 -0
  515. package/src/agent/AgentCreationWizard.tsx +201 -0
  516. package/src/agent/AgentDetailView.tsx +817 -321
  517. package/src/agent/index.ts +16 -0
  518. package/src/agent/internal/agentToInput.ts +95 -0
  519. package/src/agent/steps/CapabilitiesStep.tsx +363 -0
  520. package/src/agent/steps/IdentityStep.tsx +259 -0
  521. package/src/agent/steps/ReviewStep.tsx +211 -0
  522. package/src/agent/steps/types.ts +53 -0
  523. package/src/agent/useCreateAgent.ts +76 -0
  524. package/src/agent/useUpdateAgent.ts +55 -0
  525. package/src/composer/ContextChip.tsx +20 -11
  526. package/src/composer/SessionComposer.tsx +52 -3
  527. package/src/dependency-graph/DependencyGraph.tsx +153 -0
  528. package/src/dependency-graph/DependencyTreeNode.tsx +282 -0
  529. package/src/dependency-graph/index.ts +15 -0
  530. package/src/dependency-graph/types.ts +131 -0
  531. package/src/dependency-graph/useDependencyGraph.ts +158 -0
  532. package/src/empty-state/EmptyState.tsx +90 -0
  533. package/src/empty-state/index.ts +9 -0
  534. package/src/empty-state/types.ts +81 -0
  535. package/src/empty-state/useEmptyState.ts +85 -0
  536. package/src/environment/usePersonalEnvironment.ts +1 -0
  537. package/src/feedback/StigmerToaster.tsx +45 -0
  538. package/src/feedback/index.ts +3 -0
  539. package/src/feedback/toast.ts +13 -0
  540. package/src/feedback/types.ts +7 -0
  541. package/src/index.ts +275 -8
  542. package/src/inline-edit/InlineEditImage.tsx +208 -0
  543. package/src/inline-edit/InlineEditKeyValue.tsx +301 -0
  544. package/src/inline-edit/InlineEditResourceList.tsx +325 -0
  545. package/src/inline-edit/InlineEditSelect.tsx +150 -0
  546. package/src/inline-edit/InlineEditText.tsx +211 -0
  547. package/src/inline-edit/InlineEditTextarea.tsx +209 -0
  548. package/src/inline-edit/index.ts +28 -0
  549. package/src/inline-edit/types.ts +47 -0
  550. package/src/inline-edit/useInlineFieldSave.ts +62 -0
  551. package/src/internal/Tabs.tsx +4 -164
  552. package/src/internal/useFetch.ts +2 -2
  553. package/src/library/ImportResourceDialog.tsx +227 -0
  554. package/src/library/index.ts +18 -8
  555. package/src/library/serialize-resource-yaml.ts +356 -0
  556. package/src/library/useExportResource.ts +183 -0
  557. package/src/library/useImportResource.ts +253 -0
  558. package/src/mcp-server/McpServerCreationWizard.tsx +206 -0
  559. package/src/mcp-server/McpServerDetailView.tsx +816 -155
  560. package/src/mcp-server/index.ts +16 -0
  561. package/src/mcp-server/internal/mcpServerToInput.ts +95 -0
  562. package/src/mcp-server/steps/EnvironmentAuthStep.tsx +462 -0
  563. package/src/mcp-server/steps/IdentityTransportStep.tsx +531 -0
  564. package/src/mcp-server/steps/ReviewStep.tsx +297 -0
  565. package/src/mcp-server/steps/types.ts +85 -0
  566. package/src/mcp-server/useCreateMcpServer.ts +76 -0
  567. package/src/mcp-server/useUpdateMcpServer.ts +55 -0
  568. package/src/models/ModelRegistryContext.ts +3 -0
  569. package/src/models/ModelSelector.tsx +25 -2
  570. package/src/models/__tests__/useModelRegistry.test.tsx +5 -3
  571. package/src/models/useModelRegistry.ts +5 -2
  572. package/src/provider.tsx +69 -18
  573. package/src/resource-creation/CreationPicker.tsx +292 -0
  574. package/src/resource-creation/StepIndicator.tsx +156 -0
  575. package/src/resource-creation/TemplateCard.tsx +143 -0
  576. package/src/resource-creation/TemplateGallery.tsx +222 -0
  577. package/src/resource-creation/WizardNav.tsx +163 -0
  578. package/src/resource-creation/WizardShell.tsx +124 -0
  579. package/src/resource-creation/index.ts +45 -0
  580. package/src/resource-creation/templates/agent-templates.ts +160 -0
  581. package/src/resource-creation/templates/index.ts +7 -0
  582. package/src/resource-creation/templates/mcp-server-templates.ts +106 -0
  583. package/src/resource-creation/templates/types.ts +64 -0
  584. package/src/resource-creation/types.ts +105 -0
  585. package/src/resource-creation/useTemplateFilter.ts +117 -0
  586. package/src/resource-creation/useWizardState.ts +223 -0
  587. package/src/resource-detail/ConfirmDialog.tsx +127 -0
  588. package/src/resource-detail/ResourceActionBar.tsx +157 -0
  589. package/src/resource-detail/ResourceDetailShell.tsx +184 -0
  590. package/src/resource-detail/Section.tsx +78 -0
  591. package/src/resource-detail/index.ts +34 -0
  592. package/src/resource-detail/types.ts +177 -0
  593. package/src/resource-detail/useConfirmAction.ts +70 -0
  594. package/src/resource-detail/useCopyResource.ts +74 -0
  595. package/src/resource-detail/useDeleteResource.ts +110 -0
  596. package/src/resource-detail/useDetailTabs.ts +93 -0
  597. package/src/resource-workbench/components/BulkActionBar.tsx +122 -0
  598. package/src/resource-workbench/components/ColumnHeader.tsx +105 -0
  599. package/src/resource-workbench/components/FilterBar.tsx +173 -0
  600. package/src/resource-workbench/components/ResourceAvatar.tsx +109 -0
  601. package/src/resource-workbench/components/ResourceCards.tsx +126 -0
  602. package/src/resource-workbench/components/ResourceInspector.tsx +88 -0
  603. package/src/resource-workbench/components/ResourceList.tsx +121 -0
  604. package/src/resource-workbench/components/ResourceTable.tsx +222 -0
  605. package/src/resource-workbench/components/ResourceWorkbench.tsx +695 -0
  606. package/src/resource-workbench/components/SelectionCheckbox.tsx +52 -0
  607. package/src/resource-workbench/components/StatusBadge.tsx +119 -0
  608. package/src/resource-workbench/components/ViewSwitcher.tsx +135 -0
  609. package/src/resource-workbench/hooks/useResourceCollection.ts +261 -0
  610. package/src/resource-workbench/hooks/useResourceFilters.ts +216 -0
  611. package/src/resource-workbench/hooks/useResourceSelection.ts +178 -0
  612. package/src/resource-workbench/hooks/useViewPreference.ts +75 -0
  613. package/src/resource-workbench/index.ts +73 -0
  614. package/src/resource-workbench/types.ts +220 -0
  615. package/src/runner/RunnerDetailView.tsx +410 -0
  616. package/src/runner/RunnerListPanel.tsx +126 -111
  617. package/src/runner/index.ts +13 -1
  618. package/src/runner/shared.tsx +124 -0
  619. package/src/runner/useRunner.ts +59 -0
  620. package/src/session/__tests__/group-sessions.test.ts +5 -3
  621. package/src/session/__tests__/session-spec-converters.test.ts +185 -0
  622. package/src/session/__tests__/useNewSessionFlow.test.tsx +2 -2
  623. package/src/session/__tests__/usePersistedModel.test.tsx +1 -1
  624. package/src/session/group-sessions.ts +65 -0
  625. package/src/session/index.ts +8 -2
  626. package/src/session/session-spec-converters.ts +86 -0
  627. package/src/session/useSessionConversation.ts +5 -64
  628. package/src/session/useSessionPageFlow.ts +28 -7
  629. package/src/session/useSessionSearch.ts +149 -0
  630. package/src/skill/SkillDetailView.tsx +371 -165
  631. package/src/skill/SkillDiffDialog.tsx +213 -0
  632. package/src/skill/SkillFileBrowser.tsx +289 -0
  633. package/src/skill/SkillUploader.tsx +481 -0
  634. package/src/skill/index.ts +34 -0
  635. package/src/skill/internal/computeArtifactHash.ts +13 -0
  636. package/src/skill/internal/fetchAndUnpackArtifact.ts +48 -0
  637. package/src/skill/usePushSkill.ts +101 -0
  638. package/src/skill/useSkillArtifact.ts +107 -0
  639. package/src/skill/useSkillDiff.ts +128 -0
  640. package/src/skill/useSkillDuplicateCheck.ts +92 -0
  641. package/src/skill/useSkillUpload.ts +231 -0
  642. package/src/skill/useSkillVersions.ts +165 -0
  643. package/src/styles.css +28 -0
  644. package/src/tabs/Tabs.tsx +184 -0
  645. package/src/tabs/index.ts +2 -0
  646. package/src/version-history/DiffFileList.tsx +111 -0
  647. package/src/version-history/DiffSummary.tsx +61 -0
  648. package/src/version-history/DiffViewer.tsx +163 -0
  649. package/src/version-history/MultiFileDiffView.tsx +114 -0
  650. package/src/version-history/VersionTimeline.tsx +232 -0
  651. package/src/version-history/VersionTimelineEntry.tsx +254 -0
  652. package/src/version-history/computeDiff.ts +61 -0
  653. package/src/version-history/computeMultiFileDiff.ts +97 -0
  654. package/src/version-history/index.ts +22 -0
  655. package/src/version-history/types.ts +129 -0
  656. package/styles.css +1 -1
  657. package/tabs/Tabs.d.ts +58 -0
  658. package/tabs/Tabs.d.ts.map +1 -0
  659. package/tabs/Tabs.js +80 -0
  660. package/tabs/Tabs.js.map +1 -0
  661. package/tabs/index.d.ts +3 -0
  662. package/tabs/index.d.ts.map +1 -0
  663. package/tabs/index.js +2 -0
  664. package/tabs/index.js.map +1 -0
  665. package/version-history/DiffFileList.d.ts +22 -0
  666. package/version-history/DiffFileList.d.ts.map +1 -0
  667. package/version-history/DiffFileList.js +37 -0
  668. package/version-history/DiffFileList.js.map +1 -0
  669. package/version-history/DiffSummary.d.ts +21 -0
  670. package/version-history/DiffSummary.d.ts.map +1 -0
  671. package/version-history/DiffSummary.js +16 -0
  672. package/version-history/DiffSummary.js.map +1 -0
  673. package/version-history/DiffViewer.d.ts +31 -0
  674. package/version-history/DiffViewer.d.ts.map +1 -0
  675. package/version-history/DiffViewer.js +60 -0
  676. package/version-history/DiffViewer.js.map +1 -0
  677. package/version-history/MultiFileDiffView.d.ts +30 -0
  678. package/version-history/MultiFileDiffView.d.ts.map +1 -0
  679. package/version-history/MultiFileDiffView.js +40 -0
  680. package/version-history/MultiFileDiffView.js.map +1 -0
  681. package/version-history/VersionTimeline.d.ts +29 -0
  682. package/version-history/VersionTimeline.d.ts.map +1 -0
  683. package/version-history/VersionTimeline.js +87 -0
  684. package/version-history/VersionTimeline.js.map +1 -0
  685. package/version-history/VersionTimelineEntry.d.ts +22 -0
  686. package/version-history/VersionTimelineEntry.d.ts.map +1 -0
  687. package/version-history/VersionTimelineEntry.js +98 -0
  688. package/version-history/VersionTimelineEntry.js.map +1 -0
  689. package/version-history/computeDiff.d.ts +16 -0
  690. package/version-history/computeDiff.d.ts.map +1 -0
  691. package/version-history/computeDiff.js +54 -0
  692. package/version-history/computeDiff.js.map +1 -0
  693. package/version-history/computeMultiFileDiff.d.ts +15 -0
  694. package/version-history/computeMultiFileDiff.d.ts.map +1 -0
  695. package/version-history/computeMultiFileDiff.js +83 -0
  696. package/version-history/computeMultiFileDiff.js.map +1 -0
  697. package/version-history/index.d.ts +14 -0
  698. package/version-history/index.d.ts.map +1 -0
  699. package/version-history/index.js +9 -0
  700. package/version-history/index.js.map +1 -0
  701. package/version-history/types.d.ts +106 -0
  702. package/version-history/types.d.ts.map +1 -0
  703. package/version-history/types.js +2 -0
  704. package/version-history/types.js.map +1 -0
  705. package/library/ResourceListView.d.ts +0 -174
  706. package/library/ResourceListView.d.ts.map +0 -1
  707. package/library/ResourceListView.js +0 -318
  708. package/library/ResourceListView.js.map +0 -1
  709. package/src/library/ResourceListView.tsx +0 -956
@@ -0,0 +1,297 @@
1
+ "use client";
2
+
3
+ import { useMemo } from "react";
4
+ import { cn } from "@stigmer/theme";
5
+ import { getUserMessage } from "@stigmer/sdk";
6
+ import type { McpServerInput } from "@stigmer/sdk";
7
+ import { serializeMcpServerInputYaml } from "../../library/serialize-resource-yaml";
8
+ import type { McpServerWizardData } from "./types";
9
+
10
+ /** Props for {@link ReviewStep}. */
11
+ export interface ReviewStepProps {
12
+ readonly org: string;
13
+ readonly data: McpServerWizardData;
14
+ readonly isCreating: boolean;
15
+ readonly error: Error | null;
16
+ }
17
+
18
+ /**
19
+ * Wizard step 3: Review and create.
20
+ *
21
+ * Shows a summary card with key configuration details and a full
22
+ * YAML preview of the MCP server that will be created. The "Create"
23
+ * action is in the WizardNav footer, not in this component.
24
+ */
25
+ export function ReviewStep({
26
+ org,
27
+ data,
28
+ isCreating,
29
+ error,
30
+ }: ReviewStepProps) {
31
+ const mcpServerInput = useMemo(
32
+ () => buildMcpServerInput(org, data),
33
+ [org, data],
34
+ );
35
+ const yamlPreview = useMemo(
36
+ () => serializeMcpServerInputYaml(mcpServerInput),
37
+ [mcpServerInput],
38
+ );
39
+
40
+ const transportSummary =
41
+ data.transportType === "http"
42
+ ? data.httpUrl || "(no URL)"
43
+ : `${data.stdioCommand}${data.stdioArgs ? ` ${data.stdioArgs}` : ""}` || "(no command)";
44
+
45
+ return (
46
+ <div className="flex flex-col gap-6">
47
+ <div>
48
+ <h2 className="text-lg font-semibold text-foreground">
49
+ Review & Create
50
+ </h2>
51
+ <p className="mt-1 text-sm text-muted-foreground">
52
+ Review the MCP server configuration below, then create it.
53
+ </p>
54
+ </div>
55
+
56
+ {/* Summary card */}
57
+ <div className="rounded-lg border border-border p-4">
58
+ <dl className="grid gap-x-6 gap-y-3 text-sm sm:grid-cols-2">
59
+ <SummaryItem label="Name" value={data.name} />
60
+ <SummaryItem label="Slug" value={data.slug} mono />
61
+ <SummaryItem label="Organization" value={org} mono />
62
+ <SummaryItem
63
+ label="Visibility"
64
+ value={data.visibility === "public" ? "Public" : "Private"}
65
+ />
66
+ <SummaryItem
67
+ label="Transport"
68
+ value={data.transportType === "http" ? "HTTP" : "Stdio"}
69
+ />
70
+ <SummaryItem
71
+ label={data.transportType === "http" ? "URL" : "Command"}
72
+ value={transportSummary}
73
+ mono
74
+ />
75
+ {data.description && (
76
+ <SummaryItem
77
+ label="Description"
78
+ value={data.description}
79
+ className="sm:col-span-2"
80
+ />
81
+ )}
82
+ {data.env.length > 0 && (
83
+ <SummaryItem
84
+ label="Env Variables"
85
+ value={`${data.env.length} declared`}
86
+ />
87
+ )}
88
+ {data.authEnabled && data.authOAuthAppSlug && (
89
+ <SummaryItem
90
+ label="OAuth"
91
+ value={
92
+ data.authOAuthAppOrg
93
+ ? `${data.authOAuthAppOrg}/${data.authOAuthAppSlug}`
94
+ : data.authOAuthAppSlug
95
+ }
96
+ mono
97
+ />
98
+ )}
99
+ </dl>
100
+ </div>
101
+
102
+ {/* YAML preview */}
103
+ <div className="space-y-2">
104
+ <h3 className="text-xs font-medium uppercase tracking-wider text-muted-foreground">
105
+ YAML Preview
106
+ </h3>
107
+ <div className="max-h-80 overflow-auto rounded-lg border border-border bg-muted-faint">
108
+ <pre className="p-4 font-mono text-xs leading-relaxed text-foreground">
109
+ {yamlPreview}
110
+ </pre>
111
+ </div>
112
+ </div>
113
+
114
+ {/* Error display */}
115
+ {error && (
116
+ <div
117
+ className="rounded-md border border-destructive bg-muted-faint px-4 py-3"
118
+ role="alert"
119
+ >
120
+ <p className="text-sm font-medium text-destructive">
121
+ Failed to create MCP server
122
+ </p>
123
+ <p className="mt-1 text-xs text-muted-foreground">
124
+ {getUserMessage(error)}
125
+ </p>
126
+ </div>
127
+ )}
128
+
129
+ {/* Creating state */}
130
+ {isCreating && (
131
+ <p className="text-sm text-muted-foreground" aria-live="polite">
132
+ Creating MCP server…
133
+ </p>
134
+ )}
135
+ </div>
136
+ );
137
+ }
138
+
139
+ // ---------------------------------------------------------------------------
140
+ // Summary item
141
+ // ---------------------------------------------------------------------------
142
+
143
+ function SummaryItem({
144
+ label,
145
+ value,
146
+ mono,
147
+ className,
148
+ }: {
149
+ readonly label: string;
150
+ readonly value: string;
151
+ readonly mono?: boolean;
152
+ readonly className?: string;
153
+ }) {
154
+ return (
155
+ <div className={className}>
156
+ <dt className="text-xs text-muted-foreground">{label}</dt>
157
+ <dd
158
+ className={cn(
159
+ "mt-0.5 text-sm text-foreground",
160
+ mono && "font-mono",
161
+ )}
162
+ >
163
+ {value}
164
+ </dd>
165
+ </div>
166
+ );
167
+ }
168
+
169
+ // ---------------------------------------------------------------------------
170
+ // buildMcpServerInput
171
+ // ---------------------------------------------------------------------------
172
+
173
+ /**
174
+ * Transforms wizard data into the SDK `McpServerInput` shape for submission.
175
+ * Exported for reuse by `McpServerCreationWizard`.
176
+ */
177
+ export function buildMcpServerInput(
178
+ org: string,
179
+ data: McpServerWizardData,
180
+ ): McpServerInput {
181
+ const input: McpServerInput = {
182
+ name: data.name.trim(),
183
+ org,
184
+ ...(data.slug && { slug: data.slug }),
185
+ ...(data.description && { description: data.description.trim() }),
186
+ ...(data.iconUrl && { iconUrl: data.iconUrl.trim() }),
187
+ };
188
+
189
+ if (data.transportType === "http" && data.httpUrl) {
190
+ const http: McpServerInput["http"] = {
191
+ url: data.httpUrl.trim(),
192
+ };
193
+
194
+ const headers = buildHeadersMap(data.httpHeaders);
195
+ if (headers) {
196
+ http.headers = headers;
197
+ }
198
+
199
+ if (data.httpTimeoutSeconds > 0) {
200
+ http.timeoutSeconds = data.httpTimeoutSeconds;
201
+ }
202
+
203
+ input.http = http;
204
+ }
205
+
206
+ if (data.transportType === "stdio" && data.stdioCommand) {
207
+ const stdio: McpServerInput["stdio"] = {
208
+ command: data.stdioCommand.trim(),
209
+ };
210
+
211
+ const args = parseSpaceSeparated(data.stdioArgs);
212
+ if (args.length > 0) {
213
+ stdio.args = args;
214
+ }
215
+
216
+ if (data.stdioWorkingDir.trim()) {
217
+ stdio.workingDir = data.stdioWorkingDir.trim();
218
+ }
219
+
220
+ input.stdio = stdio;
221
+ }
222
+
223
+ if (data.env.length > 0) {
224
+ const env: NonNullable<McpServerInput["env"]> = {};
225
+ for (const entry of data.env) {
226
+ if (!entry.key) continue;
227
+ env[entry.key] = {
228
+ ...(entry.isSecret && { isSecret: true }),
229
+ ...(entry.description && { description: entry.description }),
230
+ ...(entry.optional && { optional: true }),
231
+ };
232
+ }
233
+ if (Object.keys(env).length > 0) {
234
+ input.env = env;
235
+ }
236
+ }
237
+
238
+ if (data.authEnabled) {
239
+ const auth: NonNullable<McpServerInput["auth"]> = {};
240
+
241
+ if (data.authOAuthAppSlug) {
242
+ auth.oauthAppRef = {
243
+ org: data.authOAuthAppOrg,
244
+ slug: data.authOAuthAppSlug,
245
+ };
246
+ }
247
+ if (data.authTargetEnvVar) {
248
+ auth.targetEnvVar = data.authTargetEnvVar;
249
+ }
250
+ if (data.authTokenLifetimeHint) {
251
+ auth.tokenLifetimeHint = data.authTokenLifetimeHint;
252
+ }
253
+ const scopes = parseCommaSeparated(data.authScopeHints);
254
+ if (scopes.length > 0) {
255
+ auth.scopeHints = scopes;
256
+ }
257
+ if (data.authDiscoveryUrl) {
258
+ auth.discoveryUrl = data.authDiscoveryUrl;
259
+ }
260
+
261
+ if (Object.keys(auth).length > 0) {
262
+ input.auth = auth;
263
+ }
264
+ }
265
+
266
+ return input;
267
+ }
268
+
269
+ // ---------------------------------------------------------------------------
270
+ // Helpers
271
+ // ---------------------------------------------------------------------------
272
+
273
+ function buildHeadersMap(
274
+ entries: readonly { key: string; value: string }[],
275
+ ): Record<string, string> | undefined {
276
+ const map: Record<string, string> = {};
277
+ for (const entry of entries) {
278
+ if (entry.key.trim()) {
279
+ map[entry.key.trim()] = entry.value;
280
+ }
281
+ }
282
+ return Object.keys(map).length > 0 ? map : undefined;
283
+ }
284
+
285
+ function parseSpaceSeparated(input: string): string[] {
286
+ return input
287
+ .trim()
288
+ .split(/\s+/)
289
+ .filter(Boolean);
290
+ }
291
+
292
+ function parseCommaSeparated(input: string): string[] {
293
+ return input
294
+ .split(",")
295
+ .map((s) => s.trim())
296
+ .filter(Boolean);
297
+ }
@@ -0,0 +1,85 @@
1
+ import type { EnvVarEntry, KeyValueEntry } from "../../resource-creation/types";
2
+
3
+ export type { EnvVarEntry, KeyValueEntry } from "../../resource-creation/types";
4
+
5
+ /**
6
+ * Accumulated form state for the MCP server creation wizard.
7
+ *
8
+ * Each field corresponds to a property on `McpServerInput`. The wizard
9
+ * builds this incrementally across steps, then transforms it into
10
+ * a `McpServerInput` for submission on the final step.
11
+ */
12
+ export interface McpServerWizardData {
13
+ // --- Step 1: Identity & Transport ---
14
+ /** MCP server display name (required). */
15
+ readonly name: string;
16
+ /** URL-friendly slug (auto-derived from name, editable). */
17
+ readonly slug: string;
18
+ /** Whether the slug has been manually edited by the user. */
19
+ readonly slugTouched: boolean;
20
+ /** Short description (optional). */
21
+ readonly description: string;
22
+ /** Icon URL (optional). */
23
+ readonly iconUrl: string;
24
+ /** Resource visibility. */
25
+ readonly visibility: "private" | "public";
26
+ /** Selected transport type. */
27
+ readonly transportType: "http" | "stdio";
28
+ /** HTTP server URL. */
29
+ readonly httpUrl: string;
30
+ /** HTTP custom headers. */
31
+ readonly httpHeaders: KeyValueEntry[];
32
+ /** HTTP request timeout in seconds (0 = default). */
33
+ readonly httpTimeoutSeconds: number;
34
+ /** Stdio command to execute. */
35
+ readonly stdioCommand: string;
36
+ /** Stdio command arguments (space-separated string, split on submit). */
37
+ readonly stdioArgs: string;
38
+ /** Stdio working directory. */
39
+ readonly stdioWorkingDir: string;
40
+
41
+ // --- Step 2: Environment & Auth ---
42
+ /** Environment variable declarations. */
43
+ readonly env: EnvVarEntry[];
44
+ /** Whether OAuth auth configuration is enabled. */
45
+ readonly authEnabled: boolean;
46
+ /** OAuth app reference — organization slug. */
47
+ readonly authOAuthAppOrg: string;
48
+ /** OAuth app reference — app slug. */
49
+ readonly authOAuthAppSlug: string;
50
+ /** Env var that receives the OAuth token. */
51
+ readonly authTargetEnvVar: string;
52
+ /** Token lifetime hint (e.g. "1h", "never"). */
53
+ readonly authTokenLifetimeHint: string;
54
+ /** OAuth scope hints (comma-separated, split on submit). */
55
+ readonly authScopeHints: string;
56
+ /** OAuth discovery URL. */
57
+ readonly authDiscoveryUrl: string;
58
+ }
59
+
60
+ /** Creates the initial empty wizard data. */
61
+ export function createInitialMcpServerWizardData(): McpServerWizardData {
62
+ return {
63
+ name: "",
64
+ slug: "",
65
+ slugTouched: false,
66
+ description: "",
67
+ iconUrl: "",
68
+ visibility: "private",
69
+ transportType: "http",
70
+ httpUrl: "",
71
+ httpHeaders: [],
72
+ httpTimeoutSeconds: 0,
73
+ stdioCommand: "",
74
+ stdioArgs: "",
75
+ stdioWorkingDir: "",
76
+ env: [],
77
+ authEnabled: false,
78
+ authOAuthAppOrg: "",
79
+ authOAuthAppSlug: "",
80
+ authTargetEnvVar: "",
81
+ authTokenLifetimeHint: "",
82
+ authScopeHints: "",
83
+ authDiscoveryUrl: "",
84
+ };
85
+ }
@@ -0,0 +1,76 @@
1
+ "use client";
2
+
3
+ import { useCallback, useState } from "react";
4
+ import type { McpServerInput } from "@stigmer/sdk";
5
+ import type { McpServer } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/api_pb";
6
+ import { useStigmer } from "../hooks";
7
+ import { toError } from "../internal/toError";
8
+
9
+ /** Return value of {@link useCreateMcpServer}. */
10
+ export interface UseCreateMcpServerReturn {
11
+ /**
12
+ * Submit a {@link McpServerInput} to create (or upsert) an MCP server blueprint.
13
+ *
14
+ * Uses `stigmer.mcpServer.apply()` — the idempotent upsert operation.
15
+ * Resolves with the server-created/updated `McpServer` proto including
16
+ * populated metadata (id, slug, audit timestamps).
17
+ */
18
+ readonly create: (input: McpServerInput) => Promise<McpServer>;
19
+ /** `true` while the apply request is in flight. */
20
+ readonly isCreating: boolean;
21
+ /** Error from the last failed create, or `null` when healthy. */
22
+ readonly error: Error | null;
23
+ /** Reset `error` to `null`. */
24
+ readonly clearError: () => void;
25
+ }
26
+
27
+ /**
28
+ * Behavior hook that wraps `mcpServer.apply()` with loading and error state.
29
+ *
30
+ * Creates an MCP server blueprint from a {@link McpServerInput}. Uses
31
+ * `apply()` (upsert) rather than `create()` so re-submissions are
32
+ * idempotent — matching the CLI's `stigmer apply` semantics.
33
+ *
34
+ * Follows the established SDK mutation hook pattern: `isCreating` flag,
35
+ * `error` state, `clearError` reset, result returned from the promise
36
+ * (not stored in hook state).
37
+ *
38
+ * @example
39
+ * ```tsx
40
+ * const { create, isCreating, error, clearError } = useCreateMcpServer();
41
+ *
42
+ * const server = await create({
43
+ * name: "github",
44
+ * org: "acme",
45
+ * http: { url: "https://mcp.github.com/sse" },
46
+ * env: { GITHUB_TOKEN: { isSecret: true, description: "GitHub PAT" } },
47
+ * });
48
+ * // server.metadata?.slug → "github"
49
+ * ```
50
+ */
51
+ export function useCreateMcpServer(): UseCreateMcpServerReturn {
52
+ const stigmer = useStigmer();
53
+ const [isCreating, setIsCreating] = useState(false);
54
+ const [error, setError] = useState<Error | null>(null);
55
+
56
+ const clearError = useCallback(() => setError(null), []);
57
+
58
+ const create = useCallback(
59
+ async (input: McpServerInput): Promise<McpServer> => {
60
+ setIsCreating(true);
61
+ setError(null);
62
+
63
+ try {
64
+ return await stigmer.mcpServer.apply(input);
65
+ } catch (err) {
66
+ setError(toError(err));
67
+ throw err;
68
+ } finally {
69
+ setIsCreating(false);
70
+ }
71
+ },
72
+ [stigmer],
73
+ );
74
+
75
+ return { create, isCreating, error, clearError };
76
+ }
@@ -0,0 +1,55 @@
1
+ "use client";
2
+
3
+ import { useCallback, useState } from "react";
4
+ import type { McpServer } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/api_pb";
5
+ import type { McpServerInput } from "@stigmer/sdk";
6
+ import { useStigmer } from "../hooks";
7
+ import { toError } from "../internal/toError";
8
+
9
+ /** Return value of {@link useUpdateMcpServer}. */
10
+ export interface UseUpdateMcpServerReturn {
11
+ /** Update an existing MCP server with a full input. Returns the updated resource. */
12
+ readonly update: (input: McpServerInput) => Promise<McpServer>;
13
+ /** `true` while the update RPC is in flight. */
14
+ readonly isUpdating: boolean;
15
+ /** Error from the last failed update, or `null` when healthy. */
16
+ readonly error: Error | null;
17
+ /** Clear the error state. */
18
+ readonly clearError: () => void;
19
+ }
20
+
21
+ /**
22
+ * Mutation hook that updates an existing MCP Server resource.
23
+ *
24
+ * Wraps `stigmer.mcpServer.update(input)` with loading and error state.
25
+ * The caller must provide a **complete** `McpServerInput` — the backend
26
+ * performs full spec replacement. Use `mcpServerToInput()` to reconstruct
27
+ * the input from a fetched server, modify the desired field, and pass
28
+ * the result here.
29
+ */
30
+ export function useUpdateMcpServer(): UseUpdateMcpServerReturn {
31
+ const stigmer = useStigmer();
32
+ const [isUpdating, setIsUpdating] = useState(false);
33
+ const [error, setError] = useState<Error | null>(null);
34
+
35
+ const clearError = useCallback(() => setError(null), []);
36
+
37
+ const update = useCallback(
38
+ async (input: McpServerInput): Promise<McpServer> => {
39
+ setIsUpdating(true);
40
+ setError(null);
41
+
42
+ try {
43
+ return await stigmer.mcpServer.update(input);
44
+ } catch (err) {
45
+ setError(toError(err));
46
+ throw err;
47
+ } finally {
48
+ setIsUpdating(false);
49
+ }
50
+ },
51
+ [stigmer],
52
+ );
53
+
54
+ return { update, isUpdating, error, clearError };
55
+ }
@@ -8,6 +8,8 @@ export interface ModelRegistryState {
8
8
  readonly models: readonly ModelInfo[];
9
9
  readonly isLoading: boolean;
10
10
  readonly error: Error | null;
11
+ /** Retry fetching the model registry. No-op while a fetch is in flight. */
12
+ readonly refetch: () => void;
11
13
  }
12
14
 
13
15
  /**
@@ -21,6 +23,7 @@ export const ModelRegistryContext = createContext<ModelRegistryState>({
21
23
  models: [],
22
24
  isLoading: true,
23
25
  error: null,
26
+ refetch: () => {},
24
27
  });
25
28
 
26
29
  /**
@@ -119,7 +119,7 @@ export function ModelSelector({
119
119
  }
120
120
  }, [initialHarness, isHarnessLocked]);
121
121
 
122
- const { models, featured, defaultModel, getModel, byProvider } = useModelRegistry(
122
+ const { models, featured, defaultModel, getModel, byProvider, isLoading, error, refetch } = useModelRegistry(
123
123
  { harness: activeHarness },
124
124
  );
125
125
 
@@ -393,7 +393,30 @@ export function ModelSelector({
393
393
  aria-label="Available models"
394
394
  className="max-h-72 overflow-y-auto p-1"
395
395
  >
396
- {visibleModels.length === 0 && (
396
+ {visibleModels.length === 0 && isLoading && (
397
+ <div className="flex items-center justify-center gap-2 px-2 py-3">
398
+ <div className="size-3 animate-spin rounded-full border border-muted border-t-primary" />
399
+ <span className="text-xs text-muted-foreground">Loading models…</span>
400
+ </div>
401
+ )}
402
+
403
+ {visibleModels.length === 0 && !isLoading && error != null && (
404
+ <div className="flex flex-col items-center gap-1.5 px-2 py-3">
405
+ <span className="text-xs text-muted-foreground">Failed to load models</span>
406
+ <button
407
+ type="button"
408
+ className={cn(
409
+ "rounded-md border border-border bg-background px-2.5 py-1 text-xs text-foreground",
410
+ "hover:bg-accent-hover transition-colors cursor-pointer",
411
+ )}
412
+ onClick={refetch}
413
+ >
414
+ Retry
415
+ </button>
416
+ </div>
417
+ )}
418
+
419
+ {visibleModels.length === 0 && !isLoading && error == null && (
397
420
  <div className="px-2 py-3 text-center text-xs text-muted-foreground">
398
421
  No models found
399
422
  </div>
@@ -90,8 +90,10 @@ const TEST_REGISTRY_JSON = {
90
90
 
91
91
  const TEST_MODELS: readonly ModelInfo[] = parseRegistryJson(TEST_REGISTRY_JSON);
92
92
 
93
+ const noopRefetch = () => {};
94
+
93
95
  function createWrapper(models: readonly ModelInfo[] = TEST_MODELS) {
94
- const state: ModelRegistryState = { models, isLoading: false, error: null };
96
+ const state: ModelRegistryState = { models, isLoading: false, error: null, refetch: noopRefetch };
95
97
  return function Wrapper({ children }: { children: ReactNode }) {
96
98
  return (
97
99
  <ModelRegistryContext.Provider value={state}>
@@ -285,7 +287,7 @@ describe("useModelRegistry", () => {
285
287
 
286
288
  describe("loading state", () => {
287
289
  it("exposes isLoading from context", () => {
288
- const loadingState: ModelRegistryState = { models: [], isLoading: true, error: null };
290
+ const loadingState: ModelRegistryState = { models: [], isLoading: true, error: null, refetch: noopRefetch };
289
291
  const wrapper = ({ children }: { children: ReactNode }) => (
290
292
  <ModelRegistryContext.Provider value={loadingState}>
291
293
  {children}
@@ -298,7 +300,7 @@ describe("useModelRegistry", () => {
298
300
 
299
301
  it("exposes error from context", () => {
300
302
  const err = new Error("fetch failed");
301
- const errorState: ModelRegistryState = { models: [], isLoading: false, error: err };
303
+ const errorState: ModelRegistryState = { models: [], isLoading: false, error: err, refetch: noopRefetch };
302
304
  const wrapper = ({ children }: { children: ReactNode }) => (
303
305
  <ModelRegistryContext.Provider value={errorState}>
304
306
  {children}
@@ -55,6 +55,8 @@ export interface UseModelRegistryReturn {
55
55
  readonly isLoading: boolean;
56
56
  /** Non-null if the API fetch failed. Models will be empty in this case. */
57
57
  readonly error: Error | null;
58
+ /** Retry fetching the model registry. No-op while a fetch is in flight. */
59
+ readonly refetch: () => void;
58
60
  }
59
61
 
60
62
  /**
@@ -85,7 +87,7 @@ export interface UseModelRegistryReturn {
85
87
  */
86
88
  export function useModelRegistry(options?: UseModelRegistryOptions): UseModelRegistryReturn {
87
89
  const harness = options?.harness;
88
- const { models: allModels, isLoading, error } = useModelRegistryContext();
90
+ const { models: allModels, isLoading, error, refetch } = useModelRegistryContext();
89
91
 
90
92
  return useMemo(() => {
91
93
  const isUnified = harness === undefined;
@@ -143,6 +145,7 @@ export function useModelRegistry(options?: UseModelRegistryOptions): UseModelReg
143
145
  getByKey: (key: string) => byCompoundKey.get(key),
144
146
  isLoading,
145
147
  error,
148
+ refetch,
146
149
  };
147
- }, [harness, allModels, isLoading, error]);
150
+ }, [harness, allModels, isLoading, error, refetch]);
148
151
  }