@stigmer/react 0.4.8 → 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 (631) 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/feedback/StigmerToaster.d.ts +18 -0
  90. package/feedback/StigmerToaster.d.ts.map +1 -0
  91. package/feedback/StigmerToaster.js +31 -0
  92. package/feedback/StigmerToaster.js.map +1 -0
  93. package/feedback/index.d.ts +4 -0
  94. package/feedback/index.d.ts.map +1 -0
  95. package/feedback/index.js +3 -0
  96. package/feedback/index.js.map +1 -0
  97. package/feedback/toast.d.ts +14 -0
  98. package/feedback/toast.d.ts.map +1 -0
  99. package/feedback/toast.js +14 -0
  100. package/feedback/toast.js.map +1 -0
  101. package/feedback/types.d.ts +4 -0
  102. package/feedback/types.d.ts.map +1 -0
  103. package/feedback/types.js +2 -0
  104. package/feedback/types.js.map +1 -0
  105. package/index.d.ts +30 -10
  106. package/index.d.ts.map +1 -1
  107. package/index.js +29 -9
  108. package/index.js.map +1 -1
  109. package/inline-edit/InlineEditImage.d.ts +20 -0
  110. package/inline-edit/InlineEditImage.d.ts.map +1 -0
  111. package/inline-edit/InlineEditImage.js +85 -0
  112. package/inline-edit/InlineEditImage.js.map +1 -0
  113. package/inline-edit/InlineEditKeyValue.d.ts +29 -0
  114. package/inline-edit/InlineEditKeyValue.d.ts.map +1 -0
  115. package/inline-edit/InlineEditKeyValue.js +67 -0
  116. package/inline-edit/InlineEditKeyValue.js.map +1 -0
  117. package/inline-edit/InlineEditResourceList.d.ts +34 -0
  118. package/inline-edit/InlineEditResourceList.d.ts.map +1 -0
  119. package/inline-edit/InlineEditResourceList.js +99 -0
  120. package/inline-edit/InlineEditResourceList.js.map +1 -0
  121. package/inline-edit/InlineEditSelect.d.ts +18 -0
  122. package/inline-edit/InlineEditSelect.d.ts.map +1 -0
  123. package/inline-edit/InlineEditSelect.js +54 -0
  124. package/inline-edit/InlineEditSelect.js.map +1 -0
  125. package/inline-edit/InlineEditText.d.ts +23 -0
  126. package/inline-edit/InlineEditText.d.ts.map +1 -0
  127. package/inline-edit/InlineEditText.js +79 -0
  128. package/inline-edit/InlineEditText.js.map +1 -0
  129. package/inline-edit/InlineEditTextarea.d.ts +22 -0
  130. package/inline-edit/InlineEditTextarea.d.ts.map +1 -0
  131. package/inline-edit/InlineEditTextarea.js +83 -0
  132. package/inline-edit/InlineEditTextarea.js.map +1 -0
  133. package/inline-edit/index.d.ts +16 -0
  134. package/inline-edit/index.d.ts.map +1 -0
  135. package/inline-edit/index.js +8 -0
  136. package/inline-edit/index.js.map +1 -0
  137. package/inline-edit/types.d.ts +42 -0
  138. package/inline-edit/types.d.ts.map +1 -0
  139. package/inline-edit/types.js +2 -0
  140. package/inline-edit/types.js.map +1 -0
  141. package/inline-edit/useInlineFieldSave.d.ts +23 -0
  142. package/inline-edit/useInlineFieldSave.d.ts.map +1 -0
  143. package/inline-edit/useInlineFieldSave.js +44 -0
  144. package/inline-edit/useInlineFieldSave.js.map +1 -0
  145. package/internal/Tabs.d.ts +4 -38
  146. package/internal/Tabs.d.ts.map +1 -1
  147. package/internal/Tabs.js +3 -62
  148. package/internal/Tabs.js.map +1 -1
  149. package/library/ImportResourceDialog.d.ts +43 -0
  150. package/library/ImportResourceDialog.d.ts.map +1 -0
  151. package/library/ImportResourceDialog.js +90 -0
  152. package/library/ImportResourceDialog.js.map +1 -0
  153. package/library/index.d.ts +7 -4
  154. package/library/index.d.ts.map +1 -1
  155. package/library/index.js +4 -2
  156. package/library/index.js.map +1 -1
  157. package/library/serialize-resource-yaml.d.ts +53 -0
  158. package/library/serialize-resource-yaml.d.ts.map +1 -1
  159. package/library/serialize-resource-yaml.js +275 -0
  160. package/library/serialize-resource-yaml.js.map +1 -1
  161. package/library/useExportResource.d.ts +56 -0
  162. package/library/useExportResource.d.ts.map +1 -0
  163. package/library/useExportResource.js +137 -0
  164. package/library/useExportResource.js.map +1 -0
  165. package/library/useImportResource.d.ts +84 -0
  166. package/library/useImportResource.d.ts.map +1 -0
  167. package/library/useImportResource.js +188 -0
  168. package/library/useImportResource.js.map +1 -0
  169. package/mcp-server/McpServerCreationWizard.d.ts +55 -0
  170. package/mcp-server/McpServerCreationWizard.d.ts.map +1 -0
  171. package/mcp-server/McpServerCreationWizard.js +121 -0
  172. package/mcp-server/McpServerCreationWizard.js.map +1 -0
  173. package/mcp-server/McpServerDetailView.d.ts +21 -1
  174. package/mcp-server/McpServerDetailView.d.ts.map +1 -1
  175. package/mcp-server/McpServerDetailView.js +113 -20
  176. package/mcp-server/McpServerDetailView.js.map +1 -1
  177. package/mcp-server/index.d.ts +8 -0
  178. package/mcp-server/index.d.ts.map +1 -1
  179. package/mcp-server/index.js +4 -0
  180. package/mcp-server/index.js.map +1 -1
  181. package/mcp-server/internal/mcpServerToInput.d.ts +12 -0
  182. package/mcp-server/internal/mcpServerToInput.d.ts.map +1 -0
  183. package/mcp-server/internal/mcpServerToInput.js +81 -0
  184. package/mcp-server/internal/mcpServerToInput.js.map +1 -0
  185. package/mcp-server/steps/EnvironmentAuthStep.d.ts +15 -0
  186. package/mcp-server/steps/EnvironmentAuthStep.d.ts.map +1 -0
  187. package/mcp-server/steps/EnvironmentAuthStep.js +55 -0
  188. package/mcp-server/steps/EnvironmentAuthStep.js.map +1 -0
  189. package/mcp-server/steps/IdentityTransportStep.d.ts +19 -0
  190. package/mcp-server/steps/IdentityTransportStep.d.ts.map +1 -0
  191. package/mcp-server/steps/IdentityTransportStep.js +73 -0
  192. package/mcp-server/steps/IdentityTransportStep.js.map +1 -0
  193. package/mcp-server/steps/ReviewStep.d.ts +23 -0
  194. package/mcp-server/steps/ReviewStep.d.ts.map +1 -0
  195. package/mcp-server/steps/ReviewStep.js +137 -0
  196. package/mcp-server/steps/ReviewStep.js.map +1 -0
  197. package/mcp-server/steps/types.d.ts +56 -0
  198. package/mcp-server/steps/types.d.ts.map +1 -0
  199. package/mcp-server/steps/types.js +27 -0
  200. package/mcp-server/steps/types.js.map +1 -0
  201. package/mcp-server/useCreateMcpServer.d.ts +45 -0
  202. package/mcp-server/useCreateMcpServer.d.ts.map +1 -0
  203. package/mcp-server/useCreateMcpServer.js +50 -0
  204. package/mcp-server/useCreateMcpServer.js.map +1 -0
  205. package/mcp-server/useUpdateMcpServer.d.ts +24 -0
  206. package/mcp-server/useUpdateMcpServer.d.ts.map +1 -0
  207. package/mcp-server/useUpdateMcpServer.js +35 -0
  208. package/mcp-server/useUpdateMcpServer.js.map +1 -0
  209. package/package.json +8 -4
  210. package/resource-creation/CreationPicker.d.ts +60 -0
  211. package/resource-creation/CreationPicker.d.ts.map +1 -0
  212. package/resource-creation/CreationPicker.js +74 -0
  213. package/resource-creation/CreationPicker.js.map +1 -0
  214. package/resource-creation/StepIndicator.d.ts +28 -0
  215. package/resource-creation/StepIndicator.d.ts.map +1 -0
  216. package/resource-creation/StepIndicator.js +40 -0
  217. package/resource-creation/StepIndicator.js.map +1 -0
  218. package/resource-creation/TemplateCard.d.ts +24 -0
  219. package/resource-creation/TemplateCard.d.ts.map +1 -0
  220. package/resource-creation/TemplateCard.js +68 -0
  221. package/resource-creation/TemplateCard.js.map +1 -0
  222. package/resource-creation/TemplateGallery.d.ts +43 -0
  223. package/resource-creation/TemplateGallery.d.ts.map +1 -0
  224. package/resource-creation/TemplateGallery.js +78 -0
  225. package/resource-creation/TemplateGallery.js.map +1 -0
  226. package/resource-creation/WizardNav.d.ts +31 -0
  227. package/resource-creation/WizardNav.d.ts.map +1 -0
  228. package/resource-creation/WizardNav.js +29 -0
  229. package/resource-creation/WizardNav.js.map +1 -0
  230. package/resource-creation/WizardShell.d.ts +41 -0
  231. package/resource-creation/WizardShell.d.ts.map +1 -0
  232. package/resource-creation/WizardShell.js +55 -0
  233. package/resource-creation/WizardShell.js.map +1 -0
  234. package/resource-creation/index.d.ts +21 -0
  235. package/resource-creation/index.d.ts.map +1 -0
  236. package/resource-creation/index.js +14 -0
  237. package/resource-creation/index.js.map +1 -0
  238. package/resource-creation/templates/agent-templates.d.ts +15 -0
  239. package/resource-creation/templates/agent-templates.d.ts.map +1 -0
  240. package/resource-creation/templates/agent-templates.js +148 -0
  241. package/resource-creation/templates/agent-templates.js.map +1 -0
  242. package/resource-creation/templates/index.d.ts +5 -0
  243. package/resource-creation/templates/index.d.ts.map +1 -0
  244. package/resource-creation/templates/index.js +5 -0
  245. package/resource-creation/templates/index.js.map +1 -0
  246. package/resource-creation/templates/mcp-server-templates.d.ts +15 -0
  247. package/resource-creation/templates/mcp-server-templates.d.ts.map +1 -0
  248. package/resource-creation/templates/mcp-server-templates.js +92 -0
  249. package/resource-creation/templates/mcp-server-templates.js.map +1 -0
  250. package/resource-creation/templates/types.d.ts +48 -0
  251. package/resource-creation/templates/types.d.ts.map +1 -0
  252. package/resource-creation/templates/types.js +16 -0
  253. package/resource-creation/templates/types.js.map +1 -0
  254. package/resource-creation/types.d.ts +88 -0
  255. package/resource-creation/types.d.ts.map +1 -0
  256. package/resource-creation/types.js +2 -0
  257. package/resource-creation/types.js.map +1 -0
  258. package/resource-creation/useTemplateFilter.d.ts +43 -0
  259. package/resource-creation/useTemplateFilter.d.ts.map +1 -0
  260. package/resource-creation/useTemplateFilter.js +73 -0
  261. package/resource-creation/useTemplateFilter.js.map +1 -0
  262. package/resource-creation/useWizardState.d.ts +67 -0
  263. package/resource-creation/useWizardState.d.ts.map +1 -0
  264. package/resource-creation/useWizardState.js +143 -0
  265. package/resource-creation/useWizardState.js.map +1 -0
  266. package/resource-detail/ConfirmDialog.d.ts +44 -0
  267. package/resource-detail/ConfirmDialog.d.ts.map +1 -0
  268. package/resource-detail/ConfirmDialog.js +62 -0
  269. package/resource-detail/ConfirmDialog.js.map +1 -0
  270. package/resource-detail/ResourceActionBar.d.ts +42 -0
  271. package/resource-detail/ResourceActionBar.d.ts.map +1 -0
  272. package/resource-detail/ResourceActionBar.js +64 -0
  273. package/resource-detail/ResourceActionBar.js.map +1 -0
  274. package/resource-detail/ResourceDetailShell.d.ts +36 -0
  275. package/resource-detail/ResourceDetailShell.d.ts.map +1 -0
  276. package/resource-detail/ResourceDetailShell.js +65 -0
  277. package/resource-detail/ResourceDetailShell.js.map +1 -0
  278. package/resource-detail/Section.d.ts +18 -0
  279. package/resource-detail/Section.d.ts.map +1 -0
  280. package/resource-detail/Section.js +18 -0
  281. package/resource-detail/Section.js.map +1 -0
  282. package/resource-detail/index.d.ts +15 -0
  283. package/resource-detail/index.d.ts.map +1 -0
  284. package/resource-detail/index.js +10 -0
  285. package/resource-detail/index.js.map +1 -0
  286. package/resource-detail/types.d.ts +146 -0
  287. package/resource-detail/types.d.ts.map +1 -0
  288. package/resource-detail/types.js +2 -0
  289. package/resource-detail/types.js.map +1 -0
  290. package/resource-detail/useConfirmAction.d.ts +41 -0
  291. package/resource-detail/useConfirmAction.d.ts.map +1 -0
  292. package/resource-detail/useConfirmAction.js +30 -0
  293. package/resource-detail/useConfirmAction.js.map +1 -0
  294. package/resource-detail/useCopyResource.d.ts +28 -0
  295. package/resource-detail/useCopyResource.d.ts.map +1 -0
  296. package/resource-detail/useCopyResource.js +46 -0
  297. package/resource-detail/useCopyResource.js.map +1 -0
  298. package/resource-detail/useDeleteResource.d.ts +40 -0
  299. package/resource-detail/useDeleteResource.d.ts.map +1 -0
  300. package/resource-detail/useDeleteResource.js +83 -0
  301. package/resource-detail/useDeleteResource.js.map +1 -0
  302. package/resource-detail/useDetailTabs.d.ts +46 -0
  303. package/resource-detail/useDetailTabs.d.ts.map +1 -0
  304. package/resource-detail/useDetailTabs.js +47 -0
  305. package/resource-detail/useDetailTabs.js.map +1 -0
  306. package/resource-workbench/components/BulkActionBar.d.ts +36 -0
  307. package/resource-workbench/components/BulkActionBar.d.ts.map +1 -0
  308. package/resource-workbench/components/BulkActionBar.js +35 -0
  309. package/resource-workbench/components/BulkActionBar.js.map +1 -0
  310. package/resource-workbench/components/ColumnHeader.d.ts +23 -0
  311. package/resource-workbench/components/ColumnHeader.d.ts.map +1 -0
  312. package/resource-workbench/components/ColumnHeader.js +25 -0
  313. package/resource-workbench/components/ColumnHeader.js.map +1 -0
  314. package/resource-workbench/components/FilterBar.d.ts +33 -0
  315. package/resource-workbench/components/FilterBar.d.ts.map +1 -0
  316. package/resource-workbench/components/FilterBar.js +72 -0
  317. package/resource-workbench/components/FilterBar.js.map +1 -0
  318. package/resource-workbench/components/ResourceAvatar.d.ts +29 -0
  319. package/resource-workbench/components/ResourceAvatar.d.ts.map +1 -0
  320. package/resource-workbench/components/ResourceAvatar.js +51 -0
  321. package/resource-workbench/components/ResourceAvatar.js.map +1 -0
  322. package/resource-workbench/components/ResourceCards.d.ts +39 -0
  323. package/resource-workbench/components/ResourceCards.d.ts.map +1 -0
  324. package/resource-workbench/components/ResourceCards.js +41 -0
  325. package/resource-workbench/components/ResourceCards.js.map +1 -0
  326. package/resource-workbench/components/ResourceInspector.d.ts +26 -0
  327. package/resource-workbench/components/ResourceInspector.d.ts.map +1 -0
  328. package/resource-workbench/components/ResourceInspector.js +22 -0
  329. package/resource-workbench/components/ResourceInspector.js.map +1 -0
  330. package/resource-workbench/components/ResourceList.d.ts +39 -0
  331. package/resource-workbench/components/ResourceList.d.ts.map +1 -0
  332. package/resource-workbench/components/ResourceList.js +41 -0
  333. package/resource-workbench/components/ResourceList.js.map +1 -0
  334. package/resource-workbench/components/ResourceTable.d.ts +47 -0
  335. package/resource-workbench/components/ResourceTable.d.ts.map +1 -0
  336. package/resource-workbench/components/ResourceTable.js +78 -0
  337. package/resource-workbench/components/ResourceTable.js.map +1 -0
  338. package/resource-workbench/components/ResourceWorkbench.d.ts +131 -0
  339. package/resource-workbench/components/ResourceWorkbench.d.ts.map +1 -0
  340. package/resource-workbench/components/ResourceWorkbench.js +170 -0
  341. package/resource-workbench/components/ResourceWorkbench.js.map +1 -0
  342. package/resource-workbench/components/SelectionCheckbox.d.ts +24 -0
  343. package/resource-workbench/components/SelectionCheckbox.d.ts.map +1 -0
  344. package/resource-workbench/components/SelectionCheckbox.js +16 -0
  345. package/resource-workbench/components/SelectionCheckbox.js.map +1 -0
  346. package/resource-workbench/components/StatusBadge.d.ts +31 -0
  347. package/resource-workbench/components/StatusBadge.d.ts.map +1 -0
  348. package/resource-workbench/components/StatusBadge.js +75 -0
  349. package/resource-workbench/components/StatusBadge.js.map +1 -0
  350. package/resource-workbench/components/ViewSwitcher.d.ts +21 -0
  351. package/resource-workbench/components/ViewSwitcher.d.ts.map +1 -0
  352. package/resource-workbench/components/ViewSwitcher.js +37 -0
  353. package/resource-workbench/components/ViewSwitcher.js.map +1 -0
  354. package/resource-workbench/hooks/useResourceCollection.d.ts +93 -0
  355. package/resource-workbench/hooks/useResourceCollection.d.ts.map +1 -0
  356. package/resource-workbench/hooks/useResourceCollection.js +133 -0
  357. package/resource-workbench/hooks/useResourceCollection.js.map +1 -0
  358. package/resource-workbench/hooks/useResourceFilters.d.ts +73 -0
  359. package/resource-workbench/hooks/useResourceFilters.d.ts.map +1 -0
  360. package/resource-workbench/hooks/useResourceFilters.js +105 -0
  361. package/resource-workbench/hooks/useResourceFilters.js.map +1 -0
  362. package/resource-workbench/hooks/useResourceSelection.d.ts +44 -0
  363. package/resource-workbench/hooks/useResourceSelection.d.ts.map +1 -0
  364. package/resource-workbench/hooks/useResourceSelection.js +123 -0
  365. package/resource-workbench/hooks/useResourceSelection.js.map +1 -0
  366. package/resource-workbench/hooks/useViewPreference.d.ts +32 -0
  367. package/resource-workbench/hooks/useViewPreference.d.ts.map +1 -0
  368. package/resource-workbench/hooks/useViewPreference.js +60 -0
  369. package/resource-workbench/hooks/useViewPreference.js.map +1 -0
  370. package/resource-workbench/index.d.ts +34 -0
  371. package/resource-workbench/index.d.ts.map +1 -0
  372. package/resource-workbench/index.js +19 -0
  373. package/resource-workbench/index.js.map +1 -0
  374. package/resource-workbench/types.d.ts +165 -0
  375. package/resource-workbench/types.d.ts.map +1 -0
  376. package/resource-workbench/types.js +2 -0
  377. package/resource-workbench/types.js.map +1 -0
  378. package/runner/RunnerDetailView.d.ts +44 -0
  379. package/runner/RunnerDetailView.d.ts.map +1 -0
  380. package/runner/RunnerDetailView.js +154 -0
  381. package/runner/RunnerDetailView.js.map +1 -0
  382. package/runner/RunnerListPanel.d.ts +26 -1
  383. package/runner/RunnerListPanel.d.ts.map +1 -1
  384. package/runner/RunnerListPanel.js +68 -46
  385. package/runner/RunnerListPanel.js.map +1 -1
  386. package/runner/index.d.ts +7 -1
  387. package/runner/index.d.ts.map +1 -1
  388. package/runner/index.js +3 -0
  389. package/runner/index.js.map +1 -1
  390. package/runner/shared.d.ts +31 -0
  391. package/runner/shared.d.ts.map +1 -0
  392. package/runner/shared.js +55 -0
  393. package/runner/shared.js.map +1 -0
  394. package/runner/useRunner.d.ts +37 -0
  395. package/runner/useRunner.d.ts.map +1 -0
  396. package/runner/useRunner.js +24 -0
  397. package/runner/useRunner.js.map +1 -0
  398. package/session/__tests__/group-sessions.test.js +3 -3
  399. package/session/__tests__/group-sessions.test.js.map +1 -1
  400. package/skill/SkillDetailView.d.ts +70 -7
  401. package/skill/SkillDetailView.d.ts.map +1 -1
  402. package/skill/SkillDetailView.js +107 -39
  403. package/skill/SkillDetailView.js.map +1 -1
  404. package/skill/SkillDiffDialog.d.ts +42 -0
  405. package/skill/SkillDiffDialog.d.ts.map +1 -0
  406. package/skill/SkillDiffDialog.js +72 -0
  407. package/skill/SkillDiffDialog.js.map +1 -0
  408. package/skill/SkillFileBrowser.d.ts +31 -0
  409. package/skill/SkillFileBrowser.d.ts.map +1 -0
  410. package/skill/SkillFileBrowser.js +105 -0
  411. package/skill/SkillFileBrowser.js.map +1 -0
  412. package/skill/SkillUploader.d.ts +39 -0
  413. package/skill/SkillUploader.d.ts.map +1 -0
  414. package/skill/SkillUploader.js +141 -0
  415. package/skill/SkillUploader.js.map +1 -0
  416. package/skill/index.d.ts +18 -0
  417. package/skill/index.d.ts.map +1 -1
  418. package/skill/index.js +9 -0
  419. package/skill/index.js.map +1 -1
  420. package/skill/internal/computeArtifactHash.d.ts +9 -0
  421. package/skill/internal/computeArtifactHash.d.ts.map +1 -0
  422. package/skill/internal/computeArtifactHash.js +14 -0
  423. package/skill/internal/computeArtifactHash.js.map +1 -0
  424. package/skill/internal/fetchAndUnpackArtifact.d.ts +16 -0
  425. package/skill/internal/fetchAndUnpackArtifact.d.ts.map +1 -0
  426. package/skill/internal/fetchAndUnpackArtifact.js +34 -0
  427. package/skill/internal/fetchAndUnpackArtifact.js.map +1 -0
  428. package/skill/usePushSkill.d.ts +53 -0
  429. package/skill/usePushSkill.d.ts.map +1 -0
  430. package/skill/usePushSkill.js +57 -0
  431. package/skill/usePushSkill.js.map +1 -0
  432. package/skill/useSkillArtifact.d.ts +37 -0
  433. package/skill/useSkillArtifact.d.ts.map +1 -0
  434. package/skill/useSkillArtifact.js +76 -0
  435. package/skill/useSkillArtifact.js.map +1 -0
  436. package/skill/useSkillDiff.d.ts +31 -0
  437. package/skill/useSkillDiff.d.ts.map +1 -0
  438. package/skill/useSkillDiff.js +97 -0
  439. package/skill/useSkillDiff.js.map +1 -0
  440. package/skill/useSkillDuplicateCheck.d.ts +34 -0
  441. package/skill/useSkillDuplicateCheck.d.ts.map +1 -0
  442. package/skill/useSkillDuplicateCheck.js +58 -0
  443. package/skill/useSkillDuplicateCheck.js.map +1 -0
  444. package/skill/useSkillUpload.d.ts +69 -0
  445. package/skill/useSkillUpload.d.ts.map +1 -0
  446. package/skill/useSkillUpload.js +157 -0
  447. package/skill/useSkillUpload.js.map +1 -0
  448. package/skill/useSkillVersions.d.ts +46 -0
  449. package/skill/useSkillVersions.d.ts.map +1 -0
  450. package/skill/useSkillVersions.js +104 -0
  451. package/skill/useSkillVersions.js.map +1 -0
  452. package/src/action-menu/ActionMenu.tsx +151 -0
  453. package/src/action-menu/index.ts +9 -0
  454. package/src/action-menu/types.ts +70 -0
  455. package/src/agent/AgentCreationWizard.tsx +201 -0
  456. package/src/agent/AgentDetailView.tsx +817 -321
  457. package/src/agent/index.ts +16 -0
  458. package/src/agent/internal/agentToInput.ts +95 -0
  459. package/src/agent/steps/CapabilitiesStep.tsx +363 -0
  460. package/src/agent/steps/IdentityStep.tsx +259 -0
  461. package/src/agent/steps/ReviewStep.tsx +211 -0
  462. package/src/agent/steps/types.ts +53 -0
  463. package/src/agent/useCreateAgent.ts +76 -0
  464. package/src/agent/useUpdateAgent.ts +55 -0
  465. package/src/dependency-graph/DependencyGraph.tsx +153 -0
  466. package/src/dependency-graph/DependencyTreeNode.tsx +282 -0
  467. package/src/dependency-graph/index.ts +15 -0
  468. package/src/dependency-graph/types.ts +131 -0
  469. package/src/dependency-graph/useDependencyGraph.ts +158 -0
  470. package/src/empty-state/EmptyState.tsx +90 -0
  471. package/src/empty-state/index.ts +9 -0
  472. package/src/empty-state/types.ts +81 -0
  473. package/src/empty-state/useEmptyState.ts +85 -0
  474. package/src/feedback/StigmerToaster.tsx +45 -0
  475. package/src/feedback/index.ts +3 -0
  476. package/src/feedback/toast.ts +13 -0
  477. package/src/feedback/types.ts +7 -0
  478. package/src/index.ts +270 -8
  479. package/src/inline-edit/InlineEditImage.tsx +208 -0
  480. package/src/inline-edit/InlineEditKeyValue.tsx +278 -0
  481. package/src/inline-edit/InlineEditResourceList.tsx +325 -0
  482. package/src/inline-edit/InlineEditSelect.tsx +150 -0
  483. package/src/inline-edit/InlineEditText.tsx +211 -0
  484. package/src/inline-edit/InlineEditTextarea.tsx +209 -0
  485. package/src/inline-edit/index.ts +28 -0
  486. package/src/inline-edit/types.ts +47 -0
  487. package/src/inline-edit/useInlineFieldSave.ts +62 -0
  488. package/src/internal/Tabs.tsx +4 -164
  489. package/src/library/ImportResourceDialog.tsx +227 -0
  490. package/src/library/index.ts +18 -8
  491. package/src/library/serialize-resource-yaml.ts +356 -0
  492. package/src/library/useExportResource.ts +183 -0
  493. package/src/library/useImportResource.ts +253 -0
  494. package/src/mcp-server/McpServerCreationWizard.tsx +206 -0
  495. package/src/mcp-server/McpServerDetailView.tsx +392 -105
  496. package/src/mcp-server/index.ts +16 -0
  497. package/src/mcp-server/internal/mcpServerToInput.ts +95 -0
  498. package/src/mcp-server/steps/EnvironmentAuthStep.tsx +462 -0
  499. package/src/mcp-server/steps/IdentityTransportStep.tsx +531 -0
  500. package/src/mcp-server/steps/ReviewStep.tsx +297 -0
  501. package/src/mcp-server/steps/types.ts +85 -0
  502. package/src/mcp-server/useCreateMcpServer.ts +76 -0
  503. package/src/mcp-server/useUpdateMcpServer.ts +55 -0
  504. package/src/resource-creation/CreationPicker.tsx +292 -0
  505. package/src/resource-creation/StepIndicator.tsx +156 -0
  506. package/src/resource-creation/TemplateCard.tsx +143 -0
  507. package/src/resource-creation/TemplateGallery.tsx +222 -0
  508. package/src/resource-creation/WizardNav.tsx +163 -0
  509. package/src/resource-creation/WizardShell.tsx +124 -0
  510. package/src/resource-creation/index.ts +45 -0
  511. package/src/resource-creation/templates/agent-templates.ts +160 -0
  512. package/src/resource-creation/templates/index.ts +7 -0
  513. package/src/resource-creation/templates/mcp-server-templates.ts +106 -0
  514. package/src/resource-creation/templates/types.ts +64 -0
  515. package/src/resource-creation/types.ts +105 -0
  516. package/src/resource-creation/useTemplateFilter.ts +117 -0
  517. package/src/resource-creation/useWizardState.ts +223 -0
  518. package/src/resource-detail/ConfirmDialog.tsx +127 -0
  519. package/src/resource-detail/ResourceActionBar.tsx +157 -0
  520. package/src/resource-detail/ResourceDetailShell.tsx +184 -0
  521. package/src/resource-detail/Section.tsx +78 -0
  522. package/src/resource-detail/index.ts +34 -0
  523. package/src/resource-detail/types.ts +177 -0
  524. package/src/resource-detail/useConfirmAction.ts +70 -0
  525. package/src/resource-detail/useCopyResource.ts +74 -0
  526. package/src/resource-detail/useDeleteResource.ts +110 -0
  527. package/src/resource-detail/useDetailTabs.ts +93 -0
  528. package/src/resource-workbench/components/BulkActionBar.tsx +122 -0
  529. package/src/resource-workbench/components/ColumnHeader.tsx +105 -0
  530. package/src/resource-workbench/components/FilterBar.tsx +173 -0
  531. package/src/resource-workbench/components/ResourceAvatar.tsx +109 -0
  532. package/src/resource-workbench/components/ResourceCards.tsx +126 -0
  533. package/src/resource-workbench/components/ResourceInspector.tsx +88 -0
  534. package/src/resource-workbench/components/ResourceList.tsx +121 -0
  535. package/src/resource-workbench/components/ResourceTable.tsx +222 -0
  536. package/src/resource-workbench/components/ResourceWorkbench.tsx +695 -0
  537. package/src/resource-workbench/components/SelectionCheckbox.tsx +52 -0
  538. package/src/resource-workbench/components/StatusBadge.tsx +119 -0
  539. package/src/resource-workbench/components/ViewSwitcher.tsx +135 -0
  540. package/src/resource-workbench/hooks/useResourceCollection.ts +261 -0
  541. package/src/resource-workbench/hooks/useResourceFilters.ts +216 -0
  542. package/src/resource-workbench/hooks/useResourceSelection.ts +178 -0
  543. package/src/resource-workbench/hooks/useViewPreference.ts +75 -0
  544. package/src/resource-workbench/index.ts +73 -0
  545. package/src/resource-workbench/types.ts +220 -0
  546. package/src/runner/RunnerDetailView.tsx +410 -0
  547. package/src/runner/RunnerListPanel.tsx +126 -111
  548. package/src/runner/index.ts +13 -1
  549. package/src/runner/shared.tsx +124 -0
  550. package/src/runner/useRunner.ts +59 -0
  551. package/src/session/__tests__/group-sessions.test.ts +5 -3
  552. package/src/skill/SkillDetailView.tsx +371 -165
  553. package/src/skill/SkillDiffDialog.tsx +213 -0
  554. package/src/skill/SkillFileBrowser.tsx +289 -0
  555. package/src/skill/SkillUploader.tsx +481 -0
  556. package/src/skill/index.ts +34 -0
  557. package/src/skill/internal/computeArtifactHash.ts +13 -0
  558. package/src/skill/internal/fetchAndUnpackArtifact.ts +48 -0
  559. package/src/skill/usePushSkill.ts +101 -0
  560. package/src/skill/useSkillArtifact.ts +107 -0
  561. package/src/skill/useSkillDiff.ts +128 -0
  562. package/src/skill/useSkillDuplicateCheck.ts +92 -0
  563. package/src/skill/useSkillUpload.ts +231 -0
  564. package/src/skill/useSkillVersions.ts +165 -0
  565. package/src/styles.css +28 -0
  566. package/src/tabs/Tabs.tsx +184 -0
  567. package/src/tabs/index.ts +2 -0
  568. package/src/version-history/DiffFileList.tsx +111 -0
  569. package/src/version-history/DiffSummary.tsx +61 -0
  570. package/src/version-history/DiffViewer.tsx +163 -0
  571. package/src/version-history/MultiFileDiffView.tsx +114 -0
  572. package/src/version-history/VersionTimeline.tsx +232 -0
  573. package/src/version-history/VersionTimelineEntry.tsx +254 -0
  574. package/src/version-history/computeDiff.ts +61 -0
  575. package/src/version-history/computeMultiFileDiff.ts +97 -0
  576. package/src/version-history/index.ts +22 -0
  577. package/src/version-history/types.ts +129 -0
  578. package/styles.css +1 -1
  579. package/tabs/Tabs.d.ts +58 -0
  580. package/tabs/Tabs.d.ts.map +1 -0
  581. package/tabs/Tabs.js +80 -0
  582. package/tabs/Tabs.js.map +1 -0
  583. package/tabs/index.d.ts +3 -0
  584. package/tabs/index.d.ts.map +1 -0
  585. package/tabs/index.js +2 -0
  586. package/tabs/index.js.map +1 -0
  587. package/version-history/DiffFileList.d.ts +22 -0
  588. package/version-history/DiffFileList.d.ts.map +1 -0
  589. package/version-history/DiffFileList.js +37 -0
  590. package/version-history/DiffFileList.js.map +1 -0
  591. package/version-history/DiffSummary.d.ts +21 -0
  592. package/version-history/DiffSummary.d.ts.map +1 -0
  593. package/version-history/DiffSummary.js +16 -0
  594. package/version-history/DiffSummary.js.map +1 -0
  595. package/version-history/DiffViewer.d.ts +31 -0
  596. package/version-history/DiffViewer.d.ts.map +1 -0
  597. package/version-history/DiffViewer.js +60 -0
  598. package/version-history/DiffViewer.js.map +1 -0
  599. package/version-history/MultiFileDiffView.d.ts +30 -0
  600. package/version-history/MultiFileDiffView.d.ts.map +1 -0
  601. package/version-history/MultiFileDiffView.js +40 -0
  602. package/version-history/MultiFileDiffView.js.map +1 -0
  603. package/version-history/VersionTimeline.d.ts +29 -0
  604. package/version-history/VersionTimeline.d.ts.map +1 -0
  605. package/version-history/VersionTimeline.js +87 -0
  606. package/version-history/VersionTimeline.js.map +1 -0
  607. package/version-history/VersionTimelineEntry.d.ts +22 -0
  608. package/version-history/VersionTimelineEntry.d.ts.map +1 -0
  609. package/version-history/VersionTimelineEntry.js +98 -0
  610. package/version-history/VersionTimelineEntry.js.map +1 -0
  611. package/version-history/computeDiff.d.ts +16 -0
  612. package/version-history/computeDiff.d.ts.map +1 -0
  613. package/version-history/computeDiff.js +54 -0
  614. package/version-history/computeDiff.js.map +1 -0
  615. package/version-history/computeMultiFileDiff.d.ts +15 -0
  616. package/version-history/computeMultiFileDiff.d.ts.map +1 -0
  617. package/version-history/computeMultiFileDiff.js +83 -0
  618. package/version-history/computeMultiFileDiff.js.map +1 -0
  619. package/version-history/index.d.ts +14 -0
  620. package/version-history/index.d.ts.map +1 -0
  621. package/version-history/index.js +9 -0
  622. package/version-history/index.js.map +1 -0
  623. package/version-history/types.d.ts +106 -0
  624. package/version-history/types.d.ts.map +1 -0
  625. package/version-history/types.js +2 -0
  626. package/version-history/types.js.map +1 -0
  627. package/library/ResourceListView.d.ts +0 -174
  628. package/library/ResourceListView.d.ts.map +0 -1
  629. package/library/ResourceListView.js +0 -318
  630. package/library/ResourceListView.js.map +0 -1
  631. package/src/library/ResourceListView.tsx +0 -956
