@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,143 @@
1
+ "use client";
2
+
3
+ import { useCallback } from "react";
4
+ import { cn } from "@stigmer/theme";
5
+ import type { ResourceTemplate, TemplateCategory } from "./templates/types";
6
+ import { TEMPLATE_CATEGORY_LABELS } from "./templates/types";
7
+
8
+ // ---------------------------------------------------------------------------
9
+ // Public API
10
+ // ---------------------------------------------------------------------------
11
+
12
+ /** Props for {@link TemplateCard}. */
13
+ export interface TemplateCardProps<TData> {
14
+ /** The template to display. */
15
+ readonly template: ResourceTemplate<TData>;
16
+ /** Called when the card is selected (click or Enter). */
17
+ readonly onSelect: (template: ResourceTemplate<TData>) => void;
18
+ /** Additional CSS classes for the card container. */
19
+ readonly className?: string;
20
+ }
21
+
22
+ // ---------------------------------------------------------------------------
23
+ // Category badge colors
24
+ // ---------------------------------------------------------------------------
25
+
26
+ const CATEGORY_COLORS: Record<TemplateCategory, string> = {
27
+ "customer-support": "bg-blue-500/10 text-blue-700 dark:text-blue-400",
28
+ "code-review": "bg-violet-500/10 text-violet-700 dark:text-violet-400",
29
+ "data-analysis": "bg-amber-500/10 text-amber-700 dark:text-amber-400",
30
+ devops: "bg-emerald-500/10 text-emerald-700 dark:text-emerald-400",
31
+ content: "bg-pink-500/10 text-pink-700 dark:text-pink-400",
32
+ integration: "bg-cyan-500/10 text-cyan-700 dark:text-cyan-400",
33
+ general: "bg-muted text-muted-foreground",
34
+ };
35
+
36
+ // ---------------------------------------------------------------------------
37
+ // Initial avatar colors (deterministic from template id)
38
+ // ---------------------------------------------------------------------------
39
+
40
+ const AVATAR_COLORS = [
41
+ "bg-blue-500/15 text-blue-700 dark:text-blue-400",
42
+ "bg-violet-500/15 text-violet-700 dark:text-violet-400",
43
+ "bg-emerald-500/15 text-emerald-700 dark:text-emerald-400",
44
+ "bg-amber-500/15 text-amber-700 dark:text-amber-400",
45
+ "bg-pink-500/15 text-pink-700 dark:text-pink-400",
46
+ "bg-cyan-500/15 text-cyan-700 dark:text-cyan-400",
47
+ "bg-rose-500/15 text-rose-700 dark:text-rose-400",
48
+ ] as const;
49
+
50
+ function hashCode(str: string): number {
51
+ let hash = 0;
52
+ for (let i = 0; i < str.length; i++) {
53
+ hash = ((hash << 5) - hash + str.charCodeAt(i)) | 0;
54
+ }
55
+ return Math.abs(hash);
56
+ }
57
+
58
+ // ---------------------------------------------------------------------------
59
+ // Component
60
+ // ---------------------------------------------------------------------------
61
+
62
+ /**
63
+ * A clickable card that displays a resource template's metadata.
64
+ *
65
+ * Renders the template's name, description, and category badge.
66
+ * Displays a colored initial avatar derived from the template name.
67
+ *
68
+ * Fully keyboard-accessible: focusable, activates on Enter/Space.
69
+ * Uses `--stgm-*` tokens for all structural styling; category badge
70
+ * colors use Tailwind's semantic palette with opacity for dark mode.
71
+ *
72
+ * @typeParam TData - The wizard data shape this template targets.
73
+ */
74
+ export function TemplateCard<TData>({
75
+ template,
76
+ onSelect,
77
+ className,
78
+ }: TemplateCardProps<TData>) {
79
+ const handleClick = useCallback(() => {
80
+ onSelect(template);
81
+ }, [onSelect, template]);
82
+
83
+ const handleKeyDown = useCallback(
84
+ (e: React.KeyboardEvent) => {
85
+ if (e.key === "Enter" || e.key === " ") {
86
+ e.preventDefault();
87
+ onSelect(template);
88
+ }
89
+ },
90
+ [onSelect, template],
91
+ );
92
+
93
+ const colorIndex = hashCode(template.id) % AVATAR_COLORS.length;
94
+ const avatarColor = AVATAR_COLORS[colorIndex]!;
95
+ const initial = template.name.charAt(0).toUpperCase();
96
+ const categoryLabel =
97
+ TEMPLATE_CATEGORY_LABELS[template.category] ?? template.category;
98
+
99
+ return (
100
+ <div
101
+ role="button"
102
+ tabIndex={0}
103
+ onClick={handleClick}
104
+ onKeyDown={handleKeyDown}
105
+ aria-label={`Use ${template.name} template`}
106
+ className={cn(
107
+ "group flex cursor-pointer flex-col gap-3 rounded-lg border border-border bg-card p-4",
108
+ "transition-colors hover:border-primary hover:bg-accent",
109
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
110
+ className,
111
+ )}
112
+ >
113
+ <div className="flex items-start gap-3">
114
+ {/* Initial avatar */}
115
+ <span
116
+ className={cn(
117
+ "inline-flex size-9 shrink-0 items-center justify-center rounded-md text-sm font-semibold",
118
+ avatarColor,
119
+ )}
120
+ aria-hidden="true"
121
+ >
122
+ {initial}
123
+ </span>
124
+
125
+ <div className="min-w-0 flex-1">
126
+ <p className="text-sm font-medium text-foreground">{template.name}</p>
127
+ <span
128
+ className={cn(
129
+ "mt-1 inline-block rounded-full px-2 py-0.5 text-[10px] font-medium",
130
+ CATEGORY_COLORS[template.category] ?? CATEGORY_COLORS.general,
131
+ )}
132
+ >
133
+ {categoryLabel}
134
+ </span>
135
+ </div>
136
+ </div>
137
+
138
+ <p className="line-clamp-2 text-xs leading-relaxed text-muted-foreground">
139
+ {template.description}
140
+ </p>
141
+ </div>
142
+ );
143
+ }
@@ -0,0 +1,222 @@
1
+ "use client";
2
+
3
+ import { useCallback, useRef, type ReactNode } from "react";
4
+ import { cn } from "@stigmer/theme";
5
+ import type { ResourceTemplate, TemplateCategory } from "./templates/types";
6
+ import { TEMPLATE_CATEGORY_LABELS } from "./templates/types";
7
+ import { useTemplateFilter } from "./useTemplateFilter";
8
+ import { TemplateCard } from "./TemplateCard";
9
+
10
+ // ---------------------------------------------------------------------------
11
+ // Public API
12
+ // ---------------------------------------------------------------------------
13
+
14
+ /** Props for {@link TemplateGallery}. */
15
+ export interface TemplateGalleryProps<TData> {
16
+ /** Templates to display in the gallery. */
17
+ readonly templates: readonly ResourceTemplate<TData>[];
18
+ /** Called when the user selects a template. */
19
+ readonly onSelect: (template: ResourceTemplate<TData>) => void;
20
+ /**
21
+ * Content to render when no templates match the search/filter.
22
+ * Falls back to a built-in empty message if not provided.
23
+ */
24
+ readonly emptyContent?: ReactNode;
25
+ /** Additional CSS classes for the root container. */
26
+ readonly className?: string;
27
+ }
28
+
29
+ // ---------------------------------------------------------------------------
30
+ // Component
31
+ // ---------------------------------------------------------------------------
32
+
33
+ /**
34
+ * A searchable, filterable gallery of resource templates.
35
+ *
36
+ * Renders category tabs, a search input, and a responsive card grid.
37
+ * Uses the headless `useTemplateFilter` hook for state — platform
38
+ * builders who want custom rendering can use the hook directly.
39
+ *
40
+ * Keyboard navigation:
41
+ * - Tab moves focus between the search input, category tabs, and cards
42
+ * - Arrow keys (Left/Right) navigate between category tabs
43
+ * - Enter/Space activates the focused tab or card
44
+ *
45
+ * All structural styling via `--stgm-*` tokens. Zero Console or
46
+ * framework dependencies.
47
+ *
48
+ * @typeParam TData - The wizard data shape (e.g. `AgentWizardData`).
49
+ *
50
+ * @example
51
+ * ```tsx
52
+ * <TemplateGallery
53
+ * templates={AGENT_TEMPLATES}
54
+ * onSelect={(template) => startWizardWithTemplate(template)}
55
+ * />
56
+ * ```
57
+ */
58
+ export function TemplateGallery<TData>({
59
+ templates,
60
+ onSelect,
61
+ emptyContent,
62
+ className,
63
+ }: TemplateGalleryProps<TData>) {
64
+ const {
65
+ filtered,
66
+ query,
67
+ setQuery,
68
+ activeCategory,
69
+ setActiveCategory,
70
+ availableCategories,
71
+ } = useTemplateFilter({ templates });
72
+
73
+ const tabListRef = useRef<HTMLDivElement>(null);
74
+
75
+ const handleTabKeyDown = useCallback((e: React.KeyboardEvent) => {
76
+ const tabs =
77
+ tabListRef.current?.querySelectorAll<HTMLButtonElement>('[role="tab"]');
78
+ if (!tabs?.length) return;
79
+
80
+ const currentIndex = Array.from(tabs).findIndex(
81
+ (t) => t === document.activeElement,
82
+ );
83
+ if (currentIndex === -1) return;
84
+
85
+ let nextIndex: number | null = null;
86
+
87
+ if (e.key === "ArrowRight") {
88
+ nextIndex = (currentIndex + 1) % tabs.length;
89
+ } else if (e.key === "ArrowLeft") {
90
+ nextIndex = (currentIndex - 1 + tabs.length) % tabs.length;
91
+ } else if (e.key === "Home") {
92
+ nextIndex = 0;
93
+ } else if (e.key === "End") {
94
+ nextIndex = tabs.length - 1;
95
+ }
96
+
97
+ if (nextIndex !== null) {
98
+ e.preventDefault();
99
+ tabs[nextIndex]!.focus();
100
+ tabs[nextIndex]!.click();
101
+ }
102
+ }, []);
103
+
104
+ return (
105
+ <div className={cn("flex flex-col gap-4", className)}>
106
+ {/* Search input */}
107
+ <div className="relative">
108
+ <SearchIcon />
109
+ <input
110
+ type="search"
111
+ value={query}
112
+ onChange={(e) => setQuery(e.target.value)}
113
+ placeholder="Search templates…"
114
+ aria-label="Search templates"
115
+ className={cn(
116
+ "w-full rounded-md border border-input bg-input-bg py-2 pl-9 pr-3 text-sm text-foreground",
117
+ "placeholder:text-muted-foreground",
118
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
119
+ )}
120
+ />
121
+ </div>
122
+
123
+ {/* Category tabs */}
124
+ {availableCategories.length > 1 && (
125
+ <div
126
+ ref={tabListRef}
127
+ role="tablist"
128
+ aria-label="Template categories"
129
+ onKeyDown={handleTabKeyDown}
130
+ className="flex flex-wrap gap-1"
131
+ >
132
+ <CategoryTab
133
+ label="All"
134
+ isActive={activeCategory === null}
135
+ onClick={() => setActiveCategory(null)}
136
+ />
137
+ {availableCategories.map((cat) => (
138
+ <CategoryTab
139
+ key={cat}
140
+ label={TEMPLATE_CATEGORY_LABELS[cat] ?? cat}
141
+ isActive={activeCategory === cat}
142
+ onClick={() => setActiveCategory(cat)}
143
+ />
144
+ ))}
145
+ </div>
146
+ )}
147
+
148
+ {/* Card grid or empty state */}
149
+ {filtered.length > 0 ? (
150
+ <div
151
+ role="list"
152
+ aria-label="Templates"
153
+ className="grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3"
154
+ >
155
+ {filtered.map((template) => (
156
+ <div key={template.id} role="listitem">
157
+ <TemplateCard template={template} onSelect={onSelect} />
158
+ </div>
159
+ ))}
160
+ </div>
161
+ ) : (
162
+ (emptyContent ?? (
163
+ <div className="py-8 text-center text-sm text-muted-foreground">
164
+ No templates match your search.
165
+ </div>
166
+ ))
167
+ )}
168
+ </div>
169
+ );
170
+ }
171
+
172
+ // ---------------------------------------------------------------------------
173
+ // Internal components
174
+ // ---------------------------------------------------------------------------
175
+
176
+ function CategoryTab({
177
+ label,
178
+ isActive,
179
+ onClick,
180
+ }: {
181
+ readonly label: string;
182
+ readonly isActive: boolean;
183
+ readonly onClick: () => void;
184
+ }) {
185
+ return (
186
+ <button
187
+ type="button"
188
+ role="tab"
189
+ aria-selected={isActive}
190
+ tabIndex={isActive ? 0 : -1}
191
+ onClick={onClick}
192
+ className={cn(
193
+ "rounded-md px-2.5 py-1 text-xs font-medium transition-colors",
194
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
195
+ isActive
196
+ ? "bg-primary text-primary-foreground"
197
+ : "bg-muted text-muted-foreground hover:bg-accent hover:text-accent-foreground",
198
+ )}
199
+ >
200
+ {label}
201
+ </button>
202
+ );
203
+ }
204
+
205
+ function SearchIcon() {
206
+ return (
207
+ <svg
208
+ className="pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground"
209
+ xmlns="http://www.w3.org/2000/svg"
210
+ viewBox="0 0 24 24"
211
+ fill="none"
212
+ stroke="currentColor"
213
+ strokeWidth={2}
214
+ strokeLinecap="round"
215
+ strokeLinejoin="round"
216
+ aria-hidden="true"
217
+ >
218
+ <circle cx={11} cy={11} r={8} />
219
+ <path d="m21 21-4.3-4.3" />
220
+ </svg>
221
+ );
222
+ }
@@ -0,0 +1,163 @@
1
+ "use client";
2
+
3
+ import { cn } from "@stigmer/theme";
4
+
5
+ /** Props for {@link WizardNav}. */
6
+ export interface WizardNavProps {
7
+ /** Whether the Back button should be displayed. */
8
+ readonly showBack: boolean;
9
+ /** Label for the primary action button. */
10
+ readonly nextLabel: string;
11
+ /** Whether the primary action is disabled. */
12
+ readonly nextDisabled?: boolean;
13
+ /** Whether the primary action is in a loading state. */
14
+ readonly isSubmitting?: boolean;
15
+ /** Called when Back is clicked. */
16
+ readonly onBack: () => void;
17
+ /** Called when Next/Submit is clicked. */
18
+ readonly onNext: () => void;
19
+ /** Called when Cancel is clicked. */
20
+ readonly onCancel?: () => void;
21
+ /** Additional CSS classes for the root container. */
22
+ readonly className?: string;
23
+ }
24
+
25
+ /**
26
+ * Navigation footer for the wizard shell.
27
+ *
28
+ * Renders Back / Next|Submit buttons in a standardized layout.
29
+ * The primary (right-side) button adapts its label and loading
30
+ * state based on whether it's the final step.
31
+ *
32
+ * Keyboard: Enter triggers the primary action when focused within
33
+ * the wizard content (not within text areas or other multi-line inputs).
34
+ */
35
+ export function WizardNav({
36
+ showBack,
37
+ nextLabel,
38
+ nextDisabled,
39
+ isSubmitting,
40
+ onBack,
41
+ onNext,
42
+ onCancel,
43
+ className,
44
+ }: WizardNavProps) {
45
+ return (
46
+ <div
47
+ className={cn(
48
+ "flex items-center justify-between border-t border-border px-6 py-4",
49
+ className,
50
+ )}
51
+ >
52
+ <div className="flex items-center gap-2">
53
+ {onCancel && (
54
+ <button
55
+ type="button"
56
+ onClick={onCancel}
57
+ disabled={isSubmitting}
58
+ className={cn(
59
+ "rounded-md px-3 py-1.5 text-sm",
60
+ "text-muted-foreground transition-colors",
61
+ "hover:text-foreground hover:bg-accent-hover",
62
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
63
+ "disabled:pointer-events-none disabled:opacity-50",
64
+ )}
65
+ >
66
+ Cancel
67
+ </button>
68
+ )}
69
+ </div>
70
+
71
+ <div className="flex items-center gap-2">
72
+ {showBack && (
73
+ <button
74
+ type="button"
75
+ onClick={onBack}
76
+ disabled={isSubmitting}
77
+ className={cn(
78
+ "inline-flex items-center gap-1.5 rounded-md border border-input bg-background px-3 py-1.5 text-sm font-medium text-foreground transition-colors",
79
+ "hover:bg-accent-hover",
80
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
81
+ "disabled:pointer-events-none disabled:opacity-50",
82
+ )}
83
+ >
84
+ <ArrowLeftIcon className="size-3.5" />
85
+ Back
86
+ </button>
87
+ )}
88
+
89
+ <button
90
+ type="button"
91
+ onClick={onNext}
92
+ disabled={nextDisabled || isSubmitting}
93
+ className={cn(
94
+ "inline-flex items-center gap-1.5 rounded-md bg-primary px-4 py-1.5 text-sm font-medium text-primary-foreground transition-colors",
95
+ "hover:bg-primary-hover",
96
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
97
+ "disabled:pointer-events-none disabled:opacity-40",
98
+ )}
99
+ >
100
+ {isSubmitting && <SpinnerIcon />}
101
+ {nextLabel}
102
+ {!isSubmitting && <ArrowRightIcon className="size-3.5" />}
103
+ </button>
104
+ </div>
105
+ </div>
106
+ );
107
+ }
108
+
109
+ // ---------------------------------------------------------------------------
110
+ // Icons
111
+ // ---------------------------------------------------------------------------
112
+
113
+ function ArrowLeftIcon({ className }: { readonly className?: string }) {
114
+ return (
115
+ <svg
116
+ className={className}
117
+ viewBox="0 0 16 16"
118
+ fill="none"
119
+ stroke="currentColor"
120
+ strokeWidth="1.5"
121
+ strokeLinecap="round"
122
+ strokeLinejoin="round"
123
+ aria-hidden="true"
124
+ >
125
+ <path d="M10 3 5 8l5 5" />
126
+ </svg>
127
+ );
128
+ }
129
+
130
+ function ArrowRightIcon({ className }: { readonly className?: string }) {
131
+ return (
132
+ <svg
133
+ className={className}
134
+ viewBox="0 0 16 16"
135
+ fill="none"
136
+ stroke="currentColor"
137
+ strokeWidth="1.5"
138
+ strokeLinecap="round"
139
+ strokeLinejoin="round"
140
+ aria-hidden="true"
141
+ >
142
+ <path d="m6 3 5 5-5 5" />
143
+ </svg>
144
+ );
145
+ }
146
+
147
+ function SpinnerIcon() {
148
+ return (
149
+ <svg
150
+ width="14"
151
+ height="14"
152
+ viewBox="0 0 16 16"
153
+ fill="none"
154
+ stroke="currentColor"
155
+ strokeWidth="2"
156
+ strokeLinecap="round"
157
+ className="animate-spin"
158
+ aria-hidden="true"
159
+ >
160
+ <path d="M8 2a6 6 0 1 0 6 6" />
161
+ </svg>
162
+ );
163
+ }
@@ -0,0 +1,124 @@
1
+ "use client";
2
+
3
+ import { cn } from "@stigmer/theme";
4
+ import type { WizardShellProps } from "./types";
5
+ import { StepIndicator } from "./StepIndicator";
6
+ import { WizardNav } from "./WizardNav";
7
+
8
+ /**
9
+ * Reusable multi-step wizard layout for resource creation flows.
10
+ *
11
+ * Renders three zones:
12
+ * 1. **Step indicator sidebar** — vertical progress showing all steps
13
+ * 2. **Content area** — the active step's form content (via `children`)
14
+ * 3. **Navigation footer** — Back / Next / Create buttons
15
+ *
16
+ * This component is resource-agnostic. It accepts step definitions for
17
+ * the indicator, delegates content rendering to the consumer, and
18
+ * emits navigation events. The consumer (e.g., `AgentCreationWizard`)
19
+ * manages form state via `useWizardState` and renders the appropriate
20
+ * step component as `children`.
21
+ *
22
+ * Layout:
23
+ * - **Desktop** (>= 640px): Sidebar (200px) + content (flex-1) side by side
24
+ * - **Mobile** (< 640px): Step indicator as compact top bar, content below
25
+ *
26
+ * All visual properties via `--stgm-*` tokens. Zero Console or
27
+ * framework dependencies — works in any React host.
28
+ *
29
+ * @example
30
+ * ```tsx
31
+ * <WizardShell
32
+ * steps={steps}
33
+ * currentStepIndex={wizard.currentStepIndex}
34
+ * submitLabel="Create agent"
35
+ * isSubmitting={isCreating}
36
+ * canGoNext={wizard.canGoNext}
37
+ * canGoBack={wizard.canGoBack}
38
+ * onNext={wizard.goNext}
39
+ * onBack={wizard.goBack}
40
+ * onCancel={handleCancel}
41
+ * >
42
+ * {renderCurrentStep()}
43
+ * </WizardShell>
44
+ * ```
45
+ */
46
+ export function WizardShell({
47
+ steps,
48
+ currentStepIndex,
49
+ children,
50
+ submitLabel,
51
+ isSubmitting,
52
+ canGoNext = true,
53
+ canGoBack = false,
54
+ onNext,
55
+ onBack,
56
+ onGoToStep,
57
+ onCancel,
58
+ className,
59
+ }: WizardShellProps) {
60
+ const isLastStep = currentStepIndex === steps.length - 1;
61
+ const nextLabel = isLastStep ? submitLabel : "Next";
62
+
63
+ return (
64
+ <div
65
+ className={cn(
66
+ "flex min-h-0 flex-col overflow-hidden rounded-lg border border-border bg-background",
67
+ className,
68
+ )}
69
+ >
70
+ {/* Mobile step indicator (visible < sm) */}
71
+ <div className="flex items-center gap-2 border-b border-border px-4 py-3 sm:hidden">
72
+ <MobileProgress current={currentStepIndex + 1} total={steps.length} />
73
+ <span className="text-sm font-medium text-foreground">
74
+ {steps[currentStepIndex]?.label}
75
+ </span>
76
+ </div>
77
+
78
+ <div className="flex min-h-0 flex-1">
79
+ {/* Step indicator sidebar (visible >= sm) */}
80
+ <aside className="hidden w-52 shrink-0 border-r border-border bg-muted-faint px-3 py-6 sm:block">
81
+ <StepIndicator
82
+ steps={steps}
83
+ currentStepIndex={currentStepIndex}
84
+ onStepClick={onGoToStep}
85
+ />
86
+ </aside>
87
+
88
+ {/* Content area */}
89
+ <main className="flex-1 overflow-y-auto px-6 py-6 sm:px-8">
90
+ {children}
91
+ </main>
92
+ </div>
93
+
94
+ {/* Navigation footer */}
95
+ <WizardNav
96
+ showBack={canGoBack}
97
+ nextLabel={nextLabel}
98
+ nextDisabled={!canGoNext}
99
+ isSubmitting={isSubmitting}
100
+ onBack={onBack}
101
+ onNext={onNext}
102
+ onCancel={onCancel}
103
+ />
104
+ </div>
105
+ );
106
+ }
107
+
108
+ // ---------------------------------------------------------------------------
109
+ // Mobile progress (compact step display)
110
+ // ---------------------------------------------------------------------------
111
+
112
+ function MobileProgress({
113
+ current,
114
+ total,
115
+ }: {
116
+ readonly current: number;
117
+ readonly total: number;
118
+ }) {
119
+ return (
120
+ <span className="inline-flex items-center justify-center rounded-full bg-primary px-2 py-0.5 text-[10px] font-semibold text-primary-foreground">
121
+ {current}/{total}
122
+ </span>
123
+ );
124
+ }
@@ -0,0 +1,45 @@
1
+ // Types
2
+ export type {
3
+ EnvVarEntry,
4
+ KeyValueEntry,
5
+ WizardStepDef,
6
+ WizardState,
7
+ WizardShellProps,
8
+ } from "./types";
9
+
10
+ // Template types and data
11
+ export type { ResourceTemplate, TemplateCategory } from "./templates/types";
12
+ export { TEMPLATE_CATEGORY_LABELS } from "./templates/types";
13
+ export { AGENT_TEMPLATES } from "./templates/agent-templates";
14
+ export { MCP_SERVER_TEMPLATES } from "./templates/mcp-server-templates";
15
+
16
+ // Hooks
17
+ export { useWizardState } from "./useWizardState";
18
+ export type {
19
+ UseWizardStateOptions,
20
+ UseWizardStateReturn,
21
+ } from "./useWizardState";
22
+
23
+ export { useTemplateFilter } from "./useTemplateFilter";
24
+ export type {
25
+ UseTemplateFilterOptions,
26
+ UseTemplateFilterReturn,
27
+ } from "./useTemplateFilter";
28
+
29
+ // Components
30
+ export { WizardShell } from "./WizardShell";
31
+
32
+ export { WizardNav } from "./WizardNav";
33
+ export type { WizardNavProps } from "./WizardNav";
34
+
35
+ export { StepIndicator } from "./StepIndicator";
36
+ export type { StepIndicatorProps } from "./StepIndicator";
37
+
38
+ export { TemplateCard } from "./TemplateCard";
39
+ export type { TemplateCardProps } from "./TemplateCard";
40
+
41
+ export { TemplateGallery } from "./TemplateGallery";
42
+ export type { TemplateGalleryProps } from "./TemplateGallery";
43
+
44
+ export { CreationPicker } from "./CreationPicker";
45
+ export type { CreationPickerProps, CreationPath } from "./CreationPicker";