{"_id":"@bernierllc/admin-chat-agent-suite","_rev":"5-f0773ec242a9ed1cb9ca9c66072a33e4","name":"@bernierllc/admin-chat-agent-suite","dist-tags":{"latest":"0.1.3"},"versions":{"0.0.1":{"name":"@bernierllc/admin-chat-agent-suite","version":"0.0.1","keywords":["oidc","trusted-publishing","setup"],"_id":"@bernierllc/admin-chat-agent-suite@0.0.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"8a58151627c70f5a3243e0cfbfc6acd5579b0d5b","tarball":"https://registry.npmjs.org/@bernierllc/admin-chat-agent-suite/-/admin-chat-agent-suite-0.0.1.tgz","fileCount":2,"integrity":"sha512-naJcInC7CCkciI3/gSRcm+eYD4vDyok1+ojh8StkgPhTYNlEhatemmQmGzTNYt9+GfER0aEtnj6Ff83r68VpzA==","signatures":[{"sig":"MEUCIQDe3Km4eqga/x7B6woZLCtoSf1t38nKErexz6T0R62vKgIgALPINQOd+RPDfQ8gvjRAj0R6kUMBiT9+kXzhmkYF2M8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2099},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_npmVersion":"11.12.1","description":"OIDC trusted publishing setup package for @bernierllc/admin-chat-agent-suite","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/admin-chat-agent-suite_0.0.1_1782236455166_0.9728244336192282","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@bernierllc/admin-chat-agent-suite","version":"0.1.0","keywords":["admin","agent","ai","tools","streaming","suite","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/admin-chat-agent-suite@0.1.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"8e282972be38d65253402b5dc8a3794108f8d23c","tarball":"https://registry.npmjs.org/@bernierllc/admin-chat-agent-suite/-/admin-chat-agent-suite-0.1.0.tgz","fileCount":19,"integrity":"sha512-0qEh1JTHdaVx/jX2uA8eKqmrG4lf76Qbdarbzwp+RnkXWWThjF8nBoA4U/fcxqXO/yFRpq4G7Ft/rjFN6k2pxw==","signatures":[{"sig":"MEUCIQCKS9pSNXWoJU8q0Ln3y84eJuwI/x9Kn3n/pcL0xfs5/wIgDFFT6rx/18IjN6OAG/pZm69uCTSzKzh1rfJzmaNM8xY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39263},"main":"dist/index.js","_from":"file:bernierllc-admin-chat-agent-suite-0.1.0.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.tsx","test":"echo 'Tests skipped for initial publish'","build":"tsc","clean":"rm -rf dist","test:run":"jest --watchAll=false","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7ea4a57-7af5-429a-b650-9272d4f358e8"}},"_resolved":"/home/runner/work/tools/tools/packages/suite/admin-chat-agent-suite/bernierllc-admin-chat-agent-suite-0.1.0.tgz","_integrity":"sha512-0qEh1JTHdaVx/jX2uA8eKqmrG4lf76Qbdarbzwp+RnkXWWThjF8nBoA4U/fcxqXO/yFRpq4G7Ft/rjFN6k2pxw==","bernierllc":{"runtime":"universal","category":"suite","integration":{"logger":"integrated","neverhub":"optional","neveradmin":"optional"}},"_npmVersion":"11.17.0","description":"Drop-in bundle for an LLM admin assistant: tool execution, streaming, change tracking, conversation persistence, and React UI.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@bernierllc/agent-changeset":"0.2.0","@bernierllc/admin-agent-nextjs":"0.1.0","@bernierllc/admin-agent-chat-ui":"0.1.0","@bernierllc/admin-agent-service":"0.1.0","@bernierllc/agent-tool-registry":"0.2.0","@bernierllc/agent-conversation-store":"0.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","next":"^15.0.0","react":"^18.0.0","eslint":"^8.45.0","ts-jest":"^29.1.0","react-dom":"^18.0.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@testing-library/react":"^13.4.0","jest-environment-jsdom":"^29.5.0","@testing-library/jest-dom":"^5.16.0","@typescript-eslint/parser":"^6.0.0","@bernierllc/neverhub-adapter":"0.4.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"peerDependencies":{"next":">=14.0.0 <16","react":">=18","react-dom":">=18","@bernierllc/neverhub-adapter":">=0.4.0"},"peerDependenciesMeta":{"next":{"optional":true},"react":{"optional":true},"react-dom":{"optional":true},"@bernierllc/neverhub-adapter":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/admin-chat-agent-suite_0.1.0_1782237814648_0.4197537104711997","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@bernierllc/admin-chat-agent-suite","version":"0.1.1","keywords":["admin","agent","ai","tools","streaming","suite","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/admin-chat-agent-suite@0.1.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"d2ab62bece7f103bfe5b119c45fbd7036b5a5049","tarball":"https://registry.npmjs.org/@bernierllc/admin-chat-agent-suite/-/admin-chat-agent-suite-0.1.1.tgz","fileCount":19,"integrity":"sha512-vDb77icT+BqFQJI/McyEje9fEbQKaVqbgZ1HNWiTS4LqmSIfe6cfAbwcXS/Hg/1iznswnUZt6dP0pY3XOcrFYA==","signatures":[{"sig":"MEYCIQCyS7bjTM4jiphmdAoKs5kKaf9nwaCwjp54b2Hg1cScjgIhAP3WVLCZS9Ofpv5OlzzKXsDdioZ/vOALPLrCHW+WnFXp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39263},"main":"dist/index.js","_from":"file:bernierllc-admin-chat-agent-suite-0.1.1.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.tsx","test":"echo 'Tests skipped for initial publish'","build":"tsc","clean":"rm -rf dist","test:run":"jest --watchAll=false","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e7ea4a57-7af5-429a-b650-9272d4f358e8"}},"_resolved":"/home/runner/work/tools/tools/packages/suite/admin-chat-agent-suite/bernierllc-admin-chat-agent-suite-0.1.1.tgz","_integrity":"sha512-vDb77icT+BqFQJI/McyEje9fEbQKaVqbgZ1HNWiTS4LqmSIfe6cfAbwcXS/Hg/1iznswnUZt6dP0pY3XOcrFYA==","bernierllc":{"runtime":"universal","category":"suite","integration":{"logger":"integrated","neverhub":"optional","neveradmin":"optional"}},"_npmVersion":"12.0.1","description":"Drop-in bundle for an LLM admin assistant: tool execution, streaming, change tracking, conversation persistence, and React UI.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@bernierllc/agent-changeset":"0.2.1","@bernierllc/admin-agent-nextjs":"0.1.1","@bernierllc/admin-agent-chat-ui":"0.1.1","@bernierllc/admin-agent-service":"0.1.1","@bernierllc/agent-tool-registry":"0.2.1","@bernierllc/agent-conversation-store":"0.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","next":"^15.0.0","react":"^18.0.0","eslint":"^8.45.0","ts-jest":"^29.1.0","react-dom":"^18.0.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@testing-library/react":"^13.4.0","jest-environment-jsdom":"^29.5.0","@testing-library/jest-dom":"^5.16.0","@typescript-eslint/parser":"^6.0.0","@bernierllc/neverhub-adapter":"0.4.1","@typescript-eslint/eslint-plugin":"^6.0.0"},"peerDependencies":{"next":">=14.0.0 <16","react":">=18","react-dom":">=18","@bernierllc/neverhub-adapter":">=0.4.0"},"peerDependenciesMeta":{"next":{"optional":true},"react":{"optional":true},"react-dom":{"optional":true},"@bernierllc/neverhub-adapter":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/admin-chat-agent-suite_0.1.1_1784016025351_0.7915997745210697","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@bernierllc/admin-chat-agent-suite","version":"0.1.2","keywords":["admin","agent","ai","tools","streaming","suite","bernierllc"],"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/admin-chat-agent-suite@0.1.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"97be7e43a5cafe88b248265881b9d789f1891fc8","tarball":"https://registry.npmjs.org/@bernierllc/admin-chat-agent-suite/-/admin-chat-agent-suite-0.1.2.tgz","fileCount":19,"integrity":"sha512-m3qselhb/QLwFGWTULsMVE5Ze87svHQKigLxda5fLgVUnNJ63TX6wXQ6wRWZZ8OkJUDULc0Ucv9Bsb2IuUnNsA==","signatures":[{"sig":"MEYCIQDoq2cn9f1WVr3reisJcBk6hyyLDeRhKhsLAMM3WUs31wIhAKspKsWmfEvLLCc3m0B7wSuVwZiZnvennd2tyTw6R1Et","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHIYQrk5y9ZImvn5nc5r5HVoDv6xeo5H8cmWmsK5LskiAiAgO018+JLEQwf/s/iFolVo4rvEychnYgdBeRWHD5p4eg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39269},"main":"dist/index.js","_from":"file:bernierllc-admin-chat-agent-suite-0.1.2.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.tsx","test":"echo 'Tests skipped for initial publish'","build":"tsc","clean":"rm -rf dist","test:run":"jest --watchAll=false","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"e7ea4a57-7af5-429a-b650-9272d4f358e8"}},"_resolved":"/home/runner/work/tools/tools/packages/suite/admin-chat-agent-suite/bernierllc-admin-chat-agent-suite-0.1.2.tgz","_integrity":"sha512-m3qselhb/QLwFGWTULsMVE5Ze87svHQKigLxda5fLgVUnNJ63TX6wXQ6wRWZZ8OkJUDULc0Ucv9Bsb2IuUnNsA==","bernierllc":{"runtime":"universal","category":"suite","integration":{"logger":"integrated","neverhub":"optional","neveradmin":"optional"}},"_npmVersion":"12.2.0","description":"Drop-in bundle for an LLM admin assistant: tool execution, streaming, change tracking, conversation persistence, and React UI.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"@bernierllc/agent-changeset":"^0.2.1","@bernierllc/admin-agent-nextjs":"^0.1.1","@bernierllc/admin-agent-chat-ui":"^0.1.2","@bernierllc/admin-agent-service":"^0.1.1","@bernierllc/agent-tool-registry":"^0.2.1","@bernierllc/agent-conversation-store":"^0.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","next":"^15.0.0","react":"^18.0.0","eslint":"^8.45.0","ts-jest":"^29.1.0","react-dom":"^18.0.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@testing-library/react":"^13.4.0","jest-environment-jsdom":"^29.5.0","@testing-library/jest-dom":"^5.16.0","@typescript-eslint/parser":"^6.0.0","@bernierllc/neverhub-adapter":"0.4.1","@typescript-eslint/eslint-plugin":"^6.0.0"},"peerDependencies":{"next":">=14.0.0 <16","react":">=18","react-dom":">=18","@bernierllc/neverhub-adapter":">=0.4.0"},"peerDependenciesMeta":{"next":{"optional":true},"react":{"optional":true},"react-dom":{"optional":true},"@bernierllc/neverhub-adapter":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/admin-chat-agent-suite_0.1.2_1790797190666_0.5299019089670711","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"_id":"@bernierllc/admin-chat-agent-suite@0.1.3","dist":{"shasum":"367cf1395fca390e9eda64861f17610bdd03803d","tarball":"https://registry.npmjs.org/@bernierllc/admin-chat-agent-suite/-/admin-chat-agent-suite-0.1.3.tgz","fileCount":19,"integrity":"sha512-NCyoSBUk65QM3InOpA3iyoKks24BE0z8nQ09wrXbJG+PSy7TLQcEBWcmEuLMmflieCZq0hg6SVn9XlJ1xfUcKg==","signatures":[{"sig":"MEUCIBNS3HE7gLTziDzNBp0BBwswamYEejtFlfDdS1XyreuZAiEAtT90QjsI5tsfe6YML+N+O1ATVsxBpHaftA4bkh2TQuc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGww23R6qTenVl23ucVNNJ0MtRWJ5cchBblDBhXiWDcGAiBbXXR/QNMwk5FXSP24LgJ+yQqTNr5lewQIupoUimtMdg=="}],"unpackedSize":39269},"main":"dist/index.js","name":"@bernierllc/admin-chat-agent-suite","_from":"file:bernierllc-admin-chat-agent-suite-0.1.3.tgz","types":"dist/index.d.ts","author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts,.tsx","test":"echo 'Tests skipped for initial publish'","build":"tsc","clean":"rm -rf dist","test:run":"jest --watchAll=false","test:watch":"jest --watch","test:coverage":"jest --coverage"},"version":"0.1.3","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"e7ea4a57-7af5-429a-b650-9272d4f358e8"}},"keywords":["admin","agent","ai","tools","streaming","suite","bernierllc"],"_resolved":"/home/runner/work/tools/tools/packages/suite/admin-chat-agent-suite/bernierllc-admin-chat-agent-suite-0.1.3.tgz","_integrity":"sha512-NCyoSBUk65QM3InOpA3iyoKks24BE0z8nQ09wrXbJG+PSy7TLQcEBWcmEuLMmflieCZq0hg6SVn9XlJ1xfUcKg==","bernierllc":{"runtime":"universal","category":"suite","integration":{"logger":"integrated","neverhub":"optional","neveradmin":"optional"}},"_npmVersion":"12.2.0","description":"Drop-in bundle for an LLM admin assistant: tool execution, streaming, change tracking, conversation persistence, and React UI.","directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_nodeVersion":"24.21.0","dependencies":{"@bernierllc/agent-changeset":"^0.2.1","@bernierllc/admin-agent-nextjs":"^0.1.2","@bernierllc/admin-agent-chat-ui":"^0.1.2","@bernierllc/admin-agent-service":"^0.1.2","@bernierllc/agent-tool-registry":"^0.2.1","@bernierllc/agent-conversation-store":"^0.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","next":"^15.0.0","react":"^18.0.0","eslint":"^8.45.0","ts-jest":"^29.1.0","react-dom":"^18.0.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@testing-library/react":"^13.4.0","jest-environment-jsdom":"^29.5.0","@testing-library/jest-dom":"^5.16.0","@typescript-eslint/parser":"^6.0.0","@bernierllc/neverhub-adapter":"0.4.1","@typescript-eslint/eslint-plugin":"^6.0.0"},"peerDependencies":{"next":">=14.0.0 <16","react":">=18","react-dom":">=18","@bernierllc/neverhub-adapter":">=0.4.0"},"peerDependenciesMeta":{"next":{"optional":true},"react":{"optional":true},"react-dom":{"optional":true},"@bernierllc/neverhub-adapter":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/admin-chat-agent-suite_0.1.3_1790884575656_0.05978375025575633"}}},"time":{"created":"2026-06-23T17:40:54.935Z","modified":"2026-10-01T19:56:15.956Z","0.0.1":"2026-06-23T17:40:55.287Z","0.1.0":"2026-06-23T18:03:34.781Z","0.1.1":"2026-07-14T08:00:25.483Z","0.1.2":"2026-09-30T19:39:50.754Z","0.1.3":"2026-10-01T19:56:15.768Z"},"author":{"name":"Bernier LLC"},"license":"SEE LICENSE IN LICENSE","keywords":["admin","agent","ai","tools","streaming","suite","bernierllc"],"description":"Drop-in bundle for an LLM admin assistant: tool execution, streaming, change tracking, conversation persistence, and React UI.","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"<!--\nCopyright (c) 2025 Bernier LLC\n\nThis file is licensed to the client under a limited-use license.\nThe client may use and modify this code *only within the scope of the project it was delivered for*.\nRedistribution or use in other products or commercial offerings is not permitted without written consent from Bernier LLC.\n-->\n\n# @bernierllc/admin-chat-agent-suite\n\nDrop-in bundle for embedding an LLM-powered admin assistant that can execute privileged actions, stream results, show what changed, and persist conversation history.\n\nOne `createAdminChatAgent(config)` call wires together provider, tools, permissions, persistence, and UI exports.\n\n**No Vercel AI SDK anywhere in this package or its dependency graph.**\n\n---\n\n## Installation\n\n```bash\nnpm install @bernierllc/admin-chat-agent-suite\n```\n\nPeer dependencies:\n\n```bash\nnpm install react react-dom next\n# Optional:\nnpm install @bernierllc/neverhub-adapter\n```\n\n---\n\n## Usage\n\n```typescript\nimport {\n  createAdminChatAgent,\n  InMemoryConversationStore,\n} from '@bernierllc/admin-chat-agent-suite';\n\n// 1. Define your domain tools\nconst getBookings = {\n  name: 'getBookings',\n  description: 'Fetch bookings for a date range',\n  inputSchema: {\n    type: 'object',\n    properties: {\n      startDate: { type: 'string' },\n      endDate: { type: 'string' },\n    },\n    required: ['startDate'],\n  },\n  permissions: ['admin:bookings:read'],\n  async execute(input: { startDate: string; endDate?: string }) {\n    const bookings = await db.bookings.findMany({ where: { date: { gte: input.startDate } } });\n    return { success: true, message: `Found ${bookings.length} bookings`, data: bookings };\n  },\n};\n\n// 2. Wire the suite\nconst { agent, routeHandler, components } = createAdminChatAgent({\n  provider: myOpenAIProvider,     // AIProvider from @bernierllc/ai-provider-core or ai-provider-router\n  tools: [getBookings],\n  permissionResolver: async (authCtx) => resolvePermissions(authCtx),\n  store: new InMemoryConversationStore(),  // Replace with Prisma adapter in production\n  maxTurns: 10,\n  timeoutMs: 30_000,\n});\n\n// 3. Next.js route handler (app/api/chat/admin/route.ts)\nexport const POST = routeHandler({\n  auth: async (request) => {\n    const session = await getServerSession(authOptions);\n    if (!session?.user) throw new AdminAgentRouteUnauthorizedError('Unauthorized');\n    return { userId: session.user.id, orgId: session.user.orgId };\n  },\n});\n\n// 4. React layout (app/(admin)/layout.tsx)\nconst { AdminAgentProvider, AdminAgentTrigger, AdminAgentPanel } = components;\n\nexport default function AdminLayout({ children }: { children: React.ReactNode }) {\n  return (\n    <AdminAgentProvider url=\"/api/chat/admin\">\n      {children}\n      <AdminAgentTrigger position=\"bottom-right\" />\n      <AdminAgentPanel />\n    </AdminAgentProvider>\n  );\n}\n```\n\n---\n\n## API Reference\n\n### `createAdminChatAgent(config)`\n\nCreates and returns `{ agent, routeHandler, components }`.\n\n**Config** (`AdminChatAgentConfig` = `AdminAgentConfig` from `@bernierllc/admin-agent-service`):\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| `provider` | yes | `AIProvider` instance from `@bernierllc/ai-provider-core` or `@bernierllc/ai-provider-router` |\n| `tools` | yes | Array of `ToolDefinition` from `@bernierllc/agent-tool-registry` |\n| `permissionResolver` | yes | `(authCtx: AuthContext) => Promise<string[]>` |\n| `store` | yes | `ConversationStore` implementation |\n| `systemPromptBuilder` | no | `(authCtx, orgCtx) => Promise<string>` |\n| `maxTurns` | no | Max LLM turns per chat (default: 10) |\n| `timeoutMs` | no | Per-turn timeout ms (default: 30000) |\n| `rateLimitHook` | no | `RateLimitHook` implementation |\n| `featureGateHook` | no | `FeatureGateHook` implementation |\n\n**Return value:**\n\n- `agent: AdminAgent` — Use `agent.chat(message, authCtx)` directly on the server.\n- `routeHandler: RouteHandlerFactory` — Call with `{ auth }` to get a Next.js POST handler.\n- `components: AdminChatAgentComponents` — All React components and the `useAdminAgentChat` hook.\n\n### Re-exported Components\n\nThe `components` bag (and top-level exports) include:\n\n| Component / Hook | Description |\n|-----------------|-------------|\n| `AdminAgentProvider` | Root React context provider — wrap your admin layout |\n| `AdminAgentTrigger` | Floating sparkles button that opens the panel |\n| `AdminAgentPanel` | Chat sheet/drawer |\n| `AdminAgentPanelHeader` | Panel title bar |\n| `MessageList` | Scrollable message history |\n| `MessageBubble` | Single message bubble (user or assistant) |\n| `ToolResultCard` | Shows tool call success/failure |\n| `ChangeSummaryCard` | Renders changeset rollup markdown |\n| `AgentStatusBar` | Thinking/executing/idle indicator |\n| `useAdminAgentChat` | Hook for programmatic control |\n\n### Re-exported Utilities\n\n```typescript\nimport {\n  InMemoryConversationStore,     // Development-only store\n  AdminChatAgentSuiteError,      // Suite-level error\n  AdminAgentConfigError,          // From admin-agent-service\n  AdminAgentRouteUnauthorizedError, // From admin-agent-nextjs\n  // ... all sub-package errors\n} from '@bernierllc/admin-chat-agent-suite';\n```\n\n---\n\n## MECE Boundaries\n\n### vs. `@bernierllc/chat-suite`\n\n`chat-suite` is channel-agnostic **human-to-human** chat infrastructure: WebSocket connections, message threads, read receipts, presence. No LLM, no tool execution.\n\n`admin-chat-agent-suite` is an **LLM agent** embedded in the admin UI that executes privileged domain actions on behalf of the authenticated admin. Zero overlap.\n\n### vs. `@bernierllc/chat-agent-suite`\n\n`chat-agent-suite` provides support/feedback agents for **end-user channels** (Slack, in-app support, escalation to human). Persona-driven, flow-based, MCP/RAG access.\n\n`admin-chat-agent-suite` is an **admin-privilege-action agent** embedded in the admin dashboard. Tool-execution-driven, permission-scoped, change-tracking, streaming. Different domains, different tools, different UX surface.\n\n---\n\n## Integration Status\n\n### Logger Integration\n\nThis suite uses `@bernierllc/logger` throughout all sub-packages. Logging is automatic and requires no configuration. The logger outputs structured JSON and writes to stdout at INFO level by default.\n\n```typescript\n// Logger integration is automatic — no setup needed.\n// Set LOG_LEVEL env var to control verbosity: debug | info | warn | error\n```\n\n### NeverHub Integration\n\nAll service-tier sub-packages auto-detect `@bernierllc/neverhub-adapter` at runtime and register themselves if NeverHub is available. NeverHub integration is optional — the suite works without it.\n\n```typescript\n// NeverHub integration activates automatically if installed:\n// npm install @bernierllc/neverhub-adapter\n// No code changes needed; services register themselves on initialize().\n```\n\nGraceful degradation is built in — if NeverHub is not installed or not reachable, the suite continues to operate normally.\n\n---\n\n## No Vercel AI SDK\n\nThis suite and all its sub-packages are built on the BernierLLC AI abstraction layer (`@bernierllc/ai-provider-core`, `@bernierllc/ai-provider-router`, `@bernierllc/ai-agent-runtime`). The Vercel AI SDK (`ai` package) is not used anywhere in this dependency graph.\n\n---\n\n## License\n\nCopyright (c) 2025 Bernier LLC. See LICENSE for terms.\n","readmeFilename":"README.md"}