@@ -0,0 +1,153 @@
1
+ "use client";
2
+
3
+ import { useCallback, useRef, type KeyboardEvent } from "react";
4
+ import { cn } from "@stigmer/theme";
5
+ import type { DependencyGraphProps } from "./types";
6
+ import { DependencyTreeNode } from "./DependencyTreeNode";
7
+
8
+ /**
9
+ * Accessible CSS-based tree visualization of an agent's dependencies.
10
+ *
11
+ * Renders `MCP Servers`, `Skills`, and `Sub-Agents` (with recursive
12
+ * sub-agent children) as a nested tree with visual connector lines.
13
+ * The root node represents the agent itself.
14
+ *
15
+ * Implements the WAI-ARIA TreeView pattern:
16
+ * - `role="tree"` on the root list
17
+ * - `role="treeitem"` on each node (via {@link DependencyTreeNode})
18
+ * - Arrow-key navigation between visible nodes (roving tabindex)
19
+ * - `Home`/`End` to jump to first/last visible node
20
+ *
21
+ * All visual properties flow through `--stgm-*` design tokens.
22
+ * Zero Console dependencies — safe for platform builder embedding.
23
+ *
24
+ * @example
25
+ * ```tsx
26
+ * const { tree } = useDependencyGraph({
27
+ * agentName: "pr-review-agent",
28
+ * agentOrg: "acme",
29
+ * spec: agent.spec,
30
+ * });
31
+ *
32
+ * {tree && (
33
+ * <DependencyGraph
34
+ * tree={tree}
35
+ * onNodeClick={(node) => {
36
+ * if (node.kind === "mcp-server") navigateTo(`/mcp-servers/${node.ref!.slug}`);
37
+ * }}
38
+ * />
39
+ * )}
40
+ * ```
41
+ */
42
+ export function DependencyGraph({
43
+ tree,
44
+ onNodeClick,
45
+ defaultExpanded = true,
46
+ className,
47
+ }: DependencyGraphProps) {
48
+ const treeRef = useRef<HTMLUListElement>(null);
49
+
50
+ const handleKeyDown = useCallback(
51
+ (e: KeyboardEvent<HTMLUListElement>) => {
52
+ const container = treeRef.current;
53
+ if (!container) return;
54
+
55
+ const items = Array.from(
56
+ container.querySelectorAll<HTMLElement>(
57
+ "[role='treeitem'] > button, [role='treeitem'] > div",
58
+ ),
59
+ ).filter((el) => {
60
+ let parent = el.closest("[role='treeitem']")?.parentElement?.closest("[role='treeitem']");
61
+ while (parent) {
62
+ if (parent.getAttribute("aria-expanded") === "false") return false;
63
+ parent = parent.parentElement?.closest("[role='treeitem']");
64
+ }
65
+ return true;
66
+ });
67
+
68
+ if (items.length === 0) return;
69
+
70
+ const activeEl = document.activeElement as HTMLElement | null;
71
+ const currentIndex = activeEl ? items.indexOf(activeEl) : -1;
72
+
73
+ let nextIndex: number | null = null;
74
+
75
+ switch (e.key) {
76
+ case "ArrowDown":
77
+ nextIndex = currentIndex < items.length - 1 ? currentIndex + 1 : 0;
78
+ break;
79
+ case "ArrowUp":
80
+ nextIndex = currentIndex > 0 ? currentIndex - 1 : items.length - 1;
81
+ break;
82
+ case "Home":
83
+ nextIndex = 0;
84
+ break;
85
+ case "End":
86
+ nextIndex = items.length - 1;
87
+ break;
88
+ default:
89
+ return;
90
+ }
91
+
92
+ e.preventDefault();
93
+ items[nextIndex].focus();
94
+ },
95
+ [],
96
+ );
97
+
98
+ const { root } = tree;
99
+
100
+ return (
101
+ <div className={cn("py-2", className)}>
102
+ <div className="mb-3 flex items-center gap-2 px-2">
103
+ <TreeIcon className="size-4 text-muted-foreground" />
104
+ <h3 className="text-xs font-medium uppercase tracking-wider text-muted-foreground">
105
+ Dependency Tree
106
+ </h3>
107
+ <span className="text-xs text-muted-foreground">
108
+ {tree.nodeCount} {tree.nodeCount === 1 ? "node" : "nodes"}
109
+ </span>
110
+ </div>
111
+
112
+ <ul
113
+ ref={treeRef}
114
+ role="tree"
115
+ aria-label={`Dependencies of ${root.label}`}
116
+ onKeyDown={handleKeyDown}
117
+ className="rounded-lg border border-border p-2"
118
+ >
119
+ <DependencyTreeNode
120
+ node={root}
121
+ depth={0}
122
+ onNodeClick={onNodeClick}
123
+ defaultExpanded={defaultExpanded}
124
+ />
125
+ </ul>
126
+ </div>
127
+ );
128
+ }
129
+
130
+ // ---------------------------------------------------------------------------
131
+ // Header icon
132
+ // ---------------------------------------------------------------------------
133
+
134
+ function TreeIcon({ className }: { readonly className?: string }) {
135
+ return (
136
+ <svg
137
+ className={className}
138
+ viewBox="0 0 16 16"
139
+ fill="none"
140
+ stroke="currentColor"
141
+ strokeWidth="1.5"
142
+ strokeLinecap="round"
143
+ strokeLinejoin="round"
144
+ aria-hidden="true"
145
+ >
146
+ <path d="M8 2v4M8 6 4 10M8 6l4 4" />
147
+ <circle cx="8" cy="2" r="1" fill="currentColor" stroke="none" />
148
+ <circle cx="4" cy="11" r="1.5" />
149
+ <circle cx="8" cy="11" r="1.5" />
150
+ <circle cx="12" cy="11" r="1.5" />
151
+ </svg>
152
+ );
153
+ }
@@ -0,0 +1,282 @@
1
+ "use client";
2
+
3
+ import { useCallback, useState, type KeyboardEvent } from "react";
4
+ import { cn } from "@stigmer/theme";
5
+ import type { DependencyNode, NodeKind } from "./types";
6
+
7
+ interface DependencyTreeNodeProps {
8
+ readonly node: DependencyNode;
9
+ readonly depth: number;
10
+ readonly onNodeClick?: (node: DependencyNode) => void;
11
+ readonly defaultExpanded: boolean;
12
+ }
13
+
14
+ const KIND_LABELS: Record<NodeKind, string> = {
15
+ agent: "Agent",
16
+ "mcp-server": "MCP",
17
+ skill: "Skill",
18
+ "sub-agent": "Sub-Agent",
19
+ };
20
+
21
+ /**
22
+ * Renders a single node in the dependency tree: icon, kind badge,
23
+ * label, metadata, and (for expandable nodes) an expand/collapse
24
+ * chevron with nested children.
25
+ *
26
+ * Leaf nodes (MCP servers, skills) with a `ref` are clickable —
27
+ * firing `onNodeClick` for consumer-wired navigation.
28
+ *
29
+ * Sub-agent nodes are collapsible containers, and the root agent
30
+ * node always renders its children expanded. Both recurse using
31
+ * the same component, keeping the ARIA tree structure correct
32
+ * (`<li role="treeitem">` wrapping a nested `<ul role="group">`).
33
+ */
34
+ export function DependencyTreeNode({
35
+ node,
36
+ depth,
37
+ onNodeClick,
38
+ defaultExpanded,
39
+ }: DependencyTreeNodeProps) {
40
+ const hasChildren = node.children.length > 0;
41
+ const isRoot = node.kind === "agent";
42
+ const isCollapsible = node.kind === "sub-agent" && hasChildren;
43
+ const isAlwaysExpanded = isRoot && hasChildren;
44
+ const [expanded, setExpanded] = useState(defaultExpanded);
45
+ const isNavigable = node.ref != null && onNodeClick != null;
46
+
47
+ const showChildren = isAlwaysExpanded || (isCollapsible && expanded);
48
+
49
+ const handleClick = useCallback(() => {
50
+ if (isCollapsible) {
51
+ setExpanded((v) => !v);
52
+ } else if (isNavigable) {
53
+ onNodeClick(node);
54
+ }
55
+ }, [isCollapsible, isNavigable, onNodeClick, node]);
56
+
57
+ const handleKeyDown = useCallback(
58
+ (e: KeyboardEvent<HTMLElement>) => {
59
+ if (!isCollapsible) return;
60
+
61
+ if (e.key === "ArrowRight" && !expanded) {
62
+ e.preventDefault();
63
+ setExpanded(true);
64
+ } else if (e.key === "ArrowLeft" && expanded) {
65
+ e.preventDefault();
66
+ setExpanded(false);
67
+ }
68
+ },
69
+ [isCollapsible, expanded],
70
+ );
71
+
72
+ const content = (
73
+ <div className="flex min-w-0 items-center gap-2">
74
+ {isCollapsible && (
75
+ <ChevronIcon
76
+ className={cn(
77
+ "size-3.5 shrink-0 text-muted-foreground transition-transform",
78
+ expanded && "rotate-90",
79
+ )}
80
+ />
81
+ )}
82
+ <NodeIcon kind={node.kind} className="size-4 shrink-0 text-muted-foreground" />
83
+ {!isRoot && (
84
+ <span
85
+ className={cn(
86
+ "shrink-0 rounded px-1.5 py-px text-[10px] font-medium leading-tight",
87
+ kindBadgeClasses(node.kind),
88
+ )}
89
+ >
90
+ {KIND_LABELS[node.kind]}
91
+ </span>
92
+ )}
93
+ <span className="min-w-0 truncate text-sm font-medium text-foreground">
94
+ {node.qualifiedLabel ?? node.label}
95
+ </span>
96
+ {node.metadata &&
97
+ Object.entries(node.metadata).map(([key, value]) => (
98
+ <span
99
+ key={key}
100
+ className="shrink-0 text-xs text-muted-foreground"
101
+ >
102
+ {value}
103
+ </span>
104
+ ))}
105
+ </div>
106
+ );
107
+
108
+ const isInteractive = isCollapsible || isNavigable;
109
+
110
+ const isChild = depth > 0;
111
+
112
+ return (
113
+ <li
114
+ role="treeitem"
115
+ aria-expanded={isCollapsible ? expanded : isAlwaysExpanded ? true : undefined}
116
+ className={cn(
117
+ "list-none",
118
+ isChild && "relative before:absolute before:left-[-12px] before:top-[14px] before:h-px before:w-3 before:bg-border before:content-['']",
119
+ )}
120
+ >
121
+ {isInteractive ? (
122
+ <button
123
+ type="button"
124
+ onClick={handleClick}
125
+ onKeyDown={handleKeyDown}
126
+ tabIndex={-1}
127
+ className={cn(
128
+ "flex w-full items-center rounded-md px-2 py-1.5 text-left transition-colors",
129
+ "hover:bg-accent-hover",
130
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",
131
+ )}
132
+ >
133
+ {content}
134
+ </button>
135
+ ) : (
136
+ <div className="flex items-center px-2 py-1.5">
137
+ {content}
138
+ </div>
139
+ )}
140
+
141
+ {node.description && !isRoot && (
142
+ <p
143
+ className={cn(
144
+ "px-2 pb-1 text-xs text-muted-foreground",
145
+ isCollapsible ? "ml-[calc(0.5rem+14px+0.5rem)]" : "ml-2",
146
+ )}
147
+ >
148
+ {node.description}
149
+ </p>
150
+ )}
151
+
152
+ {showChildren && (
153
+ <ul
154
+ role="group"
155
+ className="relative ml-[11px] border-l border-border pl-3"
156
+ >
157
+ {node.children.map((child) => (
158
+ <DependencyTreeNode
159
+ key={child.id}
160
+ node={child}
161
+ depth={depth + 1}
162
+ onNodeClick={onNodeClick}
163
+ defaultExpanded={defaultExpanded}
164
+ />
165
+ ))}
166
+ </ul>
167
+ )}
168
+ </li>
169
+ );
170
+ }
171
+
172
+ // ---------------------------------------------------------------------------
173
+ // Kind badge styling — uses --stgm-* tokens, no hardcoded colors
174
+ // ---------------------------------------------------------------------------
175
+
176
+ function kindBadgeClasses(kind: NodeKind): string {
177
+ switch (kind) {
178
+ case "mcp-server":
179
+ return "bg-[var(--stgm-status-running-subtle)] text-[var(--stgm-status-running)]";
180
+ case "skill":
181
+ return "bg-[var(--stgm-status-pending-subtle)] text-[var(--stgm-status-pending)]";
182
+ case "sub-agent":
183
+ return "bg-[var(--stgm-status-ready-subtle)] text-[var(--stgm-status-ready)]";
184
+ case "agent":
185
+ return "bg-muted text-muted-foreground";
186
+ }
187
+ }
188
+
189
+ // ---------------------------------------------------------------------------
190
+ // Icons — inline SVGs, consistent with AgentDetailView pattern
191
+ // ---------------------------------------------------------------------------
192
+
193
+ function NodeIcon({
194
+ kind,
195
+ className,
196
+ }: {
197
+ readonly kind: NodeKind;
198
+ readonly className?: string;
199
+ }) {
200
+ switch (kind) {
201
+ case "agent":
202
+ case "sub-agent":
203
+ return <AgentIcon className={className} />;
204
+ case "mcp-server":
205
+ return <McpServerIcon className={className} />;
206
+ case "skill":
207
+ return <SkillIcon className={className} />;
208
+ }
209
+ }
210
+
211
+ function AgentIcon({ className }: { readonly className?: string }) {
212
+ return (
213
+ <svg
214
+ className={className}
215
+ viewBox="0 0 16 16"
216
+ fill="none"
217
+ stroke="currentColor"
218
+ strokeWidth="1.5"
219
+ strokeLinecap="round"
220
+ strokeLinejoin="round"
221
+ aria-hidden="true"
222
+ >
223
+ <rect x="3" y="5" width="10" height="8" rx="1.5" />
224
+ <path d="M6 9h.01M10 9h.01" strokeWidth="2" />
225
+ <path d="M8 2v3" />
226
+ </svg>
227
+ );
228
+ }
229
+
230
+ function McpServerIcon({ className }: { readonly className?: string }) {
231
+ return (
232
+ <svg
233
+ className={className}
234
+ viewBox="0 0 16 16"
235
+ fill="none"
236
+ stroke="currentColor"
237
+ strokeWidth="1.5"
238
+ strokeLinecap="round"
239
+ strokeLinejoin="round"
240
+ aria-hidden="true"
241
+ >
242
+ <rect x="2" y="2" width="12" height="5" rx="1" />
243
+ <rect x="2" y="9" width="12" height="5" rx="1" />
244
+ <circle cx="5" cy="4.5" r="0.75" fill="currentColor" stroke="none" />
245
+ <circle cx="5" cy="11.5" r="0.75" fill="currentColor" stroke="none" />
246
+ </svg>
247
+ );
248
+ }
249
+
250
+ function SkillIcon({ className }: { readonly className?: string }) {
251
+ return (
252
+ <svg
253
+ className={className}
254
+ viewBox="0 0 16 16"
255
+ fill="none"
256
+ stroke="currentColor"
257
+ strokeWidth="1.5"
258
+ strokeLinecap="round"
259
+ strokeLinejoin="round"
260
+ aria-hidden="true"
261
+ >
262
+ <path d="M9 1.5 4 9h4l-1 5.5L12 7H8l1-5.5Z" />
263
+ </svg>
264
+ );
265
+ }
266
+
267
+ function ChevronIcon({ className }: { readonly className?: string }) {
268
+ return (
269
+ <svg
270
+ className={className}
271
+ viewBox="0 0 16 16"
272
+ fill="none"
273
+ stroke="currentColor"
274
+ strokeWidth="1.5"
275
+ strokeLinecap="round"
276
+ strokeLinejoin="round"
277
+ aria-hidden="true"
278
+ >
279
+ <path d="m6 3 5 5-5 5" />
280
+ </svg>
281
+ );
282
+ }
@@ -0,0 +1,15 @@
1
+ // Types
2
+ export type {
3
+ NodeKind,
4
+ DependencyNode,
5
+ DependencyTree,
6
+ DependencyGraphProps,
7
+ UseDependencyGraphOptions,
8
+ UseDependencyGraphReturn,
9
+ } from "./types";
10
+
11
+ // Hooks
12
+ export { useDependencyGraph } from "./useDependencyGraph";
13
+
14
+ // Components
15
+ export { DependencyGraph } from "./DependencyGraph";
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Resource kind in a dependency tree.
3
+ *
4
+ * - `"agent"` — the root agent (always the tree root)
5
+ * - `"mcp-server"` — an MCP server referenced via `mcpServerUsages` or `mcpAccess`
6
+ * - `"skill"` — a skill referenced via `skillRefs`
7
+ * - `"sub-agent"` — an inline sub-agent definition with its own dependencies
8
+ */
9
+ export type NodeKind = "agent" | "mcp-server" | "skill" | "sub-agent";
10
+
11
+ /**
12
+ * A single node in the agent dependency tree.
13
+ *
14
+ * The tree is recursive: sub-agent nodes contain their own children
15
+ * (MCP servers and skills they access). Edges are implicit in the
16
+ * parent-child relationship — no separate edge type is needed.
17
+ *
18
+ * Nodes are navigable when `ref` is defined (MCP servers, skills).
19
+ * Sub-agent nodes have no `ref` because they are inline definitions
20
+ * within the agent spec, not standalone resources.
21
+ */
22
+ export interface DependencyNode {
23
+ /**
24
+ * Deterministic identifier. Format: `{kind}:{slug}` for referenced
25
+ * resources, `sub-agent:{name}` for sub-agents, or `agent:{slug}`
26
+ * for the root.
27
+ */
28
+ readonly id: string;
29
+ /** What kind of resource this node represents. */
30
+ readonly kind: NodeKind;
31
+ /** Primary display label (slug for resources, name for sub-agents). */
32
+ readonly label: string;
33
+ /**
34
+ * Qualified label shown when the resource belongs to a different org
35
+ * than the agent (e.g., `"other-org/shared-server"`). Undefined when
36
+ * the resource is in the same org as the parent agent.
37
+ */
38
+ readonly qualifiedLabel?: string;
39
+ /** Short description (sub-agent description, if available). */
40
+ readonly description?: string;
41
+ /**
42
+ * Key-value metadata displayed as secondary info.
43
+ * Examples: `{ tools: "3 tools" }`, `{ model: "gpt-4" }`.
44
+ */
45
+ readonly metadata?: Readonly<Record<string, string>>;
46
+ /** Child nodes. Empty array for leaf nodes (MCP servers, skills). */
47
+ readonly children: readonly DependencyNode[];
48
+ /**
49
+ * Navigation reference for clickable nodes. Defined for MCP servers
50
+ * and skills (standalone resources). Undefined for sub-agents (inline
51
+ * definitions) and the root agent.
52
+ */
53
+ readonly ref?: { readonly org: string; readonly slug: string };
54
+ }
55
+
56
+ /**
57
+ * Complete dependency tree for an agent, rooted at the agent itself.
58
+ */
59
+ export interface DependencyTree {
60
+ /** The agent node with all dependencies as descendants. */
61
+ readonly root: DependencyNode;
62
+ /** Total number of nodes in the tree (including root). */
63
+ readonly nodeCount: number;
64
+ }
65
+
66
+ /** Props for {@link DependencyGraph}. */
67
+ export interface DependencyGraphProps {
68
+ /** The dependency tree to render. */
69
+ readonly tree: DependencyTree;
70
+ /**
71
+ * Called when a navigable node is clicked. The `node.ref` field
72
+ * contains the `org` and `slug` for routing. Only fired for nodes
73
+ * where `ref` is defined (MCP servers, skills).
74
+ */
75
+ readonly onNodeClick?: (node: DependencyNode) => void;
76
+ /**
77
+ * Whether sub-agent subtrees start expanded.
78
+ * @default true
79
+ */
80
+ readonly defaultExpanded?: boolean;
81
+ /** Additional CSS classes for the root container. */
82
+ readonly className?: string;
83
+ }
84
+
85
+ /** Options for {@link useDependencyGraph}. */
86
+ export interface UseDependencyGraphOptions {
87
+ /** Display name of the agent (used as the root node label). */
88
+ readonly agentName: string;
89
+ /** Organization slug of the agent (used for cross-org label detection). */
90
+ readonly agentOrg: string;
91
+ /**
92
+ * The agent's spec containing dependency references.
93
+ * Pass `undefined` while the agent is loading — the hook returns
94
+ * `null` for `tree` and `true` for `isEmpty`.
95
+ */
96
+ readonly spec: {
97
+ readonly mcpServerUsages: readonly {
98
+ readonly mcpServerRef?: {
99
+ readonly org: string;
100
+ readonly slug: string;
101
+ };
102
+ readonly enabledTools: readonly string[];
103
+ readonly toolApprovalOverrides: readonly unknown[];
104
+ }[];
105
+ readonly skillRefs: readonly {
106
+ readonly org: string;
107
+ readonly slug: string;
108
+ }[];
109
+ readonly subAgents: readonly {
110
+ readonly name: string;
111
+ readonly description: string;
112
+ readonly mcpAccess: readonly {
113
+ readonly mcpServer: string;
114
+ readonly enabledTools: readonly string[];
115
+ }[];
116
+ readonly skillRefs: readonly {
117
+ readonly org: string;
118
+ readonly slug: string;
119
+ }[];
120
+ readonly modelOverride: string;
121
+ }[];
122
+ } | undefined;
123
+ }
124
+
125
+ /** Return value of {@link useDependencyGraph}. */
126
+ export interface UseDependencyGraphReturn {
127
+ /** The computed tree, or `null` when spec is undefined. */
128
+ readonly tree: DependencyTree | null;
129
+ /** `true` when the agent has zero dependencies (or spec is undefined). */
130
+ readonly isEmpty: boolean;
131
+ }