mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-21 23:26:42 +02:00
- New providers gemini-deep-research + gemini-deep-research-max on the Interactions API (preview-04-2026). Submit/poll split, tier parameter selects between standard (~minutes, $1–3) and max (up to 60 min, $3–7). - Parser matches the real response shape: flat `outputs` array of thought|text|image items, url_citation annotations without title, `usage.total_input_tokens` / `total_output_tokens`. - Route generalisation: /v1/research/async accepts `provider` with default 'openai-deep-research' (backward compatible) and dispatches to the right submit/poll pair. - New internal service-to-service endpoint /v1/internal/research/async gated by X-Service-Key + X-User-Id for credit accounting. Enables mana-ai to drive deep-research jobs on the mission owner's wallet without requiring a user JWT. - Pricing: 300 credits (standard) / 1500 credits (max). Conservative markup over the ~$3/$7 ceiling so the first runs can't surprise us. - Docs: AGENT_PROVIDER_IDS + pricing + env map + auto-router stay in sync; CLAUDE.md Phase 3b now current; API_KEYS.md references the new providers under GOOGLE_GENAI_API_KEY. Verified with a real smoke test against the Gemini API: submit + poll both succeed, completed response parsed cleanly. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
27 lines
901 B
TypeScript
27 lines
901 B
TypeScript
import type { ProviderId } from '@mana/shared-research';
|
|
import type { Config } from '../config';
|
|
|
|
/**
|
|
* Maps a ProviderId to the corresponding env-key slot on Config.providerKeys.
|
|
* Extract/agent providers that share a key with search (e.g. openai agents)
|
|
* reuse the same slot.
|
|
*/
|
|
export function mapEnvKey(providerId: ProviderId): keyof Config['providerKeys'] {
|
|
const map: Partial<Record<ProviderId, keyof Config['providerKeys']>> = {
|
|
brave: 'brave',
|
|
tavily: 'tavily',
|
|
exa: 'exa',
|
|
serper: 'serper',
|
|
'perplexity-sonar': 'perplexity',
|
|
'claude-web-search': 'anthropic',
|
|
'openai-responses': 'openai',
|
|
'openai-deep-research': 'openai',
|
|
'gemini-grounding': 'googleGenai',
|
|
'gemini-deep-research': 'googleGenai',
|
|
'gemini-deep-research-max': 'googleGenai',
|
|
'jina-reader': 'jina',
|
|
firecrawl: 'firecrawl',
|
|
scrapingbee: 'scrapingbee',
|
|
};
|
|
return map[providerId] ?? 'brave';
|
|
}
|