Addresses PR review: escape Markdown-sensitive characters in
_formatTieredAlert signal bullets to prevent Telegram Bot API
rejections, and add a 1500-char budget for URGENT_OSINT in
compactSweepForLLM to bound prompt size while keeping full text upstream.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The prior fix (753c676) only removed truncation at source ingestion and
alert formatting. Signals were still being cut to 120 chars in the delta
engine, 80 chars in memory snapshots, and 120 chars in the ideas LLM
context — so OSINT posts arrived at the alerter already truncated.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds LLM_PROVIDER=ollama for fully local, zero-cost inference
via Ollama's OpenAI-compatible API. No API key required.
Configurable base URL via OLLAMA_BASE_URL env var.
Add MiniMax (api.minimax.io) as a fifth LLM provider option alongside
Anthropic, OpenAI, Gemini, and Codex. MiniMax offers an
OpenAI-compatible Chat Completions API with the M2.5 model (204K
context window).
Changes:
- lib/llm/minimax.mjs: new provider using raw fetch (no SDK)
- lib/llm/index.mjs: register MiniMax in the factory
- .env.example, crucix.config.mjs, README.md: document the new option
- test/llm-minimax.test.mjs: 10 unit tests (node:test)
- test/llm-minimax-integration.test.mjs: live API integration test
Usage:
LLM_PROVIDER=minimax
LLM_API_KEY=sk-...
LLM_MODEL=MiniMax-M2.5 # optional, this is the default
26-source OSINT intelligence engine with live Jarvis dashboard,
auto-refresh via SSE, optional LLM layer (4 providers), delta/memory
system, and Telegram breaking news alerts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>