@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
|
@@ -5,6 +5,8 @@ import { DEFAULT_MODEL_ID, DEFAULT_CURSOR_MODEL_ID, parseRegistryJson } from "..
|
|
|
5
5
|
import { ModelRegistryContext } from "../../models/ModelRegistryContext";
|
|
6
6
|
import type { ModelRegistryState } from "../../models/ModelRegistryContext";
|
|
7
7
|
import { ExecutionTargetContext } from "../../execution-target-context";
|
|
8
|
+
import { RunnerAdapterContext } from "../../runner-adapter";
|
|
9
|
+
import type { RunnerAdapter } from "../../runner-adapter";
|
|
8
10
|
import type { UseCreateSessionReturn } from "../useCreateSession";
|
|
9
11
|
|
|
10
12
|
const mockCreateSession = vi.fn<UseCreateSessionReturn["create"]>();
|
|
@@ -72,19 +74,38 @@ const TEST_MODELS = parseRegistryJson({
|
|
|
72
74
|
],
|
|
73
75
|
});
|
|
74
76
|
|
|
75
|
-
function createWrapper(
|
|
77
|
+
function createWrapper(
|
|
78
|
+
executionTarget?: "local" | "cloud",
|
|
79
|
+
adapter: RunnerAdapter | null = null,
|
|
80
|
+
) {
|
|
76
81
|
const state: ModelRegistryState = { models: TEST_MODELS, isLoading: false, error: null, refetch: () => {} };
|
|
77
82
|
return function Wrapper({ children }: { children: ReactNode }) {
|
|
78
83
|
return (
|
|
79
84
|
<ExecutionTargetContext.Provider value={executionTarget}>
|
|
80
|
-
<
|
|
81
|
-
{
|
|
82
|
-
|
|
85
|
+
<RunnerAdapterContext.Provider value={adapter}>
|
|
86
|
+
<ModelRegistryContext.Provider value={state}>
|
|
87
|
+
{children}
|
|
88
|
+
</ModelRegistryContext.Provider>
|
|
89
|
+
</RunnerAdapterContext.Provider>
|
|
83
90
|
</ExecutionTargetContext.Provider>
|
|
84
91
|
);
|
|
85
92
|
};
|
|
86
93
|
}
|
|
87
94
|
|
|
95
|
+
function createMockAdapter(): RunnerAdapter & {
|
|
96
|
+
onSessionOpened: ReturnType<typeof vi.fn>;
|
|
97
|
+
onSessionClosed: ReturnType<typeof vi.fn>;
|
|
98
|
+
onWorkflowExecutionCreated: ReturnType<typeof vi.fn>;
|
|
99
|
+
onWorkflowExecutionTerminated: ReturnType<typeof vi.fn>;
|
|
100
|
+
} {
|
|
101
|
+
return {
|
|
102
|
+
onSessionOpened: vi.fn().mockResolvedValue(undefined),
|
|
103
|
+
onSessionClosed: vi.fn().mockResolvedValue(undefined),
|
|
104
|
+
onWorkflowExecutionCreated: vi.fn().mockResolvedValue(undefined),
|
|
105
|
+
onWorkflowExecutionTerminated: vi.fn().mockResolvedValue(undefined),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
|
|
88
109
|
const STORAGE_KEY_HARNESS = "stigmer:session:harness";
|
|
89
110
|
const STORAGE_KEY_MODEL_NATIVE = "stigmer:session:model";
|
|
90
111
|
const STORAGE_KEY_MODEL_CURSOR = "stigmer:session:model:cursor";
|
|
@@ -392,6 +413,61 @@ describe("useNewSessionFlow", () => {
|
|
|
392
413
|
});
|
|
393
414
|
});
|
|
394
415
|
|
|
416
|
+
describe("submit — local runner worker (eager attach)", () => {
|
|
417
|
+
it("attaches the worker before creating the first execution", async () => {
|
|
418
|
+
const adapter = createMockAdapter();
|
|
419
|
+
const opts = defaultOptions();
|
|
420
|
+
const { result } = renderHook(() => useNewSessionFlow(opts), {
|
|
421
|
+
wrapper: createWrapper("local", adapter),
|
|
422
|
+
});
|
|
423
|
+
|
|
424
|
+
await act(async () => {
|
|
425
|
+
await result.current.submit("Hello");
|
|
426
|
+
});
|
|
427
|
+
|
|
428
|
+
expect(adapter.onSessionOpened).toHaveBeenCalledTimes(1);
|
|
429
|
+
expect(adapter.onSessionOpened).toHaveBeenCalledWith("sess-new");
|
|
430
|
+
expect(adapter.onSessionClosed).not.toHaveBeenCalled();
|
|
431
|
+
|
|
432
|
+
// The worker must be polling before the first execution exists.
|
|
433
|
+
const openedOrder = adapter.onSessionOpened.mock.invocationCallOrder[0];
|
|
434
|
+
const execOrder = mockCreateExecution.mock.invocationCallOrder[0];
|
|
435
|
+
expect(openedOrder).toBeLessThan(execOrder);
|
|
436
|
+
});
|
|
437
|
+
|
|
438
|
+
it("does not attach a worker when the target is cloud", async () => {
|
|
439
|
+
const adapter = createMockAdapter();
|
|
440
|
+
const opts = defaultOptions();
|
|
441
|
+
const { result } = renderHook(() => useNewSessionFlow(opts), {
|
|
442
|
+
wrapper: createWrapper("cloud", adapter),
|
|
443
|
+
});
|
|
444
|
+
|
|
445
|
+
await act(async () => {
|
|
446
|
+
await result.current.submit("Hello");
|
|
447
|
+
});
|
|
448
|
+
|
|
449
|
+
expect(adapter.onSessionOpened).not.toHaveBeenCalled();
|
|
450
|
+
});
|
|
451
|
+
|
|
452
|
+
it("detaches the worker when the first execution fails (no leak)", async () => {
|
|
453
|
+
const adapter = createMockAdapter();
|
|
454
|
+
mockCreateExecution.mockRejectedValueOnce(new Error("execution boom"));
|
|
455
|
+
const opts = defaultOptions();
|
|
456
|
+
const { result } = renderHook(() => useNewSessionFlow(opts), {
|
|
457
|
+
wrapper: createWrapper("local", adapter),
|
|
458
|
+
});
|
|
459
|
+
|
|
460
|
+
await act(async () => {
|
|
461
|
+
await result.current.submit("Hello");
|
|
462
|
+
});
|
|
463
|
+
|
|
464
|
+
expect(adapter.onSessionOpened).toHaveBeenCalledWith("sess-new");
|
|
465
|
+
expect(adapter.onSessionClosed).toHaveBeenCalledWith("sess-new");
|
|
466
|
+
expect(result.current.submitError).not.toBeNull();
|
|
467
|
+
expect(opts.onError).toHaveBeenCalled();
|
|
468
|
+
});
|
|
469
|
+
});
|
|
470
|
+
|
|
395
471
|
describe("submit while default agent is loading", () => {
|
|
396
472
|
it("awaits default agent and creates session when fetch resolves", async () => {
|
|
397
473
|
const resolvedAgent = { status: { defaultInstanceId: "awaited-inst" } };
|
|
@@ -12,6 +12,9 @@ import { SessionSchema, type Session } from "@stigmer/protos/ai/stigmer/agentic/
|
|
|
12
12
|
import { ApiResourceMetadataSchema } from "@stigmer/protos/ai/stigmer/commons/apiresource/metadata_pb";
|
|
13
13
|
import type { Stigmer } from "@stigmer/sdk";
|
|
14
14
|
import { StigmerContext } from "../../context";
|
|
15
|
+
import { ExecutionTargetContext } from "../../execution-target-context";
|
|
16
|
+
import { RunnerAdapterContext } from "../../runner-adapter";
|
|
17
|
+
import type { RunnerAdapter } from "../../runner-adapter";
|
|
15
18
|
import { useSessionConversation } from "../useSessionConversation";
|
|
16
19
|
|
|
17
20
|
function makeSession(id: string): Session {
|
|
@@ -356,3 +359,89 @@ describe("useSessionConversation", () => {
|
|
|
356
359
|
);
|
|
357
360
|
});
|
|
358
361
|
});
|
|
362
|
+
|
|
363
|
+
describe("useSessionConversation — local runner worker lifecycle", () => {
|
|
364
|
+
let methods: MockMethods;
|
|
365
|
+
let mockStigmer: Stigmer;
|
|
366
|
+
let stream: ReturnType<typeof createControllableStream<AgentExecution>>;
|
|
367
|
+
|
|
368
|
+
function createMockAdapter(): RunnerAdapter & {
|
|
369
|
+
onSessionOpened: ReturnType<typeof vi.fn>;
|
|
370
|
+
onSessionClosed: ReturnType<typeof vi.fn>;
|
|
371
|
+
onWorkflowExecutionCreated: ReturnType<typeof vi.fn>;
|
|
372
|
+
onWorkflowExecutionTerminated: ReturnType<typeof vi.fn>;
|
|
373
|
+
} {
|
|
374
|
+
return {
|
|
375
|
+
onSessionOpened: vi.fn().mockResolvedValue(undefined),
|
|
376
|
+
onSessionClosed: vi.fn().mockResolvedValue(undefined),
|
|
377
|
+
onWorkflowExecutionCreated: vi.fn().mockResolvedValue(undefined),
|
|
378
|
+
onWorkflowExecutionTerminated: vi.fn().mockResolvedValue(undefined),
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
function localWrapper(client: Stigmer, adapter: RunnerAdapter) {
|
|
383
|
+
return function Wrapper({ children }: { children: ReactNode }) {
|
|
384
|
+
return (
|
|
385
|
+
<ExecutionTargetContext.Provider value="local">
|
|
386
|
+
<RunnerAdapterContext.Provider value={adapter}>
|
|
387
|
+
<StigmerContext.Provider value={client}>
|
|
388
|
+
{children}
|
|
389
|
+
</StigmerContext.Provider>
|
|
390
|
+
</RunnerAdapterContext.Provider>
|
|
391
|
+
</ExecutionTargetContext.Provider>
|
|
392
|
+
);
|
|
393
|
+
};
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
beforeEach(() => {
|
|
397
|
+
stream = createControllableStream<AgentExecution>();
|
|
398
|
+
methods = {
|
|
399
|
+
sessionGet: vi.fn().mockResolvedValue(makeSession("session-1")),
|
|
400
|
+
listBySession: vi.fn().mockResolvedValue({ entries: [] }),
|
|
401
|
+
executionCreate: vi.fn(),
|
|
402
|
+
subscribe: vi.fn().mockReturnValue(stream.generator),
|
|
403
|
+
submitApproval: vi.fn().mockResolvedValue({}),
|
|
404
|
+
};
|
|
405
|
+
mockStigmer = createMockStigmer(methods);
|
|
406
|
+
});
|
|
407
|
+
|
|
408
|
+
it("attaches the worker once when a local session opens and detaches on close", async () => {
|
|
409
|
+
const adapter = createMockAdapter();
|
|
410
|
+
const { unmount } = renderHook(
|
|
411
|
+
() => useSessionConversation("session-1", "org"),
|
|
412
|
+
{ wrapper: localWrapper(mockStigmer, adapter) },
|
|
413
|
+
);
|
|
414
|
+
|
|
415
|
+
// The session loads asynchronously; the worker attaches once loaded.
|
|
416
|
+
await waitFor(() => {
|
|
417
|
+
expect(adapter.onSessionOpened).toHaveBeenCalledWith("session-1");
|
|
418
|
+
});
|
|
419
|
+
expect(adapter.onSessionOpened).toHaveBeenCalledTimes(1);
|
|
420
|
+
expect(adapter.onSessionClosed).not.toHaveBeenCalled();
|
|
421
|
+
|
|
422
|
+
unmount();
|
|
423
|
+
|
|
424
|
+
expect(adapter.onSessionClosed).toHaveBeenCalledTimes(1);
|
|
425
|
+
expect(adapter.onSessionClosed).toHaveBeenCalledWith("session-1");
|
|
426
|
+
});
|
|
427
|
+
|
|
428
|
+
it("does not attach when no adapter is configured", async () => {
|
|
429
|
+
// No adapter in the tree → no-op. Just verify the conversation still loads.
|
|
430
|
+
const { result } = renderHook(
|
|
431
|
+
() => useSessionConversation("session-1", "org"),
|
|
432
|
+
{
|
|
433
|
+
wrapper: function Wrapper({ children }: { children: ReactNode }) {
|
|
434
|
+
return (
|
|
435
|
+
<StigmerContext.Provider value={mockStigmer}>
|
|
436
|
+
{children}
|
|
437
|
+
</StigmerContext.Provider>
|
|
438
|
+
);
|
|
439
|
+
},
|
|
440
|
+
},
|
|
441
|
+
);
|
|
442
|
+
|
|
443
|
+
await waitFor(() => {
|
|
444
|
+
expect(result.current.session).not.toBeNull();
|
|
445
|
+
});
|
|
446
|
+
});
|
|
447
|
+
});
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
|
|
2
|
+
import { renderHook, act } from "@testing-library/react";
|
|
3
|
+
import { ApprovalAction } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
4
|
+
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
// Mocks — useSessionPageFlow composes many hooks; we stub them to isolate the
|
|
7
|
+
// session-scoped auto-approve behavior (gate sets it, follow-ups carry it,
|
|
8
|
+
// "Turn off" reverts it).
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
|
|
11
|
+
const mockSubmitApproval = vi.fn<(t: string, a: ApprovalAction, c?: string) => Promise<void>>();
|
|
12
|
+
const mockSendFollowUp = vi.fn();
|
|
13
|
+
|
|
14
|
+
const mockConv = {
|
|
15
|
+
session: { spec: {} },
|
|
16
|
+
isLoading: false,
|
|
17
|
+
completedExecutions: [] as unknown[],
|
|
18
|
+
activeStreamExecution: null,
|
|
19
|
+
workspaceEntries: [] as unknown[],
|
|
20
|
+
submitApproval: mockSubmitApproval,
|
|
21
|
+
sendFollowUp: mockSendFollowUp,
|
|
22
|
+
};
|
|
23
|
+
vi.mock("../useSessionConversation", () => ({
|
|
24
|
+
useSessionConversation: () => mockConv,
|
|
25
|
+
}));
|
|
26
|
+
|
|
27
|
+
vi.mock("../../hooks", () => ({
|
|
28
|
+
useStigmer: () => ({ agent: { getByReference: vi.fn() } }),
|
|
29
|
+
}));
|
|
30
|
+
|
|
31
|
+
vi.mock("../../agent", () => ({
|
|
32
|
+
useDefaultAgent: () => ({ agent: null, isLoading: false, error: null }),
|
|
33
|
+
}));
|
|
34
|
+
|
|
35
|
+
const mockWorkspace = {
|
|
36
|
+
entries: [],
|
|
37
|
+
hasEntries: false,
|
|
38
|
+
toInput: vi.fn().mockReturnValue([]),
|
|
39
|
+
addGitRepo: vi.fn(),
|
|
40
|
+
addLocalPath: vi.fn(),
|
|
41
|
+
removeEntry: vi.fn(),
|
|
42
|
+
clear: vi.fn(),
|
|
43
|
+
};
|
|
44
|
+
vi.mock("../../workspace", () => ({
|
|
45
|
+
useWorkspaceEntries: () => mockWorkspace,
|
|
46
|
+
}));
|
|
47
|
+
|
|
48
|
+
const mockSessionVariables = {
|
|
49
|
+
variables: [],
|
|
50
|
+
isEmpty: true,
|
|
51
|
+
clear: vi.fn(),
|
|
52
|
+
};
|
|
53
|
+
vi.mock("../../execution/useSessionVariables", () => ({
|
|
54
|
+
useSessionVariables: () => mockSessionVariables,
|
|
55
|
+
}));
|
|
56
|
+
|
|
57
|
+
vi.mock("../usePersistedModel", () => ({
|
|
58
|
+
usePersistedModel: () => ["model-x", vi.fn()] as const,
|
|
59
|
+
}));
|
|
60
|
+
|
|
61
|
+
vi.mock("../useAgentRefFromSession", () => ({
|
|
62
|
+
useAgentRefFromSession: () => ({ agentRef: null }),
|
|
63
|
+
}));
|
|
64
|
+
|
|
65
|
+
import { useSessionPageFlow } from "../useSessionPageFlow";
|
|
66
|
+
|
|
67
|
+
const OPTS = { sessionId: "ses_1", org: "acme" };
|
|
68
|
+
|
|
69
|
+
describe("useSessionPageFlow — gate-driven auto-approve", () => {
|
|
70
|
+
beforeEach(() => {
|
|
71
|
+
mockSubmitApproval.mockResolvedValue(undefined);
|
|
72
|
+
});
|
|
73
|
+
afterEach(() => {
|
|
74
|
+
vi.clearAllMocks();
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
it("defaults autoApproveAll to false", () => {
|
|
78
|
+
const { result } = renderHook(() => useSessionPageFlow(OPTS));
|
|
79
|
+
expect(result.current.autoApproveAll).toBe(false);
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
it("flips autoApproveAll when the gate decision is APPROVE_ALL", async () => {
|
|
83
|
+
const { result } = renderHook(() => useSessionPageFlow(OPTS));
|
|
84
|
+
|
|
85
|
+
await act(async () => {
|
|
86
|
+
await result.current.submitApproval("tc1", ApprovalAction.APPROVE_ALL);
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
expect(result.current.autoApproveAll).toBe(true);
|
|
90
|
+
// Still delegates to the underlying conversation submit.
|
|
91
|
+
expect(mockSubmitApproval).toHaveBeenCalledWith("tc1", ApprovalAction.APPROVE_ALL, undefined);
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
it("does NOT flip autoApproveAll for a plain APPROVE", async () => {
|
|
95
|
+
const { result } = renderHook(() => useSessionPageFlow(OPTS));
|
|
96
|
+
|
|
97
|
+
await act(async () => {
|
|
98
|
+
await result.current.submitApproval("tc1", ApprovalAction.APPROVE);
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
expect(result.current.autoApproveAll).toBe(false);
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
it("carries autoApproveAll into follow-up submissions once enabled", async () => {
|
|
105
|
+
const { result } = renderHook(() => useSessionPageFlow(OPTS));
|
|
106
|
+
|
|
107
|
+
await act(async () => {
|
|
108
|
+
await result.current.submitApproval("tc1", ApprovalAction.APPROVE_ALL);
|
|
109
|
+
});
|
|
110
|
+
await act(async () => {
|
|
111
|
+
await result.current.handleSubmit("next message");
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
expect(mockSendFollowUp).toHaveBeenCalledTimes(1);
|
|
115
|
+
const followUpOpts = mockSendFollowUp.mock.calls[0][1];
|
|
116
|
+
expect(followUpOpts.autoApproveAll).toBe(true);
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
it("does not carry autoApproveAll before any APPROVE_ALL decision", async () => {
|
|
120
|
+
const { result } = renderHook(() => useSessionPageFlow(OPTS));
|
|
121
|
+
|
|
122
|
+
await act(async () => {
|
|
123
|
+
await result.current.handleSubmit("first message");
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
const followUpOpts = mockSendFollowUp.mock.calls[0][1];
|
|
127
|
+
expect(followUpOpts.autoApproveAll).toBeUndefined();
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
it("reverts via setAutoApproveAll(false) so follow-ups stop carrying it", async () => {
|
|
131
|
+
const { result } = renderHook(() => useSessionPageFlow(OPTS));
|
|
132
|
+
|
|
133
|
+
await act(async () => {
|
|
134
|
+
await result.current.submitApproval("tc1", ApprovalAction.APPROVE_ALL);
|
|
135
|
+
});
|
|
136
|
+
expect(result.current.autoApproveAll).toBe(true);
|
|
137
|
+
|
|
138
|
+
act(() => {
|
|
139
|
+
result.current.setAutoApproveAll(false);
|
|
140
|
+
});
|
|
141
|
+
expect(result.current.autoApproveAll).toBe(false);
|
|
142
|
+
|
|
143
|
+
await act(async () => {
|
|
144
|
+
await result.current.handleSubmit("after turn off");
|
|
145
|
+
});
|
|
146
|
+
const followUpOpts = mockSendFollowUp.mock.calls.at(-1)?.[1];
|
|
147
|
+
expect(followUpOpts.autoApproveAll).toBeUndefined();
|
|
148
|
+
});
|
|
149
|
+
});
|
|
@@ -12,7 +12,6 @@ import { toError } from "../internal/toError";
|
|
|
12
12
|
import { toProtoHarness, type HarnessOption } from "../models/harness";
|
|
13
13
|
import { toProtoExecutionTarget, type ExecutionTargetOption } from "./execution-target";
|
|
14
14
|
import { useExecutionTarget } from "../execution-target-context";
|
|
15
|
-
import { useRunnerAdapter } from "../runner-adapter";
|
|
16
15
|
|
|
17
16
|
/** Shared fields present in both variants of {@link CreateSessionInput}. */
|
|
18
17
|
export interface SharedSessionFields {
|
|
@@ -130,7 +129,6 @@ export interface UseCreateSessionReturn {
|
|
|
130
129
|
export function useCreateSession(): UseCreateSessionReturn {
|
|
131
130
|
const stigmer = useStigmer();
|
|
132
131
|
const contextTarget = useExecutionTarget();
|
|
133
|
-
const adapter = useRunnerAdapter();
|
|
134
132
|
const [isCreating, setIsCreating] = useState(false);
|
|
135
133
|
const [error, setError] = useState<Error | null>(null);
|
|
136
134
|
|
|
@@ -183,10 +181,9 @@ export function useCreateSession(): UseCreateSessionReturn {
|
|
|
183
181
|
|
|
184
182
|
const sessionId = session.metadata!.id;
|
|
185
183
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
184
|
+
// Worker lifecycle is owned by the session view (useSessionConversation
|
|
185
|
+
// attaches on open / detaches on close). The new-session flow attaches
|
|
186
|
+
// eagerly for the first execution; creation alone needs no worker.
|
|
190
187
|
return { sessionId };
|
|
191
188
|
} catch (err) {
|
|
192
189
|
setError(toError(err));
|
|
@@ -195,7 +192,7 @@ export function useCreateSession(): UseCreateSessionReturn {
|
|
|
195
192
|
setIsCreating(false);
|
|
196
193
|
}
|
|
197
194
|
},
|
|
198
|
-
[stigmer, contextTarget
|
|
195
|
+
[stigmer, contextTarget],
|
|
199
196
|
);
|
|
200
197
|
|
|
201
198
|
return { create, isCreating, error, clearError };
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useEffect, useMemo } 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 { useRunnerAdapter } from "../runner-adapter";
|
|
7
|
+
import { useExecutionTarget } from "../execution-target-context";
|
|
8
|
+
import { fromProtoExecutionTarget } from "./execution-target";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Drives the local runner worker lifecycle for an open session.
|
|
12
|
+
*
|
|
13
|
+
* A `Session` is a long-lived, multi-turn conversation with **no terminal
|
|
14
|
+
* phase** — its runner worker must keep polling the session task queue for as
|
|
15
|
+
* long as the session is open, because `sendFollowUp` creates new executions
|
|
16
|
+
* without re-attaching a worker. The lifecycle is therefore
|
|
17
|
+
* **attach-on-open / detach-on-close**: attach when the session is opened
|
|
18
|
+
* (this hook mounts with a loaded, local session and an adapter present),
|
|
19
|
+
* detach when it is closed (unmount or `sessionId` change). This also closes
|
|
20
|
+
* the "re-opening an existing session leaves its task queue without a poller"
|
|
21
|
+
* gap that previously made follow-ups silently hang.
|
|
22
|
+
*
|
|
23
|
+
* Wired once from {@link useSessionConversation} so every consumer — web,
|
|
24
|
+
* desktop, Ink/terminal, and custom headless hosts — gets the behavior for
|
|
25
|
+
* free. It is a no-op unless a `runnerAdapter` is configured **and** the
|
|
26
|
+
* session resolves to local execution (cloud sessions are server-provisioned).
|
|
27
|
+
*
|
|
28
|
+
* The effect depends only on stable primitives (`adapter`, `sessionId`, and
|
|
29
|
+
* the derived `effectiveTarget` string) and **never on the `session` object**.
|
|
30
|
+
* `useSessionConversation` refetches the session frequently; keying the effect
|
|
31
|
+
* on the object would tear down and restart the worker on every refetch
|
|
32
|
+
* (DD-010 / reference-stability). `executionTarget` is immutable after the
|
|
33
|
+
* first execution, so the derived string stays stable across refetches.
|
|
34
|
+
*
|
|
35
|
+
* @param sessionId - The session being viewed, or `null` to skip.
|
|
36
|
+
* @param session - The loaded session, or `null` while loading. The worker is
|
|
37
|
+
* not attached until the session loads, so the decision uses the session's
|
|
38
|
+
* own (authoritative) execution target rather than the provider default.
|
|
39
|
+
*/
|
|
40
|
+
export function useLocalSessionWorker(
|
|
41
|
+
sessionId: string | null,
|
|
42
|
+
session: Session | null,
|
|
43
|
+
): void {
|
|
44
|
+
const adapter = useRunnerAdapter();
|
|
45
|
+
const contextTarget = useExecutionTarget();
|
|
46
|
+
|
|
47
|
+
// Resolve the session's effective execution target as a stable primitive.
|
|
48
|
+
// `undefined` until the session loads — so we never attach a local worker
|
|
49
|
+
// before we know whether the session actually runs locally (which would
|
|
50
|
+
// spuriously start a worker for a cloud session opened in a local-default
|
|
51
|
+
// app). When the spec is UNSPECIFIED, fall back to the provider target.
|
|
52
|
+
const isLoaded = session != null;
|
|
53
|
+
const specTarget = session?.spec?.executionTarget;
|
|
54
|
+
const effectiveTarget = useMemo(() => {
|
|
55
|
+
if (!isLoaded) return undefined;
|
|
56
|
+
return (
|
|
57
|
+
fromProtoExecutionTarget(specTarget ?? ExecutionTarget.UNSPECIFIED) ??
|
|
58
|
+
contextTarget
|
|
59
|
+
);
|
|
60
|
+
}, [isLoaded, specTarget, contextTarget]);
|
|
61
|
+
|
|
62
|
+
useEffect(() => {
|
|
63
|
+
if (!adapter || !sessionId || effectiveTarget !== "local") return;
|
|
64
|
+
|
|
65
|
+
// Fire-and-forget: a runner-start failure must not crash the session view.
|
|
66
|
+
// The host adapter's add/remove are idempotent, so React's cleanup-driven
|
|
67
|
+
// detach-old/attach-new on `sessionId` change is safe.
|
|
68
|
+
adapter.onSessionOpened(sessionId).catch(() => {});
|
|
69
|
+
return () => {
|
|
70
|
+
adapter.onSessionClosed(sessionId).catch(() => {});
|
|
71
|
+
};
|
|
72
|
+
}, [adapter, sessionId, effectiveTarget]);
|
|
73
|
+
}
|
|
@@ -15,6 +15,7 @@ import { useCreateSession } from "./useCreateSession";
|
|
|
15
15
|
import { useCreateAgentExecution } from "../execution/useCreateAgentExecution";
|
|
16
16
|
import type { ExecutionTargetOption } from "./execution-target";
|
|
17
17
|
import { useExecutionTarget } from "../execution-target-context";
|
|
18
|
+
import { useRunnerAdapter } from "../runner-adapter";
|
|
18
19
|
|
|
19
20
|
const DEFAULT_AGENT_TIMEOUT_MS = 10_000;
|
|
20
21
|
|
|
@@ -160,6 +161,7 @@ export function useNewSessionFlow(
|
|
|
160
161
|
const { org, onSessionCreated, onError } = options;
|
|
161
162
|
const contextTarget = useExecutionTarget();
|
|
162
163
|
const executionTarget = options.executionTarget ?? contextTarget;
|
|
164
|
+
const adapter = useRunnerAdapter();
|
|
163
165
|
|
|
164
166
|
const [harness, setHarnessRaw] = useState<HarnessOption>(() => {
|
|
165
167
|
if (typeof window === "undefined") return DEFAULT_HARNESS;
|
|
@@ -306,7 +308,26 @@ export function useNewSessionFlow(
|
|
|
306
308
|
}));
|
|
307
309
|
}
|
|
308
310
|
|
|
309
|
-
|
|
311
|
+
// Local execution: attach the session's runner worker before creating
|
|
312
|
+
// the first execution. The session view (useSessionConversation) owns
|
|
313
|
+
// the steady-state lifecycle, but it is not mounted yet — navigation
|
|
314
|
+
// happens after onSessionCreated below — so without this eager attach
|
|
315
|
+
// the first execution would have no poller until the view mounts.
|
|
316
|
+
if (adapter && executionTarget === "local") {
|
|
317
|
+
await adapter.onSessionOpened(sessionId);
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
try {
|
|
321
|
+
await createExecution({ ...executionFields, sessionId });
|
|
322
|
+
} catch (err) {
|
|
323
|
+
// The first execution failed and the session view will not mount,
|
|
324
|
+
// so detach the worker we just attached to avoid leaking it.
|
|
325
|
+
if (adapter && executionTarget === "local") {
|
|
326
|
+
adapter.onSessionClosed(sessionId).catch(() => {});
|
|
327
|
+
}
|
|
328
|
+
throw err;
|
|
329
|
+
}
|
|
330
|
+
|
|
310
331
|
sessionVariables.clear();
|
|
311
332
|
onSessionCreated(sessionId);
|
|
312
333
|
} catch (err) {
|
|
@@ -322,6 +343,7 @@ export function useNewSessionFlow(
|
|
|
322
343
|
org,
|
|
323
344
|
harness,
|
|
324
345
|
executionTarget,
|
|
346
|
+
adapter,
|
|
325
347
|
validModelId,
|
|
326
348
|
workspace,
|
|
327
349
|
mcpServerUsages,
|
|
@@ -24,6 +24,7 @@ import { useSubmitApproval } from "../execution/useSubmitApproval";
|
|
|
24
24
|
import { useSession } from "./useSession";
|
|
25
25
|
import { useSessionExecutions } from "./useSessionExecutions";
|
|
26
26
|
import { useUpdateSession } from "./useUpdateSession";
|
|
27
|
+
import { useLocalSessionWorker } from "./useLocalSessionWorker";
|
|
27
28
|
import {
|
|
28
29
|
specWorkspaceToInput,
|
|
29
30
|
specMcpUsagesToInput,
|
|
@@ -83,6 +84,12 @@ export interface SendFollowUpOptions {
|
|
|
83
84
|
* - `"plan"`: read-only analysis, no file mutations.
|
|
84
85
|
*/
|
|
85
86
|
readonly interactionMode?: "agent" | "plan";
|
|
87
|
+
/**
|
|
88
|
+
* Auto-approve every tool call for this execution (bypass the HITL gate).
|
|
89
|
+
*
|
|
90
|
+
* @see {@link CreateAgentExecutionInput.autoApproveAll}
|
|
91
|
+
*/
|
|
92
|
+
readonly autoApproveAll?: boolean;
|
|
86
93
|
/**
|
|
87
94
|
* Workspace-relative file paths the user wants the agent to focus on.
|
|
88
95
|
*
|
|
@@ -191,6 +198,12 @@ export interface UseSessionConversationReturn {
|
|
|
191
198
|
* Platform builders get the complete conversation loop without
|
|
192
199
|
* reimplementing orchestration logic.
|
|
193
200
|
*
|
|
201
|
+
* For local execution, this hook also owns the session's runner worker
|
|
202
|
+
* lifecycle: while the session is open it keeps a worker polling the
|
|
203
|
+
* session task queue, and it tears the worker down on close. This is a
|
|
204
|
+
* no-op unless a `runnerAdapter` is configured and the session runs
|
|
205
|
+
* locally, so it is safe in every environment.
|
|
206
|
+
*
|
|
194
207
|
* @param sessionId - Session to display and converse in. Pass `null` to skip.
|
|
195
208
|
* @param org - Organization slug for creating follow-up executions.
|
|
196
209
|
*
|
|
@@ -251,6 +264,10 @@ export function useSessionConversation(
|
|
|
251
264
|
clearError: clearApprovalError,
|
|
252
265
|
} = useSubmitApproval();
|
|
253
266
|
|
|
267
|
+
// Local execution: attach the session's runner worker while it is open and
|
|
268
|
+
// detach it on close. No-op for cloud sessions or when no adapter is set.
|
|
269
|
+
useLocalSessionWorker(sessionId, session);
|
|
270
|
+
|
|
254
271
|
const [pendingExecutionId, setPendingExecutionId] = useState<string | null>(
|
|
255
272
|
null,
|
|
256
273
|
);
|
|
@@ -382,6 +399,7 @@ export function useSessionConversation(
|
|
|
382
399
|
runtimeEnv: options?.runtimeEnv,
|
|
383
400
|
attachments: options?.attachments,
|
|
384
401
|
interactionMode: options?.interactionMode,
|
|
402
|
+
autoApproveAll: options?.autoApproveAll,
|
|
385
403
|
workspaceFileRefs: options?.workspaceFileRefs,
|
|
386
404
|
});
|
|
387
405
|
setPendingExecutionId(result.executionId);
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
4
4
|
import type { McpServerUsageInput, ResourceRef } from "@stigmer/sdk";
|
|
5
|
+
import { ApprovalAction } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
5
6
|
import type { AgentResolution } from "../agent";
|
|
6
7
|
import { useDefaultAgent } from "../agent";
|
|
7
8
|
import { useStigmer } from "../hooks";
|
|
@@ -87,6 +88,31 @@ export interface UseSessionPageFlowReturn {
|
|
|
87
88
|
/** Session variables (per-execution secrets) manager. */
|
|
88
89
|
readonly sessionVariables: UseSessionVariablesReturn;
|
|
89
90
|
|
|
91
|
+
/**
|
|
92
|
+
* Session-scoped "auto-approve tool calls" preference.
|
|
93
|
+
*
|
|
94
|
+
* `false` by default. Flipped to `true` when the user chooses
|
|
95
|
+
* "Approve & don't ask again" at an approval gate (see {@link submitApproval}),
|
|
96
|
+
* and carried into every subsequent follow-up via {@link handleSubmit}. Held in
|
|
97
|
+
* memory only — reset on reload / new session, never persisted server-side.
|
|
98
|
+
*/
|
|
99
|
+
readonly autoApproveAll: boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Toggle the session-scoped auto-approve preference. The reversible "Turn off"
|
|
102
|
+
* control in the UI calls this with `false`.
|
|
103
|
+
*/
|
|
104
|
+
readonly setAutoApproveAll: (value: boolean) => void;
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Submit an approval decision for a pending tool call.
|
|
108
|
+
*
|
|
109
|
+
* Wraps {@link UseSessionConversationReturn.submitApproval}: when the action is
|
|
110
|
+
* `APPROVAL_ACTION_APPROVE_ALL`, it also flips the session-scoped
|
|
111
|
+
* {@link autoApproveAll} preference so future follow-ups skip the gate. The
|
|
112
|
+
* server independently auto-approves the rest of the current execution.
|
|
113
|
+
*/
|
|
114
|
+
readonly submitApproval: UseSessionConversationReturn["submitApproval"];
|
|
115
|
+
|
|
90
116
|
/**
|
|
91
117
|
* Submit a follow-up message. Handles agent override resolution
|
|
92
118
|
* (if the user changed the agent mid-session) and delegates to
|
|
@@ -186,6 +212,24 @@ export function useSessionPageFlow(
|
|
|
186
212
|
const [skillRefs, setSkillRefs] = useState<ResourceRef[]>([]);
|
|
187
213
|
const initialSyncDone = useRef(false);
|
|
188
214
|
|
|
215
|
+
// Session-scoped auto-approve, set at the approval gate (not pre-armed in the
|
|
216
|
+
// composer). Lives only in memory for the life of this page — reset on reload.
|
|
217
|
+
const [autoApproveAll, setAutoApproveAll] = useState(false);
|
|
218
|
+
|
|
219
|
+
const submitApproval = useCallback<UseSessionConversationReturn["submitApproval"]>(
|
|
220
|
+
async (toolCallId, action, comment) => {
|
|
221
|
+
// "Approve & don't ask again": remember the choice for the rest of this
|
|
222
|
+
// live session so future follow-ups carry auto_approve_all. The control
|
|
223
|
+
// plane separately resolves the current execution's remaining gates and
|
|
224
|
+
// the runner skips the gate for the rest of that run.
|
|
225
|
+
if (action === ApprovalAction.APPROVE_ALL) {
|
|
226
|
+
setAutoApproveAll(true);
|
|
227
|
+
}
|
|
228
|
+
await conv.submitApproval(toolCallId, action, comment);
|
|
229
|
+
},
|
|
230
|
+
[conv.submitApproval],
|
|
231
|
+
);
|
|
232
|
+
|
|
189
233
|
// -------------------------------------------------------------------------
|
|
190
234
|
// Agent — derive from session, allow mid-session changes
|
|
191
235
|
// -------------------------------------------------------------------------
|
|
@@ -283,12 +327,15 @@ export function useSessionPageFlow(
|
|
|
283
327
|
runtimeEnv: context?.runtimeEnv,
|
|
284
328
|
attachments: context?.attachments,
|
|
285
329
|
interactionMode: context?.interactionMode,
|
|
330
|
+
// Sourced from the session-scoped preference set at the approval gate,
|
|
331
|
+
// not from the composer (the pre-arm toggle was removed).
|
|
332
|
+
autoApproveAll: autoApproveAll || undefined,
|
|
286
333
|
workspaceFileRefs: context?.workspaceFileRefs,
|
|
287
334
|
});
|
|
288
335
|
|
|
289
336
|
sessionVariables.clear();
|
|
290
337
|
},
|
|
291
|
-
[conv.sendFollowUp, modelId, workspace, mcpServerUsages, skillRefs, sessionVariables.clear, resolution, agentRef, sessionInstanceId, stigmer],
|
|
338
|
+
[conv.sendFollowUp, modelId, workspace, mcpServerUsages, skillRefs, sessionVariables.clear, resolution, agentRef, sessionInstanceId, stigmer, autoApproveAll],
|
|
292
339
|
);
|
|
293
340
|
|
|
294
341
|
// -------------------------------------------------------------------------
|
|
@@ -333,6 +380,9 @@ export function useSessionPageFlow(
|
|
|
333
380
|
setSkillRefs,
|
|
334
381
|
workspace,
|
|
335
382
|
sessionVariables,
|
|
383
|
+
autoApproveAll,
|
|
384
|
+
setAutoApproveAll,
|
|
385
|
+
submitApproval,
|
|
336
386
|
handleSubmit,
|
|
337
387
|
displayExecution,
|
|
338
388
|
allExecutions,
|
|
@@ -48,8 +48,8 @@ function makeMockAdapter(): RunnerAdapter & { calls: string[][] } {
|
|
|
48
48
|
const calls: string[][] = [];
|
|
49
49
|
return {
|
|
50
50
|
calls,
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
onSessionOpened: vi.fn(async (id: string) => { calls.push(["onSessionOpened", id]); }),
|
|
52
|
+
onSessionClosed: vi.fn(async (id: string) => { calls.push(["onSessionClosed", id]); }),
|
|
53
53
|
onWorkflowExecutionCreated: vi.fn(async (id: string) => { calls.push(["onWorkflowExecutionCreated", id]); }),
|
|
54
54
|
onWorkflowExecutionTerminated: vi.fn(async (id: string) => { calls.push(["onWorkflowExecutionTerminated", id]); }),
|
|
55
55
|
};
|