@stigmer/react 0.5.1 → 1.0.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/group-activity.d.ts +13 -0
- package/activity/group-activity.d.ts.map +1 -0
- package/activity/group-activity.js +54 -0
- package/activity/group-activity.js.map +1 -0
- package/activity/index.d.ts +4 -0
- package/activity/index.d.ts.map +1 -0
- package/activity/index.js +3 -0
- package/activity/index.js.map +1 -0
- package/activity/types.d.ts +34 -0
- package/activity/types.d.ts.map +1 -0
- package/activity/types.js +2 -0
- package/activity/types.js.map +1 -0
- package/activity/useRecentActivity.d.ts +35 -0
- package/activity/useRecentActivity.d.ts.map +1 -0
- package/activity/useRecentActivity.js +73 -0
- package/activity/useRecentActivity.js.map +1 -0
- package/agent/AgentPicker.d.ts.map +1 -1
- package/agent/AgentPicker.js +4 -2
- package/agent/AgentPicker.js.map +1 -1
- package/billing/BillingSection.d.ts.map +1 -1
- package/billing/BillingSection.js +1 -1
- package/billing/BillingSection.js.map +1 -1
- package/composer/ComposerToolbar.d.ts +5 -1
- package/composer/ComposerToolbar.d.ts.map +1 -1
- package/composer/ComposerToolbar.js +4 -3
- package/composer/ComposerToolbar.js.map +1 -1
- package/composer/InteractionModePicker.d.ts +40 -0
- package/composer/InteractionModePicker.d.ts.map +1 -0
- package/composer/InteractionModePicker.js +76 -0
- package/composer/InteractionModePicker.js.map +1 -0
- package/composer/SessionComposer.d.ts +53 -64
- package/composer/SessionComposer.d.ts.map +1 -1
- package/composer/SessionComposer.js +20 -8
- package/composer/SessionComposer.js.map +1 -1
- package/composer/__tests__/SessionComposer-memo.test.js +10 -5
- package/composer/__tests__/SessionComposer-memo.test.js.map +1 -1
- package/composer/index.d.ts +3 -1
- package/composer/index.d.ts.map +1 -1
- package/composer/index.js +1 -0
- package/composer/index.js.map +1 -1
- package/dashboard/DashboardFailedRuns.d.ts +19 -0
- package/dashboard/DashboardFailedRuns.d.ts.map +1 -0
- package/dashboard/DashboardFailedRuns.js +35 -0
- package/dashboard/DashboardFailedRuns.js.map +1 -0
- package/dashboard/DashboardKPICards.d.ts +19 -0
- package/dashboard/DashboardKPICards.d.ts.map +1 -0
- package/dashboard/DashboardKPICards.js +80 -0
- package/dashboard/DashboardKPICards.js.map +1 -0
- package/dashboard/OperationalDashboard.d.ts +37 -0
- package/dashboard/OperationalDashboard.d.ts.map +1 -0
- package/dashboard/OperationalDashboard.js +48 -0
- package/dashboard/OperationalDashboard.js.map +1 -0
- package/dashboard/index.d.ts +8 -0
- package/dashboard/index.d.ts.map +1 -0
- package/dashboard/index.js +9 -0
- package/dashboard/index.js.map +1 -0
- package/dashboard/types.d.ts +49 -0
- package/dashboard/types.d.ts.map +1 -0
- package/dashboard/types.js +2 -0
- package/dashboard/types.js.map +1 -0
- package/dashboard/useAgentExecutionSummary.d.ts +33 -0
- package/dashboard/useAgentExecutionSummary.d.ts.map +1 -0
- package/dashboard/useAgentExecutionSummary.js +32 -0
- package/dashboard/useAgentExecutionSummary.js.map +1 -0
- package/dashboard/useDashboardFailedRuns.d.ts +18 -0
- package/dashboard/useDashboardFailedRuns.d.ts.map +1 -0
- package/dashboard/useDashboardFailedRuns.js +86 -0
- package/dashboard/useDashboardFailedRuns.js.map +1 -0
- package/dashboard/useDashboardSummary.d.ts +32 -0
- package/dashboard/useDashboardSummary.d.ts.map +1 -0
- package/dashboard/useDashboardSummary.js +67 -0
- package/dashboard/useDashboardSummary.js.map +1 -0
- package/execution/ContextGauge.d.ts +45 -0
- package/execution/ContextGauge.d.ts.map +1 -0
- package/execution/ContextGauge.js +82 -0
- package/execution/ContextGauge.js.map +1 -0
- package/execution/InteractionModeBadge.d.ts +24 -0
- package/execution/InteractionModeBadge.d.ts.map +1 -0
- package/execution/InteractionModeBadge.js +29 -0
- package/execution/InteractionModeBadge.js.map +1 -0
- package/execution/MessageThread.d.ts +33 -3
- package/execution/MessageThread.d.ts.map +1 -1
- package/execution/MessageThread.js +51 -9
- package/execution/MessageThread.js.map +1 -1
- package/execution/PlanCompletionCard.d.ts +23 -0
- package/execution/PlanCompletionCard.d.ts.map +1 -0
- package/execution/PlanCompletionCard.js +28 -0
- package/execution/PlanCompletionCard.js.map +1 -0
- package/execution/SummarizationBadge.d.ts +30 -0
- package/execution/SummarizationBadge.d.ts.map +1 -0
- package/execution/SummarizationBadge.js +61 -0
- package/execution/SummarizationBadge.js.map +1 -0
- package/execution/SummarizationCard.d.ts +27 -0
- package/execution/SummarizationCard.d.ts.map +1 -0
- package/execution/SummarizationCard.js +47 -0
- package/execution/SummarizationCard.js.map +1 -0
- package/execution/__tests__/PlanCompletionCard.test.d.ts +2 -0
- package/execution/__tests__/PlanCompletionCard.test.d.ts.map +1 -0
- package/execution/__tests__/PlanCompletionCard.test.js +53 -0
- package/execution/__tests__/PlanCompletionCard.test.js.map +1 -0
- package/execution/__tests__/buildThreadItems-plan-completion.test.d.ts +2 -0
- package/execution/__tests__/buildThreadItems-plan-completion.test.d.ts.map +1 -0
- package/execution/__tests__/buildThreadItems-plan-completion.test.js +137 -0
- package/execution/__tests__/buildThreadItems-plan-completion.test.js.map +1 -0
- package/execution/__tests__/useContextWindow.test.d.ts +2 -0
- package/execution/__tests__/useContextWindow.test.d.ts.map +1 -0
- package/execution/__tests__/useContextWindow.test.js +121 -0
- package/execution/__tests__/useContextWindow.test.js.map +1 -0
- package/execution/index.d.ts +12 -0
- package/execution/index.d.ts.map +1 -1
- package/execution/index.js +6 -0
- package/execution/index.js.map +1 -1
- package/execution/useContextWindow.d.ts +71 -0
- package/execution/useContextWindow.d.ts.map +1 -0
- package/execution/useContextWindow.js +91 -0
- package/execution/useContextWindow.js.map +1 -0
- package/execution/useCreateAgentExecution.d.ts +9 -0
- package/execution/useCreateAgentExecution.d.ts.map +1 -1
- package/execution/useCreateAgentExecution.js +15 -3
- package/execution/useCreateAgentExecution.js.map +1 -1
- package/index.d.ts +9 -4
- package/index.d.ts.map +1 -1
- package/index.js +12 -2
- package/index.js.map +1 -1
- package/internal/VirtualizedThread.d.ts +2 -1
- package/internal/VirtualizedThread.d.ts.map +1 -1
- package/internal/VirtualizedThread.js +3 -2
- package/internal/VirtualizedThread.js.map +1 -1
- package/internal/store/index.d.ts +1 -0
- package/internal/store/index.d.ts.map +1 -1
- package/internal/store/index.js +1 -0
- package/internal/store/index.js.map +1 -1
- package/internal/store/workflow-execution-event-store.d.ts +92 -0
- package/internal/store/workflow-execution-event-store.d.ts.map +1 -0
- package/internal/store/workflow-execution-event-store.js +298 -0
- package/internal/store/workflow-execution-event-store.js.map +1 -0
- package/library/ScopeToggle.d.ts +13 -9
- package/library/ScopeToggle.d.ts.map +1 -1
- package/library/ScopeToggle.js +43 -22
- package/library/ScopeToggle.js.map +1 -1
- package/library/VisibilityToggle.js +14 -5
- package/library/VisibilityToggle.js.map +1 -1
- package/library/index.d.ts +1 -0
- package/library/index.d.ts.map +1 -1
- package/library/index.js +1 -0
- package/library/index.js.map +1 -1
- package/library/useExportResource.d.ts +3 -2
- package/library/useExportResource.d.ts.map +1 -1
- package/library/useExportResource.js +11 -6
- package/library/useExportResource.js.map +1 -1
- package/mcp-server/McpServerDetailView.d.ts.map +1 -1
- package/mcp-server/McpServerDetailView.js +25 -13
- package/mcp-server/McpServerDetailView.js.map +1 -1
- package/mcp-server/McpServerPicker.d.ts.map +1 -1
- package/mcp-server/McpServerPicker.js +4 -2
- package/mcp-server/McpServerPicker.js.map +1 -1
- package/package.json +16 -5
- package/provider.d.ts.map +1 -1
- package/provider.js +164 -1
- package/provider.js.map +1 -1
- package/resource-detail/ResourceDetailShell.d.ts +1 -1
- package/resource-detail/ResourceDetailShell.d.ts.map +1 -1
- package/resource-detail/ResourceDetailShell.js +6 -6
- package/resource-detail/ResourceDetailShell.js.map +1 -1
- package/resource-detail/types.d.ts +23 -0
- package/resource-detail/types.d.ts.map +1 -1
- package/resource-detail/useDeleteResource.d.ts +1 -1
- package/resource-detail/useDeleteResource.d.ts.map +1 -1
- package/resource-detail/useDeleteResource.js +5 -0
- package/resource-detail/useDeleteResource.js.map +1 -1
- package/resource-workbench/components/ResourceWorkbench.d.ts.map +1 -1
- package/resource-workbench/components/ResourceWorkbench.js +2 -1
- package/resource-workbench/components/ResourceWorkbench.js.map +1 -1
- package/session/useNewSessionFlow.d.ts.map +1 -1
- package/session/useNewSessionFlow.js +1 -0
- package/session/useNewSessionFlow.js.map +1 -1
- package/session/useSessionConversation.d.ts +7 -0
- package/session/useSessionConversation.d.ts.map +1 -1
- package/session/useSessionConversation.js +1 -0
- package/session/useSessionConversation.js.map +1 -1
- package/session/useSessionPageFlow.d.ts.map +1 -1
- package/session/useSessionPageFlow.js +1 -0
- package/session/useSessionPageFlow.js.map +1 -1
- package/session/useSessionUsage.d.ts.map +1 -1
- package/session/useSessionUsage.js +65 -4
- package/session/useSessionUsage.js.map +1 -1
- package/settings/UsageSection.d.ts.map +1 -1
- package/settings/UsageSection.js +1 -4
- package/settings/UsageSection.js.map +1 -1
- package/skill/SkillPicker.d.ts.map +1 -1
- package/skill/SkillPicker.js +4 -2
- package/skill/SkillPicker.js.map +1 -1
- package/src/activity/group-activity.ts +65 -0
- package/src/activity/index.ts +13 -0
- package/src/activity/types.ts +35 -0
- package/src/activity/useRecentActivity.ts +131 -0
- package/src/agent/AgentPicker.tsx +6 -1
- package/src/billing/BillingSection.tsx +3 -2
- package/src/composer/ComposerToolbar.tsx +19 -1
- package/src/composer/InteractionModePicker.tsx +189 -0
- package/src/composer/SessionComposer.tsx +85 -8
- package/src/composer/__tests__/SessionComposer-memo.test.ts +11 -6
- package/src/composer/index.ts +7 -0
- package/src/dashboard/DashboardFailedRuns.tsx +109 -0
- package/src/dashboard/DashboardKPICards.tsx +128 -0
- package/src/dashboard/OperationalDashboard.tsx +96 -0
- package/src/dashboard/index.ts +37 -0
- package/src/dashboard/types.ts +50 -0
- package/src/dashboard/useAgentExecutionSummary.ts +71 -0
- package/src/dashboard/useDashboardFailedRuns.ts +122 -0
- package/src/dashboard/useDashboardSummary.ts +109 -0
- package/src/execution/ContextGauge.tsx +243 -0
- package/src/execution/InteractionModeBadge.tsx +70 -0
- package/src/execution/MessageThread.tsx +88 -3
- package/src/execution/PlanCompletionCard.tsx +105 -0
- package/src/execution/SummarizationBadge.tsx +188 -0
- package/src/execution/SummarizationCard.tsx +126 -0
- package/src/execution/__tests__/PlanCompletionCard.test.tsx +67 -0
- package/src/execution/__tests__/buildThreadItems-plan-completion.test.ts +197 -0
- package/src/execution/__tests__/useContextWindow.test.ts +167 -0
- package/src/execution/index.ts +22 -0
- package/src/execution/useContextWindow.ts +148 -0
- package/src/execution/useCreateAgentExecution.ts +26 -3
- package/src/index.ts +222 -0
- package/src/internal/VirtualizedThread.tsx +4 -1
- package/src/internal/store/index.ts +6 -0
- package/src/internal/store/workflow-execution-event-store.ts +391 -0
- package/src/library/ScopeToggle.tsx +88 -20
- package/src/library/VisibilityToggle.tsx +54 -13
- package/src/library/index.ts +2 -0
- package/src/library/useExportResource.ts +12 -9
- package/src/mcp-server/McpServerDetailView.tsx +80 -148
- package/src/mcp-server/McpServerPicker.tsx +6 -1
- package/src/provider.tsx +195 -8
- package/src/resource-detail/ResourceDetailShell.tsx +21 -4
- package/src/resource-detail/types.ts +25 -0
- package/src/resource-detail/useDeleteResource.ts +6 -1
- package/src/resource-workbench/components/ResourceWorkbench.tsx +4 -0
- package/src/session/useNewSessionFlow.ts +1 -0
- package/src/session/useSessionConversation.ts +8 -0
- package/src/session/useSessionPageFlow.ts +1 -0
- package/src/session/useSessionUsage.ts +72 -4
- package/src/settings/UsageSection.tsx +1 -9
- package/src/skill/SkillPicker.tsx +6 -1
- package/src/workflow/ApprovalFormBuilder.tsx +1017 -0
- package/src/workflow/BranchConditionBuilder.tsx +451 -0
- package/src/workflow/CanvasActionsContext.ts +12 -0
- package/src/workflow/CanvasContextMenu.tsx +364 -0
- package/src/workflow/CanvasTaskNode.tsx +372 -0
- package/src/workflow/CanvasTransitionEdge.tsx +122 -0
- package/src/workflow/CostByWorkflowChart.tsx +120 -0
- package/src/workflow/ExecutionSummaryWidget.tsx +194 -0
- package/src/workflow/ExecutionTrendChart.tsx +157 -0
- package/src/workflow/FailedRunsWidget.tsx +109 -0
- package/src/workflow/PendingApprovalsWidget.tsx +115 -0
- package/src/workflow/TaskConfigForm.tsx +618 -0
- package/src/workflow/TaskKindRegistryContext.ts +36 -0
- package/src/workflow/TaskPickerPopover.tsx +326 -0
- package/src/workflow/WorkflowArchitectDialog.tsx +505 -0
- package/src/workflow/WorkflowCanvasEditor.tsx +651 -0
- package/src/workflow/WorkflowCanvasInner.tsx +160 -0
- package/src/workflow/WorkflowDashboard.tsx +124 -0
- package/src/workflow/WorkflowDetailView.tsx +527 -0
- package/src/workflow/WorkflowEditorView.tsx +547 -0
- package/src/workflow/WorkflowExecutionApprovalCard.tsx +129 -0
- package/src/workflow/WorkflowExecutionArtifactPanel.tsx +112 -0
- package/src/workflow/WorkflowExecutionCostPanel.tsx +131 -0
- package/src/workflow/WorkflowExecutionHeader.tsx +194 -0
- package/src/workflow/WorkflowExecutionPhaseBadge.tsx +188 -0
- package/src/workflow/WorkflowExecutionTaskPanel.tsx +135 -0
- package/src/workflow/WorkflowExecutionTimeline.tsx +118 -0
- package/src/workflow/WorkflowExecutionTimelineEvent.tsx +488 -0
- package/src/workflow/WorkflowExecutionViewer.tsx +248 -0
- package/src/workflow/WorkflowInspectorPanel.tsx +568 -0
- package/src/workflow/WorkflowRefinePanel.tsx +411 -0
- package/src/workflow/WorkflowRepairCard.tsx +433 -0
- package/src/workflow/WorkflowRunDialog.tsx +220 -0
- package/src/workflow/WorkflowRunForm.tsx +245 -0
- package/src/workflow/WorkflowTaskList.tsx +177 -0
- package/src/workflow/WorkflowTaskPalette.tsx +248 -0
- package/src/workflow/WorkflowTopologyGraph.tsx +250 -0
- package/src/workflow/WorkflowYamlEditor.tsx +271 -0
- package/src/workflow/__tests__/starter-workflow-yaml.test.ts +57 -0
- package/src/workflow/canvas-constants.ts +87 -0
- package/src/workflow/canvas-icons.tsx +36 -0
- package/src/workflow/extract-workflow-yaml.ts +87 -0
- package/src/workflow/graph-commands.ts +675 -0
- package/src/workflow/index.ts +375 -0
- package/src/workflow/serialize-workflow-yaml.ts +546 -0
- package/src/workflow/starter-workflow-yaml.ts +29 -0
- package/src/workflow/types.ts +99 -0
- package/src/workflow/useCanvasKeyboardShortcuts.ts +134 -0
- package/src/workflow/useDiagnoseExecutionFlow.ts +378 -0
- package/src/workflow/useGraphHistory.ts +138 -0
- package/src/workflow/usePendingApprovals.ts +89 -0
- package/src/workflow/useRefineWorkflowFlow.ts +321 -0
- package/src/workflow/useResolveAgentExecutionSession.ts +57 -0
- package/src/workflow/useRunWorkflowFlow.ts +235 -0
- package/src/workflow/useTaskKindRegistry.ts +135 -0
- package/src/workflow/useWorkflow.ts +78 -0
- package/src/workflow/useWorkflowArchitectFlow.ts +303 -0
- package/src/workflow/useWorkflowCanvas.ts +882 -0
- package/src/workflow/useWorkflowCount.ts +66 -0
- package/src/workflow/useWorkflowDashboardSummary.ts +71 -0
- package/src/workflow/useWorkflowEditor.ts +106 -0
- package/src/workflow/useWorkflowExecution.ts +67 -0
- package/src/workflow/useWorkflowExecutionActions.ts +179 -0
- package/src/workflow/useWorkflowExecutionArtifacts.ts +57 -0
- package/src/workflow/useWorkflowExecutionEventLog.ts +111 -0
- package/src/workflow/useWorkflowExecutionEventStream.ts +244 -0
- package/src/workflow/useWorkflowExecutionList.ts +121 -0
- package/src/workflow/useWorkflowInstances.ts +62 -0
- package/src/workflow/useWorkflowList.ts +79 -0
- package/src/workflow/useWorkflowSave.ts +84 -0
- package/src/workflow/useWorkflowTopology.ts +229 -0
- package/src/workflow/useWorkflowValidation.ts +329 -0
- package/src/workflow/useWorkflowYaml.ts +49 -0
- package/src/workflow/workflow-graph-conversions.ts +796 -0
- package/src/workflow/workflow-graph-model.ts +83 -0
- package/src/workflow/workflow-yaml-diff.ts +132 -0
- package/styles.css +1 -1
- package/workflow/ApprovalFormBuilder.d.ts +24 -0
- package/workflow/ApprovalFormBuilder.d.ts.map +1 -0
- package/workflow/ApprovalFormBuilder.js +347 -0
- package/workflow/ApprovalFormBuilder.js.map +1 -0
- package/workflow/BranchConditionBuilder.d.ts +29 -0
- package/workflow/BranchConditionBuilder.d.ts.map +1 -0
- package/workflow/BranchConditionBuilder.js +170 -0
- package/workflow/BranchConditionBuilder.js.map +1 -0
- package/workflow/CanvasActionsContext.d.ts +8 -0
- package/workflow/CanvasActionsContext.d.ts.map +1 -0
- package/workflow/CanvasActionsContext.js +4 -0
- package/workflow/CanvasActionsContext.js.map +1 -0
- package/workflow/CanvasContextMenu.d.ts +59 -0
- package/workflow/CanvasContextMenu.d.ts.map +1 -0
- package/workflow/CanvasContextMenu.js +98 -0
- package/workflow/CanvasContextMenu.js.map +1 -0
- package/workflow/CanvasTaskNode.d.ts +21 -0
- package/workflow/CanvasTaskNode.d.ts.map +1 -0
- package/workflow/CanvasTaskNode.js +125 -0
- package/workflow/CanvasTaskNode.js.map +1 -0
- package/workflow/CanvasTransitionEdge.d.ts +24 -0
- package/workflow/CanvasTransitionEdge.d.ts.map +1 -0
- package/workflow/CanvasTransitionEdge.js +50 -0
- package/workflow/CanvasTransitionEdge.js.map +1 -0
- package/workflow/CostByWorkflowChart.d.ts +15 -0
- package/workflow/CostByWorkflowChart.d.ts.map +1 -0
- package/workflow/CostByWorkflowChart.js +45 -0
- package/workflow/CostByWorkflowChart.js.map +1 -0
- package/workflow/ExecutionSummaryWidget.d.ts +16 -0
- package/workflow/ExecutionSummaryWidget.d.ts.map +1 -0
- package/workflow/ExecutionSummaryWidget.js +93 -0
- package/workflow/ExecutionSummaryWidget.js.map +1 -0
- package/workflow/ExecutionTrendChart.d.ts +14 -0
- package/workflow/ExecutionTrendChart.d.ts.map +1 -0
- package/workflow/ExecutionTrendChart.js +67 -0
- package/workflow/ExecutionTrendChart.js.map +1 -0
- package/workflow/FailedRunsWidget.d.ts +19 -0
- package/workflow/FailedRunsWidget.d.ts.map +1 -0
- package/workflow/FailedRunsWidget.js +37 -0
- package/workflow/FailedRunsWidget.js.map +1 -0
- package/workflow/PendingApprovalsWidget.d.ts +19 -0
- package/workflow/PendingApprovalsWidget.d.ts.map +1 -0
- package/workflow/PendingApprovalsWidget.js +35 -0
- package/workflow/PendingApprovalsWidget.js.map +1 -0
- package/workflow/TaskConfigForm.d.ts +29 -0
- package/workflow/TaskConfigForm.d.ts.map +1 -0
- package/workflow/TaskConfigForm.js +230 -0
- package/workflow/TaskConfigForm.js.map +1 -0
- package/workflow/TaskKindRegistryContext.d.ts +24 -0
- package/workflow/TaskKindRegistryContext.d.ts.map +1 -0
- package/workflow/TaskKindRegistryContext.js +25 -0
- package/workflow/TaskKindRegistryContext.js.map +1 -0
- package/workflow/TaskPickerPopover.d.ts +33 -0
- package/workflow/TaskPickerPopover.d.ts.map +1 -0
- package/workflow/TaskPickerPopover.js +110 -0
- package/workflow/TaskPickerPopover.js.map +1 -0
- package/workflow/WorkflowArchitectDialog.d.ts +48 -0
- package/workflow/WorkflowArchitectDialog.d.ts.map +1 -0
- package/workflow/WorkflowArchitectDialog.js +129 -0
- package/workflow/WorkflowArchitectDialog.js.map +1 -0
- package/workflow/WorkflowCanvasEditor.d.ts +38 -0
- package/workflow/WorkflowCanvasEditor.d.ts.map +1 -0
- package/workflow/WorkflowCanvasEditor.js +287 -0
- package/workflow/WorkflowCanvasEditor.js.map +1 -0
- package/workflow/WorkflowCanvasInner.d.ts +32 -0
- package/workflow/WorkflowCanvasInner.d.ts.map +1 -0
- package/workflow/WorkflowCanvasInner.js +49 -0
- package/workflow/WorkflowCanvasInner.js.map +1 -0
- package/workflow/WorkflowDashboard.d.ts +35 -0
- package/workflow/WorkflowDashboard.d.ts.map +1 -0
- package/workflow/WorkflowDashboard.js +59 -0
- package/workflow/WorkflowDashboard.js.map +1 -0
- package/workflow/WorkflowDetailView.d.ts +63 -0
- package/workflow/WorkflowDetailView.d.ts.map +1 -0
- package/workflow/WorkflowDetailView.js +202 -0
- package/workflow/WorkflowDetailView.js.map +1 -0
- package/workflow/WorkflowEditorView.d.ts +43 -0
- package/workflow/WorkflowEditorView.d.ts.map +1 -0
- package/workflow/WorkflowEditorView.js +165 -0
- package/workflow/WorkflowEditorView.js.map +1 -0
- package/workflow/WorkflowExecutionApprovalCard.d.ts +27 -0
- package/workflow/WorkflowExecutionApprovalCard.d.ts.map +1 -0
- package/workflow/WorkflowExecutionApprovalCard.js +32 -0
- package/workflow/WorkflowExecutionApprovalCard.js.map +1 -0
- package/workflow/WorkflowExecutionArtifactPanel.d.ts +15 -0
- package/workflow/WorkflowExecutionArtifactPanel.d.ts.map +1 -0
- package/workflow/WorkflowExecutionArtifactPanel.js +53 -0
- package/workflow/WorkflowExecutionArtifactPanel.js.map +1 -0
- package/workflow/WorkflowExecutionCostPanel.d.ts +18 -0
- package/workflow/WorkflowExecutionCostPanel.d.ts.map +1 -0
- package/workflow/WorkflowExecutionCostPanel.js +44 -0
- package/workflow/WorkflowExecutionCostPanel.js.map +1 -0
- package/workflow/WorkflowExecutionHeader.d.ts +26 -0
- package/workflow/WorkflowExecutionHeader.d.ts.map +1 -0
- package/workflow/WorkflowExecutionHeader.js +68 -0
- package/workflow/WorkflowExecutionHeader.js.map +1 -0
- package/workflow/WorkflowExecutionPhaseBadge.d.ts +23 -0
- package/workflow/WorkflowExecutionPhaseBadge.d.ts.map +1 -0
- package/workflow/WorkflowExecutionPhaseBadge.js +99 -0
- package/workflow/WorkflowExecutionPhaseBadge.js.map +1 -0
- package/workflow/WorkflowExecutionTaskPanel.d.ts +24 -0
- package/workflow/WorkflowExecutionTaskPanel.d.ts.map +1 -0
- package/workflow/WorkflowExecutionTaskPanel.js +59 -0
- package/workflow/WorkflowExecutionTaskPanel.js.map +1 -0
- package/workflow/WorkflowExecutionTimeline.d.ts +27 -0
- package/workflow/WorkflowExecutionTimeline.d.ts.map +1 -0
- package/workflow/WorkflowExecutionTimeline.js +51 -0
- package/workflow/WorkflowExecutionTimeline.js.map +1 -0
- package/workflow/WorkflowExecutionTimelineEvent.d.ts +18 -0
- package/workflow/WorkflowExecutionTimelineEvent.d.ts.map +1 -0
- package/workflow/WorkflowExecutionTimelineEvent.js +210 -0
- package/workflow/WorkflowExecutionTimelineEvent.js.map +1 -0
- package/workflow/WorkflowExecutionViewer.d.ts +45 -0
- package/workflow/WorkflowExecutionViewer.d.ts.map +1 -0
- package/workflow/WorkflowExecutionViewer.js +75 -0
- package/workflow/WorkflowExecutionViewer.js.map +1 -0
- package/workflow/WorkflowInspectorPanel.d.ts +46 -0
- package/workflow/WorkflowInspectorPanel.d.ts.map +1 -0
- package/workflow/WorkflowInspectorPanel.js +152 -0
- package/workflow/WorkflowInspectorPanel.js.map +1 -0
- package/workflow/WorkflowRefinePanel.d.ts +30 -0
- package/workflow/WorkflowRefinePanel.d.ts.map +1 -0
- package/workflow/WorkflowRefinePanel.js +107 -0
- package/workflow/WorkflowRefinePanel.js.map +1 -0
- package/workflow/WorkflowRepairCard.d.ts +35 -0
- package/workflow/WorkflowRepairCard.d.ts.map +1 -0
- package/workflow/WorkflowRepairCard.js +113 -0
- package/workflow/WorkflowRepairCard.js.map +1 -0
- package/workflow/WorkflowRunDialog.d.ts +51 -0
- package/workflow/WorkflowRunDialog.d.ts.map +1 -0
- package/workflow/WorkflowRunDialog.js +75 -0
- package/workflow/WorkflowRunDialog.js.map +1 -0
- package/workflow/WorkflowRunForm.d.ts +62 -0
- package/workflow/WorkflowRunForm.d.ts.map +1 -0
- package/workflow/WorkflowRunForm.js +64 -0
- package/workflow/WorkflowRunForm.js.map +1 -0
- package/workflow/WorkflowTaskList.d.ts +25 -0
- package/workflow/WorkflowTaskList.d.ts.map +1 -0
- package/workflow/WorkflowTaskList.js +89 -0
- package/workflow/WorkflowTaskList.js.map +1 -0
- package/workflow/WorkflowTaskPalette.d.ts +22 -0
- package/workflow/WorkflowTaskPalette.d.ts.map +1 -0
- package/workflow/WorkflowTaskPalette.js +83 -0
- package/workflow/WorkflowTaskPalette.js.map +1 -0
- package/workflow/WorkflowTopologyGraph.d.ts +22 -0
- package/workflow/WorkflowTopologyGraph.d.ts.map +1 -0
- package/workflow/WorkflowTopologyGraph.js +123 -0
- package/workflow/WorkflowTopologyGraph.js.map +1 -0
- package/workflow/WorkflowYamlEditor.d.ts +43 -0
- package/workflow/WorkflowYamlEditor.d.ts.map +1 -0
- package/workflow/WorkflowYamlEditor.js +215 -0
- package/workflow/WorkflowYamlEditor.js.map +1 -0
- package/workflow/__tests__/starter-workflow-yaml.test.d.ts +2 -0
- package/workflow/__tests__/starter-workflow-yaml.test.d.ts.map +1 -0
- package/workflow/__tests__/starter-workflow-yaml.test.js +44 -0
- package/workflow/__tests__/starter-workflow-yaml.test.js.map +1 -0
- package/workflow/canvas-constants.d.ts +56 -0
- package/workflow/canvas-constants.d.ts.map +1 -0
- package/workflow/canvas-constants.js +74 -0
- package/workflow/canvas-constants.js.map +1 -0
- package/workflow/canvas-icons.d.ts +13 -0
- package/workflow/canvas-icons.d.ts.map +1 -0
- package/workflow/canvas-icons.js +21 -0
- package/workflow/canvas-icons.js.map +1 -0
- package/workflow/extract-workflow-yaml.d.ts +22 -0
- package/workflow/extract-workflow-yaml.d.ts.map +1 -0
- package/workflow/extract-workflow-yaml.js +63 -0
- package/workflow/extract-workflow-yaml.js.map +1 -0
- package/workflow/graph-commands.d.ts +209 -0
- package/workflow/graph-commands.d.ts.map +1 -0
- package/workflow/graph-commands.js +516 -0
- package/workflow/graph-commands.js.map +1 -0
- package/workflow/index.d.ts +66 -0
- package/workflow/index.d.ts.map +1 -0
- package/workflow/index.js +88 -0
- package/workflow/index.js.map +1 -0
- package/workflow/serialize-workflow-yaml.d.ts +39 -0
- package/workflow/serialize-workflow-yaml.d.ts.map +1 -0
- package/workflow/serialize-workflow-yaml.js +413 -0
- package/workflow/serialize-workflow-yaml.js.map +1 -0
- package/workflow/starter-workflow-yaml.d.ts +12 -0
- package/workflow/starter-workflow-yaml.d.ts.map +1 -0
- package/workflow/starter-workflow-yaml.js +30 -0
- package/workflow/starter-workflow-yaml.js.map +1 -0
- package/workflow/types.d.ts +80 -0
- package/workflow/types.d.ts.map +1 -0
- package/workflow/types.js +2 -0
- package/workflow/types.js.map +1 -0
- package/workflow/useCanvasKeyboardShortcuts.d.ts +34 -0
- package/workflow/useCanvasKeyboardShortcuts.d.ts.map +1 -0
- package/workflow/useCanvasKeyboardShortcuts.js +108 -0
- package/workflow/useCanvasKeyboardShortcuts.js.map +1 -0
- package/workflow/useDiagnoseExecutionFlow.d.ts +87 -0
- package/workflow/useDiagnoseExecutionFlow.d.ts.map +1 -0
- package/workflow/useDiagnoseExecutionFlow.js +257 -0
- package/workflow/useDiagnoseExecutionFlow.js.map +1 -0
- package/workflow/useGraphHistory.d.ts +28 -0
- package/workflow/useGraphHistory.d.ts.map +1 -0
- package/workflow/useGraphHistory.js +106 -0
- package/workflow/useGraphHistory.js.map +1 -0
- package/workflow/usePendingApprovals.d.ts +35 -0
- package/workflow/usePendingApprovals.d.ts.map +1 -0
- package/workflow/usePendingApprovals.js +50 -0
- package/workflow/usePendingApprovals.js.map +1 -0
- package/workflow/useRefineWorkflowFlow.d.ts +75 -0
- package/workflow/useRefineWorkflowFlow.d.ts.map +1 -0
- package/workflow/useRefineWorkflowFlow.js +216 -0
- package/workflow/useRefineWorkflowFlow.js.map +1 -0
- package/workflow/useResolveAgentExecutionSession.d.ts +33 -0
- package/workflow/useResolveAgentExecutionSession.d.ts.map +1 -0
- package/workflow/useResolveAgentExecutionSession.js +37 -0
- package/workflow/useResolveAgentExecutionSession.js.map +1 -0
- package/workflow/useRunWorkflowFlow.d.ts +82 -0
- package/workflow/useRunWorkflowFlow.d.ts.map +1 -0
- package/workflow/useRunWorkflowFlow.js +145 -0
- package/workflow/useRunWorkflowFlow.js.map +1 -0
- package/workflow/useTaskKindRegistry.d.ts +96 -0
- package/workflow/useTaskKindRegistry.d.ts.map +1 -0
- package/workflow/useTaskKindRegistry.js +75 -0
- package/workflow/useTaskKindRegistry.js.map +1 -0
- package/workflow/useWorkflow.d.ts +47 -0
- package/workflow/useWorkflow.d.ts.map +1 -0
- package/workflow/useWorkflow.js +53 -0
- package/workflow/useWorkflow.js.map +1 -0
- package/workflow/useWorkflowArchitectFlow.d.ts +96 -0
- package/workflow/useWorkflowArchitectFlow.d.ts.map +1 -0
- package/workflow/useWorkflowArchitectFlow.js +179 -0
- package/workflow/useWorkflowArchitectFlow.js.map +1 -0
- package/workflow/useWorkflowCanvas.d.ts +66 -0
- package/workflow/useWorkflowCanvas.d.ts.map +1 -0
- package/workflow/useWorkflowCanvas.js +628 -0
- package/workflow/useWorkflowCanvas.js.map +1 -0
- package/workflow/useWorkflowCount.d.ts +47 -0
- package/workflow/useWorkflowCount.d.ts.map +1 -0
- package/workflow/useWorkflowCount.js +26 -0
- package/workflow/useWorkflowCount.js.map +1 -0
- package/workflow/useWorkflowDashboardSummary.d.ts +34 -0
- package/workflow/useWorkflowDashboardSummary.d.ts.map +1 -0
- package/workflow/useWorkflowDashboardSummary.js +33 -0
- package/workflow/useWorkflowDashboardSummary.js.map +1 -0
- package/workflow/useWorkflowEditor.d.ts +45 -0
- package/workflow/useWorkflowEditor.d.ts.map +1 -0
- package/workflow/useWorkflowEditor.js +52 -0
- package/workflow/useWorkflowEditor.js.map +1 -0
- package/workflow/useWorkflowExecution.d.ts +37 -0
- package/workflow/useWorkflowExecution.d.ts.map +1 -0
- package/workflow/useWorkflowExecution.js +43 -0
- package/workflow/useWorkflowExecution.js.map +1 -0
- package/workflow/useWorkflowExecutionActions.d.ts +41 -0
- package/workflow/useWorkflowExecutionActions.d.ts.map +1 -0
- package/workflow/useWorkflowExecutionActions.js +86 -0
- package/workflow/useWorkflowExecutionActions.js.map +1 -0
- package/workflow/useWorkflowExecutionArtifacts.d.ts +26 -0
- package/workflow/useWorkflowExecutionArtifacts.d.ts.map +1 -0
- package/workflow/useWorkflowExecutionArtifacts.js +29 -0
- package/workflow/useWorkflowExecutionArtifacts.js.map +1 -0
- package/workflow/useWorkflowExecutionEventLog.d.ts +47 -0
- package/workflow/useWorkflowExecutionEventLog.d.ts.map +1 -0
- package/workflow/useWorkflowExecutionEventLog.js +59 -0
- package/workflow/useWorkflowExecutionEventLog.js.map +1 -0
- package/workflow/useWorkflowExecutionEventStream.d.ts +61 -0
- package/workflow/useWorkflowExecutionEventStream.d.ts.map +1 -0
- package/workflow/useWorkflowExecutionEventStream.js +161 -0
- package/workflow/useWorkflowExecutionEventStream.js.map +1 -0
- package/workflow/useWorkflowExecutionList.d.ts +49 -0
- package/workflow/useWorkflowExecutionList.d.ts.map +1 -0
- package/workflow/useWorkflowExecutionList.js +65 -0
- package/workflow/useWorkflowExecutionList.js.map +1 -0
- package/workflow/useWorkflowInstances.d.ts +30 -0
- package/workflow/useWorkflowInstances.d.ts.map +1 -0
- package/workflow/useWorkflowInstances.js +33 -0
- package/workflow/useWorkflowInstances.js.map +1 -0
- package/workflow/useWorkflowList.d.ts +57 -0
- package/workflow/useWorkflowList.d.ts.map +1 -0
- package/workflow/useWorkflowList.js +29 -0
- package/workflow/useWorkflowList.js.map +1 -0
- package/workflow/useWorkflowSave.d.ts +25 -0
- package/workflow/useWorkflowSave.d.ts.map +1 -0
- package/workflow/useWorkflowSave.js +61 -0
- package/workflow/useWorkflowSave.js.map +1 -0
- package/workflow/useWorkflowTopology.d.ts +40 -0
- package/workflow/useWorkflowTopology.d.ts.map +1 -0
- package/workflow/useWorkflowTopology.js +163 -0
- package/workflow/useWorkflowTopology.js.map +1 -0
- package/workflow/useWorkflowValidation.d.ts +27 -0
- package/workflow/useWorkflowValidation.d.ts.map +1 -0
- package/workflow/useWorkflowValidation.js +253 -0
- package/workflow/useWorkflowValidation.js.map +1 -0
- package/workflow/useWorkflowYaml.d.ts +26 -0
- package/workflow/useWorkflowYaml.d.ts.map +1 -0
- package/workflow/useWorkflowYaml.js +26 -0
- package/workflow/useWorkflowYaml.js.map +1 -0
- package/workflow/workflow-graph-conversions.d.ts +70 -0
- package/workflow/workflow-graph-conversions.d.ts.map +1 -0
- package/workflow/workflow-graph-conversions.js +634 -0
- package/workflow/workflow-graph-conversions.js.map +1 -0
- package/workflow/workflow-graph-model.d.ts +83 -0
- package/workflow/workflow-graph-model.d.ts.map +1 -0
- package/workflow/workflow-graph-model.js +5 -0
- package/workflow/workflow-graph-model.js.map +1 -0
- package/workflow/workflow-yaml-diff.d.ts +24 -0
- package/workflow/workflow-yaml-diff.d.ts.map +1 -0
- package/workflow/workflow-yaml-diff.js +96 -0
- package/workflow/workflow-yaml-diff.js.map +1 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useMemo } from "react";
|
|
4
|
+
import type { TaskKindDescriptor, TaskKindCategory } from "./types";
|
|
5
|
+
import { useTaskKindRegistryContext } from "./TaskKindRegistryContext";
|
|
6
|
+
|
|
7
|
+
/** Return value of {@link useTaskKindRegistry}. */
|
|
8
|
+
export interface UseTaskKindRegistryReturn {
|
|
9
|
+
/** All registered task kind descriptors, one per WorkflowTaskKind. */
|
|
10
|
+
readonly descriptors: readonly TaskKindDescriptor[];
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Look up a single descriptor by its kind identifier.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* const llm = getByKind("llm_call");
|
|
18
|
+
* // llm?.displayName === "LLM Call"
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
readonly getByKind: (kind: string) => TaskKindDescriptor | undefined;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Retrieve the JSON Schema for a task kind's configuration.
|
|
25
|
+
*
|
|
26
|
+
* Returns the parsed JSON Schema object suitable for Monaco editor
|
|
27
|
+
* validation or React JSON Schema Form (RJSF) rendering.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* const schema = getJsonSchema("llm_call");
|
|
32
|
+
* // Pass to Monaco: monaco.languages.json.jsonDefaults.setDiagnosticsOptions(...)
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
readonly getJsonSchema: (kind: string) => Record<string, unknown> | undefined;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Descriptors grouped by their functional category.
|
|
39
|
+
*
|
|
40
|
+
* Useful for rendering a categorized task palette where tasks are
|
|
41
|
+
* organized into sections like "AI", "Control Flow", "Data", etc.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```tsx
|
|
45
|
+
* for (const [category, tasks] of categories) {
|
|
46
|
+
* // Render category header + task cards
|
|
47
|
+
* }
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
readonly categories: ReadonlyMap<TaskKindCategory, readonly TaskKindDescriptor[]>;
|
|
51
|
+
|
|
52
|
+
/** `true` while the task kind registry is being fetched from the API. */
|
|
53
|
+
readonly isLoading: boolean;
|
|
54
|
+
|
|
55
|
+
/** Non-null if the API fetch failed. Descriptors will be empty in this case. */
|
|
56
|
+
readonly error: Error | null;
|
|
57
|
+
|
|
58
|
+
/** Retry fetching the registry. No-op while a fetch is in flight. */
|
|
59
|
+
readonly refetch: () => void;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Data hook that exposes the task kind registry with lookup and grouping helpers.
|
|
64
|
+
*
|
|
65
|
+
* Pure data layer — no rendering, no side effects. Platform builders
|
|
66
|
+
* who want full control over rendering import this hook and build
|
|
67
|
+
* their own UI (task palettes, form generators, validation).
|
|
68
|
+
*
|
|
69
|
+
* The registry data is fetched from the task kind registry API by
|
|
70
|
+
* {@link StigmerProvider} and cached in context. During loading,
|
|
71
|
+
* `isLoading` is `true` and `descriptors` is empty.
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```tsx
|
|
75
|
+
* function TaskPalette() {
|
|
76
|
+
* const { categories, isLoading, error } = useTaskKindRegistry();
|
|
77
|
+
*
|
|
78
|
+
* if (isLoading) return <Skeleton />;
|
|
79
|
+
* if (error) return <ErrorMessage error={error} />;
|
|
80
|
+
*
|
|
81
|
+
* return (
|
|
82
|
+
* <div>
|
|
83
|
+
* {Array.from(categories).map(([category, tasks]) => (
|
|
84
|
+
* <CategorySection key={category} label={category}>
|
|
85
|
+
* {tasks.map(task => (
|
|
86
|
+
* <TaskCard key={task.kind} descriptor={task} />
|
|
87
|
+
* ))}
|
|
88
|
+
* </CategorySection>
|
|
89
|
+
* ))}
|
|
90
|
+
* </div>
|
|
91
|
+
* );
|
|
92
|
+
* }
|
|
93
|
+
* ```
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```tsx
|
|
97
|
+
* // YAML editor integration
|
|
98
|
+
* function WorkflowEditor({ taskKind }: { taskKind: string }) {
|
|
99
|
+
* const { getJsonSchema } = useTaskKindRegistry();
|
|
100
|
+
* const schema = getJsonSchema(taskKind);
|
|
101
|
+
* // Pass schema to Monaco for autocomplete + validation
|
|
102
|
+
* }
|
|
103
|
+
* ```
|
|
104
|
+
*
|
|
105
|
+
* @since T04 (Task Schema Registry)
|
|
106
|
+
*/
|
|
107
|
+
export function useTaskKindRegistry(): UseTaskKindRegistryReturn {
|
|
108
|
+
const { descriptors, isLoading, error, refetch } = useTaskKindRegistryContext();
|
|
109
|
+
|
|
110
|
+
return useMemo(() => {
|
|
111
|
+
const byKind = new Map<string, TaskKindDescriptor>();
|
|
112
|
+
const byCategory = new Map<TaskKindCategory, TaskKindDescriptor[]>();
|
|
113
|
+
|
|
114
|
+
for (const descriptor of descriptors) {
|
|
115
|
+
byKind.set(descriptor.kind, descriptor);
|
|
116
|
+
|
|
117
|
+
const group = byCategory.get(descriptor.category);
|
|
118
|
+
if (group) {
|
|
119
|
+
group.push(descriptor);
|
|
120
|
+
} else {
|
|
121
|
+
byCategory.set(descriptor.category, [descriptor]);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return {
|
|
126
|
+
descriptors,
|
|
127
|
+
getByKind: (kind: string) => byKind.get(kind),
|
|
128
|
+
getJsonSchema: (kind: string) => byKind.get(kind)?.configJsonSchema,
|
|
129
|
+
categories: byCategory as ReadonlyMap<TaskKindCategory, readonly TaskKindDescriptor[]>,
|
|
130
|
+
isLoading,
|
|
131
|
+
error,
|
|
132
|
+
refetch,
|
|
133
|
+
};
|
|
134
|
+
}, [descriptors, isLoading, error, refetch]);
|
|
135
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import type { Workflow } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/api_pb";
|
|
4
|
+
import { isNotFound } from "@stigmer/sdk";
|
|
5
|
+
import { useStigmer } from "../hooks";
|
|
6
|
+
import { useFetch } from "../internal/useFetch";
|
|
7
|
+
|
|
8
|
+
/** Return value of {@link useWorkflow}. */
|
|
9
|
+
export interface UseWorkflowReturn {
|
|
10
|
+
/** The resolved Workflow, or `null` while loading, on error, or when not found. */
|
|
11
|
+
readonly workflow: Workflow | null;
|
|
12
|
+
/** `true` while the initial fetch or a refetch is in flight. */
|
|
13
|
+
readonly isLoading: boolean;
|
|
14
|
+
/** `true` while a background refetch is in flight and stale data is shown. */
|
|
15
|
+
readonly isRefetching: boolean;
|
|
16
|
+
/** Error from the last failed request, or `null` when healthy. */
|
|
17
|
+
readonly error: Error | null;
|
|
18
|
+
/** Discard cached data and re-fetch the workflow from the server. */
|
|
19
|
+
readonly refetch: () => void;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Data hook that fetches a single Workflow blueprint by organization and slug.
|
|
24
|
+
*
|
|
25
|
+
* Wraps `stigmer.workflow.getByReference()` with loading, error, and
|
|
26
|
+
* not-found state management. When the `org` or `slug` parameters
|
|
27
|
+
* change, the previous in-flight request is discarded and a fresh
|
|
28
|
+
* fetch begins.
|
|
29
|
+
*
|
|
30
|
+
* Pass `null` for either `org` or `slug` to skip fetching (stable
|
|
31
|
+
* no-op). This is useful when the slug is not yet available — for
|
|
32
|
+
* example, while a parent component is still resolving route params.
|
|
33
|
+
*
|
|
34
|
+
* **Not-found handling:** If the API returns a 404 (NOT_FOUND), the
|
|
35
|
+
* hook sets `workflow` to `null` without raising an error. Consumers
|
|
36
|
+
* distinguish "not found" from "loading" by checking all three fields:
|
|
37
|
+
* `workflow === null && !isLoading && !error` means the resource does
|
|
38
|
+
* not exist.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```tsx
|
|
42
|
+
* function WorkflowDetail({ org, slug }: { org: string; slug: string }) {
|
|
43
|
+
* const { workflow, isLoading, error } = useWorkflow(org, slug);
|
|
44
|
+
*
|
|
45
|
+
* if (isLoading) return <Skeleton />;
|
|
46
|
+
* if (error) return <ErrorMessage error={error} />;
|
|
47
|
+
* if (!workflow) return <NotFound />;
|
|
48
|
+
*
|
|
49
|
+
* return <h1>{workflow.metadata?.name}</h1>;
|
|
50
|
+
* }
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export function useWorkflow(
|
|
54
|
+
org: string | null,
|
|
55
|
+
slug: string | null,
|
|
56
|
+
): UseWorkflowReturn {
|
|
57
|
+
const stigmer = useStigmer();
|
|
58
|
+
|
|
59
|
+
const fetchFn =
|
|
60
|
+
org && slug
|
|
61
|
+
? async () => {
|
|
62
|
+
try {
|
|
63
|
+
return await stigmer.workflow.getByReference({ org, slug });
|
|
64
|
+
} catch (err) {
|
|
65
|
+
if (isNotFound(err)) return null;
|
|
66
|
+
throw err;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
: null;
|
|
70
|
+
|
|
71
|
+
const { data: workflow, isLoading, isRefetching, error, refetch } = useFetch(
|
|
72
|
+
fetchFn,
|
|
73
|
+
[org, slug, stigmer],
|
|
74
|
+
null,
|
|
75
|
+
);
|
|
76
|
+
|
|
77
|
+
return { workflow, isLoading, isRefetching, error, refetch };
|
|
78
|
+
}
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
4
|
+
import type { AgentExecution } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
|
|
5
|
+
import { ExecutionPhase } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
6
|
+
import { getUserMessage } from "@stigmer/sdk";
|
|
7
|
+
import { useStigmer } from "../hooks";
|
|
8
|
+
import { useCreateSession } from "../session/useCreateSession";
|
|
9
|
+
import { useCreateAgentExecution } from "../execution/useCreateAgentExecution";
|
|
10
|
+
import { useExecutionStream } from "../execution/useExecutionStream";
|
|
11
|
+
import { isTerminalPhase } from "../execution/execution-phases";
|
|
12
|
+
import { useConversationStoreRef } from "../internal/store";
|
|
13
|
+
import { parseWorkflowYaml } from "./serialize-workflow-yaml";
|
|
14
|
+
import {
|
|
15
|
+
extractWorkflowYaml,
|
|
16
|
+
type ExtractedWorkflowYaml,
|
|
17
|
+
} from "./extract-workflow-yaml";
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Lifecycle phases for the Workflow Architect generate flow.
|
|
21
|
+
*
|
|
22
|
+
* - `idle` — waiting for user to submit a prompt
|
|
23
|
+
* - `starting` — creating session + execution
|
|
24
|
+
* - `streaming` — agent is working (tool calls, validation, generation)
|
|
25
|
+
* - `complete` — agent finished and YAML was extracted successfully
|
|
26
|
+
* - `extraction-failed` — agent finished but no YAML block was found
|
|
27
|
+
* - `applying` — creating the workflow from extracted YAML
|
|
28
|
+
* - `error` — a failure occurred (RPC, stream, or apply)
|
|
29
|
+
*/
|
|
30
|
+
export type ArchitectPhase =
|
|
31
|
+
| "idle"
|
|
32
|
+
| "starting"
|
|
33
|
+
| "streaming"
|
|
34
|
+
| "complete"
|
|
35
|
+
| "extraction-failed"
|
|
36
|
+
| "applying"
|
|
37
|
+
| "error";
|
|
38
|
+
|
|
39
|
+
/** Options for {@link useWorkflowArchitectFlow}. */
|
|
40
|
+
export interface UseWorkflowArchitectFlowOptions {
|
|
41
|
+
/** Organization slug — used for session, execution, and workflow creation. */
|
|
42
|
+
readonly org: string;
|
|
43
|
+
/**
|
|
44
|
+
* Called after the workflow is created successfully.
|
|
45
|
+
* Receives the org slug and workflow slug for navigation.
|
|
46
|
+
*/
|
|
47
|
+
readonly onSuccess: (org: string, slug: string) => void;
|
|
48
|
+
/**
|
|
49
|
+
* Called when any step fails. Receives a human-readable message.
|
|
50
|
+
* Errors are also available via {@link UseWorkflowArchitectFlowReturn.error}.
|
|
51
|
+
*/
|
|
52
|
+
readonly onError?: (message: string) => void;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** Return value of {@link useWorkflowArchitectFlow}. */
|
|
56
|
+
export interface UseWorkflowArchitectFlowReturn {
|
|
57
|
+
/** Current prompt value. */
|
|
58
|
+
readonly prompt: string;
|
|
59
|
+
/** Update the prompt. */
|
|
60
|
+
readonly setPrompt: (value: string) => void;
|
|
61
|
+
|
|
62
|
+
/** Current lifecycle phase. */
|
|
63
|
+
readonly phase: ArchitectPhase;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Latest execution snapshot from the agent stream.
|
|
67
|
+
*
|
|
68
|
+
* Non-null during `streaming`, `complete`, and `extraction-failed`
|
|
69
|
+
* phases. Pass to `MessageThread` for rendering agent messages.
|
|
70
|
+
*/
|
|
71
|
+
readonly execution: AgentExecution | null;
|
|
72
|
+
/** `true` while the agent execution is actively streaming. */
|
|
73
|
+
readonly isStreaming: boolean;
|
|
74
|
+
|
|
75
|
+
/** Extracted YAML when phase is `complete`, otherwise `null`. */
|
|
76
|
+
readonly extractedYaml: string | null;
|
|
77
|
+
/** Agent's explanation prose when phase is `complete`, otherwise `null`. */
|
|
78
|
+
readonly explanation: string | null;
|
|
79
|
+
|
|
80
|
+
/** Human-readable error message, or `null` when healthy. */
|
|
81
|
+
readonly error: string | null;
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Validate the prompt and launch the Workflow Architect agent.
|
|
85
|
+
*
|
|
86
|
+
* Creates a session with the `workflow-architect` system agent,
|
|
87
|
+
* starts an execution with the user's prompt, and begins streaming.
|
|
88
|
+
* The stream phase transitions automatically when the agent finishes.
|
|
89
|
+
*/
|
|
90
|
+
readonly generate: () => Promise<void>;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Create a workflow from the extracted YAML via `workflow.apply()`.
|
|
94
|
+
*
|
|
95
|
+
* Only callable when phase is `complete`. Calls `onSuccess` with
|
|
96
|
+
* the org and slug on completion.
|
|
97
|
+
*/
|
|
98
|
+
readonly createWorkflow: () => Promise<void>;
|
|
99
|
+
|
|
100
|
+
/** Reset all state to initial values. Does not delete the session. */
|
|
101
|
+
readonly reset: () => void;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const AGENT_REF = { org: "", slug: "workflow-architect" } as const;
|
|
105
|
+
const MIN_PROMPT_LENGTH = 10;
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Behavior hook that orchestrates the agent-powered "generate a workflow"
|
|
109
|
+
* flow using the built-in Workflow Architect system agent.
|
|
110
|
+
*
|
|
111
|
+
* Composes existing infrastructure:
|
|
112
|
+
* - {@link useCreateSession} to create a session with the agent
|
|
113
|
+
* - {@link useCreateAgentExecution} to start the generation execution
|
|
114
|
+
* - {@link useExecutionStream} + `ConversationStore` for real-time streaming
|
|
115
|
+
* - {@link extractWorkflowYaml} to parse YAML from agent messages
|
|
116
|
+
* - `workflow.apply()` to persist the generated workflow
|
|
117
|
+
*
|
|
118
|
+
* The hook is framework-agnostic (DD-004) and returns referentially
|
|
119
|
+
* stable values (DD-010).
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```tsx
|
|
123
|
+
* const flow = useWorkflowArchitectFlow({
|
|
124
|
+
* org: "acme",
|
|
125
|
+
* onSuccess: (org, slug) => router.push(`/library/workflows/${org}/${slug}`),
|
|
126
|
+
* onError: (msg) => toast.error(msg),
|
|
127
|
+
* });
|
|
128
|
+
*
|
|
129
|
+
* <WorkflowArchitectDialog {...flow} />
|
|
130
|
+
* ```
|
|
131
|
+
*/
|
|
132
|
+
export function useWorkflowArchitectFlow(
|
|
133
|
+
options: UseWorkflowArchitectFlowOptions,
|
|
134
|
+
): UseWorkflowArchitectFlowReturn {
|
|
135
|
+
const { org, onSuccess, onError } = options;
|
|
136
|
+
const stigmer = useStigmer();
|
|
137
|
+
|
|
138
|
+
const [prompt, setPrompt] = useState("");
|
|
139
|
+
const [phase, setPhase] = useState<ArchitectPhase>("idle");
|
|
140
|
+
const [executionId, setExecutionId] = useState<string | null>(null);
|
|
141
|
+
const [sessionId, setSessionId] = useState<string | null>(null);
|
|
142
|
+
const [extracted, setExtracted] = useState<ExtractedWorkflowYaml | null>(
|
|
143
|
+
null,
|
|
144
|
+
);
|
|
145
|
+
const [error, setError] = useState<string | null>(null);
|
|
146
|
+
|
|
147
|
+
const orgRef = useRef(org);
|
|
148
|
+
orgRef.current = org;
|
|
149
|
+
const onSuccessRef = useRef(onSuccess);
|
|
150
|
+
onSuccessRef.current = onSuccess;
|
|
151
|
+
const onErrorRef = useRef(onError);
|
|
152
|
+
onErrorRef.current = onError;
|
|
153
|
+
|
|
154
|
+
const { create: createSession } = useCreateSession();
|
|
155
|
+
const { create: createExecution } = useCreateAgentExecution();
|
|
156
|
+
const conversationStore = useConversationStoreRef();
|
|
157
|
+
const stream = useExecutionStream(executionId, {
|
|
158
|
+
store: conversationStore,
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
// Detect when the stream reaches a terminal phase and extract YAML
|
|
162
|
+
const prevTerminalRef = useRef(false);
|
|
163
|
+
useEffect(() => {
|
|
164
|
+
if (phase !== "streaming") return;
|
|
165
|
+
|
|
166
|
+
const isTerminal =
|
|
167
|
+
stream.phase !== ExecutionPhase.EXECUTION_PHASE_UNSPECIFIED &&
|
|
168
|
+
isTerminalPhase(stream.phase);
|
|
169
|
+
|
|
170
|
+
if (isTerminal && !prevTerminalRef.current) {
|
|
171
|
+
prevTerminalRef.current = true;
|
|
172
|
+
|
|
173
|
+
const result = extractWorkflowYaml(stream.execution);
|
|
174
|
+
if (result) {
|
|
175
|
+
setExtracted(result);
|
|
176
|
+
setPhase("complete");
|
|
177
|
+
} else {
|
|
178
|
+
setPhase("extraction-failed");
|
|
179
|
+
setError(
|
|
180
|
+
"The agent completed but did not produce a YAML workflow definition. " +
|
|
181
|
+
"Try again with a more specific prompt.",
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}, [phase, stream.phase, stream.execution]);
|
|
186
|
+
|
|
187
|
+
// Surface stream errors
|
|
188
|
+
useEffect(() => {
|
|
189
|
+
if (stream.error && phase === "streaming") {
|
|
190
|
+
setPhase("error");
|
|
191
|
+
setError(getUserMessage(stream.error, "Agent stream interrupted"));
|
|
192
|
+
onErrorRef.current?.(
|
|
193
|
+
getUserMessage(stream.error, "Agent stream interrupted"),
|
|
194
|
+
);
|
|
195
|
+
}
|
|
196
|
+
}, [stream.error, phase]);
|
|
197
|
+
|
|
198
|
+
const generate = useCallback(async () => {
|
|
199
|
+
if (phase !== "idle" && phase !== "error" && phase !== "extraction-failed")
|
|
200
|
+
return;
|
|
201
|
+
|
|
202
|
+
const trimmed = prompt.trim();
|
|
203
|
+
if (trimmed.length < MIN_PROMPT_LENGTH) {
|
|
204
|
+
setError(`Prompt must be at least ${MIN_PROMPT_LENGTH} characters`);
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
setPhase("starting");
|
|
209
|
+
setError(null);
|
|
210
|
+
setExtracted(null);
|
|
211
|
+
prevTerminalRef.current = false;
|
|
212
|
+
|
|
213
|
+
try {
|
|
214
|
+
const { sessionId: newSessionId } = await createSession({
|
|
215
|
+
org: orgRef.current,
|
|
216
|
+
agentRef: { ...AGENT_REF, org: orgRef.current },
|
|
217
|
+
});
|
|
218
|
+
setSessionId(newSessionId);
|
|
219
|
+
|
|
220
|
+
const { executionId: newExecutionId } = await createExecution({
|
|
221
|
+
org: orgRef.current,
|
|
222
|
+
sessionId: newSessionId,
|
|
223
|
+
message: trimmed,
|
|
224
|
+
});
|
|
225
|
+
setExecutionId(newExecutionId);
|
|
226
|
+
setPhase("streaming");
|
|
227
|
+
} catch (err) {
|
|
228
|
+
const msg = getUserMessage(
|
|
229
|
+
err,
|
|
230
|
+
"Failed to start the Workflow Architect agent",
|
|
231
|
+
);
|
|
232
|
+
setPhase("error");
|
|
233
|
+
setError(msg);
|
|
234
|
+
onErrorRef.current?.(msg);
|
|
235
|
+
}
|
|
236
|
+
}, [phase, prompt, createSession, createExecution]);
|
|
237
|
+
|
|
238
|
+
const createWorkflow = useCallback(async () => {
|
|
239
|
+
if (phase !== "complete" || !extracted) return;
|
|
240
|
+
|
|
241
|
+
setPhase("applying");
|
|
242
|
+
setError(null);
|
|
243
|
+
|
|
244
|
+
try {
|
|
245
|
+
const input = parseWorkflowYaml(extracted.yaml, orgRef.current);
|
|
246
|
+
const workflow = await stigmer.workflow.apply(input);
|
|
247
|
+
|
|
248
|
+
const slug = workflow.metadata?.slug;
|
|
249
|
+
const workflowOrg = workflow.metadata?.org || orgRef.current;
|
|
250
|
+
|
|
251
|
+
if (!slug) {
|
|
252
|
+
throw new Error(
|
|
253
|
+
"Workflow was created but no slug was returned. Check the workflows list.",
|
|
254
|
+
);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
onSuccessRef.current(workflowOrg, slug);
|
|
258
|
+
} catch (err) {
|
|
259
|
+
const msg = getUserMessage(err, "Failed to create workflow");
|
|
260
|
+
setPhase("error");
|
|
261
|
+
setError(msg);
|
|
262
|
+
onErrorRef.current?.(msg);
|
|
263
|
+
}
|
|
264
|
+
}, [phase, extracted, stigmer]);
|
|
265
|
+
|
|
266
|
+
const reset = useCallback(() => {
|
|
267
|
+
setPrompt("");
|
|
268
|
+
setPhase("idle");
|
|
269
|
+
setExecutionId(null);
|
|
270
|
+
setSessionId(null);
|
|
271
|
+
setExtracted(null);
|
|
272
|
+
setError(null);
|
|
273
|
+
prevTerminalRef.current = false;
|
|
274
|
+
}, []);
|
|
275
|
+
|
|
276
|
+
return useMemo(
|
|
277
|
+
() => ({
|
|
278
|
+
prompt,
|
|
279
|
+
setPrompt,
|
|
280
|
+
phase,
|
|
281
|
+
execution: stream.execution,
|
|
282
|
+
isStreaming: stream.isStreaming || stream.isConnecting,
|
|
283
|
+
extractedYaml: extracted?.yaml ?? null,
|
|
284
|
+
explanation: extracted?.explanation ?? null,
|
|
285
|
+
error,
|
|
286
|
+
generate,
|
|
287
|
+
createWorkflow,
|
|
288
|
+
reset,
|
|
289
|
+
}),
|
|
290
|
+
[
|
|
291
|
+
prompt,
|
|
292
|
+
phase,
|
|
293
|
+
stream.execution,
|
|
294
|
+
stream.isStreaming,
|
|
295
|
+
stream.isConnecting,
|
|
296
|
+
extracted,
|
|
297
|
+
error,
|
|
298
|
+
generate,
|
|
299
|
+
createWorkflow,
|
|
300
|
+
reset,
|
|
301
|
+
],
|
|
302
|
+
);
|
|
303
|
+
}
|