@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
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { jsxs,
|
|
1
|
+
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { Button } from "../../components/button.js";
|
|
3
3
|
import { cn } from "../../lib/utils.js";
|
|
4
|
-
import {
|
|
4
|
+
import { Icon } from "../Icon.js";
|
|
5
5
|
import { RuntimeBar } from "../runtime/RuntimeBar.js";
|
|
6
|
-
import {
|
|
6
|
+
import { SegmentItemLabel, SEGMENT_KEY_CLASS, SEGMENT_CAPTION_CLASS } from "../runtime/RuntimeBarSegment.js";
|
|
7
7
|
import { CLAUDE_PERMISSION_MODE_OPTIONS } from "../chat/types.js";
|
|
8
|
+
import { sessionTone } from "./session-tones.js";
|
|
9
|
+
import { permissionModeVisual } from "./SpecRuntimeEditor/permission-mode-visuals.js";
|
|
8
10
|
function AdvancedChatConfig({
|
|
9
11
|
models,
|
|
10
12
|
runtime,
|
|
@@ -14,277 +16,116 @@ function AdvancedChatConfig({
|
|
|
14
16
|
runtimeLocked = false,
|
|
15
17
|
permissionMode,
|
|
16
18
|
onPermissionModeChange,
|
|
17
|
-
temperature,
|
|
18
|
-
onTemperatureChange,
|
|
19
19
|
budget,
|
|
20
20
|
onBudgetChange,
|
|
21
|
-
usage,
|
|
22
21
|
catalogLoading = false,
|
|
23
22
|
catalogError = null,
|
|
24
23
|
onCatalogRetry
|
|
25
24
|
}) {
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if (parsed === void 0) delete next[key];
|
|
30
|
-
else next[key] = parsed;
|
|
31
|
-
onBudgetChange == null ? void 0 : onBudgetChange(next);
|
|
25
|
+
const barValue = {
|
|
26
|
+
...runtime,
|
|
27
|
+
...(budget == null ? void 0 : budget.cost) !== void 0 ? { budget: { cost: budget.cost } } : {}
|
|
32
28
|
};
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
]
|
|
57
|
-
}
|
|
58
|
-
),
|
|
59
|
-
/* @__PURE__ */ jsx(
|
|
60
|
-
RuntimeBar,
|
|
61
|
-
{
|
|
62
|
-
variant: "segmented",
|
|
63
|
-
ariaLabel: "Advanced runtime",
|
|
64
|
-
value: runtime,
|
|
65
|
-
onChange: (next) => onRuntimeChange == null ? void 0 : onRuntimeChange(next),
|
|
66
|
-
models,
|
|
67
|
-
reasoningEfforts,
|
|
68
|
-
locked: runtimeLocked,
|
|
69
|
-
...runtimeFamilies ? { families: runtimeFamilies } : {},
|
|
70
|
-
className: "max-w-full"
|
|
71
|
-
}
|
|
72
|
-
),
|
|
73
|
-
/* @__PURE__ */ jsxs("label", { className: "grid max-w-md grid-cols-[9rem_minmax(0,1fr)] items-center gap-3 text-xs", children: [
|
|
74
|
-
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "Permission mode" }),
|
|
75
|
-
/* @__PURE__ */ jsx(
|
|
76
|
-
"select",
|
|
77
|
-
{
|
|
78
|
-
"aria-label": "Permission mode",
|
|
79
|
-
value: permissionMode,
|
|
80
|
-
onChange: (event) => onPermissionModeChange == null ? void 0 : onPermissionModeChange(
|
|
81
|
-
event.target.value
|
|
82
|
-
),
|
|
83
|
-
className: "h-8 rounded border border-border bg-background px-2 text-xs",
|
|
84
|
-
children: CLAUDE_PERMISSION_MODE_OPTIONS.map((option) => /* @__PURE__ */ jsx(
|
|
85
|
-
"option",
|
|
86
|
-
{
|
|
87
|
-
value: option.value,
|
|
88
|
-
title: option.description,
|
|
89
|
-
children: option.label
|
|
90
|
-
},
|
|
91
|
-
option.value
|
|
92
|
-
))
|
|
93
|
-
}
|
|
94
|
-
)
|
|
95
|
-
] })
|
|
96
|
-
] }),
|
|
97
|
-
/* @__PURE__ */ jsxs("section", { className: "space-y-3", children: [
|
|
98
|
-
/* @__PURE__ */ jsx("div", { className: "text-xs font-semibold uppercase tracking-wider text-muted-foreground", children: "Generation" }),
|
|
99
|
-
/* @__PURE__ */ jsxs("label", { className: "grid grid-cols-[8rem_minmax(0,1fr)_4rem] items-center gap-3 text-xs", children: [
|
|
100
|
-
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "Temperature" }),
|
|
101
|
-
/* @__PURE__ */ jsx(
|
|
102
|
-
"input",
|
|
103
|
-
{
|
|
104
|
-
type: "range",
|
|
105
|
-
min: 0,
|
|
106
|
-
max: 2,
|
|
107
|
-
step: 0.1,
|
|
108
|
-
value: temperature ?? 0,
|
|
109
|
-
onChange: (event) => onTemperatureChange == null ? void 0 : onTemperatureChange(Number(event.target.value))
|
|
110
|
-
}
|
|
111
|
-
),
|
|
112
|
-
/* @__PURE__ */ jsx(
|
|
113
|
-
"input",
|
|
29
|
+
const handleBarChange = ({ budget: limits, ...next }) => {
|
|
30
|
+
if (next.model !== runtime.model || next.id !== runtime.id || next.mode !== runtime.mode || next.temperature !== runtime.temperature || next.effort !== runtime.effort || next.noCache !== runtime.noCache || next.fallbacks !== runtime.fallbacks) {
|
|
31
|
+
onRuntimeChange == null ? void 0 : onRuntimeChange(next);
|
|
32
|
+
}
|
|
33
|
+
if ((limits == null ? void 0 : limits.cost) === (budget == null ? void 0 : budget.cost)) return;
|
|
34
|
+
const updated = { ...budget };
|
|
35
|
+
if ((limits == null ? void 0 : limits.cost) === void 0) delete updated.cost;
|
|
36
|
+
else updated.cost = limits.cost;
|
|
37
|
+
onBudgetChange == null ? void 0 : onBudgetChange(updated);
|
|
38
|
+
};
|
|
39
|
+
return /* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 space-y-4 overflow-y-auto", children: /* @__PURE__ */ jsxs("section", { className: "space-y-3", children: [
|
|
40
|
+
/* @__PURE__ */ jsx("div", { className: "text-xs font-semibold uppercase tracking-wider text-muted-foreground", children: "Runtime" }),
|
|
41
|
+
runtimeLocked && /* @__PURE__ */ jsx("div", { className: "rounded border border-border bg-muted/40 px-3 py-2 text-xs text-muted-foreground", children: "Model and backend are locked after the first message. Fork this conversation to change them; effort, permissions and cost remain adjustable." }),
|
|
42
|
+
catalogLoading && /* @__PURE__ */ jsx("div", { className: "text-xs text-muted-foreground", children: "Checking model and runtime availability…" }),
|
|
43
|
+
catalogError && /* @__PURE__ */ jsxs(
|
|
44
|
+
"div",
|
|
45
|
+
{
|
|
46
|
+
role: "alert",
|
|
47
|
+
className: "flex items-center justify-between gap-3 rounded border border-destructive/40 bg-destructive/5 px-3 py-2 text-xs text-destructive",
|
|
48
|
+
children: [
|
|
49
|
+
/* @__PURE__ */ jsx("span", { children: catalogError }),
|
|
50
|
+
onCatalogRetry && /* @__PURE__ */ jsx(
|
|
51
|
+
Button,
|
|
114
52
|
{
|
|
115
|
-
type: "
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
onChange: (event) => onTemperatureChange == null ? void 0 : onTemperatureChange(parseOptionalNumber(event.target.value)),
|
|
121
|
-
className: "h-8 rounded border border-border bg-background px-2 text-xs"
|
|
53
|
+
type: "button",
|
|
54
|
+
size: "sm",
|
|
55
|
+
variant: "outline",
|
|
56
|
+
onClick: onCatalogRetry,
|
|
57
|
+
children: "Retry"
|
|
122
58
|
}
|
|
123
59
|
)
|
|
124
|
-
]
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
/* @__PURE__ */ jsx("div", { className: "text-xs font-semibold uppercase tracking-wider text-muted-foreground", children: "Budget" }),
|
|
128
|
-
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 gap-3", children: [
|
|
129
|
-
/* @__PURE__ */ jsxs("label", { className: "space-y-1 text-xs", children: [
|
|
130
|
-
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "Max cost" }),
|
|
131
|
-
/* @__PURE__ */ jsx(
|
|
132
|
-
"input",
|
|
133
|
-
{
|
|
134
|
-
type: "number",
|
|
135
|
-
min: 0,
|
|
136
|
-
step: 0.01,
|
|
137
|
-
value: (budget == null ? void 0 : budget.cost) ?? "",
|
|
138
|
-
onChange: (event) => updateBudget("cost", event.target.value),
|
|
139
|
-
className: "h-8 w-full rounded border border-border bg-background px-2 text-xs"
|
|
140
|
-
}
|
|
141
|
-
)
|
|
142
|
-
] }),
|
|
143
|
-
/* @__PURE__ */ jsxs("label", { className: "space-y-1 text-xs", children: [
|
|
144
|
-
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "Max tokens" }),
|
|
145
|
-
/* @__PURE__ */ jsx(
|
|
146
|
-
"input",
|
|
147
|
-
{
|
|
148
|
-
type: "number",
|
|
149
|
-
min: 0,
|
|
150
|
-
step: 1,
|
|
151
|
-
value: (budget == null ? void 0 : budget.maxTokens) ?? "",
|
|
152
|
-
onChange: (event) => updateBudget("maxTokens", event.target.value),
|
|
153
|
-
className: "h-8 w-full rounded border border-border bg-background px-2 text-xs"
|
|
154
|
-
}
|
|
155
|
-
)
|
|
156
|
-
] })
|
|
157
|
-
] })
|
|
158
|
-
] })
|
|
159
|
-
] }),
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
),
|
|
160
63
|
/* @__PURE__ */ jsx(
|
|
161
|
-
|
|
64
|
+
RuntimeBar,
|
|
162
65
|
{
|
|
163
|
-
|
|
66
|
+
ariaLabel: "Advanced runtime",
|
|
67
|
+
value: barValue,
|
|
68
|
+
onChange: handleBarChange,
|
|
164
69
|
models,
|
|
165
|
-
|
|
166
|
-
|
|
70
|
+
reasoningEfforts,
|
|
71
|
+
locked: runtimeLocked,
|
|
72
|
+
showCost: true,
|
|
73
|
+
actions: {
|
|
74
|
+
fields: [
|
|
75
|
+
chatPermissionField(permissionMode, onPermissionModeChange)
|
|
76
|
+
]
|
|
77
|
+
},
|
|
78
|
+
...runtimeFamilies ? { families: runtimeFamilies } : {},
|
|
79
|
+
className: "max-w-full"
|
|
167
80
|
}
|
|
168
81
|
)
|
|
169
|
-
] });
|
|
82
|
+
] }) });
|
|
170
83
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
const
|
|
178
|
-
const
|
|
179
|
-
return
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
)}`
|
|
189
|
-
}
|
|
190
|
-
),
|
|
191
|
-
/* @__PURE__ */ jsx(
|
|
192
|
-
MetricRow,
|
|
193
|
-
{
|
|
194
|
-
label: "Input tokens",
|
|
195
|
-
value: formatNumber(tokens == null ? void 0 : tokens.inputTokens)
|
|
196
|
-
}
|
|
197
|
-
),
|
|
198
|
-
/* @__PURE__ */ jsx(
|
|
199
|
-
MetricRow,
|
|
200
|
-
{
|
|
201
|
-
label: "Output tokens",
|
|
202
|
-
value: formatNumber(tokens == null ? void 0 : tokens.outputTokens)
|
|
203
|
-
}
|
|
204
|
-
),
|
|
205
|
-
/* @__PURE__ */ jsx(
|
|
206
|
-
MetricRow,
|
|
207
|
-
{
|
|
208
|
-
label: "Reasoning tokens",
|
|
209
|
-
value: formatNumber(tokens == null ? void 0 : tokens.reasoningTokens)
|
|
210
|
-
}
|
|
211
|
-
),
|
|
84
|
+
const PERMISSION_GROUP = "Permission mode";
|
|
85
|
+
function chatPermissionField(current, onChange) {
|
|
86
|
+
const option = CLAUDE_PERMISSION_MODE_OPTIONS.find(
|
|
87
|
+
(entry) => entry.value === current
|
|
88
|
+
);
|
|
89
|
+
const label = (option == null ? void 0 : option.label) ?? current;
|
|
90
|
+
const visual = (mode) => permissionModeVisual("claude", mode);
|
|
91
|
+
const currentVisual = visual(current);
|
|
92
|
+
return {
|
|
93
|
+
id: "permissions.mode",
|
|
94
|
+
isSet: true,
|
|
95
|
+
label: PERMISSION_GROUP,
|
|
96
|
+
icon: currentVisual.icon,
|
|
97
|
+
iconClassName: sessionTone(currentVisual.tone).text,
|
|
98
|
+
title: `${PERMISSION_GROUP} — ${label}`,
|
|
99
|
+
caption: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
100
|
+
/* @__PURE__ */ jsx("span", { className: cn(SEGMENT_KEY_CLASS, "min-w-0 truncate"), children: "Perms" }),
|
|
212
101
|
/* @__PURE__ */ jsx(
|
|
213
|
-
|
|
102
|
+
Icon,
|
|
214
103
|
{
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
MetricRow,
|
|
221
|
-
{
|
|
222
|
-
label: "Cache write tokens",
|
|
223
|
-
value: formatNumber(tokens == null ? void 0 : tokens.cacheWriteTokens)
|
|
104
|
+
icon: currentVisual.icon,
|
|
105
|
+
className: cn(
|
|
106
|
+
"size-4 shrink-0",
|
|
107
|
+
sessionTone(currentVisual.tone).text
|
|
108
|
+
)
|
|
224
109
|
}
|
|
225
110
|
),
|
|
226
|
-
/* @__PURE__ */ jsx(
|
|
227
|
-
MetricRow,
|
|
228
|
-
{
|
|
229
|
-
label: "Total tokens",
|
|
230
|
-
value: formatNumber(tokens == null ? void 0 : tokens.totalTokens)
|
|
231
|
-
}
|
|
232
|
-
)
|
|
111
|
+
/* @__PURE__ */ jsx("span", { className: cn(SEGMENT_CAPTION_CLASS, "shrink-0"), children: label })
|
|
233
112
|
] }),
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
/* @__PURE__ */ jsx(
|
|
239
|
-
|
|
240
|
-
/* @__PURE__ */ jsx(
|
|
241
|
-
MetricRow,
|
|
113
|
+
items: CLAUDE_PERMISSION_MODE_OPTIONS.map((entry) => ({
|
|
114
|
+
group: PERMISSION_GROUP,
|
|
115
|
+
icon: visual(entry.value).icon,
|
|
116
|
+
iconClassName: sessionTone(visual(entry.value).tone).text,
|
|
117
|
+
label: /* @__PURE__ */ jsx(
|
|
118
|
+
SegmentItemLabel,
|
|
242
119
|
{
|
|
243
|
-
|
|
244
|
-
|
|
120
|
+
text: entry.label,
|
|
121
|
+
hint: entry.description,
|
|
122
|
+
selected: entry.value === current,
|
|
123
|
+
stacked: true
|
|
245
124
|
}
|
|
246
125
|
),
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
label: "Conversation total",
|
|
251
|
-
value: formatUSD((usage == null ? void 0 : usage.cost) ?? (costs == null ? void 0 : costs.totalUsd)),
|
|
252
|
-
strong: true
|
|
253
|
-
}
|
|
254
|
-
)
|
|
255
|
-
] }),
|
|
256
|
-
showProviderStatus && /* @__PURE__ */ jsx(ProviderStatusPanel, { models, families })
|
|
257
|
-
] });
|
|
258
|
-
}
|
|
259
|
-
function MetricRow({
|
|
260
|
-
label,
|
|
261
|
-
value,
|
|
262
|
-
strong = false
|
|
263
|
-
}) {
|
|
264
|
-
return /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-[minmax(0,1fr)_auto] gap-3 border-b border-border px-2 py-1.5 text-xs last:border-b-0", children: [
|
|
265
|
-
/* @__PURE__ */ jsx("span", { className: "truncate text-muted-foreground", children: label }),
|
|
266
|
-
/* @__PURE__ */ jsx(
|
|
267
|
-
"span",
|
|
268
|
-
{
|
|
269
|
-
className: cn("font-mono", strong && "font-semibold text-foreground"),
|
|
270
|
-
children: value
|
|
271
|
-
}
|
|
272
|
-
)
|
|
273
|
-
] });
|
|
274
|
-
}
|
|
275
|
-
function parseOptionalNumber(raw, integer = false) {
|
|
276
|
-
if (raw.trim() === "") return void 0;
|
|
277
|
-
const value = Number(raw);
|
|
278
|
-
if (!Number.isFinite(value)) return void 0;
|
|
279
|
-
return integer ? Math.max(0, Math.trunc(value)) : value;
|
|
280
|
-
}
|
|
281
|
-
function formatNumber(value) {
|
|
282
|
-
if (value == null || !Number.isFinite(value)) return "-";
|
|
283
|
-
return new Intl.NumberFormat().format(value);
|
|
284
|
-
}
|
|
285
|
-
function formatUSD(value) {
|
|
286
|
-
if (value == null || !Number.isFinite(value)) return "-";
|
|
287
|
-
return `$${value.toFixed(value >= 1 ? 4 : 6)}`;
|
|
126
|
+
onSelect: () => onChange == null ? void 0 : onChange(entry.value)
|
|
127
|
+
}))
|
|
128
|
+
};
|
|
288
129
|
}
|
|
289
130
|
export {
|
|
290
131
|
AdvancedChatConfig
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedChatConfig.js","sources":["../../../src/data/ai/AdvancedChatConfig.tsx"],"sourcesContent":["import { Button } from \"../../components/button\";\nimport { cn } from \"../../lib/utils\";\nimport { ProviderStatusPanel } from \"../runtime/ProviderStatusPanel\";\nimport { RuntimeBar } from \"../runtime/RuntimeBar\";\nimport {\n SPEC_RUNTIME_FAMILIES,\n type SpecRuntimeFamily,\n} from \"../runtime/runtime-mode\";\nimport type {\n ChatBudgetConfig,\n ChatModel,\n ChatModelRuntime,\n ChatUsageSummary,\n ClaudePermissionMode,\n} from \"../chat/types\";\nimport { CLAUDE_PERMISSION_MODE_OPTIONS } from \"../chat/types\";\n\nexport type AdvancedChatConfigProps = {\n models: ChatModel[];\n runtime: ChatModelRuntime;\n onRuntimeChange?: ((runtime: ChatModelRuntime) => void) | undefined;\n runtimeFamilies?: SpecRuntimeFamily[] | undefined;\n reasoningEfforts: string[];\n runtimeLocked?: boolean | undefined;\n permissionMode: ClaudePermissionMode;\n onPermissionModeChange?: ((mode: ClaudePermissionMode) => void) | undefined;\n temperature?: number | undefined;\n onTemperatureChange?: ((temperature: number | undefined) => void) | undefined;\n budget?: ChatBudgetConfig | undefined;\n onBudgetChange?: ((budget: ChatBudgetConfig) => void) | undefined;\n usage?: ChatUsageSummary | null | undefined;\n catalogLoading?: boolean | undefined;\n catalogError?: string | null | undefined;\n onCatalogRetry?: (() => void) | undefined;\n};\n\nexport function AdvancedChatConfig({\n models,\n runtime,\n onRuntimeChange,\n runtimeFamilies,\n reasoningEfforts,\n runtimeLocked = false,\n permissionMode,\n onPermissionModeChange,\n temperature,\n onTemperatureChange,\n budget,\n onBudgetChange,\n usage,\n catalogLoading = false,\n catalogError = null,\n onCatalogRetry,\n}: AdvancedChatConfigProps) {\n const updateBudget = (key: keyof ChatBudgetConfig, raw: string) => {\n const next: ChatBudgetConfig = { ...budget };\n const parsed = parseOptionalNumber(raw, key === \"maxTokens\");\n if (parsed === undefined) delete next[key];\n else next[key] = parsed;\n onBudgetChange?.(next);\n };\n\n return (\n <div className=\"grid min-h-0 flex-1 gap-4 overflow-y-auto lg:grid-cols-[minmax(0,1fr)_minmax(18rem,24rem)]\">\n <div className=\"space-y-4\">\n <section className=\"space-y-3\">\n <div className=\"text-xs font-semibold uppercase tracking-wider text-muted-foreground\">\n Runtime\n </div>\n {runtimeLocked && (\n <div className=\"rounded border border-border bg-muted/40 px-3 py-2 text-xs text-muted-foreground\">\n Model and backend are locked after the first message. Fork this\n conversation to change them; effort and generation settings remain\n adjustable.\n </div>\n )}\n {catalogLoading && (\n <div className=\"text-xs text-muted-foreground\">\n Checking model and runtime availability…\n </div>\n )}\n {catalogError && (\n <div\n role=\"alert\"\n className=\"flex items-center justify-between gap-3 rounded border border-destructive/40 bg-destructive/5 px-3 py-2 text-xs text-destructive\"\n >\n <span>{catalogError}</span>\n {onCatalogRetry && (\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n onClick={onCatalogRetry}\n >\n Retry\n </Button>\n )}\n </div>\n )}\n <RuntimeBar\n variant=\"segmented\"\n ariaLabel=\"Advanced runtime\"\n value={runtime}\n onChange={(next) => onRuntimeChange?.(next)}\n models={models}\n reasoningEfforts={reasoningEfforts}\n locked={runtimeLocked}\n {...(runtimeFamilies ? { families: runtimeFamilies } : {})}\n className=\"max-w-full\"\n />\n <label className=\"grid max-w-md grid-cols-[9rem_minmax(0,1fr)] items-center gap-3 text-xs\">\n <span className=\"text-muted-foreground\">Permission mode</span>\n <select\n aria-label=\"Permission mode\"\n value={permissionMode}\n onChange={(event) =>\n onPermissionModeChange?.(\n event.target.value as ClaudePermissionMode,\n )\n }\n className=\"h-8 rounded border border-border bg-background px-2 text-xs\"\n >\n {CLAUDE_PERMISSION_MODE_OPTIONS.map((option) => (\n <option\n key={option.value}\n value={option.value}\n title={option.description}\n >\n {option.label}\n </option>\n ))}\n </select>\n </label>\n </section>\n <section className=\"space-y-3\">\n <div className=\"text-xs font-semibold uppercase tracking-wider text-muted-foreground\">\n Generation\n </div>\n <label className=\"grid grid-cols-[8rem_minmax(0,1fr)_4rem] items-center gap-3 text-xs\">\n <span className=\"text-muted-foreground\">Temperature</span>\n <input\n type=\"range\"\n min={0}\n max={2}\n step={0.1}\n value={temperature ?? 0}\n onChange={(event) =>\n onTemperatureChange?.(Number(event.target.value))\n }\n />\n <input\n type=\"number\"\n min={0}\n max={2}\n step={0.1}\n value={temperature ?? \"\"}\n onChange={(event) =>\n onTemperatureChange?.(parseOptionalNumber(event.target.value))\n }\n className=\"h-8 rounded border border-border bg-background px-2 text-xs\"\n />\n </label>\n </section>\n <section className=\"space-y-3\">\n <div className=\"text-xs font-semibold uppercase tracking-wider text-muted-foreground\">\n Budget\n </div>\n <div className=\"grid grid-cols-2 gap-3\">\n <label className=\"space-y-1 text-xs\">\n <span className=\"text-muted-foreground\">Max cost</span>\n <input\n type=\"number\"\n min={0}\n step={0.01}\n value={budget?.cost ?? \"\"}\n onChange={(event) => updateBudget(\"cost\", event.target.value)}\n className=\"h-8 w-full rounded border border-border bg-background px-2 text-xs\"\n />\n </label>\n <label className=\"space-y-1 text-xs\">\n <span className=\"text-muted-foreground\">Max tokens</span>\n <input\n type=\"number\"\n min={0}\n step={1}\n value={budget?.maxTokens ?? \"\"}\n onChange={(event) =>\n updateBudget(\"maxTokens\", event.target.value)\n }\n className=\"h-8 w-full rounded border border-border bg-background px-2 text-xs\"\n />\n </label>\n </div>\n </section>\n </div>\n <UsageCostPanel\n usage={usage}\n models={models}\n families={runtimeFamilies ?? SPEC_RUNTIME_FAMILIES}\n showProviderStatus={!catalogLoading}\n />\n </div>\n );\n}\n\nfunction UsageCostPanel({\n usage,\n models,\n families,\n showProviderStatus,\n}: {\n usage?: ChatUsageSummary | null | undefined;\n models: ChatModel[];\n families: SpecRuntimeFamily[];\n showProviderStatus: boolean;\n}) {\n const tokens = usage?.usage;\n const costs = usage?.costBreakdown;\n return (\n <aside className=\"space-y-3 border-t border-border pt-4 lg:border-l lg:border-t-0 lg:pl-4 lg:pt-0\">\n {/* Both tables describe the last completed turn; only the bold total is\n cumulative. Labelled explicitly because the rows will not sum to it,\n and the full conversation breakdown lives in the Costs tab. */}\n <div className=\"text-xs font-semibold uppercase tracking-wider text-muted-foreground\">\n Usage (last turn)\n </div>\n <div className=\"overflow-hidden rounded border border-border\">\n <MetricRow\n label=\"Context\"\n value={`${formatNumber(usage?.usedTokens)} / ${formatNumber(\n usage?.maxTokens,\n )}`}\n />\n <MetricRow\n label=\"Input tokens\"\n value={formatNumber(tokens?.inputTokens)}\n />\n <MetricRow\n label=\"Output tokens\"\n value={formatNumber(tokens?.outputTokens)}\n />\n <MetricRow\n label=\"Reasoning tokens\"\n value={formatNumber(tokens?.reasoningTokens)}\n />\n <MetricRow\n label=\"Cache read tokens\"\n value={formatNumber(tokens?.cacheReadTokens)}\n />\n <MetricRow\n label=\"Cache write tokens\"\n value={formatNumber(tokens?.cacheWriteTokens)}\n />\n <MetricRow\n label=\"Total tokens\"\n value={formatNumber(tokens?.totalTokens)}\n />\n </div>\n <div className=\"text-xs font-semibold uppercase tracking-wider text-muted-foreground\">\n Cost (last turn)\n </div>\n <div className=\"overflow-hidden rounded border border-border\">\n <MetricRow label=\"Input\" value={formatUSD(costs?.inputUsd)} />\n <MetricRow label=\"Output\" value={formatUSD(costs?.outputUsd)} />\n <MetricRow label=\"Reasoning\" value={formatUSD(costs?.reasoningUsd)} />\n <MetricRow label=\"Cache read\" value={formatUSD(costs?.cacheReadUsd)} />\n <MetricRow\n label=\"Cache write\"\n value={formatUSD(costs?.cacheWriteUsd)}\n />\n <MetricRow\n label=\"Conversation total\"\n value={formatUSD(usage?.cost ?? costs?.totalUsd)}\n strong\n />\n </div>\n {showProviderStatus && (\n <ProviderStatusPanel models={models} families={families} />\n )}\n </aside>\n );\n}\n\nfunction MetricRow({\n label,\n value,\n strong = false,\n}: {\n label: string;\n value: string;\n strong?: boolean;\n}) {\n return (\n <div className=\"grid grid-cols-[minmax(0,1fr)_auto] gap-3 border-b border-border px-2 py-1.5 text-xs last:border-b-0\">\n <span className=\"truncate text-muted-foreground\">{label}</span>\n <span\n className={cn(\"font-mono\", strong && \"font-semibold text-foreground\")}\n >\n {value}\n </span>\n </div>\n );\n}\n\nfunction parseOptionalNumber(raw: string, integer = false): number | undefined {\n if (raw.trim() === \"\") return undefined;\n const value = Number(raw);\n if (!Number.isFinite(value)) return undefined;\n return integer ? Math.max(0, Math.trunc(value)) : value;\n}\n\nfunction formatNumber(value: number | undefined): string {\n if (value == null || !Number.isFinite(value)) return \"-\";\n return new Intl.NumberFormat().format(value);\n}\n\nfunction formatUSD(value: number | undefined): string {\n if (value == null || !Number.isFinite(value)) return \"-\";\n return `$${value.toFixed(value >= 1 ? 4 : 6)}`;\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AdvancedChatConfig.js","sources":["../../../src/data/ai/AdvancedChatConfig.tsx"],"sourcesContent":["import { Button } from \"../../components/button\";\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"../Icon\";\nimport { RuntimeBar, type RuntimeBarValue } from \"../runtime/RuntimeBar\";\nimport type { RuntimeBarAction } from \"../runtime/RuntimeBarActions\";\nimport {\n SEGMENT_CAPTION_CLASS,\n SEGMENT_KEY_CLASS,\n SegmentItemLabel,\n} from \"../runtime/RuntimeBarSegment\";\nimport type { SpecRuntimeFamily } from \"../runtime/runtime-mode\";\nimport type {\n ChatBudgetConfig,\n ChatModel,\n ChatModelRuntime,\n ClaudePermissionMode,\n} from \"../chat/types\";\nimport { CLAUDE_PERMISSION_MODE_OPTIONS } from \"../chat/types\";\nimport { sessionTone } from \"./session-tones\";\nimport { permissionModeVisual } from \"./SpecRuntimeEditor/permission-mode-visuals\";\n\nexport type AdvancedChatConfigProps = {\n models: ChatModel[];\n runtime: ChatModelRuntime;\n onRuntimeChange?: ((runtime: ChatModelRuntime) => void) | undefined;\n runtimeFamilies?: SpecRuntimeFamily[] | undefined;\n reasoningEfforts: string[];\n runtimeLocked?: boolean | undefined;\n permissionMode: ClaudePermissionMode;\n onPermissionModeChange?: ((mode: ClaudePermissionMode) => void) | undefined;\n budget?: ChatBudgetConfig | undefined;\n onBudgetChange?: ((budget: ChatBudgetConfig) => void) | undefined;\n catalogLoading?: boolean | undefined;\n catalogError?: string | null | undefined;\n onCatalogRetry?: (() => void) | undefined;\n};\n\nexport function AdvancedChatConfig({\n models,\n runtime,\n onRuntimeChange,\n runtimeFamilies,\n reasoningEfforts,\n runtimeLocked = false,\n permissionMode,\n onPermissionModeChange,\n budget,\n onBudgetChange,\n catalogLoading = false,\n catalogError = null,\n onCatalogRetry,\n}: AdvancedChatConfigProps) {\n // The bar edits the run's cost cap alongside its identity; the chat keeps the\n // two in separate settings, so split them on the way out.\n const barValue: RuntimeBarValue = {\n ...runtime,\n ...(budget?.cost !== undefined ? { budget: { cost: budget.cost } } : {}),\n };\n const handleBarChange = ({ budget: limits, ...next }: RuntimeBarValue) => {\n if (\n next.model !== runtime.model ||\n next.id !== runtime.id ||\n next.mode !== runtime.mode ||\n next.temperature !== runtime.temperature ||\n next.effort !== runtime.effort ||\n next.noCache !== runtime.noCache ||\n next.fallbacks !== runtime.fallbacks\n ) {\n onRuntimeChange?.(next);\n }\n if (limits?.cost === budget?.cost) return;\n const updated: ChatBudgetConfig = { ...budget };\n if (limits?.cost === undefined) delete updated.cost;\n else updated.cost = limits.cost;\n onBudgetChange?.(updated);\n };\n\n return (\n <div className=\"min-h-0 flex-1 space-y-4 overflow-y-auto\">\n <section className=\"space-y-3\">\n <div className=\"text-xs font-semibold uppercase tracking-wider text-muted-foreground\">\n Runtime\n </div>\n {runtimeLocked && (\n <div className=\"rounded border border-border bg-muted/40 px-3 py-2 text-xs text-muted-foreground\">\n Model and backend are locked after the first message. Fork this\n conversation to change them; effort, permissions and cost remain\n adjustable.\n </div>\n )}\n {catalogLoading && (\n <div className=\"text-xs text-muted-foreground\">\n Checking model and runtime availability…\n </div>\n )}\n {catalogError && (\n <div\n role=\"alert\"\n className=\"flex items-center justify-between gap-3 rounded border border-destructive/40 bg-destructive/5 px-3 py-2 text-xs text-destructive\"\n >\n <span>{catalogError}</span>\n {onCatalogRetry && (\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n onClick={onCatalogRetry}\n >\n Retry\n </Button>\n )}\n </div>\n )}\n <RuntimeBar\n ariaLabel=\"Advanced runtime\"\n value={barValue}\n onChange={handleBarChange}\n models={models}\n reasoningEfforts={reasoningEfforts}\n locked={runtimeLocked}\n showCost\n actions={{\n fields: [\n chatPermissionField(permissionMode, onPermissionModeChange),\n ],\n }}\n {...(runtimeFamilies ? { families: runtimeFamilies } : {})}\n className=\"max-w-full\"\n />\n </section>\n </div>\n );\n}\n\nconst PERMISSION_GROUP = \"Permission mode\";\n\nfunction chatPermissionField(\n current: ClaudePermissionMode,\n onChange: ((mode: ClaudePermissionMode) => void) | undefined,\n): RuntimeBarAction {\n const option = CLAUDE_PERMISSION_MODE_OPTIONS.find(\n (entry) => entry.value === current,\n );\n const label = option?.label ?? current;\n // The chat speaks Claude's permission vocabulary, so it borrows Claude's\n // per-mode glyphs and tones from the shared runtime-bar visuals.\n const visual = (mode: ClaudePermissionMode) =>\n permissionModeVisual(\"claude\", mode);\n const currentVisual = visual(current);\n return {\n id: \"permissions.mode\",\n isSet: true,\n label: PERMISSION_GROUP,\n icon: currentVisual.icon,\n iconClassName: sessionTone(currentVisual.tone).text,\n title: `${PERMISSION_GROUP} — ${label}`,\n caption: (\n <>\n <span className={cn(SEGMENT_KEY_CLASS, \"min-w-0 truncate\")}>Perms</span>\n <Icon\n icon={currentVisual.icon}\n className={cn(\n \"size-4 shrink-0\",\n sessionTone(currentVisual.tone).text,\n )}\n />\n <span className={cn(SEGMENT_CAPTION_CLASS, \"shrink-0\")}>{label}</span>\n </>\n ),\n items: CLAUDE_PERMISSION_MODE_OPTIONS.map((entry) => ({\n group: PERMISSION_GROUP,\n icon: visual(entry.value).icon,\n iconClassName: sessionTone(visual(entry.value).tone).text,\n label: (\n <SegmentItemLabel\n text={entry.label}\n hint={entry.description}\n selected={entry.value === current}\n stacked\n />\n ),\n onSelect: () => onChange?.(entry.value),\n })),\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ const UiSparkles = require("../../icons/components/UiSparkles.cjs");
|
|
|
7
7
|
function ChatButton({
|
|
8
8
|
icon = UiSparkles.UiSparkles,
|
|
9
9
|
label = "Open chat",
|
|
10
|
+
contextItems,
|
|
10
11
|
className
|
|
11
12
|
}) {
|
|
12
13
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -15,6 +16,7 @@ function ChatButton({
|
|
|
15
16
|
persistent: true,
|
|
16
17
|
icon,
|
|
17
18
|
label,
|
|
19
|
+
...contextItems ? { contextItems } : {},
|
|
18
20
|
className: utils.cn(
|
|
19
21
|
"static size-9 rounded-md bg-transparent text-foreground shadow-none hover:bg-accent",
|
|
20
22
|
className
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatButton.cjs","sources":["../../../src/data/ai/ChatButton.tsx"],"sourcesContent":["import { UiSparkles } from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport { ChatFab, type ChatFabProps } from \"./ChatFab\";\n\nexport type ChatButtonProps = Omit<ChatFabProps, \"persistent\">;\n\n/** A persistent chat trigger styled as navbar chrome for AppShell actions. */\nexport function ChatButton({\n icon = UiSparkles,\n label = \"Open chat\",\n className,\n}: ChatButtonProps) {\n return (\n <ChatFab\n persistent\n icon={icon}\n label={label}\n className={cn(\n \"static size-9 rounded-md bg-transparent text-foreground shadow-none hover:bg-accent\",\n className,\n )}\n />\n );\n}\n"],"names":["UiSparkles","jsx","ChatFab","cn"],"mappings":";;;;;;AAOO,SAAS,WAAW;AAAA,EACzB,OAAOA,WAAAA;AAAAA,EACP,QAAQ;AAAA,EACR;AACF,GAAoB;AAClB,SACEC,2BAAAA;AAAAA,IAACC,QAAAA;AAAAA,IAAA;AAAA,MACC,YAAU;AAAA,MACV;AAAA,MACA;AAAA,
|
|
1
|
+
{"version":3,"file":"ChatButton.cjs","sources":["../../../src/data/ai/ChatButton.tsx"],"sourcesContent":["import { UiSparkles } from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport { ChatFab, type ChatFabProps } from \"./ChatFab\";\n\nexport type ChatButtonProps = Omit<ChatFabProps, \"persistent\">;\n\n/** A persistent chat trigger styled as navbar chrome for AppShell actions. */\nexport function ChatButton({\n icon = UiSparkles,\n label = \"Open chat\",\n contextItems,\n className,\n}: ChatButtonProps) {\n return (\n <ChatFab\n persistent\n icon={icon}\n label={label}\n {...(contextItems ? { contextItems } : {})}\n className={cn(\n \"static size-9 rounded-md bg-transparent text-foreground shadow-none hover:bg-accent\",\n className,\n )}\n />\n );\n}\n"],"names":["UiSparkles","jsx","ChatFab","cn"],"mappings":";;;;;;AAOO,SAAS,WAAW;AAAA,EACzB,OAAOA,WAAAA;AAAAA,EACP,QAAQ;AAAA,EACR;AAAA,EACA;AACF,GAAoB;AAClB,SACEC,2BAAAA;AAAAA,IAACC,QAAAA;AAAAA,IAAA;AAAA,MACC,YAAU;AAAA,MACV;AAAA,MACA;AAAA,MACC,GAAI,eAAe,EAAE,aAAA,IAAiB,CAAA;AAAA,MACvC,WAAWC,MAAAA;AAAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChatFabProps } from './ChatFab.js';
|
|
2
2
|
export type ChatButtonProps = Omit<ChatFabProps, "persistent">;
|
|
3
3
|
/** A persistent chat trigger styled as navbar chrome for AppShell actions. */
|
|
4
|
-
export declare function ChatButton({ icon, label, className, }: ChatButtonProps): import("react").JSX.Element;
|
|
4
|
+
export declare function ChatButton({ icon, label, contextItems, className, }: ChatButtonProps): import("react").JSX.Element;
|
|
5
5
|
//# sourceMappingURL=ChatButton.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatButton.d.ts","sourceRoot":"","sources":["../../../src/data/ai/ChatButton.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAEvD,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAE/D,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,EACzB,IAAiB,EACjB,KAAmB,EACnB,SAAS,GACV,EAAE,eAAe,+
|
|
1
|
+
{"version":3,"file":"ChatButton.d.ts","sourceRoot":"","sources":["../../../src/data/ai/ChatButton.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAEvD,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAE/D,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,EACzB,IAAiB,EACjB,KAAmB,EACnB,YAAY,EACZ,SAAS,GACV,EAAE,eAAe,+BAajB"}
|
|
@@ -5,6 +5,7 @@ import { UiSparkles } from "../../icons/components/UiSparkles.js";
|
|
|
5
5
|
function ChatButton({
|
|
6
6
|
icon = UiSparkles,
|
|
7
7
|
label = "Open chat",
|
|
8
|
+
contextItems,
|
|
8
9
|
className
|
|
9
10
|
}) {
|
|
10
11
|
return /* @__PURE__ */ jsx(
|
|
@@ -13,6 +14,7 @@ function ChatButton({
|
|
|
13
14
|
persistent: true,
|
|
14
15
|
icon,
|
|
15
16
|
label,
|
|
17
|
+
...contextItems ? { contextItems } : {},
|
|
16
18
|
className: cn(
|
|
17
19
|
"static size-9 rounded-md bg-transparent text-foreground shadow-none hover:bg-accent",
|
|
18
20
|
className
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatButton.js","sources":["../../../src/data/ai/ChatButton.tsx"],"sourcesContent":["import { UiSparkles } from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport { ChatFab, type ChatFabProps } from \"./ChatFab\";\n\nexport type ChatButtonProps = Omit<ChatFabProps, \"persistent\">;\n\n/** A persistent chat trigger styled as navbar chrome for AppShell actions. */\nexport function ChatButton({\n icon = UiSparkles,\n label = \"Open chat\",\n className,\n}: ChatButtonProps) {\n return (\n <ChatFab\n persistent\n icon={icon}\n label={label}\n className={cn(\n \"static size-9 rounded-md bg-transparent text-foreground shadow-none hover:bg-accent\",\n className,\n )}\n />\n );\n}\n"],"names":[],"mappings":";;;;AAOO,SAAS,WAAW;AAAA,EACzB,OAAO;AAAA,EACP,QAAQ;AAAA,EACR;AACF,GAAoB;AAClB,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,YAAU;AAAA,MACV;AAAA,MACA;AAAA,
|
|
1
|
+
{"version":3,"file":"ChatButton.js","sources":["../../../src/data/ai/ChatButton.tsx"],"sourcesContent":["import { UiSparkles } from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport { ChatFab, type ChatFabProps } from \"./ChatFab\";\n\nexport type ChatButtonProps = Omit<ChatFabProps, \"persistent\">;\n\n/** A persistent chat trigger styled as navbar chrome for AppShell actions. */\nexport function ChatButton({\n icon = UiSparkles,\n label = \"Open chat\",\n contextItems,\n className,\n}: ChatButtonProps) {\n return (\n <ChatFab\n persistent\n icon={icon}\n label={label}\n {...(contextItems ? { contextItems } : {})}\n className={cn(\n \"static size-9 rounded-md bg-transparent text-foreground shadow-none hover:bg-accent\",\n className,\n )}\n />\n );\n}\n"],"names":[],"mappings":";;;;AAOO,SAAS,WAAW;AAAA,EACzB,OAAO;AAAA,EACP,QAAQ;AAAA,EACR;AAAA,EACA;AACF,GAAoB;AAClB,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,YAAU;AAAA,MACV;AAAA,MACA;AAAA,MACC,GAAI,eAAe,EAAE,aAAA,IAAiB,CAAA;AAAA,MACvC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN;"}
|
package/dist/data/ai/ChatFab.cjs
CHANGED
|
@@ -10,6 +10,7 @@ function ChatFab({
|
|
|
10
10
|
icon = UiSparkles.UiSparkles,
|
|
11
11
|
label = "Open chat",
|
|
12
12
|
persistent = false,
|
|
13
|
+
contextItems,
|
|
13
14
|
className
|
|
14
15
|
}) {
|
|
15
16
|
const { panels, openPanel, findOrCreatePanel } = chatWindowContext.useChatWindowManager();
|
|
@@ -21,7 +22,10 @@ function ChatFab({
|
|
|
21
22
|
"data-testid": "chat-fab",
|
|
22
23
|
title: label,
|
|
23
24
|
"aria-label": label,
|
|
24
|
-
onClick: () =>
|
|
25
|
+
onClick: () => {
|
|
26
|
+
const opts = contextItems ? { contextItems } : {};
|
|
27
|
+
return persistent ? findOrCreatePanel(opts) : openPanel(opts);
|
|
28
|
+
},
|
|
25
29
|
...!persistent ? { style: { zIndex: zIndex.zIndex.chatFab } } : {},
|
|
26
30
|
className: utils.cn(
|
|
27
31
|
"fixed bottom-4 right-4 flex h-12 w-12 items-center justify-center",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatFab.cjs","sources":["../../../src/data/ai/ChatFab.tsx"],"sourcesContent":["import { cn } from \"../../lib/utils\";\nimport { Icon, type StaticIconComponent } from \"../Icon\";\nimport { UiSparkles } from \"../../icons\";\nimport { useChatWindowManager } from \"./chat-window-context\";\nimport { zIndex } from \"../../overlay/zIndex\";\n\nexport type ChatFabProps = {\n /** Iconify name or imported icon component shown in the button. */\n icon?: string | StaticIconComponent;\n /** Accessible label / tooltip. */\n label?: string;\n /** Keep navbar chrome visible and focus an existing window when clicked. */\n persistent?: boolean;\n className?: string;\n};\n\n/** A fixed bottom-right chat launcher. By default it hides while a window is\n * open; persistent launchers remain visible and focus the existing window. */\nexport function ChatFab({\n icon = UiSparkles,\n label = \"Open chat\",\n persistent = false,\n className,\n}: ChatFabProps) {\n const { panels, openPanel, findOrCreatePanel } = useChatWindowManager();\n if (!persistent && panels.length > 0) return null;\n\n return (\n <button\n type=\"button\"\n data-testid=\"chat-fab\"\n title={label}\n aria-label={label}\n onClick={() =>
|
|
1
|
+
{"version":3,"file":"ChatFab.cjs","sources":["../../../src/data/ai/ChatFab.tsx"],"sourcesContent":["import { cn } from \"../../lib/utils\";\nimport { Icon, type StaticIconComponent } from \"../Icon\";\nimport { UiSparkles } from \"../../icons\";\nimport { useChatWindowManager } from \"./chat-window-context\";\nimport type { ChatContextItem } from \"./context\";\nimport { zIndex } from \"../../overlay/zIndex\";\n\nexport type ChatFabProps = {\n /** Iconify name or imported icon component shown in the button. */\n icon?: string | StaticIconComponent;\n /** Accessible label / tooltip. */\n label?: string;\n /** Keep navbar chrome visible and focus an existing window when clicked. */\n persistent?: boolean;\n /** Context the page offers the chat: attached to a newly opened window, or\n * merged (by id) into the window a persistent launcher focuses. */\n contextItems?: ChatContextItem[];\n className?: string;\n};\n\n/** A fixed bottom-right chat launcher. By default it hides while a window is\n * open; persistent launchers remain visible and focus the existing window. */\nexport function ChatFab({\n icon = UiSparkles,\n label = \"Open chat\",\n persistent = false,\n contextItems,\n className,\n}: ChatFabProps) {\n const { panels, openPanel, findOrCreatePanel } = useChatWindowManager();\n if (!persistent && panels.length > 0) return null;\n\n return (\n <button\n type=\"button\"\n data-testid=\"chat-fab\"\n title={label}\n aria-label={label}\n onClick={() => {\n const opts = contextItems ? { contextItems } : {};\n return persistent ? findOrCreatePanel(opts) : openPanel(opts);\n }}\n {...(!persistent ? { style: { zIndex: zIndex.chatFab } } : {})}\n className={cn(\n \"fixed bottom-4 right-4 flex h-12 w-12 items-center justify-center\",\n \"rounded-full bg-primary text-primary-foreground shadow-lg transition-colors hover:bg-primary/90\",\n className,\n )}\n >\n <Icon {...(typeof icon === \"string\" ? { name: icon } : { icon })} className=\"size-5\" />\n </button>\n );\n}\n"],"names":["UiSparkles","useChatWindowManager","jsx","zIndex","cn","Icon"],"mappings":";;;;;;;;AAsBO,SAAS,QAAQ;AAAA,EACtB,OAAOA,WAAAA;AAAAA,EACP,QAAQ;AAAA,EACR,aAAa;AAAA,EACb;AAAA,EACA;AACF,GAAiB;AACf,QAAM,EAAE,QAAQ,WAAW,kBAAA,IAAsBC,kBAAAA,qBAAA;AACjD,MAAI,CAAC,cAAc,OAAO,SAAS,EAAG,QAAO;AAE7C,SACEC,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,eAAY;AAAA,MACZ,OAAO;AAAA,MACP,cAAY;AAAA,MACZ,SAAS,MAAM;AACb,cAAM,OAAO,eAAe,EAAE,aAAA,IAAiB,CAAA;AAC/C,eAAO,aAAa,kBAAkB,IAAI,IAAI,UAAU,IAAI;AAAA,MAC9D;AAAA,MACC,GAAI,CAAC,aAAa,EAAE,OAAO,EAAE,QAAQC,cAAO,QAAA,EAAQ,IAAM,CAAA;AAAA,MAC3D,WAAWC,MAAAA;AAAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,MAGF,UAAAF,2BAAAA,IAACG,KAAAA,MAAA,EAAM,GAAI,OAAO,SAAS,WAAW,EAAE,MAAM,KAAA,IAAS,EAAE,KAAA,GAAS,WAAU,SAAA,CAAS;AAAA,IAAA;AAAA,EAAA;AAG3F;;"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { StaticIconComponent } from '../Icon.js';
|
|
2
|
+
import { ChatContextItem } from './context.js';
|
|
2
3
|
export type ChatFabProps = {
|
|
3
4
|
/** Iconify name or imported icon component shown in the button. */
|
|
4
5
|
icon?: string | StaticIconComponent;
|
|
@@ -6,9 +7,12 @@ export type ChatFabProps = {
|
|
|
6
7
|
label?: string;
|
|
7
8
|
/** Keep navbar chrome visible and focus an existing window when clicked. */
|
|
8
9
|
persistent?: boolean;
|
|
10
|
+
/** Context the page offers the chat: attached to a newly opened window, or
|
|
11
|
+
* merged (by id) into the window a persistent launcher focuses. */
|
|
12
|
+
contextItems?: ChatContextItem[];
|
|
9
13
|
className?: string;
|
|
10
14
|
};
|
|
11
15
|
/** A fixed bottom-right chat launcher. By default it hides while a window is
|
|
12
16
|
* open; persistent launchers remain visible and focus the existing window. */
|
|
13
|
-
export declare function ChatFab({ icon, label, persistent, className, }: ChatFabProps): import("react").JSX.Element | null;
|
|
17
|
+
export declare function ChatFab({ icon, label, persistent, contextItems, className, }: ChatFabProps): import("react").JSX.Element | null;
|
|
14
18
|
//# sourceMappingURL=ChatFab.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatFab.d.ts","sourceRoot":"","sources":["../../../src/data/ai/ChatFab.tsx"],"names":[],"mappings":"AACA,OAAO,EAAQ,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatFab.d.ts","sourceRoot":"","sources":["../../../src/data/ai/ChatFab.tsx"],"names":[],"mappings":"AACA,OAAO,EAAQ,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAGzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGjD,MAAM,MAAM,YAAY,GAAG;IACzB,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAAC;IACpC,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;uEACmE;IACnE,YAAY,CAAC,EAAE,eAAe,EAAE,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;8EAC8E;AAC9E,wBAAgB,OAAO,CAAC,EACtB,IAAiB,EACjB,KAAmB,EACnB,UAAkB,EAClB,YAAY,EACZ,SAAS,GACV,EAAE,YAAY,sCAwBd"}
|
package/dist/data/ai/ChatFab.js
CHANGED
|
@@ -8,6 +8,7 @@ function ChatFab({
|
|
|
8
8
|
icon = UiSparkles,
|
|
9
9
|
label = "Open chat",
|
|
10
10
|
persistent = false,
|
|
11
|
+
contextItems,
|
|
11
12
|
className
|
|
12
13
|
}) {
|
|
13
14
|
const { panels, openPanel, findOrCreatePanel } = useChatWindowManager();
|
|
@@ -19,7 +20,10 @@ function ChatFab({
|
|
|
19
20
|
"data-testid": "chat-fab",
|
|
20
21
|
title: label,
|
|
21
22
|
"aria-label": label,
|
|
22
|
-
onClick: () =>
|
|
23
|
+
onClick: () => {
|
|
24
|
+
const opts = contextItems ? { contextItems } : {};
|
|
25
|
+
return persistent ? findOrCreatePanel(opts) : openPanel(opts);
|
|
26
|
+
},
|
|
23
27
|
...!persistent ? { style: { zIndex: zIndex.chatFab } } : {},
|
|
24
28
|
className: cn(
|
|
25
29
|
"fixed bottom-4 right-4 flex h-12 w-12 items-center justify-center",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatFab.js","sources":["../../../src/data/ai/ChatFab.tsx"],"sourcesContent":["import { cn } from \"../../lib/utils\";\nimport { Icon, type StaticIconComponent } from \"../Icon\";\nimport { UiSparkles } from \"../../icons\";\nimport { useChatWindowManager } from \"./chat-window-context\";\nimport { zIndex } from \"../../overlay/zIndex\";\n\nexport type ChatFabProps = {\n /** Iconify name or imported icon component shown in the button. */\n icon?: string | StaticIconComponent;\n /** Accessible label / tooltip. */\n label?: string;\n /** Keep navbar chrome visible and focus an existing window when clicked. */\n persistent?: boolean;\n className?: string;\n};\n\n/** A fixed bottom-right chat launcher. By default it hides while a window is\n * open; persistent launchers remain visible and focus the existing window. */\nexport function ChatFab({\n icon = UiSparkles,\n label = \"Open chat\",\n persistent = false,\n className,\n}: ChatFabProps) {\n const { panels, openPanel, findOrCreatePanel } = useChatWindowManager();\n if (!persistent && panels.length > 0) return null;\n\n return (\n <button\n type=\"button\"\n data-testid=\"chat-fab\"\n title={label}\n aria-label={label}\n onClick={() =>
|
|
1
|
+
{"version":3,"file":"ChatFab.js","sources":["../../../src/data/ai/ChatFab.tsx"],"sourcesContent":["import { cn } from \"../../lib/utils\";\nimport { Icon, type StaticIconComponent } from \"../Icon\";\nimport { UiSparkles } from \"../../icons\";\nimport { useChatWindowManager } from \"./chat-window-context\";\nimport type { ChatContextItem } from \"./context\";\nimport { zIndex } from \"../../overlay/zIndex\";\n\nexport type ChatFabProps = {\n /** Iconify name or imported icon component shown in the button. */\n icon?: string | StaticIconComponent;\n /** Accessible label / tooltip. */\n label?: string;\n /** Keep navbar chrome visible and focus an existing window when clicked. */\n persistent?: boolean;\n /** Context the page offers the chat: attached to a newly opened window, or\n * merged (by id) into the window a persistent launcher focuses. */\n contextItems?: ChatContextItem[];\n className?: string;\n};\n\n/** A fixed bottom-right chat launcher. By default it hides while a window is\n * open; persistent launchers remain visible and focus the existing window. */\nexport function ChatFab({\n icon = UiSparkles,\n label = \"Open chat\",\n persistent = false,\n contextItems,\n className,\n}: ChatFabProps) {\n const { panels, openPanel, findOrCreatePanel } = useChatWindowManager();\n if (!persistent && panels.length > 0) return null;\n\n return (\n <button\n type=\"button\"\n data-testid=\"chat-fab\"\n title={label}\n aria-label={label}\n onClick={() => {\n const opts = contextItems ? { contextItems } : {};\n return persistent ? findOrCreatePanel(opts) : openPanel(opts);\n }}\n {...(!persistent ? { style: { zIndex: zIndex.chatFab } } : {})}\n className={cn(\n \"fixed bottom-4 right-4 flex h-12 w-12 items-center justify-center\",\n \"rounded-full bg-primary text-primary-foreground shadow-lg transition-colors hover:bg-primary/90\",\n className,\n )}\n >\n <Icon {...(typeof icon === \"string\" ? { name: icon } : { icon })} className=\"size-5\" />\n </button>\n );\n}\n"],"names":[],"mappings":";;;;;;AAsBO,SAAS,QAAQ;AAAA,EACtB,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,aAAa;AAAA,EACb;AAAA,EACA;AACF,GAAiB;AACf,QAAM,EAAE,QAAQ,WAAW,kBAAA,IAAsB,qBAAA;AACjD,MAAI,CAAC,cAAc,OAAO,SAAS,EAAG,QAAO;AAE7C,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,eAAY;AAAA,MACZ,OAAO;AAAA,MACP,cAAY;AAAA,MACZ,SAAS,MAAM;AACb,cAAM,OAAO,eAAe,EAAE,aAAA,IAAiB,CAAA;AAC/C,eAAO,aAAa,kBAAkB,IAAI,IAAI,UAAU,IAAI;AAAA,MAC9D;AAAA,MACC,GAAI,CAAC,aAAa,EAAE,OAAO,EAAE,QAAQ,OAAO,QAAA,EAAQ,IAAM,CAAA;AAAA,MAC3D,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,MAGF,UAAA,oBAAC,MAAA,EAAM,GAAI,OAAO,SAAS,WAAW,EAAE,MAAM,KAAA,IAAS,EAAE,KAAA,GAAS,WAAU,SAAA,CAAS;AAAA,IAAA;AAAA,EAAA;AAG3F;"}
|