Files
OpenCode 68a9071cf1 feat: reconcile local master with origin (exa/hot-platform hunters, leaks ledger, latest results)
Local branch had diverged from origin/master (sibling commits on the same base). Rewrote local history linearly on top of origin/master, folding in all local content: exa/hot-platform discovery hunters, leaks ledger, nightly sweep orchestrator, updated .gitignore and skill docs, plus the latest hunt output and vault state. Remote-only files (vault keys, channel scripts) were restored rather than dropped, so the resulting tree is a full union of both sides.
2026-08-07 12:53:47 +08:00

1 line
6.2 KiB
JSON

{"repo": "alecpullen/marshal", "files": {"internal/llm/provider/templates.go": {"1d65fc117a3bfd395ce170aa8c1064e820587246": {"t": 1786068287.328168, "n": 5401, "h": "096f0cf52f2b1058", "c": "package provider\n\nimport \"fmt\"\n\ntype ProviderTemplate struct {\n\tID string\n\tLabel string\n\tType string\n\tBaseURL string\n\tLocal bool\n\tToolCalling bool\n\tKeyEnv string\n\tKeyHint string\n\tModels []string\n}\n\nvar templates = map[string]ProviderTemplate{\n\t\"ollama\": {\n\t\tID: \"ollama\",\n\t\tLabel: \"Ollama (local)\",\n\t\tType: \"ollama\",\n\t\tBaseURL: \"http://localhost:11434\",\n\t\tLocal: true,\n\t\tModels: []string{\"qwen2.5-coder:7b\", \"qwen2.5-coder:14b\", \"qwen2.5:7b\", \"llama3.1:8b\"},\n\t},\n\t\"ollama-cloud\": {\n\t\tID: \"ollama-cloud\",\n\t\tLabel: \"Ollama Cloud\",\n\t\tType: \"ollama\",\n\t\tBaseURL: \"https://ollama.com\",\n\t\tKeyEnv: \"OLLAMA_API_KEY\",\n\t\tKeyHint: \"Get a key at https://ollama.com/settings/keys\",\n\t},\n\t\"lmstudio\": {\n\t\tID: \"lmstudio\",\n\t\tLabel: \"LM Studio (local)\",\n\t\tType: \"openai_compatible\",\n\t\tBaseURL: \"http://localhost:1234/v1\",\n\t\tLocal: true,\n\t},\n\t\"openrouter\": {\n\t\tID: \"openrouter\",\n\t\tLabel: \"OpenRouter\",\n\t\tType: \"openai_compatible\",\n\t\tBaseURL: \"https://openrouter.ai/api/v1\",\n\t\tToolCalling: true,\n\t\tKeyEnv: \"OPENROUTER_API_KEY\",\n\t\tKeyHint: \"Get a key at https://openrouter.ai/keys\",\n\t\tModels: []string{\"anthropic/claude-sonnet-4\", \"google/gemini-2.5-pro\", \"meta-llama/llama-3.3-70b-instruct\"},\n\t},\n\t\"groq\": {\n\t\tID: \"groq\",\n\t\tLabel: \"Groq\",\n\t\tType: \"openai_compatible\",\n\t\tBaseURL: \"https://api.groq.com/openai/v1\",\n\t\tToolCalling: true,\n\t\tKeyEnv: \"GROQ_API_KEY\",\n\t\tKeyHint: \"Get a key at https://console.groq.com/keys\",\n\t},\n\t\"openai\": {\n\t\tID: \"openai\",\n\t\tLabel: \"OpenAI\",\n\t\tType: \"openai_compatible\",\n\t\tBaseURL: \"https://api.openai.com/v1\",\n\t\tToolCalling: true,\n\t\tKeyEnv: \"OPENAI_API_KEY\",\n\t\tKeyHint: \"Get a key at https://platform.openai.com/api-keys\",\n\t\tModels: []string{\"gpt-4o\", \"gpt-4o-mini\", \"o3-mini\"},\n\t},\n\t\"openai_compatible\": {\n\t\tID: \"openai_compatible\",\n\t\tLabel: \"Custom (OpenAI-compatible)\",\n\t\tType: \"openai_compatible\",\n\t\tBaseURL: \"\",\n\t\tLocal: false,\n\t},\n\t\"anthropic\": {\n\t\tID: \"anthropic\",\n\t\tLabel: \"Anthropic\",\n\t\tType: \"anthropic\",\n\t\tBaseURL: \"https://api.anthropic.com\",\n\t\tToolCalling: true,\n\t\tKeyEnv: \"ANTHROPIC_API_KEY\",\n\t\tKeyHint: \"Get a key at https://console.anthropic.com/settings/keys\",\n\t\tModels: []string{\"claude-sonnet-4-5\", \"claude-opus-4-1\", \"claude-haiku-4-5\"},\n\t},\n\t\"gemini\": {\n\t\tID: \"gemini\",\n\t\tLabel: \"Google Gemini\",\n\t\tType: \"openai_compatible\",\n\t\tBaseURL: \"https://generativelanguage.googleapis.com/v1beta/openai\",\n\t\tToolCalling: true,\n\t\tKeyEnv: \"GEMINI_API_KEY\",\n\t\tKeyHint: \"Get a key at https://aistudio.google.com/apikey\",\n\t\tModels: []string{\"gemini-2.5-pro\", \"gemini-2.5-flash\"},\n\t},\n\t\"deepseek\": {\n\t\tID: \"deepseek\",\n\t\tLabel: \"DeepSeek\",\n\t\tType: \"openai_compatible\",\n\t\tBaseURL: \"https://api.deepseek.com/v1\",\n\t\tToolCalling: true,\n\t\tKeyEnv: \"DEEPSEEK_API_KEY\",\n\t\tKeyHint: \"Get a key at https://platform.deepseek.com/api_keys\",\n\t\tModels: []string{\"deepseek-chat\", \"deepseek-reasoner\"},\n\t},\n\t\"mistral\": {\n\t\tID: \"mistral\",\n\t\tLabel: \"Mistral\",\n\t\tType: \"openai_compatible\",\n\t\tBaseURL: \"https://api.mistral.ai/v1\",\n\t\tToolCalling: true,\n\t\tKeyEnv: \"MISTRAL_API_KEY\",\n\t\tKeyHint: \"Get a key at https://console.mistral.ai/api-keys\",\n\t\tModels: []string{\"mistral-large-latest\", \"codestral-latest\"},\n\t},\n\t\"together\": {\n\t\tID: \"together\",\n\t\tLabel: \"Together AI\",\n\t\tType: \"openai_compatible\",\n\t\tBaseURL: \"https://api.together.xyz/v1\",\n\t\tToolCalling: true,\n\t\tKeyEnv: \"TOGETHER_API_KEY\",\n\t\tKeyHint: \"Get a key at https://api.together.ai/settings/api-keys\",\n\t},\n\t\"fireworks\": {\n\t\tID: \"fireworks\",\n\t\tLabel: \"Fireworks AI\",\n\t\tType: \"openai_compatible\",\n\t\tBaseURL: \"https://api.fireworks.ai/inference/v1\",\n\t\tToolCalling: true,\n\t\tKeyEnv: \"FIREWORKS_API_KEY\",\n\t\tKeyHint: \"Get a key at https://fireworks.ai/account/api-keys\",\n\t},\n\t\"xai\": {\n\t\tID: \"xai\",\n\t\tLabel: \"xAI\",\n\t\tType: \"openai_compatible\",\n\t\tBaseURL: \"https://api.x.ai/v1\",\n\t\tToolCalling: true,\n\t\tKeyEnv: \"XAI_API_KEY\",\n\t\tKeyHint: \"Get a key at https://console.x.ai\",\n\t\tModels: []string{\"grok-4\", \"grok-3-mini\"},\n\t},\n\t\"cerebras\": {\n\t\tID: \"cerebras\",\n\t\tLabel: \"Cerebras\",\n\t\tType: \"openai_compatible\",\n\t\tBaseURL: \"https://api.cerebras.ai/v1\",\n\t\tToolCalling: true,\n\t\tKeyEnv: \"CEREBRAS_API_KEY\",\n\t\tKeyHint: \"Get a key at https://cloud.cerebras.ai\",\n\t},\n\t\"vllm\": {\n\t\tID: \"vllm\",\n\t\tLabel: \"vLLM (local)\",\n\t\tType: \"openai_compatible\",\n\t\tBaseURL: \"http://localhost:8000/v1\",\n\t\tLocal: true,\n\t},\n\t\"llamacpp\": {\n\t\tID: \"llamacpp\",\n\t\tLabel: \"llama.cpp (local)\",\n\t\tType: \"openai_compatible\",\n\t\tBaseURL: \"http://localhost:8080/v1\",\n\t\tLocal: true,\n\t},\n}\n\nfunc Lookup(id string) (ProviderTemplate, bool) {\n\ttpl, ok := templates[id]\n\treturn tpl, ok\n}\n\nfunc All() []ProviderTemplate {\n\tout := make([]ProviderTemplate, 0, len(templates))\n\tfor _, tpl := range templates {\n\t\tout = append(out, tpl)\n\t}\n\treturn out\n}\n\nfunc UniqueName(base string, existing map[string]bool) string {\n\tif !existing[base] {\n\t\treturn base\n\t}\n\tfor i := 2; ; i++ {\n\t\tcandidate := fmt.Sprintf(\"%s-%d\", base, i)\n\t\tif !existing[candidate] {\n\t\t\treturn candidate\n\t\t}\n\t}\n}\n"}}}}