@stigmer/react 0.4.7 → 0.5.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 (652) 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/dependency-graph/DependencyGraph.d.ts +37 -0
  54. package/dependency-graph/DependencyGraph.d.ts.map +1 -0
  55. package/dependency-graph/DependencyGraph.js +88 -0
  56. package/dependency-graph/DependencyGraph.js.map +1 -0
  57. package/dependency-graph/DependencyTreeNode.d.ts +23 -0
  58. package/dependency-graph/DependencyTreeNode.d.ts.map +1 -0
  59. package/dependency-graph/DependencyTreeNode.js +99 -0
  60. package/dependency-graph/DependencyTreeNode.js.map +1 -0
  61. package/dependency-graph/index.d.ts +4 -0
  62. package/dependency-graph/index.d.ts.map +1 -0
  63. package/dependency-graph/index.js +5 -0
  64. package/dependency-graph/index.js.map +1 -0
  65. package/dependency-graph/types.d.ts +130 -0
  66. package/dependency-graph/types.d.ts.map +1 -0
  67. package/dependency-graph/types.js +2 -0
  68. package/dependency-graph/types.js.map +1 -0
  69. package/dependency-graph/useDependencyGraph.d.ts +27 -0
  70. package/dependency-graph/useDependencyGraph.d.ts.map +1 -0
  71. package/dependency-graph/useDependencyGraph.js +129 -0
  72. package/dependency-graph/useDependencyGraph.js.map +1 -0
  73. package/empty-state/EmptyState.d.ts +29 -0
  74. package/empty-state/EmptyState.d.ts.map +1 -0
  75. package/empty-state/EmptyState.js +45 -0
  76. package/empty-state/EmptyState.js.map +1 -0
  77. package/empty-state/index.d.ts +4 -0
  78. package/empty-state/index.d.ts.map +1 -0
  79. package/empty-state/index.js +3 -0
  80. package/empty-state/index.js.map +1 -0
  81. package/empty-state/types.d.ts +73 -0
  82. package/empty-state/types.d.ts.map +1 -0
  83. package/empty-state/types.js +2 -0
  84. package/empty-state/types.js.map +1 -0
  85. package/empty-state/useEmptyState.d.ts +18 -0
  86. package/empty-state/useEmptyState.d.ts.map +1 -0
  87. package/empty-state/useEmptyState.js +72 -0
  88. package/empty-state/useEmptyState.js.map +1 -0
  89. package/execution/MessageThread.d.ts +1 -0
  90. package/execution/MessageThread.d.ts.map +1 -1
  91. package/execution/MessageThread.js +22 -12
  92. package/execution/MessageThread.js.map +1 -1
  93. package/execution/SetupProgress.d.ts +23 -9
  94. package/execution/SetupProgress.d.ts.map +1 -1
  95. package/execution/SetupProgress.js +30 -14
  96. package/execution/SetupProgress.js.map +1 -1
  97. package/execution/__tests__/thread-keys.test.js +82 -0
  98. package/execution/__tests__/thread-keys.test.js.map +1 -1
  99. package/feedback/StigmerToaster.d.ts +18 -0
  100. package/feedback/StigmerToaster.d.ts.map +1 -0
  101. package/feedback/StigmerToaster.js +31 -0
  102. package/feedback/StigmerToaster.js.map +1 -0
  103. package/feedback/index.d.ts +4 -0
  104. package/feedback/index.d.ts.map +1 -0
  105. package/feedback/index.js +3 -0
  106. package/feedback/index.js.map +1 -0
  107. package/feedback/toast.d.ts +14 -0
  108. package/feedback/toast.d.ts.map +1 -0
  109. package/feedback/toast.js +14 -0
  110. package/feedback/toast.js.map +1 -0
  111. package/feedback/types.d.ts +4 -0
  112. package/feedback/types.d.ts.map +1 -0
  113. package/feedback/types.js +2 -0
  114. package/feedback/types.js.map +1 -0
  115. package/index.d.ts +30 -10
  116. package/index.d.ts.map +1 -1
  117. package/index.js +29 -9
  118. package/index.js.map +1 -1
  119. package/inline-edit/InlineEditImage.d.ts +20 -0
  120. package/inline-edit/InlineEditImage.d.ts.map +1 -0
  121. package/inline-edit/InlineEditImage.js +85 -0
  122. package/inline-edit/InlineEditImage.js.map +1 -0
  123. package/inline-edit/InlineEditKeyValue.d.ts +29 -0
  124. package/inline-edit/InlineEditKeyValue.d.ts.map +1 -0
  125. package/inline-edit/InlineEditKeyValue.js +67 -0
  126. package/inline-edit/InlineEditKeyValue.js.map +1 -0
  127. package/inline-edit/InlineEditResourceList.d.ts +34 -0
  128. package/inline-edit/InlineEditResourceList.d.ts.map +1 -0
  129. package/inline-edit/InlineEditResourceList.js +99 -0
  130. package/inline-edit/InlineEditResourceList.js.map +1 -0
  131. package/inline-edit/InlineEditSelect.d.ts +18 -0
  132. package/inline-edit/InlineEditSelect.d.ts.map +1 -0
  133. package/inline-edit/InlineEditSelect.js +54 -0
  134. package/inline-edit/InlineEditSelect.js.map +1 -0
  135. package/inline-edit/InlineEditText.d.ts +23 -0
  136. package/inline-edit/InlineEditText.d.ts.map +1 -0
  137. package/inline-edit/InlineEditText.js +79 -0
  138. package/inline-edit/InlineEditText.js.map +1 -0
  139. package/inline-edit/InlineEditTextarea.d.ts +22 -0
  140. package/inline-edit/InlineEditTextarea.d.ts.map +1 -0
  141. package/inline-edit/InlineEditTextarea.js +83 -0
  142. package/inline-edit/InlineEditTextarea.js.map +1 -0
  143. package/inline-edit/index.d.ts +16 -0
  144. package/inline-edit/index.d.ts.map +1 -0
  145. package/inline-edit/index.js +8 -0
  146. package/inline-edit/index.js.map +1 -0
  147. package/inline-edit/types.d.ts +42 -0
  148. package/inline-edit/types.d.ts.map +1 -0
  149. package/inline-edit/types.js +2 -0
  150. package/inline-edit/types.js.map +1 -0
  151. package/inline-edit/useInlineFieldSave.d.ts +23 -0
  152. package/inline-edit/useInlineFieldSave.d.ts.map +1 -0
  153. package/inline-edit/useInlineFieldSave.js +44 -0
  154. package/inline-edit/useInlineFieldSave.js.map +1 -0
  155. package/internal/Tabs.d.ts +4 -38
  156. package/internal/Tabs.d.ts.map +1 -1
  157. package/internal/Tabs.js +3 -62
  158. package/internal/Tabs.js.map +1 -1
  159. package/library/ImportResourceDialog.d.ts +43 -0
  160. package/library/ImportResourceDialog.d.ts.map +1 -0
  161. package/library/ImportResourceDialog.js +90 -0
  162. package/library/ImportResourceDialog.js.map +1 -0
  163. package/library/index.d.ts +7 -4
  164. package/library/index.d.ts.map +1 -1
  165. package/library/index.js +4 -2
  166. package/library/index.js.map +1 -1
  167. package/library/serialize-resource-yaml.d.ts +53 -0
  168. package/library/serialize-resource-yaml.d.ts.map +1 -1
  169. package/library/serialize-resource-yaml.js +275 -0
  170. package/library/serialize-resource-yaml.js.map +1 -1
  171. package/library/useExportResource.d.ts +56 -0
  172. package/library/useExportResource.d.ts.map +1 -0
  173. package/library/useExportResource.js +137 -0
  174. package/library/useExportResource.js.map +1 -0
  175. package/library/useImportResource.d.ts +84 -0
  176. package/library/useImportResource.d.ts.map +1 -0
  177. package/library/useImportResource.js +188 -0
  178. package/library/useImportResource.js.map +1 -0
  179. package/mcp-server/McpServerCreationWizard.d.ts +55 -0
  180. package/mcp-server/McpServerCreationWizard.d.ts.map +1 -0
  181. package/mcp-server/McpServerCreationWizard.js +121 -0
  182. package/mcp-server/McpServerCreationWizard.js.map +1 -0
  183. package/mcp-server/McpServerDetailView.d.ts +21 -1
  184. package/mcp-server/McpServerDetailView.d.ts.map +1 -1
  185. package/mcp-server/McpServerDetailView.js +113 -20
  186. package/mcp-server/McpServerDetailView.js.map +1 -1
  187. package/mcp-server/index.d.ts +8 -0
  188. package/mcp-server/index.d.ts.map +1 -1
  189. package/mcp-server/index.js +4 -0
  190. package/mcp-server/index.js.map +1 -1
  191. package/mcp-server/internal/mcpServerToInput.d.ts +12 -0
  192. package/mcp-server/internal/mcpServerToInput.d.ts.map +1 -0
  193. package/mcp-server/internal/mcpServerToInput.js +81 -0
  194. package/mcp-server/internal/mcpServerToInput.js.map +1 -0
  195. package/mcp-server/steps/EnvironmentAuthStep.d.ts +15 -0
  196. package/mcp-server/steps/EnvironmentAuthStep.d.ts.map +1 -0
  197. package/mcp-server/steps/EnvironmentAuthStep.js +55 -0
  198. package/mcp-server/steps/EnvironmentAuthStep.js.map +1 -0
  199. package/mcp-server/steps/IdentityTransportStep.d.ts +19 -0
  200. package/mcp-server/steps/IdentityTransportStep.d.ts.map +1 -0
  201. package/mcp-server/steps/IdentityTransportStep.js +73 -0
  202. package/mcp-server/steps/IdentityTransportStep.js.map +1 -0
  203. package/mcp-server/steps/ReviewStep.d.ts +23 -0
  204. package/mcp-server/steps/ReviewStep.d.ts.map +1 -0
  205. package/mcp-server/steps/ReviewStep.js +137 -0
  206. package/mcp-server/steps/ReviewStep.js.map +1 -0
  207. package/mcp-server/steps/types.d.ts +56 -0
  208. package/mcp-server/steps/types.d.ts.map +1 -0
  209. package/mcp-server/steps/types.js +27 -0
  210. package/mcp-server/steps/types.js.map +1 -0
  211. package/mcp-server/useCreateMcpServer.d.ts +45 -0
  212. package/mcp-server/useCreateMcpServer.d.ts.map +1 -0
  213. package/mcp-server/useCreateMcpServer.js +50 -0
  214. package/mcp-server/useCreateMcpServer.js.map +1 -0
  215. package/mcp-server/useUpdateMcpServer.d.ts +24 -0
  216. package/mcp-server/useUpdateMcpServer.d.ts.map +1 -0
  217. package/mcp-server/useUpdateMcpServer.js +35 -0
  218. package/mcp-server/useUpdateMcpServer.js.map +1 -0
  219. package/models/registry.d.ts +4 -1
  220. package/models/registry.d.ts.map +1 -1
  221. package/models/registry.js +6 -2
  222. package/models/registry.js.map +1 -1
  223. package/package.json +8 -4
  224. package/provider.js +1 -1
  225. package/provider.js.map +1 -1
  226. package/resource-creation/CreationPicker.d.ts +60 -0
  227. package/resource-creation/CreationPicker.d.ts.map +1 -0
  228. package/resource-creation/CreationPicker.js +74 -0
  229. package/resource-creation/CreationPicker.js.map +1 -0
  230. package/resource-creation/StepIndicator.d.ts +28 -0
  231. package/resource-creation/StepIndicator.d.ts.map +1 -0
  232. package/resource-creation/StepIndicator.js +40 -0
  233. package/resource-creation/StepIndicator.js.map +1 -0
  234. package/resource-creation/TemplateCard.d.ts +24 -0
  235. package/resource-creation/TemplateCard.d.ts.map +1 -0
  236. package/resource-creation/TemplateCard.js +68 -0
  237. package/resource-creation/TemplateCard.js.map +1 -0
  238. package/resource-creation/TemplateGallery.d.ts +43 -0
  239. package/resource-creation/TemplateGallery.d.ts.map +1 -0
  240. package/resource-creation/TemplateGallery.js +78 -0
  241. package/resource-creation/TemplateGallery.js.map +1 -0
  242. package/resource-creation/WizardNav.d.ts +31 -0
  243. package/resource-creation/WizardNav.d.ts.map +1 -0
  244. package/resource-creation/WizardNav.js +29 -0
  245. package/resource-creation/WizardNav.js.map +1 -0
  246. package/resource-creation/WizardShell.d.ts +41 -0
  247. package/resource-creation/WizardShell.d.ts.map +1 -0
  248. package/resource-creation/WizardShell.js +55 -0
  249. package/resource-creation/WizardShell.js.map +1 -0
  250. package/resource-creation/index.d.ts +21 -0
  251. package/resource-creation/index.d.ts.map +1 -0
  252. package/resource-creation/index.js +14 -0
  253. package/resource-creation/index.js.map +1 -0
  254. package/resource-creation/templates/agent-templates.d.ts +15 -0
  255. package/resource-creation/templates/agent-templates.d.ts.map +1 -0
  256. package/resource-creation/templates/agent-templates.js +148 -0
  257. package/resource-creation/templates/agent-templates.js.map +1 -0
  258. package/resource-creation/templates/index.d.ts +5 -0
  259. package/resource-creation/templates/index.d.ts.map +1 -0
  260. package/resource-creation/templates/index.js +5 -0
  261. package/resource-creation/templates/index.js.map +1 -0
  262. package/resource-creation/templates/mcp-server-templates.d.ts +15 -0
  263. package/resource-creation/templates/mcp-server-templates.d.ts.map +1 -0
  264. package/resource-creation/templates/mcp-server-templates.js +92 -0
  265. package/resource-creation/templates/mcp-server-templates.js.map +1 -0
  266. package/resource-creation/templates/types.d.ts +48 -0
  267. package/resource-creation/templates/types.d.ts.map +1 -0
  268. package/resource-creation/templates/types.js +16 -0
  269. package/resource-creation/templates/types.js.map +1 -0
  270. package/resource-creation/types.d.ts +88 -0
  271. package/resource-creation/types.d.ts.map +1 -0
  272. package/resource-creation/types.js +2 -0
  273. package/resource-creation/types.js.map +1 -0
  274. package/resource-creation/useTemplateFilter.d.ts +43 -0
  275. package/resource-creation/useTemplateFilter.d.ts.map +1 -0
  276. package/resource-creation/useTemplateFilter.js +73 -0
  277. package/resource-creation/useTemplateFilter.js.map +1 -0
  278. package/resource-creation/useWizardState.d.ts +67 -0
  279. package/resource-creation/useWizardState.d.ts.map +1 -0
  280. package/resource-creation/useWizardState.js +143 -0
  281. package/resource-creation/useWizardState.js.map +1 -0
  282. package/resource-detail/ConfirmDialog.d.ts +44 -0
  283. package/resource-detail/ConfirmDialog.d.ts.map +1 -0
  284. package/resource-detail/ConfirmDialog.js +62 -0
  285. package/resource-detail/ConfirmDialog.js.map +1 -0
  286. package/resource-detail/ResourceActionBar.d.ts +42 -0
  287. package/resource-detail/ResourceActionBar.d.ts.map +1 -0
  288. package/resource-detail/ResourceActionBar.js +64 -0
  289. package/resource-detail/ResourceActionBar.js.map +1 -0
  290. package/resource-detail/ResourceDetailShell.d.ts +36 -0
  291. package/resource-detail/ResourceDetailShell.d.ts.map +1 -0
  292. package/resource-detail/ResourceDetailShell.js +65 -0
  293. package/resource-detail/ResourceDetailShell.js.map +1 -0
  294. package/resource-detail/Section.d.ts +18 -0
  295. package/resource-detail/Section.d.ts.map +1 -0
  296. package/resource-detail/Section.js +18 -0
  297. package/resource-detail/Section.js.map +1 -0
  298. package/resource-detail/index.d.ts +15 -0
  299. package/resource-detail/index.d.ts.map +1 -0
  300. package/resource-detail/index.js +10 -0
  301. package/resource-detail/index.js.map +1 -0
  302. package/resource-detail/types.d.ts +146 -0
  303. package/resource-detail/types.d.ts.map +1 -0
  304. package/resource-detail/types.js +2 -0
  305. package/resource-detail/types.js.map +1 -0
  306. package/resource-detail/useConfirmAction.d.ts +41 -0
  307. package/resource-detail/useConfirmAction.d.ts.map +1 -0
  308. package/resource-detail/useConfirmAction.js +30 -0
  309. package/resource-detail/useConfirmAction.js.map +1 -0
  310. package/resource-detail/useCopyResource.d.ts +28 -0
  311. package/resource-detail/useCopyResource.d.ts.map +1 -0
  312. package/resource-detail/useCopyResource.js +46 -0
  313. package/resource-detail/useCopyResource.js.map +1 -0
  314. package/resource-detail/useDeleteResource.d.ts +40 -0
  315. package/resource-detail/useDeleteResource.d.ts.map +1 -0
  316. package/resource-detail/useDeleteResource.js +83 -0
  317. package/resource-detail/useDeleteResource.js.map +1 -0
  318. package/resource-detail/useDetailTabs.d.ts +46 -0
  319. package/resource-detail/useDetailTabs.d.ts.map +1 -0
  320. package/resource-detail/useDetailTabs.js +47 -0
  321. package/resource-detail/useDetailTabs.js.map +1 -0
  322. package/resource-workbench/components/BulkActionBar.d.ts +36 -0
  323. package/resource-workbench/components/BulkActionBar.d.ts.map +1 -0
  324. package/resource-workbench/components/BulkActionBar.js +35 -0
  325. package/resource-workbench/components/BulkActionBar.js.map +1 -0
  326. package/resource-workbench/components/ColumnHeader.d.ts +23 -0
  327. package/resource-workbench/components/ColumnHeader.d.ts.map +1 -0
  328. package/resource-workbench/components/ColumnHeader.js +25 -0
  329. package/resource-workbench/components/ColumnHeader.js.map +1 -0
  330. package/resource-workbench/components/FilterBar.d.ts +33 -0
  331. package/resource-workbench/components/FilterBar.d.ts.map +1 -0
  332. package/resource-workbench/components/FilterBar.js +72 -0
  333. package/resource-workbench/components/FilterBar.js.map +1 -0
  334. package/resource-workbench/components/ResourceAvatar.d.ts +29 -0
  335. package/resource-workbench/components/ResourceAvatar.d.ts.map +1 -0
  336. package/resource-workbench/components/ResourceAvatar.js +51 -0
  337. package/resource-workbench/components/ResourceAvatar.js.map +1 -0
  338. package/resource-workbench/components/ResourceCards.d.ts +39 -0
  339. package/resource-workbench/components/ResourceCards.d.ts.map +1 -0
  340. package/resource-workbench/components/ResourceCards.js +41 -0
  341. package/resource-workbench/components/ResourceCards.js.map +1 -0
  342. package/resource-workbench/components/ResourceInspector.d.ts +26 -0
  343. package/resource-workbench/components/ResourceInspector.d.ts.map +1 -0
  344. package/resource-workbench/components/ResourceInspector.js +22 -0
  345. package/resource-workbench/components/ResourceInspector.js.map +1 -0
  346. package/resource-workbench/components/ResourceList.d.ts +39 -0
  347. package/resource-workbench/components/ResourceList.d.ts.map +1 -0
  348. package/resource-workbench/components/ResourceList.js +41 -0
  349. package/resource-workbench/components/ResourceList.js.map +1 -0
  350. package/resource-workbench/components/ResourceTable.d.ts +47 -0
  351. package/resource-workbench/components/ResourceTable.d.ts.map +1 -0
  352. package/resource-workbench/components/ResourceTable.js +78 -0
  353. package/resource-workbench/components/ResourceTable.js.map +1 -0
  354. package/resource-workbench/components/ResourceWorkbench.d.ts +131 -0
  355. package/resource-workbench/components/ResourceWorkbench.d.ts.map +1 -0
  356. package/resource-workbench/components/ResourceWorkbench.js +170 -0
  357. package/resource-workbench/components/ResourceWorkbench.js.map +1 -0
  358. package/resource-workbench/components/SelectionCheckbox.d.ts +24 -0
  359. package/resource-workbench/components/SelectionCheckbox.d.ts.map +1 -0
  360. package/resource-workbench/components/SelectionCheckbox.js +16 -0
  361. package/resource-workbench/components/SelectionCheckbox.js.map +1 -0
  362. package/resource-workbench/components/StatusBadge.d.ts +31 -0
  363. package/resource-workbench/components/StatusBadge.d.ts.map +1 -0
  364. package/resource-workbench/components/StatusBadge.js +75 -0
  365. package/resource-workbench/components/StatusBadge.js.map +1 -0
  366. package/resource-workbench/components/ViewSwitcher.d.ts +21 -0
  367. package/resource-workbench/components/ViewSwitcher.d.ts.map +1 -0
  368. package/resource-workbench/components/ViewSwitcher.js +37 -0
  369. package/resource-workbench/components/ViewSwitcher.js.map +1 -0
  370. package/resource-workbench/hooks/useResourceCollection.d.ts +93 -0
  371. package/resource-workbench/hooks/useResourceCollection.d.ts.map +1 -0
  372. package/resource-workbench/hooks/useResourceCollection.js +133 -0
  373. package/resource-workbench/hooks/useResourceCollection.js.map +1 -0
  374. package/resource-workbench/hooks/useResourceFilters.d.ts +73 -0
  375. package/resource-workbench/hooks/useResourceFilters.d.ts.map +1 -0
  376. package/resource-workbench/hooks/useResourceFilters.js +105 -0
  377. package/resource-workbench/hooks/useResourceFilters.js.map +1 -0
  378. package/resource-workbench/hooks/useResourceSelection.d.ts +44 -0
  379. package/resource-workbench/hooks/useResourceSelection.d.ts.map +1 -0
  380. package/resource-workbench/hooks/useResourceSelection.js +123 -0
  381. package/resource-workbench/hooks/useResourceSelection.js.map +1 -0
  382. package/resource-workbench/hooks/useViewPreference.d.ts +32 -0
  383. package/resource-workbench/hooks/useViewPreference.d.ts.map +1 -0
  384. package/resource-workbench/hooks/useViewPreference.js +60 -0
  385. package/resource-workbench/hooks/useViewPreference.js.map +1 -0
  386. package/resource-workbench/index.d.ts +34 -0
  387. package/resource-workbench/index.d.ts.map +1 -0
  388. package/resource-workbench/index.js +19 -0
  389. package/resource-workbench/index.js.map +1 -0
  390. package/resource-workbench/types.d.ts +165 -0
  391. package/resource-workbench/types.d.ts.map +1 -0
  392. package/resource-workbench/types.js +2 -0
  393. package/resource-workbench/types.js.map +1 -0
  394. package/runner/RunnerDetailView.d.ts +44 -0
  395. package/runner/RunnerDetailView.d.ts.map +1 -0
  396. package/runner/RunnerDetailView.js +154 -0
  397. package/runner/RunnerDetailView.js.map +1 -0
  398. package/runner/RunnerListPanel.d.ts +26 -1
  399. package/runner/RunnerListPanel.d.ts.map +1 -1
  400. package/runner/RunnerListPanel.js +68 -46
  401. package/runner/RunnerListPanel.js.map +1 -1
  402. package/runner/index.d.ts +7 -1
  403. package/runner/index.d.ts.map +1 -1
  404. package/runner/index.js +3 -0
  405. package/runner/index.js.map +1 -1
  406. package/runner/shared.d.ts +31 -0
  407. package/runner/shared.d.ts.map +1 -0
  408. package/runner/shared.js +55 -0
  409. package/runner/shared.js.map +1 -0
  410. package/runner/useRunner.d.ts +37 -0
  411. package/runner/useRunner.d.ts.map +1 -0
  412. package/runner/useRunner.js +24 -0
  413. package/runner/useRunner.js.map +1 -0
  414. package/session/__tests__/group-sessions.test.js +3 -3
  415. package/session/__tests__/group-sessions.test.js.map +1 -1
  416. package/skill/SkillDetailView.d.ts +70 -7
  417. package/skill/SkillDetailView.d.ts.map +1 -1
  418. package/skill/SkillDetailView.js +107 -39
  419. package/skill/SkillDetailView.js.map +1 -1
  420. package/skill/SkillDiffDialog.d.ts +42 -0
  421. package/skill/SkillDiffDialog.d.ts.map +1 -0
  422. package/skill/SkillDiffDialog.js +72 -0
  423. package/skill/SkillDiffDialog.js.map +1 -0
  424. package/skill/SkillFileBrowser.d.ts +31 -0
  425. package/skill/SkillFileBrowser.d.ts.map +1 -0
  426. package/skill/SkillFileBrowser.js +105 -0
  427. package/skill/SkillFileBrowser.js.map +1 -0
  428. package/skill/SkillUploader.d.ts +39 -0
  429. package/skill/SkillUploader.d.ts.map +1 -0
  430. package/skill/SkillUploader.js +141 -0
  431. package/skill/SkillUploader.js.map +1 -0
  432. package/skill/index.d.ts +18 -0
  433. package/skill/index.d.ts.map +1 -1
  434. package/skill/index.js +9 -0
  435. package/skill/index.js.map +1 -1
  436. package/skill/internal/computeArtifactHash.d.ts +9 -0
  437. package/skill/internal/computeArtifactHash.d.ts.map +1 -0
  438. package/skill/internal/computeArtifactHash.js +14 -0
  439. package/skill/internal/computeArtifactHash.js.map +1 -0
  440. package/skill/internal/fetchAndUnpackArtifact.d.ts +16 -0
  441. package/skill/internal/fetchAndUnpackArtifact.d.ts.map +1 -0
  442. package/skill/internal/fetchAndUnpackArtifact.js +34 -0
  443. package/skill/internal/fetchAndUnpackArtifact.js.map +1 -0
  444. package/skill/usePushSkill.d.ts +53 -0
  445. package/skill/usePushSkill.d.ts.map +1 -0
  446. package/skill/usePushSkill.js +57 -0
  447. package/skill/usePushSkill.js.map +1 -0
  448. package/skill/useSkillArtifact.d.ts +37 -0
  449. package/skill/useSkillArtifact.d.ts.map +1 -0
  450. package/skill/useSkillArtifact.js +76 -0
  451. package/skill/useSkillArtifact.js.map +1 -0
  452. package/skill/useSkillDiff.d.ts +31 -0
  453. package/skill/useSkillDiff.d.ts.map +1 -0
  454. package/skill/useSkillDiff.js +97 -0
  455. package/skill/useSkillDiff.js.map +1 -0
  456. package/skill/useSkillDuplicateCheck.d.ts +34 -0
  457. package/skill/useSkillDuplicateCheck.d.ts.map +1 -0
  458. package/skill/useSkillDuplicateCheck.js +58 -0
  459. package/skill/useSkillDuplicateCheck.js.map +1 -0
  460. package/skill/useSkillUpload.d.ts +69 -0
  461. package/skill/useSkillUpload.d.ts.map +1 -0
  462. package/skill/useSkillUpload.js +157 -0
  463. package/skill/useSkillUpload.js.map +1 -0
  464. package/skill/useSkillVersions.d.ts +46 -0
  465. package/skill/useSkillVersions.d.ts.map +1 -0
  466. package/skill/useSkillVersions.js +104 -0
  467. package/skill/useSkillVersions.js.map +1 -0
  468. package/src/action-menu/ActionMenu.tsx +151 -0
  469. package/src/action-menu/index.ts +9 -0
  470. package/src/action-menu/types.ts +70 -0
  471. package/src/agent/AgentCreationWizard.tsx +201 -0
  472. package/src/agent/AgentDetailView.tsx +817 -321
  473. package/src/agent/index.ts +16 -0
  474. package/src/agent/internal/agentToInput.ts +95 -0
  475. package/src/agent/steps/CapabilitiesStep.tsx +363 -0
  476. package/src/agent/steps/IdentityStep.tsx +259 -0
  477. package/src/agent/steps/ReviewStep.tsx +211 -0
  478. package/src/agent/steps/types.ts +53 -0
  479. package/src/agent/useCreateAgent.ts +76 -0
  480. package/src/agent/useUpdateAgent.ts +55 -0
  481. package/src/dependency-graph/DependencyGraph.tsx +153 -0
  482. package/src/dependency-graph/DependencyTreeNode.tsx +282 -0
  483. package/src/dependency-graph/index.ts +15 -0
  484. package/src/dependency-graph/types.ts +131 -0
  485. package/src/dependency-graph/useDependencyGraph.ts +158 -0
  486. package/src/empty-state/EmptyState.tsx +90 -0
  487. package/src/empty-state/index.ts +9 -0
  488. package/src/empty-state/types.ts +81 -0
  489. package/src/empty-state/useEmptyState.ts +85 -0
  490. package/src/execution/MessageThread.tsx +26 -15
  491. package/src/execution/SetupProgress.tsx +35 -14
  492. package/src/execution/__tests__/thread-keys.test.ts +101 -0
  493. package/src/feedback/StigmerToaster.tsx +45 -0
  494. package/src/feedback/index.ts +3 -0
  495. package/src/feedback/toast.ts +13 -0
  496. package/src/feedback/types.ts +7 -0
  497. package/src/index.ts +270 -8
  498. package/src/inline-edit/InlineEditImage.tsx +208 -0
  499. package/src/inline-edit/InlineEditKeyValue.tsx +278 -0
  500. package/src/inline-edit/InlineEditResourceList.tsx +325 -0
  501. package/src/inline-edit/InlineEditSelect.tsx +150 -0
  502. package/src/inline-edit/InlineEditText.tsx +211 -0
  503. package/src/inline-edit/InlineEditTextarea.tsx +209 -0
  504. package/src/inline-edit/index.ts +28 -0
  505. package/src/inline-edit/types.ts +47 -0
  506. package/src/inline-edit/useInlineFieldSave.ts +62 -0
  507. package/src/internal/Tabs.tsx +4 -164
  508. package/src/library/ImportResourceDialog.tsx +227 -0
  509. package/src/library/index.ts +18 -8
  510. package/src/library/serialize-resource-yaml.ts +356 -0
  511. package/src/library/useExportResource.ts +183 -0
  512. package/src/library/useImportResource.ts +253 -0
  513. package/src/mcp-server/McpServerCreationWizard.tsx +206 -0
  514. package/src/mcp-server/McpServerDetailView.tsx +392 -105
  515. package/src/mcp-server/index.ts +16 -0
  516. package/src/mcp-server/internal/mcpServerToInput.ts +95 -0
  517. package/src/mcp-server/steps/EnvironmentAuthStep.tsx +462 -0
  518. package/src/mcp-server/steps/IdentityTransportStep.tsx +531 -0
  519. package/src/mcp-server/steps/ReviewStep.tsx +297 -0
  520. package/src/mcp-server/steps/types.ts +85 -0
  521. package/src/mcp-server/useCreateMcpServer.ts +76 -0
  522. package/src/mcp-server/useUpdateMcpServer.ts +55 -0
  523. package/src/models/registry.ts +10 -2
  524. package/src/provider.tsx +1 -1
  525. package/src/resource-creation/CreationPicker.tsx +292 -0
  526. package/src/resource-creation/StepIndicator.tsx +156 -0
  527. package/src/resource-creation/TemplateCard.tsx +143 -0
  528. package/src/resource-creation/TemplateGallery.tsx +222 -0
  529. package/src/resource-creation/WizardNav.tsx +163 -0
  530. package/src/resource-creation/WizardShell.tsx +124 -0
  531. package/src/resource-creation/index.ts +45 -0
  532. package/src/resource-creation/templates/agent-templates.ts +160 -0
  533. package/src/resource-creation/templates/index.ts +7 -0
  534. package/src/resource-creation/templates/mcp-server-templates.ts +106 -0
  535. package/src/resource-creation/templates/types.ts +64 -0
  536. package/src/resource-creation/types.ts +105 -0
  537. package/src/resource-creation/useTemplateFilter.ts +117 -0
  538. package/src/resource-creation/useWizardState.ts +223 -0
  539. package/src/resource-detail/ConfirmDialog.tsx +127 -0
  540. package/src/resource-detail/ResourceActionBar.tsx +157 -0
  541. package/src/resource-detail/ResourceDetailShell.tsx +184 -0
  542. package/src/resource-detail/Section.tsx +78 -0
  543. package/src/resource-detail/index.ts +34 -0
  544. package/src/resource-detail/types.ts +177 -0
  545. package/src/resource-detail/useConfirmAction.ts +70 -0
  546. package/src/resource-detail/useCopyResource.ts +74 -0
  547. package/src/resource-detail/useDeleteResource.ts +110 -0
  548. package/src/resource-detail/useDetailTabs.ts +93 -0
  549. package/src/resource-workbench/components/BulkActionBar.tsx +122 -0
  550. package/src/resource-workbench/components/ColumnHeader.tsx +105 -0
  551. package/src/resource-workbench/components/FilterBar.tsx +173 -0
  552. package/src/resource-workbench/components/ResourceAvatar.tsx +109 -0
  553. package/src/resource-workbench/components/ResourceCards.tsx +126 -0
  554. package/src/resource-workbench/components/ResourceInspector.tsx +88 -0
  555. package/src/resource-workbench/components/ResourceList.tsx +121 -0
  556. package/src/resource-workbench/components/ResourceTable.tsx +222 -0
  557. package/src/resource-workbench/components/ResourceWorkbench.tsx +695 -0
  558. package/src/resource-workbench/components/SelectionCheckbox.tsx +52 -0
  559. package/src/resource-workbench/components/StatusBadge.tsx +119 -0
  560. package/src/resource-workbench/components/ViewSwitcher.tsx +135 -0
  561. package/src/resource-workbench/hooks/useResourceCollection.ts +261 -0
  562. package/src/resource-workbench/hooks/useResourceFilters.ts +216 -0
  563. package/src/resource-workbench/hooks/useResourceSelection.ts +178 -0
  564. package/src/resource-workbench/hooks/useViewPreference.ts +75 -0
  565. package/src/resource-workbench/index.ts +73 -0
  566. package/src/resource-workbench/types.ts +220 -0
  567. package/src/runner/RunnerDetailView.tsx +410 -0
  568. package/src/runner/RunnerListPanel.tsx +126 -111
  569. package/src/runner/index.ts +13 -1
  570. package/src/runner/shared.tsx +124 -0
  571. package/src/runner/useRunner.ts +59 -0
  572. package/src/session/__tests__/group-sessions.test.ts +5 -3
  573. package/src/skill/SkillDetailView.tsx +371 -165
  574. package/src/skill/SkillDiffDialog.tsx +213 -0
  575. package/src/skill/SkillFileBrowser.tsx +289 -0
  576. package/src/skill/SkillUploader.tsx +481 -0
  577. package/src/skill/index.ts +34 -0
  578. package/src/skill/internal/computeArtifactHash.ts +13 -0
  579. package/src/skill/internal/fetchAndUnpackArtifact.ts +48 -0
  580. package/src/skill/usePushSkill.ts +101 -0
  581. package/src/skill/useSkillArtifact.ts +107 -0
  582. package/src/skill/useSkillDiff.ts +128 -0
  583. package/src/skill/useSkillDuplicateCheck.ts +92 -0
  584. package/src/skill/useSkillUpload.ts +231 -0
  585. package/src/skill/useSkillVersions.ts +165 -0
  586. package/src/styles.css +28 -0
  587. package/src/tabs/Tabs.tsx +184 -0
  588. package/src/tabs/index.ts +2 -0
  589. package/src/version-history/DiffFileList.tsx +111 -0
  590. package/src/version-history/DiffSummary.tsx +61 -0
  591. package/src/version-history/DiffViewer.tsx +163 -0
  592. package/src/version-history/MultiFileDiffView.tsx +114 -0
  593. package/src/version-history/VersionTimeline.tsx +232 -0
  594. package/src/version-history/VersionTimelineEntry.tsx +254 -0
  595. package/src/version-history/computeDiff.ts +61 -0
  596. package/src/version-history/computeMultiFileDiff.ts +97 -0
  597. package/src/version-history/index.ts +22 -0
  598. package/src/version-history/types.ts +129 -0
  599. package/styles.css +1 -1
  600. package/tabs/Tabs.d.ts +58 -0
  601. package/tabs/Tabs.d.ts.map +1 -0
  602. package/tabs/Tabs.js +80 -0
  603. package/tabs/Tabs.js.map +1 -0
  604. package/tabs/index.d.ts +3 -0
  605. package/tabs/index.d.ts.map +1 -0
  606. package/tabs/index.js +2 -0
  607. package/tabs/index.js.map +1 -0
  608. package/version-history/DiffFileList.d.ts +22 -0
  609. package/version-history/DiffFileList.d.ts.map +1 -0
  610. package/version-history/DiffFileList.js +37 -0
  611. package/version-history/DiffFileList.js.map +1 -0
  612. package/version-history/DiffSummary.d.ts +21 -0
  613. package/version-history/DiffSummary.d.ts.map +1 -0
  614. package/version-history/DiffSummary.js +16 -0
  615. package/version-history/DiffSummary.js.map +1 -0
  616. package/version-history/DiffViewer.d.ts +31 -0
  617. package/version-history/DiffViewer.d.ts.map +1 -0
  618. package/version-history/DiffViewer.js +60 -0
  619. package/version-history/DiffViewer.js.map +1 -0
  620. package/version-history/MultiFileDiffView.d.ts +30 -0
  621. package/version-history/MultiFileDiffView.d.ts.map +1 -0
  622. package/version-history/MultiFileDiffView.js +40 -0
  623. package/version-history/MultiFileDiffView.js.map +1 -0
  624. package/version-history/VersionTimeline.d.ts +29 -0
  625. package/version-history/VersionTimeline.d.ts.map +1 -0
  626. package/version-history/VersionTimeline.js +87 -0
  627. package/version-history/VersionTimeline.js.map +1 -0
  628. package/version-history/VersionTimelineEntry.d.ts +22 -0
  629. package/version-history/VersionTimelineEntry.d.ts.map +1 -0
  630. package/version-history/VersionTimelineEntry.js +98 -0
  631. package/version-history/VersionTimelineEntry.js.map +1 -0
  632. package/version-history/computeDiff.d.ts +16 -0
  633. package/version-history/computeDiff.d.ts.map +1 -0
  634. package/version-history/computeDiff.js +54 -0
  635. package/version-history/computeDiff.js.map +1 -0
  636. package/version-history/computeMultiFileDiff.d.ts +15 -0
  637. package/version-history/computeMultiFileDiff.d.ts.map +1 -0
  638. package/version-history/computeMultiFileDiff.js +83 -0
  639. package/version-history/computeMultiFileDiff.js.map +1 -0
  640. package/version-history/index.d.ts +14 -0
  641. package/version-history/index.d.ts.map +1 -0
  642. package/version-history/index.js +9 -0
  643. package/version-history/index.js.map +1 -0
  644. package/version-history/types.d.ts +106 -0
  645. package/version-history/types.d.ts.map +1 -0
  646. package/version-history/types.js +2 -0
  647. package/version-history/types.js.map +1 -0
  648. package/library/ResourceListView.d.ts +0 -174
  649. package/library/ResourceListView.d.ts.map +0 -1
  650. package/library/ResourceListView.js +0 -318
  651. package/library/ResourceListView.js.map +0 -1
  652. 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
