@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
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { create } from "@bufbuild/protobuf";
|
|
3
|
+
import {
|
|
4
|
+
AgentExecutionSchema,
|
|
5
|
+
AgentExecutionStatusSchema,
|
|
6
|
+
type AgentExecution,
|
|
7
|
+
} from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
|
|
8
|
+
import { AgentExecutionSpecSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/spec_pb";
|
|
9
|
+
import { ApiResourceMetadataSchema } from "@stigmer/protos/ai/stigmer/commons/apiresource/metadata_pb";
|
|
10
|
+
import {
|
|
11
|
+
AgentMessageSchema,
|
|
12
|
+
ToolCallSchema,
|
|
13
|
+
} from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/message_pb";
|
|
14
|
+
import { SubAgentExecutionSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/subagent_pb";
|
|
15
|
+
import {
|
|
16
|
+
ExecutionPhase,
|
|
17
|
+
MessageType,
|
|
18
|
+
SubAgentStatus,
|
|
19
|
+
} from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
20
|
+
import { buildThreadItems } from "../MessageThread";
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Guards the correlation that makes a delegated sub-agent appear in the live
|
|
24
|
+
* thread: a parent MESSAGE_AI carrying a "task" tool call becomes a "sub-agent"
|
|
25
|
+
* thread item only when a SubAgentExecution with the same id is present in
|
|
26
|
+
* status.sub_agent_executions.
|
|
27
|
+
*
|
|
28
|
+
* This is the UI side of the cursor mid-stream visibility fix. Before the fix,
|
|
29
|
+
* the runner streamed an empty sub_agent_executions list while the parent ran,
|
|
30
|
+
* so the task tool call had no match — it was hidden AND no card rendered (the
|
|
31
|
+
* "idle screen"). Persisting the IN_PROGRESS sub-agent mid-stream makes the
|
|
32
|
+
* match succeed, so the card renders live.
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
function makeAiWithTaskCall(taskCallId: string): ReturnType<typeof create<typeof AgentMessageSchema>> {
|
|
36
|
+
const msg = create(AgentMessageSchema);
|
|
37
|
+
msg.type = MessageType.MESSAGE_AI;
|
|
38
|
+
msg.content = "Delegating to the researcher.";
|
|
39
|
+
const tc = create(ToolCallSchema);
|
|
40
|
+
tc.id = taskCallId;
|
|
41
|
+
tc.name = "task";
|
|
42
|
+
msg.toolCalls = [tc];
|
|
43
|
+
return msg;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function makeSubAgent(id: string, status: SubAgentStatus): ReturnType<typeof create<typeof SubAgentExecutionSchema>> {
|
|
47
|
+
const sa = create(SubAgentExecutionSchema);
|
|
48
|
+
sa.id = id;
|
|
49
|
+
sa.name = "Research renewable energy";
|
|
50
|
+
sa.subject = "Research renewable energy";
|
|
51
|
+
sa.status = status;
|
|
52
|
+
return sa;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function makeExecution(opts: {
|
|
56
|
+
id: string;
|
|
57
|
+
phase: ExecutionPhase;
|
|
58
|
+
messages: ReturnType<typeof create<typeof AgentMessageSchema>>[];
|
|
59
|
+
subAgents?: ReturnType<typeof create<typeof SubAgentExecutionSchema>>[];
|
|
60
|
+
}): AgentExecution {
|
|
61
|
+
const exec = create(AgentExecutionSchema);
|
|
62
|
+
|
|
63
|
+
const meta = create(ApiResourceMetadataSchema);
|
|
64
|
+
meta.id = opts.id;
|
|
65
|
+
exec.metadata = meta;
|
|
66
|
+
|
|
67
|
+
const spec = create(AgentExecutionSpecSchema);
|
|
68
|
+
spec.message = "Please delegate to the researcher.";
|
|
69
|
+
exec.spec = spec;
|
|
70
|
+
|
|
71
|
+
const status = create(AgentExecutionStatusSchema);
|
|
72
|
+
status.phase = opts.phase;
|
|
73
|
+
status.messages = opts.messages;
|
|
74
|
+
if (opts.subAgents) {
|
|
75
|
+
status.subAgentExecutions = opts.subAgents;
|
|
76
|
+
}
|
|
77
|
+
exec.status = status;
|
|
78
|
+
|
|
79
|
+
return exec;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
describe("buildThreadItems sub-agent correlation", () => {
|
|
83
|
+
it("renders an IN_PROGRESS sub-agent as a sub-agent item while the parent is still running", () => {
|
|
84
|
+
const taskId = "tool_live_1";
|
|
85
|
+
const exec = makeExecution({
|
|
86
|
+
id: "exec-live",
|
|
87
|
+
phase: ExecutionPhase.EXECUTION_IN_PROGRESS,
|
|
88
|
+
messages: [makeAiWithTaskCall(taskId)],
|
|
89
|
+
subAgents: [makeSubAgent(taskId, SubAgentStatus.SUB_AGENT_IN_PROGRESS)],
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
const items = buildThreadItems([exec], exec, null, false, undefined);
|
|
93
|
+
|
|
94
|
+
const subItem = items.find((i) => i.kind === "sub-agent");
|
|
95
|
+
expect(subItem).toBeDefined();
|
|
96
|
+
if (subItem?.kind !== "sub-agent") throw new Error("expected sub-agent item");
|
|
97
|
+
expect(subItem.subAgentExecution.id).toBe(taskId);
|
|
98
|
+
expect(subItem.subAgentExecution.status).toBe(
|
|
99
|
+
SubAgentStatus.SUB_AGENT_IN_PROGRESS,
|
|
100
|
+
);
|
|
101
|
+
expect(subItem.key).toBe(`sa-${taskId}`);
|
|
102
|
+
|
|
103
|
+
// The "task" tool call must never surface as a normal tool row — it is
|
|
104
|
+
// represented by the sub-agent card.
|
|
105
|
+
const toolGroups = items.filter((i) => i.kind === "tool-group");
|
|
106
|
+
for (const g of toolGroups) {
|
|
107
|
+
if (g.kind !== "tool-group") continue;
|
|
108
|
+
expect(g.toolCalls.some((tc) => tc.name === "task")).toBe(false);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
it("renders a COMPLETED sub-agent as a sub-agent item", () => {
|
|
113
|
+
const taskId = "tool_done_1";
|
|
114
|
+
const exec = makeExecution({
|
|
115
|
+
id: "exec-done",
|
|
116
|
+
phase: ExecutionPhase.EXECUTION_COMPLETED,
|
|
117
|
+
messages: [makeAiWithTaskCall(taskId)],
|
|
118
|
+
subAgents: [makeSubAgent(taskId, SubAgentStatus.SUB_AGENT_COMPLETED)],
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
const items = buildThreadItems([exec], null, null, false, undefined);
|
|
122
|
+
|
|
123
|
+
const subItem = items.find((i) => i.kind === "sub-agent");
|
|
124
|
+
expect(subItem).toBeDefined();
|
|
125
|
+
if (subItem?.kind !== "sub-agent") throw new Error("expected sub-agent item");
|
|
126
|
+
expect(subItem.subAgentExecution.status).toBe(
|
|
127
|
+
SubAgentStatus.SUB_AGENT_COMPLETED,
|
|
128
|
+
);
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
it("documents the pre-fix invisible state: a task call with no matching sub-agent produces neither a card nor a tool row", () => {
|
|
132
|
+
// This is exactly the buggy cursor mid-stream state the runner fix
|
|
133
|
+
// eliminates: the task tool call exists in messages, but
|
|
134
|
+
// sub_agent_executions is still empty, so no sub-agent card renders and
|
|
135
|
+
// the task tool call is suppressed — the "nothing is happening" screen.
|
|
136
|
+
const taskId = "tool_orphan_1";
|
|
137
|
+
const exec = makeExecution({
|
|
138
|
+
id: "exec-orphan",
|
|
139
|
+
phase: ExecutionPhase.EXECUTION_IN_PROGRESS,
|
|
140
|
+
messages: [makeAiWithTaskCall(taskId)],
|
|
141
|
+
subAgents: [],
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
const items = buildThreadItems([exec], exec, null, false, undefined);
|
|
145
|
+
|
|
146
|
+
expect(items.some((i) => i.kind === "sub-agent")).toBe(false);
|
|
147
|
+
const toolGroups = items.filter((i) => i.kind === "tool-group");
|
|
148
|
+
for (const g of toolGroups) {
|
|
149
|
+
if (g.kind !== "tool-group") continue;
|
|
150
|
+
expect(g.toolCalls.some((tc) => tc.name === "task")).toBe(false);
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
});
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { renderHook } from "@testing-library/react";
|
|
3
|
+
import { create, type JsonObject } from "@bufbuild/protobuf";
|
|
4
|
+
import { ToolCallSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/message_pb";
|
|
5
|
+
import { ToolCallStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
6
|
+
import { ToolKind } from "@stigmer/sdk";
|
|
7
|
+
import { useToolPresentation, registerToolPresenter } from "../tool-presenter";
|
|
8
|
+
|
|
9
|
+
function makeToolCall(opts: {
|
|
10
|
+
name: string;
|
|
11
|
+
args?: Record<string, unknown>;
|
|
12
|
+
result?: string;
|
|
13
|
+
mcpServerSlug?: string;
|
|
14
|
+
status?: ToolCallStatus;
|
|
15
|
+
}) {
|
|
16
|
+
return create(ToolCallSchema, {
|
|
17
|
+
id: opts.name,
|
|
18
|
+
name: opts.name,
|
|
19
|
+
args: (opts.args ?? {}) as JsonObject,
|
|
20
|
+
result: opts.result ?? "",
|
|
21
|
+
mcpServerSlug: opts.mcpServerSlug ?? "",
|
|
22
|
+
status: opts.status ?? ToolCallStatus.TOOL_CALL_COMPLETED,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
describe("useToolPresentation", () => {
|
|
27
|
+
it("classifies a Cursor PascalCase edit tool (the bug this fixes)", () => {
|
|
28
|
+
const tc = makeToolCall({
|
|
29
|
+
name: "StrReplace",
|
|
30
|
+
args: { path: "/x.ts", old_string: "a", new_string: "b" },
|
|
31
|
+
result: '{"status":"success","value":{"linesAdded":1,"linesRemoved":1}}',
|
|
32
|
+
});
|
|
33
|
+
const { result } = renderHook(() => useToolPresentation(tc));
|
|
34
|
+
|
|
35
|
+
expect(result.current.kind).toBe(ToolKind.FILE_EDIT);
|
|
36
|
+
expect(result.current.category).toBe("edit");
|
|
37
|
+
expect(result.current.label).toBe("Edit");
|
|
38
|
+
expect(result.current.result.type).toBe("diff");
|
|
39
|
+
expect(result.current.resultSummary).toBe("+1 -1");
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it("summarizes a failed shell exit code", () => {
|
|
43
|
+
const tc = makeToolCall({
|
|
44
|
+
name: "Shell",
|
|
45
|
+
args: { command: "false" },
|
|
46
|
+
result: "oops\n[Command failed with exit code 3]",
|
|
47
|
+
});
|
|
48
|
+
const { result } = renderHook(() => useToolPresentation(tc));
|
|
49
|
+
|
|
50
|
+
expect(result.current.kind).toBe(ToolKind.SHELL);
|
|
51
|
+
expect(result.current.result.type).toBe("terminal");
|
|
52
|
+
expect(result.current.resultSummary).toBe("exit 3");
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it("extracts the primary argument", () => {
|
|
56
|
+
const tc = makeToolCall({ name: "Shell", args: { command: "ls -la" } });
|
|
57
|
+
const { result } = renderHook(() => useToolPresentation(tc));
|
|
58
|
+
expect(result.current.primaryArg).toBe("ls -la");
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
it("honors a registered custom presenter override and restores on dispose", () => {
|
|
62
|
+
const dispose = registerToolPresenter(ToolKind.SHELL, {
|
|
63
|
+
label: () => "Run command",
|
|
64
|
+
});
|
|
65
|
+
try {
|
|
66
|
+
const tc = makeToolCall({ name: "Shell", args: { command: "ls" } });
|
|
67
|
+
const { result } = renderHook(() => useToolPresentation(tc));
|
|
68
|
+
expect(result.current.label).toBe("Run command");
|
|
69
|
+
} finally {
|
|
70
|
+
dispose();
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// After dispose, the default label is restored — no global leakage.
|
|
74
|
+
const tc = makeToolCall({ name: "Shell", args: { command: "ls" } });
|
|
75
|
+
const { result } = renderHook(() => useToolPresentation(tc));
|
|
76
|
+
expect(result.current.label).toBe("Shell");
|
|
77
|
+
});
|
|
78
|
+
});
|
package/src/execution/index.ts
CHANGED
|
@@ -32,6 +32,9 @@ export type { SummarizationCardProps } from "./SummarizationCard";
|
|
|
32
32
|
export { PlanCompletionCard } from "./PlanCompletionCard";
|
|
33
33
|
export type { PlanCompletionCardProps } from "./PlanCompletionCard";
|
|
34
34
|
|
|
35
|
+
export { PlanArtifactCard } from "./PlanArtifactCard";
|
|
36
|
+
export type { PlanArtifactCardProps } from "./PlanArtifactCard";
|
|
37
|
+
|
|
35
38
|
export { useExecutionArtifacts } from "./useExecutionArtifacts";
|
|
36
39
|
export type { UseExecutionArtifactsReturn } from "./useExecutionArtifacts";
|
|
37
40
|
|
|
@@ -79,6 +82,16 @@ export type {
|
|
|
79
82
|
export { ToolArgsView } from "./ToolArgsView";
|
|
80
83
|
export type { ToolArgsViewProps } from "./ToolArgsView";
|
|
81
84
|
|
|
85
|
+
export { ResultView, summarizeResultView } from "./ResultView";
|
|
86
|
+
export type { ResultViewProps } from "./ResultView";
|
|
87
|
+
|
|
88
|
+
export {
|
|
89
|
+
useToolPresentation,
|
|
90
|
+
registerToolPresenter,
|
|
91
|
+
getToolPresenter,
|
|
92
|
+
} from "./tool-presenter";
|
|
93
|
+
export type { ToolPresentation, ToolPresenter } from "./tool-presenter";
|
|
94
|
+
|
|
82
95
|
export {
|
|
83
96
|
CollapsibleCode,
|
|
84
97
|
CollapsiblePre,
|
|
@@ -150,6 +163,9 @@ export type { WriteBacksWidgetProps } from "./WriteBacksWidget";
|
|
|
150
163
|
|
|
151
164
|
export {
|
|
152
165
|
resolveToolCategory,
|
|
166
|
+
resolveToolCategoryFromCall,
|
|
167
|
+
resolveToolCategoryFromKind,
|
|
168
|
+
toolKindToCategoryInfo,
|
|
153
169
|
extractPrimaryArg,
|
|
154
170
|
extractPrimaryArgFromPreview,
|
|
155
171
|
humanizeToolName,
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import type { ToolCall } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/message_pb";
|
|
2
2
|
import type { JsonObject } from "@bufbuild/protobuf";
|
|
3
|
+
import { ToolKind, resolveToolKind, resolveToolKindByName } from "@stigmer/sdk";
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Discriminated tool categories for type-aware rendering.
|
|
6
7
|
*
|
|
7
|
-
*
|
|
8
|
-
* `
|
|
9
|
-
*
|
|
10
|
-
* `"mcp"` covers tools originating from an
|
|
11
|
-
* names are dynamic
|
|
12
|
-
* {@link TOOL_DISPLAY_MAP}.
|
|
8
|
+
* This is the presentation taxonomy. Classification (name -> kind) lives in
|
|
9
|
+
* `@stigmer/sdk`'s `resolveToolKind` (single source of truth, shared with the
|
|
10
|
+
* runner and Go CLI); this file maps each {@link ToolKind} to its presentation
|
|
11
|
+
* metadata (label, primary argument). `"mcp"` covers tools originating from an
|
|
12
|
+
* MCP server, whose names are dynamic.
|
|
13
13
|
*/
|
|
14
14
|
export type ToolCategory =
|
|
15
15
|
| "shell"
|
|
@@ -19,6 +19,8 @@ export type ToolCategory =
|
|
|
19
19
|
| "delete"
|
|
20
20
|
| "search"
|
|
21
21
|
| "list"
|
|
22
|
+
| "fetch"
|
|
23
|
+
| "web-search"
|
|
22
24
|
| "think"
|
|
23
25
|
| "sub-agent"
|
|
24
26
|
| "internal"
|
|
@@ -37,77 +39,45 @@ export interface ToolCategoryInfo {
|
|
|
37
39
|
readonly fallbackArgFields: readonly string[];
|
|
38
40
|
}
|
|
39
41
|
|
|
40
|
-
interface
|
|
42
|
+
interface KindDisplayEntry {
|
|
41
43
|
readonly category: ToolCategory;
|
|
42
44
|
readonly label: string;
|
|
43
45
|
readonly primaryField: string;
|
|
44
46
|
readonly fallbackFields?: readonly string[];
|
|
45
47
|
}
|
|
46
48
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
[
|
|
52
|
-
[
|
|
53
|
-
[
|
|
54
|
-
|
|
55
|
-
[
|
|
56
|
-
[
|
|
57
|
-
|
|
58
|
-
[
|
|
59
|
-
[
|
|
60
|
-
[
|
|
61
|
-
[
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
["edit_file", { category: "edit", label: "Edit", primaryField: "path", fallbackFields: ["file_path", "file", "filename"] }],
|
|
65
|
-
|
|
66
|
-
["delete_file", { category: "delete", label: "Delete", primaryField: "path", fallbackFields: ["file_path", "file", "filename"] }],
|
|
67
|
-
["remove_file", { category: "delete", label: "Delete", primaryField: "path", fallbackFields: ["file_path", "file", "filename"] }],
|
|
68
|
-
|
|
69
|
-
["glob", { category: "search", label: "Find", primaryField: "pattern" }],
|
|
70
|
-
["grep", { category: "search", label: "Search", primaryField: "pattern" }],
|
|
71
|
-
|
|
72
|
-
["list_directory", { category: "list", label: "List", primaryField: "path" }],
|
|
73
|
-
["ls", { category: "list", label: "List", primaryField: "path" }],
|
|
74
|
-
|
|
75
|
-
["think", { category: "think", label: "Thinking", primaryField: "thought" }],
|
|
76
|
-
|
|
77
|
-
["task", { category: "sub-agent", label: "Sub-agent", primaryField: "description", fallbackFields: ["prompt"] }],
|
|
78
|
-
|
|
79
|
-
["updateTodos", { category: "internal", label: "Todos", primaryField: "todos" }],
|
|
80
|
-
["TodoWrite", { category: "internal", label: "Todos", primaryField: "todos" }],
|
|
81
|
-
["write_todos", { category: "internal", label: "Todos", primaryField: "todos" }],
|
|
82
|
-
]);
|
|
49
|
+
// Presentation metadata per ToolKind. Classification (name -> kind) is owned by
|
|
50
|
+
// @stigmer/sdk; this table only describes how each kind is shown. MCP and
|
|
51
|
+
// unknown are resolved dynamically (label derived from the tool name).
|
|
52
|
+
const KIND_DISPLAY: Partial<Record<ToolKind, KindDisplayEntry>> = {
|
|
53
|
+
[ToolKind.FILE_READ]: { category: "read", label: "Read", primaryField: "path", fallbackFields: ["file_path", "file"] },
|
|
54
|
+
[ToolKind.FILE_WRITE]: { category: "write", label: "Write", primaryField: "path", fallbackFields: ["file_path", "file", "filename"] },
|
|
55
|
+
[ToolKind.FILE_EDIT]: { category: "edit", label: "Edit", primaryField: "path", fallbackFields: ["file_path", "file", "filename"] },
|
|
56
|
+
[ToolKind.FILE_DELETE]: { category: "delete", label: "Delete", primaryField: "path", fallbackFields: ["file_path", "file", "filename"] },
|
|
57
|
+
[ToolKind.SHELL]: { category: "shell", label: "Shell", primaryField: "command" },
|
|
58
|
+
[ToolKind.SEARCH]: { category: "search", label: "Search", primaryField: "pattern", fallbackFields: ["query", "q"] },
|
|
59
|
+
[ToolKind.LIST]: { category: "list", label: "List", primaryField: "path" },
|
|
60
|
+
[ToolKind.FETCH]: { category: "fetch", label: "Fetch", primaryField: "url", fallbackFields: ["uri"] },
|
|
61
|
+
[ToolKind.WEB_SEARCH]: { category: "web-search", label: "Web Search", primaryField: "query", fallbackFields: ["q", "search_term"] },
|
|
62
|
+
[ToolKind.THINK]: { category: "think", label: "Thinking", primaryField: "thought" },
|
|
63
|
+
[ToolKind.SUBAGENT]: { category: "sub-agent", label: "Sub-agent", primaryField: "description", fallbackFields: ["prompt"] },
|
|
64
|
+
[ToolKind.TODO]: { category: "internal", label: "Todos", primaryField: "todos" },
|
|
65
|
+
};
|
|
83
66
|
|
|
84
67
|
/**
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
* When `mcpServerSlug` is provided and the tool name is not a
|
|
89
|
-
* known built-in, the tool is categorised as `"mcp"` with a
|
|
90
|
-
* human-readable label derived from the raw tool name.
|
|
91
|
-
*
|
|
92
|
-
* Falls back to `"unknown"` only when the tool is neither
|
|
93
|
-
* built-in nor MCP-originated.
|
|
94
|
-
*/
|
|
95
|
-
/**
|
|
96
|
-
* Returns true if the tool is an internal state management tool that
|
|
97
|
-
* should not be displayed in the message thread. Internal tools are
|
|
98
|
-
* rendered through dedicated UX surfaces (e.g. TodoList sidebar)
|
|
99
|
-
* rather than as expandable tool call items.
|
|
68
|
+
* Returns true if the tool is an internal state-management tool that should not
|
|
69
|
+
* appear in the message thread (todos are rendered through a dedicated surface).
|
|
100
70
|
*/
|
|
101
71
|
export function isInternalTool(toolName: string): boolean {
|
|
102
|
-
|
|
103
|
-
return entry?.category === "internal";
|
|
72
|
+
return resolveToolKindByName(toolName) === ToolKind.TODO;
|
|
104
73
|
}
|
|
105
74
|
|
|
106
|
-
|
|
75
|
+
/** Maps a {@link ToolKind} to its presentation metadata. */
|
|
76
|
+
export function toolKindToCategoryInfo(
|
|
77
|
+
kind: ToolKind,
|
|
107
78
|
toolName: string,
|
|
108
|
-
mcpServerSlug?: string,
|
|
109
79
|
): ToolCategoryInfo {
|
|
110
|
-
const entry =
|
|
80
|
+
const entry = KIND_DISPLAY[kind];
|
|
111
81
|
if (entry) {
|
|
112
82
|
return {
|
|
113
83
|
category: entry.category,
|
|
@@ -117,7 +87,7 @@ export function resolveToolCategory(
|
|
|
117
87
|
};
|
|
118
88
|
}
|
|
119
89
|
|
|
120
|
-
if (
|
|
90
|
+
if (kind === ToolKind.MCP) {
|
|
121
91
|
return {
|
|
122
92
|
category: "mcp",
|
|
123
93
|
label: humanizeToolName(toolName),
|
|
@@ -128,12 +98,56 @@ export function resolveToolCategory(
|
|
|
128
98
|
|
|
129
99
|
return {
|
|
130
100
|
category: "unknown",
|
|
131
|
-
label: toolName,
|
|
101
|
+
label: humanizeToolName(toolName),
|
|
132
102
|
primaryArgField: "",
|
|
133
103
|
fallbackArgFields: [],
|
|
134
104
|
};
|
|
135
105
|
}
|
|
136
106
|
|
|
107
|
+
/**
|
|
108
|
+
* Resolves a tool's presentation category from its name + MCP slug.
|
|
109
|
+
*
|
|
110
|
+
* Classification is delegated to `@stigmer/sdk`'s name-based resolver (the same
|
|
111
|
+
* table the runner and Go CLI use), then mapped to presentation metadata. When
|
|
112
|
+
* the caller has the full {@link ToolCall}, prefer {@link resolveToolCategoryFromCall},
|
|
113
|
+
* which also honours the wire `tool_kind` for forward compatibility.
|
|
114
|
+
*/
|
|
115
|
+
export function resolveToolCategory(
|
|
116
|
+
toolName: string,
|
|
117
|
+
mcpServerSlug?: string,
|
|
118
|
+
): ToolCategoryInfo {
|
|
119
|
+
return toolKindToCategoryInfo(
|
|
120
|
+
resolveToolKindByName(toolName, mcpServerSlug),
|
|
121
|
+
toolName,
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Like {@link resolveToolCategory} but uses the wire `tool_kind` when present,
|
|
127
|
+
* falling back to name-based resolution for legacy executions.
|
|
128
|
+
*/
|
|
129
|
+
export function resolveToolCategoryFromCall(toolCall: ToolCall): ToolCategoryInfo {
|
|
130
|
+
return toolKindToCategoryInfo(resolveToolKind(toolCall), toolCall.name);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Resolves presentation metadata from an explicit wire {@link ToolKind} plus the
|
|
135
|
+
* tool name and MCP slug. Used by surfaces that carry a denormalized `tool_kind`
|
|
136
|
+
* but not a full {@link ToolCall} — notably `PendingApproval`. Falls back to
|
|
137
|
+
* name-based resolution when the kind is unset (legacy executions).
|
|
138
|
+
*/
|
|
139
|
+
export function resolveToolCategoryFromKind(
|
|
140
|
+
toolKind: ToolKind,
|
|
141
|
+
toolName: string,
|
|
142
|
+
mcpServerSlug?: string,
|
|
143
|
+
): ToolCategoryInfo {
|
|
144
|
+
const kind =
|
|
145
|
+
toolKind !== ToolKind.UNSPECIFIED
|
|
146
|
+
? toolKind
|
|
147
|
+
: resolveToolKindByName(toolName, mcpServerSlug);
|
|
148
|
+
return toolKindToCategoryInfo(kind, toolName);
|
|
149
|
+
}
|
|
150
|
+
|
|
137
151
|
/**
|
|
138
152
|
* Converts a snake_case or camelCase tool name into a
|
|
139
153
|
* human-readable title.
|
|
@@ -188,7 +202,7 @@ function extractArgValue(
|
|
|
188
202
|
* Returns `null` when the tool has no recognised arguments.
|
|
189
203
|
*/
|
|
190
204
|
export function extractPrimaryArg(toolCall: ToolCall): string | null {
|
|
191
|
-
const info =
|
|
205
|
+
const info = resolveToolCategoryFromCall(toolCall);
|
|
192
206
|
const result = extractArgValue(
|
|
193
207
|
toolCall.args,
|
|
194
208
|
info.primaryArgField,
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// Headless presentation layer for tool calls.
|
|
4
|
+
//
|
|
5
|
+
// useToolPresentation turns a ToolCall into everything a renderer needs — kind,
|
|
6
|
+
// label, primary argument, a normalized result view, and a one-line summary —
|
|
7
|
+
// without rendering anything. Styled components (ToolCallItem, ToolCallDetail)
|
|
8
|
+
// consume it; platform builders can consume it to build their own tool UI.
|
|
9
|
+
//
|
|
10
|
+
// The registry lets a consumer override the label or summary for a ToolKind
|
|
11
|
+
// (e.g. a product that wants "Run command" instead of "Shell") without forking
|
|
12
|
+
// the components. Result interpretation stays in @stigmer/sdk; this is the React
|
|
13
|
+
// presentation seam.
|
|
14
|
+
|
|
15
|
+
import { useMemo } from "react";
|
|
16
|
+
import type { ToolCall } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/message_pb";
|
|
17
|
+
import { ToolKind, resolveToolKind, normalizeToolResult } from "@stigmer/sdk";
|
|
18
|
+
import type { ToolResultView } from "@stigmer/sdk";
|
|
19
|
+
import { resolveToolCategoryFromCall, extractPrimaryArg } from "./tool-categories";
|
|
20
|
+
import type { ToolCategory } from "./tool-categories";
|
|
21
|
+
import { summarizeResultView } from "./ResultView";
|
|
22
|
+
|
|
23
|
+
/** Optional per-kind overrides for label and summary. */
|
|
24
|
+
export interface ToolPresenter {
|
|
25
|
+
/** Overrides the display label (e.g. "Shell" -> "Run command"). */
|
|
26
|
+
readonly label?: (toolCall: ToolCall) => string;
|
|
27
|
+
/** Overrides the one-line result summary suffix. */
|
|
28
|
+
readonly summary?: (toolCall: ToolCall, result: ToolResultView) => string | null;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const registry = new Map<ToolKind, ToolPresenter>();
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Registers a custom presenter for a {@link ToolKind}, overriding the default
|
|
35
|
+
* label and/or summary. Call once at app startup. This is the extension point
|
|
36
|
+
* for platform builders embedding the execution UI who want product-specific
|
|
37
|
+
* wording without forking the components.
|
|
38
|
+
*
|
|
39
|
+
* Returns a disposer that unregisters the presenter, restoring the previous one
|
|
40
|
+
* for that kind (or the default). Most apps register once at startup and ignore
|
|
41
|
+
* it; tests and dynamic hosts use it to avoid leaking global state.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```ts
|
|
45
|
+
* import { registerToolPresenter, ToolKind } from "@stigmer/react";
|
|
46
|
+
*
|
|
47
|
+
* const dispose = registerToolPresenter(ToolKind.SHELL, {
|
|
48
|
+
* label: () => "Run command",
|
|
49
|
+
* summary: (_tc, result) =>
|
|
50
|
+
* result.type === "terminal" && result.exitCode ? `failed (${result.exitCode})` : null,
|
|
51
|
+
* });
|
|
52
|
+
* // later: dispose();
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export function registerToolPresenter(
|
|
56
|
+
kind: ToolKind,
|
|
57
|
+
presenter: ToolPresenter,
|
|
58
|
+
): () => void {
|
|
59
|
+
const previous = registry.get(kind);
|
|
60
|
+
registry.set(kind, presenter);
|
|
61
|
+
return () => {
|
|
62
|
+
if (previous === undefined) {
|
|
63
|
+
registry.delete(kind);
|
|
64
|
+
} else {
|
|
65
|
+
registry.set(kind, previous);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/** Returns the registered presenter for a kind, if any. */
|
|
71
|
+
export function getToolPresenter(kind: ToolKind): ToolPresenter | undefined {
|
|
72
|
+
return registry.get(kind);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/** The fully-resolved presentation for a tool call, returned by {@link useToolPresentation}. */
|
|
76
|
+
export interface ToolPresentation {
|
|
77
|
+
/** Harness-agnostic kind (wire field, with name fallback). */
|
|
78
|
+
readonly kind: ToolKind;
|
|
79
|
+
/** Presentation category (1:1 with kind). */
|
|
80
|
+
readonly category: ToolCategory;
|
|
81
|
+
/** Display label, e.g. "Edit", "Shell". */
|
|
82
|
+
readonly label: string;
|
|
83
|
+
/** Primary argument (path, command, pattern...), or null. */
|
|
84
|
+
readonly primaryArg: string | null;
|
|
85
|
+
/** Normalized result view for rendering with {@link ResultView}. */
|
|
86
|
+
readonly result: ToolResultView;
|
|
87
|
+
/** One-line result summary suffix for the collapsed row (e.g. "+40 -0"). */
|
|
88
|
+
readonly resultSummary: string | null;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Resolves the complete, render-ready presentation for a tool call.
|
|
93
|
+
*
|
|
94
|
+
* Headless and memoized: the returned object is referentially stable across
|
|
95
|
+
* renders for the same `toolCall`, so it is safe to depend on in `React.memo`
|
|
96
|
+
* leaves of the streaming thread.
|
|
97
|
+
*/
|
|
98
|
+
export function useToolPresentation(toolCall: ToolCall): ToolPresentation {
|
|
99
|
+
return useMemo(() => {
|
|
100
|
+
const kind = resolveToolKind(toolCall);
|
|
101
|
+
const categoryInfo = resolveToolCategoryFromCall(toolCall);
|
|
102
|
+
const result = normalizeToolResult(toolCall);
|
|
103
|
+
const override = registry.get(kind);
|
|
104
|
+
|
|
105
|
+
const label = override?.label?.(toolCall) ?? categoryInfo.label;
|
|
106
|
+
const resultSummary =
|
|
107
|
+
override?.summary?.(toolCall, result) ?? summarizeResultView(result);
|
|
108
|
+
|
|
109
|
+
return {
|
|
110
|
+
kind,
|
|
111
|
+
category: categoryInfo.category,
|
|
112
|
+
label,
|
|
113
|
+
primaryArg: extractPrimaryArg(toolCall),
|
|
114
|
+
result,
|
|
115
|
+
resultSummary,
|
|
116
|
+
};
|
|
117
|
+
}, [toolCall]);
|
|
118
|
+
}
|
|
@@ -59,6 +59,15 @@ export interface CreateAgentExecutionInput {
|
|
|
59
59
|
* Maps to `ExecutionConfig.interaction_mode` in the proto.
|
|
60
60
|
*/
|
|
61
61
|
readonly interactionMode?: "agent" | "plan";
|
|
62
|
+
/**
|
|
63
|
+
* Auto-approve every tool call for this execution.
|
|
64
|
+
*
|
|
65
|
+
* When `true`, the human-in-the-loop approval gate is bypassed and no tool
|
|
66
|
+
* waits for approval. When `false` (default), mutating/destructive tools
|
|
67
|
+
* require approval per the configured policies. Maps to
|
|
68
|
+
* `AgentExecutionSpec.auto_approve_all` in the proto.
|
|
69
|
+
*/
|
|
70
|
+
readonly autoApproveAll?: boolean;
|
|
62
71
|
/**
|
|
63
72
|
* JSON Schema that the agent's final output must conform to.
|
|
64
73
|
*
|
|
@@ -174,6 +183,7 @@ export function useCreateAgentExecution(): UseCreateAgentExecutionReturn {
|
|
|
174
183
|
agentId: input.agentId,
|
|
175
184
|
message: input.message,
|
|
176
185
|
executionConfig,
|
|
186
|
+
autoApproveAll: input.autoApproveAll,
|
|
177
187
|
runtimeEnv: input.runtimeEnv,
|
|
178
188
|
attachments: input.attachments,
|
|
179
189
|
workspaceFileRefs: input.workspaceFileRefs,
|