{"_id":"@blackdrome/open-deepresearch","name":"@blackdrome/open-deepresearch","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@blackdrome/open-deepresearch","version":"0.1.0","description":"Standalone open-source DeepResearch engine with OpenRouter and NVIDIA NIM providers","type":"module","main":"dist/index.cjs","module":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"sideEffects":false,"scripts":{"build":"tsup","typecheck":"tsc --noEmit","clean":"rimraf dist","prepublishOnly":"npm run clean && npm run build && npm run typecheck"},"keywords":["deepresearch","rag","search","citations","openrouter","nvidia-nim"],"author":{"name":"BLACKDROME UPAI"},"license":"Apache-2.0","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/blackdrome/upai-open-deepresearch.git"},"bugs":{"url":"https://github.com/blackdrome/upai-open-deepresearch/issues"},"homepage":"https://github.com/blackdrome/upai-open-deepresearch#readme","devDependencies":{"@types/node":"^22.10.1","rimraf":"^6.0.1","tsup":"^8.3.5","typescript":"^5.7.2"},"engines":{"node":">=20"},"_id":"@blackdrome/open-deepresearch@0.1.0","_nodeVersion":"20.18.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-d+7Wbv/B5ooxqS9m/8pPxQulCZUO/TJGqZbQAZGewwc2VlkwLjVvu6LGYa7FU4KbZyot5T98moi+0uH8jA+qEQ==","shasum":"23f725d149d6b154deed622653ec7aa11b392e55","tarball":"https://registry.npmjs.org/@blackdrome/open-deepresearch/-/open-deepresearch-0.1.0.tgz","fileCount":10,"unpackedSize":213406,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIG/A5WeU5uSGtAalzjEXL9Fj8tw4V3SsCmGFW6uubsnfAiEAxR2b2YgDVFi4N/JF5+efgjsVZpKac/A8H5NmdNpgfcY="}]},"_npmUser":{"name":"09catho","email":"ashketchume45@gmail.com"},"directories":{},"maintainers":[{"name":"09catho","email":"ashketchume45@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/open-deepresearch_0.1.0_1772449465120_0.8810904561983608"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-02T11:04:25.045Z","0.1.0":"2026-03-02T11:04:25.281Z","modified":"2026-03-02T11:04:25.552Z"},"maintainers":[{"name":"09catho","email":"ashketchume45@gmail.com"}],"description":"Standalone open-source DeepResearch engine with OpenRouter and NVIDIA NIM providers","homepage":"https://github.com/blackdrome/upai-open-deepresearch#readme","keywords":["deepresearch","rag","search","citations","openrouter","nvidia-nim"],"repository":{"type":"git","url":"git+https://github.com/blackdrome/upai-open-deepresearch.git"},"author":{"name":"BLACKDROME UPAI"},"bugs":{"url":"https://github.com/blackdrome/upai-open-deepresearch/issues"},"license":"Apache-2.0","readme":"# UPAI Open DeepResearch Engine\n\nStandalone open-source DeepResearch engine with:\n\n- adaptive multi-round retrieval\n- ranking + domain diversification\n- claim clustering + contradiction checks\n- citation-grounded synthesis with critique pass\n- pluggable adapters for search + LLM providers\n- built-in providers for **OpenRouter** and **NVIDIA NIM**\n\n## Install\n\n```bash\nnpm install @upai/open-deepresearch\n```\n\n## Quick Start\n\n```ts\nimport {\n  HttpJsonSearchAdapter,\n  createOpenDeepResearchEngine,\n} from \"@upai/open-deepresearch\";\n\nconst searchAdapter = new HttpJsonSearchAdapter({\n  endpoint: process.env.SEARCH_ENDPOINT!,\n  apiKey: process.env.SEARCH_API_KEY,\n  apiKeyHeader: \"Authorization\",\n  staticPayload: { provider: \"free\", mode: \"web\", num: 10 },\n});\n\nconst engine = createOpenDeepResearchEngine({\n  searchAdapter,\n  defaultProvider: \"openrouter\",\n  openRouter: {\n    apiKey: process.env.OPENROUTER_API_KEY!,\n    model: process.env.OPENROUTER_MODEL || \"openai/gpt-4o-mini\",\n  },\n  nim: {\n    apiKey: process.env.NIM_API_KEY!,\n    model: process.env.NIM_MODEL || \"meta/llama-3.1-70b-instruct\",\n  },\n  fallbackComplete: async (prompt) => {\n    return `Fallback handler received prompt length=${prompt.length}`;\n  },\n});\n\nconst run = await engine.run(\"Best RAG architecture for support chat in 2026\", {\n  depth: \"deep\",\n  providerHint: \"openrouter\",\n  onProgress: (p) => console.log(`[${p.stage}] ${p.message}`),\n});\n\nconsole.log(run.finalAnswer);\nconsole.log(run.sourcesForMessage.slice(0, 5));\n```\n\n## Required API Keys\n\nAt minimum, configure one LLM provider and one search endpoint.\n\n### OpenRouter\n\n- `OPENROUTER_API_KEY`\n- `OPENROUTER_MODEL` (example: `openai/gpt-4o-mini`)\n\n### NVIDIA NIM\n\n- `NIM_API_KEY`\n- `NIM_MODEL` (example: `meta/llama-3.1-70b-instruct`)\n\n### Search\n\nUse any endpoint that returns JSON with either:\n\n- `results: [{ title, snippet, url }]`\n- OR `items: [{ title, snippet, url|link }]`\n\nThen configure:\n\n- `SEARCH_ENDPOINT`\n- `SEARCH_API_KEY` (optional, depending on your backend)\n\n## Engine Pipeline\n\n1. **Plan**: Creates multi-angle query set (facts, recency, benchmarks, counterpoints, docs).\n2. **Retrieve**: Executes search with domain/forum constraints.\n3. **Rank**: Scores by relevance + authority + recency + constraint matching.\n4. **Diversify**: Caps per-domain results to avoid over-concentration.\n5. **Verify**: Builds claim graph and finds likely contradictions.\n6. **Synthesize**: Produces direct answer with citations.\n7. **Critique**: Enforces truth contract and repairs response when possible.\n\n## Domain / Forum Constraints\n\nThe engine auto-detects constraints from user query language:\n\n- `site:reddit.com best vector db`\n- `only from stack overflow`\n- `discussion on hacker news`\n\nYou can also pass explicit constraints in `run(..., { constraints })`.\n\n## Progress Events\n\n`run` supports progress hooks for UI and logs:\n\n```ts\nonProgress: (progress) => {\n  // progress.stage: planning | retrieving | ranking | verifying | synthesizing | critiquing\n}\n```\n\n## Exports\n\n- `OpenDeepResearchEngine`\n- `createOpenDeepResearchEngine`\n- `OpenRouterAdapter`\n- `NimAdapter`\n- `HttpJsonSearchAdapter`\n- `FunctionLlmAdapter`\n- all core types and constraints utilities\n\n## Notes\n\n- Node 20+ recommended.\n- The library uses `fetch` and standard Web APIs.\n- For strict security, keep provider keys server-side.\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md","_rev":"1-982d8b6554a49aae9835d4eb7a31b176"}