+ }
@@ -200,14 +200,22 @@ export function parseRegistryJson(data: unknown): ModelInfo[] {
200
200
  *
201
201
  * @param apiUrl - Base URL of the Stigmer Cloud API (e.g. `https://api.stigmer.ai`)
202
202
  * @param token - Bearer token for authentication (from `client.getAuthCredential()`)
203
+ * @param customFetch - Optional custom `fetch` implementation. Required in
204
+ * Tauri where the global `fetch` is restricted by webview CSP/CORS policies.
205
+ * When omitted, the global `fetch` is used.
203
206
  * @returns Parsed `ModelInfo[]`.
204
207
  */
205
- export async function fetchModelRegistry(apiUrl: string, token: string | null): Promise<ModelInfo[]> {
208
+ export async function fetchModelRegistry(
209
+ apiUrl: string,
210
+ token: string | null,
211
+ customFetch?: typeof globalThis.fetch,
212
+ ): Promise<ModelInfo[]> {
213
+ const doFetch = customFetch ?? globalThis.fetch;
206
214
  const headers: Record<string, string> = {};
207
215
  if (token) {
208
216
  headers["Authorization"] = `Bearer ${token}`;
209
217
  }
210
- const res = await fetch(`${apiUrl}/v1/proxy/model-registry`, { headers });
218
+ const res = await doFetch(`${apiUrl}/v1/proxy/model-registry`, { headers });
211
219
  if (!res.ok) throw new Error(`Model registry fetch failed: ${res.status}`);
212
220
  const data: unknown = await res.json();
213
221
  return parseRegistryJson(data);
package/src/provider.tsx CHANGED
@@ -173,7 +173,7 @@ function useModelRegistryFetch(client: Stigmer): ModelRegistryState {
173
173
 
174
174
  const c = clientRef.current;
175
175
  c.getAuthCredential()
176
- .then((token) => fetchModelRegistry(c.baseUrl, token))
176
+ .then((token) => fetchModelRegistry(c.baseUrl, token, c.fetch))
177
177
  .then((models) => {
178
178
  if (!cancelled) {
179
179
  setState({ models, isLoading: false, error: null });