@stigmer/react 0.4.7 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/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/execution/MessageThread.d.ts +1 -0
- package/execution/MessageThread.d.ts.map +1 -1
- package/execution/MessageThread.js +22 -12
- package/execution/MessageThread.js.map +1 -1
- package/execution/SetupProgress.d.ts +23 -9
- package/execution/SetupProgress.d.ts.map +1 -1
- package/execution/SetupProgress.js +30 -14
- package/execution/SetupProgress.js.map +1 -1
- package/execution/__tests__/thread-keys.test.js +82 -0
- package/execution/__tests__/thread-keys.test.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 +30 -10
- package/index.d.ts.map +1 -1
- package/index.js +29 -9
- 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 +29 -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/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 +113 -20
- 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/registry.d.ts +4 -1
- package/models/registry.d.ts.map +1 -1
- package/models/registry.js +6 -2
- package/models/registry.js.map +1 -1
- package/package.json +8 -4
- package/provider.js +1 -1
- 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/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/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/execution/MessageThread.tsx +26 -15
- package/src/execution/SetupProgress.tsx +35 -14
- package/src/execution/__tests__/thread-keys.test.ts +101 -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 +270 -8
- package/src/inline-edit/InlineEditImage.tsx +208 -0
- package/src/inline-edit/InlineEditKeyValue.tsx +278 -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/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 +392 -105
- 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/registry.ts +10 -2
- package/src/provider.tsx +1 -1
- 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/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
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
import { stringify as stringifyYaml } from "yaml";
|
|
2
|
+
import type {
|
|
3
|
+
AgentInput,
|
|
4
|
+
McpServerInput,
|
|
5
|
+
McpServerUsageInput,
|
|
6
|
+
SubAgentInput,
|
|
7
|
+
McpAccessInput,
|
|
8
|
+
ToolApprovalOverrideInput,
|
|
9
|
+
ResourceRef,
|
|
10
|
+
} from "@stigmer/sdk";
|
|
2
11
|
import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
|
|
3
12
|
import type {
|
|
4
13
|
AgentSpec,
|
|
@@ -398,3 +407,350 @@ function hasEntries(obj: Record<string, unknown> | undefined): boolean {
|
|
|
398
407
|
if (!obj) return false;
|
|
399
408
|
return Object.keys(obj).length > 0;
|
|
400
409
|
}
|
|
410
|
+
|
|
411
|
+
// ===========================================================================
|
|
412
|
+
// AgentInput serialization (from SDK input type, not proto)
|
|
413
|
+
// ===========================================================================
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* Serializes an {@link AgentInput} (SDK input type) into the canonical
|
|
417
|
+
* Stigmer YAML format.
|
|
418
|
+
*
|
|
419
|
+
* Unlike {@link serializeAgentYaml} which takes a proto `Agent`, this
|
|
420
|
+
* function works from the SDK input type — the same shape used by
|
|
421
|
+
* `stigmer.agent.apply()`. This is used by the creation wizard to
|
|
422
|
+
* preview the YAML before submission.
|
|
423
|
+
*
|
|
424
|
+
* The output is round-trip compatible with {@link parseResourceYaml}.
|
|
425
|
+
*
|
|
426
|
+
* @param input - The SDK `AgentInput` to serialize.
|
|
427
|
+
* @returns A YAML string in the canonical Stigmer resource format.
|
|
428
|
+
*
|
|
429
|
+
* @example
|
|
430
|
+
* ```ts
|
|
431
|
+
* import { serializeAgentInputYaml } from "@stigmer/react";
|
|
432
|
+
*
|
|
433
|
+
* const yaml = serializeAgentInputYaml({
|
|
434
|
+
* name: "my-agent",
|
|
435
|
+
* org: "acme",
|
|
436
|
+
* instructions: "You are a helpful assistant.",
|
|
437
|
+
* });
|
|
438
|
+
* ```
|
|
439
|
+
*/
|
|
440
|
+
export function serializeAgentInputYaml(input: AgentInput): string {
|
|
441
|
+
const doc: Record<string, unknown> = {
|
|
442
|
+
apiVersion: "agentic.stigmer.ai/v1",
|
|
443
|
+
kind: "Agent",
|
|
444
|
+
metadata: buildInputMetadata(input),
|
|
445
|
+
spec: buildAgentInputSpec(input),
|
|
446
|
+
};
|
|
447
|
+
|
|
448
|
+
return stringifyYaml(doc, { lineWidth: 0, blockQuote: "literal" });
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
function buildInputMetadata(input: AgentInput): Record<string, unknown> {
|
|
452
|
+
const result: Record<string, unknown> = {
|
|
453
|
+
name: input.name,
|
|
454
|
+
};
|
|
455
|
+
|
|
456
|
+
if (input.org) {
|
|
457
|
+
result.org = input.org;
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
if (input.slug && input.slug !== input.name) {
|
|
461
|
+
result.slug = input.slug;
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
if (input.labels && Object.keys(input.labels).length > 0) {
|
|
465
|
+
result.labels = { ...input.labels };
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
return result;
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
function buildAgentInputSpec(input: AgentInput): Record<string, unknown> {
|
|
472
|
+
const result: Record<string, unknown> = {};
|
|
473
|
+
|
|
474
|
+
if (input.description) {
|
|
475
|
+
result.description = input.description;
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
if (input.iconUrl) {
|
|
479
|
+
result.icon_url = input.iconUrl;
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
if (input.instructions) {
|
|
483
|
+
result.instructions = input.instructions;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
if (input.mcpServerUsages && input.mcpServerUsages.length > 0) {
|
|
487
|
+
result.mcp_server_usages = input.mcpServerUsages.map(serializeInputMcpUsage);
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
if (input.skillRefs && input.skillRefs.length > 0) {
|
|
491
|
+
result.skill_refs = input.skillRefs.map(serializeInputRef);
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
if (input.subAgents && input.subAgents.length > 0) {
|
|
495
|
+
result.sub_agents = input.subAgents.map(serializeInputSubAgent);
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
if (input.env && Object.keys(input.env).length > 0) {
|
|
499
|
+
result.env = serializeInputEnv(input.env);
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
return result;
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
function serializeInputMcpUsage(
|
|
506
|
+
usage: McpServerUsageInput,
|
|
507
|
+
): Record<string, unknown> {
|
|
508
|
+
const result: Record<string, unknown> = {
|
|
509
|
+
mcp_server_ref: serializeInputRef(usage.mcpServerRef),
|
|
510
|
+
};
|
|
511
|
+
|
|
512
|
+
if (usage.enabledTools && usage.enabledTools.length > 0) {
|
|
513
|
+
result.enabled_tools = [...usage.enabledTools];
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
if (usage.toolApprovalOverrides && usage.toolApprovalOverrides.length > 0) {
|
|
517
|
+
result.tool_approval_overrides =
|
|
518
|
+
usage.toolApprovalOverrides.map(serializeInputApprovalOverride);
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
return result;
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
function serializeInputApprovalOverride(
|
|
525
|
+
override: ToolApprovalOverrideInput,
|
|
526
|
+
): Record<string, unknown> {
|
|
527
|
+
const result: Record<string, unknown> = {};
|
|
528
|
+
|
|
529
|
+
if (override.toolName) {
|
|
530
|
+
result.tool_name = override.toolName;
|
|
531
|
+
}
|
|
532
|
+
if (override.requiresApproval != null) {
|
|
533
|
+
result.requires_approval = override.requiresApproval;
|
|
534
|
+
}
|
|
535
|
+
if (override.message) {
|
|
536
|
+
result.message = override.message;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
return result;
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
function serializeInputSubAgent(sub: SubAgentInput): Record<string, unknown> {
|
|
543
|
+
const result: Record<string, unknown> = {
|
|
544
|
+
name: sub.name,
|
|
545
|
+
};
|
|
546
|
+
|
|
547
|
+
if (sub.description) {
|
|
548
|
+
result.description = sub.description;
|
|
549
|
+
}
|
|
550
|
+
if (sub.instructions) {
|
|
551
|
+
result.instructions = sub.instructions;
|
|
552
|
+
}
|
|
553
|
+
if (sub.modelOverride) {
|
|
554
|
+
result.model_override = sub.modelOverride;
|
|
555
|
+
}
|
|
556
|
+
if (sub.mcpAccess && sub.mcpAccess.length > 0) {
|
|
557
|
+
result.mcp_access = sub.mcpAccess.map(serializeInputMcpAccess);
|
|
558
|
+
}
|
|
559
|
+
if (sub.skillRefs && sub.skillRefs.length > 0) {
|
|
560
|
+
result.skill_refs = sub.skillRefs.map(serializeInputRef);
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
return result;
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
function serializeInputMcpAccess(
|
|
567
|
+
access: McpAccessInput,
|
|
568
|
+
): Record<string, unknown> {
|
|
569
|
+
const result: Record<string, unknown> = {
|
|
570
|
+
mcp_server: access.mcpServer,
|
|
571
|
+
};
|
|
572
|
+
|
|
573
|
+
if (access.enabledTools && access.enabledTools.length > 0) {
|
|
574
|
+
result.enabled_tools = [...access.enabledTools];
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
return result;
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
function serializeInputRef(ref: ResourceRef): Record<string, unknown> {
|
|
581
|
+
const result: Record<string, unknown> = {};
|
|
582
|
+
|
|
583
|
+
if (ref.org) {
|
|
584
|
+
result.org = ref.org;
|
|
585
|
+
}
|
|
586
|
+
result.slug = ref.slug;
|
|
587
|
+
|
|
588
|
+
if (ref.version) {
|
|
589
|
+
result.version = ref.version;
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
return result;
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
function serializeInputEnv(
|
|
596
|
+
env: NonNullable<AgentInput["env"]>,
|
|
597
|
+
): Record<string, Record<string, unknown>> {
|
|
598
|
+
const result: Record<string, Record<string, unknown>> = {};
|
|
599
|
+
|
|
600
|
+
for (const [key, val] of Object.entries(env)) {
|
|
601
|
+
const entry: Record<string, unknown> = {};
|
|
602
|
+
|
|
603
|
+
if (val.isSecret) {
|
|
604
|
+
entry.is_secret = val.isSecret;
|
|
605
|
+
}
|
|
606
|
+
if (val.description) {
|
|
607
|
+
entry.description = val.description;
|
|
608
|
+
}
|
|
609
|
+
if (val.optional) {
|
|
610
|
+
entry.optional = val.optional;
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
result[key] = entry;
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
return result;
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
// ===========================================================================
|
|
620
|
+
// McpServerInput serialization (from SDK input type, not proto)
|
|
621
|
+
// ===========================================================================
|
|
622
|
+
|
|
623
|
+
/**
|
|
624
|
+
* Serializes a {@link McpServerInput} (SDK input type) into the canonical
|
|
625
|
+
* Stigmer YAML format.
|
|
626
|
+
*
|
|
627
|
+
* Unlike {@link serializeMcpServerYaml} which takes a proto `McpServer`,
|
|
628
|
+
* this function works from the SDK input type — the same shape used by
|
|
629
|
+
* `stigmer.mcpServer.apply()`. This is used by the creation wizard to
|
|
630
|
+
* preview the YAML before submission.
|
|
631
|
+
*
|
|
632
|
+
* The output is round-trip compatible with {@link parseResourceYaml}.
|
|
633
|
+
*
|
|
634
|
+
* @param input - The SDK `McpServerInput` to serialize.
|
|
635
|
+
* @returns A YAML string in the canonical Stigmer resource format.
|
|
636
|
+
*
|
|
637
|
+
* @example
|
|
638
|
+
* ```ts
|
|
639
|
+
* import { serializeMcpServerInputYaml } from "@stigmer/react";
|
|
640
|
+
*
|
|
641
|
+
* const yaml = serializeMcpServerInputYaml({
|
|
642
|
+
* name: "github",
|
|
643
|
+
* org: "acme",
|
|
644
|
+
* http: { url: "https://mcp.github.com/sse" },
|
|
645
|
+
* });
|
|
646
|
+
* ```
|
|
647
|
+
*/
|
|
648
|
+
export function serializeMcpServerInputYaml(input: McpServerInput): string {
|
|
649
|
+
const doc: Record<string, unknown> = {
|
|
650
|
+
apiVersion: "agentic.stigmer.ai/v1",
|
|
651
|
+
kind: "McpServer",
|
|
652
|
+
metadata: buildMcpServerInputMetadata(input),
|
|
653
|
+
spec: buildMcpServerInputSpec(input),
|
|
654
|
+
};
|
|
655
|
+
|
|
656
|
+
return stringifyYaml(doc, { lineWidth: 0, blockQuote: "literal" });
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
function buildMcpServerInputMetadata(
|
|
660
|
+
input: McpServerInput,
|
|
661
|
+
): Record<string, unknown> {
|
|
662
|
+
const result: Record<string, unknown> = {
|
|
663
|
+
name: input.name,
|
|
664
|
+
};
|
|
665
|
+
|
|
666
|
+
if (input.org) {
|
|
667
|
+
result.org = input.org;
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
if (input.slug && input.slug !== input.name) {
|
|
671
|
+
result.slug = input.slug;
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
if (input.labels && Object.keys(input.labels).length > 0) {
|
|
675
|
+
result.labels = { ...input.labels };
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
return result;
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
function buildMcpServerInputSpec(
|
|
682
|
+
input: McpServerInput,
|
|
683
|
+
): Record<string, unknown> {
|
|
684
|
+
const result: Record<string, unknown> = {};
|
|
685
|
+
|
|
686
|
+
if (input.description) {
|
|
687
|
+
result.description = input.description;
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
if (input.iconUrl) {
|
|
691
|
+
result.icon_url = input.iconUrl;
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
if (input.stdio) {
|
|
695
|
+
const stdio: Record<string, unknown> = {
|
|
696
|
+
command: input.stdio.command,
|
|
697
|
+
};
|
|
698
|
+
if (input.stdio.args && input.stdio.args.length > 0) {
|
|
699
|
+
stdio.args = [...input.stdio.args];
|
|
700
|
+
}
|
|
701
|
+
if (input.stdio.workingDir) {
|
|
702
|
+
stdio.working_dir = input.stdio.workingDir;
|
|
703
|
+
}
|
|
704
|
+
result.stdio = stdio;
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
if (input.http) {
|
|
708
|
+
const http: Record<string, unknown> = {
|
|
709
|
+
url: input.http.url,
|
|
710
|
+
};
|
|
711
|
+
if (input.http.headers && Object.keys(input.http.headers).length > 0) {
|
|
712
|
+
http.headers = { ...input.http.headers };
|
|
713
|
+
}
|
|
714
|
+
if (input.http.queryParams && Object.keys(input.http.queryParams).length > 0) {
|
|
715
|
+
http.query_params = { ...input.http.queryParams };
|
|
716
|
+
}
|
|
717
|
+
if (input.http.timeoutSeconds && input.http.timeoutSeconds > 0) {
|
|
718
|
+
http.timeout_seconds = input.http.timeoutSeconds;
|
|
719
|
+
}
|
|
720
|
+
result.http = http;
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
if (input.env && Object.keys(input.env).length > 0) {
|
|
724
|
+
result.env = serializeInputEnv(input.env);
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
if (input.auth) {
|
|
728
|
+
result.auth = serializeInputMcpServerAuth(input.auth);
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
return result;
|
|
732
|
+
}
|
|
733
|
+
|
|
734
|
+
function serializeInputMcpServerAuth(
|
|
735
|
+
auth: NonNullable<McpServerInput["auth"]>,
|
|
736
|
+
): Record<string, unknown> {
|
|
737
|
+
const result: Record<string, unknown> = {};
|
|
738
|
+
|
|
739
|
+
if (auth.oauthAppRef) {
|
|
740
|
+
result.oauth_app_ref = serializeInputRef(auth.oauthAppRef);
|
|
741
|
+
}
|
|
742
|
+
if (auth.targetEnvVar) {
|
|
743
|
+
result.target_env_var = auth.targetEnvVar;
|
|
744
|
+
}
|
|
745
|
+
if (auth.tokenLifetimeHint) {
|
|
746
|
+
result.token_lifetime_hint = auth.tokenLifetimeHint;
|
|
747
|
+
}
|
|
748
|
+
if (auth.scopeHints && auth.scopeHints.length > 0) {
|
|
749
|
+
result.scope_hints = [...auth.scopeHints];
|
|
750
|
+
}
|
|
751
|
+
if (auth.discoveryUrl) {
|
|
752
|
+
result.discovery_url = auth.discoveryUrl;
|
|
753
|
+
}
|
|
754
|
+
|
|
755
|
+
return result;
|
|
756
|
+
}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useMemo } from "react";
|
|
4
|
+
import { parse as parseYaml } from "yaml";
|
|
5
|
+
import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
|
|
6
|
+
import type { McpServer } from "@stigmer/protos/ai/stigmer/agentic/mcpserver/v1/api_pb";
|
|
7
|
+
import { toast } from "../feedback/toast";
|
|
8
|
+
import { serializeAgentYaml, serializeMcpServerYaml } from "./serialize-resource-yaml";
|
|
9
|
+
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
// Types
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
|
|
14
|
+
/** Options for {@link useExportResource}. */
|
|
15
|
+
export interface UseExportResourceOptions {
|
|
16
|
+
/** The resource kind — determines which serializer is used. */
|
|
17
|
+
readonly kind: "Agent" | "McpServer";
|
|
18
|
+
/** The proto resource to export, or `null` when not yet loaded. */
|
|
19
|
+
readonly resource: Agent | McpServer | null;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** Return value of {@link useExportResource}. */
|
|
23
|
+
export interface UseExportResourceReturn {
|
|
24
|
+
/** Copy the resource as YAML to the clipboard (with toast feedback). */
|
|
25
|
+
readonly copyYaml: () => Promise<void>;
|
|
26
|
+
/** Copy the resource as JSON to the clipboard (with toast feedback). */
|
|
27
|
+
readonly copyJson: () => Promise<void>;
|
|
28
|
+
/** Download the resource as a `.yaml` file. */
|
|
29
|
+
readonly downloadYaml: () => void;
|
|
30
|
+
/** Download the resource as a `.json` file. */
|
|
31
|
+
readonly downloadJson: () => void;
|
|
32
|
+
/** The serialized YAML string, or `null` when the resource is not loaded. */
|
|
33
|
+
readonly yaml: string | null;
|
|
34
|
+
/** The serialized JSON string, or `null` when the resource is not loaded. */
|
|
35
|
+
readonly json: string | null;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// ---------------------------------------------------------------------------
|
|
39
|
+
// Hook
|
|
40
|
+
// ---------------------------------------------------------------------------
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Headless export hook for Stigmer resources (Agent, McpServer).
|
|
44
|
+
*
|
|
45
|
+
* Serializes the resource into YAML and JSON formats and provides
|
|
46
|
+
* stable callbacks for copying to clipboard or triggering a file
|
|
47
|
+
* download. All operations are client-side — no additional API calls.
|
|
48
|
+
*
|
|
49
|
+
* The serialized output uses the canonical Stigmer resource format
|
|
50
|
+
* (`apiVersion`, `kind`, `metadata`, `spec`) with snake_case field
|
|
51
|
+
* names, identical to what the CLI produces and what `parseResourceYaml`
|
|
52
|
+
* accepts — ensuring full round-trip compatibility.
|
|
53
|
+
*
|
|
54
|
+
* @param options - Resource kind and the proto resource object.
|
|
55
|
+
* @returns Stable callbacks and memoized serialized strings.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```tsx
|
|
59
|
+
* const { agent } = useAgent(org, slug);
|
|
60
|
+
* const { copyYaml, downloadYaml } = useExportResource({
|
|
61
|
+
* kind: "Agent",
|
|
62
|
+
* resource: agent,
|
|
63
|
+
* });
|
|
64
|
+
*
|
|
65
|
+
* <ActionMenu.Item onSelect={copyYaml}>Export YAML</ActionMenu.Item>
|
|
66
|
+
* <ActionMenu.Item onSelect={downloadYaml}>Download YAML</ActionMenu.Item>
|
|
67
|
+
* ```
|
|
68
|
+
*
|
|
69
|
+
* @see {@link serializeAgentYaml} for the underlying Agent serializer
|
|
70
|
+
* @see {@link serializeMcpServerYaml} for the underlying McpServer serializer
|
|
71
|
+
*/
|
|
72
|
+
export function useExportResource({
|
|
73
|
+
kind,
|
|
74
|
+
resource,
|
|
75
|
+
}: UseExportResourceOptions): UseExportResourceReturn {
|
|
76
|
+
const yaml = useMemo<string | null>(() => {
|
|
77
|
+
if (!resource) return null;
|
|
78
|
+
if (kind === "Agent") return serializeAgentYaml(resource as Agent);
|
|
79
|
+
return serializeMcpServerYaml(resource as McpServer);
|
|
80
|
+
}, [kind, resource]);
|
|
81
|
+
|
|
82
|
+
const json = useMemo<string | null>(() => {
|
|
83
|
+
if (!resource) return null;
|
|
84
|
+
if (kind === "Agent") return serializeResourceJson(resource as Agent, "Agent");
|
|
85
|
+
return serializeResourceJson(resource as McpServer, "McpServer");
|
|
86
|
+
}, [kind, resource]);
|
|
87
|
+
|
|
88
|
+
const slug = useMemo<string>(() => {
|
|
89
|
+
if (!resource) return "resource";
|
|
90
|
+
return resource.metadata?.slug || resource.metadata?.name || "resource";
|
|
91
|
+
}, [resource]);
|
|
92
|
+
|
|
93
|
+
const copyYaml = useCallback(async () => {
|
|
94
|
+
if (!yaml) return;
|
|
95
|
+
await copyToClipboard(yaml);
|
|
96
|
+
toast.success("YAML copied to clipboard");
|
|
97
|
+
}, [yaml]);
|
|
98
|
+
|
|
99
|
+
const copyJson = useCallback(async () => {
|
|
100
|
+
if (!json) return;
|
|
101
|
+
await copyToClipboard(json);
|
|
102
|
+
toast.success("JSON copied to clipboard");
|
|
103
|
+
}, [json]);
|
|
104
|
+
|
|
105
|
+
const downloadYaml = useCallback(() => {
|
|
106
|
+
if (!yaml) return;
|
|
107
|
+
downloadFile(yaml, `${slug}.yaml`, "text/yaml");
|
|
108
|
+
}, [yaml, slug]);
|
|
109
|
+
|
|
110
|
+
const downloadJson = useCallback(() => {
|
|
111
|
+
if (!json) return;
|
|
112
|
+
downloadFile(json, `${slug}.json`, "application/json");
|
|
113
|
+
}, [json, slug]);
|
|
114
|
+
|
|
115
|
+
return useMemo(
|
|
116
|
+
() => ({ copyYaml, copyJson, downloadYaml, downloadJson, yaml, json }),
|
|
117
|
+
[copyYaml, copyJson, downloadYaml, downloadJson, yaml, json],
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// ---------------------------------------------------------------------------
|
|
122
|
+
// JSON serialization
|
|
123
|
+
// ---------------------------------------------------------------------------
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Produces a JSON representation of the resource using the same canonical
|
|
127
|
+
* structure as the YAML export (apiVersion, kind, metadata, spec).
|
|
128
|
+
*
|
|
129
|
+
* Internally parses the YAML output to get a clean plain object, then
|
|
130
|
+
* re-stringifies as JSON. This guarantees the JSON structure is identical
|
|
131
|
+
* to the YAML structure (snake_case fields, no status).
|
|
132
|
+
*/
|
|
133
|
+
function serializeResourceJson(
|
|
134
|
+
resource: Agent | McpServer,
|
|
135
|
+
kind: "Agent" | "McpServer",
|
|
136
|
+
): string {
|
|
137
|
+
const yamlStr = kind === "Agent"
|
|
138
|
+
? serializeAgentYaml(resource as Agent)
|
|
139
|
+
: serializeMcpServerYaml(resource as McpServer);
|
|
140
|
+
|
|
141
|
+
const doc = parseYaml(yamlStr);
|
|
142
|
+
return JSON.stringify(doc, null, 2);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// ---------------------------------------------------------------------------
|
|
146
|
+
// Clipboard
|
|
147
|
+
// ---------------------------------------------------------------------------
|
|
148
|
+
|
|
149
|
+
async function copyToClipboard(text: string): Promise<void> {
|
|
150
|
+
try {
|
|
151
|
+
await navigator.clipboard.writeText(text);
|
|
152
|
+
} catch {
|
|
153
|
+
fallbackCopy(text);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
function fallbackCopy(text: string): void {
|
|
158
|
+
const textarea = document.createElement("textarea");
|
|
159
|
+
textarea.value = text;
|
|
160
|
+
textarea.style.position = "fixed";
|
|
161
|
+
textarea.style.opacity = "0";
|
|
162
|
+
document.body.appendChild(textarea);
|
|
163
|
+
textarea.select();
|
|
164
|
+
document.execCommand("copy");
|
|
165
|
+
document.body.removeChild(textarea);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// ---------------------------------------------------------------------------
|
|
169
|
+
// File download
|
|
170
|
+
// ---------------------------------------------------------------------------
|
|
171
|
+
|
|
172
|
+
function downloadFile(content: string, filename: string, mimeType: string): void {
|
|
173
|
+
const blob = new Blob([content], { type: `${mimeType};charset=utf-8;` });
|
|
174
|
+
const url = URL.createObjectURL(blob);
|
|
175
|
+
const link = document.createElement("a");
|
|
176
|
+
link.href = url;
|
|
177
|
+
link.download = filename;
|
|
178
|
+
link.style.display = "none";
|
|
179
|
+
document.body.appendChild(link);
|
|
180
|
+
link.click();
|
|
181
|
+
document.body.removeChild(link);
|
|
182
|
+
URL.revokeObjectURL(url);
|
|
183
|
+
}
|