@stigmer/react 3.11.0 → 3.12.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/activity/useRecentActivity.d.ts +3 -2
- package/activity/useRecentActivity.d.ts.map +1 -1
- package/activity/useRecentActivity.js +3 -2
- package/activity/useRecentActivity.js.map +1 -1
- package/agent/AgentDetailView.d.ts +2 -12
- package/agent/AgentDetailView.d.ts.map +1 -1
- package/agent/AgentDetailView.js +10 -42
- package/agent/AgentDetailView.js.map +1 -1
- package/agent/internal/agentToInput.d.ts.map +1 -1
- package/agent/internal/agentToInput.js +0 -8
- package/agent/internal/agentToInput.js.map +1 -1
- package/agent-instance/AgentInstanceList.d.ts.map +1 -1
- package/agent-instance/AgentInstanceList.js +2 -1
- package/agent-instance/AgentInstanceList.js.map +1 -1
- package/api-key/ApiKeyListPanel.d.ts.map +1 -1
- package/api-key/ApiKeyListPanel.js +2 -1
- package/api-key/ApiKeyListPanel.js.map +1 -1
- package/attachment/AttachmentChipList.d.ts.map +1 -1
- package/attachment/AttachmentChipList.js +9 -8
- package/attachment/AttachmentChipList.js.map +1 -1
- package/attachment/AttachmentImageLightbox.d.ts.map +1 -1
- package/attachment/AttachmentImageLightbox.js +1 -1
- package/attachment/AttachmentImageLightbox.js.map +1 -1
- package/channel/AgentChannelsPanel.d.ts.map +1 -1
- package/channel/AgentChannelsPanel.js +2 -1
- package/channel/AgentChannelsPanel.js.map +1 -1
- package/channel/ChannelConversationsDialog.d.ts.map +1 -1
- package/channel/ChannelConversationsDialog.js +2 -1
- package/channel/ChannelConversationsDialog.js.map +1 -1
- package/channel/ChannelTemplatesDialog.d.ts.map +1 -1
- package/channel/ChannelTemplatesDialog.js +2 -1
- package/channel/ChannelTemplatesDialog.js.map +1 -1
- package/channel-app/internal.d.ts.map +1 -1
- package/channel-app/internal.js +2 -1
- package/channel-app/internal.js.map +1 -1
- package/composer/ComposerToolbar.d.ts.map +1 -1
- package/composer/ComposerToolbar.js +10 -7
- package/composer/ComposerToolbar.js.map +1 -1
- package/composer/ConfigureMenu.d.ts.map +1 -1
- package/composer/ConfigureMenu.js +2 -1
- package/composer/ConfigureMenu.js.map +1 -1
- package/composer/ContextChip.d.ts.map +1 -1
- package/composer/ContextChip.js +2 -1
- package/composer/ContextChip.js.map +1 -1
- package/composer/ContextPopover.d.ts.map +1 -1
- package/composer/ContextPopover.js +2 -1
- package/composer/ContextPopover.js.map +1 -1
- package/composer/SessionComposer.d.ts +13 -0
- package/composer/SessionComposer.d.ts.map +1 -1
- package/composer/SessionComposer.js +12 -2
- package/composer/SessionComposer.js.map +1 -1
- package/conversation/ConversationMediaAttachment.d.ts.map +1 -1
- package/conversation/ConversationMediaAttachment.js +2 -1
- package/conversation/ConversationMediaAttachment.js.map +1 -1
- package/conversation/ConversationTimelineView.d.ts.map +1 -1
- package/conversation/ConversationTimelineView.js +14 -4
- package/conversation/ConversationTimelineView.js.map +1 -1
- package/conversation/conversationPresentation.d.ts +28 -0
- package/conversation/conversationPresentation.d.ts.map +1 -1
- package/conversation/conversationPresentation.js +38 -1
- package/conversation/conversationPresentation.js.map +1 -1
- package/cursor-accounts/MemberCoverageTable.d.ts.map +1 -1
- package/cursor-accounts/MemberCoverageTable.js +6 -5
- package/cursor-accounts/MemberCoverageTable.js.map +1 -1
- package/dashboard/DashboardKPICards.d.ts.map +1 -1
- package/dashboard/DashboardKPICards.js +3 -1
- package/dashboard/DashboardKPICards.js.map +1 -1
- package/dependency-graph/DependencyTreeNode.d.ts.map +1 -1
- package/dependency-graph/DependencyTreeNode.js +1 -7
- package/dependency-graph/DependencyTreeNode.js.map +1 -1
- package/dependency-graph/types.d.ts +8 -20
- package/dependency-graph/types.d.ts.map +1 -1
- package/dependency-graph/useDependencyGraph.d.ts.map +1 -1
- package/dependency-graph/useDependencyGraph.js +2 -20
- package/dependency-graph/useDependencyGraph.js.map +1 -1
- package/environment/EnvironmentVariableEditor.d.ts.map +1 -1
- package/environment/EnvironmentVariableEditor.js +2 -1
- package/environment/EnvironmentVariableEditor.js.map +1 -1
- package/execution/ApprovalCard.d.ts.map +1 -1
- package/execution/ApprovalCard.js +1 -1
- package/execution/ApprovalCard.js.map +1 -1
- package/execution/ArtifactRowView.d.ts.map +1 -1
- package/execution/ArtifactRowView.js +2 -1
- package/execution/ArtifactRowView.js.map +1 -1
- package/execution/FilePathLink.d.ts +4 -4
- package/execution/FilePathLink.d.ts.map +1 -1
- package/execution/FilePathLink.js +4 -4
- package/execution/FilePathLink.js.map +1 -1
- package/execution/McpToolDetail.d.ts.map +1 -1
- package/execution/McpToolDetail.js +2 -1
- package/execution/McpToolDetail.js.map +1 -1
- package/execution/MessageAttachments.d.ts.map +1 -1
- package/execution/MessageAttachments.js +10 -8
- package/execution/MessageAttachments.js.map +1 -1
- package/execution/MessageEntry.d.ts.map +1 -1
- package/execution/MessageEntry.js +2 -1
- package/execution/MessageEntry.js.map +1 -1
- package/execution/PlanArtifactCard.d.ts.map +1 -1
- package/execution/PlanArtifactCard.js +7 -4
- package/execution/PlanArtifactCard.js.map +1 -1
- package/execution/ToolCallDetail.d.ts.map +1 -1
- package/execution/ToolCallDetail.js +1 -1
- package/execution/ToolCallDetail.js.map +1 -1
- package/execution/ToolCallItem.d.ts.map +1 -1
- package/execution/ToolCallItem.js +5 -1
- package/execution/ToolCallItem.js.map +1 -1
- package/execution/WriteBackCard.d.ts.map +1 -1
- package/execution/WriteBackCard.js +6 -4
- package/execution/WriteBackCard.js.map +1 -1
- package/execution/artifact-row-item.d.ts +1 -1
- package/execution/artifact-row-item.d.ts.map +1 -1
- package/file-reference/FileReferenceChipList.d.ts.map +1 -1
- package/file-reference/FileReferenceChipList.js +6 -1
- package/file-reference/FileReferenceChipList.js.map +1 -1
- package/iam-policy/OrgMembersPanel.d.ts.map +1 -1
- package/iam-policy/OrgMembersPanel.js +6 -5
- package/iam-policy/OrgMembersPanel.js.map +1 -1
- package/iam-policy/ProviderBadge.d.ts.map +1 -1
- package/iam-policy/ProviderBadge.js +3 -2
- package/iam-policy/ProviderBadge.js.map +1 -1
- package/iam-policy/RoleSelector.d.ts.map +1 -1
- package/iam-policy/RoleSelector.js +1 -1
- package/iam-policy/RoleSelector.js.map +1 -1
- package/identity-provider/IdentityProviderListPanel.d.ts.map +1 -1
- package/identity-provider/IdentityProviderListPanel.js +2 -1
- package/identity-provider/IdentityProviderListPanel.js.map +1 -1
- package/index.d.ts +0 -2
- package/index.d.ts.map +1 -1
- package/index.js +0 -6
- package/index.js.map +1 -1
- package/internal/truncated-text.d.ts +17 -0
- package/internal/truncated-text.d.ts.map +1 -0
- package/internal/truncated-text.js +27 -0
- package/internal/truncated-text.js.map +1 -0
- package/invitation/InvitationManager.d.ts.map +1 -1
- package/invitation/InvitationManager.js +4 -3
- package/invitation/InvitationManager.js.map +1 -1
- package/library/ScopeToggle.d.ts.map +1 -1
- package/library/ScopeToggle.js +10 -2
- package/library/ScopeToggle.js.map +1 -1
- package/library/VisibilitySelector.d.ts.map +1 -1
- package/library/VisibilitySelector.js +2 -1
- package/library/VisibilitySelector.js.map +1 -1
- package/library/useExportResource.d.ts +3 -4
- package/library/useExportResource.d.ts.map +1 -1
- package/library/useExportResource.js +1 -1
- package/library/useExportResource.js.map +1 -1
- package/manifest/EditResourceYamlDialog.d.ts.map +1 -1
- package/manifest/EditResourceYamlDialog.js.map +1 -1
- package/mcp-server/McpServerConfigPanel.d.ts +30 -1
- package/mcp-server/McpServerConfigPanel.d.ts.map +1 -1
- package/mcp-server/McpServerConfigPanel.js +18 -8
- package/mcp-server/McpServerConfigPanel.js.map +1 -1
- package/mcp-server/McpServerConnectDialog.d.ts +12 -1
- package/mcp-server/McpServerConnectDialog.d.ts.map +1 -1
- package/mcp-server/McpServerConnectDialog.js +8 -7
- package/mcp-server/McpServerConnectDialog.js.map +1 -1
- package/mcp-server/McpServerDetailView.d.ts.map +1 -1
- package/mcp-server/McpServerDetailView.js +4 -4
- package/mcp-server/McpServerDetailView.js.map +1 -1
- package/mcp-server/McpServerPicker.d.ts.map +1 -1
- package/mcp-server/McpServerPicker.js +86 -5
- package/mcp-server/McpServerPicker.js.map +1 -1
- package/mcp-server/McpToolSelector.d.ts.map +1 -1
- package/mcp-server/McpToolSelector.js +2 -1
- package/mcp-server/McpToolSelector.js.map +1 -1
- package/mcp-server/VendorApprovalBlockedNotice.d.ts +77 -0
- package/mcp-server/VendorApprovalBlockedNotice.d.ts.map +1 -0
- package/mcp-server/VendorApprovalBlockedNotice.js +62 -0
- package/mcp-server/VendorApprovalBlockedNotice.js.map +1 -0
- package/mcp-server/mcpServerSetupReducer.d.ts +18 -0
- package/mcp-server/mcpServerSetupReducer.d.ts.map +1 -1
- package/mcp-server/mcpServerSetupReducer.js +6 -0
- package/mcp-server/mcpServerSetupReducer.js.map +1 -1
- package/mcp-server/useMcpServerSetup.d.ts.map +1 -1
- package/mcp-server/useMcpServerSetup.js +7 -0
- package/mcp-server/useMcpServerSetup.js.map +1 -1
- package/oauth-app/OAuthAppListPanel.d.ts.map +1 -1
- package/oauth-app/OAuthAppListPanel.js +2 -1
- package/oauth-app/OAuthAppListPanel.js.map +1 -1
- package/package.json +4 -4
- package/platform-client/PlatformClientListPanel.d.ts.map +1 -1
- package/platform-client/PlatformClientListPanel.js +3 -2
- package/platform-client/PlatformClientListPanel.js.map +1 -1
- package/pricing-governance/BaselineEditor.d.ts.map +1 -1
- package/pricing-governance/BaselineEditor.js +7 -1
- package/pricing-governance/BaselineEditor.js.map +1 -1
- package/pricing-governance/ModelCatalogPanel.d.ts.map +1 -1
- package/pricing-governance/ModelCatalogPanel.js +2 -1
- package/pricing-governance/ModelCatalogPanel.js.map +1 -1
- package/pricing-governance/PricingGovernanceConsole.d.ts.map +1 -1
- package/pricing-governance/PricingGovernanceConsole.js +2 -1
- package/pricing-governance/PricingGovernanceConsole.js.map +1 -1
- package/pricing-governance/PricingGovernancePanel.d.ts.map +1 -1
- package/pricing-governance/PricingGovernancePanel.js +2 -1
- package/pricing-governance/PricingGovernancePanel.js.map +1 -1
- package/resource-workbench/components/StatusBadge.d.ts.map +1 -1
- package/resource-workbench/components/StatusBadge.js +2 -1
- package/resource-workbench/components/StatusBadge.js.map +1 -1
- package/schedule/CadenceField.d.ts.map +1 -1
- package/schedule/CadenceField.js +15 -8
- package/schedule/CadenceField.js.map +1 -1
- package/schedule/ScheduleRunsTable.d.ts.map +1 -1
- package/schedule/ScheduleRunsTable.js +3 -2
- package/schedule/ScheduleRunsTable.js.map +1 -1
- package/session/PlanEditor.d.ts.map +1 -1
- package/session/PlanEditor.js +3 -5
- package/session/PlanEditor.js.map +1 -1
- package/sharing/AgentShareList.d.ts.map +1 -1
- package/sharing/AgentShareList.js +3 -1
- package/sharing/AgentShareList.js.map +1 -1
- package/sharing/ShareAgentDialog.d.ts.map +1 -1
- package/sharing/ShareAgentDialog.js +2 -1
- package/sharing/ShareAgentDialog.js.map +1 -1
- package/skill/SkillDetailView.d.ts.map +1 -1
- package/skill/SkillDetailView.js +3 -2
- package/skill/SkillDetailView.js.map +1 -1
- package/src/__tests__/helpers/open-menu.ts +88 -0
- package/src/__tests__/portal-container.test.tsx +3 -3
- package/src/activity/useRecentActivity.ts +3 -2
- package/src/agent/AgentDetailView.tsx +6 -130
- package/src/agent/internal/__tests__/agentToInput.test.ts +2 -11
- package/src/agent/internal/agentToInput.ts +0 -11
- package/src/agent-instance/AgentInstanceList.tsx +5 -6
- package/src/agent-instance/__tests__/AgentInstanceList.test.tsx +5 -4
- package/src/api-key/ApiKeyListPanel.tsx +11 -3
- package/src/attachment/AttachmentChipList.tsx +74 -65
- package/src/attachment/AttachmentImageLightbox.tsx +5 -4
- package/src/attachment/__tests__/AttachmentChipList.test.tsx +4 -3
- package/src/channel/AgentChannelsPanel.tsx +5 -6
- package/src/channel/ChannelConversationsDialog.tsx +5 -3
- package/src/channel/ChannelTemplatesDialog.tsx +5 -6
- package/src/channel/__tests__/AgentChannelsPanel.test.tsx +14 -9
- package/src/channel-app/internal.tsx +5 -6
- package/src/composer/ComposerToolbar.tsx +122 -90
- package/src/composer/ConfigureMenu.tsx +33 -24
- package/src/composer/ContextChip.tsx +2 -3
- package/src/composer/ContextPopover.tsx +27 -18
- package/src/composer/SessionComposer.tsx +41 -9
- package/src/composer/__tests__/SessionComposer-agentSetupError.test.tsx +124 -0
- package/src/composer/__tests__/SessionComposer-lockAgent.test.tsx +4 -9
- package/src/conversation/ConversationMediaAttachment.tsx +2 -2
- package/src/conversation/ConversationTimelineView.tsx +19 -2
- package/src/conversation/__tests__/ConversationTimelineView.test.tsx +106 -3
- package/src/conversation/conversationPresentation.ts +52 -1
- package/src/cursor-accounts/MemberCoverageTable.tsx +15 -13
- package/src/cursor-accounts/__tests__/CursorAccountsConsole.test.tsx +4 -4
- package/src/dashboard/DashboardKPICards.tsx +2 -1
- package/src/dependency-graph/DependencyTreeNode.tsx +1 -7
- package/src/dependency-graph/__tests__/useDependencyGraph.test.ts +18 -34
- package/src/dependency-graph/types.ts +8 -20
- package/src/dependency-graph/useDependencyGraph.ts +2 -22
- package/src/environment/EnvironmentVariableEditor.tsx +17 -6
- package/src/execution/ApprovalCard.tsx +1 -3
- package/src/execution/ArtifactRowView.tsx +68 -48
- package/src/execution/FilePathLink.tsx +43 -27
- package/src/execution/McpToolDetail.tsx +6 -2
- package/src/execution/MessageAttachments.tsx +57 -41
- package/src/execution/MessageEntry.tsx +22 -15
- package/src/execution/PlanArtifactCard.tsx +25 -18
- package/src/execution/ToolCallDetail.tsx +1 -4
- package/src/execution/ToolCallItem.tsx +18 -7
- package/src/execution/WriteBackCard.tsx +38 -29
- package/src/execution/__tests__/ArtifactRow.test.tsx +6 -2
- package/src/execution/__tests__/ArtifactRowView.test.tsx +5 -2
- package/src/execution/__tests__/FilePathLink.test.tsx +10 -6
- package/src/execution/__tests__/FileReviewCard.test.tsx +2 -1
- package/src/execution/__tests__/MessageEntry-attachments.test.tsx +3 -2
- package/src/execution/__tests__/MessageThread.test.tsx +6 -1
- package/src/execution/__tests__/artifact-row-tooltips.layout.test.tsx +115 -0
- package/src/execution/artifact-row-item.ts +1 -1
- package/src/file-reference/FileReferenceChipList.tsx +29 -17
- package/src/file-reference/__tests__/FileReferenceChipList.test.tsx +5 -2
- package/src/iam-policy/OrgMembersPanel.tsx +26 -19
- package/src/iam-policy/ProviderBadge.tsx +17 -10
- package/src/iam-policy/RoleSelector.tsx +0 -1
- package/src/identity-provider/IdentityProviderListPanel.tsx +11 -3
- package/src/index.ts +0 -82
- package/src/internal/__tests__/truncated-text.layout.test.tsx +68 -0
- package/src/internal/__tests__/truncated-text.test.tsx +33 -0
- package/src/internal/truncated-text.tsx +81 -0
- package/src/invitation/InvitationManager.tsx +18 -5
- package/src/library/ScopeToggle.tsx +14 -2
- package/src/library/VisibilitySelector.tsx +21 -14
- package/src/library/useExportResource.ts +3 -4
- package/src/manifest/EditResourceYamlDialog.tsx +1 -2
- package/src/manifest/__tests__/ApplyManifestDialog.test.tsx +2 -2
- package/src/manifest/__tests__/EditResourceYamlDialog.test.tsx +9 -9
- package/src/mcp-server/McpServerConfigPanel.tsx +79 -37
- package/src/mcp-server/McpServerConnectDialog.tsx +41 -5
- package/src/mcp-server/McpServerDetailView.tsx +23 -39
- package/src/mcp-server/McpServerPicker.tsx +99 -7
- package/src/mcp-server/McpToolSelector.tsx +12 -7
- package/src/mcp-server/VendorApprovalBlockedNotice.tsx +221 -0
- package/src/mcp-server/__tests__/McpServerPicker.test.tsx +504 -0
- package/src/mcp-server/__tests__/VendorApprovalBlocked.surfaces.test.tsx +321 -0
- package/src/mcp-server/__tests__/VendorApprovalBlockedNotice.test.tsx +154 -0
- package/src/mcp-server/mcpServerSetupReducer.ts +24 -0
- package/src/mcp-server/useMcpServerSetup.ts +9 -0
- package/src/oauth-app/OAuthAppListPanel.tsx +11 -3
- package/src/platform-client/PlatformClientListPanel.tsx +35 -18
- package/src/pricing-governance/BaselineEditor.tsx +20 -0
- package/src/pricing-governance/ModelCatalogPanel.tsx +9 -5
- package/src/pricing-governance/PricingGovernanceConsole.tsx +9 -5
- package/src/pricing-governance/PricingGovernancePanel.tsx +13 -4
- package/src/pricing-governance/__tests__/ModelCatalogPanel.test.tsx +37 -0
- package/src/resource-workbench/components/StatusBadge.tsx +7 -3
- package/src/schedule/CadenceField.tsx +38 -27
- package/src/schedule/ScheduleRunsTable.tsx +23 -11
- package/src/schedule/__tests__/cadence-tooltips.layout.test.tsx +86 -0
- package/src/session/PlanEditor.tsx +9 -8
- package/src/sharing/AgentShareList.tsx +28 -22
- package/src/sharing/ShareAgentDialog.tsx +5 -6
- package/src/sharing/__tests__/AgentShareList.test.tsx +4 -4
- package/src/skill/SkillDetailView.tsx +23 -12
- package/src/version-history/VersionTimelineEntry.tsx +21 -12
- package/src/workflow/CanvasTransitionEdge.tsx +23 -16
- package/src/workflow/ExecutionActiveTaskIndicator.tsx +74 -59
- package/src/workflow/TaskPickerPopover.tsx +0 -1
- package/src/workflow/WorkflowCanvasEditor.tsx +95 -64
- package/src/workflow/WorkflowNode.tsx +13 -6
- package/src/workflow/WorkflowTaskApprovalSummary.tsx +18 -11
- package/src/workflow/WorkflowTaskList.tsx +2 -2
- package/src/workflow/WorkflowVersionBadge.tsx +33 -18
- package/src/workflow/WorkflowVersionTimeline.tsx +7 -6
- package/src/workflow/__tests__/WorkflowTaskApprovalSummary.test.tsx +3 -1
- package/src/workflow/__tests__/structured-data-viewer.test.tsx +5 -2
- package/src/workflow/execution-comparison/ExecutionComparisonView.tsx +5 -3
- package/src/workflow/execution-comparison/TaskComparisonTable.tsx +12 -5
- package/src/workflow/execution-history/ExecutionHistoryTable.tsx +24 -15
- package/src/workflow/inspector/InspectorHeader.tsx +20 -11
- package/src/workflow/inspector/NestedTaskList.tsx +18 -11
- package/src/workflow/inspector/WorkflowSummaryPanel.tsx +5 -3
- package/src/workflow/inspector/tabs/BranchesTab.tsx +61 -31
- package/src/workflow/instance/WorkflowInstanceList.tsx +5 -6
- package/src/workflow/instance/__tests__/WorkflowInstanceList.test.tsx +5 -4
- package/src/workflow/node-shell/DiffBadge.tsx +18 -11
- package/src/workflow/node-shell/ExecutionBadge.tsx +73 -46
- package/src/workflow/node-shell/NodeActions.tsx +128 -94
- package/src/workflow/task-detail/StructuredDataViewer.tsx +4 -2
- package/src/workspace/EditorTabs.tsx +102 -85
- package/src/workspace/ExplorerTree.tsx +47 -30
- package/src/workspace/FileViewer.tsx +11 -3
- package/src/workspace/PanelChip.tsx +32 -23
- package/src/workspace/WorkspaceEditor.tsx +21 -9
- package/src/workspace/WorkspaceSummary.tsx +21 -12
- package/src/workspace/WorkspaceSurface.tsx +86 -61
- package/src/workspace/__tests__/EditorTabs.test.tsx +5 -2
- package/src/workspace/__tests__/WorkspaceSurface.test.tsx +5 -2
- package/styles.css +1 -1
- package/version-history/VersionTimelineEntry.d.ts.map +1 -1
- package/version-history/VersionTimelineEntry.js +2 -1
- package/version-history/VersionTimelineEntry.js.map +1 -1
- package/workflow/CanvasTransitionEdge.d.ts +1 -1
- package/workflow/CanvasTransitionEdge.d.ts.map +1 -1
- package/workflow/CanvasTransitionEdge.js +3 -2
- package/workflow/CanvasTransitionEdge.js.map +1 -1
- package/workflow/ExecutionActiveTaskIndicator.d.ts.map +1 -1
- package/workflow/ExecutionActiveTaskIndicator.js +12 -11
- package/workflow/ExecutionActiveTaskIndicator.js.map +1 -1
- package/workflow/TaskPickerPopover.js +1 -1
- package/workflow/TaskPickerPopover.js.map +1 -1
- package/workflow/WorkflowCanvasEditor.d.ts.map +1 -1
- package/workflow/WorkflowCanvasEditor.js +9 -2
- package/workflow/WorkflowCanvasEditor.js.map +1 -1
- package/workflow/WorkflowNode.d.ts.map +1 -1
- package/workflow/WorkflowNode.js +2 -1
- package/workflow/WorkflowNode.js.map +1 -1
- package/workflow/WorkflowTaskApprovalSummary.d.ts.map +1 -1
- package/workflow/WorkflowTaskApprovalSummary.js +6 -4
- package/workflow/WorkflowTaskApprovalSummary.js.map +1 -1
- package/workflow/WorkflowTaskList.js +2 -2
- package/workflow/WorkflowTaskList.js.map +1 -1
- package/workflow/WorkflowVersionBadge.d.ts.map +1 -1
- package/workflow/WorkflowVersionBadge.js +2 -1
- package/workflow/WorkflowVersionBadge.js.map +1 -1
- package/workflow/WorkflowVersionTimeline.d.ts.map +1 -1
- package/workflow/WorkflowVersionTimeline.js +2 -1
- package/workflow/WorkflowVersionTimeline.js.map +1 -1
- package/workflow/execution-comparison/ExecutionComparisonView.d.ts.map +1 -1
- package/workflow/execution-comparison/ExecutionComparisonView.js +2 -1
- package/workflow/execution-comparison/ExecutionComparisonView.js.map +1 -1
- package/workflow/execution-comparison/TaskComparisonTable.d.ts.map +1 -1
- package/workflow/execution-comparison/TaskComparisonTable.js +2 -1
- package/workflow/execution-comparison/TaskComparisonTable.js.map +1 -1
- package/workflow/execution-history/ExecutionHistoryTable.d.ts.map +1 -1
- package/workflow/execution-history/ExecutionHistoryTable.js +6 -4
- package/workflow/execution-history/ExecutionHistoryTable.js.map +1 -1
- package/workflow/inspector/InspectorHeader.d.ts.map +1 -1
- package/workflow/inspector/InspectorHeader.js +4 -2
- package/workflow/inspector/InspectorHeader.js.map +1 -1
- package/workflow/inspector/NestedTaskList.d.ts.map +1 -1
- package/workflow/inspector/NestedTaskList.js +2 -1
- package/workflow/inspector/NestedTaskList.js.map +1 -1
- package/workflow/inspector/WorkflowSummaryPanel.d.ts.map +1 -1
- package/workflow/inspector/WorkflowSummaryPanel.js +2 -1
- package/workflow/inspector/WorkflowSummaryPanel.js.map +1 -1
- package/workflow/inspector/tabs/BranchesTab.d.ts.map +1 -1
- package/workflow/inspector/tabs/BranchesTab.js +5 -2
- package/workflow/inspector/tabs/BranchesTab.js.map +1 -1
- package/workflow/instance/WorkflowInstanceList.d.ts.map +1 -1
- package/workflow/instance/WorkflowInstanceList.js +2 -1
- package/workflow/instance/WorkflowInstanceList.js.map +1 -1
- package/workflow/node-shell/DiffBadge.d.ts.map +1 -1
- package/workflow/node-shell/DiffBadge.js +3 -2
- package/workflow/node-shell/DiffBadge.js.map +1 -1
- package/workflow/node-shell/ExecutionBadge.d.ts.map +1 -1
- package/workflow/node-shell/ExecutionBadge.js +5 -4
- package/workflow/node-shell/ExecutionBadge.js.map +1 -1
- package/workflow/node-shell/NodeActions.d.ts.map +1 -1
- package/workflow/node-shell/NodeActions.js +12 -11
- package/workflow/node-shell/NodeActions.js.map +1 -1
- package/workflow/task-detail/StructuredDataViewer.d.ts.map +1 -1
- package/workflow/task-detail/StructuredDataViewer.js +5 -1
- package/workflow/task-detail/StructuredDataViewer.js.map +1 -1
- package/workspace/EditorTabs.d.ts.map +1 -1
- package/workspace/EditorTabs.js +38 -37
- package/workspace/EditorTabs.js.map +1 -1
- package/workspace/ExplorerTree.d.ts.map +1 -1
- package/workspace/ExplorerTree.js +2 -1
- package/workspace/ExplorerTree.js.map +1 -1
- package/workspace/FileViewer.d.ts.map +1 -1
- package/workspace/FileViewer.js +2 -1
- package/workspace/FileViewer.js.map +1 -1
- package/workspace/PanelChip.d.ts.map +1 -1
- package/workspace/PanelChip.js +2 -1
- package/workspace/PanelChip.js.map +1 -1
- package/workspace/WorkspaceEditor.d.ts.map +1 -1
- package/workspace/WorkspaceEditor.js +2 -1
- package/workspace/WorkspaceEditor.js.map +1 -1
- package/workspace/WorkspaceSummary.d.ts.map +1 -1
- package/workspace/WorkspaceSummary.js +7 -2
- package/workspace/WorkspaceSummary.js.map +1 -1
- package/workspace/WorkspaceSurface.d.ts.map +1 -1
- package/workspace/WorkspaceSurface.js +12 -11
- package/workspace/WorkspaceSurface.js.map +1 -1
- package/datastore/CollectionRecordsBrowser.d.ts +0 -34
- package/datastore/CollectionRecordsBrowser.d.ts.map +0 -1
- package/datastore/CollectionRecordsBrowser.js +0 -223
- package/datastore/CollectionRecordsBrowser.js.map +0 -1
- package/datastore/CollectionSchemaView.d.ts +0 -29
- package/datastore/CollectionSchemaView.d.ts.map +0 -1
- package/datastore/CollectionSchemaView.js +0 -93
- package/datastore/CollectionSchemaView.js.map +0 -1
- package/datastore/DatastoreDetailView.d.ts +0 -44
- package/datastore/DatastoreDetailView.d.ts.map +0 -1
- package/datastore/DatastoreDetailView.js +0 -76
- package/datastore/DatastoreDetailView.js.map +0 -1
- package/datastore/DatastoreSyncReport.d.ts +0 -19
- package/datastore/DatastoreSyncReport.d.ts.map +0 -1
- package/datastore/DatastoreSyncReport.js +0 -45
- package/datastore/DatastoreSyncReport.js.map +0 -1
- package/datastore/DeleteDatastoreDialog.d.ts +0 -35
- package/datastore/DeleteDatastoreDialog.d.ts.map +0 -1
- package/datastore/DeleteDatastoreDialog.js +0 -90
- package/datastore/DeleteDatastoreDialog.js.map +0 -1
- package/datastore/FieldValueControl.d.ts +0 -55
- package/datastore/FieldValueControl.d.ts.map +0 -1
- package/datastore/FieldValueControl.js +0 -138
- package/datastore/FieldValueControl.js.map +0 -1
- package/datastore/RecordFilterBuilder.d.ts +0 -37
- package/datastore/RecordFilterBuilder.d.ts.map +0 -1
- package/datastore/RecordFilterBuilder.js +0 -122
- package/datastore/RecordFilterBuilder.js.map +0 -1
- package/datastore/RecordFormPanel.d.ts +0 -45
- package/datastore/RecordFormPanel.d.ts.map +0 -1
- package/datastore/RecordFormPanel.js +0 -215
- package/datastore/RecordFormPanel.js.map +0 -1
- package/datastore/index.d.ts +0 -43
- package/datastore/index.d.ts.map +0 -1
- package/datastore/index.js +0 -22
- package/datastore/index.js.map +0 -1
- package/datastore/recordFilter.d.ts +0 -62
- package/datastore/recordFilter.d.ts.map +0 -1
- package/datastore/recordFilter.js +0 -104
- package/datastore/recordFilter.js.map +0 -1
- package/datastore/recordValues.d.ts +0 -85
- package/datastore/recordValues.d.ts.map +0 -1
- package/datastore/recordValues.js +0 -282
- package/datastore/recordValues.js.map +0 -1
- package/datastore/useDatastore.d.ts +0 -39
- package/datastore/useDatastore.d.ts.map +0 -1
- package/datastore/useDatastore.js +0 -44
- package/datastore/useDatastore.js.map +0 -1
- package/datastore/useDatastoreCount.d.ts +0 -50
- package/datastore/useDatastoreCount.d.ts.map +0 -1
- package/datastore/useDatastoreCount.js +0 -27
- package/datastore/useDatastoreCount.js.map +0 -1
- package/datastore/useDatastoreDescription.d.ts +0 -54
- package/datastore/useDatastoreDescription.d.ts.map +0 -1
- package/datastore/useDatastoreDescription.js +0 -50
- package/datastore/useDatastoreDescription.js.map +0 -1
- package/datastore/useDatastoreList.d.ts +0 -57
- package/datastore/useDatastoreList.d.ts.map +0 -1
- package/datastore/useDatastoreList.js +0 -29
- package/datastore/useDatastoreList.js.map +0 -1
- package/datastore/useDatastoreSearch.d.ts +0 -19
- package/datastore/useDatastoreSearch.d.ts.map +0 -1
- package/datastore/useDatastoreSearch.js +0 -22
- package/datastore/useDatastoreSearch.js.map +0 -1
- package/datastore/useDeleteDatastore.d.ts +0 -53
- package/datastore/useDeleteDatastore.d.ts.map +0 -1
- package/datastore/useDeleteDatastore.js +0 -40
- package/datastore/useDeleteDatastore.js.map +0 -1
- package/datastore/useDeleteRecord.d.ts +0 -34
- package/datastore/useDeleteRecord.d.ts.map +0 -1
- package/datastore/useDeleteRecord.js +0 -43
- package/datastore/useDeleteRecord.js.map +0 -1
- package/datastore/useInsertRecord.d.ts +0 -50
- package/datastore/useInsertRecord.d.ts.map +0 -1
- package/datastore/useInsertRecord.js +0 -55
- package/datastore/useInsertRecord.js.map +0 -1
- package/datastore/useRecordCollection.d.ts +0 -104
- package/datastore/useRecordCollection.d.ts.map +0 -1
- package/datastore/useRecordCollection.js +0 -136
- package/datastore/useRecordCollection.js.map +0 -1
- package/datastore/useRecordList.d.ts +0 -66
- package/datastore/useRecordList.d.ts.map +0 -1
- package/datastore/useRecordList.js +0 -58
- package/datastore/useRecordList.js.map +0 -1
- package/datastore/useUpdateRecord.d.ts +0 -52
- package/datastore/useUpdateRecord.d.ts.map +0 -1
- package/datastore/useUpdateRecord.js +0 -55
- package/datastore/useUpdateRecord.js.map +0 -1
- package/src/agent/__tests__/AgentDetailView.datastores.test.tsx +0 -166
- package/src/datastore/CollectionRecordsBrowser.tsx +0 -570
- package/src/datastore/CollectionSchemaView.tsx +0 -247
- package/src/datastore/DatastoreDetailView.tsx +0 -201
- package/src/datastore/DatastoreSyncReport.tsx +0 -105
- package/src/datastore/DeleteDatastoreDialog.tsx +0 -202
- package/src/datastore/FieldValueControl.tsx +0 -289
- package/src/datastore/RecordFilterBuilder.tsx +0 -422
- package/src/datastore/RecordFormPanel.tsx +0 -432
- package/src/datastore/__tests__/CollectionRecordsBrowser.test.tsx +0 -245
- package/src/datastore/__tests__/DeleteDatastoreDialog.test.tsx +0 -133
- package/src/datastore/__tests__/FieldValueControl.test.tsx +0 -160
- package/src/datastore/__tests__/RecordFilterBuilder.test.tsx +0 -155
- package/src/datastore/__tests__/RecordFormPanel.test.tsx +0 -227
- package/src/datastore/__tests__/recordFilter.test.ts +0 -169
- package/src/datastore/__tests__/recordMutations.test.tsx +0 -195
- package/src/datastore/__tests__/recordValues.test.ts +0 -359
- package/src/datastore/__tests__/schemaAndSyncViews.test.tsx +0 -142
- package/src/datastore/__tests__/useDatastoreDescription.test.tsx +0 -143
- package/src/datastore/__tests__/useRecordCollection.test.tsx +0 -250
- package/src/datastore/__tests__/useRecordList.test.tsx +0 -85
- package/src/datastore/index.ts +0 -111
- package/src/datastore/recordFilter.ts +0 -154
- package/src/datastore/recordValues.ts +0 -327
- package/src/datastore/useDatastore.ts +0 -67
- package/src/datastore/useDatastoreCount.ts +0 -69
- package/src/datastore/useDatastoreDescription.ts +0 -90
- package/src/datastore/useDatastoreList.ts +0 -79
- package/src/datastore/useDatastoreSearch.ts +0 -39
- package/src/datastore/useDeleteDatastore.ts +0 -87
- package/src/datastore/useDeleteRecord.ts +0 -77
- package/src/datastore/useInsertRecord.ts +0 -92
- package/src/datastore/useRecordCollection.ts +0 -256
- package/src/datastore/useRecordList.ts +0 -131
- package/src/datastore/useUpdateRecord.ts +0 -95
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DatastoreSyncReport.js","sourceRoot":"","sources":["../../src/datastore/DatastoreSyncReport.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EACL,8BAA8B,EAC9B,oBAAoB,GAErB,MAAM,2DAA2D,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AAU9E;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAAE,MAAM,EAAE,SAAS,EAA4B;IACjF,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY;QAClC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,cAAc,EAAE;QACrD,CAAC,CAAC,IAAI,CAAC;IAET,OAAO,CACL,KAAC,OAAO,IAAC,KAAK,EAAC,aAAa,EAAC,SAAS,EAAE,SAAS,YAC/C,eAAK,SAAS,EAAC,uBAAuB,aACpC,eAAK,SAAS,EAAC,oGAAoG,aACjH,KAAC,gBAAgB,IAAC,OAAO,EAAE,MAAM,CAAC,eAAe,GAAI,EACpD,QAAQ,IAAI,CACX,gBAAM,SAAS,EAAC,uCAAuC,6BAAc,QAAQ,IAAQ,CACtF,IACG,EACL,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACjC,YAAG,SAAS,EAAC,yDAAyD,qDAElE,CACL,CAAC,CAAC,CAAC,CACF,iBAAO,SAAS,EAAC,sCAAsC,aACrD,0BACE,cAAI,SAAS,EAAC,0DAA0D,aACtE,aAAI,KAAK,EAAC,KAAK,EAAC,SAAS,EAAC,mCAAmC,2BAAgB,EAC7E,aAAI,KAAK,EAAC,KAAK,EAAC,SAAS,EAAC,mCAAmC,sBAAW,EACxE,aAAI,KAAK,EAAC,KAAK,EAAC,SAAS,EAAC,kDAAkD,wBAAa,IACtF,GACC,EACR,0BACG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAChC,cAAoB,SAAS,EAAC,oDAAoD,aAChF,aAAI,SAAS,EAAC,qDAAqD,YAAE,IAAI,CAAC,IAAI,GAAM,EACpF,aAAI,SAAS,EAAC,mBAAmB,YAC/B,KAAC,oBAAoB,IAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAI,GACxC,EACL,aAAI,SAAS,EAAC,uEAAuE,YAClF,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GACtB,KAPE,IAAI,CAAC,IAAI,CAQb,CACN,CAAC,GACI,IACF,CACT,IACG,GACE,CACX,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAE,OAAO,EAA8C;IAC/E,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,oBAAoB,CAAC,MAAM;YAC9B,OAAO,KAAC,WAAW,IAAC,KAAK,EAAC,OAAO,EAAC,KAAK,EAAC,QAAQ,GAAG,CAAC;QACtD,KAAK,oBAAoB,CAAC,QAAQ;YAChC,OAAO,KAAC,WAAW,IAAC,KAAK,EAAC,QAAQ,EAAC,KAAK,EAAC,UAAU,GAAG,CAAC;QACzD;YACE,OAAO,KAAC,WAAW,IAAC,KAAK,EAAC,OAAO,EAAC,KAAK,EAAC,cAAc,GAAG,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,EAAE,KAAK,EAAsD;IACzF,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,8BAA8B,CAAC,MAAM;YACxC,OAAO,KAAC,WAAW,IAAC,KAAK,EAAC,OAAO,EAAC,KAAK,EAAC,QAAQ,GAAG,CAAC;QACtD,KAAK,8BAA8B,CAAC,OAAO;YACzC,OAAO,KAAC,WAAW,IAAC,KAAK,EAAC,SAAS,EAAC,KAAK,EAAC,SAAS,GAAG,CAAC;QACzD,KAAK,8BAA8B,CAAC,OAAO;YACzC,+DAA+D;YAC/D,OAAO,CACL,KAAC,WAAW,IACV,KAAK,EAAC,UAAU,EAChB,KAAK,EAAC,SAAS,EACf,OAAO,EAAC,8EAAyE,GACjF,CACH,CAAC;QACJ;YACE,OAAO,KAAC,WAAW,IAAC,KAAK,EAAC,OAAO,EAAC,KAAK,EAAC,SAAS,GAAG,CAAC;IACzD,CAAC;AACH,CAAC"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import type { Datastore } from "@stigmer/protos/ai/stigmer/agentic/datastore/v1/api_pb";
|
|
2
|
-
/** Props for {@link DeleteDatastoreDialog}. */
|
|
3
|
-
export interface DeleteDatastoreDialogProps {
|
|
4
|
-
/** Whether the dialog is open. */
|
|
5
|
-
readonly open: boolean;
|
|
6
|
-
/** Called when the dialog requests to close. */
|
|
7
|
-
readonly onOpenChange: (open: boolean) => void;
|
|
8
|
-
/** The loaded datastore (metadata + status feed the counts). */
|
|
9
|
-
readonly datastore: Datastore | null;
|
|
10
|
-
/** Called after a successful delete (navigate away). */
|
|
11
|
-
readonly onDeleted?: () => void;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* The guarded delete flow for the platform's only record-destroying
|
|
15
|
-
* resource action (DD-008 SD-6) — a status-informed acknowledgment
|
|
16
|
-
* replacing the generic one-shot confirm:
|
|
17
|
-
*
|
|
18
|
-
* - Counts are pre-filled from the already-loaded `status` ("holds N
|
|
19
|
-
* records across M collections").
|
|
20
|
-
* - A **non-empty** datastore requires **typing the datastore slug** to
|
|
21
|
-
* arm the delete — the strongest-friction confirm. Arming sends the
|
|
22
|
-
* `force` acknowledgment.
|
|
23
|
-
* - An **empty** datastore keeps the standard destructive confirm.
|
|
24
|
-
* - The server's guards stay authoritative: on refusal (agent
|
|
25
|
-
* references, count drift) the `FAILED_PRECONDITION` message renders
|
|
26
|
-
* **verbatim** inside the dialog with fresh server counts — the
|
|
27
|
-
* console renders the guard, never pre-empts it. The agent-reference
|
|
28
|
-
* block names the referencing agents; detaching them is the operator's
|
|
29
|
-
* next step, and the block is deliberately not acknowledgeable-through.
|
|
30
|
-
*
|
|
31
|
-
* All visual properties flow through `--stgm-*` design tokens.
|
|
32
|
-
* Zero Console dependencies — safe for platform builder embedding.
|
|
33
|
-
*/
|
|
34
|
-
export declare function DeleteDatastoreDialog({ open, onOpenChange, datastore, onDeleted, }: DeleteDatastoreDialogProps): import("react/jsx-runtime").JSX.Element | null;
|
|
35
|
-
//# sourceMappingURL=DeleteDatastoreDialog.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DeleteDatastoreDialog.d.ts","sourceRoot":"","sources":["../../src/datastore/DeleteDatastoreDialog.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wDAAwD,CAAC;AAKxF,+CAA+C;AAC/C,MAAM,WAAW,0BAA0B;IACzC,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,gDAAgD;IAChD,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,gEAAgE;IAChE,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IACrC,wDAAwD;IACxD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,SAAS,GACV,EAAE,0BAA0B,kDAyJ5B"}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
4
|
-
import { cn } from "@stigmer/theme";
|
|
5
|
-
import { getUserMessage } from "@stigmer/sdk";
|
|
6
|
-
import { toast } from "../feedback/toast.js";
|
|
7
|
-
import { FIELD_INPUT_CLASSES } from "./FieldValueControl.js";
|
|
8
|
-
import { useDeleteDatastore } from "./useDeleteDatastore.js";
|
|
9
|
-
/**
|
|
10
|
-
* The guarded delete flow for the platform's only record-destroying
|
|
11
|
-
* resource action (DD-008 SD-6) — a status-informed acknowledgment
|
|
12
|
-
* replacing the generic one-shot confirm:
|
|
13
|
-
*
|
|
14
|
-
* - Counts are pre-filled from the already-loaded `status` ("holds N
|
|
15
|
-
* records across M collections").
|
|
16
|
-
* - A **non-empty** datastore requires **typing the datastore slug** to
|
|
17
|
-
* arm the delete — the strongest-friction confirm. Arming sends the
|
|
18
|
-
* `force` acknowledgment.
|
|
19
|
-
* - An **empty** datastore keeps the standard destructive confirm.
|
|
20
|
-
* - The server's guards stay authoritative: on refusal (agent
|
|
21
|
-
* references, count drift) the `FAILED_PRECONDITION` message renders
|
|
22
|
-
* **verbatim** inside the dialog with fresh server counts — the
|
|
23
|
-
* console renders the guard, never pre-empts it. The agent-reference
|
|
24
|
-
* block names the referencing agents; detaching them is the operator's
|
|
25
|
-
* next step, and the block is deliberately not acknowledgeable-through.
|
|
26
|
-
*
|
|
27
|
-
* All visual properties flow through `--stgm-*` design tokens.
|
|
28
|
-
* Zero Console dependencies — safe for platform builder embedding.
|
|
29
|
-
*/
|
|
30
|
-
export function DeleteDatastoreDialog({ open, onOpenChange, datastore, onDeleted, }) {
|
|
31
|
-
const dialogRef = useRef(null);
|
|
32
|
-
const { deleteDatastore, isDeleting, error, clearError } = useDeleteDatastore();
|
|
33
|
-
const [slugInput, setSlugInput] = useState("");
|
|
34
|
-
const slug = datastore?.metadata?.slug ?? "";
|
|
35
|
-
const resourceId = datastore?.metadata?.id ?? "";
|
|
36
|
-
// BigInt literals (0n) are avoided: consumer apps compile SDK sources
|
|
37
|
-
// with targets below ES2020.
|
|
38
|
-
const { totalRecords, nonEmptyCollections } = useMemo(() => {
|
|
39
|
-
let records = BigInt(0);
|
|
40
|
-
let collections = 0;
|
|
41
|
-
for (const coll of datastore?.status?.collections ?? []) {
|
|
42
|
-
if (coll.recordCount > BigInt(0)) {
|
|
43
|
-
records += coll.recordCount;
|
|
44
|
-
collections += 1;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return { totalRecords: records, nonEmptyCollections: collections };
|
|
48
|
-
}, [datastore]);
|
|
49
|
-
const isEmpty = totalRecords === BigInt(0);
|
|
50
|
-
const armed = isEmpty || slugInput === slug;
|
|
51
|
-
useEffect(() => {
|
|
52
|
-
if (open) {
|
|
53
|
-
setSlugInput("");
|
|
54
|
-
clearError();
|
|
55
|
-
}
|
|
56
|
-
}, [open, clearError]);
|
|
57
|
-
useEffect(() => {
|
|
58
|
-
const dialog = dialogRef.current;
|
|
59
|
-
if (!dialog)
|
|
60
|
-
return;
|
|
61
|
-
if (open && !dialog.open)
|
|
62
|
-
dialog.showModal();
|
|
63
|
-
else if (!open && dialog.open)
|
|
64
|
-
dialog.close();
|
|
65
|
-
}, [open]);
|
|
66
|
-
const handleDialogCancel = useCallback((e) => {
|
|
67
|
-
e.preventDefault();
|
|
68
|
-
onOpenChange(false);
|
|
69
|
-
}, [onOpenChange]);
|
|
70
|
-
const handleDelete = useCallback(async () => {
|
|
71
|
-
if (!resourceId || !armed)
|
|
72
|
-
return;
|
|
73
|
-
try {
|
|
74
|
-
// A non-empty delete carries force — the acknowledgment the
|
|
75
|
-
// slug-typing arms. Empty datastores need no acknowledgment.
|
|
76
|
-
await deleteDatastore({ resourceId, force: !isEmpty });
|
|
77
|
-
toast.success(`Datastore "${slug}" deleted`);
|
|
78
|
-
onOpenChange(false);
|
|
79
|
-
onDeleted?.();
|
|
80
|
-
}
|
|
81
|
-
catch {
|
|
82
|
-
// The guard's message renders inline via `error` — with fresh
|
|
83
|
-
// counts on drift; the server stays authoritative.
|
|
84
|
-
}
|
|
85
|
-
}, [resourceId, armed, isEmpty, deleteDatastore, slug, onOpenChange, onDeleted]);
|
|
86
|
-
if (!open || !datastore)
|
|
87
|
-
return null;
|
|
88
|
-
return (_jsx("dialog", { ref: dialogRef, onCancel: handleDialogCancel, "aria-label": `Delete datastore ${slug}`, className: cn("stg:fixed stg:inset-0 stg:z-50 stg:m-auto stg:w-full stg:max-w-md stg:rounded-lg stg:border stg:border-border stg:bg-popover stg:p-0 stg:text-popover-foreground stg:shadow-lg", "stg:backdrop:bg-black/50", "stg:open:animate-in stg:open:fade-in-0 stg:open:zoom-in-95"), children: _jsxs("div", { className: "stg:flex stg:flex-col stg:gap-4 stg:p-6", children: [_jsxs("div", { className: "stg:flex stg:flex-col stg:gap-1.5", children: [_jsxs("h3", { className: "stg:text-base stg:font-semibold stg:text-foreground", children: ["Delete datastore \u201C", slug, "\u201D?"] }), isEmpty ? (_jsx("p", { className: "stg:text-sm stg:text-muted-foreground", children: "This datastore holds no records. Its declared collections will be removed. This cannot be undone." })) : (_jsxs("p", { className: "stg:text-sm stg:text-muted-foreground", children: ["\u201C", slug, "\u201D holds", " ", _jsxs("strong", { className: "stg:font-semibold stg:text-foreground", children: [String(totalRecords), " record", totalRecords === BigInt(1) ? "" : "s"] }), " ", "across", " ", _jsxs("strong", { className: "stg:font-semibold stg:text-foreground", children: [nonEmptyCollections, " collection", nonEmptyCollections === 1 ? "" : "s"] }), ". Deleting the datastore destroys them all. This cannot be undone."] }))] }), error && (_jsx("div", { role: "alert", className: "stg:rounded-md stg:border stg:border-destructive stg:bg-card stg:px-3 stg:py-2 stg:text-sm stg:text-destructive", children: getUserMessage(error) })), !isEmpty && (_jsxs("label", { className: "stg:flex stg:flex-col stg:gap-1 stg:text-xs stg:font-medium stg:text-muted-foreground", children: ["Type ", _jsx("span", { className: "stg:font-mono stg:text-foreground", children: slug }), " to confirm", _jsx("input", { type: "text", className: FIELD_INPUT_CLASSES, value: slugInput, onChange: (e) => setSlugInput(e.target.value), autoComplete: "off", spellCheck: false, "aria-label": `Type ${slug} to confirm deletion` })] })), _jsxs("div", { className: "stg:flex stg:justify-end stg:gap-2", children: [_jsx("button", { type: "button", onClick: () => onOpenChange(false), className: cn("stg:rounded-md stg:border stg:border-input stg:bg-background stg:px-3 stg:py-1.5 stg:text-sm stg:font-medium stg:text-foreground", "stg:hover:bg-accent stg:hover:text-accent-foreground", "stg:focus-visible:outline-none stg:focus-visible:ring-2 stg:focus-visible:ring-ring"), children: "Cancel" }), _jsx("button", { type: "button", onClick: handleDelete, disabled: !armed || isDeleting, className: cn("stg:rounded-md stg:bg-destructive stg:px-3 stg:py-1.5 stg:text-sm stg:font-medium stg:text-destructive-foreground", "stg:hover:bg-destructive-hover", "stg:focus-visible:outline-none stg:focus-visible:ring-2 stg:focus-visible:ring-ring", "stg:disabled:pointer-events-none stg:disabled:opacity-50"), children: isDeleting ? "Deleting…" : "Delete datastore" })] })] }) }));
|
|
89
|
-
}
|
|
90
|
-
//# sourceMappingURL=DeleteDatastoreDialog.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DeleteDatastoreDialog.js","sourceRoot":"","sources":["../../src/datastore/DeleteDatastoreDialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import type { JsonValue } from "@bufbuild/protobuf";
|
|
2
|
-
import { type FieldDeclaration } from "@stigmer/protos/ai/stigmer/agentic/datastore/v1/spec_pb";
|
|
3
|
-
/**
|
|
4
|
-
* Standard input styling for datastore value controls — the
|
|
5
|
-
* token-compliant idiom (semantic Tailwind classes over `--stgm-*`
|
|
6
|
-
* tokens; no pixel font sizes, no hex fallbacks).
|
|
7
|
-
*/
|
|
8
|
-
export declare const FIELD_INPUT_CLASSES: string;
|
|
9
|
-
/** Props for {@link FieldValueControl}. */
|
|
10
|
-
export interface FieldValueControlProps {
|
|
11
|
-
/** The field declaration driving the control type. */
|
|
12
|
-
readonly field: FieldDeclaration;
|
|
13
|
-
/**
|
|
14
|
-
* Current value in its canonical encoding (DD-004), or `undefined`
|
|
15
|
-
* when empty/unset. The control never receives explicit `null` — the
|
|
16
|
-
* clear affordance is the owner's (a form row renders it; the control
|
|
17
|
-
* only edits values).
|
|
18
|
-
*/
|
|
19
|
-
readonly value: JsonValue | undefined;
|
|
20
|
-
/**
|
|
21
|
-
* Called with the canonical value on every valid edit, or `undefined`
|
|
22
|
-
* when the input empties. Invalid intermediate states (half-typed
|
|
23
|
-
* JSON, unparseable numbers) stay local to the control and are never
|
|
24
|
-
* emitted — the precedent set by the workflow config form.
|
|
25
|
-
*/
|
|
26
|
-
readonly onChange: (value: JsonValue | undefined) => void;
|
|
27
|
-
/** Disables the input. */
|
|
28
|
-
readonly disabled?: boolean;
|
|
29
|
-
/** DOM id for external `<label htmlFor>` wiring. */
|
|
30
|
-
readonly id?: string;
|
|
31
|
-
/** Accessible name when no external label is wired. */
|
|
32
|
-
readonly "aria-label"?: string;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* The typed value control for a declared datastore field — one
|
|
36
|
-
* controlled input per `FieldType`, emitting canonical encodings
|
|
37
|
-
* (DD-004). Shared by `RecordFormPanel` (field editing) and
|
|
38
|
-
* `RecordFilterBuilder` (condition values), so a field always offers
|
|
39
|
-
* the same input affordance everywhere.
|
|
40
|
-
*
|
|
41
|
-
* Type dispatch:
|
|
42
|
-
* - `string` — text input; enum-select when `enum_values` declared
|
|
43
|
-
* - `integer` / `number` — numeric input (step 1 / any)
|
|
44
|
-
* - `bool` — select with true/false (a checkbox conflates
|
|
45
|
-
* "false" with "unset", which the tri-state
|
|
46
|
-
* write model must not do)
|
|
47
|
-
* - `date` — native date picker (emits `YYYY-MM-DD`)
|
|
48
|
-
* - `time` — native time picker (emits zero-padded `HH:MM[:SS]`)
|
|
49
|
-
* - `timestamp` — native datetime-local picker in the operator's
|
|
50
|
-
* zone, converted to RFC 3339 UTC
|
|
51
|
-
* - `json` — mono textarea with local parse state; only
|
|
52
|
-
* valid JSON is emitted
|
|
53
|
-
*/
|
|
54
|
-
export declare function FieldValueControl(props: FieldValueControlProps): import("react/jsx-runtime").JSX.Element;
|
|
55
|
-
//# sourceMappingURL=FieldValueControl.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FieldValueControl.d.ts","sourceRoot":"","sources":["../../src/datastore/FieldValueControl.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,yDAAyD,CAAC;AAEjE;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,QAK/B,CAAC;AAEF,2CAA2C;AAC3C,MAAM,WAAW,sBAAsB;IACrC,sDAAsD;IACtD,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IACtC;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;IAC1D,0BAA0B;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,oDAAoD;IACpD,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,2CAoB9D"}
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useCallback, useState } from "react";
|
|
4
|
-
import { cn } from "@stigmer/theme";
|
|
5
|
-
import { FieldType, } from "@stigmer/protos/ai/stigmer/agentic/datastore/v1/spec_pb";
|
|
6
|
-
/**
|
|
7
|
-
* Standard input styling for datastore value controls — the
|
|
8
|
-
* token-compliant idiom (semantic Tailwind classes over `--stgm-*`
|
|
9
|
-
* tokens; no pixel font sizes, no hex fallbacks).
|
|
10
|
-
*/
|
|
11
|
-
export const FIELD_INPUT_CLASSES = cn("stg:w-full stg:rounded-md stg:border stg:border-input stg:bg-background stg:px-2.5 stg:py-1.5 stg:text-xs stg:text-foreground", "stg:placeholder:text-muted-foreground", "stg:focus-visible:outline-none stg:focus-visible:ring-1 stg:focus-visible:ring-ring", "stg:disabled:pointer-events-none stg:disabled:opacity-50");
|
|
12
|
-
/**
|
|
13
|
-
* The typed value control for a declared datastore field — one
|
|
14
|
-
* controlled input per `FieldType`, emitting canonical encodings
|
|
15
|
-
* (DD-004). Shared by `RecordFormPanel` (field editing) and
|
|
16
|
-
* `RecordFilterBuilder` (condition values), so a field always offers
|
|
17
|
-
* the same input affordance everywhere.
|
|
18
|
-
*
|
|
19
|
-
* Type dispatch:
|
|
20
|
-
* - `string` — text input; enum-select when `enum_values` declared
|
|
21
|
-
* - `integer` / `number` — numeric input (step 1 / any)
|
|
22
|
-
* - `bool` — select with true/false (a checkbox conflates
|
|
23
|
-
* "false" with "unset", which the tri-state
|
|
24
|
-
* write model must not do)
|
|
25
|
-
* - `date` — native date picker (emits `YYYY-MM-DD`)
|
|
26
|
-
* - `time` — native time picker (emits zero-padded `HH:MM[:SS]`)
|
|
27
|
-
* - `timestamp` — native datetime-local picker in the operator's
|
|
28
|
-
* zone, converted to RFC 3339 UTC
|
|
29
|
-
* - `json` — mono textarea with local parse state; only
|
|
30
|
-
* valid JSON is emitted
|
|
31
|
-
*/
|
|
32
|
-
export function FieldValueControl(props) {
|
|
33
|
-
const { field } = props;
|
|
34
|
-
switch (field.type) {
|
|
35
|
-
case FieldType.string:
|
|
36
|
-
return field.enumValues.length > 0 ? _jsx(EnumControl, { ...props }) : _jsx(StringControl, { ...props });
|
|
37
|
-
case FieldType.integer:
|
|
38
|
-
case FieldType.number:
|
|
39
|
-
return _jsx(NumberControl, { ...props });
|
|
40
|
-
case FieldType.bool:
|
|
41
|
-
return _jsx(BoolControl, { ...props });
|
|
42
|
-
case FieldType.date:
|
|
43
|
-
return _jsx(DateControl, { ...props });
|
|
44
|
-
case FieldType.time:
|
|
45
|
-
return _jsx(TimeControl, { ...props });
|
|
46
|
-
case FieldType.timestamp:
|
|
47
|
-
return _jsx(TimestampControl, { ...props });
|
|
48
|
-
case FieldType.json:
|
|
49
|
-
default:
|
|
50
|
-
return _jsx(JsonControl, { ...props });
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
// ---------------------------------------------------------------------------
|
|
54
|
-
// Per-type controls
|
|
55
|
-
// ---------------------------------------------------------------------------
|
|
56
|
-
function StringControl({ value, onChange, disabled, id, "aria-label": ariaLabel }) {
|
|
57
|
-
return (_jsx("input", { id: id, type: "text", className: FIELD_INPUT_CLASSES, value: typeof value === "string" ? value : "", onChange: (e) => onChange(e.target.value === "" ? undefined : e.target.value), disabled: disabled, "aria-label": ariaLabel }));
|
|
58
|
-
}
|
|
59
|
-
function EnumControl({ field, value, onChange, disabled, id, "aria-label": ariaLabel }) {
|
|
60
|
-
return (_jsxs("select", { id: id, className: FIELD_INPUT_CLASSES, value: typeof value === "string" ? value : "", onChange: (e) => onChange(e.target.value === "" ? undefined : e.target.value), disabled: disabled, "aria-label": ariaLabel, children: [_jsx("option", { value: "", children: "\u2014 Select \u2014" }), field.enumValues.map((v) => (_jsx("option", { value: v, children: v }, v)))] }));
|
|
61
|
-
}
|
|
62
|
-
function NumberControl({ field, value, onChange, disabled, id, "aria-label": ariaLabel }) {
|
|
63
|
-
const isInteger = field.type === FieldType.integer;
|
|
64
|
-
return (_jsx("input", { id: id, type: "number", step: isInteger ? 1 : "any", className: FIELD_INPUT_CLASSES, value: typeof value === "number" ? value : "", onChange: (e) => {
|
|
65
|
-
const raw = e.target.value;
|
|
66
|
-
if (raw === "") {
|
|
67
|
-
onChange(undefined);
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
const parsed = isInteger ? Number.parseInt(raw, 10) : Number.parseFloat(raw);
|
|
71
|
-
if (!Number.isNaN(parsed))
|
|
72
|
-
onChange(parsed);
|
|
73
|
-
}, disabled: disabled, "aria-label": ariaLabel }));
|
|
74
|
-
}
|
|
75
|
-
function BoolControl({ value, onChange, disabled, id, "aria-label": ariaLabel }) {
|
|
76
|
-
return (_jsxs("select", { id: id, className: FIELD_INPUT_CLASSES, value: value === true ? "true" : value === false ? "false" : "", onChange: (e) => {
|
|
77
|
-
const v = e.target.value;
|
|
78
|
-
onChange(v === "" ? undefined : v === "true");
|
|
79
|
-
}, disabled: disabled, "aria-label": ariaLabel, children: [_jsx("option", { value: "", children: "\u2014 Select \u2014" }), _jsx("option", { value: "true", children: "true" }), _jsx("option", { value: "false", children: "false" })] }));
|
|
80
|
-
}
|
|
81
|
-
function DateControl({ value, onChange, disabled, id, "aria-label": ariaLabel }) {
|
|
82
|
-
return (_jsx("input", { id: id, type: "date", className: FIELD_INPUT_CLASSES, value: typeof value === "string" ? value : "", onChange: (e) => onChange(e.target.value === "" ? undefined : e.target.value), disabled: disabled, "aria-label": ariaLabel }));
|
|
83
|
-
}
|
|
84
|
-
function TimeControl({ value, onChange, disabled, id, "aria-label": ariaLabel }) {
|
|
85
|
-
return (_jsx("input", { id: id, type: "time", step: 1, className: FIELD_INPUT_CLASSES, value: typeof value === "string" ? value : "", onChange: (e) => onChange(e.target.value === "" ? undefined : e.target.value), disabled: disabled, "aria-label": ariaLabel }));
|
|
86
|
-
}
|
|
87
|
-
function TimestampControl({ value, onChange, disabled, id, "aria-label": ariaLabel }) {
|
|
88
|
-
return (_jsx("input", { id: id, type: "datetime-local", step: 1, className: FIELD_INPUT_CLASSES, value: typeof value === "string" ? utcToLocalInput(value) : "", onChange: (e) => {
|
|
89
|
-
const raw = e.target.value;
|
|
90
|
-
onChange(raw === "" ? undefined : localInputToUtc(raw));
|
|
91
|
-
}, disabled: disabled, "aria-label": ariaLabel }));
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Canonical RFC 3339 UTC → the datetime-local widget's value (the
|
|
95
|
-
* operator's local zone, no zone suffix). Unparseable input renders
|
|
96
|
-
* empty rather than throwing — the value may be mid-edit.
|
|
97
|
-
*/
|
|
98
|
-
function utcToLocalInput(canonical) {
|
|
99
|
-
const ms = Date.parse(canonical);
|
|
100
|
-
if (Number.isNaN(ms))
|
|
101
|
-
return "";
|
|
102
|
-
const d = new Date(ms);
|
|
103
|
-
const pad = (n) => String(n).padStart(2, "0");
|
|
104
|
-
return (`${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}` +
|
|
105
|
-
`T${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`);
|
|
106
|
-
}
|
|
107
|
-
/** The widget's local value → canonical RFC 3339 UTC. */
|
|
108
|
-
function localInputToUtc(local) {
|
|
109
|
-
const ms = Date.parse(local); // no zone suffix — parsed as local time
|
|
110
|
-
if (Number.isNaN(ms))
|
|
111
|
-
return local; // let coercion report it on submit
|
|
112
|
-
return new Date(ms).toISOString().replace(/\.000Z$/, "Z");
|
|
113
|
-
}
|
|
114
|
-
function JsonControl({ value, onChange, disabled, id, "aria-label": ariaLabel }) {
|
|
115
|
-
const initial = value !== undefined ? JSON.stringify(value, null, 2) : "";
|
|
116
|
-
const [raw, setRaw] = useState(initial);
|
|
117
|
-
const [parseError, setParseError] = useState(null);
|
|
118
|
-
const handleChange = useCallback((e) => {
|
|
119
|
-
const text = e.target.value;
|
|
120
|
-
setRaw(text);
|
|
121
|
-
if (text.trim() === "") {
|
|
122
|
-
setParseError(null);
|
|
123
|
-
onChange(undefined);
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
try {
|
|
127
|
-
const parsed = JSON.parse(text);
|
|
128
|
-
setParseError(null);
|
|
129
|
-
onChange(parsed);
|
|
130
|
-
}
|
|
131
|
-
catch {
|
|
132
|
-
// Invalid JSON stays local — never emitted.
|
|
133
|
-
setParseError("Invalid JSON");
|
|
134
|
-
}
|
|
135
|
-
}, [onChange]);
|
|
136
|
-
return (_jsxs("div", { className: "stg:flex stg:flex-col stg:gap-1", children: [_jsx("textarea", { id: id, rows: 4, className: cn(FIELD_INPUT_CLASSES, "stg:resize-y stg:font-mono"), value: raw, onChange: handleChange, placeholder: "{}", disabled: disabled, "aria-label": ariaLabel, "aria-invalid": parseError !== null }), parseError && (_jsx("span", { role: "alert", className: "stg:text-xs stg:text-destructive", children: parseError }))] }));
|
|
137
|
-
}
|
|
138
|
-
//# sourceMappingURL=FieldValueControl.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FieldValueControl.js","sourceRoot":"","sources":["../../src/datastore/FieldValueControl.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { type CollectionDeclaration } from "@stigmer/protos/ai/stigmer/agentic/datastore/v1/spec_pb";
|
|
2
|
-
import { type RecordConditionDraft } from "./recordFilter.js";
|
|
3
|
-
/** Props for {@link RecordFilterBuilder}. */
|
|
4
|
-
export interface RecordFilterBuilderProps {
|
|
5
|
-
/** The collection whose declared schema drives fields and operators. */
|
|
6
|
-
readonly collection: CollectionDeclaration;
|
|
7
|
-
/**
|
|
8
|
-
* The caller's readable fields from `describeDatastore` (the read
|
|
9
|
-
* verb's `readable_fields`). Empty or omitted means every field.
|
|
10
|
-
* When restricted, unreadable fields are not offered — the server
|
|
11
|
-
* refuses conditions on them.
|
|
12
|
-
*/
|
|
13
|
-
readonly readableFields?: readonly string[];
|
|
14
|
-
/** Active conditions (AND-combined, per the DD-005 grammar). */
|
|
15
|
-
readonly conditions: readonly RecordConditionDraft[];
|
|
16
|
-
/** Called with the full condition set on add/remove/clear. */
|
|
17
|
-
readonly onChange: (conditions: readonly RecordConditionDraft[]) => void;
|
|
18
|
-
/** Additional CSS classes for the root container. */
|
|
19
|
-
readonly className?: string;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Schema-aware filter builder for the records browser (DD-008 SD-3):
|
|
23
|
-
* active conditions render as removable chips; the "Add filter" popover
|
|
24
|
-
* is draft-then-apply — a condition takes effect only on Apply, so
|
|
25
|
-
* half-built drafts never fire queries.
|
|
26
|
-
*
|
|
27
|
-
* The builder can express nothing `findRecords` cannot serve (DD-008
|
|
28
|
-
* invariant 2): fields come from the declarations plus the filterable
|
|
29
|
-
* system fields, operators from the per-type matrix (an unservable
|
|
30
|
-
* operator is structurally unofferable), and values from the same typed
|
|
31
|
-
* controls the record form uses.
|
|
32
|
-
*
|
|
33
|
-
* All visual properties flow through `--stgm-*` design tokens.
|
|
34
|
-
* Zero Console dependencies — safe for platform builder embedding.
|
|
35
|
-
*/
|
|
36
|
-
export declare function RecordFilterBuilder({ collection, readableFields, conditions, onChange, className, }: RecordFilterBuilderProps): import("react/jsx-runtime").JSX.Element;
|
|
37
|
-
//# sourceMappingURL=RecordFilterBuilder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RecordFilterBuilder.d.ts","sourceRoot":"","sources":["../../src/datastore/RecordFilterBuilder.tsx"],"names":[],"mappings":"AAOA,OAAO,EAEL,KAAK,qBAAqB,EAE3B,MAAM,yDAAyD,CAAC;AAGjE,OAAO,EAKL,KAAK,oBAAoB,EAC1B,MAAM,mBAAmB,CAAC;AAO3B,6CAA6C;AAC7C,MAAM,WAAW,wBAAwB;IACvC,wEAAwE;IACxE,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAC;IAC3C;;;;;OAKG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,gEAAgE;IAChE,QAAQ,CAAC,UAAU,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACrD,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS,oBAAoB,EAAE,KAAK,IAAI,CAAC;IACzE,qDAAqD;IACrD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,UAAU,EACV,cAAc,EACd,UAAU,EACV,QAAQ,EACR,SAAS,GACV,EAAE,wBAAwB,2CA2D1B"}
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useCallback, useMemo, useState } from "react";
|
|
4
|
-
import { cn } from "@stigmer/theme";
|
|
5
|
-
import { Popover } from "@base-ui/react/popover";
|
|
6
|
-
import { create } from "@bufbuild/protobuf";
|
|
7
|
-
import { RecordConditionOp } from "@stigmer/protos/ai/stigmer/agentic/datastore/v1/record_io_pb";
|
|
8
|
-
import { FieldDeclarationSchema, } from "@stigmer/protos/ai/stigmer/agentic/datastore/v1/spec_pb";
|
|
9
|
-
import { useStigmerPortalContainer } from "../portal-container.js";
|
|
10
|
-
import { FIELD_INPUT_CLASSES, FieldValueControl } from "./FieldValueControl.js";
|
|
11
|
-
import { filterableFields, formatConditionChip, isConditionComplete, } from "./recordFilter.js";
|
|
12
|
-
import { isListOperator, isValuelessOperator, OPERATOR_LABELS, } from "./recordValues.js";
|
|
13
|
-
/**
|
|
14
|
-
* Schema-aware filter builder for the records browser (DD-008 SD-3):
|
|
15
|
-
* active conditions render as removable chips; the "Add filter" popover
|
|
16
|
-
* is draft-then-apply — a condition takes effect only on Apply, so
|
|
17
|
-
* half-built drafts never fire queries.
|
|
18
|
-
*
|
|
19
|
-
* The builder can express nothing `findRecords` cannot serve (DD-008
|
|
20
|
-
* invariant 2): fields come from the declarations plus the filterable
|
|
21
|
-
* system fields, operators from the per-type matrix (an unservable
|
|
22
|
-
* operator is structurally unofferable), and values from the same typed
|
|
23
|
-
* controls the record form uses.
|
|
24
|
-
*
|
|
25
|
-
* All visual properties flow through `--stgm-*` design tokens.
|
|
26
|
-
* Zero Console dependencies — safe for platform builder embedding.
|
|
27
|
-
*/
|
|
28
|
-
export function RecordFilterBuilder({ collection, readableFields, conditions, onChange, className, }) {
|
|
29
|
-
const fields = useMemo(() => filterableFields(collection, readableFields), [collection, readableFields]);
|
|
30
|
-
const removeCondition = useCallback((index) => onChange(conditions.filter((_, i) => i !== index)), [conditions, onChange]);
|
|
31
|
-
const addCondition = useCallback((draft) => onChange([...conditions, draft]), [conditions, onChange]);
|
|
32
|
-
return (_jsxs("div", { role: "toolbar", "aria-label": "Record filters", className: cn("stg:flex stg:flex-wrap stg:items-center stg:gap-1.5", className), children: [conditions.map((condition, index) => (_jsxs("span", { className: "stg:inline-flex stg:items-center stg:gap-1 stg:rounded-full stg:border stg:border-border stg:bg-muted stg:px-2 stg:py-0.5 stg:text-xs stg:text-foreground", children: [formatConditionChip(condition), _jsx("button", { type: "button", onClick: () => removeCondition(index), "aria-label": `Remove filter ${formatConditionChip(condition)}`, className: cn("stg:inline-flex stg:size-3.5 stg:items-center stg:justify-center stg:rounded-full stg:text-muted-foreground", "stg:hover:bg-accent stg:hover:text-foreground", "stg:focus-visible:outline-none stg:focus-visible:ring-1 stg:focus-visible:ring-ring"), children: _jsx(CrossIcon, { className: "stg:size-2.5" }) })] }, `${condition.field}:${index}`))), _jsx(AddFilterPopover, { fields: fields, onApply: addCondition }), conditions.length > 1 && (_jsx("button", { type: "button", onClick: () => onChange([]), className: cn("stg:text-xs stg:text-muted-foreground stg:underline-offset-2 stg:hover:text-foreground stg:hover:underline", "stg:focus-visible:outline-none stg:focus-visible:ring-1 stg:focus-visible:ring-ring"), children: "Clear all" }))] }));
|
|
33
|
-
}
|
|
34
|
-
// ---------------------------------------------------------------------------
|
|
35
|
-
// The draft-then-apply popover
|
|
36
|
-
// ---------------------------------------------------------------------------
|
|
37
|
-
function AddFilterPopover({ fields, onApply, }) {
|
|
38
|
-
const portalContainer = useStigmerPortalContainer();
|
|
39
|
-
const [open, setOpen] = useState(false);
|
|
40
|
-
const [fieldName, setFieldName] = useState("");
|
|
41
|
-
const [op, setOp] = useState(RecordConditionOp.record_condition_op_unspecified);
|
|
42
|
-
const [value, setValue] = useState(undefined);
|
|
43
|
-
const [values, setValues] = useState([]);
|
|
44
|
-
const selected = fields.find((f) => f.name === fieldName);
|
|
45
|
-
const reset = useCallback(() => {
|
|
46
|
-
setFieldName("");
|
|
47
|
-
setOp(RecordConditionOp.record_condition_op_unspecified);
|
|
48
|
-
setValue(undefined);
|
|
49
|
-
setValues([]);
|
|
50
|
-
}, []);
|
|
51
|
-
const handleOpenChange = useCallback((next) => {
|
|
52
|
-
setOpen(next);
|
|
53
|
-
if (!next)
|
|
54
|
-
reset();
|
|
55
|
-
}, [reset]);
|
|
56
|
-
const selectField = useCallback((name) => {
|
|
57
|
-
setFieldName(name);
|
|
58
|
-
setOp(RecordConditionOp.record_condition_op_unspecified);
|
|
59
|
-
setValue(undefined);
|
|
60
|
-
setValues([]);
|
|
61
|
-
}, []);
|
|
62
|
-
const draft = {
|
|
63
|
-
field: fieldName,
|
|
64
|
-
op,
|
|
65
|
-
value: isListOperator(op) || isValuelessOperator(op) ? undefined : value,
|
|
66
|
-
values: isListOperator(op) ? values : undefined,
|
|
67
|
-
};
|
|
68
|
-
const canApply = fieldName !== "" && isConditionComplete(draft);
|
|
69
|
-
const apply = useCallback(() => {
|
|
70
|
-
// Rebuild from state rather than closing over the render's draft.
|
|
71
|
-
const applied = {
|
|
72
|
-
field: fieldName,
|
|
73
|
-
op,
|
|
74
|
-
value: isListOperator(op) || isValuelessOperator(op) ? undefined : value,
|
|
75
|
-
values: isListOperator(op) ? values : undefined,
|
|
76
|
-
};
|
|
77
|
-
onApply(applied);
|
|
78
|
-
handleOpenChange(false);
|
|
79
|
-
}, [onApply, handleOpenChange, fieldName, op, value, values]);
|
|
80
|
-
return (_jsxs(Popover.Root, { open: open, onOpenChange: handleOpenChange, children: [_jsxs(Popover.Trigger, { className: cn("stg:inline-flex stg:items-center stg:gap-1 stg:rounded-full stg:border stg:border-dashed stg:border-input stg:px-2 stg:py-0.5 stg:text-xs stg:text-muted-foreground", "stg:hover:border-ring stg:hover:text-foreground", "stg:focus-visible:outline-none stg:focus-visible:ring-1 stg:focus-visible:ring-ring"), children: [_jsx(PlusIcon, { className: "stg:size-3" }), "Add filter"] }), _jsx(Popover.Portal, { container: portalContainer, children: _jsx(Popover.Positioner, { sideOffset: 8, align: "start", children: _jsxs(Popover.Popup, { className: cn("stg:z-popover stg:w-72 stg:rounded-lg stg:border stg:border-border stg:bg-popover stg:p-3 stg:text-popover-foreground stg:shadow-md", "stg:flex stg:flex-col stg:gap-2"), children: [_jsxs("label", { className: "stg:flex stg:flex-col stg:gap-1 stg:text-xs stg:font-medium stg:text-muted-foreground", children: ["Field", _jsxs("select", { className: FIELD_INPUT_CLASSES, value: fieldName, onChange: (e) => selectField(e.target.value), children: [_jsx("option", { value: "", children: "\u2014 Select \u2014" }), fields.map((f) => (_jsx("option", { value: f.name, children: f.name }, f.name)))] })] }), selected && (_jsxs("label", { className: "stg:flex stg:flex-col stg:gap-1 stg:text-xs stg:font-medium stg:text-muted-foreground", children: ["Operator", _jsxs("select", { className: FIELD_INPUT_CLASSES, value: op === RecordConditionOp.record_condition_op_unspecified ? "" : String(op), onChange: (e) => {
|
|
81
|
-
setOp(e.target.value === ""
|
|
82
|
-
? RecordConditionOp.record_condition_op_unspecified
|
|
83
|
-
: Number(e.target.value));
|
|
84
|
-
setValue(undefined);
|
|
85
|
-
setValues([]);
|
|
86
|
-
}, children: [_jsx("option", { value: "", children: "\u2014 Select \u2014" }), selected.operators.map((o) => (_jsx("option", { value: o, children: OPERATOR_LABELS.get(o) }, o)))] })] })), selected &&
|
|
87
|
-
op !== RecordConditionOp.record_condition_op_unspecified &&
|
|
88
|
-
!isValuelessOperator(op) &&
|
|
89
|
-
(isListOperator(op) ? (_jsx(ListValueEditor, { field: selected, values: values, onChange: setValues })) : (_jsxs("div", { className: "stg:flex stg:flex-col stg:gap-1 stg:text-xs stg:font-medium stg:text-muted-foreground", children: ["Value", _jsx(FieldValueControl, { field: controlDeclaration(selected), value: value, onChange: setValue, "aria-label": `Filter value for ${selected.name}` })] }))), _jsxs("div", { className: "stg:mt-1 stg:flex stg:justify-end stg:gap-2", children: [_jsx("button", { type: "button", onClick: () => handleOpenChange(false), className: cn("stg:rounded-md stg:border stg:border-input stg:bg-background stg:px-2.5 stg:py-1 stg:text-xs stg:font-medium stg:text-foreground", "stg:hover:bg-accent stg:hover:text-accent-foreground", "stg:focus-visible:outline-none stg:focus-visible:ring-1 stg:focus-visible:ring-ring"), children: "Cancel" }), _jsx("button", { type: "button", onClick: apply, disabled: !canApply, className: cn("stg:rounded-md stg:bg-primary stg:px-2.5 stg:py-1 stg:text-xs stg:font-medium stg:text-primary-foreground", "stg:hover:bg-primary-hover", "stg:focus-visible:outline-none stg:focus-visible:ring-1 stg:focus-visible:ring-ring", "stg:disabled:pointer-events-none stg:disabled:opacity-50"), children: "Apply" })] })] }) }) })] }));
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* The declaration handed to the value control: the declared field
|
|
93
|
-
* itself, or a synthetic declaration for system fields (`id` as string,
|
|
94
|
-
* audit timestamps as timestamp).
|
|
95
|
-
*/
|
|
96
|
-
function controlDeclaration(field) {
|
|
97
|
-
return (field.declaration ??
|
|
98
|
-
create(FieldDeclarationSchema, { name: field.name, type: field.type }));
|
|
99
|
-
}
|
|
100
|
-
// ---------------------------------------------------------------------------
|
|
101
|
-
// List-value entry for in / not_in
|
|
102
|
-
// ---------------------------------------------------------------------------
|
|
103
|
-
function ListValueEditor({ field, values, onChange, }) {
|
|
104
|
-
const [pending, setPending] = useState(undefined);
|
|
105
|
-
const add = useCallback(() => {
|
|
106
|
-
if (pending === undefined)
|
|
107
|
-
return;
|
|
108
|
-
onChange([...values, pending]);
|
|
109
|
-
setPending(undefined);
|
|
110
|
-
}, [pending, values, onChange]);
|
|
111
|
-
return (_jsxs("div", { className: "stg:flex stg:flex-col stg:gap-1 stg:text-xs stg:font-medium stg:text-muted-foreground", children: ["Values", values.length > 0 && (_jsx("div", { className: "stg:flex stg:flex-wrap stg:gap-1", children: values.map((v, i) => (_jsxs("span", { className: "stg:inline-flex stg:items-center stg:gap-1 stg:rounded-full stg:bg-muted stg:px-2 stg:py-0.5 stg:text-xs stg:font-normal stg:text-foreground", children: [typeof v === "string" ? v : JSON.stringify(v), _jsx("button", { type: "button", onClick: () => onChange(values.filter((_, j) => j !== i)), "aria-label": `Remove value ${typeof v === "string" ? v : JSON.stringify(v)}`, className: "stg:inline-flex stg:size-3 stg:items-center stg:justify-center stg:rounded-full stg:text-muted-foreground stg:hover:text-foreground", children: _jsx(CrossIcon, { className: "stg:size-2" }) })] }, i))) })), _jsxs("div", { className: "stg:flex stg:items-center stg:gap-1.5", children: [_jsx(FieldValueControl, { field: controlDeclaration(field), value: pending, onChange: setPending, "aria-label": `Add filter value for ${field.name}` }), _jsx("button", { type: "button", onClick: add, disabled: pending === undefined, className: cn("stg:shrink-0 stg:rounded-md stg:border stg:border-input stg:bg-background stg:px-2 stg:py-1 stg:text-xs stg:font-medium stg:text-foreground", "stg:hover:bg-accent stg:hover:text-accent-foreground", "stg:focus-visible:outline-none stg:focus-visible:ring-1 stg:focus-visible:ring-ring", "stg:disabled:pointer-events-none stg:disabled:opacity-50"), children: "Add" })] })] }));
|
|
112
|
-
}
|
|
113
|
-
// ---------------------------------------------------------------------------
|
|
114
|
-
// Icons (inline SVG — no icon-library dependency)
|
|
115
|
-
// ---------------------------------------------------------------------------
|
|
116
|
-
function PlusIcon({ className }) {
|
|
117
|
-
return (_jsx("svg", { className: className, viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", "aria-hidden": "true", children: _jsx("path", { d: "M8 3v10M3 8h10" }) }));
|
|
118
|
-
}
|
|
119
|
-
function CrossIcon({ className }) {
|
|
120
|
-
return (_jsx("svg", { className: className, viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", "aria-hidden": "true", children: _jsx("path", { d: "M4 4l8 8M12 4l-8 8" }) }));
|
|
121
|
-
}
|
|
122
|
-
//# sourceMappingURL=RecordFilterBuilder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RecordFilterBuilder.js","sourceRoot":"","sources":["../../src/datastore/RecordFilterBuilder.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import type { CollectionDeclaration } from "@stigmer/protos/ai/stigmer/agentic/datastore/v1/spec_pb";
|
|
2
|
-
import type { RecordEnvelope } from "@stigmer/protos/ai/stigmer/agentic/datastore/v1/record_io_pb";
|
|
3
|
-
import type { RecordScope } from "./useRecordList.js";
|
|
4
|
-
/** Props for {@link RecordFormPanel}. */
|
|
5
|
-
export interface RecordFormPanelProps {
|
|
6
|
-
/** Whether the panel is open. */
|
|
7
|
-
readonly open: boolean;
|
|
8
|
-
/** Called when the panel requests to close (Escape, Cancel, or save). */
|
|
9
|
-
readonly onOpenChange: (open: boolean) => void;
|
|
10
|
-
/** Record addressing: org, datastore, collection, partition. */
|
|
11
|
-
readonly scope: RecordScope;
|
|
12
|
-
/** The collection declaration driving the form's typed controls. */
|
|
13
|
-
readonly collection: CollectionDeclaration;
|
|
14
|
-
/**
|
|
15
|
-
* The record to edit, or `null`/`undefined` to insert a new one.
|
|
16
|
-
* Edit submits a partial merge of dirty fields only.
|
|
17
|
-
*/
|
|
18
|
-
readonly record?: RecordEnvelope | null;
|
|
19
|
-
/** Called with the server-stamped envelope after a successful save. */
|
|
20
|
-
readonly onSaved?: (envelope: RecordEnvelope) => void;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* The record write surface (DD-008 SD-4): one schema-generated panel
|
|
24
|
-
* form serving insert and edit, with typed controls dispatched from
|
|
25
|
-
* `FieldDeclaration`.
|
|
26
|
-
*
|
|
27
|
-
* - **Insert** submits every field the operator set; required fields
|
|
28
|
-
* gate the submit (error prevention — the server remains the
|
|
29
|
-
* enforcer).
|
|
30
|
-
* - **Edit** submits a **partial merge**: only dirty fields travel, and
|
|
31
|
-
* the per-field clear affordance sends an explicit `null` — the form
|
|
32
|
-
* is honest about the RPC's tri-state. System fields render read-only
|
|
33
|
-
* and never travel.
|
|
34
|
-
* - **Errors replay the DD-002/DD-005 contract for humans**: a
|
|
35
|
-
* constraint violation renders the declared message **verbatim** —
|
|
36
|
-
* field-adjacent when the `ErrorInfo` constraint name maps through
|
|
37
|
-
* the spec to declared fields (unique constraints), as a form-level
|
|
38
|
-
* banner otherwise. The console operator and the WhatsApp patient
|
|
39
|
-
* read the same bytes.
|
|
40
|
-
*
|
|
41
|
-
* All visual properties flow through `--stgm-*` design tokens.
|
|
42
|
-
* Zero Console dependencies — safe for platform builder embedding.
|
|
43
|
-
*/
|
|
44
|
-
export declare function RecordFormPanel({ open, onOpenChange, scope, collection, record, onSaved, }: RecordFormPanelProps): import("react/jsx-runtime").JSX.Element | null;
|
|
45
|
-
//# sourceMappingURL=RecordFormPanel.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RecordFormPanel.d.ts","sourceRoot":"","sources":["../../src/datastore/RecordFormPanel.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,qBAAqB,EAEtB,MAAM,yDAAyD,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8DAA8D,CAAC;AAUnG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,yCAAyC;AACzC,MAAM,WAAW,oBAAoB;IACnC,iCAAiC;IACjC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,yEAAyE;IACzE,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,gEAAgE;IAChE,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,oEAAoE;IACpE,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAC;IAC3C;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IACxC,uEAAuE;IACvE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;CACvD;AAWD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,UAAU,EACV,MAAM,EACN,OAAO,GACR,EAAE,oBAAoB,kDAqOtB"}
|