managarten/services/mana-research
Till JS 49f315f6be feat(research): Phase 3a — 4 sync research agents
Adds Perplexity Sonar, Claude web_search, OpenAI Responses, and Gemini
Grounding as ResearchAgents behind the same comparison interface as the
search and extract providers.

New endpoints:
  POST /v1/research          — single-agent (or auto-routed to the first
                               provider with a configured key)
  POST /v1/research/compare  — fan-out across N agents, persist all
                               answers + citations in research.eval_*

Each agent normalizes its native response into a common AgentAnswer shape
(answer text + citations[] + tokenUsage), storing the provider's raw
response alongside for later inspection. Implementations use direct HTTP
against each vendor's public API — no SDK deps added.

Auto-routing preference: perplexity-sonar → gemini-grounding →
openai-responses → claude-web-search → (openai-deep-research stubbed for
Phase 3b). Credits orchestration reuses the search/extract executor
pattern (reserve → call → commit/refund).

Deferred to Phase 3b: openai-deep-research (async job queue), migration
of mana-ai + mana-api news-research to call this service directly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 15:06:12 +02:00
..
src feat(research): Phase 3a — 4 sync research agents 2026-04-17 15:06:12 +02:00
CLAUDE.md feat(research): Phase 3a — 4 sync research agents 2026-04-17 15:06:12 +02:00
Dockerfile feat(research): add mana-research service — Phase 1 + 2 2026-04-17 14:42:25 +02:00
drizzle.config.ts feat(research): add mana-research service — Phase 1 + 2 2026-04-17 14:42:25 +02:00
package.json feat(research): add mana-research service — Phase 1 + 2 2026-04-17 14:42:25 +02:00
tsconfig.json feat(research): add mana-research service — Phase 1 + 2 2026-04-17 14:42:25 +02:00