@flanksource/clicky-ui 0.3.44 → 0.3.46
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 +24 -0
- package/dist/ai.cjs +4 -2
- package/dist/ai.cjs.map +1 -1
- package/dist/ai.js +3 -1
- package/dist/components/MdxEditorField.cjs +40 -22
- package/dist/components/MdxEditorField.cjs.map +1 -1
- package/dist/components/MdxEditorField.d.ts.map +1 -1
- package/dist/components/MdxEditorField.js +41 -23
- package/dist/components/MdxEditorField.js.map +1 -1
- package/dist/components/json-schema-form-item-summary.cjs +6 -1
- package/dist/components/json-schema-form-item-summary.cjs.map +1 -1
- package/dist/components/json-schema-form-item-summary.d.ts.map +1 -1
- package/dist/components/json-schema-form-item-summary.js +6 -1
- package/dist/components/json-schema-form-item-summary.js.map +1 -1
- package/dist/data/AccessMark.cjs +23 -0
- package/dist/data/AccessMark.cjs.map +1 -0
- package/dist/data/AccessMark.d.ts +11 -0
- package/dist/data/AccessMark.d.ts.map +1 -0
- package/dist/data/AccessMark.js +23 -0
- package/dist/data/AccessMark.js.map +1 -0
- package/dist/data/CodeBlock.cjs +3 -2
- package/dist/data/CodeBlock.cjs.map +1 -1
- package/dist/data/CodeBlock.d.ts +3 -1
- package/dist/data/CodeBlock.d.ts.map +1 -1
- package/dist/data/CodeBlock.js +3 -2
- package/dist/data/CodeBlock.js.map +1 -1
- package/dist/data/CodeDiff.cjs +116 -23
- package/dist/data/CodeDiff.cjs.map +1 -1
- package/dist/data/CodeDiff.d.ts +26 -0
- package/dist/data/CodeDiff.d.ts.map +1 -1
- package/dist/data/CodeDiff.js +116 -23
- package/dist/data/CodeDiff.js.map +1 -1
- package/dist/data/GraphDiagram.cjs +75 -11
- package/dist/data/GraphDiagram.cjs.map +1 -1
- package/dist/data/GraphDiagram.d.ts +17 -2
- package/dist/data/GraphDiagram.d.ts.map +1 -1
- package/dist/data/GraphDiagram.js +76 -12
- package/dist/data/GraphDiagram.js.map +1 -1
- package/dist/data/GraphDiagramGroups.cjs +100 -0
- package/dist/data/GraphDiagramGroups.cjs.map +1 -0
- package/dist/data/GraphDiagramGroups.d.ts +24 -0
- package/dist/data/GraphDiagramGroups.d.ts.map +1 -0
- package/dist/data/GraphDiagramGroups.js +100 -0
- package/dist/data/GraphDiagramGroups.js.map +1 -0
- package/dist/data/GraphDiagramNodes.cjs +46 -51
- package/dist/data/GraphDiagramNodes.cjs.map +1 -1
- package/dist/data/GraphDiagramNodes.d.ts +8 -9
- package/dist/data/GraphDiagramNodes.d.ts.map +1 -1
- package/dist/data/GraphDiagramNodes.js +46 -51
- package/dist/data/GraphDiagramNodes.js.map +1 -1
- package/dist/data/JsonView.cjs +118 -49
- package/dist/data/JsonView.cjs.map +1 -1
- package/dist/data/JsonView.d.ts +13 -10
- package/dist/data/JsonView.d.ts.map +1 -1
- package/dist/data/JsonView.js +118 -49
- package/dist/data/JsonView.js.map +1 -1
- package/dist/data/MarkdownEditor.cjs +2 -2
- package/dist/data/MarkdownEditor.cjs.map +1 -1
- package/dist/data/MarkdownEditor.js +2 -2
- package/dist/data/MarkdownEditor.js.map +1 -1
- package/dist/data/TreeNode.cjs +1 -1
- package/dist/data/TreeNode.cjs.map +1 -1
- package/dist/data/TreeNode.d.ts.map +1 -1
- package/dist/data/TreeNode.js +1 -1
- package/dist/data/TreeNode.js.map +1 -1
- package/dist/data/ai/AdvancedChatConfig.cjs +90 -249
- package/dist/data/ai/AdvancedChatConfig.cjs.map +1 -1
- package/dist/data/ai/AdvancedChatConfig.d.ts +2 -5
- package/dist/data/ai/AdvancedChatConfig.d.ts.map +1 -1
- package/dist/data/ai/AdvancedChatConfig.js +91 -250
- package/dist/data/ai/AdvancedChatConfig.js.map +1 -1
- package/dist/data/ai/ChatButton.cjs +2 -0
- package/dist/data/ai/ChatButton.cjs.map +1 -1
- package/dist/data/ai/ChatButton.d.ts +1 -1
- package/dist/data/ai/ChatButton.d.ts.map +1 -1
- package/dist/data/ai/ChatButton.js +2 -0
- package/dist/data/ai/ChatButton.js.map +1 -1
- package/dist/data/ai/ChatFab.cjs +5 -1
- package/dist/data/ai/ChatFab.cjs.map +1 -1
- package/dist/data/ai/ChatFab.d.ts +5 -1
- package/dist/data/ai/ChatFab.d.ts.map +1 -1
- package/dist/data/ai/ChatFab.js +5 -1
- package/dist/data/ai/ChatFab.js.map +1 -1
- package/dist/data/ai/ChatWindow.cjs +2 -8
- package/dist/data/ai/ChatWindow.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.js +2 -8
- package/dist/data/ai/ChatWindow.js.map +1 -1
- package/dist/data/ai/ChatWindow.runtime.cjs +0 -5
- package/dist/data/ai/ChatWindow.runtime.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.runtime.d.ts +0 -2
- package/dist/data/ai/ChatWindow.runtime.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.runtime.js +0 -5
- package/dist/data/ai/ChatWindow.runtime.js.map +1 -1
- package/dist/data/ai/PromptRunEditor/runtimeActions.cjs +2 -2
- package/dist/data/ai/PromptRunEditor/runtimeActions.cjs.map +1 -1
- package/dist/data/ai/PromptRunEditor/runtimeActions.d.ts.map +1 -1
- package/dist/data/ai/PromptRunEditor/runtimeActions.js +2 -2
- package/dist/data/ai/PromptRunEditor/runtimeActions.js.map +1 -1
- package/dist/data/ai/SessionInspector.approvals.cjs +3 -6
- package/dist/data/ai/SessionInspector.approvals.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.approvals.js +3 -6
- package/dist/data/ai/SessionInspector.approvals.js.map +1 -1
- package/dist/data/ai/SessionViewer.cjs +13 -4
- package/dist/data/ai/SessionViewer.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.d.ts +5 -1
- package/dist/data/ai/SessionViewer.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.header.cjs +1 -1
- package/dist/data/ai/SessionViewer.header.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.header.js +1 -1
- package/dist/data/ai/SessionViewer.header.js.map +1 -1
- package/dist/data/ai/SessionViewer.js +13 -4
- package/dist/data/ai/SessionViewer.js.map +1 -1
- package/dist/data/ai/SessionViewer.model.cjs +2 -0
- package/dist/data/ai/SessionViewer.model.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.model.d.ts +1 -0
- package/dist/data/ai/SessionViewer.model.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.model.js +2 -0
- package/dist/data/ai/SessionViewer.model.js.map +1 -1
- package/dist/data/ai/SessionViewer.rows.cjs +41 -27
- package/dist/data/ai/SessionViewer.rows.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.rows.d.ts +4 -2
- package/dist/data/ai/SessionViewer.rows.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.rows.js +41 -27
- package/dist/data/ai/SessionViewer.rows.js.map +1 -1
- package/dist/data/ai/SessionViewer.tokens.cjs +35 -0
- package/dist/data/ai/SessionViewer.tokens.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.tokens.d.ts +5 -0
- package/dist/data/ai/SessionViewer.tokens.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.tokens.js +35 -0
- package/dist/data/ai/SessionViewer.tokens.js.map +1 -0
- package/dist/data/ai/SessionViewer.tool-cost.cjs +128 -0
- package/dist/data/ai/SessionViewer.tool-cost.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.tool-cost.d.ts +6 -0
- package/dist/data/ai/SessionViewer.tool-cost.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.tool-cost.js +128 -0
- package/dist/data/ai/SessionViewer.tool-cost.js.map +1 -0
- package/dist/data/ai/SessionViewer.tool-details.cjs +3 -1
- package/dist/data/ai/SessionViewer.tool-details.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.tool-details.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.tool-details.js +3 -1
- package/dist/data/ai/SessionViewer.tool-details.js.map +1 -1
- package/dist/data/ai/SessionViewer.tool-row.cjs +55 -35
- package/dist/data/ai/SessionViewer.tool-row.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.tool-row.d.ts +2 -1
- package/dist/data/ai/SessionViewer.tool-row.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.tool-row.js +55 -35
- package/dist/data/ai/SessionViewer.tool-row.js.map +1 -1
- package/dist/data/ai/SessionViewer.unified.d.ts +4 -0
- package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
- package/dist/data/ai/SessionViewerMenu.cjs +18 -1
- package/dist/data/ai/SessionViewerMenu.cjs.map +1 -1
- package/dist/data/ai/SessionViewerMenu.d.ts +6 -1
- package/dist/data/ai/SessionViewerMenu.d.ts.map +1 -1
- package/dist/data/ai/SessionViewerMenu.js +18 -1
- package/dist/data/ai/SessionViewerMenu.js.map +1 -1
- package/dist/data/ai/ToolPreferences.cjs +149 -143
- package/dist/data/ai/ToolPreferences.cjs.map +1 -1
- package/dist/data/ai/ToolPreferences.d.ts +20 -6
- package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
- package/dist/data/ai/ToolPreferences.js +151 -146
- package/dist/data/ai/ToolPreferences.js.map +1 -1
- package/dist/data/ai/ToolPreferences.model.cjs +14 -10
- package/dist/data/ai/ToolPreferences.model.cjs.map +1 -1
- package/dist/data/ai/ToolPreferences.model.d.ts +1 -0
- package/dist/data/ai/ToolPreferences.model.d.ts.map +1 -1
- package/dist/data/ai/ToolPreferences.model.js +15 -11
- package/dist/data/ai/ToolPreferences.model.js.map +1 -1
- package/dist/data/ai/ToolPreferencesList.cjs +1 -0
- package/dist/data/ai/ToolPreferencesList.cjs.map +1 -1
- package/dist/data/ai/ToolPreferencesList.d.ts +4 -1
- package/dist/data/ai/ToolPreferencesList.d.ts.map +1 -1
- package/dist/data/ai/ToolPreferencesList.js +2 -1
- package/dist/data/ai/ToolPreferencesList.js.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.cjs +52 -53
- package/dist/data/ai/ToolSchemaBrowser.cjs.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.d.ts +6 -3
- package/dist/data/ai/ToolSchemaBrowser.d.ts.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.directory-header.cjs +9 -13
- package/dist/data/ai/ToolSchemaBrowser.directory-header.cjs.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.directory-header.d.ts +5 -2
- package/dist/data/ai/ToolSchemaBrowser.directory-header.d.ts.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.directory-header.js +9 -13
- package/dist/data/ai/ToolSchemaBrowser.directory-header.js.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.js +53 -54
- package/dist/data/ai/ToolSchemaBrowser.js.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.model.cjs +19 -27
- package/dist/data/ai/ToolSchemaBrowser.model.cjs.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.model.d.ts +9 -6
- package/dist/data/ai/ToolSchemaBrowser.model.d.ts.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.model.js +20 -28
- package/dist/data/ai/ToolSchemaBrowser.model.js.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.sidebar.cjs +12 -213
- package/dist/data/ai/ToolSchemaBrowser.sidebar.cjs.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.sidebar.d.ts +1 -3
- package/dist/data/ai/ToolSchemaBrowser.sidebar.d.ts.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.sidebar.js +13 -214
- package/dist/data/ai/ToolSchemaBrowser.sidebar.js.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.strategies.cjs +54 -0
- package/dist/data/ai/ToolSchemaBrowser.strategies.cjs.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.strategies.d.ts +9 -0
- package/dist/data/ai/ToolSchemaBrowser.strategies.d.ts.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.strategies.js +54 -0
- package/dist/data/ai/ToolSchemaBrowser.strategies.js.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.tree.cjs +179 -0
- package/dist/data/ai/ToolSchemaBrowser.tree.cjs.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.tree.d.ts +20 -0
- package/dist/data/ai/ToolSchemaBrowser.tree.d.ts.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.tree.js +179 -0
- package/dist/data/ai/ToolSchemaBrowser.tree.js.map +1 -0
- package/dist/data/ai/index.d.ts +2 -2
- package/dist/data/ai/index.d.ts.map +1 -1
- package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.cjs +8 -28
- package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.cjs.map +1 -1
- package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.d.ts.map +1 -1
- package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.js +9 -29
- package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.js.map +1 -1
- package/dist/data/ai/session-token-sizing.d.ts +32 -0
- package/dist/data/ai/session-token-sizing.d.ts.map +1 -0
- package/dist/data/ai/use-session-token-sizing.cjs +73 -0
- package/dist/data/ai/use-session-token-sizing.cjs.map +1 -0
- package/dist/data/ai/use-session-token-sizing.d.ts +21 -0
- package/dist/data/ai/use-session-token-sizing.d.ts.map +1 -0
- package/dist/data/ai/use-session-token-sizing.js +73 -0
- package/dist/data/ai/use-session-token-sizing.js.map +1 -0
- package/dist/data/call-graph/CallGraph.cjs +269 -0
- package/dist/data/call-graph/CallGraph.cjs.map +1 -0
- package/dist/data/call-graph/CallGraph.d.ts +78 -0
- package/dist/data/call-graph/CallGraph.d.ts.map +1 -0
- package/dist/data/call-graph/CallGraph.js +269 -0
- package/dist/data/call-graph/CallGraph.js.map +1 -0
- package/dist/data/call-graph/CallGraphGlyphs.cjs +39 -0
- package/dist/data/call-graph/CallGraphGlyphs.cjs.map +1 -0
- package/dist/data/call-graph/CallGraphGlyphs.d.ts +19 -0
- package/dist/data/call-graph/CallGraphGlyphs.d.ts.map +1 -0
- package/dist/data/call-graph/CallGraphGlyphs.js +39 -0
- package/dist/data/call-graph/CallGraphGlyphs.js.map +1 -0
- package/dist/data/call-graph/CallGraphMembers.cjs +51 -0
- package/dist/data/call-graph/CallGraphMembers.cjs.map +1 -0
- package/dist/data/call-graph/CallGraphMembers.d.ts +22 -0
- package/dist/data/call-graph/CallGraphMembers.d.ts.map +1 -0
- package/dist/data/call-graph/CallGraphMembers.js +51 -0
- package/dist/data/call-graph/CallGraphMembers.js.map +1 -0
- package/dist/data/call-graph/CallGraphParts.cjs +204 -0
- package/dist/data/call-graph/CallGraphParts.cjs.map +1 -0
- package/dist/data/call-graph/CallGraphParts.d.ts +44 -0
- package/dist/data/call-graph/CallGraphParts.d.ts.map +1 -0
- package/dist/data/call-graph/CallGraphParts.js +204 -0
- package/dist/data/call-graph/CallGraphParts.js.map +1 -0
- package/dist/data/call-graph/CallGraphToolbar.cjs +198 -0
- package/dist/data/call-graph/CallGraphToolbar.cjs.map +1 -0
- package/dist/data/call-graph/CallGraphToolbar.d.ts +55 -0
- package/dist/data/call-graph/CallGraphToolbar.d.ts.map +1 -0
- package/dist/data/call-graph/CallGraphToolbar.js +198 -0
- package/dist/data/call-graph/CallGraphToolbar.js.map +1 -0
- package/dist/data/call-graph/call-graph-exclude.cjs +75 -0
- package/dist/data/call-graph/call-graph-exclude.cjs.map +1 -0
- package/dist/data/call-graph/call-graph-exclude.d.ts +31 -0
- package/dist/data/call-graph/call-graph-exclude.d.ts.map +1 -0
- package/dist/data/call-graph/call-graph-exclude.js +75 -0
- package/dist/data/call-graph/call-graph-exclude.js.map +1 -0
- package/dist/data/call-graph/call-graph-labels.cjs +96 -0
- package/dist/data/call-graph/call-graph-labels.cjs.map +1 -0
- package/dist/data/call-graph/call-graph-labels.d.ts +53 -0
- package/dist/data/call-graph/call-graph-labels.d.ts.map +1 -0
- package/dist/data/call-graph/call-graph-labels.js +96 -0
- package/dist/data/call-graph/call-graph-labels.js.map +1 -0
- package/dist/data/call-graph/call-graph-model.cjs +312 -0
- package/dist/data/call-graph/call-graph-model.cjs.map +1 -0
- package/dist/data/call-graph/call-graph-model.d.ts +138 -0
- package/dist/data/call-graph/call-graph-model.d.ts.map +1 -0
- package/dist/data/call-graph/call-graph-model.js +312 -0
- package/dist/data/call-graph/call-graph-model.js.map +1 -0
- package/dist/data/call-graph/call-graph-vocabulary.cjs +195 -0
- package/dist/data/call-graph/call-graph-vocabulary.cjs.map +1 -0
- package/dist/data/call-graph/call-graph-vocabulary.d.ts +76 -0
- package/dist/data/call-graph/call-graph-vocabulary.d.ts.map +1 -0
- package/dist/data/call-graph/call-graph-vocabulary.js +195 -0
- package/dist/data/call-graph/call-graph-vocabulary.js.map +1 -0
- package/dist/data/call-graph/call-graph.fixtures.d.ts +63 -0
- package/dist/data/call-graph/call-graph.fixtures.d.ts.map +1 -0
- package/dist/data/call-graph/index.d.ts +7 -0
- package/dist/data/call-graph/index.d.ts.map +1 -0
- package/dist/data/call-graph/types.cjs +5 -0
- package/dist/data/call-graph/types.cjs.map +1 -0
- package/dist/data/call-graph/types.d.ts +140 -0
- package/dist/data/call-graph/types.d.ts.map +1 -0
- package/dist/data/call-graph/types.js +5 -0
- package/dist/data/call-graph/types.js.map +1 -0
- package/dist/data/call-graph/use-call-graph.cjs +93 -0
- package/dist/data/call-graph/use-call-graph.cjs.map +1 -0
- package/dist/data/call-graph/use-call-graph.d.ts +24 -0
- package/dist/data/call-graph/use-call-graph.d.ts.map +1 -0
- package/dist/data/call-graph/use-call-graph.js +93 -0
- package/dist/data/call-graph/use-call-graph.js.map +1 -0
- package/dist/data/chat/Chat.cjs +39 -15
- package/dist/data/chat/Chat.cjs.map +1 -1
- package/dist/data/chat/Chat.d.ts.map +1 -1
- package/dist/data/chat/Chat.fixtures.cjs +2 -2
- package/dist/data/chat/Chat.fixtures.cjs.map +1 -1
- package/dist/data/chat/Chat.fixtures.js +2 -2
- package/dist/data/chat/Chat.fixtures.js.map +1 -1
- package/dist/data/chat/Chat.js +40 -16
- package/dist/data/chat/Chat.js.map +1 -1
- package/dist/data/chat/ChatRuntimeToolbar.cjs +3 -6
- package/dist/data/chat/ChatRuntimeToolbar.cjs.map +1 -1
- package/dist/data/chat/ChatRuntimeToolbar.d.ts.map +1 -1
- package/dist/data/chat/ChatRuntimeToolbar.js +3 -6
- package/dist/data/chat/ChatRuntimeToolbar.js.map +1 -1
- package/dist/data/chat/ContextMeter.bar.cjs +5 -8
- package/dist/data/chat/ContextMeter.bar.cjs.map +1 -1
- package/dist/data/chat/ContextMeter.bar.d.ts +1 -1
- package/dist/data/chat/ContextMeter.bar.d.ts.map +1 -1
- package/dist/data/chat/ContextMeter.bar.js +5 -8
- package/dist/data/chat/ContextMeter.bar.js.map +1 -1
- package/dist/data/chat/ContextMeter.cjs +18 -19
- package/dist/data/chat/ContextMeter.cjs.map +1 -1
- package/dist/data/chat/ContextMeter.d.ts +1 -1
- package/dist/data/chat/ContextMeter.d.ts.map +1 -1
- package/dist/data/chat/ContextMeter.js +18 -19
- package/dist/data/chat/ContextMeter.js.map +1 -1
- package/dist/data/chat/Conversation.cjs +2 -1
- package/dist/data/chat/Conversation.cjs.map +1 -1
- package/dist/data/chat/Conversation.d.ts +4 -1
- package/dist/data/chat/Conversation.d.ts.map +1 -1
- package/dist/data/chat/Conversation.js +2 -1
- package/dist/data/chat/Conversation.js.map +1 -1
- package/dist/data/chat/Message.cjs +39 -12
- package/dist/data/chat/Message.cjs.map +1 -1
- package/dist/data/chat/Message.d.ts +1 -1
- package/dist/data/chat/Message.d.ts.map +1 -1
- package/dist/data/chat/Message.js +40 -13
- package/dist/data/chat/Message.js.map +1 -1
- package/dist/data/chat/ToolCall.cjs +60 -5
- package/dist/data/chat/ToolCall.cjs.map +1 -1
- package/dist/data/chat/ToolCall.d.ts +7 -2
- package/dist/data/chat/ToolCall.d.ts.map +1 -1
- package/dist/data/chat/ToolCall.js +60 -5
- package/dist/data/chat/ToolCall.js.map +1 -1
- package/dist/data/chat/approval.cjs.map +1 -1
- package/dist/data/chat/approval.d.ts +2 -2
- package/dist/data/chat/approval.d.ts.map +1 -1
- package/dist/data/chat/approval.js.map +1 -1
- package/dist/data/chat/tool-policy.cjs +59 -2
- package/dist/data/chat/tool-policy.cjs.map +1 -1
- package/dist/data/chat/tool-policy.d.ts +9 -0
- package/dist/data/chat/tool-policy.d.ts.map +1 -1
- package/dist/data/chat/tool-policy.js +59 -2
- package/dist/data/chat/tool-policy.js.map +1 -1
- package/dist/data/chat/types.cjs +6 -0
- package/dist/data/chat/types.cjs.map +1 -1
- package/dist/data/chat/types.d.ts +13 -4
- package/dist/data/chat/types.d.ts.map +1 -1
- package/dist/data/chat/types.js +7 -1
- package/dist/data/chat/types.js.map +1 -1
- package/dist/data/chat/usage-snapshot.cjs +11 -6
- package/dist/data/chat/usage-snapshot.cjs.map +1 -1
- package/dist/data/chat/usage-snapshot.d.ts +0 -1
- package/dist/data/chat/usage-snapshot.d.ts.map +1 -1
- package/dist/data/chat/usage-snapshot.js +11 -6
- package/dist/data/chat/usage-snapshot.js.map +1 -1
- package/dist/data/data-access.cjs +8 -0
- package/dist/data/data-access.cjs.map +1 -0
- package/dist/data/data-access.d.ts +5 -0
- package/dist/data/data-access.d.ts.map +1 -0
- package/dist/data/data-access.js +8 -0
- package/dist/data/data-access.js.map +1 -0
- package/dist/data/diagnostics/StackFrameRow.cjs +3 -3
- package/dist/data/diagnostics/StackFrameRow.cjs.map +1 -1
- package/dist/data/diagnostics/StackFrameRow.js +3 -3
- package/dist/data/diagnostics/StackFrameRow.js.map +1 -1
- package/dist/data/git/GitChangeList.cjs +6 -2
- package/dist/data/git/GitChangeList.cjs.map +1 -1
- package/dist/data/git/GitChangeList.d.ts +6 -1
- package/dist/data/git/GitChangeList.d.ts.map +1 -1
- package/dist/data/git/GitChangeList.js +6 -2
- package/dist/data/git/GitChangeList.js.map +1 -1
- package/dist/data/graph-columns-layout.cjs +61 -14
- package/dist/data/graph-columns-layout.cjs.map +1 -1
- package/dist/data/graph-columns-layout.d.ts +42 -0
- package/dist/data/graph-columns-layout.d.ts.map +1 -1
- package/dist/data/graph-columns-layout.js +61 -14
- package/dist/data/graph-columns-layout.js.map +1 -1
- package/dist/data/graph-diagram-model.cjs +5 -0
- package/dist/data/graph-diagram-model.cjs.map +1 -1
- package/dist/data/graph-diagram-model.d.ts +24 -0
- package/dist/data/graph-diagram-model.d.ts.map +1 -1
- package/dist/data/graph-diagram-model.js +5 -0
- package/dist/data/graph-diagram-model.js.map +1 -1
- package/dist/data/graph-edge-routing.cjs +9 -3
- package/dist/data/graph-edge-routing.cjs.map +1 -1
- package/dist/data/graph-edge-routing.d.ts +2 -0
- package/dist/data/graph-edge-routing.d.ts.map +1 -1
- package/dist/data/graph-edge-routing.js +9 -3
- package/dist/data/graph-edge-routing.js.map +1 -1
- package/dist/data/graph-group-window.cjs +60 -0
- package/dist/data/graph-group-window.cjs.map +1 -0
- package/dist/data/graph-group-window.d.ts +33 -0
- package/dist/data/graph-group-window.d.ts.map +1 -0
- package/dist/data/graph-group-window.js +60 -0
- package/dist/data/graph-group-window.js.map +1 -0
- package/dist/data/json-view/JsonSource.cjs +84 -0
- package/dist/data/json-view/JsonSource.cjs.map +1 -0
- package/dist/data/json-view/JsonSource.d.ts +7 -0
- package/dist/data/json-view/JsonSource.d.ts.map +1 -0
- package/dist/data/json-view/JsonSource.js +84 -0
- package/dist/data/json-view/JsonSource.js.map +1 -0
- package/dist/data/json-view/parse-prefix.cjs +132 -0
- package/dist/data/json-view/parse-prefix.cjs.map +1 -0
- package/dist/data/json-view/parse-prefix.d.ts +11 -0
- package/dist/data/json-view/parse-prefix.d.ts.map +1 -0
- package/dist/data/json-view/parse-prefix.js +132 -0
- package/dist/data/json-view/parse-prefix.js.map +1 -0
- package/dist/data/json-view/parse-source.cjs +62 -0
- package/dist/data/json-view/parse-source.cjs.map +1 -0
- package/dist/data/json-view/parse-source.d.ts +16 -0
- package/dist/data/json-view/parse-source.d.ts.map +1 -0
- package/dist/data/json-view/parse-source.js +62 -0
- package/dist/data/json-view/parse-source.js.map +1 -0
- package/dist/data/json-view/story-fixtures.d.ts +6 -0
- package/dist/data/json-view/story-fixtures.d.ts.map +1 -0
- package/dist/data/json-view/types.d.ts +14 -0
- package/dist/data/json-view/types.d.ts.map +1 -0
- package/dist/data/runtime/RuntimeBar.cjs +2 -5
- package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBar.d.ts +2 -4
- package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBar.fields.cjs +2 -2
- package/dist/data/runtime/RuntimeBar.fields.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBar.fields.js +2 -2
- package/dist/data/runtime/RuntimeBar.fields.js.map +1 -1
- package/dist/data/runtime/RuntimeBar.js +2 -5
- package/dist/data/runtime/RuntimeBar.js.map +1 -1
- package/dist/data/runtime/RuntimeBar.selection.cjs +4 -1
- package/dist/data/runtime/RuntimeBar.selection.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBar.selection.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBar.selection.js +5 -2
- package/dist/data/runtime/RuntimeBar.selection.js.map +1 -1
- package/dist/data/runtime/RuntimeBarActions.cjs +1 -5
- package/dist/data/runtime/RuntimeBarActions.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBarActions.d.ts +1 -1
- package/dist/data/runtime/RuntimeBarActions.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBarActions.js +1 -5
- package/dist/data/runtime/RuntimeBarActions.js.map +1 -1
- package/dist/data/runtime/RuntimeBarIdentity.cjs +6 -14
- package/dist/data/runtime/RuntimeBarIdentity.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBarIdentity.d.ts +0 -1
- package/dist/data/runtime/RuntimeBarIdentity.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBarIdentity.js +6 -14
- package/dist/data/runtime/RuntimeBarIdentity.js.map +1 -1
- package/dist/data/runtime/RuntimeBarLayout.cjs +8 -27
- package/dist/data/runtime/RuntimeBarLayout.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBarLayout.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBarLayout.js +8 -27
- package/dist/data/runtime/RuntimeBarLayout.js.map +1 -1
- package/dist/data/runtime/RuntimeBarSegment.cjs +1 -5
- package/dist/data/runtime/RuntimeBarSegment.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBarSegment.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBarSegment.js +1 -5
- package/dist/data/runtime/RuntimeBarSegment.js.map +1 -1
- package/dist/data/runtime/use-runtime-bar-overflow.cjs +4 -10
- package/dist/data/runtime/use-runtime-bar-overflow.cjs.map +1 -1
- package/dist/data/runtime/use-runtime-bar-overflow.d.ts +1 -2
- package/dist/data/runtime/use-runtime-bar-overflow.d.ts.map +1 -1
- package/dist/data/runtime/use-runtime-bar-overflow.js +4 -10
- package/dist/data/runtime/use-runtime-bar-overflow.js.map +1 -1
- package/dist/data/test-runner/TestRunner.fixtures.d.ts +0 -20
- package/dist/data/test-runner/TestRunner.fixtures.d.ts.map +1 -1
- package/dist/data/test-runner/TestRunner.large-fixtures.d.ts +22 -0
- package/dist/data/test-runner/TestRunner.large-fixtures.d.ts.map +1 -0
- package/dist/data/use-group-windows.cjs +50 -0
- package/dist/data/use-group-windows.cjs.map +1 -0
- package/dist/data/use-group-windows.d.ts +27 -0
- package/dist/data/use-group-windows.d.ts.map +1 -0
- package/dist/data/use-group-windows.js +50 -0
- package/dist/data/use-group-windows.js.map +1 -0
- package/dist/data/use-pan-zoom.cjs +23 -10
- package/dist/data/use-pan-zoom.cjs.map +1 -1
- package/dist/data/use-pan-zoom.d.ts +16 -2
- package/dist/data/use-pan-zoom.d.ts.map +1 -1
- package/dist/data/use-pan-zoom.js +23 -10
- package/dist/data/use-pan-zoom.js.map +1 -1
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.js +3 -3
- package/dist/data.cjs +36 -2
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +5 -2
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +35 -1
- package/dist/data.js.map +1 -1
- package/dist/hooks/event-hub.cjs +229 -0
- package/dist/hooks/event-hub.cjs.map +1 -0
- package/dist/hooks/event-hub.d.ts +26 -0
- package/dist/hooks/event-hub.d.ts.map +1 -0
- package/dist/hooks/event-hub.js +229 -0
- package/dist/hooks/event-hub.js.map +1 -0
- package/dist/hooks.cjs +2 -0
- package/dist/hooks.cjs.map +1 -1
- package/dist/hooks.d.ts +1 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +2 -0
- package/dist/hooks.js.map +1 -1
- package/dist/index.cjs +40 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +37 -1
- package/dist/index.js.map +1 -1
- package/dist/layout/Workspace.cjs +13 -4
- package/dist/layout/Workspace.cjs.map +1 -1
- package/dist/layout/Workspace.d.ts +7 -2
- package/dist/layout/Workspace.d.ts.map +1 -1
- package/dist/layout/Workspace.js +13 -4
- package/dist/layout/Workspace.js.map +1 -1
- package/dist/lib/permission-strategies.cjs +71 -11
- package/dist/lib/permission-strategies.cjs.map +1 -1
- package/dist/lib/permission-strategies.d.ts +3 -0
- package/dist/lib/permission-strategies.d.ts.map +1 -1
- package/dist/lib/permission-strategies.js +71 -11
- package/dist/lib/permission-strategies.js.map +1 -1
- package/dist/overlay/modalStack.cjs +13 -6
- package/dist/overlay/modalStack.cjs.map +1 -1
- package/dist/overlay/modalStack.d.ts.map +1 -1
- package/dist/overlay/modalStack.js +13 -6
- package/dist/overlay/modalStack.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +5 -3
- package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.cjs +0 -57
- package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.cjs.map +0 -1
- package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.d.ts +0 -7
- package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.d.ts.map +0 -1
- package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.js +0 -57
- package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.js.map +0 -1
- package/dist/data/runtime/RuntimeBar.context.cjs +0 -8
- package/dist/data/runtime/RuntimeBar.context.cjs.map +0 -1
- package/dist/data/runtime/RuntimeBar.context.d.ts +0 -2
- package/dist/data/runtime/RuntimeBar.context.d.ts.map +0 -1
- package/dist/data/runtime/RuntimeBar.context.js +0 -8
- package/dist/data/runtime/RuntimeBar.context.js.map +0 -1
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { costTotal } from "./session-cost.js";
|
|
3
|
+
import { UiCoins } from "../../icons/components/UiCoins.js";
|
|
4
|
+
import { formatCost, compactTokens } from "../../lib/tokens.js";
|
|
5
|
+
import { UiDatabaseDown, UiDatabaseUp } from "../../icons/components/UiDatabase.js";
|
|
6
|
+
import { UiArrowUp } from "../../icons/components/UiArrowUp.js";
|
|
7
|
+
import { UiArrowDown } from "../../icons/components/UiArrowDown.js";
|
|
8
|
+
import { UiBrain } from "../../icons/components/UiBrain.js";
|
|
9
|
+
const TOKEN_BUCKETS = [
|
|
10
|
+
["inputTokens", "In", "Input", UiArrowUp],
|
|
11
|
+
["outputTokens", "Out", "Output", UiArrowDown],
|
|
12
|
+
["reasoningTokens", "Reasoning", "Reasoning", UiBrain],
|
|
13
|
+
["cacheReadTokens", "Cache read", "Cache read", UiDatabaseDown],
|
|
14
|
+
["cacheWriteTokens", "Cache write", "Cache write", UiDatabaseUp]
|
|
15
|
+
];
|
|
16
|
+
function EstimatedToolCost({
|
|
17
|
+
events,
|
|
18
|
+
detailed = false
|
|
19
|
+
}) {
|
|
20
|
+
var _a;
|
|
21
|
+
const estimates = events.flatMap(
|
|
22
|
+
(event) => event.estimatedCost ? [event.estimatedCost] : []
|
|
23
|
+
);
|
|
24
|
+
if (!estimates.length) {
|
|
25
|
+
return /* @__PURE__ */ jsx(
|
|
26
|
+
"span",
|
|
27
|
+
{
|
|
28
|
+
"aria-label": detailed ? "Estimated tool cost details" : "Estimate unavailable",
|
|
29
|
+
title: "Estimate unavailable",
|
|
30
|
+
className: "shrink-0 text-[11px] text-muted-foreground",
|
|
31
|
+
children: detailed ? "Estimate unavailable" : "—"
|
|
32
|
+
}
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
const costs = estimates.map((estimate) => estimate.cost);
|
|
36
|
+
const total = costs.reduce((sum, cost) => sum + costTotal(cost), 0);
|
|
37
|
+
const sharedCalls = (_a = estimates[0]) == null ? void 0 : _a.sharedCalls;
|
|
38
|
+
const allocation = events.length === 1 ? `Model request shared equally across ${sharedCalls} tool call${sharedCalls === 1 ? "" : "s"}.` : `Combined estimate for ${estimates.length} calls; each model request is shared equally across its tool calls.`;
|
|
39
|
+
const description = `${allocation} Includes conversation context and generating the calls. Reading tool results is accounted for in subsequent model requests. Estimated cost in USD.`;
|
|
40
|
+
if (!detailed) {
|
|
41
|
+
const cacheReadTokens = costs.reduce((sum, cost) => sum + (cost.cacheReadTokens ?? 0), 0);
|
|
42
|
+
const cacheReadDescription = `Cache read delta: ${cacheReadTokens.toLocaleString("en-US")} tokens`;
|
|
43
|
+
return /* @__PURE__ */ jsxs(
|
|
44
|
+
"span",
|
|
45
|
+
{
|
|
46
|
+
role: "group",
|
|
47
|
+
"aria-label": "Estimated tool cost",
|
|
48
|
+
title: description,
|
|
49
|
+
className: "inline-flex shrink-0 items-center gap-0.5 whitespace-nowrap text-[11px] tabular-nums text-muted-foreground",
|
|
50
|
+
children: [
|
|
51
|
+
/* @__PURE__ */ jsx(UiCoins, { className: "size-3 shrink-0" }),
|
|
52
|
+
/* @__PURE__ */ jsx("span", { children: total > 0 ? `~${formatCost(total)}` : "—" }),
|
|
53
|
+
cacheReadTokens > 0 && /* @__PURE__ */ jsxs(
|
|
54
|
+
"span",
|
|
55
|
+
{
|
|
56
|
+
role: "group",
|
|
57
|
+
"aria-label": cacheReadDescription,
|
|
58
|
+
title: cacheReadDescription,
|
|
59
|
+
className: "ml-1 inline-flex items-center gap-0.5",
|
|
60
|
+
children: [
|
|
61
|
+
/* @__PURE__ */ jsx(UiDatabaseDown, { className: "size-3 shrink-0" }),
|
|
62
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
63
|
+
"+",
|
|
64
|
+
compactTokens(cacheReadTokens)
|
|
65
|
+
] })
|
|
66
|
+
]
|
|
67
|
+
}
|
|
68
|
+
)
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
return /* @__PURE__ */ jsxs(
|
|
74
|
+
"div",
|
|
75
|
+
{
|
|
76
|
+
role: "group",
|
|
77
|
+
"aria-label": "Estimated tool cost details",
|
|
78
|
+
title: description,
|
|
79
|
+
className: "mt-2 flex flex-wrap items-center gap-x-3 gap-y-1 border-t border-border pt-1.5 text-[11px] tabular-nums text-muted-foreground",
|
|
80
|
+
children: [
|
|
81
|
+
/* @__PURE__ */ jsxs(
|
|
82
|
+
"span",
|
|
83
|
+
{
|
|
84
|
+
role: "group",
|
|
85
|
+
"aria-label": total > 0 ? `Estimated cost: ${formatCost(total)} USD` : "Cost unavailable",
|
|
86
|
+
className: "inline-flex items-center gap-1",
|
|
87
|
+
children: [
|
|
88
|
+
/* @__PURE__ */ jsx(UiCoins, { className: "size-3.5 shrink-0" }),
|
|
89
|
+
/* @__PURE__ */ jsx("span", { children: "Est." }),
|
|
90
|
+
/* @__PURE__ */ jsx("span", { className: "font-semibold text-foreground", children: total > 0 ? `~${formatCost(total)}` : "Cost unavailable" }),
|
|
91
|
+
total > 0 && /* @__PURE__ */ jsx("span", { className: "text-[9px] font-medium", children: "USD" })
|
|
92
|
+
]
|
|
93
|
+
}
|
|
94
|
+
),
|
|
95
|
+
TOKEN_BUCKETS.map(([key, label, name, BucketIcon]) => {
|
|
96
|
+
const tokens = costs.reduce((sum, cost) => sum + (cost[key] ?? 0), 0);
|
|
97
|
+
const description2 = `${name}: ${tokens.toLocaleString("en-US")} tokens`;
|
|
98
|
+
return tokens > 0 ? /* @__PURE__ */ jsxs(
|
|
99
|
+
"span",
|
|
100
|
+
{
|
|
101
|
+
role: "group",
|
|
102
|
+
"aria-label": description2,
|
|
103
|
+
title: description2,
|
|
104
|
+
className: "inline-flex items-center gap-1 whitespace-nowrap",
|
|
105
|
+
children: [
|
|
106
|
+
/* @__PURE__ */ jsx(BucketIcon, { className: "size-3.5 shrink-0" }),
|
|
107
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
108
|
+
label,
|
|
109
|
+
" ",
|
|
110
|
+
/* @__PURE__ */ jsx("span", { className: "font-medium text-foreground", children: compactTokens(tokens) })
|
|
111
|
+
] })
|
|
112
|
+
]
|
|
113
|
+
},
|
|
114
|
+
key
|
|
115
|
+
) : null;
|
|
116
|
+
}),
|
|
117
|
+
estimates.length < events.length && /* @__PURE__ */ jsxs("span", { children: [
|
|
118
|
+
events.length - estimates.length,
|
|
119
|
+
" unavailable"
|
|
120
|
+
] })
|
|
121
|
+
]
|
|
122
|
+
}
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
export {
|
|
126
|
+
EstimatedToolCost
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=SessionViewer.tool-cost.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionViewer.tool-cost.js","sources":["../../../src/data/ai/SessionViewer.tool-cost.tsx"],"sourcesContent":["import type { SessionEvent } from \"./SessionViewer.model\";\nimport { compactTokens, costTotal, formatCost } from \"./session-cost\";\nimport type { SessionCost } from \"./SessionViewer.unified\";\nimport {\n UiArrowDown,\n UiArrowUp,\n UiBrain,\n UiCoins,\n UiDatabaseDown,\n UiDatabaseUp,\n} from \"../../icons\";\n\nconst TOKEN_BUCKETS = [\n [\"inputTokens\", \"In\", \"Input\", UiArrowUp],\n [\"outputTokens\", \"Out\", \"Output\", UiArrowDown],\n [\"reasoningTokens\", \"Reasoning\", \"Reasoning\", UiBrain],\n [\"cacheReadTokens\", \"Cache read\", \"Cache read\", UiDatabaseDown],\n [\"cacheWriteTokens\", \"Cache write\", \"Cache write\", UiDatabaseUp],\n] as const;\n\nexport function EstimatedToolCost({\n events,\n detailed = false,\n}: {\n events: SessionEvent[];\n detailed?: boolean;\n}) {\n const estimates = events.flatMap((event) =>\n event.estimatedCost ? [event.estimatedCost] : [],\n );\n if (!estimates.length) {\n return (\n <span\n aria-label={\n detailed ? \"Estimated tool cost details\" : \"Estimate unavailable\"\n }\n title=\"Estimate unavailable\"\n className=\"shrink-0 text-[11px] text-muted-foreground\"\n >\n {detailed ? \"Estimate unavailable\" : \"—\"}\n </span>\n );\n }\n const costs: SessionCost[] = estimates.map((estimate) => estimate.cost);\n const total = costs.reduce((sum, cost) => sum + costTotal(cost), 0);\n const sharedCalls = estimates[0]?.sharedCalls;\n const allocation =\n events.length === 1\n ? `Model request shared equally across ${sharedCalls} tool call${sharedCalls === 1 ? \"\" : \"s\"}.`\n : `Combined estimate for ${estimates.length} calls; each model request is shared equally across its tool calls.`;\n const description = `${allocation} Includes conversation context and generating the calls. Reading tool results is accounted for in subsequent model requests. Estimated cost in USD.`;\n if (!detailed) {\n const cacheReadTokens = costs.reduce((sum, cost) => sum + (cost.cacheReadTokens ?? 0), 0);\n const cacheReadDescription = `Cache read delta: ${cacheReadTokens.toLocaleString(\"en-US\")} tokens`;\n return (\n <span\n role=\"group\"\n aria-label=\"Estimated tool cost\"\n title={description}\n className=\"inline-flex shrink-0 items-center gap-0.5 whitespace-nowrap text-[11px] tabular-nums text-muted-foreground\"\n >\n <UiCoins className=\"size-3 shrink-0\" />\n <span>{total > 0 ? `~${formatCost(total)}` : \"—\"}</span>\n {cacheReadTokens > 0 && (\n <span\n role=\"group\"\n aria-label={cacheReadDescription}\n title={cacheReadDescription}\n className=\"ml-1 inline-flex items-center gap-0.5\"\n >\n <UiDatabaseDown className=\"size-3 shrink-0\" />\n <span>+{compactTokens(cacheReadTokens)}</span>\n </span>\n )}\n </span>\n );\n }\n return (\n <div\n role=\"group\"\n aria-label=\"Estimated tool cost details\"\n title={description}\n className=\"mt-2 flex flex-wrap items-center gap-x-3 gap-y-1 border-t border-border pt-1.5 text-[11px] tabular-nums text-muted-foreground\"\n >\n <span\n role=\"group\"\n aria-label={\n total > 0\n ? `Estimated cost: ${formatCost(total)} USD`\n : \"Cost unavailable\"\n }\n className=\"inline-flex items-center gap-1\"\n >\n <UiCoins className=\"size-3.5 shrink-0\" />\n <span>Est.</span>\n <span className=\"font-semibold text-foreground\">\n {total > 0 ? `~${formatCost(total)}` : \"Cost unavailable\"}\n </span>\n {total > 0 && <span className=\"text-[9px] font-medium\">USD</span>}\n </span>\n {TOKEN_BUCKETS.map(([key, label, name, BucketIcon]) => {\n const tokens = costs.reduce((sum, cost) => sum + (cost[key] ?? 0), 0);\n const description = `${name}: ${tokens.toLocaleString(\"en-US\")} tokens`;\n return tokens > 0 ? (\n <span\n key={key}\n role=\"group\"\n aria-label={description}\n title={description}\n className=\"inline-flex items-center gap-1 whitespace-nowrap\"\n >\n <BucketIcon className=\"size-3.5 shrink-0\" />\n <span>\n {label}{\" \"}\n <span className=\"font-medium text-foreground\">\n {compactTokens(tokens)}\n </span>\n </span>\n </span>\n ) : null;\n })}\n {estimates.length < events.length && (\n <span>{events.length - estimates.length} unavailable</span>\n )}\n </div>\n );\n}\n"],"names":["description"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const useDensity = require("../../hooks/use-density.cjs");
|
|
4
5
|
const CodeBlock = require("../CodeBlock.cjs");
|
|
5
6
|
const CodeDiff = require("../CodeDiff.cjs");
|
|
6
7
|
function QuestionCard({
|
|
@@ -55,7 +56,8 @@ function DetailBlock({
|
|
|
55
56
|
language,
|
|
56
57
|
source
|
|
57
58
|
}) {
|
|
58
|
-
|
|
59
|
+
const density = useDensity.useDensityValue();
|
|
60
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "overflow-x-auto text-xs", children: /* @__PURE__ */ jsxRuntime.jsx(CodeBlock.CodeBlock, { bare: true, language, source, jsonFormat: density === "compact" ? "yaml" : "json" }) });
|
|
59
61
|
}
|
|
60
62
|
exports.DetailBlock = DetailBlock;
|
|
61
63
|
exports.DiffBlock = DiffBlock;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionViewer.tool-details.cjs","sources":["../../../src/data/ai/SessionViewer.tool-details.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { CodeBlock } from \"../CodeBlock\";\nimport { CodeDiff } from \"../CodeDiff\";\nimport type {\n SessionQuestion,\n ToolDiff,\n ToolParam,\n} from \"./SessionViewer.input\";\n\nexport function QuestionCard({\n question,\n index,\n}: {\n question: SessionQuestion;\n index: number;\n}) {\n const label =\n question.context ||\n (question.id ? `Question ${question.id}` : `Question ${index + 1}`);\n return (\n <div className=\"rounded-md border border-sky-500/20 bg-sky-500/5 px-density-3 py-density-2\">\n <div className=\"text-[11px] font-medium uppercase text-muted-foreground\">\n {label}\n </div>\n <div className=\"mt-0.5 whitespace-pre-wrap break-words text-sm text-foreground\">\n {question.text}\n </div>\n {question.options.length > 0 && (\n <div className=\"mt-1.5 flex flex-wrap gap-1\">\n {question.options.map((option) => (\n <span\n key={option.value}\n className=\"rounded border border-border bg-background px-1.5 py-0.5 text-[11px] text-muted-foreground\"\n >\n <span className=\"font-medium text-foreground\">\n {option.label}\n </span>\n {option.description && (\n <span className=\"ml-1\">{option.description}</span>\n )}\n </span>\n ))}\n </div>\n )}\n </div>\n );\n}\n\nexport function InlineParams({ params }: { params: ToolParam[] }) {\n return (\n <span className=\"min-w-0 flex-1 truncate font-mono text-xs\">\n {params.map((param) => (\n <span key={param.name} className=\"[&:not(:first-child)]:ml-2\">\n <span className=\"text-muted-foreground/70\">{param.name}: </span>\n <span className=\"text-muted-foreground\">{param.value}</span>\n </span>\n ))}\n </span>\n );\n}\n\nexport function DiffBlock({ diff }: { diff: ToolDiff }) {\n return (\n <div className=\"space-y-1.5\">\n {diff.segments.map((segment, index) => (\n <CodeDiff\n key={index}\n bare\n showLineNumbers={false}\n original={segment.original}\n modified={segment.modified}\n {...(diff.language ? { language: diff.language } : {})}\n />\n ))}\n </div>\n );\n}\n\nexport function ResponseBlock({ response }: { response: string }) {\n const trimmed = response.trim();\n const isJson = trimmed.startsWith(\"{\") || trimmed.startsWith(\"[\");\n return <DetailBlock language={isJson ? \"json\" : \"text\"} source={response} />;\n}\n\nexport function DetailBlock({\n language,\n source,\n}: {\n language: string;\n source: string;\n}): ReactNode {\n return (\n <div className=\"overflow-x-auto text-xs\">\n <CodeBlock bare language={language} source={source} />\n </div>\n );\n}\n"],"names":["jsxs","jsx","CodeDiff","CodeBlock"],"mappings":"
|
|
1
|
+
{"version":3,"file":"SessionViewer.tool-details.cjs","sources":["../../../src/data/ai/SessionViewer.tool-details.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { useDensityValue } from \"../../hooks/use-density\";\nimport { CodeBlock } from \"../CodeBlock\";\nimport { CodeDiff } from \"../CodeDiff\";\nimport type {\n SessionQuestion,\n ToolDiff,\n ToolParam,\n} from \"./SessionViewer.input\";\n\nexport function QuestionCard({\n question,\n index,\n}: {\n question: SessionQuestion;\n index: number;\n}) {\n const label =\n question.context ||\n (question.id ? `Question ${question.id}` : `Question ${index + 1}`);\n return (\n <div className=\"rounded-md border border-sky-500/20 bg-sky-500/5 px-density-3 py-density-2\">\n <div className=\"text-[11px] font-medium uppercase text-muted-foreground\">\n {label}\n </div>\n <div className=\"mt-0.5 whitespace-pre-wrap break-words text-sm text-foreground\">\n {question.text}\n </div>\n {question.options.length > 0 && (\n <div className=\"mt-1.5 flex flex-wrap gap-1\">\n {question.options.map((option) => (\n <span\n key={option.value}\n className=\"rounded border border-border bg-background px-1.5 py-0.5 text-[11px] text-muted-foreground\"\n >\n <span className=\"font-medium text-foreground\">\n {option.label}\n </span>\n {option.description && (\n <span className=\"ml-1\">{option.description}</span>\n )}\n </span>\n ))}\n </div>\n )}\n </div>\n );\n}\n\nexport function InlineParams({ params }: { params: ToolParam[] }) {\n return (\n <span className=\"min-w-0 flex-1 truncate font-mono text-xs\">\n {params.map((param) => (\n <span key={param.name} className=\"[&:not(:first-child)]:ml-2\">\n <span className=\"text-muted-foreground/70\">{param.name}: </span>\n <span className=\"text-muted-foreground\">{param.value}</span>\n </span>\n ))}\n </span>\n );\n}\n\nexport function DiffBlock({ diff }: { diff: ToolDiff }) {\n return (\n <div className=\"space-y-1.5\">\n {diff.segments.map((segment, index) => (\n <CodeDiff\n key={index}\n bare\n showLineNumbers={false}\n original={segment.original}\n modified={segment.modified}\n {...(diff.language ? { language: diff.language } : {})}\n />\n ))}\n </div>\n );\n}\n\nexport function ResponseBlock({ response }: { response: string }) {\n const trimmed = response.trim();\n const isJson = trimmed.startsWith(\"{\") || trimmed.startsWith(\"[\");\n return <DetailBlock language={isJson ? \"json\" : \"text\"} source={response} />;\n}\n\nexport function DetailBlock({\n language,\n source,\n}: {\n language: string;\n source: string;\n}): ReactNode {\n const density = useDensityValue();\n return (\n <div className=\"overflow-x-auto text-xs\">\n <CodeBlock bare language={language} source={source} jsonFormat={density === \"compact\" ? \"yaml\" : \"json\"} />\n </div>\n );\n}\n"],"names":["jsxs","jsx","CodeDiff","useDensityValue","CodeBlock"],"mappings":";;;;;;AAUO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AACF,GAGG;AACD,QAAM,QACJ,SAAS,YACR,SAAS,KAAK,YAAY,SAAS,EAAE,KAAK,YAAY,QAAQ,CAAC;AAClE,SACEA,2BAAAA,KAAC,OAAA,EAAI,WAAU,8EACb,UAAA;AAAA,IAAAC,2BAAAA,IAAC,OAAA,EAAI,WAAU,2DACZ,UAAA,OACH;AAAA,IACAA,2BAAAA,IAAC,OAAA,EAAI,WAAU,kEACZ,mBAAS,MACZ;AAAA,IACC,SAAS,QAAQ,SAAS,KACzBA,2BAAAA,IAAC,OAAA,EAAI,WAAU,+BACZ,UAAA,SAAS,QAAQ,IAAI,CAAC,WACrBD,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QAEC,WAAU;AAAA,QAEV,UAAA;AAAA,UAAAC,2BAAAA,IAAC,QAAA,EAAK,WAAU,+BACb,UAAA,OAAO,OACV;AAAA,UACC,OAAO,eACNA,2BAAAA,IAAC,UAAK,WAAU,QAAQ,iBAAO,YAAA,CAAY;AAAA,QAAA;AAAA,MAAA;AAAA,MAPxC,OAAO;AAAA,IAAA,CAUf,EAAA,CACH;AAAA,EAAA,GAEJ;AAEJ;AAEO,SAAS,aAAa,EAAE,UAAmC;AAChE,SACEA,2BAAAA,IAAC,QAAA,EAAK,WAAU,6CACb,UAAA,OAAO,IAAI,CAAC,UACXD,2BAAAA,KAAC,QAAA,EAAsB,WAAU,8BAC/B,UAAA;AAAA,IAAAA,2BAAAA,KAAC,QAAA,EAAK,WAAU,4BAA4B,UAAA;AAAA,MAAA,MAAM;AAAA,MAAK;AAAA,IAAA,GAAE;AAAA,IACzDC,2BAAAA,IAAC,QAAA,EAAK,WAAU,yBAAyB,gBAAM,MAAA,CAAM;AAAA,EAAA,EAAA,GAF5C,MAAM,IAGjB,CACD,GACH;AAEJ;AAEO,SAAS,UAAU,EAAE,QAA4B;AACtD,SACEA,+BAAC,SAAI,WAAU,eACZ,eAAK,SAAS,IAAI,CAAC,SAAS,UAC3BA,2BAAAA;AAAAA,IAACC,SAAAA;AAAAA,IAAA;AAAA,MAEC,MAAI;AAAA,MACJ,iBAAiB;AAAA,MACjB,UAAU,QAAQ;AAAA,MAClB,UAAU,QAAQ;AAAA,MACjB,GAAI,KAAK,WAAW,EAAE,UAAU,KAAK,SAAA,IAAa,CAAA;AAAA,IAAC;AAAA,IAL/C;AAAA,EAAA,CAOR,GACH;AAEJ;AAEO,SAAS,cAAc,EAAE,YAAkC;AAChE,QAAM,UAAU,SAAS,KAAA;AACzB,QAAM,SAAS,QAAQ,WAAW,GAAG,KAAK,QAAQ,WAAW,GAAG;AAChE,wCAAQ,aAAA,EAAY,UAAU,SAAS,SAAS,QAAQ,QAAQ,UAAU;AAC5E;AAEO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AACF,GAGc;AACZ,QAAM,UAAUC,WAAAA,gBAAA;AAChB,SACEF,2BAAAA,IAAC,OAAA,EAAI,WAAU,2BACb,yCAACG,UAAAA,WAAA,EAAU,MAAI,MAAC,UAAoB,QAAgB,YAAY,YAAY,YAAY,SAAS,QAAQ,GAC3G;AAEJ;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionViewer.tool-details.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SessionViewer.tool-details.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SessionViewer.tool-details.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SessionViewer.tool-details.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,KAAK,EACV,eAAe,EACf,QAAQ,EACR,SAAS,EACV,MAAM,uBAAuB,CAAC;AAE/B,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;CACf,+BA+BA;AAED,wBAAgB,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,SAAS,EAAE,CAAA;CAAE,+BAW/D;AAED,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,+BAerD;AAED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,+BAI/D;AAED,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,MAAM,GACP,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,SAAS,CAOZ"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useDensityValue } from "../../hooks/use-density.js";
|
|
2
3
|
import { CodeBlock } from "../CodeBlock.js";
|
|
3
4
|
import { CodeDiff } from "../CodeDiff.js";
|
|
4
5
|
function QuestionCard({
|
|
@@ -53,7 +54,8 @@ function DetailBlock({
|
|
|
53
54
|
language,
|
|
54
55
|
source
|
|
55
56
|
}) {
|
|
56
|
-
|
|
57
|
+
const density = useDensityValue();
|
|
58
|
+
return /* @__PURE__ */ jsx("div", { className: "overflow-x-auto text-xs", children: /* @__PURE__ */ jsx(CodeBlock, { bare: true, language, source, jsonFormat: density === "compact" ? "yaml" : "json" }) });
|
|
57
59
|
}
|
|
58
60
|
export {
|
|
59
61
|
DetailBlock,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionViewer.tool-details.js","sources":["../../../src/data/ai/SessionViewer.tool-details.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { CodeBlock } from \"../CodeBlock\";\nimport { CodeDiff } from \"../CodeDiff\";\nimport type {\n SessionQuestion,\n ToolDiff,\n ToolParam,\n} from \"./SessionViewer.input\";\n\nexport function QuestionCard({\n question,\n index,\n}: {\n question: SessionQuestion;\n index: number;\n}) {\n const label =\n question.context ||\n (question.id ? `Question ${question.id}` : `Question ${index + 1}`);\n return (\n <div className=\"rounded-md border border-sky-500/20 bg-sky-500/5 px-density-3 py-density-2\">\n <div className=\"text-[11px] font-medium uppercase text-muted-foreground\">\n {label}\n </div>\n <div className=\"mt-0.5 whitespace-pre-wrap break-words text-sm text-foreground\">\n {question.text}\n </div>\n {question.options.length > 0 && (\n <div className=\"mt-1.5 flex flex-wrap gap-1\">\n {question.options.map((option) => (\n <span\n key={option.value}\n className=\"rounded border border-border bg-background px-1.5 py-0.5 text-[11px] text-muted-foreground\"\n >\n <span className=\"font-medium text-foreground\">\n {option.label}\n </span>\n {option.description && (\n <span className=\"ml-1\">{option.description}</span>\n )}\n </span>\n ))}\n </div>\n )}\n </div>\n );\n}\n\nexport function InlineParams({ params }: { params: ToolParam[] }) {\n return (\n <span className=\"min-w-0 flex-1 truncate font-mono text-xs\">\n {params.map((param) => (\n <span key={param.name} className=\"[&:not(:first-child)]:ml-2\">\n <span className=\"text-muted-foreground/70\">{param.name}: </span>\n <span className=\"text-muted-foreground\">{param.value}</span>\n </span>\n ))}\n </span>\n );\n}\n\nexport function DiffBlock({ diff }: { diff: ToolDiff }) {\n return (\n <div className=\"space-y-1.5\">\n {diff.segments.map((segment, index) => (\n <CodeDiff\n key={index}\n bare\n showLineNumbers={false}\n original={segment.original}\n modified={segment.modified}\n {...(diff.language ? { language: diff.language } : {})}\n />\n ))}\n </div>\n );\n}\n\nexport function ResponseBlock({ response }: { response: string }) {\n const trimmed = response.trim();\n const isJson = trimmed.startsWith(\"{\") || trimmed.startsWith(\"[\");\n return <DetailBlock language={isJson ? \"json\" : \"text\"} source={response} />;\n}\n\nexport function DetailBlock({\n language,\n source,\n}: {\n language: string;\n source: string;\n}): ReactNode {\n return (\n <div className=\"overflow-x-auto text-xs\">\n <CodeBlock bare language={language} source={source} />\n </div>\n );\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SessionViewer.tool-details.js","sources":["../../../src/data/ai/SessionViewer.tool-details.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { useDensityValue } from \"../../hooks/use-density\";\nimport { CodeBlock } from \"../CodeBlock\";\nimport { CodeDiff } from \"../CodeDiff\";\nimport type {\n SessionQuestion,\n ToolDiff,\n ToolParam,\n} from \"./SessionViewer.input\";\n\nexport function QuestionCard({\n question,\n index,\n}: {\n question: SessionQuestion;\n index: number;\n}) {\n const label =\n question.context ||\n (question.id ? `Question ${question.id}` : `Question ${index + 1}`);\n return (\n <div className=\"rounded-md border border-sky-500/20 bg-sky-500/5 px-density-3 py-density-2\">\n <div className=\"text-[11px] font-medium uppercase text-muted-foreground\">\n {label}\n </div>\n <div className=\"mt-0.5 whitespace-pre-wrap break-words text-sm text-foreground\">\n {question.text}\n </div>\n {question.options.length > 0 && (\n <div className=\"mt-1.5 flex flex-wrap gap-1\">\n {question.options.map((option) => (\n <span\n key={option.value}\n className=\"rounded border border-border bg-background px-1.5 py-0.5 text-[11px] text-muted-foreground\"\n >\n <span className=\"font-medium text-foreground\">\n {option.label}\n </span>\n {option.description && (\n <span className=\"ml-1\">{option.description}</span>\n )}\n </span>\n ))}\n </div>\n )}\n </div>\n );\n}\n\nexport function InlineParams({ params }: { params: ToolParam[] }) {\n return (\n <span className=\"min-w-0 flex-1 truncate font-mono text-xs\">\n {params.map((param) => (\n <span key={param.name} className=\"[&:not(:first-child)]:ml-2\">\n <span className=\"text-muted-foreground/70\">{param.name}: </span>\n <span className=\"text-muted-foreground\">{param.value}</span>\n </span>\n ))}\n </span>\n );\n}\n\nexport function DiffBlock({ diff }: { diff: ToolDiff }) {\n return (\n <div className=\"space-y-1.5\">\n {diff.segments.map((segment, index) => (\n <CodeDiff\n key={index}\n bare\n showLineNumbers={false}\n original={segment.original}\n modified={segment.modified}\n {...(diff.language ? { language: diff.language } : {})}\n />\n ))}\n </div>\n );\n}\n\nexport function ResponseBlock({ response }: { response: string }) {\n const trimmed = response.trim();\n const isJson = trimmed.startsWith(\"{\") || trimmed.startsWith(\"[\");\n return <DetailBlock language={isJson ? \"json\" : \"text\"} source={response} />;\n}\n\nexport function DetailBlock({\n language,\n source,\n}: {\n language: string;\n source: string;\n}): ReactNode {\n const density = useDensityValue();\n return (\n <div className=\"overflow-x-auto text-xs\">\n <CodeBlock bare language={language} source={source} jsonFormat={density === \"compact\" ? \"yaml\" : \"json\"} />\n </div>\n );\n}\n"],"names":[],"mappings":";;;;AAUO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AACF,GAGG;AACD,QAAM,QACJ,SAAS,YACR,SAAS,KAAK,YAAY,SAAS,EAAE,KAAK,YAAY,QAAQ,CAAC;AAClE,SACE,qBAAC,OAAA,EAAI,WAAU,8EACb,UAAA;AAAA,IAAA,oBAAC,OAAA,EAAI,WAAU,2DACZ,UAAA,OACH;AAAA,IACA,oBAAC,OAAA,EAAI,WAAU,kEACZ,mBAAS,MACZ;AAAA,IACC,SAAS,QAAQ,SAAS,KACzB,oBAAC,OAAA,EAAI,WAAU,+BACZ,UAAA,SAAS,QAAQ,IAAI,CAAC,WACrB;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,WAAU;AAAA,QAEV,UAAA;AAAA,UAAA,oBAAC,QAAA,EAAK,WAAU,+BACb,UAAA,OAAO,OACV;AAAA,UACC,OAAO,eACN,oBAAC,UAAK,WAAU,QAAQ,iBAAO,YAAA,CAAY;AAAA,QAAA;AAAA,MAAA;AAAA,MAPxC,OAAO;AAAA,IAAA,CAUf,EAAA,CACH;AAAA,EAAA,GAEJ;AAEJ;AAEO,SAAS,aAAa,EAAE,UAAmC;AAChE,SACE,oBAAC,QAAA,EAAK,WAAU,6CACb,UAAA,OAAO,IAAI,CAAC,UACX,qBAAC,QAAA,EAAsB,WAAU,8BAC/B,UAAA;AAAA,IAAA,qBAAC,QAAA,EAAK,WAAU,4BAA4B,UAAA;AAAA,MAAA,MAAM;AAAA,MAAK;AAAA,IAAA,GAAE;AAAA,IACzD,oBAAC,QAAA,EAAK,WAAU,yBAAyB,gBAAM,MAAA,CAAM;AAAA,EAAA,EAAA,GAF5C,MAAM,IAGjB,CACD,GACH;AAEJ;AAEO,SAAS,UAAU,EAAE,QAA4B;AACtD,SACE,oBAAC,SAAI,WAAU,eACZ,eAAK,SAAS,IAAI,CAAC,SAAS,UAC3B;AAAA,IAAC;AAAA,IAAA;AAAA,MAEC,MAAI;AAAA,MACJ,iBAAiB;AAAA,MACjB,UAAU,QAAQ;AAAA,MAClB,UAAU,QAAQ;AAAA,MACjB,GAAI,KAAK,WAAW,EAAE,UAAU,KAAK,SAAA,IAAa,CAAA;AAAA,IAAC;AAAA,IAL/C;AAAA,EAAA,CAOR,GACH;AAEJ;AAEO,SAAS,cAAc,EAAE,YAAkC;AAChE,QAAM,UAAU,SAAS,KAAA;AACzB,QAAM,SAAS,QAAQ,WAAW,GAAG,KAAK,QAAQ,WAAW,GAAG;AAChE,6BAAQ,aAAA,EAAY,UAAU,SAAS,SAAS,QAAQ,QAAQ,UAAU;AAC5E;AAEO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AACF,GAGc;AACZ,QAAM,UAAU,gBAAA;AAChB,SACE,oBAAC,OAAA,EAAI,WAAU,2BACb,8BAAC,WAAA,EAAU,MAAI,MAAC,UAAoB,QAAgB,YAAY,YAAY,YAAY,SAAS,QAAQ,GAC3G;AAEJ;"}
|
|
@@ -11,11 +11,13 @@ const SessionViewer_toolDetails = require("./SessionViewer.tool-details.cjs");
|
|
|
11
11
|
const approvalRequest = require("./approval-request.cjs");
|
|
12
12
|
const SessionViewer_approvalBody = require("./SessionViewer.approval-body.cjs");
|
|
13
13
|
const SessionViewer_decisionControls = require("./SessionViewer.decision-controls.cjs");
|
|
14
|
+
const SessionViewer_toolCost = require("./SessionViewer.tool-cost.cjs");
|
|
14
15
|
const UiChevronDown = require("../../icons/components/UiChevronDown.cjs");
|
|
15
16
|
function ToolBody({
|
|
16
17
|
event,
|
|
17
18
|
visual,
|
|
18
19
|
defaultExpanded,
|
|
20
|
+
showEstimatedToolCost = false,
|
|
19
21
|
onPendingToolDecision
|
|
20
22
|
}) {
|
|
21
23
|
const summary = SessionViewer_input.summarizeToolInput(
|
|
@@ -25,21 +27,27 @@ function ToolBody({
|
|
|
25
27
|
);
|
|
26
28
|
const command = SessionViewer_input.shellCommand(event.tool ?? "", event.toolInput);
|
|
27
29
|
const [open, setOpen] = react.useState(defaultExpanded);
|
|
30
|
+
const cost = showEstimatedToolCost ? /* @__PURE__ */ jsxRuntime.jsx(SessionViewer_toolCost.EstimatedToolCost, { events: [event] }) : null;
|
|
31
|
+
const costFooter = showEstimatedToolCost ? /* @__PURE__ */ jsxRuntime.jsx(SessionViewer_toolCost.EstimatedToolCost, { events: [event], detailed: true }) : null;
|
|
32
|
+
const hasDetail = event.toolResponse !== void 0 || command === void 0 && event.toolInput !== void 0 || showEstimatedToolCost && event.estimatedCost !== void 0;
|
|
28
33
|
if (event.tool === "AskUserQuestion" || event.approvalKind === "question") {
|
|
29
34
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
30
35
|
QuestionToolBody,
|
|
31
36
|
{
|
|
32
37
|
event,
|
|
33
38
|
visual,
|
|
34
|
-
onDecision: onPendingToolDecision
|
|
39
|
+
onDecision: onPendingToolDecision,
|
|
40
|
+
cost,
|
|
41
|
+
costFooter
|
|
35
42
|
}
|
|
36
43
|
);
|
|
37
44
|
}
|
|
38
45
|
if (event.pending && approvalRequest.hasApprovalBody(event.approvalRequest)) {
|
|
39
46
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "not-prose", children: [
|
|
40
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
47
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { "data-tool-header": true, className: "flex items-center gap-1.5", children: [
|
|
41
48
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 font-medium text-foreground", children: visual.label }),
|
|
42
|
-
/* @__PURE__ */ jsxRuntime.jsx(SessionViewer_rowMetadata.ApprovalBadge, { event })
|
|
49
|
+
/* @__PURE__ */ jsxRuntime.jsx(SessionViewer_rowMetadata.ApprovalBadge, { event }),
|
|
50
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto", children: cost })
|
|
43
51
|
] }),
|
|
44
52
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
45
53
|
SessionViewer_approvalBody.TypedApprovalBody,
|
|
@@ -48,15 +56,17 @@ function ToolBody({
|
|
|
48
56
|
request: event.approvalRequest,
|
|
49
57
|
onDecision: onPendingToolDecision
|
|
50
58
|
}
|
|
51
|
-
)
|
|
59
|
+
),
|
|
60
|
+
costFooter
|
|
52
61
|
] });
|
|
53
62
|
}
|
|
54
63
|
if (command !== void 0) {
|
|
55
64
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "not-prose", children: [
|
|
56
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-1.5", children: [
|
|
65
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { "data-tool-header": true, className: "flex items-start gap-1.5", children: [
|
|
57
66
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(CodeBlock.CodeBlock, { bare: true, language: "bash", source: command }) }),
|
|
58
67
|
/* @__PURE__ */ jsxRuntime.jsx(SessionViewer_rowMetadata.ApprovalBadge, { event }),
|
|
59
|
-
|
|
68
|
+
cost,
|
|
69
|
+
hasDetail && /* @__PURE__ */ jsxRuntime.jsx(
|
|
60
70
|
"button",
|
|
61
71
|
{
|
|
62
72
|
type: "button",
|
|
@@ -77,7 +87,10 @@ function ToolBody({
|
|
|
77
87
|
}
|
|
78
88
|
)
|
|
79
89
|
] }),
|
|
80
|
-
open &&
|
|
90
|
+
open && hasDetail && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-1.5", children: [
|
|
91
|
+
event.toolResponse !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(SessionViewer_toolDetails.ResponseBlock, { response: event.toolResponse }),
|
|
92
|
+
costFooter
|
|
93
|
+
] }),
|
|
81
94
|
event.pending && onPendingToolDecision && /* @__PURE__ */ jsxRuntime.jsx(
|
|
82
95
|
SessionViewer_decisionControls.PendingDecisionControls,
|
|
83
96
|
{
|
|
@@ -88,7 +101,6 @@ function ToolBody({
|
|
|
88
101
|
)
|
|
89
102
|
] });
|
|
90
103
|
}
|
|
91
|
-
const hasDetail = event.toolInput !== void 0 || event.toolResponse !== void 0;
|
|
92
104
|
const params = SessionViewer_input.toolInputParams(event.tool ?? "", event.toolInput, event.cwd);
|
|
93
105
|
const diff = SessionViewer_input.toolDiff(event.tool ?? "", event.toolInput);
|
|
94
106
|
const header = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
@@ -107,28 +119,31 @@ function ToolBody({
|
|
|
107
119
|
params.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(SessionViewer_toolDetails.InlineParams, { params })
|
|
108
120
|
] });
|
|
109
121
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "not-prose", children: [
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
122
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { "data-tool-header": true, className: "flex items-center gap-1.5", children: [
|
|
123
|
+
hasDetail ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
124
|
+
"button",
|
|
125
|
+
{
|
|
126
|
+
type: "button",
|
|
127
|
+
"aria-expanded": open,
|
|
128
|
+
onClick: () => setOpen((value) => !value),
|
|
129
|
+
className: "flex min-w-0 flex-1 items-center gap-1.5 text-left hover:text-foreground",
|
|
130
|
+
children: [
|
|
131
|
+
header,
|
|
132
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
133
|
+
Icon.Icon,
|
|
134
|
+
{
|
|
135
|
+
icon: UiChevronDown.UiChevronDown,
|
|
136
|
+
className: utils.cn(
|
|
137
|
+
"ml-auto size-3 shrink-0 text-muted-foreground transition-transform",
|
|
138
|
+
open && "rotate-180"
|
|
139
|
+
)
|
|
140
|
+
}
|
|
141
|
+
)
|
|
142
|
+
]
|
|
143
|
+
}
|
|
144
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex min-w-0 flex-1 items-center gap-1.5", children: header }),
|
|
145
|
+
cost
|
|
146
|
+
] }),
|
|
132
147
|
open && hasDetail && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-1.5 space-y-1.5", children: [
|
|
133
148
|
diff ? /* @__PURE__ */ jsxRuntime.jsx(SessionViewer_toolDetails.DiffBlock, { diff }) : event.toolInput !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
134
149
|
SessionViewer_toolDetails.DetailBlock,
|
|
@@ -137,7 +152,8 @@ function ToolBody({
|
|
|
137
152
|
source: JSON.stringify(event.toolInput, null, 2)
|
|
138
153
|
}
|
|
139
154
|
),
|
|
140
|
-
event.toolResponse !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(SessionViewer_toolDetails.ResponseBlock, { response: event.toolResponse })
|
|
155
|
+
event.toolResponse !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(SessionViewer_toolDetails.ResponseBlock, { response: event.toolResponse }),
|
|
156
|
+
costFooter
|
|
141
157
|
] }),
|
|
142
158
|
event.pending && onPendingToolDecision && /* @__PURE__ */ jsxRuntime.jsx(
|
|
143
159
|
SessionViewer_decisionControls.PendingDecisionControls,
|
|
@@ -152,7 +168,9 @@ function ToolBody({
|
|
|
152
168
|
function QuestionToolBody({
|
|
153
169
|
event,
|
|
154
170
|
visual,
|
|
155
|
-
onDecision
|
|
171
|
+
onDecision,
|
|
172
|
+
cost,
|
|
173
|
+
costFooter
|
|
156
174
|
}) {
|
|
157
175
|
var _a;
|
|
158
176
|
const typedQuestions = (_a = event.approvalRequest) == null ? void 0 : _a.questions;
|
|
@@ -163,10 +181,11 @@ function QuestionToolBody({
|
|
|
163
181
|
event.cwd
|
|
164
182
|
);
|
|
165
183
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "not-prose", children: [
|
|
166
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex
|
|
184
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { "data-tool-header": true, className: "flex items-center gap-1.5", children: [
|
|
167
185
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 font-medium text-foreground", children: visual.label }),
|
|
168
186
|
/* @__PURE__ */ jsxRuntime.jsx(SessionViewer_rowMetadata.ApprovalBadge, { event }),
|
|
169
|
-
summary && questions.length !== 1 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 truncate text-xs text-muted-foreground", children: summary })
|
|
187
|
+
summary && questions.length !== 1 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 truncate text-xs text-muted-foreground", children: summary }),
|
|
188
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto", children: cost })
|
|
170
189
|
] }),
|
|
171
190
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-1.5 space-y-1.5", children: [
|
|
172
191
|
questions.length > 0 ? questions.map((question, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -195,7 +214,8 @@ function QuestionToolBody({
|
|
|
195
214
|
questions,
|
|
196
215
|
onDecision
|
|
197
216
|
}
|
|
198
|
-
)
|
|
217
|
+
),
|
|
218
|
+
costFooter
|
|
199
219
|
] })
|
|
200
220
|
] });
|
|
201
221
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionViewer.tool-row.cjs","sources":["../../../src/data/ai/SessionViewer.tool-row.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { UiChevronDown } from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport { CodeBlock } from \"../CodeBlock\";\nimport { Icon } from \"../Icon\";\nimport {\n questionsFromApproval,\n questionsFromToolInput,\n shellCommand,\n summarizeToolInput,\n toolDiff,\n toolInputParams,\n} from \"./SessionViewer.input\";\nimport type { SessionEvent } from \"./SessionViewer.model\";\nimport { ApprovalBadge } from \"./SessionViewer.row-metadata\";\nimport {\n DetailBlock,\n DiffBlock,\n InlineParams,\n QuestionCard,\n ResponseBlock,\n} from \"./SessionViewer.tool-details\";\nimport { hasApprovalBody } from \"./approval-request\";\nimport { TypedApprovalBody } from \"./SessionViewer.approval-body\";\nimport {\n PendingDecisionControls,\n QuestionDecisionControls,\n} from \"./SessionViewer.decision-controls\";\nimport type { SessionToolDecision } from \"./SessionViewer\";\n\nexport function ToolBody({\n event,\n visual,\n defaultExpanded,\n onPendingToolDecision,\n}: {\n event: SessionEvent;\n visual: { label: string; summaryOnly: boolean };\n defaultExpanded: boolean;\n onPendingToolDecision?:\n | ((decision: SessionToolDecision) => Promise<void> | void)\n | undefined;\n}) {\n const summary = summarizeToolInput(\n event.tool ?? \"\",\n event.toolInput,\n event.cwd,\n );\n const command = shellCommand(event.tool ?? \"\", event.toolInput);\n const [open, setOpen] = useState(defaultExpanded);\n\n if (event.tool === \"AskUserQuestion\" || event.approvalKind === \"question\") {\n return (\n <QuestionToolBody\n event={event}\n visual={visual}\n onDecision={onPendingToolDecision}\n />\n );\n }\n\n if (event.pending && hasApprovalBody(event.approvalRequest)) {\n return (\n <div className=\"not-prose\">\n <div className=\"flex items-center gap-1.5\">\n <span className=\"shrink-0 font-medium text-foreground\">\n {visual.label}\n </span>\n <ApprovalBadge event={event} />\n </div>\n <TypedApprovalBody\n event={event}\n request={event.approvalRequest}\n onDecision={onPendingToolDecision}\n />\n </div>\n );\n }\n\n if (command !== undefined) {\n return (\n <div className=\"not-prose\">\n <div className=\"flex items-start gap-1.5\">\n <div className=\"min-w-0 flex-1\">\n <CodeBlock bare language=\"bash\" source={command} />\n </div>\n <ApprovalBadge event={event} />\n {event.toolResponse !== undefined && (\n <button\n type=\"button\"\n aria-expanded={open}\n aria-label=\"Toggle response\"\n onClick={() => setOpen((value) => !value)}\n className=\"text-muted-foreground hover:text-foreground\"\n >\n <Icon\n icon={UiChevronDown}\n className={cn(\n \"size-3 shrink-0 transition-transform\",\n open && \"rotate-180\",\n )}\n />\n </button>\n )}\n </div>\n {open && event.toolResponse !== undefined && (\n <div className=\"mt-1.5\">\n <ResponseBlock response={event.toolResponse} />\n </div>\n )}\n {event.pending && onPendingToolDecision && (\n <PendingDecisionControls\n event={event}\n request={event.approvalRequest}\n onDecision={onPendingToolDecision}\n />\n )}\n </div>\n );\n }\n\n const hasDetail =\n event.toolInput !== undefined || event.toolResponse !== undefined;\n const params = toolInputParams(event.tool ?? \"\", event.toolInput, event.cwd);\n const diff = toolDiff(event.tool ?? \"\", event.toolInput);\n const header = (\n <>\n {visual.summaryOnly && summary ? (\n <span className=\"min-w-0 truncate font-mono text-xs text-foreground \">\n {summary}\n </span>\n ) : (\n <span className=\"shrink-0 font-medium text-foreground\">\n {visual.label}\n </span>\n )}\n {diff && (\n <span className=\"shrink-0 font-mono text-xs\">\n {diff.added > 0 && (\n <span className=\"text-emerald-600 [[data-theme=dark]_&]:text-emerald-400\">\n +{diff.added}\n </span>\n )}\n {diff.removed > 0 && (\n <span className=\"ml-1 text-rose-600 [[data-theme=dark]_&]:text-rose-400\">\n -{diff.removed}\n </span>\n )}\n </span>\n )}\n <ApprovalBadge event={event} />\n {params.length > 0 && <InlineParams params={params} />}\n </>\n );\n\n return (\n <div className=\"not-prose\">\n {hasDetail ? (\n <button\n type=\"button\"\n aria-expanded={open}\n onClick={() => setOpen((value) => !value)}\n className=\"flex w-full items-center gap-1.5 text-left hover:text-foreground\"\n >\n {header}\n <Icon\n icon={UiChevronDown}\n className={cn(\n \"ml-auto size-3 shrink-0 text-muted-foreground transition-transform\",\n open && \"rotate-180\",\n )}\n />\n </button>\n ) : (\n <div className=\"flex items-center gap-1.5\">{header}</div>\n )}\n\n {open && hasDetail && (\n <div className=\"mt-1.5 space-y-1.5\">\n {diff ? (\n <DiffBlock diff={diff} />\n ) : (\n event.toolInput !== undefined && (\n <DetailBlock\n language=\"json\"\n source={JSON.stringify(event.toolInput, null, 2)}\n />\n )\n )}\n {event.toolResponse !== undefined && (\n <ResponseBlock response={event.toolResponse} />\n )}\n </div>\n )}\n {event.pending && onPendingToolDecision && (\n <PendingDecisionControls\n event={event}\n request={event.approvalRequest}\n onDecision={onPendingToolDecision}\n />\n )}\n </div>\n );\n}\n\nfunction QuestionToolBody({\n event,\n visual,\n onDecision,\n}: {\n event: SessionEvent;\n visual: { label: string };\n onDecision?:\n | ((decision: SessionToolDecision) => Promise<void> | void)\n | undefined;\n}) {\n const typedQuestions = event.approvalRequest?.questions;\n const questions = typedQuestions?.length\n ? questionsFromApproval(typedQuestions)\n : questionsFromToolInput(event.toolInput);\n const summary = summarizeToolInput(\n event.tool ?? \"\",\n event.toolInput,\n event.cwd,\n );\n\n return (\n <div className=\"not-prose\">\n <div className=\"flex flex-wrap items-center gap-1.5\">\n <span className=\"shrink-0 font-medium text-foreground\">\n {visual.label}\n </span>\n <ApprovalBadge event={event} />\n {summary && questions.length !== 1 && (\n <span className=\"min-w-0 truncate text-xs text-muted-foreground\">\n {summary}\n </span>\n )}\n </div>\n <div className=\"mt-1.5 space-y-1.5\">\n {questions.length > 0 ? (\n questions.map((question, index) => (\n <QuestionCard\n key={`${question.id}-${index}`}\n question={question}\n index={index}\n />\n ))\n ) : event.toolInput ? (\n <DetailBlock\n language=\"json\"\n source={JSON.stringify(event.toolInput, null, 2)}\n />\n ) : null}\n {event.toolResponse !== undefined && (\n <div className=\"space-y-1\">\n <div className=\"text-[11px] font-medium uppercase text-muted-foreground\">\n Answer\n </div>\n <ResponseBlock response={event.toolResponse} />\n </div>\n )}\n {event.pending && onDecision && (\n <QuestionDecisionControls\n event={event}\n request={event.approvalRequest}\n questions={questions}\n onDecision={onDecision}\n />\n )}\n </div>\n </div>\n );\n}\n"],"names":["summarizeToolInput","shellCommand","useState","jsx","hasApprovalBody","jsxs","ApprovalBadge","TypedApprovalBody","CodeBlock","Icon","UiChevronDown","cn","ResponseBlock","PendingDecisionControls","toolInputParams","toolDiff","Fragment","InlineParams","DiffBlock","DetailBlock","questionsFromApproval","questionsFromToolInput","QuestionCard","QuestionDecisionControls"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SessionViewer.tool-row.cjs","sources":["../../../src/data/ai/SessionViewer.tool-row.tsx"],"sourcesContent":["import { useState, type ReactNode } from \"react\";\nimport { UiChevronDown } from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport { CodeBlock } from \"../CodeBlock\";\nimport { Icon } from \"../Icon\";\nimport {\n questionsFromApproval,\n questionsFromToolInput,\n shellCommand,\n summarizeToolInput,\n toolDiff,\n toolInputParams,\n} from \"./SessionViewer.input\";\nimport type { SessionEvent } from \"./SessionViewer.model\";\nimport { ApprovalBadge } from \"./SessionViewer.row-metadata\";\nimport {\n DetailBlock,\n DiffBlock,\n InlineParams,\n QuestionCard,\n ResponseBlock,\n} from \"./SessionViewer.tool-details\";\nimport { hasApprovalBody } from \"./approval-request\";\nimport { TypedApprovalBody } from \"./SessionViewer.approval-body\";\nimport {\n PendingDecisionControls,\n QuestionDecisionControls,\n} from \"./SessionViewer.decision-controls\";\nimport type { SessionToolDecision } from \"./SessionViewer\";\nimport { EstimatedToolCost } from \"./SessionViewer.tool-cost\";\n\nexport function ToolBody({\n event,\n visual,\n defaultExpanded,\n showEstimatedToolCost = false,\n onPendingToolDecision,\n}: {\n event: SessionEvent;\n visual: { label: string; summaryOnly: boolean };\n defaultExpanded: boolean;\n showEstimatedToolCost?: boolean;\n onPendingToolDecision?:\n | ((decision: SessionToolDecision) => Promise<void> | void)\n | undefined;\n}) {\n const summary = summarizeToolInput(\n event.tool ?? \"\",\n event.toolInput,\n event.cwd,\n );\n const command = shellCommand(event.tool ?? \"\", event.toolInput);\n const [open, setOpen] = useState(defaultExpanded);\n const cost = showEstimatedToolCost ? <EstimatedToolCost events={[event]} /> : null;\n const costFooter = showEstimatedToolCost ? <EstimatedToolCost events={[event]} detailed /> : null;\n const hasDetail = event.toolResponse !== undefined || (command === undefined && event.toolInput !== undefined) || (showEstimatedToolCost && event.estimatedCost !== undefined);\n\n if (event.tool === \"AskUserQuestion\" || event.approvalKind === \"question\") {\n return (\n <QuestionToolBody\n event={event}\n visual={visual}\n onDecision={onPendingToolDecision}\n cost={cost}\n costFooter={costFooter}\n />\n );\n }\n\n if (event.pending && hasApprovalBody(event.approvalRequest)) {\n return (\n <div className=\"not-prose\">\n <div data-tool-header className=\"flex items-center gap-1.5\">\n <span className=\"shrink-0 font-medium text-foreground\">\n {visual.label}\n </span>\n <ApprovalBadge event={event} />\n <span className=\"ml-auto\">{cost}</span>\n </div>\n <TypedApprovalBody\n event={event}\n request={event.approvalRequest}\n onDecision={onPendingToolDecision}\n />\n {costFooter}\n </div>\n );\n }\n\n if (command !== undefined) {\n return (\n <div className=\"not-prose\">\n <div data-tool-header className=\"flex items-start gap-1.5\">\n <div className=\"min-w-0 flex-1\">\n <CodeBlock bare language=\"bash\" source={command} />\n </div>\n <ApprovalBadge event={event} />\n {cost}\n {hasDetail && (\n <button\n type=\"button\"\n aria-expanded={open}\n aria-label=\"Toggle response\"\n onClick={() => setOpen((value) => !value)}\n className=\"text-muted-foreground hover:text-foreground\"\n >\n <Icon\n icon={UiChevronDown}\n className={cn(\n \"size-3 shrink-0 transition-transform\",\n open && \"rotate-180\",\n )}\n />\n </button>\n )}\n </div>\n {open && hasDetail && (\n <div className=\"mt-1.5\">\n {event.toolResponse !== undefined && <ResponseBlock response={event.toolResponse} />}\n {costFooter}\n </div>\n )}\n {event.pending && onPendingToolDecision && (\n <PendingDecisionControls\n event={event}\n request={event.approvalRequest}\n onDecision={onPendingToolDecision}\n />\n )}\n </div>\n );\n }\n\n const params = toolInputParams(event.tool ?? \"\", event.toolInput, event.cwd);\n const diff = toolDiff(event.tool ?? \"\", event.toolInput);\n const header = (\n <>\n {visual.summaryOnly && summary ? (\n <span className=\"min-w-0 truncate font-mono text-xs text-foreground \">\n {summary}\n </span>\n ) : (\n <span className=\"shrink-0 font-medium text-foreground\">\n {visual.label}\n </span>\n )}\n {diff && (\n <span className=\"shrink-0 font-mono text-xs\">\n {diff.added > 0 && (\n <span className=\"text-emerald-600 [[data-theme=dark]_&]:text-emerald-400\">\n +{diff.added}\n </span>\n )}\n {diff.removed > 0 && (\n <span className=\"ml-1 text-rose-600 [[data-theme=dark]_&]:text-rose-400\">\n -{diff.removed}\n </span>\n )}\n </span>\n )}\n <ApprovalBadge event={event} />\n {params.length > 0 && <InlineParams params={params} />}\n </>\n );\n\n return (\n <div className=\"not-prose\">\n <div data-tool-header className=\"flex items-center gap-1.5\">\n {hasDetail ? (\n <button\n type=\"button\"\n aria-expanded={open}\n onClick={() => setOpen((value) => !value)}\n className=\"flex min-w-0 flex-1 items-center gap-1.5 text-left hover:text-foreground\"\n >\n {header}\n <Icon\n icon={UiChevronDown}\n className={cn(\n \"ml-auto size-3 shrink-0 text-muted-foreground transition-transform\",\n open && \"rotate-180\",\n )}\n />\n </button>\n ) : (\n <div className=\"flex min-w-0 flex-1 items-center gap-1.5\">{header}</div>\n )}\n {cost}\n </div>\n\n {open && hasDetail && (\n <div className=\"mt-1.5 space-y-1.5\">\n {diff ? (\n <DiffBlock diff={diff} />\n ) : (\n event.toolInput !== undefined && (\n <DetailBlock\n language=\"json\"\n source={JSON.stringify(event.toolInput, null, 2)}\n />\n )\n )}\n {event.toolResponse !== undefined && (\n <ResponseBlock response={event.toolResponse} />\n )}\n {costFooter}\n </div>\n )}\n {event.pending && onPendingToolDecision && (\n <PendingDecisionControls\n event={event}\n request={event.approvalRequest}\n onDecision={onPendingToolDecision}\n />\n )}\n </div>\n );\n}\n\nfunction QuestionToolBody({\n event,\n visual,\n onDecision,\n cost,\n costFooter,\n}: {\n event: SessionEvent;\n visual: { label: string };\n cost: ReactNode;\n costFooter: ReactNode;\n onDecision?:\n | ((decision: SessionToolDecision) => Promise<void> | void)\n | undefined;\n}) {\n const typedQuestions = event.approvalRequest?.questions;\n const questions = typedQuestions?.length\n ? questionsFromApproval(typedQuestions)\n : questionsFromToolInput(event.toolInput);\n const summary = summarizeToolInput(\n event.tool ?? \"\",\n event.toolInput,\n event.cwd,\n );\n\n return (\n <div className=\"not-prose\">\n <div data-tool-header className=\"flex items-center gap-1.5\">\n <span className=\"shrink-0 font-medium text-foreground\">\n {visual.label}\n </span>\n <ApprovalBadge event={event} />\n {summary && questions.length !== 1 && (\n <span className=\"min-w-0 flex-1 truncate text-xs text-muted-foreground\">\n {summary}\n </span>\n )}\n <span className=\"ml-auto\">{cost}</span>\n </div>\n <div className=\"mt-1.5 space-y-1.5\">\n {questions.length > 0 ? (\n questions.map((question, index) => (\n <QuestionCard\n key={`${question.id}-${index}`}\n question={question}\n index={index}\n />\n ))\n ) : event.toolInput ? (\n <DetailBlock\n language=\"json\"\n source={JSON.stringify(event.toolInput, null, 2)}\n />\n ) : null}\n {event.toolResponse !== undefined && (\n <div className=\"space-y-1\">\n <div className=\"text-[11px] font-medium uppercase text-muted-foreground\">\n Answer\n </div>\n <ResponseBlock response={event.toolResponse} />\n </div>\n )}\n {event.pending && onDecision && (\n <QuestionDecisionControls\n event={event}\n request={event.approvalRequest}\n questions={questions}\n onDecision={onDecision}\n />\n )}\n {costFooter}\n </div>\n </div>\n );\n}\n"],"names":["summarizeToolInput","shellCommand","useState","jsx","EstimatedToolCost","hasApprovalBody","jsxs","ApprovalBadge","TypedApprovalBody","CodeBlock","Icon","UiChevronDown","cn","ResponseBlock","PendingDecisionControls","toolInputParams","toolDiff","Fragment","InlineParams","DiffBlock","DetailBlock","questionsFromApproval","questionsFromToolInput","QuestionCard","QuestionDecisionControls"],"mappings":"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"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { SessionEvent } from './SessionViewer.model.js';
|
|
2
2
|
import { SessionToolDecision } from './SessionViewer.js';
|
|
3
|
-
export declare function ToolBody({ event, visual, defaultExpanded, onPendingToolDecision, }: {
|
|
3
|
+
export declare function ToolBody({ event, visual, defaultExpanded, showEstimatedToolCost, onPendingToolDecision, }: {
|
|
4
4
|
event: SessionEvent;
|
|
5
5
|
visual: {
|
|
6
6
|
label: string;
|
|
7
7
|
summaryOnly: boolean;
|
|
8
8
|
};
|
|
9
9
|
defaultExpanded: boolean;
|
|
10
|
+
showEstimatedToolCost?: boolean;
|
|
10
11
|
onPendingToolDecision?: ((decision: SessionToolDecision) => Promise<void> | void) | undefined;
|
|
11
12
|
}): import("react").JSX.Element;
|
|
12
13
|
//# sourceMappingURL=SessionViewer.tool-row.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionViewer.tool-row.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SessionViewer.tool-row.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAe1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"SessionViewer.tool-row.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SessionViewer.tool-row.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAe1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAG3D,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,MAAM,EACN,eAAe,EACf,qBAA6B,EAC7B,qBAAqB,GACtB,EAAE;IACD,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC;IAChD,eAAe,EAAE,OAAO,CAAC;IACzB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,qBAAqB,CAAC,EAClB,CAAC,CAAC,QAAQ,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GACzD,SAAS,CAAC;CACf,+BA4KA"}
|