@flanksource/clicky-ui 0.3.44 → 0.3.45
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 +2 -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/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/GraphDiagram.cjs +18 -6
- package/dist/data/GraphDiagram.cjs.map +1 -1
- package/dist/data/GraphDiagram.d.ts +9 -1
- package/dist/data/GraphDiagram.d.ts.map +1 -1
- package/dist/data/GraphDiagram.js +18 -6
- package/dist/data/GraphDiagram.js.map +1 -1
- package/dist/data/GraphDiagramNodes.cjs +38 -29
- package/dist/data/GraphDiagramNodes.cjs.map +1 -1
- package/dist/data/GraphDiagramNodes.d.ts +8 -2
- package/dist/data/GraphDiagramNodes.d.ts.map +1 -1
- package/dist/data/GraphDiagramNodes.js +38 -29
- 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/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 +250 -0
- package/dist/data/call-graph/CallGraph.cjs.map +1 -0
- package/dist/data/call-graph/CallGraph.d.ts +69 -0
- package/dist/data/call-graph/CallGraph.d.ts.map +1 -0
- package/dist/data/call-graph/CallGraph.js +250 -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 +50 -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 +50 -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 +186 -0
- package/dist/data/call-graph/CallGraphToolbar.cjs.map +1 -0
- package/dist/data/call-graph/CallGraphToolbar.d.ts +45 -0
- package/dist/data/call-graph/CallGraphToolbar.d.ts.map +1 -0
- package/dist/data/call-graph/CallGraphToolbar.js +186 -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 +161 -0
- package/dist/data/call-graph/call-graph-model.cjs.map +1 -0
- package/dist/data/call-graph/call-graph-model.d.ts +102 -0
- package/dist/data/call-graph/call-graph-model.d.ts.map +1 -0
- package/dist/data/call-graph/call-graph-model.js +161 -0
- package/dist/data/call-graph/call-graph-model.js.map +1 -0
- package/dist/data/call-graph/call-graph-vocabulary.cjs +177 -0
- package/dist/data/call-graph/call-graph-vocabulary.cjs.map +1 -0
- package/dist/data/call-graph/call-graph-vocabulary.d.ts +72 -0
- package/dist/data/call-graph/call-graph-vocabulary.d.ts.map +1 -0
- package/dist/data/call-graph/call-graph-vocabulary.js +177 -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 +135 -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/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/graph-columns-layout.cjs +26 -10
- package/dist/data/graph-columns-layout.cjs.map +1 -1
- package/dist/data/graph-columns-layout.d.ts +8 -0
- package/dist/data/graph-columns-layout.d.ts.map +1 -1
- package/dist/data/graph-columns-layout.js +26 -10
- package/dist/data/graph-columns-layout.js.map +1 -1
- package/dist/data/graph-diagram-model.cjs.map +1 -1
- package/dist/data/graph-diagram-model.d.ts +5 -0
- package/dist/data/graph-diagram-model.d.ts.map +1 -1
- 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/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-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 +26 -2
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +1 -0
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +24 -0
- package/dist/data.js.map +1 -1
- package/dist/index.cjs +28 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +24 -0
- 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/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 @@
|
|
|
1
|
+
{"version":3,"file":"SessionViewer.tokens.js","sources":["../../../src/data/ai/SessionViewer.tokens.tsx"],"sourcesContent":["import { useContext } from \"react\";\nimport { DropdownMenu } from \"../../overlay/DropdownMenu\";\nimport { UiDotsVertical } from \"../../icons\";\nimport type { SessionEvent } from \"./SessionViewer.model\";\nimport { SessionTokenContext } from \"./use-session-token-sizing\";\nimport { compactTokens, formatCost } from \"./session-cost\";\n\nexport function SessionRowTokens({ event }: { event: SessionEvent }) {\n const sizing = useContext(SessionTokenContext);\n if (!sizing || event.pending) return null;\n const row = sizing.state(event);\n const size = row?.size;\n const title = size ? `${size.source} · ${size.model}. Input ${size.usage.inputTokens ?? 0}, output ${size.usage.outputTokens ?? 0}, reasoning ${size.usage.reasoningTokens ?? 0}. ${size.coverage.framingIncluded ? \"Provider framing included. \" : \"\"}Excluded: ${size.coverage.excluded?.join(\"; \") || \"none\"}. Content footprint; not historical billed usage.` : undefined;\n return (\n <div className=\"flex min-w-0 flex-wrap items-center gap-1 text-xs text-muted-foreground\" data-row-tokens={event.id}>\n {size && <span aria-label=\"Calculated row footprint\" title={title}>Footprint {size.source === \"local-estimate\" || size.source === \"provider-estimate\" ? \"~\" : \"\"}{compactTokens(size.totalTokens)} tokens · {size.costUSD !== undefined ? `~${formatCost(size.costUSD)}` : \"price unavailable\"}{size.coverage.partial ? \" · partial\" : \"\"}</span>}\n {row?.pending && <span role=\"status\">Calculating tokens/cost…</span>}\n {row?.error && <span role=\"alert\" className=\"text-destructive\">{row.error}</span>}\n {!event.estimatedCost && (\n <DropdownMenu icon={UiDotsVertical} hideChevron variant=\"ghost\" size=\"icon\" title={`Row options ${event.id}`} menuLabel={`Row options ${event.id}`} items={[{\n label: \"Calculate tokens/cost\", disabled: Boolean(row?.pending),\n onSelect: () => sizing.calculate([event.id], \"provider\"),\n }]} />\n )}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;AAOO,SAAS,iBAAiB,EAAE,SAAkC;;AACnE,QAAM,SAAS,WAAW,mBAAmB;AAC7C,MAAI,CAAC,UAAU,MAAM,QAAS,QAAO;AACrC,QAAM,MAAM,OAAO,MAAM,KAAK;AAC9B,QAAM,OAAO,2BAAK;AAClB,QAAM,QAAQ,OAAO,GAAG,KAAK,MAAM,MAAM,KAAK,KAAK,WAAW,KAAK,MAAM,eAAe,CAAC,YAAY,KAAK,MAAM,gBAAgB,CAAC,eAAe,KAAK,MAAM,mBAAmB,CAAC,KAAK,KAAK,SAAS,kBAAkB,gCAAgC,EAAE,eAAa,UAAK,SAAS,aAAd,mBAAwB,KAAK,UAAS,MAAM,sDAAsD;AACrW,8BACG,OAAA,EAAI,WAAU,2EAA0E,mBAAiB,MAAM,IAC7G,UAAA;AAAA,IAAA,QAAQ,qBAAC,QAAA,EAAK,cAAW,4BAA2B,OAAc,UAAA;AAAA,MAAA;AAAA,MAAW,KAAK,WAAW,oBAAoB,KAAK,WAAW,sBAAsB,MAAM;AAAA,MAAI,cAAc,KAAK,WAAW;AAAA,MAAE;AAAA,MAAW,KAAK,YAAY,SAAY,IAAI,WAAW,KAAK,OAAO,CAAC,KAAK;AAAA,MAAqB,KAAK,SAAS,UAAU,eAAe;AAAA,IAAA,GAAG;AAAA,KACzU,2BAAK,YAAW,oBAAC,QAAA,EAAK,MAAK,UAAS,UAAA,4BAAwB;AAAA,KAC5D,2BAAK,UAAS,oBAAC,QAAA,EAAK,MAAK,SAAQ,WAAU,oBAAoB,UAAA,IAAI,MAAA,CAAM;AAAA,IACzE,CAAC,MAAM,iBACN,oBAAC,cAAA,EAAa,MAAM,gBAAgB,aAAW,MAAC,SAAQ,SAAQ,MAAK,QAAO,OAAO,eAAe,MAAM,EAAE,IAAI,WAAW,eAAe,MAAM,EAAE,IAAI,OAAO,CAAC;AAAA,MAC1J,OAAO;AAAA,MAAyB,UAAU,QAAQ,2BAAK,OAAO;AAAA,MAC9D,UAAU,MAAM,OAAO,UAAU,CAAC,MAAM,EAAE,GAAG,UAAU;AAAA,IAAA,CACxD,EAAA,CAAG;AAAA,EAAA,GAER;AAEJ;"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const sessionCost = require("./session-cost.cjs");
|
|
5
|
+
const UiCoins = require("../../icons/components/UiCoins.cjs");
|
|
6
|
+
const tokens = require("../../lib/tokens.cjs");
|
|
7
|
+
const UiDatabase = require("../../icons/components/UiDatabase.cjs");
|
|
8
|
+
const UiArrowUp = require("../../icons/components/UiArrowUp.cjs");
|
|
9
|
+
const UiArrowDown = require("../../icons/components/UiArrowDown.cjs");
|
|
10
|
+
const UiBrain = require("../../icons/components/UiBrain.cjs");
|
|
11
|
+
const TOKEN_BUCKETS = [
|
|
12
|
+
["inputTokens", "In", "Input", UiArrowUp.UiArrowUp],
|
|
13
|
+
["outputTokens", "Out", "Output", UiArrowDown.UiArrowDown],
|
|
14
|
+
["reasoningTokens", "Reasoning", "Reasoning", UiBrain.UiBrain],
|
|
15
|
+
["cacheReadTokens", "Cache read", "Cache read", UiDatabase.UiDatabaseDown],
|
|
16
|
+
["cacheWriteTokens", "Cache write", "Cache write", UiDatabase.UiDatabaseUp]
|
|
17
|
+
];
|
|
18
|
+
function EstimatedToolCost({
|
|
19
|
+
events,
|
|
20
|
+
detailed = false
|
|
21
|
+
}) {
|
|
22
|
+
var _a;
|
|
23
|
+
const estimates = events.flatMap(
|
|
24
|
+
(event) => event.estimatedCost ? [event.estimatedCost] : []
|
|
25
|
+
);
|
|
26
|
+
if (!estimates.length) {
|
|
27
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
28
|
+
"span",
|
|
29
|
+
{
|
|
30
|
+
"aria-label": detailed ? "Estimated tool cost details" : "Estimate unavailable",
|
|
31
|
+
title: "Estimate unavailable",
|
|
32
|
+
className: "shrink-0 text-[11px] text-muted-foreground",
|
|
33
|
+
children: detailed ? "Estimate unavailable" : "—"
|
|
34
|
+
}
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
const costs = estimates.map((estimate) => estimate.cost);
|
|
38
|
+
const total = costs.reduce((sum, cost) => sum + sessionCost.costTotal(cost), 0);
|
|
39
|
+
const sharedCalls = (_a = estimates[0]) == null ? void 0 : _a.sharedCalls;
|
|
40
|
+
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.`;
|
|
41
|
+
const description = `${allocation} Includes conversation context and generating the calls. Reading tool results is accounted for in subsequent model requests. Estimated cost in USD.`;
|
|
42
|
+
if (!detailed) {
|
|
43
|
+
const cacheReadTokens = costs.reduce((sum, cost) => sum + (cost.cacheReadTokens ?? 0), 0);
|
|
44
|
+
const cacheReadDescription = `Cache read delta: ${cacheReadTokens.toLocaleString("en-US")} tokens`;
|
|
45
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
46
|
+
"span",
|
|
47
|
+
{
|
|
48
|
+
role: "group",
|
|
49
|
+
"aria-label": "Estimated tool cost",
|
|
50
|
+
title: description,
|
|
51
|
+
className: "inline-flex shrink-0 items-center gap-0.5 whitespace-nowrap text-[11px] tabular-nums text-muted-foreground",
|
|
52
|
+
children: [
|
|
53
|
+
/* @__PURE__ */ jsxRuntime.jsx(UiCoins.UiCoins, { className: "size-3 shrink-0" }),
|
|
54
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: total > 0 ? `~${tokens.formatCost(total)}` : "—" }),
|
|
55
|
+
cacheReadTokens > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
56
|
+
"span",
|
|
57
|
+
{
|
|
58
|
+
role: "group",
|
|
59
|
+
"aria-label": cacheReadDescription,
|
|
60
|
+
title: cacheReadDescription,
|
|
61
|
+
className: "ml-1 inline-flex items-center gap-0.5",
|
|
62
|
+
children: [
|
|
63
|
+
/* @__PURE__ */ jsxRuntime.jsx(UiDatabase.UiDatabaseDown, { className: "size-3 shrink-0" }),
|
|
64
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
|
|
65
|
+
"+",
|
|
66
|
+
tokens.compactTokens(cacheReadTokens)
|
|
67
|
+
] })
|
|
68
|
+
]
|
|
69
|
+
}
|
|
70
|
+
)
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
76
|
+
"div",
|
|
77
|
+
{
|
|
78
|
+
role: "group",
|
|
79
|
+
"aria-label": "Estimated tool cost details",
|
|
80
|
+
title: description,
|
|
81
|
+
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",
|
|
82
|
+
children: [
|
|
83
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
84
|
+
"span",
|
|
85
|
+
{
|
|
86
|
+
role: "group",
|
|
87
|
+
"aria-label": total > 0 ? `Estimated cost: ${tokens.formatCost(total)} USD` : "Cost unavailable",
|
|
88
|
+
className: "inline-flex items-center gap-1",
|
|
89
|
+
children: [
|
|
90
|
+
/* @__PURE__ */ jsxRuntime.jsx(UiCoins.UiCoins, { className: "size-3.5 shrink-0" }),
|
|
91
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "Est." }),
|
|
92
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-semibold text-foreground", children: total > 0 ? `~${tokens.formatCost(total)}` : "Cost unavailable" }),
|
|
93
|
+
total > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[9px] font-medium", children: "USD" })
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
),
|
|
97
|
+
TOKEN_BUCKETS.map(([key, label, name, BucketIcon]) => {
|
|
98
|
+
const tokens$1 = costs.reduce((sum, cost) => sum + (cost[key] ?? 0), 0);
|
|
99
|
+
const description2 = `${name}: ${tokens$1.toLocaleString("en-US")} tokens`;
|
|
100
|
+
return tokens$1 > 0 ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
101
|
+
"span",
|
|
102
|
+
{
|
|
103
|
+
role: "group",
|
|
104
|
+
"aria-label": description2,
|
|
105
|
+
title: description2,
|
|
106
|
+
className: "inline-flex items-center gap-1 whitespace-nowrap",
|
|
107
|
+
children: [
|
|
108
|
+
/* @__PURE__ */ jsxRuntime.jsx(BucketIcon, { className: "size-3.5 shrink-0" }),
|
|
109
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
|
|
110
|
+
label,
|
|
111
|
+
" ",
|
|
112
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium text-foreground", children: tokens.compactTokens(tokens$1) })
|
|
113
|
+
] })
|
|
114
|
+
]
|
|
115
|
+
},
|
|
116
|
+
key
|
|
117
|
+
) : null;
|
|
118
|
+
}),
|
|
119
|
+
estimates.length < events.length && /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
|
|
120
|
+
events.length - estimates.length,
|
|
121
|
+
" unavailable"
|
|
122
|
+
] })
|
|
123
|
+
]
|
|
124
|
+
}
|
|
125
|
+
);
|
|
126
|
+
}
|
|
127
|
+
exports.EstimatedToolCost = EstimatedToolCost;
|
|
128
|
+
//# sourceMappingURL=SessionViewer.tool-cost.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionViewer.tool-cost.cjs","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":["UiArrowUp","UiArrowDown","UiBrain","UiDatabaseDown","UiDatabaseUp","jsx","costTotal","jsxs","UiCoins","formatCost","compactTokens","tokens","description"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionViewer.tool-cost.d.ts","sourceRoot":"","sources":["../../../src/data/ai/SessionViewer.tool-cost.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAoB1D,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,QAAgB,GACjB,EAAE;IACD,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,+BAoGA"}
|
|
@@ -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
|
}
|