{"_id":"@diegovisk/pi-nvidia-nim","_rev":"2-cb2d371bb9d7d20de4bc866762000a3e","name":"@diegovisk/pi-nvidia-nim","dist-tags":{"latest":"1.1.1"},"versions":{"1.1.0":{"name":"@diegovisk/pi-nvidia-nim","version":"1.1.0","keywords":["pi-package","pi","pi-extension","nvidia","nim","llm","provider","rate-limit"],"author":{"url":"https://github.com/Diegovisk","name":"Diegovisk"},"license":"MIT","_id":"@diegovisk/pi-nvidia-nim@1.1.0","maintainers":[{"name":"diegovisk","email":"diego_lucena01@live.com"}],"homepage":"https://github.com/Diegovisk/pi-nvidia-nim#readme","bugs":{"url":"https://github.com/Diegovisk/pi-nvidia-nim/issues"},"pi":{"extensions":["./index.ts","./extensions/rate-limit-retry.ts","./extensions/nvidia-router.ts"]},"dist":{"shasum":"2fd7c8082cf5742406b2b2818aff4622f5840135","tarball":"https://registry.npmjs.org/@diegovisk/pi-nvidia-nim/-/pi-nvidia-nim-1.1.0.tgz","fileCount":27,"integrity":"sha512-dW14+Qawu8ZNkumYX1EaY1wlqIjCf+YM8lJWtlLB7Zd2qh5ki6eMG94I5vzBoM8ilHP2m9vCoW1uLbi5S/yEIQ==","signatures":[{"sig":"MEUCICSWVDYrPahncfvqmFUw9hP34gAqgU9xq+I0Vjri0JbHAiEA2DWifENpWqsvNZKajS0xzoMWPGiK3yUpZ1kZsahnGl8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":140336},"main":"index.ts","type":"module","types":"index.ts","gitHead":"19e73722923ebf42ef9c0df8f49193944bf3255b","scripts":{"test":"node tests/run-all.mjs","dry-publish":"npm publish --dry-run --access public","refresh-metadata":"node scripts/refresh-metadata.mjs"},"_npmUser":{"name":"diegovisk","email":"diego_lucena01@live.com"},"repository":{"url":"git+https://github.com/Diegovisk/pi-nvidia-nim.git","type":"git"},"_npmVersion":"10.9.8","description":"NVIDIA NIM provider for pi — full model catalog, per-family thinking handlers, and aggressive rate-limit retry","directories":{},"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-nvidia-nim_1.1.0_1783653076572_0.675873925807819","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@diegovisk/pi-nvidia-nim","version":"1.1.1","description":"NVIDIA NIM provider for pi — full model catalog, per-family thinking handlers, and aggressive rate-limit retry","author":{"name":"Diegovisk","url":"https://github.com/Diegovisk"},"license":"MIT","type":"module","main":"index.ts","types":"index.ts","scripts":{"refresh-metadata":"node scripts/refresh-metadata.mjs","test":"node tests/run-all.mjs","dry-publish":"npm publish --dry-run --access public"},"pi":{"extensions":["./index.ts","./extensions/rate-limit-retry.ts","./extensions/nvidia-router.ts"]},"peerDependencies":{"@earendil-works/pi-ai":"*","@earendil-works/pi-coding-agent":"*"},"keywords":["pi-package","pi","pi-extension","nvidia","nim","llm","provider","rate-limit"],"repository":{"type":"git","url":"git+https://github.com/Diegovisk/pi-nvidia-nim.git"},"homepage":"https://github.com/Diegovisk/pi-nvidia-nim#readme","bugs":{"url":"https://github.com/Diegovisk/pi-nvidia-nim/issues"},"_id":"@diegovisk/pi-nvidia-nim@1.1.1","gitHead":"6d19ca7b4dc878176b30ee13e087bbb86faf2606","_nodeVersion":"22.23.1","_npmVersion":"10.9.8","dist":{"integrity":"sha512-05Kdexs7TIVjMbJn3a5GJGfO7P1lSL/PptjOIrUXNVrJ2NKky6YjxrY3SlBl7rrzx21YT9dIA8zQJXaTAgsn9w==","shasum":"31aa5bc3417214400dd847c3b1c5b5cfa49a832f","tarball":"https://registry.npmjs.org/@diegovisk/pi-nvidia-nim/-/pi-nvidia-nim-1.1.1.tgz","fileCount":27,"unpackedSize":140263,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDz33UQPGDhCM24VIW7GTW3Mhl77FRXu9/Zeg9dOPLFTwIhAMTpqHRYFv5FNAT5JgjTyighuJcrWJOw2cPloQmSYvaf"}]},"_npmUser":{"name":"diegovisk","email":"diego_lucena01@live.com"},"directories":{},"maintainers":[{"name":"diegovisk","email":"diego_lucena01@live.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-nvidia-nim_1.1.1_1783966609548_0.6741915792049971"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-10T03:11:16.370Z","modified":"2026-07-13T18:16:49.775Z","1.1.0":"2026-07-10T03:11:16.721Z","1.1.1":"2026-07-13T18:16:49.688Z"},"bugs":{"url":"https://github.com/Diegovisk/pi-nvidia-nim/issues"},"author":{"name":"Diegovisk","url":"https://github.com/Diegovisk"},"license":"MIT","homepage":"https://github.com/Diegovisk/pi-nvidia-nim#readme","keywords":["pi-package","pi","pi-extension","nvidia","nim","llm","provider","rate-limit"],"repository":{"type":"git","url":"git+https://github.com/Diegovisk/pi-nvidia-nim.git"},"description":"NVIDIA NIM provider for pi — full model catalog, per-family thinking handlers, and aggressive rate-limit retry","maintainers":[{"name":"diegovisk","email":"diego_lucena01@live.com"}],"readme":"# pi-nvidia-nim-diegovisk\r\n\r\nNVIDIA NIM provider for [pi](https://github.com/earendil-works/pi-coding-agent) with the full chat model catalog, per-family thinking/request transforms, and aggressive rate-limit retry for uninterrupted free-tier development.\r\n\r\nForked from [pi-extension-nvidia-nim](https://github.com/Tibbee/pi-nvidia-nim-provider) (MIT, Tibbee) with merged [pi-nvidia-rate-limit-retry](https://github.com/Diegovisk/pi-nvidia-rate-limit-retry) (MIT, Diegovisk).\r\n\r\n## Why this fork\r\n\r\nPi's built-in `nvidia` provider ships ~20 models with no per-model thinking transforms. The upstream `pi-extension-nvidia-nim` package registers `nvidia-nim` with ~82 chat models and 8+ thinking handlers, but does not retry 429s aggressively. This fork combines both.\r\n\r\n## Recommended free-dev stack\r\n\r\n| Role | Model |\r\n|------|-------|\r\n| Auto failover (sticky router) | `nvidia-nim/nvidia-router` |\r\n| Primary (tools + vision) | `nvidia-nim/minimaxai/minimax-m3` |\r\n| Reasoning fallback | `nvidia-nim/nvidia/nemotron-3-super-120b-a12b` |\r\n| Fast fallback | `nvidia-nim/meta/llama-3.3-70b-instruct` |\r\n\r\nSet `defaultModel` to `nvidia-router` to let the extension pick from the chain above and only switch on rate-limit exhaustion or context overflow.\r\n\r\n## Install\r\n\r\n### npm (recommended)\r\n\r\n```bash\r\npi install npm:@diegovisk/pi-nvidia-nim@1.1.0\r\n```\r\n\r\nOr add to `~/.pi/agent/settings.json`:\r\n\r\n```json\r\n{\r\n  \"packages\": [\"npm:@diegovisk/pi-nvidia-nim\"]\r\n}\r\n```\r\n\r\n> **Note:** Published as `@diegovisk/pi-nvidia-nim` because unscoped `pi-nvidia-nim` is taken on npm.\r\n\r\n### git\r\n\r\n```bash\r\npi install git:github.com/Diegovisk/pi-nvidia-nim@main\r\n```\r\n\r\n### Local path (development)\r\n\r\n```bash\r\npi install file:C:/Users/diego/projects/pi-nvidia-nim\r\n```\r\n\r\n### Configure API key\r\n\r\nSet one of:\r\n\r\n```bash\r\nexport NVIDIA_NIM_API_KEY=\"nvapi-...\"\r\n# or (compatible with pi /login and auth.json \"nvidia\" entry)\r\nexport NVIDIA_API_KEY=\"nvapi-...\"\r\n```\r\n\r\n### Switch default provider\r\n\r\nIn `~/.pi/agent/settings.json`:\r\n\r\n```json\r\n{\r\n  \"defaultProvider\": \"nvidia-nim\",\r\n  \"defaultModel\": \"nvidia-router\",\r\n  \"packages\": [\"file:C:/Users/diego/projects/pi-nvidia-nim\"]\r\n}\r\n```\r\n\r\nOr pin a concrete model:\r\n\r\n```json\r\n{\r\n  \"defaultProvider\": \"nvidia-nim\",\r\n  \"defaultModel\": \"minimaxai/minimax-m3\"\r\n}\r\n```\r\n\r\nRemove `npm:pi-extension-nvidia-nim` and the standalone `~/.pi/agent/extensions/nvidia-rate-limit-retry.ts` to avoid double-wrapping.\r\n\r\nThen `/reload` in pi.\r\n\r\n## Features\r\n\r\n- **~82 curated chat models** from scraped NIM metadata + 44 regex families\r\n- **Per-model request transforms** via `before_provider_request` (DeepSeek V4, GLM, MiniMax M3, Nemotron, Kimi K2.6, Seed OSS, etc.)\r\n- **Content normalization** for legacy models that reject structured content arrays\r\n- **Rate-limit retry** — up to 20 attempts with exponential backoff (env-tunable); covers `nvidia`, `nvidia-nim`, and OpenRouter `nvidia/*`\r\n- **Compaction-safe summarization** — auto-compact and `/compact` calls force thinking **off** so MiniMax/NIM does not 400 during context overflow recovery\r\n- **NVIDIA Router** — virtual `nvidia-router` model with sticky per-session routing across the free-dev fallback chain; re-selects only on 429 exhaustion or context overflow\r\n- **Catalog refresh** — `/nim-refresh` caches live API model list; `npm run refresh-metadata` merges new IDs into metadata\r\n\r\n## Commands\r\n\r\n| Command | Description |\r\n|---------|-------------|\r\n| `/nim-models` | List registered models by family + recommended stack |\r\n| `/nim-refresh` | Refresh `~/.pi/nvidia-nim-cache.json` from NIM API |\r\n| `/nim-router` | Show sticky routed model, fallback chain, and eligibility |\r\n| `/nim-router reset` | Clear sticky router state (re-pick from chain head) |\r\n| `/nim-retry-status` | Show rate-limit retry stats for this session + audit log path |\r\n| `/nim-retry-status reset` | Clear retry session counters |\r\n\r\nRetry events are appended to `~/.pi/nvidia-nim-retry.log` (JSONL). Disable with `NVIDIA_RETRY_AUDIT=0`.\r\n\r\n## Router env vars\r\n\r\n| Variable | Default | Meaning |\r\n|----------|---------|---------|\r\n| `NVIDIA_ROUTER_CHAIN` | `minimaxai/minimax-m3,nvidia/nemotron-3-super-120b-a12b,meta/llama-3.3-70b-instruct` | Comma-separated fallback order |\r\n| `NVIDIA_ROUTER_MARGIN` | 1.15 | Context headroom multiplier for eligibility filter |\r\n\r\nRouter behavior:\r\n\r\n- Picks one concrete model per session (sticky) from the chain.\r\n- Only advances on **429 retry budget exhausted** or **context overflow**.\r\n- Filters candidates by estimated context size and vision requirements.\r\n- Advertises 1M context on the virtual model so pi does not pre-reject long sessions.\r\n\r\nVerify after `/reload`:\r\n\r\n```\r\n[nvidia-router] loaded — sticky failover router for nvidia-router.\r\n```\r\n\r\n## Rate-limit env vars\r\n\r\n| Variable | Default | Meaning |\r\n|----------|---------|---------|\r\n| `NVIDIA_RETRY_MAX` | 20 | Max attempts per request |\r\n| `NVIDIA_RETRY_BASE_MS` | 2000 | Base backoff |\r\n| `NVIDIA_RETRY_CAP_MS` | 60000 | Max single delay |\r\n| `NVIDIA_RETRY_JITTER` | 0.2 | Jitter fraction |\r\n| `NVIDIA_RETRY_AUDIT` | 1 | Set `0` to disable JSONL audit file |\r\n| `NVIDIA_RETRY_AUDIT_LOG` | `~/.pi/nvidia-nim-retry.log` | Audit log path |\r\n\r\nVerify after `/reload`:\r\n\r\n```\r\n[nvidia-rate-limit-retry] loaded — NVIDIA NIM retries: max 20, base 2000ms, cap 60000ms, jitter 20%.\r\n```\r\n\r\n## Debug\r\n\r\n```bash\r\nNIM_DEBUG=1 pi\r\n```\r\n\r\nInspect `~/.pi/nim-debug.log` for final request payloads per model.\r\n\r\n## Validation matrix\r\n\r\nSmoke-test these families at thinking levels `off`, `medium`, `high`:\r\n\r\n| Family | Example model | Pass criteria |\r\n|--------|---------------|---------------|\r\n| `minimax-inline` | `minimaxai/minimax-m3` | Tool calls; thinking toggles |\r\n| `nemotron-3-super-effort` | `nvidia/nemotron-3-super-120b-a12b` | Reasoning streams; no 400 |\r\n| `deepseek-v4` | `deepseek-ai/deepseek-v4-flash` | `chat_template_kwargs` in debug log |\r\n| `qwen-chat-template` | `qwen/qwen3.5-122b-a10b` | Native pi compat sufficient |\r\n| `glm` | `z-ai/glm-5.2` | `enable_thinking` / `clear_thinking` correct |\r\n| Plain | `meta/llama-3.3-70b-instruct` | No structured-array 400 |\r\n| Rate limit | any free model | `[nvidia-rate-limit-retry]` logs; succeeds by attempt 2–3 |\r\n\r\nRun unit tests:\r\n\r\n```bash\r\nnpm test\r\n```\r\n\r\n## Upstream\r\n\r\n- [Tibbee/pi-nvidia-nim-provider](https://github.com/Tibbee/pi-nvidia-nim-provider) — base provider + handlers\r\n- [Diegovisk/pi-nvidia-rate-limit-retry](https://github.com/Diegovisk/pi-nvidia-rate-limit-retry) — **deprecated**; retry is bundled in this repo\r\n\r\n## License\r\n\r\nMIT — see [LICENSE](LICENSE).\r\n","readmeFilename":"README.md"}