Add Ollama Cloud (ollama.com) as a built-in provider with both model hosting and web search/fetch capabilities. Model provider: - 13 curated models via OpenAI-compatible API (Llama 3.1, Qwen 3, DeepSeek R1, Gemma 3, Mistral, Phi-4, GPT-OSS) - Auth via OLLAMA_API_KEY environment variable - Registered in onboarding, env hydration, and model resolver Web tool provider: - Search via POST ollama.com/api/web_search - Page fetch via POST ollama.com/api/web_fetch (fallback after Jina) - Added as third search provider option alongside Tavily and Brave - /search-provider command updated with ollama option Closes #430
30 lines
1.2 KiB
TypeScript
30 lines
1.2 KiB
TypeScript
import type { AuthStorage } from '@gsd/pi-coding-agent'
|
|
|
|
// ─── Env hydration ────────────────────────────────────────────────────────────
|
|
|
|
/**
|
|
* Hydrate process.env from stored auth.json credentials for optional tool keys.
|
|
* Runs on every launch so extensions see Brave/Context7/Jina keys stored via the
|
|
* wizard on prior launches.
|
|
*/
|
|
export function loadStoredEnvKeys(authStorage: AuthStorage): void {
|
|
const providers: Array<[string, string]> = [
|
|
['brave', 'BRAVE_API_KEY'],
|
|
['brave_answers', 'BRAVE_ANSWERS_KEY'],
|
|
['context7', 'CONTEXT7_API_KEY'],
|
|
['jina', 'JINA_API_KEY'],
|
|
['tavily', 'TAVILY_API_KEY'],
|
|
['slack_bot', 'SLACK_BOT_TOKEN'],
|
|
['discord_bot', 'DISCORD_BOT_TOKEN'],
|
|
['groq', 'GROQ_API_KEY'],
|
|
['ollama-cloud', 'OLLAMA_API_KEY'],
|
|
]
|
|
for (const [provider, envVar] of providers) {
|
|
if (!process.env[envVar]) {
|
|
const cred = authStorage.get(provider)
|
|
if (cred?.type === 'api_key' && cred.key) {
|
|
process.env[envVar] = cred.key as string
|
|
}
|
|
}
|
|
}
|
|
}
|