@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.
- package/action-menu/ActionMenu.d.ts +64 -0
- package/action-menu/ActionMenu.d.ts.map +1 -0
- package/action-menu/ActionMenu.js +78 -0
- package/action-menu/ActionMenu.js.map +1 -0
- package/action-menu/index.d.ts +3 -0
- package/action-menu/index.d.ts.map +1 -0
- package/action-menu/index.js +2 -0
- package/action-menu/index.js.map +1 -0
- package/action-menu/types.d.ts +65 -0
- package/action-menu/types.d.ts.map +1 -0
- package/action-menu/types.js +2 -0
- package/action-menu/types.js.map +1 -0
- package/agent/AgentCreationWizard.d.ts +55 -0
- package/agent/AgentCreationWizard.d.ts.map +1 -0
- package/agent/AgentCreationWizard.js +115 -0
- package/agent/AgentCreationWizard.js.map +1 -0
- package/agent/AgentDetailView.d.ts +77 -9
- package/agent/AgentDetailView.d.ts.map +1 -1
- package/agent/AgentDetailView.js +265 -87
- package/agent/AgentDetailView.js.map +1 -1
- package/agent/index.d.ts +8 -0
- package/agent/index.d.ts.map +1 -1
- package/agent/index.js +4 -0
- package/agent/index.js.map +1 -1
- package/agent/internal/agentToInput.d.ts +12 -0
- package/agent/internal/agentToInput.d.ts.map +1 -0
- package/agent/internal/agentToInput.js +72 -0
- package/agent/internal/agentToInput.js.map +1 -0
- package/agent/steps/CapabilitiesStep.d.ts +16 -0
- package/agent/steps/CapabilitiesStep.d.ts.map +1 -0
- package/agent/steps/CapabilitiesStep.js +80 -0
- package/agent/steps/CapabilitiesStep.js.map +1 -0
- package/agent/steps/IdentityStep.d.ts +18 -0
- package/agent/steps/IdentityStep.d.ts.map +1 -0
- package/agent/steps/IdentityStep.js +43 -0
- package/agent/steps/IdentityStep.js.map +1 -0
- package/agent/steps/ReviewStep.d.ts +23 -0
- package/agent/steps/ReviewStep.d.ts.map +1 -0
- package/agent/steps/ReviewStep.js +73 -0
- package/agent/steps/ReviewStep.js.map +1 -0
- package/agent/steps/types.d.ts +35 -0
- package/agent/steps/types.d.ts.map +1 -0
- package/agent/steps/types.js +16 -0
- package/agent/steps/types.js.map +1 -0
- package/agent/useCreateAgent.d.ts +45 -0
- package/agent/useCreateAgent.d.ts.map +1 -0
- package/agent/useCreateAgent.js +50 -0
- package/agent/useCreateAgent.js.map +1 -0
- package/agent/useUpdateAgent.d.ts +24 -0
- package/agent/useUpdateAgent.d.ts.map +1 -0
- package/agent/useUpdateAgent.js +35 -0
- package/agent/useUpdateAgent.js.map +1 -0
- package/composer/ContextChip.d.ts +7 -2
- package/composer/ContextChip.d.ts.map +1 -1
- package/composer/ContextChip.js +2 -1
- package/composer/ContextChip.js.map +1 -1
- package/composer/SessionComposer.d.ts +11 -0
- package/composer/SessionComposer.d.ts.map +1 -1
- package/composer/SessionComposer.js +33 -4
- package/composer/SessionComposer.js.map +1 -1
- package/dependency-graph/DependencyGraph.d.ts +37 -0
- package/dependency-graph/DependencyGraph.d.ts.map +1 -0
- package/dependency-graph/DependencyGraph.js +88 -0
- package/dependency-graph/DependencyGraph.js.map +1 -0
- package/dependency-graph/DependencyTreeNode.d.ts +23 -0
- package/dependency-graph/DependencyTreeNode.d.ts.map +1 -0
- package/dependency-graph/DependencyTreeNode.js +99 -0
- package/dependency-graph/DependencyTreeNode.js.map +1 -0
- package/dependency-graph/index.d.ts +4 -0
- package/dependency-graph/index.d.ts.map +1 -0
- package/dependency-graph/index.js +5 -0
- package/dependency-graph/index.js.map +1 -0
- package/dependency-graph/types.d.ts +130 -0
- package/dependency-graph/types.d.ts.map +1 -0
- package/dependency-graph/types.js +2 -0
- package/dependency-graph/types.js.map +1 -0
- package/dependency-graph/useDependencyGraph.d.ts +27 -0
- package/dependency-graph/useDependencyGraph.d.ts.map +1 -0
- package/dependency-graph/useDependencyGraph.js +129 -0
- package/dependency-graph/useDependencyGraph.js.map +1 -0
- package/empty-state/EmptyState.d.ts +29 -0
- package/empty-state/EmptyState.d.ts.map +1 -0
- package/empty-state/EmptyState.js +45 -0
- package/empty-state/EmptyState.js.map +1 -0
- package/empty-state/index.d.ts +4 -0
- package/empty-state/index.d.ts.map +1 -0
- package/empty-state/index.js +3 -0
- package/empty-state/index.js.map +1 -0
- package/empty-state/types.d.ts +73 -0
- package/empty-state/types.d.ts.map +1 -0
- package/empty-state/types.js +2 -0
- package/empty-state/types.js.map +1 -0
- package/empty-state/useEmptyState.d.ts +18 -0
- package/empty-state/useEmptyState.d.ts.map +1 -0
- package/empty-state/useEmptyState.js +72 -0
- package/empty-state/useEmptyState.js.map +1 -0
- package/environment/usePersonalEnvironment.d.ts.map +1 -1
- package/environment/usePersonalEnvironment.js +1 -0
- package/environment/usePersonalEnvironment.js.map +1 -1
- package/feedback/StigmerToaster.d.ts +18 -0
- package/feedback/StigmerToaster.d.ts.map +1 -0
- package/feedback/StigmerToaster.js +31 -0
- package/feedback/StigmerToaster.js.map +1 -0
- package/feedback/index.d.ts +4 -0
- package/feedback/index.d.ts.map +1 -0
- package/feedback/index.js +3 -0
- package/feedback/index.js.map +1 -0
- package/feedback/toast.d.ts +14 -0
- package/feedback/toast.d.ts.map +1 -0
- package/feedback/toast.js +14 -0
- package/feedback/toast.js.map +1 -0
- package/feedback/types.d.ts +4 -0
- package/feedback/types.d.ts.map +1 -0
- package/feedback/types.js +2 -0
- package/feedback/types.js.map +1 -0
- package/index.d.ts +32 -12
- package/index.d.ts.map +1 -1
- package/index.js +30 -10
- package/index.js.map +1 -1
- package/inline-edit/InlineEditImage.d.ts +20 -0
- package/inline-edit/InlineEditImage.d.ts.map +1 -0
- package/inline-edit/InlineEditImage.js +85 -0
- package/inline-edit/InlineEditImage.js.map +1 -0
- package/inline-edit/InlineEditKeyValue.d.ts +33 -0
- package/inline-edit/InlineEditKeyValue.d.ts.map +1 -0
- package/inline-edit/InlineEditKeyValue.js +67 -0
- package/inline-edit/InlineEditKeyValue.js.map +1 -0
- package/inline-edit/InlineEditResourceList.d.ts +34 -0
- package/inline-edit/InlineEditResourceList.d.ts.map +1 -0
- package/inline-edit/InlineEditResourceList.js +99 -0
- package/inline-edit/InlineEditResourceList.js.map +1 -0
- package/inline-edit/InlineEditSelect.d.ts +18 -0
- package/inline-edit/InlineEditSelect.d.ts.map +1 -0
- package/inline-edit/InlineEditSelect.js +54 -0
- package/inline-edit/InlineEditSelect.js.map +1 -0
- package/inline-edit/InlineEditText.d.ts +23 -0
- package/inline-edit/InlineEditText.d.ts.map +1 -0
- package/inline-edit/InlineEditText.js +79 -0
- package/inline-edit/InlineEditText.js.map +1 -0
- package/inline-edit/InlineEditTextarea.d.ts +22 -0
- package/inline-edit/InlineEditTextarea.d.ts.map +1 -0
- package/inline-edit/InlineEditTextarea.js +83 -0
- package/inline-edit/InlineEditTextarea.js.map +1 -0
- package/inline-edit/index.d.ts +16 -0
- package/inline-edit/index.d.ts.map +1 -0
- package/inline-edit/index.js +8 -0
- package/inline-edit/index.js.map +1 -0
- package/inline-edit/types.d.ts +42 -0
- package/inline-edit/types.d.ts.map +1 -0
- package/inline-edit/types.js +2 -0
- package/inline-edit/types.js.map +1 -0
- package/inline-edit/useInlineFieldSave.d.ts +23 -0
- package/inline-edit/useInlineFieldSave.d.ts.map +1 -0
- package/inline-edit/useInlineFieldSave.js +44 -0
- package/inline-edit/useInlineFieldSave.js.map +1 -0
- package/internal/Tabs.d.ts +4 -38
- package/internal/Tabs.d.ts.map +1 -1
- package/internal/Tabs.js +3 -62
- package/internal/Tabs.js.map +1 -1
- package/internal/useFetch.js +2 -2
- package/internal/useFetch.js.map +1 -1
- package/library/ImportResourceDialog.d.ts +43 -0
- package/library/ImportResourceDialog.d.ts.map +1 -0
- package/library/ImportResourceDialog.js +90 -0
- package/library/ImportResourceDialog.js.map +1 -0
- package/library/index.d.ts +7 -4
- package/library/index.d.ts.map +1 -1
- package/library/index.js +4 -2
- package/library/index.js.map +1 -1
- package/library/serialize-resource-yaml.d.ts +53 -0
- package/library/serialize-resource-yaml.d.ts.map +1 -1
- package/library/serialize-resource-yaml.js +275 -0
- package/library/serialize-resource-yaml.js.map +1 -1
- package/library/useExportResource.d.ts +56 -0
- package/library/useExportResource.d.ts.map +1 -0
- package/library/useExportResource.js +137 -0
- package/library/useExportResource.js.map +1 -0
- package/library/useImportResource.d.ts +84 -0
- package/library/useImportResource.d.ts.map +1 -0
- package/library/useImportResource.js +188 -0
- package/library/useImportResource.js.map +1 -0
- package/mcp-server/McpServerCreationWizard.d.ts +55 -0
- package/mcp-server/McpServerCreationWizard.d.ts.map +1 -0
- package/mcp-server/McpServerCreationWizard.js +121 -0
- package/mcp-server/McpServerCreationWizard.js.map +1 -0
- package/mcp-server/McpServerDetailView.d.ts +21 -1
- package/mcp-server/McpServerDetailView.d.ts.map +1 -1
- package/mcp-server/McpServerDetailView.js +235 -43
- package/mcp-server/McpServerDetailView.js.map +1 -1
- package/mcp-server/index.d.ts +8 -0
- package/mcp-server/index.d.ts.map +1 -1
- package/mcp-server/index.js +4 -0
- package/mcp-server/index.js.map +1 -1
- package/mcp-server/internal/mcpServerToInput.d.ts +12 -0
- package/mcp-server/internal/mcpServerToInput.d.ts.map +1 -0
- package/mcp-server/internal/mcpServerToInput.js +81 -0
- package/mcp-server/internal/mcpServerToInput.js.map +1 -0
- package/mcp-server/steps/EnvironmentAuthStep.d.ts +15 -0
- package/mcp-server/steps/EnvironmentAuthStep.d.ts.map +1 -0
- package/mcp-server/steps/EnvironmentAuthStep.js +55 -0
- package/mcp-server/steps/EnvironmentAuthStep.js.map +1 -0
- package/mcp-server/steps/IdentityTransportStep.d.ts +19 -0
- package/mcp-server/steps/IdentityTransportStep.d.ts.map +1 -0
- package/mcp-server/steps/IdentityTransportStep.js +73 -0
- package/mcp-server/steps/IdentityTransportStep.js.map +1 -0
- package/mcp-server/steps/ReviewStep.d.ts +23 -0
- package/mcp-server/steps/ReviewStep.d.ts.map +1 -0
- package/mcp-server/steps/ReviewStep.js +137 -0
- package/mcp-server/steps/ReviewStep.js.map +1 -0
- package/mcp-server/steps/types.d.ts +56 -0
- package/mcp-server/steps/types.d.ts.map +1 -0
- package/mcp-server/steps/types.js +27 -0
- package/mcp-server/steps/types.js.map +1 -0
- package/mcp-server/useCreateMcpServer.d.ts +45 -0
- package/mcp-server/useCreateMcpServer.d.ts.map +1 -0
- package/mcp-server/useCreateMcpServer.js +50 -0
- package/mcp-server/useCreateMcpServer.js.map +1 -0
- package/mcp-server/useUpdateMcpServer.d.ts +24 -0
- package/mcp-server/useUpdateMcpServer.d.ts.map +1 -0
- package/mcp-server/useUpdateMcpServer.js +35 -0
- package/mcp-server/useUpdateMcpServer.js.map +1 -0
- package/models/ModelRegistryContext.d.ts +2 -0
- package/models/ModelRegistryContext.d.ts.map +1 -1
- package/models/ModelRegistryContext.js +1 -0
- package/models/ModelRegistryContext.js.map +1 -1
- package/models/ModelSelector.d.ts.map +1 -1
- package/models/ModelSelector.js +2 -2
- package/models/ModelSelector.js.map +1 -1
- package/models/__tests__/useModelRegistry.test.js +4 -3
- package/models/__tests__/useModelRegistry.test.js.map +1 -1
- package/models/useModelRegistry.d.ts +2 -0
- package/models/useModelRegistry.d.ts.map +1 -1
- package/models/useModelRegistry.js +3 -2
- package/models/useModelRegistry.js.map +1 -1
- package/package.json +8 -4
- package/provider.d.ts.map +1 -1
- package/provider.js +69 -22
- package/provider.js.map +1 -1
- package/resource-creation/CreationPicker.d.ts +60 -0
- package/resource-creation/CreationPicker.d.ts.map +1 -0
- package/resource-creation/CreationPicker.js +74 -0
- package/resource-creation/CreationPicker.js.map +1 -0
- package/resource-creation/StepIndicator.d.ts +28 -0
- package/resource-creation/StepIndicator.d.ts.map +1 -0
- package/resource-creation/StepIndicator.js +40 -0
- package/resource-creation/StepIndicator.js.map +1 -0
- package/resource-creation/TemplateCard.d.ts +24 -0
- package/resource-creation/TemplateCard.d.ts.map +1 -0
- package/resource-creation/TemplateCard.js +68 -0
- package/resource-creation/TemplateCard.js.map +1 -0
- package/resource-creation/TemplateGallery.d.ts +43 -0
- package/resource-creation/TemplateGallery.d.ts.map +1 -0
- package/resource-creation/TemplateGallery.js +78 -0
- package/resource-creation/TemplateGallery.js.map +1 -0
- package/resource-creation/WizardNav.d.ts +31 -0
- package/resource-creation/WizardNav.d.ts.map +1 -0
- package/resource-creation/WizardNav.js +29 -0
- package/resource-creation/WizardNav.js.map +1 -0
- package/resource-creation/WizardShell.d.ts +41 -0
- package/resource-creation/WizardShell.d.ts.map +1 -0
- package/resource-creation/WizardShell.js +55 -0
- package/resource-creation/WizardShell.js.map +1 -0
- package/resource-creation/index.d.ts +21 -0
- package/resource-creation/index.d.ts.map +1 -0
- package/resource-creation/index.js +14 -0
- package/resource-creation/index.js.map +1 -0
- package/resource-creation/templates/agent-templates.d.ts +15 -0
- package/resource-creation/templates/agent-templates.d.ts.map +1 -0
- package/resource-creation/templates/agent-templates.js +148 -0
- package/resource-creation/templates/agent-templates.js.map +1 -0
- package/resource-creation/templates/index.d.ts +5 -0
- package/resource-creation/templates/index.d.ts.map +1 -0
- package/resource-creation/templates/index.js +5 -0
- package/resource-creation/templates/index.js.map +1 -0
- package/resource-creation/templates/mcp-server-templates.d.ts +15 -0
- package/resource-creation/templates/mcp-server-templates.d.ts.map +1 -0
- package/resource-creation/templates/mcp-server-templates.js +92 -0
- package/resource-creation/templates/mcp-server-templates.js.map +1 -0
- package/resource-creation/templates/types.d.ts +48 -0
- package/resource-creation/templates/types.d.ts.map +1 -0
- package/resource-creation/templates/types.js +16 -0
- package/resource-creation/templates/types.js.map +1 -0
- package/resource-creation/types.d.ts +88 -0
- package/resource-creation/types.d.ts.map +1 -0
- package/resource-creation/types.js +2 -0
- package/resource-creation/types.js.map +1 -0
- package/resource-creation/useTemplateFilter.d.ts +43 -0
- package/resource-creation/useTemplateFilter.d.ts.map +1 -0
- package/resource-creation/useTemplateFilter.js +73 -0
- package/resource-creation/useTemplateFilter.js.map +1 -0
- package/resource-creation/useWizardState.d.ts +67 -0
- package/resource-creation/useWizardState.d.ts.map +1 -0
- package/resource-creation/useWizardState.js +143 -0
- package/resource-creation/useWizardState.js.map +1 -0
- package/resource-detail/ConfirmDialog.d.ts +44 -0
- package/resource-detail/ConfirmDialog.d.ts.map +1 -0
- package/resource-detail/ConfirmDialog.js +62 -0
- package/resource-detail/ConfirmDialog.js.map +1 -0
- package/resource-detail/ResourceActionBar.d.ts +42 -0
- package/resource-detail/ResourceActionBar.d.ts.map +1 -0
- package/resource-detail/ResourceActionBar.js +64 -0
- package/resource-detail/ResourceActionBar.js.map +1 -0
- package/resource-detail/ResourceDetailShell.d.ts +36 -0
- package/resource-detail/ResourceDetailShell.d.ts.map +1 -0
- package/resource-detail/ResourceDetailShell.js +65 -0
- package/resource-detail/ResourceDetailShell.js.map +1 -0
- package/resource-detail/Section.d.ts +18 -0
- package/resource-detail/Section.d.ts.map +1 -0
- package/resource-detail/Section.js +18 -0
- package/resource-detail/Section.js.map +1 -0
- package/resource-detail/index.d.ts +15 -0
- package/resource-detail/index.d.ts.map +1 -0
- package/resource-detail/index.js +10 -0
- package/resource-detail/index.js.map +1 -0
- package/resource-detail/types.d.ts +146 -0
- package/resource-detail/types.d.ts.map +1 -0
- package/resource-detail/types.js +2 -0
- package/resource-detail/types.js.map +1 -0
- package/resource-detail/useConfirmAction.d.ts +41 -0
- package/resource-detail/useConfirmAction.d.ts.map +1 -0
- package/resource-detail/useConfirmAction.js +30 -0
- package/resource-detail/useConfirmAction.js.map +1 -0
- package/resource-detail/useCopyResource.d.ts +28 -0
- package/resource-detail/useCopyResource.d.ts.map +1 -0
- package/resource-detail/useCopyResource.js +46 -0
- package/resource-detail/useCopyResource.js.map +1 -0
- package/resource-detail/useDeleteResource.d.ts +40 -0
- package/resource-detail/useDeleteResource.d.ts.map +1 -0
- package/resource-detail/useDeleteResource.js +83 -0
- package/resource-detail/useDeleteResource.js.map +1 -0
- package/resource-detail/useDetailTabs.d.ts +46 -0
- package/resource-detail/useDetailTabs.d.ts.map +1 -0
- package/resource-detail/useDetailTabs.js +47 -0
- package/resource-detail/useDetailTabs.js.map +1 -0
- package/resource-workbench/components/BulkActionBar.d.ts +36 -0
- package/resource-workbench/components/BulkActionBar.d.ts.map +1 -0
- package/resource-workbench/components/BulkActionBar.js +35 -0
- package/resource-workbench/components/BulkActionBar.js.map +1 -0
- package/resource-workbench/components/ColumnHeader.d.ts +23 -0
- package/resource-workbench/components/ColumnHeader.d.ts.map +1 -0
- package/resource-workbench/components/ColumnHeader.js +25 -0
- package/resource-workbench/components/ColumnHeader.js.map +1 -0
- package/resource-workbench/components/FilterBar.d.ts +33 -0
- package/resource-workbench/components/FilterBar.d.ts.map +1 -0
- package/resource-workbench/components/FilterBar.js +72 -0
- package/resource-workbench/components/FilterBar.js.map +1 -0
- package/resource-workbench/components/ResourceAvatar.d.ts +29 -0
- package/resource-workbench/components/ResourceAvatar.d.ts.map +1 -0
- package/resource-workbench/components/ResourceAvatar.js +51 -0
- package/resource-workbench/components/ResourceAvatar.js.map +1 -0
- package/resource-workbench/components/ResourceCards.d.ts +39 -0
- package/resource-workbench/components/ResourceCards.d.ts.map +1 -0
- package/resource-workbench/components/ResourceCards.js +41 -0
- package/resource-workbench/components/ResourceCards.js.map +1 -0
- package/resource-workbench/components/ResourceInspector.d.ts +26 -0
- package/resource-workbench/components/ResourceInspector.d.ts.map +1 -0
- package/resource-workbench/components/ResourceInspector.js +22 -0
- package/resource-workbench/components/ResourceInspector.js.map +1 -0
- package/resource-workbench/components/ResourceList.d.ts +39 -0
- package/resource-workbench/components/ResourceList.d.ts.map +1 -0
- package/resource-workbench/components/ResourceList.js +41 -0
- package/resource-workbench/components/ResourceList.js.map +1 -0
- package/resource-workbench/components/ResourceTable.d.ts +47 -0
- package/resource-workbench/components/ResourceTable.d.ts.map +1 -0
- package/resource-workbench/components/ResourceTable.js +78 -0
- package/resource-workbench/components/ResourceTable.js.map +1 -0
- package/resource-workbench/components/ResourceWorkbench.d.ts +131 -0
- package/resource-workbench/components/ResourceWorkbench.d.ts.map +1 -0
- package/resource-workbench/components/ResourceWorkbench.js +170 -0
- package/resource-workbench/components/ResourceWorkbench.js.map +1 -0
- package/resource-workbench/components/SelectionCheckbox.d.ts +24 -0
- package/resource-workbench/components/SelectionCheckbox.d.ts.map +1 -0
- package/resource-workbench/components/SelectionCheckbox.js +16 -0
- package/resource-workbench/components/SelectionCheckbox.js.map +1 -0
- package/resource-workbench/components/StatusBadge.d.ts +31 -0
- package/resource-workbench/components/StatusBadge.d.ts.map +1 -0
- package/resource-workbench/components/StatusBadge.js +75 -0
- package/resource-workbench/components/StatusBadge.js.map +1 -0
- package/resource-workbench/components/ViewSwitcher.d.ts +21 -0
- package/resource-workbench/components/ViewSwitcher.d.ts.map +1 -0
- package/resource-workbench/components/ViewSwitcher.js +37 -0
- package/resource-workbench/components/ViewSwitcher.js.map +1 -0
- package/resource-workbench/hooks/useResourceCollection.d.ts +93 -0
- package/resource-workbench/hooks/useResourceCollection.d.ts.map +1 -0
- package/resource-workbench/hooks/useResourceCollection.js +133 -0
- package/resource-workbench/hooks/useResourceCollection.js.map +1 -0
- package/resource-workbench/hooks/useResourceFilters.d.ts +73 -0
- package/resource-workbench/hooks/useResourceFilters.d.ts.map +1 -0
- package/resource-workbench/hooks/useResourceFilters.js +105 -0
- package/resource-workbench/hooks/useResourceFilters.js.map +1 -0
- package/resource-workbench/hooks/useResourceSelection.d.ts +44 -0
- package/resource-workbench/hooks/useResourceSelection.d.ts.map +1 -0
- package/resource-workbench/hooks/useResourceSelection.js +123 -0
- package/resource-workbench/hooks/useResourceSelection.js.map +1 -0
- package/resource-workbench/hooks/useViewPreference.d.ts +32 -0
- package/resource-workbench/hooks/useViewPreference.d.ts.map +1 -0
- package/resource-workbench/hooks/useViewPreference.js +60 -0
- package/resource-workbench/hooks/useViewPreference.js.map +1 -0
- package/resource-workbench/index.d.ts +34 -0
- package/resource-workbench/index.d.ts.map +1 -0
- package/resource-workbench/index.js +19 -0
- package/resource-workbench/index.js.map +1 -0
- package/resource-workbench/types.d.ts +165 -0
- package/resource-workbench/types.d.ts.map +1 -0
- package/resource-workbench/types.js +2 -0
- package/resource-workbench/types.js.map +1 -0
- package/runner/RunnerDetailView.d.ts +44 -0
- package/runner/RunnerDetailView.d.ts.map +1 -0
- package/runner/RunnerDetailView.js +154 -0
- package/runner/RunnerDetailView.js.map +1 -0
- package/runner/RunnerListPanel.d.ts +26 -1
- package/runner/RunnerListPanel.d.ts.map +1 -1
- package/runner/RunnerListPanel.js +68 -46
- package/runner/RunnerListPanel.js.map +1 -1
- package/runner/index.d.ts +7 -1
- package/runner/index.d.ts.map +1 -1
- package/runner/index.js +3 -0
- package/runner/index.js.map +1 -1
- package/runner/shared.d.ts +31 -0
- package/runner/shared.d.ts.map +1 -0
- package/runner/shared.js +55 -0
- package/runner/shared.js.map +1 -0
- package/runner/useRunner.d.ts +37 -0
- package/runner/useRunner.d.ts.map +1 -0
- package/runner/useRunner.js +24 -0
- package/runner/useRunner.js.map +1 -0
- package/session/__tests__/group-sessions.test.js +3 -3
- package/session/__tests__/group-sessions.test.js.map +1 -1
- package/session/__tests__/session-spec-converters.test.d.ts +2 -0
- package/session/__tests__/session-spec-converters.test.d.ts.map +1 -0
- package/session/__tests__/session-spec-converters.test.js +162 -0
- package/session/__tests__/session-spec-converters.test.js.map +1 -0
- package/session/__tests__/useNewSessionFlow.test.js +2 -2
- package/session/__tests__/useNewSessionFlow.test.js.map +1 -1
- package/session/__tests__/usePersistedModel.test.js +1 -1
- package/session/__tests__/usePersistedModel.test.js.map +1 -1
- package/session/group-sessions.d.ts +17 -0
- package/session/group-sessions.d.ts.map +1 -1
- package/session/group-sessions.js +46 -0
- package/session/group-sessions.js.map +1 -1
- package/session/index.d.ts +4 -2
- package/session/index.d.ts.map +1 -1
- package/session/index.js +2 -1
- package/session/index.js.map +1 -1
- package/session/session-spec-converters.d.ts +24 -0
- package/session/session-spec-converters.d.ts.map +1 -0
- package/session/session-spec-converters.js +72 -0
- package/session/session-spec-converters.js.map +1 -0
- package/session/useSessionConversation.d.ts.map +1 -1
- package/session/useSessionConversation.js +1 -56
- package/session/useSessionConversation.js.map +1 -1
- package/session/useSessionPageFlow.d.ts +5 -0
- package/session/useSessionPageFlow.d.ts.map +1 -1
- package/session/useSessionPageFlow.js +20 -6
- package/session/useSessionPageFlow.js.map +1 -1
- package/session/useSessionSearch.d.ts +57 -0
- package/session/useSessionSearch.d.ts.map +1 -0
- package/session/useSessionSearch.js +94 -0
- package/session/useSessionSearch.js.map +1 -0
- package/skill/SkillDetailView.d.ts +70 -7
- package/skill/SkillDetailView.d.ts.map +1 -1
- package/skill/SkillDetailView.js +107 -39
- package/skill/SkillDetailView.js.map +1 -1
- package/skill/SkillDiffDialog.d.ts +42 -0
- package/skill/SkillDiffDialog.d.ts.map +1 -0
- package/skill/SkillDiffDialog.js +72 -0
- package/skill/SkillDiffDialog.js.map +1 -0
- package/skill/SkillFileBrowser.d.ts +31 -0
- package/skill/SkillFileBrowser.d.ts.map +1 -0
- package/skill/SkillFileBrowser.js +105 -0
- package/skill/SkillFileBrowser.js.map +1 -0
- package/skill/SkillUploader.d.ts +39 -0
- package/skill/SkillUploader.d.ts.map +1 -0
- package/skill/SkillUploader.js +141 -0
- package/skill/SkillUploader.js.map +1 -0
- package/skill/index.d.ts +18 -0
- package/skill/index.d.ts.map +1 -1
- package/skill/index.js +9 -0
- package/skill/index.js.map +1 -1
- package/skill/internal/computeArtifactHash.d.ts +9 -0
- package/skill/internal/computeArtifactHash.d.ts.map +1 -0
- package/skill/internal/computeArtifactHash.js +14 -0
- package/skill/internal/computeArtifactHash.js.map +1 -0
- package/skill/internal/fetchAndUnpackArtifact.d.ts +16 -0
- package/skill/internal/fetchAndUnpackArtifact.d.ts.map +1 -0
- package/skill/internal/fetchAndUnpackArtifact.js +34 -0
- package/skill/internal/fetchAndUnpackArtifact.js.map +1 -0
- package/skill/usePushSkill.d.ts +53 -0
- package/skill/usePushSkill.d.ts.map +1 -0
- package/skill/usePushSkill.js +57 -0
- package/skill/usePushSkill.js.map +1 -0
- package/skill/useSkillArtifact.d.ts +37 -0
- package/skill/useSkillArtifact.d.ts.map +1 -0
- package/skill/useSkillArtifact.js +76 -0
- package/skill/useSkillArtifact.js.map +1 -0
- package/skill/useSkillDiff.d.ts +31 -0
- package/skill/useSkillDiff.d.ts.map +1 -0
- package/skill/useSkillDiff.js +97 -0
- package/skill/useSkillDiff.js.map +1 -0
- package/skill/useSkillDuplicateCheck.d.ts +34 -0
- package/skill/useSkillDuplicateCheck.d.ts.map +1 -0
- package/skill/useSkillDuplicateCheck.js +58 -0
- package/skill/useSkillDuplicateCheck.js.map +1 -0
- package/skill/useSkillUpload.d.ts +69 -0
- package/skill/useSkillUpload.d.ts.map +1 -0
- package/skill/useSkillUpload.js +157 -0
- package/skill/useSkillUpload.js.map +1 -0
- package/skill/useSkillVersions.d.ts +46 -0
- package/skill/useSkillVersions.d.ts.map +1 -0
- package/skill/useSkillVersions.js +104 -0
- package/skill/useSkillVersions.js.map +1 -0
- package/src/action-menu/ActionMenu.tsx +151 -0
- package/src/action-menu/index.ts +9 -0
- package/src/action-menu/types.ts +70 -0
- package/src/agent/AgentCreationWizard.tsx +201 -0
- package/src/agent/AgentDetailView.tsx +817 -321
- package/src/agent/index.ts +16 -0
- package/src/agent/internal/agentToInput.ts +95 -0
- package/src/agent/steps/CapabilitiesStep.tsx +363 -0
- package/src/agent/steps/IdentityStep.tsx +259 -0
- package/src/agent/steps/ReviewStep.tsx +211 -0
- package/src/agent/steps/types.ts +53 -0
- package/src/agent/useCreateAgent.ts +76 -0
- package/src/agent/useUpdateAgent.ts +55 -0
- package/src/composer/ContextChip.tsx +20 -11
- package/src/composer/SessionComposer.tsx +52 -3
- package/src/dependency-graph/DependencyGraph.tsx +153 -0
- package/src/dependency-graph/DependencyTreeNode.tsx +282 -0
- package/src/dependency-graph/index.ts +15 -0
- package/src/dependency-graph/types.ts +131 -0
- package/src/dependency-graph/useDependencyGraph.ts +158 -0
- package/src/empty-state/EmptyState.tsx +90 -0
- package/src/empty-state/index.ts +9 -0
- package/src/empty-state/types.ts +81 -0
- package/src/empty-state/useEmptyState.ts +85 -0
- package/src/environment/usePersonalEnvironment.ts +1 -0
- package/src/feedback/StigmerToaster.tsx +45 -0
- package/src/feedback/index.ts +3 -0
- package/src/feedback/toast.ts +13 -0
- package/src/feedback/types.ts +7 -0
- package/src/index.ts +275 -8
- package/src/inline-edit/InlineEditImage.tsx +208 -0
- package/src/inline-edit/InlineEditKeyValue.tsx +301 -0
- package/src/inline-edit/InlineEditResourceList.tsx +325 -0
- package/src/inline-edit/InlineEditSelect.tsx +150 -0
- package/src/inline-edit/InlineEditText.tsx +211 -0
- package/src/inline-edit/InlineEditTextarea.tsx +209 -0
- package/src/inline-edit/index.ts +28 -0
- package/src/inline-edit/types.ts +47 -0
- package/src/inline-edit/useInlineFieldSave.ts +62 -0
- package/src/internal/Tabs.tsx +4 -164
- package/src/internal/useFetch.ts +2 -2
- package/src/library/ImportResourceDialog.tsx +227 -0
- package/src/library/index.ts +18 -8
- package/src/library/serialize-resource-yaml.ts +356 -0
- package/src/library/useExportResource.ts +183 -0
- package/src/library/useImportResource.ts +253 -0
- package/src/mcp-server/McpServerCreationWizard.tsx +206 -0
- package/src/mcp-server/McpServerDetailView.tsx +816 -155
- package/src/mcp-server/index.ts +16 -0
- package/src/mcp-server/internal/mcpServerToInput.ts +95 -0
- package/src/mcp-server/steps/EnvironmentAuthStep.tsx +462 -0
- package/src/mcp-server/steps/IdentityTransportStep.tsx +531 -0
- package/src/mcp-server/steps/ReviewStep.tsx +297 -0
- package/src/mcp-server/steps/types.ts +85 -0
- package/src/mcp-server/useCreateMcpServer.ts +76 -0
- package/src/mcp-server/useUpdateMcpServer.ts +55 -0
- package/src/models/ModelRegistryContext.ts +3 -0
- package/src/models/ModelSelector.tsx +25 -2
- package/src/models/__tests__/useModelRegistry.test.tsx +5 -3
- package/src/models/useModelRegistry.ts +5 -2
- package/src/provider.tsx +69 -18
- package/src/resource-creation/CreationPicker.tsx +292 -0
- package/src/resource-creation/StepIndicator.tsx +156 -0
- package/src/resource-creation/TemplateCard.tsx +143 -0
- package/src/resource-creation/TemplateGallery.tsx +222 -0
- package/src/resource-creation/WizardNav.tsx +163 -0
- package/src/resource-creation/WizardShell.tsx +124 -0
- package/src/resource-creation/index.ts +45 -0
- package/src/resource-creation/templates/agent-templates.ts +160 -0
- package/src/resource-creation/templates/index.ts +7 -0
- package/src/resource-creation/templates/mcp-server-templates.ts +106 -0
- package/src/resource-creation/templates/types.ts +64 -0
- package/src/resource-creation/types.ts +105 -0
- package/src/resource-creation/useTemplateFilter.ts +117 -0
- package/src/resource-creation/useWizardState.ts +223 -0
- package/src/resource-detail/ConfirmDialog.tsx +127 -0
- package/src/resource-detail/ResourceActionBar.tsx +157 -0
- package/src/resource-detail/ResourceDetailShell.tsx +184 -0
- package/src/resource-detail/Section.tsx +78 -0
- package/src/resource-detail/index.ts +34 -0
- package/src/resource-detail/types.ts +177 -0
- package/src/resource-detail/useConfirmAction.ts +70 -0
- package/src/resource-detail/useCopyResource.ts +74 -0
- package/src/resource-detail/useDeleteResource.ts +110 -0
- package/src/resource-detail/useDetailTabs.ts +93 -0
- package/src/resource-workbench/components/BulkActionBar.tsx +122 -0
- package/src/resource-workbench/components/ColumnHeader.tsx +105 -0
- package/src/resource-workbench/components/FilterBar.tsx +173 -0
- package/src/resource-workbench/components/ResourceAvatar.tsx +109 -0
- package/src/resource-workbench/components/ResourceCards.tsx +126 -0
- package/src/resource-workbench/components/ResourceInspector.tsx +88 -0
- package/src/resource-workbench/components/ResourceList.tsx +121 -0
- package/src/resource-workbench/components/ResourceTable.tsx +222 -0
- package/src/resource-workbench/components/ResourceWorkbench.tsx +695 -0
- package/src/resource-workbench/components/SelectionCheckbox.tsx +52 -0
- package/src/resource-workbench/components/StatusBadge.tsx +119 -0
- package/src/resource-workbench/components/ViewSwitcher.tsx +135 -0
- package/src/resource-workbench/hooks/useResourceCollection.ts +261 -0
- package/src/resource-workbench/hooks/useResourceFilters.ts +216 -0
- package/src/resource-workbench/hooks/useResourceSelection.ts +178 -0
- package/src/resource-workbench/hooks/useViewPreference.ts +75 -0
- package/src/resource-workbench/index.ts +73 -0
- package/src/resource-workbench/types.ts +220 -0
- package/src/runner/RunnerDetailView.tsx +410 -0
- package/src/runner/RunnerListPanel.tsx +126 -111
- package/src/runner/index.ts +13 -1
- package/src/runner/shared.tsx +124 -0
- package/src/runner/useRunner.ts +59 -0
- package/src/session/__tests__/group-sessions.test.ts +5 -3
- package/src/session/__tests__/session-spec-converters.test.ts +185 -0
- package/src/session/__tests__/useNewSessionFlow.test.tsx +2 -2
- package/src/session/__tests__/usePersistedModel.test.tsx +1 -1
- package/src/session/group-sessions.ts +65 -0
- package/src/session/index.ts +8 -2
- package/src/session/session-spec-converters.ts +86 -0
- package/src/session/useSessionConversation.ts +5 -64
- package/src/session/useSessionPageFlow.ts +28 -7
- package/src/session/useSessionSearch.ts +149 -0
- package/src/skill/SkillDetailView.tsx +371 -165
- package/src/skill/SkillDiffDialog.tsx +213 -0
- package/src/skill/SkillFileBrowser.tsx +289 -0
- package/src/skill/SkillUploader.tsx +481 -0
- package/src/skill/index.ts +34 -0
- package/src/skill/internal/computeArtifactHash.ts +13 -0
- package/src/skill/internal/fetchAndUnpackArtifact.ts +48 -0
- package/src/skill/usePushSkill.ts +101 -0
- package/src/skill/useSkillArtifact.ts +107 -0
- package/src/skill/useSkillDiff.ts +128 -0
- package/src/skill/useSkillDuplicateCheck.ts +92 -0
- package/src/skill/useSkillUpload.ts +231 -0
- package/src/skill/useSkillVersions.ts +165 -0
- package/src/styles.css +28 -0
- package/src/tabs/Tabs.tsx +184 -0
- package/src/tabs/index.ts +2 -0
- package/src/version-history/DiffFileList.tsx +111 -0
- package/src/version-history/DiffSummary.tsx +61 -0
- package/src/version-history/DiffViewer.tsx +163 -0
- package/src/version-history/MultiFileDiffView.tsx +114 -0
- package/src/version-history/VersionTimeline.tsx +232 -0
- package/src/version-history/VersionTimelineEntry.tsx +254 -0
- package/src/version-history/computeDiff.ts +61 -0
- package/src/version-history/computeMultiFileDiff.ts +97 -0
- package/src/version-history/index.ts +22 -0
- package/src/version-history/types.ts +129 -0
- package/styles.css +1 -1
- package/tabs/Tabs.d.ts +58 -0
- package/tabs/Tabs.d.ts.map +1 -0
- package/tabs/Tabs.js +80 -0
- package/tabs/Tabs.js.map +1 -0
- package/tabs/index.d.ts +3 -0
- package/tabs/index.d.ts.map +1 -0
- package/tabs/index.js +2 -0
- package/tabs/index.js.map +1 -0
- package/version-history/DiffFileList.d.ts +22 -0
- package/version-history/DiffFileList.d.ts.map +1 -0
- package/version-history/DiffFileList.js +37 -0
- package/version-history/DiffFileList.js.map +1 -0
- package/version-history/DiffSummary.d.ts +21 -0
- package/version-history/DiffSummary.d.ts.map +1 -0
- package/version-history/DiffSummary.js +16 -0
- package/version-history/DiffSummary.js.map +1 -0
- package/version-history/DiffViewer.d.ts +31 -0
- package/version-history/DiffViewer.d.ts.map +1 -0
- package/version-history/DiffViewer.js +60 -0
- package/version-history/DiffViewer.js.map +1 -0
- package/version-history/MultiFileDiffView.d.ts +30 -0
- package/version-history/MultiFileDiffView.d.ts.map +1 -0
- package/version-history/MultiFileDiffView.js +40 -0
- package/version-history/MultiFileDiffView.js.map +1 -0
- package/version-history/VersionTimeline.d.ts +29 -0
- package/version-history/VersionTimeline.d.ts.map +1 -0
- package/version-history/VersionTimeline.js +87 -0
- package/version-history/VersionTimeline.js.map +1 -0
- package/version-history/VersionTimelineEntry.d.ts +22 -0
- package/version-history/VersionTimelineEntry.d.ts.map +1 -0
- package/version-history/VersionTimelineEntry.js +98 -0
- package/version-history/VersionTimelineEntry.js.map +1 -0
- package/version-history/computeDiff.d.ts +16 -0
- package/version-history/computeDiff.d.ts.map +1 -0
- package/version-history/computeDiff.js +54 -0
- package/version-history/computeDiff.js.map +1 -0
- package/version-history/computeMultiFileDiff.d.ts +15 -0
- package/version-history/computeMultiFileDiff.d.ts.map +1 -0
- package/version-history/computeMultiFileDiff.js +83 -0
- package/version-history/computeMultiFileDiff.js.map +1 -0
- package/version-history/index.d.ts +14 -0
- package/version-history/index.d.ts.map +1 -0
- package/version-history/index.js +9 -0
- package/version-history/index.js.map +1 -0
- package/version-history/types.d.ts +106 -0
- package/version-history/types.d.ts.map +1 -0
- package/version-history/types.js +2 -0
- package/version-history/types.js.map +1 -0
- package/library/ResourceListView.d.ts +0 -174
- package/library/ResourceListView.d.ts.map +0 -1
- package/library/ResourceListView.js +0 -318
- package/library/ResourceListView.js.map +0 -1
- package/src/library/ResourceListView.tsx +0 -956
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useMemo } from "react";
|
|
4
|
+
import type {
|
|
5
|
+
DependencyNode,
|
|
6
|
+
DependencyTree,
|
|
7
|
+
UseDependencyGraphOptions,
|
|
8
|
+
UseDependencyGraphReturn,
|
|
9
|
+
} from "./types";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Pure transformation hook that converts an `AgentSpec` into a
|
|
13
|
+
* {@link DependencyTree} for rendering.
|
|
14
|
+
*
|
|
15
|
+
* No data fetching, no side effects — the tree is computed entirely
|
|
16
|
+
* from the spec fields already available via {@link useAgent}. The
|
|
17
|
+
* result is memoized and only recomputes when the spec reference
|
|
18
|
+
* changes.
|
|
19
|
+
*
|
|
20
|
+
* Returns `null` for `tree` when `spec` is `undefined` (loading state).
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```tsx
|
|
24
|
+
* const { tree, isEmpty } = useDependencyGraph({
|
|
25
|
+
* agentName: agent.metadata.name,
|
|
26
|
+
* agentOrg: agent.metadata.org,
|
|
27
|
+
* spec: agent.spec,
|
|
28
|
+
* });
|
|
29
|
+
*
|
|
30
|
+
* if (!isEmpty && tree) {
|
|
31
|
+
* return <DependencyGraph tree={tree} onNodeClick={handleClick} />;
|
|
32
|
+
* }
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export function useDependencyGraph({
|
|
36
|
+
agentName,
|
|
37
|
+
agentOrg,
|
|
38
|
+
spec,
|
|
39
|
+
}: UseDependencyGraphOptions): UseDependencyGraphReturn {
|
|
40
|
+
return useMemo(() => {
|
|
41
|
+
if (!spec) return { tree: null, isEmpty: true };
|
|
42
|
+
|
|
43
|
+
const { mcpServerUsages, skillRefs, subAgents } = spec;
|
|
44
|
+
|
|
45
|
+
const hasDeps =
|
|
46
|
+
mcpServerUsages.length > 0 ||
|
|
47
|
+
skillRefs.length > 0 ||
|
|
48
|
+
subAgents.length > 0;
|
|
49
|
+
|
|
50
|
+
if (!hasDeps) return { tree: null, isEmpty: true };
|
|
51
|
+
|
|
52
|
+
let nodeCount = 1; // root
|
|
53
|
+
|
|
54
|
+
const mcpNodes: DependencyNode[] = mcpServerUsages
|
|
55
|
+
.filter((u) => u.mcpServerRef)
|
|
56
|
+
.map((usage) => {
|
|
57
|
+
nodeCount++;
|
|
58
|
+
const ref = usage.mcpServerRef!;
|
|
59
|
+
const toolCount = usage.enabledTools.length;
|
|
60
|
+
|
|
61
|
+
return {
|
|
62
|
+
id: `mcp-server:${ref.slug}`,
|
|
63
|
+
kind: "mcp-server" as const,
|
|
64
|
+
label: ref.slug,
|
|
65
|
+
qualifiedLabel:
|
|
66
|
+
ref.org && ref.org !== agentOrg
|
|
67
|
+
? `${ref.org}/${ref.slug}`
|
|
68
|
+
: undefined,
|
|
69
|
+
metadata: {
|
|
70
|
+
tools:
|
|
71
|
+
toolCount > 0
|
|
72
|
+
? `${toolCount} ${toolCount === 1 ? "tool" : "tools"}`
|
|
73
|
+
: "all tools",
|
|
74
|
+
},
|
|
75
|
+
children: [],
|
|
76
|
+
ref: { org: ref.org || agentOrg, slug: ref.slug },
|
|
77
|
+
};
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
const skillNodes: DependencyNode[] = skillRefs.map((ref) => {
|
|
81
|
+
nodeCount++;
|
|
82
|
+
return {
|
|
83
|
+
id: `skill:${ref.slug}`,
|
|
84
|
+
kind: "skill" as const,
|
|
85
|
+
label: ref.slug,
|
|
86
|
+
qualifiedLabel:
|
|
87
|
+
ref.org && ref.org !== agentOrg
|
|
88
|
+
? `${ref.org}/${ref.slug}`
|
|
89
|
+
: undefined,
|
|
90
|
+
children: [],
|
|
91
|
+
ref: { org: ref.org || agentOrg, slug: ref.slug },
|
|
92
|
+
};
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
const subAgentNodes: DependencyNode[] = subAgents.map((sa) => {
|
|
96
|
+
nodeCount++;
|
|
97
|
+
|
|
98
|
+
const saMcpNodes: DependencyNode[] = sa.mcpAccess.map((access) => {
|
|
99
|
+
nodeCount++;
|
|
100
|
+
const toolCount = access.enabledTools.length;
|
|
101
|
+
return {
|
|
102
|
+
id: `sub-agent:${sa.name}:mcp-server:${access.mcpServer}`,
|
|
103
|
+
kind: "mcp-server" as const,
|
|
104
|
+
label: access.mcpServer,
|
|
105
|
+
metadata: {
|
|
106
|
+
tools:
|
|
107
|
+
toolCount > 0
|
|
108
|
+
? `${toolCount} ${toolCount === 1 ? "tool" : "tools"}`
|
|
109
|
+
: "all tools",
|
|
110
|
+
},
|
|
111
|
+
children: [],
|
|
112
|
+
ref: { org: agentOrg, slug: access.mcpServer },
|
|
113
|
+
};
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
const saSkillNodes: DependencyNode[] = sa.skillRefs.map((ref) => {
|
|
117
|
+
nodeCount++;
|
|
118
|
+
return {
|
|
119
|
+
id: `sub-agent:${sa.name}:skill:${ref.slug}`,
|
|
120
|
+
kind: "skill" as const,
|
|
121
|
+
label: ref.slug,
|
|
122
|
+
qualifiedLabel:
|
|
123
|
+
ref.org && ref.org !== agentOrg
|
|
124
|
+
? `${ref.org}/${ref.slug}`
|
|
125
|
+
: undefined,
|
|
126
|
+
children: [],
|
|
127
|
+
ref: { org: ref.org || agentOrg, slug: ref.slug },
|
|
128
|
+
};
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
const metadata: Record<string, string> = {};
|
|
132
|
+
if (sa.modelOverride) {
|
|
133
|
+
metadata.model = sa.modelOverride;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return {
|
|
137
|
+
id: `sub-agent:${sa.name}`,
|
|
138
|
+
kind: "sub-agent" as const,
|
|
139
|
+
label: sa.name,
|
|
140
|
+
description: sa.description || undefined,
|
|
141
|
+
metadata: Object.keys(metadata).length > 0 ? metadata : undefined,
|
|
142
|
+
children: [...saMcpNodes, ...saSkillNodes],
|
|
143
|
+
};
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
const root: DependencyNode = {
|
|
147
|
+
id: `agent:${agentName}`,
|
|
148
|
+
kind: "agent",
|
|
149
|
+
label: agentName,
|
|
150
|
+
children: [...mcpNodes, ...skillNodes, ...subAgentNodes],
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
return {
|
|
154
|
+
tree: { root, nodeCount },
|
|
155
|
+
isEmpty: false,
|
|
156
|
+
};
|
|
157
|
+
}, [agentName, agentOrg, spec]);
|
|
158
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { cn } from "@stigmer/theme";
|
|
4
|
+
import { useEmptyState } from "./useEmptyState";
|
|
5
|
+
import type { EmptyStateProps } from "./types";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* A semantic, accessible empty state component supporting four distinct
|
|
9
|
+
* variants: first-use, zero-results, permission, and error.
|
|
10
|
+
*
|
|
11
|
+
* Each variant provides appropriate default icons, copy, and ARIA roles.
|
|
12
|
+
* All defaults can be overridden via props. The `icon` prop accepts any
|
|
13
|
+
* ReactNode for full visual customization.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```tsx
|
|
17
|
+
* <EmptyState
|
|
18
|
+
* variant="first-use"
|
|
19
|
+
* resourceLabel="agents"
|
|
20
|
+
* action={{ label: "Create agent", onClick: handleCreate }}
|
|
21
|
+
* />
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```tsx
|
|
26
|
+
* <EmptyState
|
|
27
|
+
* variant="error"
|
|
28
|
+
* errorMessage="Network request failed"
|
|
29
|
+
* action={{ label: "Retry", onClick: handleRetry }}
|
|
30
|
+
* />
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export function EmptyState({
|
|
34
|
+
variant,
|
|
35
|
+
resourceLabel,
|
|
36
|
+
icon,
|
|
37
|
+
title,
|
|
38
|
+
description,
|
|
39
|
+
errorMessage,
|
|
40
|
+
action,
|
|
41
|
+
children,
|
|
42
|
+
className,
|
|
43
|
+
}: EmptyStateProps) {
|
|
44
|
+
const resolved = useEmptyState({
|
|
45
|
+
variant,
|
|
46
|
+
resourceLabel,
|
|
47
|
+
title,
|
|
48
|
+
description,
|
|
49
|
+
errorMessage,
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
return (
|
|
53
|
+
<div
|
|
54
|
+
role={resolved.role}
|
|
55
|
+
className={cn(
|
|
56
|
+
"flex flex-col items-center gap-3 py-12 text-center",
|
|
57
|
+
className,
|
|
58
|
+
)}
|
|
59
|
+
>
|
|
60
|
+
<div className="text-muted-foreground-faint">
|
|
61
|
+
{icon ?? resolved.defaultIcon}
|
|
62
|
+
</div>
|
|
63
|
+
<div className="flex flex-col gap-1">
|
|
64
|
+
<p className="text-sm font-medium text-muted-foreground">
|
|
65
|
+
{resolved.title}
|
|
66
|
+
</p>
|
|
67
|
+
<p className="max-w-sm text-xs text-muted-foreground-subtle">
|
|
68
|
+
{resolved.description}
|
|
69
|
+
</p>
|
|
70
|
+
</div>
|
|
71
|
+
{children
|
|
72
|
+
? <div className="mt-1">{children}</div>
|
|
73
|
+
: action && (
|
|
74
|
+
<button
|
|
75
|
+
type="button"
|
|
76
|
+
onClick={action.onClick}
|
|
77
|
+
className={cn(
|
|
78
|
+
"mt-1 inline-flex items-center rounded-md px-3 py-1.5 text-xs font-medium",
|
|
79
|
+
variant === "error"
|
|
80
|
+
? "border border-input bg-background text-foreground hover:bg-accent hover:text-accent-foreground"
|
|
81
|
+
: "bg-primary text-primary-foreground hover:bg-primary-hover",
|
|
82
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
83
|
+
)}
|
|
84
|
+
>
|
|
85
|
+
{action.label}
|
|
86
|
+
</button>
|
|
87
|
+
)}
|
|
88
|
+
</div>
|
|
89
|
+
);
|
|
90
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Semantic variant for an empty state, each representing a distinct
|
|
5
|
+
* reason why no content is visible.
|
|
6
|
+
*/
|
|
7
|
+
export type EmptyStateVariant =
|
|
8
|
+
| "first-use"
|
|
9
|
+
| "zero-results"
|
|
10
|
+
| "permission"
|
|
11
|
+
| "error";
|
|
12
|
+
|
|
13
|
+
/** Action rendered as a button within the empty state. */
|
|
14
|
+
export interface EmptyStateAction {
|
|
15
|
+
/** Button label. */
|
|
16
|
+
readonly label: string;
|
|
17
|
+
/** Click handler. */
|
|
18
|
+
readonly onClick: () => void;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** Options for the {@link useEmptyState} behavior hook. */
|
|
22
|
+
export interface UseEmptyStateOptions {
|
|
23
|
+
/** The semantic reason no content is shown. */
|
|
24
|
+
readonly variant: EmptyStateVariant;
|
|
25
|
+
/**
|
|
26
|
+
* Human-readable label for the resource type (e.g. "agents", "skills").
|
|
27
|
+
* Used to generate contextual default copy.
|
|
28
|
+
*/
|
|
29
|
+
readonly resourceLabel?: string;
|
|
30
|
+
/** Custom title override. When provided, replaces the generated default. */
|
|
31
|
+
readonly title?: string;
|
|
32
|
+
/** Custom description override. When provided, replaces the generated default. */
|
|
33
|
+
readonly description?: string;
|
|
34
|
+
/** Error message to display — relevant for the "error" variant. */
|
|
35
|
+
readonly errorMessage?: string;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/** Return value of the {@link useEmptyState} behavior hook. */
|
|
39
|
+
export interface UseEmptyStateReturn {
|
|
40
|
+
/** Resolved title text. */
|
|
41
|
+
readonly title: string;
|
|
42
|
+
/** Resolved description text. */
|
|
43
|
+
readonly description: string;
|
|
44
|
+
/** Suggested default icon for the variant (as a ReactNode). */
|
|
45
|
+
readonly defaultIcon: ReactNode;
|
|
46
|
+
/** The ARIA role appropriate for this variant. */
|
|
47
|
+
readonly role: "status" | "alert";
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/** Props for the styled {@link EmptyState} component. */
|
|
51
|
+
export interface EmptyStateProps {
|
|
52
|
+
/**
|
|
53
|
+
* The semantic reason no content is shown.
|
|
54
|
+
* Determines default icon, copy, and ARIA role.
|
|
55
|
+
*/
|
|
56
|
+
readonly variant: EmptyStateVariant;
|
|
57
|
+
/**
|
|
58
|
+
* Human-readable label for the resource type (e.g. "agents", "skills").
|
|
59
|
+
* Used to generate contextual default copy.
|
|
60
|
+
*/
|
|
61
|
+
readonly resourceLabel?: string;
|
|
62
|
+
/** Custom icon to display. Defaults to a variant-appropriate Lucide icon. */
|
|
63
|
+
readonly icon?: ReactNode;
|
|
64
|
+
/** Custom title override. */
|
|
65
|
+
readonly title?: string;
|
|
66
|
+
/** Custom description override. */
|
|
67
|
+
readonly description?: string;
|
|
68
|
+
/** Error message — only used when variant is "error". */
|
|
69
|
+
readonly errorMessage?: string;
|
|
70
|
+
/** Primary action button. */
|
|
71
|
+
readonly action?: EmptyStateAction;
|
|
72
|
+
/**
|
|
73
|
+
* Custom action slot content. When provided, renders in the action
|
|
74
|
+
* area (centered, below the description) instead of the `action` button.
|
|
75
|
+
* Use this when you need full control over the CTA element — e.g. a
|
|
76
|
+
* `<Link>` for client-side routing or a button with an icon.
|
|
77
|
+
*/
|
|
78
|
+
readonly children?: ReactNode;
|
|
79
|
+
/** Additional CSS classes for the root container. */
|
|
80
|
+
readonly className?: string;
|
|
81
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { useMemo, createElement } from "react";
|
|
2
|
+
import { Package, SearchX, Lock, AlertCircle } from "lucide-react";
|
|
3
|
+
import type { UseEmptyStateOptions, UseEmptyStateReturn } from "./types";
|
|
4
|
+
|
|
5
|
+
const ICON_CLASSES = "h-10 w-10";
|
|
6
|
+
|
|
7
|
+
function resolveDefaults(
|
|
8
|
+
variant: UseEmptyStateOptions["variant"],
|
|
9
|
+
resourceLabel: string,
|
|
10
|
+
): { title: string; description: string } {
|
|
11
|
+
switch (variant) {
|
|
12
|
+
case "first-use":
|
|
13
|
+
return {
|
|
14
|
+
title: `No ${resourceLabel} yet`,
|
|
15
|
+
description: `Create ${resourceLabel === "agents" ? "an agent" : `a ${resourceLabel.replace(/s$/, "")}`} to get started.`,
|
|
16
|
+
};
|
|
17
|
+
case "zero-results":
|
|
18
|
+
return {
|
|
19
|
+
title: "No results found",
|
|
20
|
+
description: "Try adjusting your search or filters.",
|
|
21
|
+
};
|
|
22
|
+
case "permission":
|
|
23
|
+
return {
|
|
24
|
+
title: `No access to ${resourceLabel}`,
|
|
25
|
+
description:
|
|
26
|
+
"You don't have permission to view these resources. Contact your organization admin.",
|
|
27
|
+
};
|
|
28
|
+
case "error":
|
|
29
|
+
return {
|
|
30
|
+
title: "Something went wrong",
|
|
31
|
+
description: "We couldn't load this content. Please try again.",
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function resolveIcon(variant: UseEmptyStateOptions["variant"]) {
|
|
37
|
+
switch (variant) {
|
|
38
|
+
case "first-use":
|
|
39
|
+
return createElement(Package, { className: ICON_CLASSES });
|
|
40
|
+
case "zero-results":
|
|
41
|
+
return createElement(SearchX, { className: ICON_CLASSES });
|
|
42
|
+
case "permission":
|
|
43
|
+
return createElement(Lock, { className: ICON_CLASSES });
|
|
44
|
+
case "error":
|
|
45
|
+
return createElement(AlertCircle, { className: ICON_CLASSES });
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function resolveRole(
|
|
50
|
+
variant: UseEmptyStateOptions["variant"],
|
|
51
|
+
): "status" | "alert" {
|
|
52
|
+
return variant === "error" ? "alert" : "status";
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Behavior hook that resolves empty state copy, icon, and accessibility
|
|
57
|
+
* attributes based on the semantic variant and optional overrides.
|
|
58
|
+
*
|
|
59
|
+
* Use this hook when you want full rendering control but need the
|
|
60
|
+
* variant-aware logic (default copy, icons, ARIA roles).
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```tsx
|
|
64
|
+
* const { title, description, defaultIcon, role } = useEmptyState({
|
|
65
|
+
* variant: "first-use",
|
|
66
|
+
* resourceLabel: "agents",
|
|
67
|
+
* });
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export function useEmptyState(options: UseEmptyStateOptions): UseEmptyStateReturn {
|
|
71
|
+
const { variant, resourceLabel = "resources", title, description, errorMessage } = options;
|
|
72
|
+
|
|
73
|
+
return useMemo(() => {
|
|
74
|
+
const defaults = resolveDefaults(variant, resourceLabel);
|
|
75
|
+
return {
|
|
76
|
+
title: title ?? defaults.title,
|
|
77
|
+
description:
|
|
78
|
+
variant === "error" && errorMessage
|
|
79
|
+
? errorMessage
|
|
80
|
+
: (description ?? defaults.description),
|
|
81
|
+
defaultIcon: resolveIcon(variant),
|
|
82
|
+
role: resolveRole(variant),
|
|
83
|
+
};
|
|
84
|
+
}, [variant, resourceLabel, title, description, errorMessage]);
|
|
85
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { Toaster } from "sonner";
|
|
4
|
+
import { useColorMode } from "../color-mode";
|
|
5
|
+
import type { StigmerToasterProps } from "./types";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Themed toast container for Stigmer SDK components.
|
|
9
|
+
*
|
|
10
|
+
* Uses `data-stgm-color-mode` (via {@link useColorMode}) instead of
|
|
11
|
+
* `next-themes` so it works identically in the Stigmer Console and in
|
|
12
|
+
* any third-party host application.
|
|
13
|
+
*
|
|
14
|
+
* Mount once near your `<StigmerProvider />`:
|
|
15
|
+
* ```tsx
|
|
16
|
+
* <StigmerProvider client={client}>
|
|
17
|
+
* <App />
|
|
18
|
+
* <StigmerToaster />
|
|
19
|
+
* </StigmerProvider>
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export function StigmerToaster(props: StigmerToasterProps) {
|
|
23
|
+
const colorMode = useColorMode();
|
|
24
|
+
|
|
25
|
+
return (
|
|
26
|
+
<Toaster
|
|
27
|
+
theme={colorMode}
|
|
28
|
+
position="top-right"
|
|
29
|
+
richColors
|
|
30
|
+
className="toaster group"
|
|
31
|
+
toastOptions={{
|
|
32
|
+
classNames: {
|
|
33
|
+
toast:
|
|
34
|
+
"group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",
|
|
35
|
+
description: "group-[.toast]:text-muted-foreground",
|
|
36
|
+
actionButton:
|
|
37
|
+
"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",
|
|
38
|
+
cancelButton:
|
|
39
|
+
"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground",
|
|
40
|
+
},
|
|
41
|
+
}}
|
|
42
|
+
{...props}
|
|
43
|
+
/>
|
|
44
|
+
);
|
|
45
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Re-export of Sonner's `toast` function with Stigmer defaults.
|
|
3
|
+
*
|
|
4
|
+
* Platform builders use this as their primary feedback mechanism:
|
|
5
|
+
* ```tsx
|
|
6
|
+
* import { toast } from "@stigmer/react";
|
|
7
|
+
*
|
|
8
|
+
* toast.success("Agent created");
|
|
9
|
+
* toast.error("Failed to save");
|
|
10
|
+
* toast("Skill removed", { action: { label: "Undo", onClick: undo } });
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export { toast } from "sonner";
|