Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | 1x 1x 1x 1x 1x 1x 1x 1x | import { Mode } from "@shared/storage/types"
import { useExtensionState } from "@/context/ExtensionStateContext"
import { DebouncedTextField } from "../common/DebouncedTextField"
import { HuggingFaceModelPicker } from "../HuggingFaceModelPicker"
import { normalizeApiConfiguration } from "../utils/providerUtils"
import { useApiConfigurationHandlers } from "../utils/useApiConfigurationHandlers"
/**
* Props for the HuggingFaceProvider component
*/
interface HuggingFaceProviderProps {
showModelOptions: boolean
isPopup?: boolean
currentMode: Mode
}
/**
* The Hugging Face provider configuration component
*/
export const HuggingFaceProvider = ({ showModelOptions, isPopup, currentMode }: HuggingFaceProviderProps) => {
const { apiConfiguration } = useExtensionState()
const { handleFieldChange } = useApiConfigurationHandlers()
// Get the normalized configuration
const { selectedModelId, selectedModelInfo } = normalizeApiConfiguration(apiConfiguration, currentMode)
return (
<div>
<DebouncedTextField
initialValue={apiConfiguration?.huggingFaceApiKey || ""}
onChange={(value) => handleFieldChange("huggingFaceApiKey", value)}
placeholder="Enter API Key..."
style={{ width: "100%" }}
type="password">
<span style={{ fontWeight: 500 }}>Hugging Face API Key</span>
</DebouncedTextField>
<p
style={{
fontSize: "12px",
marginTop: "5px",
color: "var(--vscode-descriptionForeground)",
}}>
This key is stored locally and only used to make API requests from this extension. We don’t show pricing here
because it depends on your Hugging Face provider settings and isn’t consistently available via their API{" "}
<a href="https://huggingface.co/settings/tokens" rel="noopener noreferrer" target="_blank">
Get your API key here
</a>
</p>
{showModelOptions && <HuggingFaceModelPicker currentMode={currentMode} isPopup={isPopup} />}
</div>
)
}
|