{"_id":"navige","_rev":"3-1fc86560284169dfdc44bf7c945c8a2f","name":"navige","dist-tags":{"latest":"3.0.0"},"versions":{"2.0.0":{"name":"navige","version":"2.0.0","keywords":["ai-governance","ai-agents","mcp","model-context-protocol","openai","anthropic","claude","tool-calls","audit-trail","compliance","human-in-the-loop","kill-switch","eu-ai-act","llm","agent-safety","governance","navige"],"author":{"name":"navige"},"license":"MIT","_id":"navige@2.0.0","maintainers":[{"name":"trustloop_sdk","email":"soji@trustloop.live"}],"homepage":"https://navige.ai","bugs":{"url":"https://github.com/SMJAI/trustloop-sdk/issues"},"dist":{"shasum":"4c4e380d00b0593e21a017a417c1a558cc0fb352","tarball":"https://registry.npmjs.org/navige/-/navige-2.0.0.tgz","fileCount":5,"integrity":"sha512-fykU/fUIcYAGw8CIARwc+PSbjefMpJy/WQe8AD1/gN2bqvTmcWg6HmNwpeltwtLSgvsbyh0ZmP9oTINFZM7Oog==","signatures":[{"sig":"MEUCICVkTwHnVX5c9gzj1HL3ZbGAFI7n1UqeQL19ZkbMEoCSAiEAvl4b0PVQl0X7I+axehkqUzRJGwzXc9HbbfUbc+Ugm4M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23476},"main":"index.js","types":"types.d.ts","engines":{"node":">=18"},"gitHead":"a63b06abe843b269a98efc84ef4b55ad4c685957","_npmUser":{"name":"trustloop_sdk","email":"soji@trustloop.live"},"repository":{"url":"git+https://github.com/SMJAI/trustloop-sdk.git","type":"git"},"_npmVersion":"11.6.2","description":"AI governance SDK — intercept, audit, and control AI agent tool calls. Add human-in-the-loop approval, kill switches, and a full audit trail to any AI agent.","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/navige_2.0.0_1785105563910_0.6786412719068149","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"navige","version":"2.0.1","keywords":["ai-governance","ai-agents","mcp","model-context-protocol","openai","anthropic","claude","tool-calls","audit-trail","compliance","human-in-the-loop","kill-switch","eu-ai-act","llm","agent-safety","governance","navige"],"author":{"name":"navige"},"license":"MIT","_id":"navige@2.0.1","maintainers":[{"name":"trustloop_sdk","email":"soji@trustloop.live"}],"homepage":"https://navige.ai","bugs":{"url":"https://github.com/SMJAI/trustloop-sdk/issues"},"dist":{"shasum":"9c4ba13b2b5d22e5168004c9ed32ec60424bd71b","tarball":"https://registry.npmjs.org/navige/-/navige-2.0.1.tgz","fileCount":5,"integrity":"sha512-QGdmhZ/d4lEQ8wnHQtXB8de4UpqpHjra2l23tuxLXajyfY/12j7X0b9bxQkwf1XBokkYdYd5Ty6Jz6Xgttjm8A==","signatures":[{"sig":"MEYCIQCv7GTuZDpoC6ZEivlBonAtYBhPHdizuHt1GDMkB0eqTQIhAJmV7FEjWbcuoR1bNZX9c1w0FCuTafFSMXxKbh4m8QT+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23248},"main":"index.js","types":"types.d.ts","engines":{"node":">=18"},"gitHead":"f668dcfe85d4d99857379f32cdd2a9d9f13af888","_npmUser":{"name":"trustloop_sdk","email":"soji@trustloop.live"},"repository":{"url":"git+https://github.com/SMJAI/trustloop-sdk.git","type":"git"},"_npmVersion":"11.6.2","description":"AI governance SDK — intercept, audit, and control AI agent tool calls. Add human-in-the-loop approval, kill switches, and a full audit trail to any AI agent.","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/navige_2.0.1_1786515781965_0.6763774343252895","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"navige","version":"3.0.0","description":"AI governance SDK — intercept, audit, and control AI agent tool calls. Add human-in-the-loop approval, kill switches, and a full audit trail to any AI agent.","main":"index.js","types":"types.d.ts","keywords":["ai-governance","ai-agents","mcp","model-context-protocol","openai","anthropic","claude","tool-calls","audit-trail","compliance","human-in-the-loop","kill-switch","eu-ai-act","llm","agent-safety","governance","navige"],"author":{"name":"navige"},"license":"MIT","homepage":"https://navige.ai","repository":{"type":"git","url":"git+https://github.com/SMJAI/trustloop-sdk.git"},"bugs":{"url":"https://github.com/SMJAI/trustloop-sdk/issues"},"engines":{"node":">=18"},"gitHead":"90f6a810ff76692b9c4c9197a9dd55d875318f09","_id":"navige@3.0.0","_nodeVersion":"24.11.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-6VwrumIYfcFUi+p0XXMz5ZC+arGEGPyZvob2LlTbprvHXigmWTwQipxAk2xC5NAAmVL5KIV21KQzPFcL7lkhXw==","shasum":"eb379fb4a92af13ca53580eb28a9ae7c0d281324","tarball":"https://registry.npmjs.org/navige/-/navige-3.0.0.tgz","fileCount":5,"unpackedSize":21501,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCiaB6qqEmQJr+k7rtl94GbGJqG+ghT7e3zIHaLtt669QIgd9J/9KW1MLzWIpcQMqcwknsea3QMQNhFosbWsYawwpY="}]},"_npmUser":{"name":"trustloop_sdk","email":"soji@trustloop.live"},"directories":{},"maintainers":[{"name":"trustloop_sdk","email":"soji@trustloop.live"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/navige_3.0.0_1788820730962_0.42600660174936444"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-26T22:39:23.740Z","modified":"2026-09-07T22:38:51.239Z","2.0.0":"2026-07-26T22:39:24.049Z","2.0.1":"2026-08-12T06:23:02.124Z","3.0.0":"2026-09-07T22:38:51.094Z"},"bugs":{"url":"https://github.com/SMJAI/trustloop-sdk/issues"},"author":{"name":"navige"},"license":"MIT","homepage":"https://navige.ai","keywords":["ai-governance","ai-agents","mcp","model-context-protocol","openai","anthropic","claude","tool-calls","audit-trail","compliance","human-in-the-loop","kill-switch","eu-ai-act","llm","agent-safety","governance","navige"],"repository":{"type":"git","url":"git+https://github.com/SMJAI/trustloop-sdk.git"},"description":"AI governance SDK — intercept, audit, and control AI agent tool calls. Add human-in-the-loop approval, kill switches, and a full audit trail to any AI agent.","maintainers":[{"name":"trustloop_sdk","email":"soji@trustloop.live"}],"readme":"# navige\n\n**AI governance SDK for Node.js** — add human-in-the-loop approval, kill switches, and a tamper-evident audit trail to any AI agent in minutes.\n\n[![npm version](https://img.shields.io/npm/v/navige.svg)](https://www.npmjs.com/package/navige)\n[![npm downloads](https://img.shields.io/npm/dm/navige.svg)](https://www.npmjs.com/package/navige)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n---\n\n## v3.0.0 — upgrading from 2.x\n\nThis version repoints the SDK at Navige's current platform (the earlier 2.x releases called an\nAPI surface retired in a backend rebuild and would fail against the real service). `intercept()`\nkeeps the same return shape and call pattern — most code needs no changes. What did change:\n\n- **The OpenAI-proxy option is gone.** There is no `/v1` passthrough on the current platform —\n  `Navige.openai()` now throws. Govern the tool call itself with `intercept()` instead (see below).\n- `agentName` and `reason` on `intercept()`'s options are now ignored (an API key identifies\n  exactly one agent already; there's no separate reason field on the current platform).\n- `forwardTo` is removed — Navige never executes an action on your behalf. Check\n  `result.allowed` and call your own tool/API yourself.\n- `getLogs`, `exportLogs`, `getStats`, `getRules`, `createRule`, `deleteRule`, `getBlockedTools`,\n  `blockTool`, `unblockTool`, `getPendingApprovals`, `decide`, `getNotifications`,\n  `updateNotifications` now throw `NavigeError` — this whole surface moved into the dashboard at\n  [app.navige.ai](https://app.navige.ai) and isn't available over an API key.\n- `Navige.mcpUrl()` now returns a `/mcp` URL (Streamable HTTP), not the retired `/sse` endpoint.\n- New: pass `{ wait: false }` to `intercept()` for a non-blocking approval flow, and poll\n  `getApprovalStatus(approvalId)` yourself instead of waiting up to 5 minutes synchronously.\n\n---\n\n## What is Navige?\n\nWhen an AI agent calls a tool — sends an email, writes to a database, approves a wire transfer — Navige intercepts that action **before** it executes, evaluates it against your governance rules, and either:\n\n- **Allows** it (logs to audit trail)\n- **Blocks** it (kill switch or rule match)\n- **Holds it for human approval** (notifies via email, Slack, or a generic webhook to Teams/Discord/PagerDuty/etc.)\n\nWorks with **MCP (Model Context Protocol)**, **LangChain**, **CrewAI**, and any agent framework that can make an authenticated HTTPS call.\n\n---\n\n## Installation\n\n```bash\nnpm install navige\n```\n\nRequires Node.js 18+. No dependencies.\n\n---\n\n## Quick Start\n\n### Manual intercept\n\nCheck each tool call explicitly before running it:\n\n```js\nimport Navige from 'navige';\n\nconst tl = new Navige({ apiKey: 'nv_your-key' });\n\nasync function runTool(toolName, args) {\n  const check = await tl.intercept(toolName, args);\n\n  if (check.allowed) {\n    return await yourToolImplementation(toolName, args);\n  }\n\n  if (check.decision === 'PENDING') {\n    return `Awaiting human approval (ID: ${check.approval_id})`;\n  }\n\n  throw new Error(`Blocked by Navige: ${check.message}`);\n}\n\nawait runTool('send_email', { to: 'ceo@bank.com', subject: 'Wire Transfer' });\n```\n\nGet your Navige API key at [navige.ai/signup](https://navige.ai/signup) — free, no credit card.\n\n### Grouping tools under a system, and overriding classification\n\n```js\nconst check = await tl.intercept(\n  'transfer_funds',\n  { to_account: 'GB29NWBK60161331926819', amount: 5000 },\n  { system: 'Banking API', classification: 'financial' }\n);\n```\n\n### Non-blocking approvals\n\nBy default, `intercept()` blocks (up to 5 minutes) while a required approval is pending. For\ncallers with a short timeout of their own, pass `{ wait: false }` for an immediate `PENDING`\nresult, and poll for the outcome yourself:\n\n```js\nconst check = await tl.intercept('transfer_funds', { amount: 50000 }, { wait: false });\nif (check.decision === 'PENDING') {\n  // ... later, e.g. on a retry or a scheduled check ...\n  const outcome = await tl.getApprovalStatus(check.approval_id);\n}\n```\n\n---\n\n### MCP (Claude Desktop, Cline)\n\nAdd Navige to your Claude Desktop config:\n\n```json\n{\n  \"mcpServers\": {\n    \"navige\": {\n      \"url\": \"https://api.navige.ai/mcp?api_key=nv_your-key\"\n    }\n  }\n}\n```\n\nOr use the helper:\n\n```js\nimport Navige from 'navige';\nconsole.log(Navige.mcpUrl('nv_your-key'));\n// https://api.navige.ai/mcp?api_key=nv_your-key\n```\n\n---\n\n## Policies, kill switch, audit log, approvals\n\nThese are managed from the [dashboard](https://app.navige.ai) — Policies, Kill Switch, Audit Log,\nand Approvals pages — not over the API key. `tl.createRule()`, `tl.blockTool()`, `tl.getLogs()`,\n`tl.getPendingApprovals()`, and similar methods from earlier SDK versions now throw `NavigeError`\nwith a pointer to the right dashboard page, so a leftover call fails loudly instead of silently\ndoing nothing.\n\n---\n\n## Error Handling\n\n```js\nimport Navige, { NavigeError } from 'navige';\n\ntry {\n  const result = await tl.intercept('send_email', { to: '...' });\n} catch (err) {\n  if (err instanceof NavigeError) {\n    console.error(`Navige API error: ${err.message}`);\n  }\n}\n```\n\n---\n\n## TypeScript\n\nFull TypeScript support included — no `@types` package needed.\n\n```ts\nimport Navige, { InterceptResult } from 'navige';\n\nconst tl = new Navige({ apiKey: 'nv_your-key' });\nconst result: InterceptResult = await tl.intercept('my_tool', { param: 'value' });\n```\n\n---\n\n## Why Navige?\n\n| | LangSmith / Arize | Navige |\n|---|---|---|\n| What it monitors | LLM API layer (what the model said) | Tool execution layer (what the agent **did**) |\n| Kill switch | No | Yes |\n| Human approval workflow | No | Yes |\n| Blockchain audit trail | No | Yes |\n| Works with any agent framework | No | Yes |\n\n---\n\n## Links\n\n- **Sign up free:** [navige.ai/signup](https://navige.ai/signup)\n- **Dashboard:** [app.navige.ai](https://app.navige.ai)\n- **Docs:** [navige.ai/technical.html](https://navige.ai/technical.html)\n- **Website:** [navige.ai](https://navige.ai)\n\n---\n\n## License\n\nMIT © [Navige](https://navige.ai)\n","readmeFilename":"README.md"}