@stigmer/react 2.0.1 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +64 -2
- package/agent/AgentDetailView.d.ts +26 -1
- package/agent/AgentDetailView.d.ts.map +1 -1
- package/agent/AgentDetailView.js +9 -2
- package/agent/AgentDetailView.js.map +1 -1
- package/agent/useAgentSetup.d.ts +19 -0
- package/agent/useAgentSetup.d.ts.map +1 -1
- package/agent/useAgentSetup.js +15 -1
- package/agent/useAgentSetup.js.map +1 -1
- package/agent-instance/AgentInstanceDetailPanel.d.ts +26 -0
- package/agent-instance/AgentInstanceDetailPanel.d.ts.map +1 -0
- package/agent-instance/AgentInstanceDetailPanel.js +94 -0
- package/agent-instance/AgentInstanceDetailPanel.js.map +1 -0
- package/agent-instance/AgentInstanceEmptyState.d.ts +17 -0
- package/agent-instance/AgentInstanceEmptyState.d.ts.map +1 -0
- package/agent-instance/AgentInstanceEmptyState.js +21 -0
- package/agent-instance/AgentInstanceEmptyState.js.map +1 -0
- package/agent-instance/AgentInstanceList.d.ts +38 -0
- package/agent-instance/AgentInstanceList.d.ts.map +1 -0
- package/agent-instance/AgentInstanceList.js +75 -0
- package/agent-instance/AgentInstanceList.js.map +1 -0
- package/agent-instance/CreateAgentInstanceDialog.d.ts +24 -0
- package/agent-instance/CreateAgentInstanceDialog.d.ts.map +1 -0
- package/agent-instance/CreateAgentInstanceDialog.js +78 -0
- package/agent-instance/CreateAgentInstanceDialog.js.map +1 -0
- package/agent-instance/index.d.ts +14 -0
- package/agent-instance/index.d.ts.map +1 -1
- package/agent-instance/index.js +7 -0
- package/agent-instance/index.js.map +1 -1
- package/agent-instance/useAgentInstances.d.ts +34 -0
- package/agent-instance/useAgentInstances.d.ts.map +1 -0
- package/agent-instance/useAgentInstances.js +37 -0
- package/agent-instance/useAgentInstances.js.map +1 -0
- package/agent-instance/useDeleteAgentInstance.d.ts +42 -0
- package/agent-instance/useDeleteAgentInstance.d.ts.map +1 -0
- package/agent-instance/useDeleteAgentInstance.js +48 -0
- package/agent-instance/useDeleteAgentInstance.js.map +1 -0
- package/agent-instance/useUpdateAgentInstance.d.ts +36 -0
- package/agent-instance/useUpdateAgentInstance.d.ts.map +1 -0
- package/agent-instance/useUpdateAgentInstance.js +47 -0
- package/agent-instance/useUpdateAgentInstance.js.map +1 -0
- package/composer/SessionComposer.d.ts +18 -0
- package/composer/SessionComposer.d.ts.map +1 -1
- package/composer/SessionComposer.js +27 -3
- package/composer/SessionComposer.js.map +1 -1
- package/execution/ApprovalCard.d.ts.map +1 -1
- package/execution/ApprovalCard.js +6 -3
- package/execution/ApprovalCard.js.map +1 -1
- package/execution/MessageThread.d.ts +3 -0
- package/execution/MessageThread.d.ts.map +1 -1
- package/execution/MessageThread.js +12 -2
- package/execution/MessageThread.js.map +1 -1
- package/execution/PlanArtifactCard.d.ts +29 -0
- package/execution/PlanArtifactCard.d.ts.map +1 -0
- package/execution/PlanArtifactCard.js +59 -0
- package/execution/PlanArtifactCard.js.map +1 -0
- package/execution/ResultView.d.ts +24 -0
- package/execution/ResultView.d.ts.map +1 -0
- package/execution/ResultView.js +152 -0
- package/execution/ResultView.js.map +1 -0
- package/execution/SubAgentSection.js +1 -1
- package/execution/SubAgentSection.js.map +1 -1
- package/execution/ToolCallDetail.d.ts +13 -19
- package/execution/ToolCallDetail.d.ts.map +1 -1
- package/execution/ToolCallDetail.js +42 -70
- package/execution/ToolCallDetail.js.map +1 -1
- package/execution/ToolCallGroup.js +2 -2
- package/execution/ToolCallGroup.js.map +1 -1
- package/execution/ToolCallItem.d.ts.map +1 -1
- package/execution/ToolCallItem.js +13 -9
- package/execution/ToolCallItem.js.map +1 -1
- package/execution/index.d.ts +7 -1
- package/execution/index.d.ts.map +1 -1
- package/execution/index.js +4 -1
- package/execution/index.js.map +1 -1
- package/execution/tool-categories.d.ts +30 -21
- package/execution/tool-categories.d.ts.map +1 -1
- package/execution/tool-categories.js +57 -49
- package/execution/tool-categories.js.map +1 -1
- package/execution/tool-presenter.d.ts +60 -0
- package/execution/tool-presenter.d.ts.map +1 -0
- package/execution/tool-presenter.js +81 -0
- package/execution/tool-presenter.js.map +1 -0
- package/execution/useCreateAgentExecution.d.ts +9 -0
- package/execution/useCreateAgentExecution.d.ts.map +1 -1
- package/execution/useCreateAgentExecution.js +1 -0
- package/execution/useCreateAgentExecution.js.map +1 -1
- package/index.d.ts +6 -5
- package/index.d.ts.map +1 -1
- package/index.js +7 -4
- package/index.js.map +1 -1
- package/library/detect-plan-artifact.d.ts +26 -0
- package/library/detect-plan-artifact.d.ts.map +1 -0
- package/library/detect-plan-artifact.js +37 -0
- package/library/detect-plan-artifact.js.map +1 -0
- 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/package.json +4 -4
- package/provider.d.ts +5 -3
- package/provider.d.ts.map +1 -1
- package/provider.js.map +1 -1
- package/runner-adapter.d.ts +19 -4
- package/runner-adapter.d.ts.map +1 -1
- package/runner-adapter.js.map +1 -1
- package/session/NewSessionViewer.d.ts +10 -1
- package/session/NewSessionViewer.d.ts.map +1 -1
- package/session/NewSessionViewer.js +2 -2
- package/session/NewSessionViewer.js.map +1 -1
- package/session/SessionViewer.d.ts.map +1 -1
- package/session/SessionViewer.js +17 -2
- package/session/SessionViewer.js.map +1 -1
- package/session/useCreateSession.d.ts.map +1 -1
- package/session/useCreateSession.js +4 -6
- package/session/useCreateSession.js.map +1 -1
- package/session/useLocalSessionWorker.d.ts +33 -0
- package/session/useLocalSessionWorker.d.ts.map +1 -0
- package/session/useLocalSessionWorker.js +65 -0
- package/session/useLocalSessionWorker.js.map +1 -0
- package/session/useNewSessionFlow.d.ts.map +1 -1
- package/session/useNewSessionFlow.js +22 -1
- package/session/useNewSessionFlow.js.map +1 -1
- package/session/useSessionConversation.d.ts +12 -0
- package/session/useSessionConversation.d.ts.map +1 -1
- package/session/useSessionConversation.js +11 -0
- package/session/useSessionConversation.js.map +1 -1
- package/session/useSessionPageFlow.d.ts +23 -0
- package/session/useSessionPageFlow.d.ts.map +1 -1
- package/session/useSessionPageFlow.js +21 -1
- package/session/useSessionPageFlow.js.map +1 -1
- package/src/__tests__/runner-adapter.test.tsx +14 -107
- package/src/agent/AgentDetailView.tsx +49 -1
- package/src/agent/__tests__/useAgentSetup.resolveToInstance.test.tsx +73 -0
- package/src/agent/useAgentSetup.ts +48 -1
- package/src/agent-instance/AgentInstanceDetailPanel.tsx +359 -0
- package/src/agent-instance/AgentInstanceEmptyState.tsx +87 -0
- package/src/agent-instance/AgentInstanceList.tsx +329 -0
- package/src/agent-instance/CreateAgentInstanceDialog.tsx +258 -0
- package/src/agent-instance/__tests__/agent-instance-hooks.test.tsx +213 -0
- package/src/agent-instance/index.ts +15 -0
- package/src/agent-instance/useAgentInstances.ts +66 -0
- package/src/agent-instance/useDeleteAgentInstance.ts +73 -0
- package/src/agent-instance/useUpdateAgentInstance.ts +67 -0
- package/src/composer/SessionComposer.tsx +54 -2
- package/src/execution/ApprovalCard.tsx +22 -3
- package/src/execution/MessageThread.tsx +27 -3
- package/src/execution/PlanArtifactCard.tsx +257 -0
- package/src/execution/ResultView.tsx +366 -0
- package/src/execution/SubAgentSection.tsx +5 -0
- package/src/execution/ToolCallDetail.tsx +72 -173
- package/src/execution/ToolCallGroup.tsx +2 -2
- package/src/execution/ToolCallItem.tsx +25 -12
- package/src/execution/__tests__/ApprovalCard.test.tsx +99 -0
- package/src/execution/__tests__/ResultView.test.tsx +95 -0
- package/src/execution/__tests__/subagent-thread-item.test.ts +153 -0
- package/src/execution/__tests__/tool-presenter.test.tsx +78 -0
- package/src/execution/index.ts +16 -0
- package/src/execution/tool-categories.ts +80 -66
- package/src/execution/tool-presenter.ts +118 -0
- package/src/execution/useCreateAgentExecution.ts +10 -0
- package/src/index.ts +32 -1
- package/src/library/__tests__/detect-plan-artifact.test.ts +75 -0
- package/src/library/detect-plan-artifact.ts +43 -0
- package/src/library/index.ts +6 -0
- package/src/provider.tsx +5 -3
- package/src/runner-adapter.ts +19 -4
- package/src/session/NewSessionViewer.tsx +11 -0
- package/src/session/SessionViewer.tsx +46 -2
- package/src/session/__tests__/group-sessions.test.ts +3 -5
- package/src/session/__tests__/useLocalSessionWorker.test.tsx +194 -0
- package/src/session/__tests__/useNewSessionFlow.test.tsx +80 -4
- package/src/session/__tests__/useSessionConversation.test.tsx +89 -0
- package/src/session/__tests__/useSessionPageFlow.autoApprove.test.tsx +149 -0
- package/src/session/useCreateSession.ts +4 -7
- package/src/session/useLocalSessionWorker.ts +73 -0
- package/src/session/useNewSessionFlow.ts +23 -1
- package/src/session/useSessionConversation.ts +18 -0
- package/src/session/useSessionPageFlow.ts +51 -1
- package/src/workflow/__tests__/useWorkflowExecution.test.tsx +2 -2
- package/styles.css +1 -1
- package/__tests__/hooks.test.d.ts +0 -2
- package/__tests__/hooks.test.d.ts.map +0 -1
- package/__tests__/hooks.test.js +0 -35
- package/__tests__/hooks.test.js.map +0 -1
- package/__tests__/runner-adapter.test.d.ts +0 -2
- package/__tests__/runner-adapter.test.d.ts.map +0 -1
- package/__tests__/runner-adapter.test.js +0 -153
- package/__tests__/runner-adapter.test.js.map +0 -1
- package/activity/__tests__/useRecentActivity-optimistic.test.d.ts +0 -2
- package/activity/__tests__/useRecentActivity-optimistic.test.d.ts.map +0 -1
- package/activity/__tests__/useRecentActivity-optimistic.test.js +0 -139
- package/activity/__tests__/useRecentActivity-optimistic.test.js.map +0 -1
- package/activity/__tests__/useRecentActivity.test.d.ts +0 -2
- package/activity/__tests__/useRecentActivity.test.d.ts.map +0 -1
- package/activity/__tests__/useRecentActivity.test.js +0 -107
- package/activity/__tests__/useRecentActivity.test.js.map +0 -1
- package/agent/__tests__/useAgent.test.d.ts +0 -2
- package/agent/__tests__/useAgent.test.d.ts.map +0 -1
- package/agent/__tests__/useAgent.test.js +0 -86
- package/agent/__tests__/useAgent.test.js.map +0 -1
- package/agent/__tests__/useDefaultAgent.test.d.ts +0 -2
- package/agent/__tests__/useDefaultAgent.test.d.ts.map +0 -1
- package/agent/__tests__/useDefaultAgent.test.js +0 -135
- package/agent/__tests__/useDefaultAgent.test.js.map +0 -1
- package/billing/__tests__/CreditLedgerTable.test.d.ts +0 -2
- package/billing/__tests__/CreditLedgerTable.test.d.ts.map +0 -1
- package/billing/__tests__/CreditLedgerTable.test.js +0 -74
- package/billing/__tests__/CreditLedgerTable.test.js.map +0 -1
- package/composer/__tests__/ComposerToolbar-directAction.test.d.ts +0 -2
- package/composer/__tests__/ComposerToolbar-directAction.test.d.ts.map +0 -1
- package/composer/__tests__/ComposerToolbar-directAction.test.js +0 -64
- package/composer/__tests__/ComposerToolbar-directAction.test.js.map +0 -1
- package/composer/__tests__/SessionComposer-contract.test.d.ts +0 -2
- package/composer/__tests__/SessionComposer-contract.test.d.ts.map +0 -1
- package/composer/__tests__/SessionComposer-contract.test.js +0 -87
- package/composer/__tests__/SessionComposer-contract.test.js.map +0 -1
- package/composer/__tests__/SessionComposer-fileref.test.d.ts +0 -2
- package/composer/__tests__/SessionComposer-fileref.test.d.ts.map +0 -1
- package/composer/__tests__/SessionComposer-fileref.test.js +0 -132
- package/composer/__tests__/SessionComposer-fileref.test.js.map +0 -1
- package/composer/__tests__/SessionComposer-memo.test.d.ts +0 -2
- package/composer/__tests__/SessionComposer-memo.test.d.ts.map +0 -1
- package/composer/__tests__/SessionComposer-memo.test.js +0 -28
- package/composer/__tests__/SessionComposer-memo.test.js.map +0 -1
- package/composer/__tests__/useComposer.test.d.ts +0 -2
- package/composer/__tests__/useComposer.test.d.ts.map +0 -1
- package/composer/__tests__/useComposer.test.js +0 -139
- package/composer/__tests__/useComposer.test.js.map +0 -1
- package/environment/__tests__/systemEnvVars.test.d.ts +0 -2
- package/environment/__tests__/systemEnvVars.test.d.ts.map +0 -1
- package/environment/__tests__/systemEnvVars.test.js +0 -76
- package/environment/__tests__/systemEnvVars.test.js.map +0 -1
- package/execution/__tests__/MessageThread.test.d.ts +0 -2
- package/execution/__tests__/MessageThread.test.d.ts.map +0 -1
- package/execution/__tests__/MessageThread.test.js +0 -164
- package/execution/__tests__/MessageThread.test.js.map +0 -1
- package/execution/__tests__/PlanCompletionCard.test.d.ts +0 -2
- package/execution/__tests__/PlanCompletionCard.test.d.ts.map +0 -1
- package/execution/__tests__/PlanCompletionCard.test.js +0 -53
- package/execution/__tests__/PlanCompletionCard.test.js.map +0 -1
- package/execution/__tests__/buildThreadItems-plan-completion.test.d.ts +0 -2
- package/execution/__tests__/buildThreadItems-plan-completion.test.d.ts.map +0 -1
- package/execution/__tests__/buildThreadItems-plan-completion.test.js +0 -137
- package/execution/__tests__/buildThreadItems-plan-completion.test.js.map +0 -1
- package/execution/__tests__/execution-phases.test.d.ts +0 -2
- package/execution/__tests__/execution-phases.test.d.ts.map +0 -1
- package/execution/__tests__/execution-phases.test.js +0 -25
- package/execution/__tests__/execution-phases.test.js.map +0 -1
- package/execution/__tests__/file-path-resolver.test.d.ts +0 -2
- package/execution/__tests__/file-path-resolver.test.d.ts.map +0 -1
- package/execution/__tests__/file-path-resolver.test.js +0 -180
- package/execution/__tests__/file-path-resolver.test.js.map +0 -1
- package/execution/__tests__/message-entry.test.d.ts +0 -2
- package/execution/__tests__/message-entry.test.d.ts.map +0 -1
- package/execution/__tests__/message-entry.test.js +0 -178
- package/execution/__tests__/message-entry.test.js.map +0 -1
- package/execution/__tests__/thread-keys.test.d.ts +0 -2
- package/execution/__tests__/thread-keys.test.d.ts.map +0 -1
- package/execution/__tests__/thread-keys.test.js +0 -462
- package/execution/__tests__/thread-keys.test.js.map +0 -1
- package/execution/__tests__/thread-memoization.test.d.ts +0 -2
- package/execution/__tests__/thread-memoization.test.d.ts.map +0 -1
- package/execution/__tests__/thread-memoization.test.js +0 -262
- package/execution/__tests__/thread-memoization.test.js.map +0 -1
- package/execution/__tests__/thread-skeleton.test.d.ts +0 -2
- package/execution/__tests__/thread-skeleton.test.d.ts.map +0 -1
- package/execution/__tests__/thread-skeleton.test.js +0 -35
- package/execution/__tests__/thread-skeleton.test.js.map +0 -1
- package/execution/__tests__/useContextWindow.test.d.ts +0 -2
- package/execution/__tests__/useContextWindow.test.d.ts.map +0 -1
- package/execution/__tests__/useContextWindow.test.js +0 -121
- package/execution/__tests__/useContextWindow.test.js.map +0 -1
- package/execution/__tests__/useExecutionStream.test.d.ts +0 -2
- package/execution/__tests__/useExecutionStream.test.d.ts.map +0 -1
- package/execution/__tests__/useExecutionStream.test.js +0 -253
- package/execution/__tests__/useExecutionStream.test.js.map +0 -1
- package/execution/__tests__/useSessionVariables-stability.test.d.ts +0 -2
- package/execution/__tests__/useSessionVariables-stability.test.d.ts.map +0 -1
- package/execution/__tests__/useSessionVariables-stability.test.js +0 -69
- package/execution/__tests__/useSessionVariables-stability.test.js.map +0 -1
- package/execution/__tests__/virtualized-thread.test.d.ts +0 -2
- package/execution/__tests__/virtualized-thread.test.d.ts.map +0 -1
- package/execution/__tests__/virtualized-thread.test.js +0 -274
- package/execution/__tests__/virtualized-thread.test.js.map +0 -1
- package/file-reference/__tests__/FileReferenceChipList.test.d.ts +0 -2
- package/file-reference/__tests__/FileReferenceChipList.test.d.ts.map +0 -1
- package/file-reference/__tests__/FileReferenceChipList.test.js +0 -48
- package/file-reference/__tests__/FileReferenceChipList.test.js.map +0 -1
- package/file-reference/__tests__/useFileReferences.test.d.ts +0 -2
- package/file-reference/__tests__/useFileReferences.test.d.ts.map +0 -1
- package/file-reference/__tests__/useFileReferences.test.js +0 -90
- package/file-reference/__tests__/useFileReferences.test.js.map +0 -1
- package/github/__tests__/parseGitUrl.test.d.ts +0 -2
- package/github/__tests__/parseGitUrl.test.d.ts.map +0 -1
- package/github/__tests__/parseGitUrl.test.js +0 -47
- package/github/__tests__/parseGitUrl.test.js.map +0 -1
- package/github/__tests__/useGitHubTreeLister.test.d.ts +0 -2
- package/github/__tests__/useGitHubTreeLister.test.d.ts.map +0 -1
- package/github/__tests__/useGitHubTreeLister.test.js +0 -112
- package/github/__tests__/useGitHubTreeLister.test.js.map +0 -1
- package/internal/__tests__/ResizableSplit.test.d.ts +0 -2
- package/internal/__tests__/ResizableSplit.test.d.ts.map +0 -1
- package/internal/__tests__/ResizableSplit.test.js +0 -118
- package/internal/__tests__/ResizableSplit.test.js.map +0 -1
- package/internal/__tests__/fetch-cache.test.d.ts +0 -2
- package/internal/__tests__/fetch-cache.test.d.ts.map +0 -1
- package/internal/__tests__/fetch-cache.test.js +0 -182
- package/internal/__tests__/fetch-cache.test.js.map +0 -1
- package/internal/__tests__/stream-controller.test.d.ts +0 -2
- package/internal/__tests__/stream-controller.test.d.ts.map +0 -1
- package/internal/__tests__/stream-controller.test.js +0 -327
- package/internal/__tests__/stream-controller.test.js.map +0 -1
- package/internal/__tests__/thread-animation.test.d.ts +0 -2
- package/internal/__tests__/thread-animation.test.d.ts.map +0 -1
- package/internal/__tests__/thread-animation.test.js +0 -79
- package/internal/__tests__/thread-animation.test.js.map +0 -1
- package/internal/__tests__/useAutoScroll.test.d.ts +0 -2
- package/internal/__tests__/useAutoScroll.test.d.ts.map +0 -1
- package/internal/__tests__/useAutoScroll.test.js +0 -188
- package/internal/__tests__/useAutoScroll.test.js.map +0 -1
- package/internal/__tests__/useFetch-cache.test.d.ts +0 -2
- package/internal/__tests__/useFetch-cache.test.d.ts.map +0 -1
- package/internal/__tests__/useFetch-cache.test.js +0 -137
- package/internal/__tests__/useFetch-cache.test.js.map +0 -1
- package/internal/__tests__/useFetch-identity-reset.test.d.ts +0 -2
- package/internal/__tests__/useFetch-identity-reset.test.d.ts.map +0 -1
- package/internal/__tests__/useFetch-identity-reset.test.js +0 -281
- package/internal/__tests__/useFetch-identity-reset.test.js.map +0 -1
- package/internal/__tests__/useFetch.test.d.ts +0 -2
- package/internal/__tests__/useFetch.test.d.ts.map +0 -1
- package/internal/__tests__/useFetch.test.js +0 -95
- package/internal/__tests__/useFetch.test.js.map +0 -1
- package/internal/dev/__tests__/use-key-stability.test.d.ts +0 -2
- package/internal/dev/__tests__/use-key-stability.test.d.ts.map +0 -1
- package/internal/dev/__tests__/use-key-stability.test.js +0 -72
- package/internal/dev/__tests__/use-key-stability.test.js.map +0 -1
- package/internal/dev/__tests__/use-render-tracer.test.d.ts +0 -2
- package/internal/dev/__tests__/use-render-tracer.test.d.ts.map +0 -1
- package/internal/dev/__tests__/use-render-tracer.test.js +0 -55
- package/internal/dev/__tests__/use-render-tracer.test.js.map +0 -1
- package/internal/file-tree/__tests__/FileTreeNode-drag.test.d.ts +0 -2
- package/internal/file-tree/__tests__/FileTreeNode-drag.test.d.ts.map +0 -1
- package/internal/file-tree/__tests__/FileTreeNode-drag.test.js +0 -55
- package/internal/file-tree/__tests__/FileTreeNode-drag.test.js.map +0 -1
- package/internal/file-tree/__tests__/buildFileTree.test.d.ts +0 -2
- package/internal/file-tree/__tests__/buildFileTree.test.d.ts.map +0 -1
- package/internal/file-tree/__tests__/buildFileTree.test.js +0 -102
- package/internal/file-tree/__tests__/buildFileTree.test.js.map +0 -1
- package/internal/file-tree/__tests__/filterFileTree.test.d.ts +0 -2
- package/internal/file-tree/__tests__/filterFileTree.test.d.ts.map +0 -1
- package/internal/file-tree/__tests__/filterFileTree.test.js +0 -120
- package/internal/file-tree/__tests__/filterFileTree.test.js.map +0 -1
- package/internal/store/__tests__/conversation-store.test.d.ts +0 -2
- package/internal/store/__tests__/conversation-store.test.d.ts.map +0 -1
- package/internal/store/__tests__/conversation-store.test.js +0 -200
- package/internal/store/__tests__/conversation-store.test.js.map +0 -1
- package/internal/store/__tests__/selection-store.test.d.ts +0 -2
- package/internal/store/__tests__/selection-store.test.d.ts.map +0 -1
- package/internal/store/__tests__/selection-store.test.js +0 -93
- package/internal/store/__tests__/selection-store.test.js.map +0 -1
- package/internal/store/__tests__/structural-share.test.d.ts +0 -2
- package/internal/store/__tests__/structural-share.test.d.ts.map +0 -1
- package/internal/store/__tests__/structural-share.test.js +0 -368
- package/internal/store/__tests__/structural-share.test.js.map +0 -1
- package/internal/store/__tests__/workflow-execution-event-store.test.d.ts +0 -2
- package/internal/store/__tests__/workflow-execution-event-store.test.d.ts.map +0 -1
- package/internal/store/__tests__/workflow-execution-event-store.test.js +0 -215
- package/internal/store/__tests__/workflow-execution-event-store.test.js.map +0 -1
- package/invitation/__tests__/useCreateInvitation.test.d.ts +0 -2
- package/invitation/__tests__/useCreateInvitation.test.d.ts.map +0 -1
- package/invitation/__tests__/useCreateInvitation.test.js +0 -152
- package/invitation/__tests__/useCreateInvitation.test.js.map +0 -1
- package/models/__tests__/HarnessSelector.test.d.ts +0 -2
- package/models/__tests__/HarnessSelector.test.d.ts.map +0 -1
- package/models/__tests__/HarnessSelector.test.js +0 -160
- package/models/__tests__/HarnessSelector.test.js.map +0 -1
- package/models/__tests__/harness.test.d.ts +0 -2
- package/models/__tests__/harness.test.d.ts.map +0 -1
- package/models/__tests__/harness.test.js +0 -50
- package/models/__tests__/harness.test.js.map +0 -1
- package/models/__tests__/useModelRegistry.test.d.ts +0 -2
- package/models/__tests__/useModelRegistry.test.d.ts.map +0 -1
- package/models/__tests__/useModelRegistry.test.js +0 -246
- package/models/__tests__/useModelRegistry.test.js.map +0 -1
- package/session/__tests__/execution-target.test.d.ts +0 -2
- package/session/__tests__/execution-target.test.d.ts.map +0 -1
- package/session/__tests__/execution-target.test.js +0 -34
- package/session/__tests__/execution-target.test.js.map +0 -1
- package/session/__tests__/group-sessions.test.d.ts +0 -2
- package/session/__tests__/group-sessions.test.d.ts.map +0 -1
- package/session/__tests__/group-sessions.test.js +0 -91
- package/session/__tests__/group-sessions.test.js.map +0 -1
- package/session/__tests__/session-spec-converters.test.d.ts +0 -2
- package/session/__tests__/session-spec-converters.test.d.ts.map +0 -1
- package/session/__tests__/session-spec-converters.test.js +0 -160
- package/session/__tests__/session-spec-converters.test.js.map +0 -1
- package/session/__tests__/useCreateSession.test.d.ts +0 -2
- package/session/__tests__/useCreateSession.test.d.ts.map +0 -1
- package/session/__tests__/useCreateSession.test.js +0 -228
- package/session/__tests__/useCreateSession.test.js.map +0 -1
- package/session/__tests__/useNewSessionFlow.test.d.ts +0 -2
- package/session/__tests__/useNewSessionFlow.test.d.ts.map +0 -1
- package/session/__tests__/useNewSessionFlow.test.js +0 -364
- package/session/__tests__/useNewSessionFlow.test.js.map +0 -1
- package/session/__tests__/usePersistedModel.test.d.ts +0 -2
- package/session/__tests__/usePersistedModel.test.d.ts.map +0 -1
- package/session/__tests__/usePersistedModel.test.js +0 -96
- package/session/__tests__/usePersistedModel.test.js.map +0 -1
- package/session/__tests__/useSession.test.d.ts +0 -2
- package/session/__tests__/useSession.test.d.ts.map +0 -1
- package/session/__tests__/useSession.test.js +0 -93
- package/session/__tests__/useSession.test.js.map +0 -1
- package/session/__tests__/useSessionConversation.test.d.ts +0 -2
- package/session/__tests__/useSessionConversation.test.d.ts.map +0 -1
- package/session/__tests__/useSessionConversation.test.js +0 -246
- package/session/__tests__/useSessionConversation.test.js.map +0 -1
- package/session/__tests__/useSessionList.test.d.ts +0 -2
- package/session/__tests__/useSessionList.test.d.ts.map +0 -1
- package/session/__tests__/useSessionList.test.js +0 -63
- package/session/__tests__/useSessionList.test.js.map +0 -1
- package/session/__tests__/useSessionUsage.test.d.ts +0 -2
- package/session/__tests__/useSessionUsage.test.d.ts.map +0 -1
- package/session/__tests__/useSessionUsage.test.js +0 -146
- package/session/__tests__/useSessionUsage.test.js.map +0 -1
- package/session/inspector/__tests__/useSessionInspector.test.d.ts +0 -2
- package/session/inspector/__tests__/useSessionInspector.test.d.ts.map +0 -1
- package/session/inspector/__tests__/useSessionInspector.test.js +0 -195
- package/session/inspector/__tests__/useSessionInspector.test.js.map +0 -1
- package/test/__tests__/samples.test.d.ts +0 -2
- package/test/__tests__/samples.test.d.ts.map +0 -1
- package/test/__tests__/samples.test.js +0 -152
- package/test/__tests__/samples.test.js.map +0 -1
- package/workflow/__tests__/ExecutionInspector.test.d.ts +0 -2
- package/workflow/__tests__/ExecutionInspector.test.d.ts.map +0 -1
- package/workflow/__tests__/ExecutionInspector.test.js +0 -91
- package/workflow/__tests__/ExecutionInspector.test.js.map +0 -1
- package/workflow/__tests__/WorkflowArchitectDialog.test.d.ts +0 -2
- package/workflow/__tests__/WorkflowArchitectDialog.test.d.ts.map +0 -1
- package/workflow/__tests__/WorkflowArchitectDialog.test.js +0 -126
- package/workflow/__tests__/WorkflowArchitectDialog.test.js.map +0 -1
- package/workflow/__tests__/WorkflowRefinePanel.test.d.ts +0 -2
- package/workflow/__tests__/WorkflowRefinePanel.test.d.ts.map +0 -1
- package/workflow/__tests__/WorkflowRefinePanel.test.js +0 -138
- package/workflow/__tests__/WorkflowRefinePanel.test.js.map +0 -1
- package/workflow/__tests__/WorkflowRepairCard.test.d.ts +0 -2
- package/workflow/__tests__/WorkflowRepairCard.test.d.ts.map +0 -1
- package/workflow/__tests__/WorkflowRepairCard.test.js +0 -158
- package/workflow/__tests__/WorkflowRepairCard.test.js.map +0 -1
- package/workflow/__tests__/WorkflowTaskApprovalCard.test.d.ts +0 -2
- package/workflow/__tests__/WorkflowTaskApprovalCard.test.d.ts.map +0 -1
- package/workflow/__tests__/WorkflowTaskApprovalCard.test.js +0 -221
- package/workflow/__tests__/WorkflowTaskApprovalCard.test.js.map +0 -1
- package/workflow/__tests__/WorkflowTaskApprovalSummary.test.d.ts +0 -2
- package/workflow/__tests__/WorkflowTaskApprovalSummary.test.d.ts.map +0 -1
- package/workflow/__tests__/WorkflowTaskApprovalSummary.test.js +0 -94
- package/workflow/__tests__/WorkflowTaskApprovalSummary.test.js.map +0 -1
- package/workflow/__tests__/agent-call-live-experience.test.d.ts +0 -11
- package/workflow/__tests__/agent-call-live-experience.test.d.ts.map +0 -1
- package/workflow/__tests__/agent-call-live-experience.test.js +0 -379
- package/workflow/__tests__/agent-call-live-experience.test.js.map +0 -1
- package/workflow/__tests__/branch-commands.test.d.ts +0 -2
- package/workflow/__tests__/branch-commands.test.d.ts.map +0 -1
- package/workflow/__tests__/branch-commands.test.js +0 -165
- package/workflow/__tests__/branch-commands.test.js.map +0 -1
- package/workflow/__tests__/caption-dimensions.test.d.ts +0 -2
- package/workflow/__tests__/caption-dimensions.test.d.ts.map +0 -1
- package/workflow/__tests__/caption-dimensions.test.js +0 -89
- package/workflow/__tests__/caption-dimensions.test.js.map +0 -1
- package/workflow/__tests__/clipboard.test.d.ts +0 -2
- package/workflow/__tests__/clipboard.test.d.ts.map +0 -1
- package/workflow/__tests__/clipboard.test.js +0 -172
- package/workflow/__tests__/clipboard.test.js.map +0 -1
- package/workflow/__tests__/cncf-yaml-to-graph.test.d.ts +0 -2
- package/workflow/__tests__/cncf-yaml-to-graph.test.d.ts.map +0 -1
- package/workflow/__tests__/cncf-yaml-to-graph.test.js +0 -479
- package/workflow/__tests__/cncf-yaml-to-graph.test.js.map +0 -1
- package/workflow/__tests__/context-menu-logic.test.d.ts +0 -2
- package/workflow/__tests__/context-menu-logic.test.d.ts.map +0 -1
- package/workflow/__tests__/context-menu-logic.test.js +0 -97
- package/workflow/__tests__/context-menu-logic.test.js.map +0 -1
- package/workflow/__tests__/derive-execution-overlays.test.d.ts +0 -2
- package/workflow/__tests__/derive-execution-overlays.test.d.ts.map +0 -1
- package/workflow/__tests__/derive-execution-overlays.test.js +0 -338
- package/workflow/__tests__/derive-execution-overlays.test.js.map +0 -1
- package/workflow/__tests__/derive-task-detail.test.d.ts +0 -2
- package/workflow/__tests__/derive-task-detail.test.d.ts.map +0 -1
- package/workflow/__tests__/derive-task-detail.test.js +0 -1035
- package/workflow/__tests__/derive-task-detail.test.js.map +0 -1
- package/workflow/__tests__/derive-waterfall-entries.test.d.ts +0 -2
- package/workflow/__tests__/derive-waterfall-entries.test.d.ts.map +0 -1
- package/workflow/__tests__/derive-waterfall-entries.test.js +0 -419
- package/workflow/__tests__/derive-waterfall-entries.test.js.map +0 -1
- package/workflow/__tests__/execution-graph.test.d.ts +0 -2
- package/workflow/__tests__/execution-graph.test.d.ts.map +0 -1
- package/workflow/__tests__/execution-graph.test.js +0 -251
- package/workflow/__tests__/execution-graph.test.js.map +0 -1
- package/workflow/__tests__/execution-inspector.test.d.ts +0 -2
- package/workflow/__tests__/execution-inspector.test.d.ts.map +0 -1
- package/workflow/__tests__/execution-inspector.test.js +0 -248
- package/workflow/__tests__/execution-inspector.test.js.map +0 -1
- package/workflow/__tests__/extract-workflow-yaml.test.d.ts +0 -2
- package/workflow/__tests__/extract-workflow-yaml.test.d.ts.map +0 -1
- package/workflow/__tests__/extract-workflow-yaml.test.js +0 -135
- package/workflow/__tests__/extract-workflow-yaml.test.js.map +0 -1
- package/workflow/__tests__/format-utils.test.d.ts +0 -2
- package/workflow/__tests__/format-utils.test.d.ts.map +0 -1
- package/workflow/__tests__/format-utils.test.js +0 -128
- package/workflow/__tests__/format-utils.test.js.map +0 -1
- package/workflow/__tests__/inspector-commands.test.d.ts +0 -2
- package/workflow/__tests__/inspector-commands.test.d.ts.map +0 -1
- package/workflow/__tests__/inspector-commands.test.js +0 -110
- package/workflow/__tests__/inspector-commands.test.js.map +0 -1
- package/workflow/__tests__/inspector-forms.test.d.ts +0 -2
- package/workflow/__tests__/inspector-forms.test.d.ts.map +0 -1
- package/workflow/__tests__/inspector-forms.test.js +0 -114
- package/workflow/__tests__/inspector-forms.test.js.map +0 -1
- package/workflow/__tests__/inspector-tabs.test.d.ts +0 -2
- package/workflow/__tests__/inspector-tabs.test.d.ts.map +0 -1
- package/workflow/__tests__/inspector-tabs.test.js +0 -81
- package/workflow/__tests__/inspector-tabs.test.js.map +0 -1
- package/workflow/__tests__/kind-metadata.test.d.ts +0 -2
- package/workflow/__tests__/kind-metadata.test.d.ts.map +0 -1
- package/workflow/__tests__/kind-metadata.test.js +0 -80
- package/workflow/__tests__/kind-metadata.test.js.map +0 -1
- package/workflow/__tests__/motion-preference.test.d.ts +0 -2
- package/workflow/__tests__/motion-preference.test.d.ts.map +0 -1
- package/workflow/__tests__/motion-preference.test.js +0 -42
- package/workflow/__tests__/motion-preference.test.js.map +0 -1
- package/workflow/__tests__/node-popover.test.d.ts +0 -2
- package/workflow/__tests__/node-popover.test.d.ts.map +0 -1
- package/workflow/__tests__/node-popover.test.js +0 -130
- package/workflow/__tests__/node-popover.test.js.map +0 -1
- package/workflow/__tests__/node-shell.test.d.ts +0 -2
- package/workflow/__tests__/node-shell.test.d.ts.map +0 -1
- package/workflow/__tests__/node-shell.test.js +0 -210
- package/workflow/__tests__/node-shell.test.js.map +0 -1
- package/workflow/__tests__/overview-graph.test.d.ts +0 -2
- package/workflow/__tests__/overview-graph.test.d.ts.map +0 -1
- package/workflow/__tests__/overview-graph.test.js +0 -83
- package/workflow/__tests__/overview-graph.test.js.map +0 -1
- package/workflow/__tests__/overview-summary.test.d.ts +0 -2
- package/workflow/__tests__/overview-summary.test.d.ts.map +0 -1
- package/workflow/__tests__/overview-summary.test.js +0 -73
- package/workflow/__tests__/overview-summary.test.js.map +0 -1
- package/workflow/__tests__/shortcut-registry.test.d.ts +0 -2
- package/workflow/__tests__/shortcut-registry.test.d.ts.map +0 -1
- package/workflow/__tests__/shortcut-registry.test.js +0 -111
- package/workflow/__tests__/shortcut-registry.test.js.map +0 -1
- package/workflow/__tests__/starter-workflow-yaml.test.d.ts +0 -2
- package/workflow/__tests__/starter-workflow-yaml.test.d.ts.map +0 -1
- package/workflow/__tests__/starter-workflow-yaml.test.js +0 -44
- package/workflow/__tests__/starter-workflow-yaml.test.js.map +0 -1
- package/workflow/__tests__/structured-data-viewer.test.d.ts +0 -2
- package/workflow/__tests__/structured-data-viewer.test.d.ts.map +0 -1
- package/workflow/__tests__/structured-data-viewer.test.js +0 -438
- package/workflow/__tests__/structured-data-viewer.test.js.map +0 -1
- package/workflow/__tests__/t09-branch-management.test.d.ts +0 -2
- package/workflow/__tests__/t09-branch-management.test.d.ts.map +0 -1
- package/workflow/__tests__/t09-branch-management.test.js +0 -433
- package/workflow/__tests__/t09-branch-management.test.js.map +0 -1
- package/workflow/__tests__/task-type-visual-registry.test.d.ts +0 -2
- package/workflow/__tests__/task-type-visual-registry.test.d.ts.map +0 -1
- package/workflow/__tests__/task-type-visual-registry.test.js +0 -99
- package/workflow/__tests__/task-type-visual-registry.test.js.map +0 -1
- package/workflow/__tests__/useActiveTaskName.test.d.ts +0 -2
- package/workflow/__tests__/useActiveTaskName.test.d.ts.map +0 -1
- package/workflow/__tests__/useActiveTaskName.test.js +0 -80
- package/workflow/__tests__/useActiveTaskName.test.js.map +0 -1
- package/workflow/__tests__/useDiagnoseExecutionFlow.test.d.ts +0 -2
- package/workflow/__tests__/useDiagnoseExecutionFlow.test.d.ts.map +0 -1
- package/workflow/__tests__/useDiagnoseExecutionFlow.test.js +0 -363
- package/workflow/__tests__/useDiagnoseExecutionFlow.test.js.map +0 -1
- package/workflow/__tests__/useExecutionAnnouncements.test.d.ts +0 -2
- package/workflow/__tests__/useExecutionAnnouncements.test.d.ts.map +0 -1
- package/workflow/__tests__/useExecutionAnnouncements.test.js +0 -85
- package/workflow/__tests__/useExecutionAnnouncements.test.js.map +0 -1
- package/workflow/__tests__/useFollowExecution.test.d.ts +0 -2
- package/workflow/__tests__/useFollowExecution.test.d.ts.map +0 -1
- package/workflow/__tests__/useFollowExecution.test.js +0 -130
- package/workflow/__tests__/useFollowExecution.test.js.map +0 -1
- package/workflow/__tests__/useRefineWorkflowFlow.test.d.ts +0 -2
- package/workflow/__tests__/useRefineWorkflowFlow.test.d.ts.map +0 -1
- package/workflow/__tests__/useRefineWorkflowFlow.test.js +0 -367
- package/workflow/__tests__/useRefineWorkflowFlow.test.js.map +0 -1
- package/workflow/__tests__/useRunWorkflowFlow.test.d.ts +0 -2
- package/workflow/__tests__/useRunWorkflowFlow.test.d.ts.map +0 -1
- package/workflow/__tests__/useRunWorkflowFlow.test.js +0 -385
- package/workflow/__tests__/useRunWorkflowFlow.test.js.map +0 -1
- package/workflow/__tests__/useWorkflowArchitectFlow.test.d.ts +0 -2
- package/workflow/__tests__/useWorkflowArchitectFlow.test.d.ts.map +0 -1
- package/workflow/__tests__/useWorkflowArchitectFlow.test.js +0 -376
- package/workflow/__tests__/useWorkflowArchitectFlow.test.js.map +0 -1
- package/workflow/__tests__/useWorkflowExecution.test.d.ts +0 -2
- package/workflow/__tests__/useWorkflowExecution.test.d.ts.map +0 -1
- package/workflow/__tests__/useWorkflowExecution.test.js +0 -229
- package/workflow/__tests__/useWorkflowExecution.test.js.map +0 -1
- package/workflow/__tests__/useWorkflowExecutionActions.test.d.ts +0 -2
- package/workflow/__tests__/useWorkflowExecutionActions.test.d.ts.map +0 -1
- package/workflow/__tests__/useWorkflowExecutionActions.test.js +0 -191
- package/workflow/__tests__/useWorkflowExecutionActions.test.js.map +0 -1
- package/workflow/__tests__/useWorkflowExecutionEventStream.test.d.ts +0 -2
- package/workflow/__tests__/useWorkflowExecutionEventStream.test.d.ts.map +0 -1
- package/workflow/__tests__/useWorkflowExecutionEventStream.test.js +0 -291
- package/workflow/__tests__/useWorkflowExecutionEventStream.test.js.map +0 -1
- package/workflow/__tests__/workflow-instance-hooks.test.d.ts +0 -2
- package/workflow/__tests__/workflow-instance-hooks.test.d.ts.map +0 -1
- package/workflow/__tests__/workflow-instance-hooks.test.js +0 -153
- package/workflow/__tests__/workflow-instance-hooks.test.js.map +0 -1
- package/workflow/__tests__/workflow-summary-panel.test.d.ts +0 -2
- package/workflow/__tests__/workflow-summary-panel.test.d.ts.map +0 -1
- package/workflow/__tests__/workflow-summary-panel.test.js +0 -85
- package/workflow/__tests__/workflow-summary-panel.test.js.map +0 -1
- package/workflow/__tests__/workflow-uses-trigger-input.test.d.ts +0 -2
- package/workflow/__tests__/workflow-uses-trigger-input.test.d.ts.map +0 -1
- package/workflow/__tests__/workflow-uses-trigger-input.test.js +0 -144
- package/workflow/__tests__/workflow-uses-trigger-input.test.js.map +0 -1
- package/workflow/__tests__/workflow-yaml-diff.test.d.ts +0 -2
- package/workflow/__tests__/workflow-yaml-diff.test.d.ts.map +0 -1
- package/workflow/__tests__/workflow-yaml-diff.test.js +0 -110
- package/workflow/__tests__/workflow-yaml-diff.test.js.map +0 -1
- package/workflow/diff/__tests__/build-diff-graph.test.d.ts +0 -2
- package/workflow/diff/__tests__/build-diff-graph.test.d.ts.map +0 -1
- package/workflow/diff/__tests__/build-diff-graph.test.js +0 -115
- package/workflow/diff/__tests__/build-diff-graph.test.js.map +0 -1
- package/workflow/diff/__tests__/graph-diff.test.d.ts +0 -2
- package/workflow/diff/__tests__/graph-diff.test.d.ts.map +0 -1
- package/workflow/diff/__tests__/graph-diff.test.js +0 -196
- package/workflow/diff/__tests__/graph-diff.test.js.map +0 -1
- package/workflow/execution-comparison/__tests__/derive-execution-comparison.test.d.ts +0 -2
- package/workflow/execution-comparison/__tests__/derive-execution-comparison.test.d.ts.map +0 -1
- package/workflow/execution-comparison/__tests__/derive-execution-comparison.test.js +0 -263
- package/workflow/execution-comparison/__tests__/derive-execution-comparison.test.js.map +0 -1
- package/workflow/execution-history/__tests__/derive-execution-row.test.d.ts +0 -2
- package/workflow/execution-history/__tests__/derive-execution-row.test.d.ts.map +0 -1
- package/workflow/execution-history/__tests__/derive-execution-row.test.js +0 -276
- package/workflow/execution-history/__tests__/derive-execution-row.test.js.map +0 -1
- package/workflow/execution-history/__tests__/derive-failure-analysis.test.d.ts +0 -2
- package/workflow/execution-history/__tests__/derive-failure-analysis.test.d.ts.map +0 -1
- package/workflow/execution-history/__tests__/derive-failure-analysis.test.js +0 -132
- package/workflow/execution-history/__tests__/derive-failure-analysis.test.js.map +0 -1
- package/workflow/layout/__tests__/dagre-layout-engine.test.d.ts +0 -2
- package/workflow/layout/__tests__/dagre-layout-engine.test.d.ts.map +0 -1
- package/workflow/layout/__tests__/dagre-layout-engine.test.js +0 -105
- package/workflow/layout/__tests__/dagre-layout-engine.test.js.map +0 -1
- package/workflow/layout/__tests__/layout-postprocessor.test.d.ts +0 -2
- package/workflow/layout/__tests__/layout-postprocessor.test.d.ts.map +0 -1
- package/workflow/layout/__tests__/layout-postprocessor.test.js +0 -123
- package/workflow/layout/__tests__/layout-postprocessor.test.js.map +0 -1
- package/workflow/layout/__tests__/port-assignment.test.d.ts +0 -2
- package/workflow/layout/__tests__/port-assignment.test.d.ts.map +0 -1
- package/workflow/layout/__tests__/port-assignment.test.js +0 -200
- package/workflow/layout/__tests__/port-assignment.test.js.map +0 -1
- package/workflow/layout/__tests__/registry-dimensions.test.d.ts +0 -2
- package/workflow/layout/__tests__/registry-dimensions.test.d.ts.map +0 -1
- package/workflow/layout/__tests__/registry-dimensions.test.js +0 -104
- package/workflow/layout/__tests__/registry-dimensions.test.js.map +0 -1
- package/workflow/layout/__tests__/useElkLayoutEngine.test.d.ts +0 -2
- package/workflow/layout/__tests__/useElkLayoutEngine.test.d.ts.map +0 -1
- package/workflow/layout/__tests__/useElkLayoutEngine.test.js +0 -106
- package/workflow/layout/__tests__/useElkLayoutEngine.test.js.map +0 -1
- package/workflow/layout/__tests__/workflow-preprocessor.test.d.ts +0 -2
- package/workflow/layout/__tests__/workflow-preprocessor.test.d.ts.map +0 -1
- package/workflow/layout/__tests__/workflow-preprocessor.test.js +0 -138
- package/workflow/layout/__tests__/workflow-preprocessor.test.js.map +0 -1
- package/workflow/picker/__tests__/compatibility.test.d.ts +0 -2
- package/workflow/picker/__tests__/compatibility.test.d.ts.map +0 -1
- package/workflow/picker/__tests__/compatibility.test.js +0 -93
- package/workflow/picker/__tests__/compatibility.test.js.map +0 -1
- package/workflow/picker/__tests__/insertion-context.test.d.ts +0 -2
- package/workflow/picker/__tests__/insertion-context.test.d.ts.map +0 -1
- package/workflow/picker/__tests__/insertion-context.test.js +0 -67
- package/workflow/picker/__tests__/insertion-context.test.js.map +0 -1
- package/workflow/picker/__tests__/recents.test.d.ts +0 -2
- package/workflow/picker/__tests__/recents.test.d.ts.map +0 -1
- package/workflow/picker/__tests__/recents.test.js +0 -81
- package/workflow/picker/__tests__/recents.test.js.map +0 -1
- package/workflow/picker/__tests__/suggestions.test.d.ts +0 -2
- package/workflow/picker/__tests__/suggestions.test.d.ts.map +0 -1
- package/workflow/picker/__tests__/suggestions.test.js +0 -111
- package/workflow/picker/__tests__/suggestions.test.js.map +0 -1
- package/workflow/templates/__tests__/derive-template-metadata.test.d.ts +0 -2
- package/workflow/templates/__tests__/derive-template-metadata.test.d.ts.map +0 -1
- package/workflow/templates/__tests__/derive-template-metadata.test.js +0 -317
- package/workflow/templates/__tests__/derive-template-metadata.test.js.map +0 -1
- package/workflow/templates/__tests__/workflow-template-gallery.test.d.ts +0 -2
- package/workflow/templates/__tests__/workflow-template-gallery.test.d.ts.map +0 -1
- package/workflow/templates/__tests__/workflow-template-gallery.test.js +0 -119
- package/workflow/templates/__tests__/workflow-template-gallery.test.js.map +0 -1
- package/workspace/__tests__/WorkspaceEditor-initialPanel.test.d.ts +0 -2
- package/workspace/__tests__/WorkspaceEditor-initialPanel.test.d.ts.map +0 -1
- package/workspace/__tests__/WorkspaceEditor-initialPanel.test.js +0 -82
- package/workspace/__tests__/WorkspaceEditor-initialPanel.test.js.map +0 -1
- package/workspace/__tests__/useWorkspaceEntries-stability.test.d.ts +0 -2
- package/workspace/__tests__/useWorkspaceEntries-stability.test.d.ts.map +0 -1
- package/workspace/__tests__/useWorkspaceEntries-stability.test.js +0 -57
- package/workspace/__tests__/useWorkspaceEntries-stability.test.js.map +0 -1
- package/workspace/__tests__/useWorkspaceFiles.test.d.ts +0 -2
- package/workspace/__tests__/useWorkspaceFiles.test.d.ts.map +0 -1
- package/workspace/__tests__/useWorkspaceFiles.test.js +0 -128
- package/workspace/__tests__/useWorkspaceFiles.test.js.map +0 -1
- package/workspace/__tests__/useWorkspaceSources.test.d.ts +0 -2
- package/workspace/__tests__/useWorkspaceSources.test.d.ts.map +0 -1
- package/workspace/__tests__/useWorkspaceSources.test.js +0 -98
- package/workspace/__tests__/useWorkspaceSources.test.js.map +0 -1
package/src/index.ts
CHANGED
|
@@ -4,6 +4,9 @@ export { StigmerContext } from "./context";
|
|
|
4
4
|
|
|
5
5
|
// Runner adapter
|
|
6
6
|
export { type RunnerAdapter, useRunnerAdapter } from "./runner-adapter";
|
|
7
|
+
// Construction helper lives in @stigmer/sdk (framework-agnostic); re-exported
|
|
8
|
+
// here so React embedders import it alongside the adapter interface.
|
|
9
|
+
export { type RunnerWorkerHost, createRunnerAdapter } from "@stigmer/sdk";
|
|
7
10
|
|
|
8
11
|
// Fetch cache
|
|
9
12
|
export { FetchCacheProvider } from "./internal/FetchCacheProvider";
|
|
@@ -193,6 +196,15 @@ export {
|
|
|
193
196
|
formatTokenCount,
|
|
194
197
|
ToolCallGroup,
|
|
195
198
|
ToolCallDetail,
|
|
199
|
+
ResultView,
|
|
200
|
+
summarizeResultView,
|
|
201
|
+
useToolPresentation,
|
|
202
|
+
registerToolPresenter,
|
|
203
|
+
getToolPresenter,
|
|
204
|
+
resolveToolCategory,
|
|
205
|
+
resolveToolCategoryFromCall,
|
|
206
|
+
resolveToolCategoryFromKind,
|
|
207
|
+
toolKindToCategoryInfo,
|
|
196
208
|
McpToolDetail,
|
|
197
209
|
parseMcpResult,
|
|
198
210
|
formatDuration,
|
|
@@ -252,6 +264,9 @@ export type {
|
|
|
252
264
|
UseContextWindowReturn,
|
|
253
265
|
ToolCallGroupProps,
|
|
254
266
|
ToolCallDetailProps,
|
|
267
|
+
ResultViewProps,
|
|
268
|
+
ToolPresentation,
|
|
269
|
+
ToolPresenter,
|
|
255
270
|
McpToolDetailProps,
|
|
256
271
|
McpArgsViewProps,
|
|
257
272
|
McpMetadataRowProps,
|
|
@@ -827,6 +842,8 @@ export {
|
|
|
827
842
|
isSkillPackage,
|
|
828
843
|
detectSkillPackage,
|
|
829
844
|
useDetectSkillPackage,
|
|
845
|
+
isPlanArtifact,
|
|
846
|
+
findPlanArtifact,
|
|
830
847
|
parseResourceYaml,
|
|
831
848
|
serializeAgentYaml,
|
|
832
849
|
serializeMcpServerYaml,
|
|
@@ -919,19 +936,33 @@ export type {
|
|
|
919
936
|
DateRangePreset,
|
|
920
937
|
} from "./usage";
|
|
921
938
|
|
|
922
|
-
// Agent Instance — data hooks,
|
|
939
|
+
// Agent Instance — data hooks, mutation hooks, management components, and behavior hook
|
|
923
940
|
export {
|
|
924
941
|
useAgentInstance,
|
|
925
942
|
useAgentInstanceList,
|
|
943
|
+
useAgentInstances,
|
|
926
944
|
usePersonalAgentInstance,
|
|
927
945
|
useCreateAgentInstance,
|
|
946
|
+
useUpdateAgentInstance,
|
|
947
|
+
useDeleteAgentInstance,
|
|
948
|
+
AgentInstanceList,
|
|
949
|
+
AgentInstanceEmptyState,
|
|
950
|
+
CreateAgentInstanceDialog,
|
|
951
|
+
AgentInstanceDetailPanel,
|
|
928
952
|
} from "./agent-instance";
|
|
929
953
|
export type {
|
|
930
954
|
UseAgentInstanceReturn,
|
|
931
955
|
UseAgentInstanceListReturn,
|
|
956
|
+
UseAgentInstancesReturn,
|
|
932
957
|
GetOrCreatePersonalInstanceInput,
|
|
933
958
|
UsePersonalAgentInstanceReturn,
|
|
934
959
|
UseCreateAgentInstanceReturn,
|
|
960
|
+
UseUpdateAgentInstanceReturn,
|
|
961
|
+
UseDeleteAgentInstanceReturn,
|
|
962
|
+
AgentInstanceListProps,
|
|
963
|
+
AgentInstanceEmptyStateProps,
|
|
964
|
+
CreateAgentInstanceDialogProps,
|
|
965
|
+
AgentInstanceDetailPanelProps,
|
|
935
966
|
} from "./agent-instance";
|
|
936
967
|
|
|
937
968
|
// Tabs — accessible tabbed panel primitive
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { create } from "@bufbuild/protobuf";
|
|
3
|
+
import {
|
|
4
|
+
AgentExecutionSchema,
|
|
5
|
+
AgentExecutionStatusSchema,
|
|
6
|
+
} from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
|
|
7
|
+
import { ExecutionArtifactSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/artifact_pb";
|
|
8
|
+
import { ExecutionArtifactKind } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
9
|
+
import {
|
|
10
|
+
isPlanArtifact,
|
|
11
|
+
findPlanArtifact,
|
|
12
|
+
PLAN_ARTIFACT_NAME,
|
|
13
|
+
} from "../detect-plan-artifact";
|
|
14
|
+
|
|
15
|
+
function artifact(opts: { name: string; kind?: ExecutionArtifactKind; storageKey?: string }) {
|
|
16
|
+
return create(ExecutionArtifactSchema, {
|
|
17
|
+
name: opts.name,
|
|
18
|
+
kind: opts.kind ?? ExecutionArtifactKind.FILE,
|
|
19
|
+
storageKey: opts.storageKey ?? `artifacts/exec/${opts.name}`,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function executionWith(...artifacts: ReturnType<typeof artifact>[]) {
|
|
24
|
+
return create(AgentExecutionSchema, {
|
|
25
|
+
status: create(AgentExecutionStatusSchema, { artifacts }),
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
describe("isPlanArtifact", () => {
|
|
30
|
+
it("is true for a FILE artifact named plan.md", () => {
|
|
31
|
+
expect(isPlanArtifact(artifact({ name: PLAN_ARTIFACT_NAME }))).toBe(true);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
it("is false for a directory named plan.md", () => {
|
|
35
|
+
expect(
|
|
36
|
+
isPlanArtifact(artifact({ name: "plan.md", kind: ExecutionArtifactKind.DIRECTORY })),
|
|
37
|
+
).toBe(false);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it("is false for other file names", () => {
|
|
41
|
+
expect(isPlanArtifact(artifact({ name: "report.md" }))).toBe(false);
|
|
42
|
+
expect(isPlanArtifact(artifact({ name: "plan.txt" }))).toBe(false);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
describe("findPlanArtifact", () => {
|
|
47
|
+
it("returns undefined for null/empty executions", () => {
|
|
48
|
+
expect(findPlanArtifact(null)).toBeUndefined();
|
|
49
|
+
expect(findPlanArtifact(undefined)).toBeUndefined();
|
|
50
|
+
expect(findPlanArtifact(executionWith())).toBeUndefined();
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
it("finds the plan.md among other artifacts", () => {
|
|
54
|
+
const exec = executionWith(
|
|
55
|
+
artifact({ name: "notes.txt" }),
|
|
56
|
+
artifact({ name: PLAN_ARTIFACT_NAME, storageKey: "artifacts/exec/plan.md" }),
|
|
57
|
+
artifact({ name: "data.json" }),
|
|
58
|
+
);
|
|
59
|
+
const plan = findPlanArtifact(exec);
|
|
60
|
+
expect(plan?.name).toBe(PLAN_ARTIFACT_NAME);
|
|
61
|
+
expect(plan?.storageKey).toBe("artifacts/exec/plan.md");
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
it("returns the latest plan.md when more than one is present", () => {
|
|
65
|
+
const exec = executionWith(
|
|
66
|
+
artifact({ name: PLAN_ARTIFACT_NAME, storageKey: "artifacts/exec/plan.md#old" }),
|
|
67
|
+
artifact({ name: PLAN_ARTIFACT_NAME, storageKey: "artifacts/exec/plan.md#new" }),
|
|
68
|
+
);
|
|
69
|
+
expect(findPlanArtifact(exec)?.storageKey).toBe("artifacts/exec/plan.md#new");
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
it("returns undefined when no plan artifact exists", () => {
|
|
73
|
+
expect(findPlanArtifact(executionWith(artifact({ name: "report.md" })))).toBeUndefined();
|
|
74
|
+
});
|
|
75
|
+
});
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { AgentExecution } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
|
|
2
|
+
import type { ExecutionArtifact } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/artifact_pb";
|
|
3
|
+
import { ExecutionArtifactKind } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Canonical filename a Plan-mode execution publishes its plan under. Kept in
|
|
7
|
+
* sync with the runner's `publishPlanArtifact` (shared/plan-artifact.ts).
|
|
8
|
+
*/
|
|
9
|
+
export const PLAN_ARTIFACT_NAME = "plan.md";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Returns `true` when an artifact is the published plan: a FILE artifact named
|
|
13
|
+
* `plan.md`.
|
|
14
|
+
*
|
|
15
|
+
* Detection is by convention — the same lightweight, content-free approach used
|
|
16
|
+
* for skill packages ({@link isSkillPackage}) — so the UI never needs an extra
|
|
17
|
+
* RPC to know a plan exists. The plan's text is fetched on demand via
|
|
18
|
+
* {@link useArtifactContent} only when the user expands the Plan card.
|
|
19
|
+
*/
|
|
20
|
+
export function isPlanArtifact(artifact: ExecutionArtifact): boolean {
|
|
21
|
+
return (
|
|
22
|
+
artifact.kind === ExecutionArtifactKind.FILE &&
|
|
23
|
+
artifact.name === PLAN_ARTIFACT_NAME
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Finds the plan artifact on a completed execution, or `undefined` when none
|
|
29
|
+
* was published (older executions, or a plan that failed to upload).
|
|
30
|
+
*
|
|
31
|
+
* Returns the latest `plan.md` if more than one is present — the runner
|
|
32
|
+
* replaces rather than appends, so this is defensive.
|
|
33
|
+
*/
|
|
34
|
+
export function findPlanArtifact(
|
|
35
|
+
execution: AgentExecution | null | undefined,
|
|
36
|
+
): ExecutionArtifact | undefined {
|
|
37
|
+
const artifacts = execution?.status?.artifacts;
|
|
38
|
+
if (!artifacts || artifacts.length === 0) return undefined;
|
|
39
|
+
for (let i = artifacts.length - 1; i >= 0; i--) {
|
|
40
|
+
if (isPlanArtifact(artifacts[i])) return artifacts[i];
|
|
41
|
+
}
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
package/src/library/index.ts
CHANGED
|
@@ -24,6 +24,12 @@ export {
|
|
|
24
24
|
} from "./detect-skill-package";
|
|
25
25
|
export type { SkillPackageDetection } from "./detect-skill-package";
|
|
26
26
|
|
|
27
|
+
export {
|
|
28
|
+
isPlanArtifact,
|
|
29
|
+
findPlanArtifact,
|
|
30
|
+
PLAN_ARTIFACT_NAME,
|
|
31
|
+
} from "./detect-plan-artifact";
|
|
32
|
+
|
|
27
33
|
export { useDetectSkillPackage } from "./useDetectSkillPackage";
|
|
28
34
|
export type { UseDetectSkillPackageReturn } from "./useDetectSkillPackage";
|
|
29
35
|
|
package/src/provider.tsx
CHANGED
|
@@ -56,9 +56,11 @@ export interface StigmerProviderProps {
|
|
|
56
56
|
/**
|
|
57
57
|
* Runner adapter for local execution lifecycle management.
|
|
58
58
|
*
|
|
59
|
-
* When `executionTarget` is `"local"`, SDK hooks automatically
|
|
60
|
-
* the adapter
|
|
61
|
-
*
|
|
59
|
+
* When `executionTarget` is `"local"`, SDK hooks automatically drive
|
|
60
|
+
* the adapter at the right lifecycle points: sessions on open/close
|
|
61
|
+
* (the session view attaches a worker while open and detaches on close)
|
|
62
|
+
* and workflow executions on create/terminal. Cloud consumers omit this
|
|
63
|
+
* prop entirely.
|
|
62
64
|
*
|
|
63
65
|
* Desktop apps provide a Tauri-based adapter; self-hosted customers
|
|
64
66
|
* provide their own implementation of the {@link RunnerAdapter}
|
package/src/runner-adapter.ts
CHANGED
|
@@ -10,6 +10,13 @@ import { createContext, useContext } from "react";
|
|
|
10
10
|
* the adapter at the appropriate lifecycle points. The consumer never
|
|
11
11
|
* needs to know about runner management — it is handled transparently.
|
|
12
12
|
*
|
|
13
|
+
* Sessions and workflow executions have different lifecycles. A session is
|
|
14
|
+
* a long-lived, multi-turn conversation with no terminal phase, so its
|
|
15
|
+
* worker is tied to whether the session is open (in use): `onSessionOpened`
|
|
16
|
+
* when the session viewer opens it, `onSessionClosed` when it closes. A
|
|
17
|
+
* workflow execution runs to a terminal phase, so its worker is tied to
|
|
18
|
+
* creation and completion.
|
|
19
|
+
*
|
|
13
20
|
* Each environment provides its own implementation:
|
|
14
21
|
* - Desktop app: wraps the embedded Tauri runner process
|
|
15
22
|
* - CLI: wraps the daemon runner
|
|
@@ -17,10 +24,18 @@ import { createContext, useContext } from "react";
|
|
|
17
24
|
* - Cloud: no adapter needed (server handles provisioning)
|
|
18
25
|
*/
|
|
19
26
|
export interface RunnerAdapter {
|
|
20
|
-
/**
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
27
|
+
/**
|
|
28
|
+
* Called by SDK hooks when a local session is opened (engaged). The
|
|
29
|
+
* adapter should ensure a runner worker is polling the session's task
|
|
30
|
+
* queue. Idempotent: may be called again for an already-open session
|
|
31
|
+
* (e.g. when the same session is re-opened).
|
|
32
|
+
*/
|
|
33
|
+
onSessionOpened(sessionId: string): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Called by SDK hooks when a local session is closed (no longer in use).
|
|
36
|
+
* The adapter should tear down the session's runner worker.
|
|
37
|
+
*/
|
|
38
|
+
onSessionClosed(sessionId: string): Promise<void>;
|
|
24
39
|
/** Called by SDK hooks after a workflow execution is created with executionTarget=LOCAL. */
|
|
25
40
|
onWorkflowExecutionCreated(executionId: string): Promise<void>;
|
|
26
41
|
/** Called by SDK hooks when a workflow execution reaches a terminal phase. */
|
|
@@ -46,6 +46,15 @@ export interface NewSessionViewerProps {
|
|
|
46
46
|
|
|
47
47
|
/** Agent to auto-select on mount (used for draft flows). */
|
|
48
48
|
readonly initialAgentRef?: ResourceRef;
|
|
49
|
+
/**
|
|
50
|
+
* Pre-bind the new session to a specific `AgentInstance` on mount.
|
|
51
|
+
*
|
|
52
|
+
* Requires `initialAgentRef`. When both are set, the session is created
|
|
53
|
+
* against this exact configured deployment (the env-collection flow is
|
|
54
|
+
* skipped because the instance already binds its environment). Powers the
|
|
55
|
+
* "Start session" action on the Agent detail page's Instances tab.
|
|
56
|
+
*/
|
|
57
|
+
readonly initialInstanceId?: string;
|
|
49
58
|
/** Files to auto-attach on mount (used for edit flows). */
|
|
50
59
|
readonly initialAttachments?: File[];
|
|
51
60
|
|
|
@@ -114,6 +123,7 @@ export function NewSessionViewer({
|
|
|
114
123
|
onBrowseLocalFolder,
|
|
115
124
|
workspaceFileLister,
|
|
116
125
|
initialAgentRef,
|
|
126
|
+
initialInstanceId,
|
|
117
127
|
initialAttachments,
|
|
118
128
|
heading = "What would you like to work on?",
|
|
119
129
|
placeholder = "Describe what you need help with\u2026",
|
|
@@ -219,6 +229,7 @@ export function NewSessionViewer({
|
|
|
219
229
|
onAgentRefChange={flow.setAgentRef}
|
|
220
230
|
onAgentResolutionChange={flow.setResolution}
|
|
221
231
|
initialAgentRef={initialAgentRef}
|
|
232
|
+
initialInstanceId={initialInstanceId}
|
|
222
233
|
initialAttachments={initialAttachments}
|
|
223
234
|
mcpServerUsages={flow.mcpServerUsages}
|
|
224
235
|
onMcpServerUsagesChange={flow.setMcpServerUsages}
|
|
@@ -137,7 +137,12 @@ export function SessionViewer({
|
|
|
137
137
|
|
|
138
138
|
const handleBuildFromPlan = useCallback(() => {
|
|
139
139
|
setInteractionMode("agent");
|
|
140
|
-
|
|
140
|
+
// Reference the plan explicitly (it is also published as plan.md) and direct
|
|
141
|
+
// the agent to act on it, rather than a bare "implement" that relies on the
|
|
142
|
+
// model re-reading its own prior message.
|
|
143
|
+
composerRef.current?.setMessage(
|
|
144
|
+
"Implement the plan above (saved as plan.md). Follow it step by step and make the changes it describes.",
|
|
145
|
+
);
|
|
141
146
|
composerRef.current?.focus();
|
|
142
147
|
}, []);
|
|
143
148
|
|
|
@@ -251,7 +256,7 @@ function ConversationColumn({
|
|
|
251
256
|
executions={conv.completedExecutions}
|
|
252
257
|
activeStreamExecution={conv.activeStreamExecution}
|
|
253
258
|
pendingUserMessage={conv.pendingUserMessage}
|
|
254
|
-
onApprovalSubmit={
|
|
259
|
+
onApprovalSubmit={flow.submitApproval}
|
|
255
260
|
submittingApprovalIds={conv.submittingApprovalIds}
|
|
256
261
|
workspaceEntries={conv.workspaceEntries}
|
|
257
262
|
sandboxWorkspaceRoot={flow.sandboxWorkspaceRoot}
|
|
@@ -269,6 +274,9 @@ function ConversationColumn({
|
|
|
269
274
|
{(conv.sendError || conv.approvalError) && (
|
|
270
275
|
<SendErrorBanner error={(conv.sendError ?? conv.approvalError)!} />
|
|
271
276
|
)}
|
|
277
|
+
{flow.autoApproveAll && (
|
|
278
|
+
<AutoApproveIndicator onTurnOff={() => flow.setAutoApproveAll(false)} />
|
|
279
|
+
)}
|
|
272
280
|
<SessionComposer
|
|
273
281
|
ref={composerRef}
|
|
274
282
|
onSubmit={flow.handleSubmit}
|
|
@@ -449,6 +457,33 @@ function SessionStarting() {
|
|
|
449
457
|
);
|
|
450
458
|
}
|
|
451
459
|
|
|
460
|
+
/**
|
|
461
|
+
* Low-weight, always-visible indicator shown while the session-scoped
|
|
462
|
+
* auto-approve preference is active. The "Turn off" control reverts the
|
|
463
|
+
* preference in one click — the safety affordance for "Approve & don't ask
|
|
464
|
+
* again". Nothing about approvals appears until the user opts in at a gate.
|
|
465
|
+
*/
|
|
466
|
+
function AutoApproveIndicator({ onTurnOff }: { onTurnOff: () => void }) {
|
|
467
|
+
return (
|
|
468
|
+
<div
|
|
469
|
+
role="status"
|
|
470
|
+
className="flex items-center gap-2 border-t border-border-muted px-4 py-1.5 text-xs text-muted-foreground"
|
|
471
|
+
>
|
|
472
|
+
<ShieldCheckIcon />
|
|
473
|
+
<span className="min-w-0 flex-1 truncate">
|
|
474
|
+
Auto-approving tool calls for this session
|
|
475
|
+
</span>
|
|
476
|
+
<button
|
|
477
|
+
type="button"
|
|
478
|
+
onClick={onTurnOff}
|
|
479
|
+
className="shrink-0 rounded font-medium text-foreground underline-offset-2 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
480
|
+
>
|
|
481
|
+
Turn off
|
|
482
|
+
</button>
|
|
483
|
+
</div>
|
|
484
|
+
);
|
|
485
|
+
}
|
|
486
|
+
|
|
452
487
|
function SendErrorBanner({ error }: { error: Error }) {
|
|
453
488
|
if (isSecretFlowError(error)) {
|
|
454
489
|
return <SecretFlowErrorGuide error={error} className="mx-4 my-2" />;
|
|
@@ -504,3 +539,12 @@ function LoaderIcon() {
|
|
|
504
539
|
</svg>
|
|
505
540
|
);
|
|
506
541
|
}
|
|
542
|
+
|
|
543
|
+
function ShieldCheckIcon() {
|
|
544
|
+
return (
|
|
545
|
+
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="shrink-0 text-success" aria-hidden="true">
|
|
546
|
+
<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" />
|
|
547
|
+
<path d="m9 12 2 2 4-4" />
|
|
548
|
+
</svg>
|
|
549
|
+
);
|
|
550
|
+
}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { describe, it, expect } from "vitest";
|
|
2
2
|
import { create } from "@bufbuild/protobuf";
|
|
3
3
|
import { timestampFromDate } from "@bufbuild/protobuf/wkt";
|
|
4
|
+
import { SessionSchema } from "@stigmer/protos/ai/stigmer/agentic/session/v1/api_pb";
|
|
4
5
|
import {
|
|
5
|
-
|
|
6
|
-
SessionStatusSchema,
|
|
7
|
-
} from "@stigmer/protos/ai/stigmer/agentic/session/v1/api_pb";
|
|
8
|
-
import {
|
|
6
|
+
ApiResourceAuditStatusSchema,
|
|
9
7
|
ApiResourceAuditSchema,
|
|
10
8
|
ApiResourceAuditInfoSchema,
|
|
11
9
|
} from "@stigmer/protos/ai/stigmer/commons/apiresource/status_pb";
|
|
@@ -20,7 +18,7 @@ function makeSession(date: Date | null) {
|
|
|
20
18
|
auditInfo.createdAt = timestampFromDate(date);
|
|
21
19
|
const audit = create(ApiResourceAuditSchema);
|
|
22
20
|
audit.specAudit = auditInfo;
|
|
23
|
-
const status = create(
|
|
21
|
+
const status = create(ApiResourceAuditStatusSchema);
|
|
24
22
|
status.audit = audit;
|
|
25
23
|
session.status = status;
|
|
26
24
|
}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
2
|
+
import { renderHook } from "@testing-library/react";
|
|
3
|
+
import type { ReactNode } from "react";
|
|
4
|
+
import type { Session } from "@stigmer/protos/ai/stigmer/agentic/session/v1/api_pb";
|
|
5
|
+
import { ExecutionTarget } from "@stigmer/protos/ai/stigmer/agentic/session/v1/enum_pb";
|
|
6
|
+
import { ExecutionTargetContext } from "../../execution-target-context";
|
|
7
|
+
import { RunnerAdapterContext } from "../../runner-adapter";
|
|
8
|
+
import type { RunnerAdapter } from "../../runner-adapter";
|
|
9
|
+
import { useLocalSessionWorker } from "../useLocalSessionWorker";
|
|
10
|
+
|
|
11
|
+
function createMockAdapter(): RunnerAdapter & {
|
|
12
|
+
onSessionOpened: ReturnType<typeof vi.fn>;
|
|
13
|
+
onSessionClosed: ReturnType<typeof vi.fn>;
|
|
14
|
+
onWorkflowExecutionCreated: ReturnType<typeof vi.fn>;
|
|
15
|
+
onWorkflowExecutionTerminated: ReturnType<typeof vi.fn>;
|
|
16
|
+
} {
|
|
17
|
+
return {
|
|
18
|
+
onSessionOpened: vi.fn().mockResolvedValue(undefined),
|
|
19
|
+
onSessionClosed: vi.fn().mockResolvedValue(undefined),
|
|
20
|
+
onWorkflowExecutionCreated: vi.fn().mockResolvedValue(undefined),
|
|
21
|
+
onWorkflowExecutionTerminated: vi.fn().mockResolvedValue(undefined),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** Build a minimal Session with a given execution target. */
|
|
26
|
+
function makeSession(target: ExecutionTarget): Session {
|
|
27
|
+
return { spec: { executionTarget: target } } as Session;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function wrapper(
|
|
31
|
+
adapter: RunnerAdapter | null,
|
|
32
|
+
contextTarget?: "local" | "cloud",
|
|
33
|
+
) {
|
|
34
|
+
return function Wrapper({ children }: { children: ReactNode }) {
|
|
35
|
+
return (
|
|
36
|
+
<ExecutionTargetContext.Provider value={contextTarget}>
|
|
37
|
+
<RunnerAdapterContext.Provider value={adapter}>
|
|
38
|
+
{children}
|
|
39
|
+
</RunnerAdapterContext.Provider>
|
|
40
|
+
</ExecutionTargetContext.Provider>
|
|
41
|
+
);
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
describe("useLocalSessionWorker", () => {
|
|
46
|
+
beforeEach(() => {
|
|
47
|
+
vi.restoreAllMocks();
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
it("attaches the worker on mount for a loaded local session", () => {
|
|
51
|
+
const adapter = createMockAdapter();
|
|
52
|
+
renderHook(
|
|
53
|
+
() => useLocalSessionWorker("ses-1", makeSession(ExecutionTarget.LOCAL)),
|
|
54
|
+
{ wrapper: wrapper(adapter, "local") },
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
expect(adapter.onSessionOpened).toHaveBeenCalledTimes(1);
|
|
58
|
+
expect(adapter.onSessionOpened).toHaveBeenCalledWith("ses-1");
|
|
59
|
+
expect(adapter.onSessionClosed).not.toHaveBeenCalled();
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it("detaches the worker on unmount", () => {
|
|
63
|
+
const adapter = createMockAdapter();
|
|
64
|
+
const { unmount } = renderHook(
|
|
65
|
+
() => useLocalSessionWorker("ses-1", makeSession(ExecutionTarget.LOCAL)),
|
|
66
|
+
{ wrapper: wrapper(adapter, "local") },
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
unmount();
|
|
70
|
+
|
|
71
|
+
expect(adapter.onSessionClosed).toHaveBeenCalledTimes(1);
|
|
72
|
+
expect(adapter.onSessionClosed).toHaveBeenCalledWith("ses-1");
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
it("is a no-op when no adapter is configured", () => {
|
|
76
|
+
// No adapter → nothing to assert beyond "does not throw".
|
|
77
|
+
expect(() =>
|
|
78
|
+
renderHook(
|
|
79
|
+
() => useLocalSessionWorker("ses-1", makeSession(ExecutionTarget.LOCAL)),
|
|
80
|
+
{ wrapper: wrapper(null, "local") },
|
|
81
|
+
),
|
|
82
|
+
).not.toThrow();
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
it("does not attach for a cloud session", () => {
|
|
86
|
+
const adapter = createMockAdapter();
|
|
87
|
+
renderHook(
|
|
88
|
+
() => useLocalSessionWorker("ses-1", makeSession(ExecutionTarget.CLOUD)),
|
|
89
|
+
{ wrapper: wrapper(adapter, "local") },
|
|
90
|
+
);
|
|
91
|
+
|
|
92
|
+
expect(adapter.onSessionOpened).not.toHaveBeenCalled();
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
it("does not attach until the session has loaded", () => {
|
|
96
|
+
const adapter = createMockAdapter();
|
|
97
|
+
const { rerender } = renderHook(
|
|
98
|
+
({ session }: { session: Session | null }) =>
|
|
99
|
+
useLocalSessionWorker("ses-1", session),
|
|
100
|
+
{
|
|
101
|
+
wrapper: wrapper(adapter, "local"),
|
|
102
|
+
initialProps: { session: null } as { session: Session | null },
|
|
103
|
+
},
|
|
104
|
+
);
|
|
105
|
+
|
|
106
|
+
// Loading: target unknown → no attach yet.
|
|
107
|
+
expect(adapter.onSessionOpened).not.toHaveBeenCalled();
|
|
108
|
+
|
|
109
|
+
// Loaded as local → attaches now.
|
|
110
|
+
rerender({ session: makeSession(ExecutionTarget.LOCAL) });
|
|
111
|
+
expect(adapter.onSessionOpened).toHaveBeenCalledTimes(1);
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
it("falls back to the provider target when the session spec is unspecified", () => {
|
|
115
|
+
const adapter = createMockAdapter();
|
|
116
|
+
renderHook(
|
|
117
|
+
() =>
|
|
118
|
+
useLocalSessionWorker(
|
|
119
|
+
"ses-1",
|
|
120
|
+
makeSession(ExecutionTarget.UNSPECIFIED),
|
|
121
|
+
),
|
|
122
|
+
{ wrapper: wrapper(adapter, "local") },
|
|
123
|
+
);
|
|
124
|
+
|
|
125
|
+
expect(adapter.onSessionOpened).toHaveBeenCalledWith("ses-1");
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
it("does not attach when spec is unspecified and provider target is not local", () => {
|
|
129
|
+
const adapter = createMockAdapter();
|
|
130
|
+
renderHook(
|
|
131
|
+
() =>
|
|
132
|
+
useLocalSessionWorker(
|
|
133
|
+
"ses-1",
|
|
134
|
+
makeSession(ExecutionTarget.UNSPECIFIED),
|
|
135
|
+
),
|
|
136
|
+
{ wrapper: wrapper(adapter, "cloud") },
|
|
137
|
+
);
|
|
138
|
+
|
|
139
|
+
expect(adapter.onSessionOpened).not.toHaveBeenCalled();
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
it("detaches the old session and attaches the new one on sessionId change", () => {
|
|
143
|
+
const adapter = createMockAdapter();
|
|
144
|
+
const { rerender } = renderHook(
|
|
145
|
+
({ sessionId }: { sessionId: string }) =>
|
|
146
|
+
useLocalSessionWorker(sessionId, makeSession(ExecutionTarget.LOCAL)),
|
|
147
|
+
{ wrapper: wrapper(adapter, "local"), initialProps: { sessionId: "ses-1" } },
|
|
148
|
+
);
|
|
149
|
+
|
|
150
|
+
expect(adapter.onSessionOpened).toHaveBeenCalledWith("ses-1");
|
|
151
|
+
|
|
152
|
+
rerender({ sessionId: "ses-2" });
|
|
153
|
+
|
|
154
|
+
expect(adapter.onSessionClosed).toHaveBeenCalledWith("ses-1");
|
|
155
|
+
expect(adapter.onSessionOpened).toHaveBeenCalledWith("ses-2");
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
// DD-010 regression guard: useSessionConversation refetches the session
|
|
159
|
+
// constantly. A refetch that returns a new object with the same execution
|
|
160
|
+
// target must NOT thrash the runner (no extra open/close).
|
|
161
|
+
it("does not re-attach when a refetch returns a new session object with the same target", () => {
|
|
162
|
+
const adapter = createMockAdapter();
|
|
163
|
+
const { rerender } = renderHook(
|
|
164
|
+
({ session }: { session: Session }) =>
|
|
165
|
+
useLocalSessionWorker("ses-1", session),
|
|
166
|
+
{
|
|
167
|
+
wrapper: wrapper(adapter, "local"),
|
|
168
|
+
initialProps: { session: makeSession(ExecutionTarget.LOCAL) },
|
|
169
|
+
},
|
|
170
|
+
);
|
|
171
|
+
|
|
172
|
+
expect(adapter.onSessionOpened).toHaveBeenCalledTimes(1);
|
|
173
|
+
|
|
174
|
+
// Simulate three refetches returning fresh objects with identical target.
|
|
175
|
+
rerender({ session: makeSession(ExecutionTarget.LOCAL) });
|
|
176
|
+
rerender({ session: makeSession(ExecutionTarget.LOCAL) });
|
|
177
|
+
rerender({ session: makeSession(ExecutionTarget.LOCAL) });
|
|
178
|
+
|
|
179
|
+
expect(adapter.onSessionOpened).toHaveBeenCalledTimes(1);
|
|
180
|
+
expect(adapter.onSessionClosed).not.toHaveBeenCalled();
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
it("swallows adapter errors so the session view never crashes", () => {
|
|
184
|
+
const adapter = createMockAdapter();
|
|
185
|
+
adapter.onSessionOpened.mockRejectedValue(new Error("runner down"));
|
|
186
|
+
|
|
187
|
+
expect(() =>
|
|
188
|
+
renderHook(
|
|
189
|
+
() => useLocalSessionWorker("ses-1", makeSession(ExecutionTarget.LOCAL)),
|
|
190
|
+
{ wrapper: wrapper(adapter, "local") },
|
|
191
|
+
),
|
|
192
|
+
).not.toThrow();
|
|
193
|
+
});
|
|
194
|
+
});
|