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.
1 line
13 KiB
JSON
1 line
13 KiB
JSON
{"repo": "azerozero/grob", "files": {"docs/examples/mixed.toml": {"53a4c2947b8620cfacfa05fce9190236afb1e917": {"t": 1785745319.9264598, "n": 1529, "h": "23183beb3bdbbfa1", "c": "# Mixed Provider Configuration\n#\n# Combines a local Ollama model for most tasks, DeepSeek for heavier\n# reasoning, and OpenRouter for large-context work. All three speak an\n# OpenAI-compatible wire format. Models with multiple mappings fall back\n# in priority order (lowest priority number first).\n\n[server]\nhost = \"127.0.0.1\"\nport = 13456\nlog_level = \"info\"\n\n[server.timeouts]\napi_timeout_ms = 600000\nconnect_timeout_ms = 10000\n\n# Local model for most tasks.\n[[providers]]\nname = \"ollama\"\nprovider_type = \"openai\"\nbase_url = \"http://localhost:11434/v1\"\napi_key = \"ollama\" # Ollama ignores the key; any non-empty value works.\nenabled = true\nmodels = [\"qwen2.5-coder:latest\"]\n\n# Cloud model for complex reasoning.\n[[providers]]\nname = \"deepseek\"\nprovider_type = \"openai\"\nbase_url = \"https://api.deepseek.com\"\napi_key = \"$DEEPSEEK_API_KEY\"\nenabled = true\nmodels = [\"deepseek-reasoner\"]\n\n# Cloud model with large context windows.\n[[providers]]\nname = \"openrouter\"\nprovider_type = \"openrouter\"\napi_key = \"$OPENROUTER_API_KEY\"\nenabled = true\nmodels = [\"google/gemini-2.5-pro\"]\n\n[[models]]\nname = \"local-coder\"\n\n[[models.mappings]]\nprovider = \"ollama\"\nactual_model = \"qwen2.5-coder:latest\"\npriority = 1\n\n[[models]]\nname = \"reasoner\"\n\n[[models.mappings]]\nprovider = \"deepseek\"\nactual_model = \"deepseek-reasoner\"\npriority = 1\n\n[[models]]\nname = \"long-context\"\n\n[[models.mappings]]\nprovider = \"openrouter\"\nactual_model = \"google/gemini-2.5-pro\"\npriority = 1\n\n[router]\ndefault = \"local-coder\"\nbackground = \"local-coder\"\nthink = \"reasoner\"\n"}, "9f0fb95d33e87cb8d9327d6e28948de3b0acf231": {"t": 1785750131.587309, "n": 1529, "h": "23183beb3bdbbfa1", "c": "# Mixed Provider Configuration\n#\n# Combines a local Ollama model for most tasks, DeepSeek for heavier\n# reasoning, and OpenRouter for large-context work. All three speak an\n# OpenAI-compatible wire format. Models with multiple mappings fall back\n# in priority order (lowest priority number first).\n\n[server]\nhost = \"127.0.0.1\"\nport = 13456\nlog_level = \"info\"\n\n[server.timeouts]\napi_timeout_ms = 600000\nconnect_timeout_ms = 10000\n\n# Local model for most tasks.\n[[providers]]\nname = \"ollama\"\nprovider_type = \"openai\"\nbase_url = \"http://localhost:11434/v1\"\napi_key = \"ollama\" # Ollama ignores the key; any non-empty value works.\nenabled = true\nmodels = [\"qwen2.5-coder:latest\"]\n\n# Cloud model for complex reasoning.\n[[providers]]\nname = \"deepseek\"\nprovider_type = \"openai\"\nbase_url = \"https://api.deepseek.com\"\napi_key = \"$DEEPSEEK_API_KEY\"\nenabled = true\nmodels = [\"deepseek-reasoner\"]\n\n# Cloud model with large context windows.\n[[providers]]\nname = \"openrouter\"\nprovider_type = \"openrouter\"\napi_key = \"$OPENROUTER_API_KEY\"\nenabled = true\nmodels = [\"google/gemini-2.5-pro\"]\n\n[[models]]\nname = \"local-coder\"\n\n[[models.mappings]]\nprovider = \"ollama\"\nactual_model = \"qwen2.5-coder:latest\"\npriority = 1\n\n[[models]]\nname = \"reasoner\"\n\n[[models.mappings]]\nprovider = \"deepseek\"\nactual_model = \"deepseek-reasoner\"\npriority = 1\n\n[[models]]\nname = \"long-context\"\n\n[[models.mappings]]\nprovider = \"openrouter\"\nactual_model = \"google/gemini-2.5-pro\"\npriority = 1\n\n[router]\ndefault = \"local-coder\"\nbackground = \"local-coder\"\nthink = \"reasoner\"\n"}, "3f901c8c6fb46036c2842a6537719ea848ceaf6f": {"t": 1785750132.7483146, "n": 1263, "h": "0c8cb90816a575e2", "c": "# Mixed Provider Configuration with Smart Context Routing\n\n[server]\nport = 3456\nhost = \"127.0.0.1\"\nlog_level = \"info\"\n\n# Local model for most tasks\n[[providers]]\nname = \"ollama\"\napi_base_url = \"http://localhost:11434/v1/chat/completions\"\napi_key = \"ollama\"\nmodels = [\"qwen2.5-coder:latest\"]\n\n[providers.model_context]\n\"qwen2.5-coder:latest\" = 32768\n\n# Cloud model for complex reasoning\n[[providers]]\nname = \"deepseek\"\napi_base_url = \"https://api.deepseek.com/chat/completions\"\napi_key = \"$DEEPSEEK_API_KEY\"\nmodels = [\"deepseek-chat\", \"deepseek-reasoner\"]\n\n[providers.transformers]\nuse = [\"deepseek\"]\n\n[providers.model_context]\n\"deepseek-chat\" = 64000\n\"deepseek-reasoner\" = 64000\n\n# Cloud model for large context\n[[providers]]\nname = \"openrouter\"\napi_base_url = \"https://openrouter.ai/api/v1/chat/completions\"\napi_key = \"$OPENROUTER_API_KEY\"\nmodels = [\"google/gemini-2.0-flash-exp\"]\n\n[providers.model_context]\n\"google/gemini-2.0-flash-exp\" = 1000000\n\n[router]\ndefault = \"ollama.qwen2.5-coder:latest\"\nbackground = \"ollama.qwen2.5-coder:latest\"\nthink = \"deepseek.deepseek-reasoner\"\n\n# Optional: Long context routing for large codebases\nlongContext = \"openrouter.google/gemini-2.0-flash-exp\"\nlongContextThreshold = 60000 # Switch when >60K tokens\n"}, "e339ac7ff4264392781c967c53b24a3449bb23ce": {"t": 1786068232.6811342, "n": 1529, "h": "23183beb3bdbbfa1", "c": "# Mixed Provider Configuration\n#\n# Combines a local Ollama model for most tasks, DeepSeek for heavier\n# reasoning, and OpenRouter for large-context work. All three speak an\n# OpenAI-compatible wire format. Models with multiple mappings fall back\n# in priority order (lowest priority number first).\n\n[server]\nhost = \"127.0.0.1\"\nport = 13456\nlog_level = \"info\"\n\n[server.timeouts]\napi_timeout_ms = 600000\nconnect_timeout_ms = 10000\n\n# Local model for most tasks.\n[[providers]]\nname = \"ollama\"\nprovider_type = \"openai\"\nbase_url = \"http://localhost:11434/v1\"\napi_key = \"ollama\" # Ollama ignores the key; any non-empty value works.\nenabled = true\nmodels = [\"qwen2.5-coder:latest\"]\n\n# Cloud model for complex reasoning.\n[[providers]]\nname = \"deepseek\"\nprovider_type = \"openai\"\nbase_url = \"https://api.deepseek.com\"\napi_key = \"$DEEPSEEK_API_KEY\"\nenabled = true\nmodels = [\"deepseek-reasoner\"]\n\n# Cloud model with large context windows.\n[[providers]]\nname = \"openrouter\"\nprovider_type = \"openrouter\"\napi_key = \"$OPENROUTER_API_KEY\"\nenabled = true\nmodels = [\"google/gemini-2.5-pro\"]\n\n[[models]]\nname = \"local-coder\"\n\n[[models.mappings]]\nprovider = \"ollama\"\nactual_model = \"qwen2.5-coder:latest\"\npriority = 1\n\n[[models]]\nname = \"reasoner\"\n\n[[models.mappings]]\nprovider = \"deepseek\"\nactual_model = \"deepseek-reasoner\"\npriority = 1\n\n[[models]]\nname = \"long-context\"\n\n[[models.mappings]]\nprovider = \"openrouter\"\nactual_model = \"google/gemini-2.5-pro\"\npriority = 1\n\n[router]\ndefault = \"local-coder\"\nbackground = \"local-coder\"\nthink = \"reasoner\"\n"}}, "docs/examples/deepseek.toml": {"53a4c2947b8620cfacfa05fce9190236afb1e917": {"t": 1785745320.2288244, "n": 894, "h": "7fada3e9f8635c51", "c": "# DeepSeek Configuration Template\n#\n# Single-provider setup routing everything to DeepSeek's OpenAI-compatible\n# API. The DeepSeek provider speaks the OpenAI wire format, so use\n# provider_type = \"openai\" with a custom base_url.\n\n[server]\nhost = \"127.0.0.1\"\nport = 13456\nlog_level = \"info\"\n\n[server.timeouts]\napi_timeout_ms = 600000\nconnect_timeout_ms = 10000\n\n[[providers]]\nname = \"deepseek\"\nprovider_type = \"openai\"\nbase_url = \"https://api.deepseek.com\"\napi_key = \"$DEEPSEEK_API_KEY\"\nenabled = true\nmodels = [\"deepseek-chat\", \"deepseek-reasoner\"]\n\n[[models]]\nname = \"deepseek-chat\"\n\n[[models.mappings]]\nprovider = \"deepseek\"\nactual_model = \"deepseek-chat\"\npriority = 1\n\n[[models]]\nname = \"deepseek-reasoner\"\n\n[[models.mappings]]\nprovider = \"deepseek\"\nactual_model = \"deepseek-reasoner\"\npriority = 1\n\n[router]\ndefault = \"deepseek-chat\"\nbackground = \"deepseek-chat\"\nthink = \"deepseek-reasoner\"\n"}, "9f0fb95d33e87cb8d9327d6e28948de3b0acf231": {"t": 1785750131.189357, "n": 894, "h": "7fada3e9f8635c51", "c": "# DeepSeek Configuration Template\n#\n# Single-provider setup routing everything to DeepSeek's OpenAI-compatible\n# API. The DeepSeek provider speaks the OpenAI wire format, so use\n# provider_type = \"openai\" with a custom base_url.\n\n[server]\nhost = \"127.0.0.1\"\nport = 13456\nlog_level = \"info\"\n\n[server.timeouts]\napi_timeout_ms = 600000\nconnect_timeout_ms = 10000\n\n[[providers]]\nname = \"deepseek\"\nprovider_type = \"openai\"\nbase_url = \"https://api.deepseek.com\"\napi_key = \"$DEEPSEEK_API_KEY\"\nenabled = true\nmodels = [\"deepseek-chat\", \"deepseek-reasoner\"]\n\n[[models]]\nname = \"deepseek-chat\"\n\n[[models.mappings]]\nprovider = \"deepseek\"\nactual_model = \"deepseek-chat\"\npriority = 1\n\n[[models]]\nname = \"deepseek-reasoner\"\n\n[[models.mappings]]\nprovider = \"deepseek\"\nactual_model = \"deepseek-reasoner\"\npriority = 1\n\n[router]\ndefault = \"deepseek-chat\"\nbackground = \"deepseek-chat\"\nthink = \"deepseek-reasoner\"\n"}, "3f901c8c6fb46036c2842a6537719ea848ceaf6f": {"t": 1785750132.381436, "n": 612, "h": "7c3271a011e0a5fb", "c": "# DeepSeek Configuration Template\n\n[server]\nport = 3456\nhost = \"127.0.0.1\"\nlog_level = \"info\"\n\n[[providers]]\nname = \"deepseek\"\napi_base_url = \"https://api.deepseek.com/chat/completions\"\napi_key = \"$DEEPSEEK_API_KEY\"\nmodels = [\"deepseek-chat\", \"deepseek-reasoner\"]\n\n[providers.transformers]\nuse = [\"deepseek\"]\n\n# Optional: Override automatic context detection\n[providers.model_context]\n\"deepseek-chat\" = 64000\n\"deepseek-reasoner\" = 64000\n\n[router]\ndefault = \"deepseek.deepseek-chat\"\nbackground = \"deepseek.deepseek-chat\"\nthink = \"deepseek.deepseek-reasoner\"\n\n# No longContext configured - Claude Code native mode\n"}, "e339ac7ff4264392781c967c53b24a3449bb23ce": {"t": 1786068232.8782039, "n": 894, "h": "7fada3e9f8635c51", "c": "# DeepSeek Configuration Template\n#\n# Single-provider setup routing everything to DeepSeek's OpenAI-compatible\n# API. The DeepSeek provider speaks the OpenAI wire format, so use\n# provider_type = \"openai\" with a custom base_url.\n\n[server]\nhost = \"127.0.0.1\"\nport = 13456\nlog_level = \"info\"\n\n[server.timeouts]\napi_timeout_ms = 600000\nconnect_timeout_ms = 10000\n\n[[providers]]\nname = \"deepseek\"\nprovider_type = \"openai\"\nbase_url = \"https://api.deepseek.com\"\napi_key = \"$DEEPSEEK_API_KEY\"\nenabled = true\nmodels = [\"deepseek-chat\", \"deepseek-reasoner\"]\n\n[[models]]\nname = \"deepseek-chat\"\n\n[[models.mappings]]\nprovider = \"deepseek\"\nactual_model = \"deepseek-chat\"\npriority = 1\n\n[[models]]\nname = \"deepseek-reasoner\"\n\n[[models.mappings]]\nprovider = \"deepseek\"\nactual_model = \"deepseek-reasoner\"\npriority = 1\n\n[router]\ndefault = \"deepseek-chat\"\nbackground = \"deepseek-chat\"\nthink = \"deepseek-reasoner\"\n"}}, "tests/e2e/config/presets/grob-cheap.toml": {"53a4c2947b8620cfacfa05fce9190236afb1e917": {"t": 1785745375.3855186, "n": 662, "h": "c4008ef4a2805b7d", "c": "# Preset: cheap — Cost-optimised routing\n# Routes to the lowest-cost provider available.\n# Prioritises DeepSeek and OpenRouter haiku-class models.\n# Hard budget cap at $5/month to prevent runaway spend.\n#\n# Required environment variables:\n# DEEPSEEK_API_KEY — DeepSeek API key\n# OPENROUTER_API_KEY — OpenRouter API key (fallback)\n\n[server]\nhost = \"127.0.0.1\"\nport = 13456\n\n[router]\ndefault_provider = \"deepseek\"\nfallback_providers = [\"openrouter\"]\n\n[budget]\nmonthly_limit_usd = 5.0\n\n[[providers]]\nname = \"deepseek\"\nkind = \"deepseek\"\napi_key_env = \"DEEPSEEK_API_KEY\"\n\n[[providers]]\nname = \"openrouter\"\nkind = \"openrouter\"\napi_key_env = \"OPENROUTER_API_KEY\"\n"}, "4ee43256dfe0746ba0ac15c8d3cf01024dcfcf55": {"t": 1785750131.17082, "n": 662, "h": "c4008ef4a2805b7d", "c": "# Preset: cheap — Cost-optimised routing\n# Routes to the lowest-cost provider available.\n# Prioritises DeepSeek and OpenRouter haiku-class models.\n# Hard budget cap at $5/month to prevent runaway spend.\n#\n# Required environment variables:\n# DEEPSEEK_API_KEY — DeepSeek API key\n# OPENROUTER_API_KEY — OpenRouter API key (fallback)\n\n[server]\nhost = \"127.0.0.1\"\nport = 13456\n\n[router]\ndefault_provider = \"deepseek\"\nfallback_providers = [\"openrouter\"]\n\n[budget]\nmonthly_limit_usd = 5.0\n\n[[providers]]\nname = \"deepseek\"\nkind = \"deepseek\"\napi_key_env = \"DEEPSEEK_API_KEY\"\n\n[[providers]]\nname = \"openrouter\"\nkind = \"openrouter\"\napi_key_env = \"OPENROUTER_API_KEY\"\n"}, "e339ac7ff4264392781c967c53b24a3449bb23ce": {"t": 1786068237.8054183, "n": 662, "h": "c4008ef4a2805b7d", "c": "# Preset: cheap — Cost-optimised routing\n# Routes to the lowest-cost provider available.\n# Prioritises DeepSeek and OpenRouter haiku-class models.\n# Hard budget cap at $5/month to prevent runaway spend.\n#\n# Required environment variables:\n# DEEPSEEK_API_KEY — DeepSeek API key\n# OPENROUTER_API_KEY — OpenRouter API key (fallback)\n\n[server]\nhost = \"127.0.0.1\"\nport = 13456\n\n[router]\ndefault_provider = \"deepseek\"\nfallback_providers = [\"openrouter\"]\n\n[budget]\nmonthly_limit_usd = 5.0\n\n[[providers]]\nname = \"deepseek\"\nkind = \"deepseek\"\napi_key_env = \"DEEPSEEK_API_KEY\"\n\n[[providers]]\nname = \"openrouter\"\nkind = \"openrouter\"\napi_key_env = \"OPENROUTER_API_KEY\"\n"}}}} |