{"_id":"@ameshkin/agent-handler","_rev":"4-839fe2f86f122c7de1048edb218a54ae","name":"@ameshkin/agent-handler","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.1":{"name":"@ameshkin/agent-handler","version":"0.1.1","_id":"@ameshkin/agent-handler@0.1.1","maintainers":[{"name":"ameshkin","email":"amir.meshkin@gmail.com"}],"homepage":"https://github.com/ameshkin/agent-handler#readme","bugs":{"url":"https://github.com/ameshkin/agent-handler/issues"},"bin":{"agent-handler":"dist/cli/index.js"},"dist":{"shasum":"638d565c0b574caf89112e0aaf8acce0849caae9","tarball":"https://registry.npmjs.org/@ameshkin/agent-handler/-/agent-handler-0.1.1.tgz","fileCount":1014,"integrity":"sha512-YIvWMUCFRtIQxpFPZhyylNHS7G0qcWv/KIm79AdrQLKLdMyflJeZu1WBr9Gn7LjfX3lBVLZnJvCnDZf2jLktgQ==","signatures":[{"sig":"MEUCIASpm+iqZBCTKcIiuxI4B3AzEffB6rI5TpaLjXR9O3mbAiEA9aefND6nQDI2/5uxlClachjRHh6laBgQjv0P/g+ZC4I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2145130},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","browser":{"fs":false,"path":false,"archiver":false,"fast-glob":false,"child_process":false,"@nodelib/fs.walk":false,"@nodelib/fs.scandir":false},"engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js"},"./memory":{"types":"./dist/memory/index.d.ts","import":"./dist/memory/index.js"},"./server":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js"},"./splunk":{"types":"./dist/splunk/index.d.ts","import":"./dist/splunk/index.js"},"./grammar":{"types":"./dist/grammar/index.d.ts","import":"./dist/grammar/index.js"},"./prompts":{"types":"./dist/prompts/index.d.ts","import":"./dist/prompts/index.js"},"./support":{"types":"./dist/support/index.d.ts","import":"./dist/support/index.js"},"./sentinel":{"types":"./dist/sentinel/index.d.ts","import":"./dist/sentinel/index.js"},"./evaluation":{"types":"./dist/evaluation/index.d.ts","import":"./dist/evaluation/index.js"},"./smart-fill":{"types":"./dist/smart-fill/index.d.ts","import":"./dist/smart-fill/index.js"},"./react/admin":{"types":"./dist/react/admin/index.d.ts","import":"./dist/react/admin/index.js"},"./site-search":{"types":"./dist/site-search/index.d.ts","import":"./dist/site-search/index.js"},"./react/splunk":{"types":"./dist/react/splunk/index.d.ts","import":"./dist/react/splunk/index.js"},"./observability":{"types":"./dist/observability/index.d.ts","import":"./dist/observability/index.js"},"./react/grammar":{"types":"./dist/react/grammar/index.d.ts","import":"./dist/react/grammar/index.js"},"./react/sentinel":{"types":"./dist/react/sentinel/index.d.ts","import":"./dist/react/sentinel/index.js"},"./react/smart-fill":{"types":"./dist/react/smart-fill/index.d.ts","import":"./dist/react/smart-fill/index.js"},"./react/site-search":{"types":"./dist/react/site-search/index.d.ts","import":"./dist/react/site-search/index.js"},"./react/observability":{"types":"./dist/react/observability/index.d.ts","import":"./dist/react/observability/index.js"},"./react/AgentHandlerPanel":{"types":"./dist/react/AgentHandlerPanel.d.ts","import":"./dist/react/AgentHandlerPanel.js"},"./react/components/ChatBox":{"types":"./dist/react/components/ChatBox.d.ts","import":"./dist/react/components/ChatBox.js"},"./react/components/ChatAnswer":{"types":"./dist/react/components/ChatAnswer.d.ts","import":"./dist/react/components/ChatAnswer.js"},"./react/components/AISearchBox":{"types":"./dist/react/components/AISearchBox.d.ts","import":"./dist/react/components/AISearchBox.js"},"./react/components/OpenAiContext":{"types":"./dist/react/components/OpenAiContext.d.ts","import":"./dist/react/components/OpenAiContext.js"},"./react/components/AutosuggestBox":{"types":"./dist/react/components/AutosuggestBox.d.ts","import":"./dist/react/components/AutosuggestBox.js"},"./react/hooks/useVectorStoreFiles":{"types":"./dist/react/hooks/useVectorStoreFiles.d.ts","import":"./dist/react/hooks/useVectorStoreFiles.js"}},"gitHead":"3d9db75715d01a72fc2f3ee43ceebdbafb949940","scripts":{"lint":"tsc --noEmit","test":"vitest --run --no-watch","build":"tsc -p tsconfig.json","release":"npm run build && npm test && npm version patch -m \"chore(release): %s\" && git push --follow-tags && npm publish --access public","test:ci":"vitest --run --reporter=basic --no-watch","test:ui":"vitest --ui --run --no-watch","lint:watch":"tsc --noEmit --watch","test:smoke":"vitest --run --no-watch src/core src/utils","test:watch":"vitest","test:manual":"echo '📋 See .docs/testing/TEST_CHECKLIST.md for manual testing guide'","test:coverage":"vitest --run --coverage --no-watch","test:features":"cucumber-js --config cucumber.mjs --publish-quiet","test:smoke:ci":"vitest --run --reporter=basic --no-watch src/core src/utils","test:features:ci":"cucumber-js --config cucumber.mjs --publish-quiet --format progress --no-strict","test:integration":"echo 'Run integration tests in a real project environment'"},"_npmUser":{"name":"ameshkin","email":"amir.meshkin@gmail.com"},"repository":{"url":"git+https://github.com/ameshkin/agent-handler.git","type":"git"},"_npmVersion":"10.2.3","description":"<div align=\"center\">","directories":{},"_nodeVersion":"20.10.0","dependencies":{"ink":"^4.4.1","zod":"^3.25.76","openai":"^6.8.1","scandir":"^0.0.4","archiver":"^7.0.1","commander":"^14.0.2","fast-glob":"^3.3.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^27.2.0","vitest":"^4.0.13","ts-node":"^10.9.2","happy-dom":"^20.0.10","@vitest/ui":"^4.0.13","playwright":"^1.56.1","typescript":"^5.5.4","@types/node":"^20.11.30","@types/react":"^18.3.26","@types/archiver":"^7.0.0","@playwright/test":"^1.56.1","@cucumber/cucumber":"^12.2.0","@vitest/coverage-v8":"^4.0.13","@vitejs/plugin-react":"^4.7.0","@testing-library/react":"^14.3.1","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","@mui/material":"^7.0.0","@emotion/react":"^11.0.0","@emotion/styled":"^11.0.0","@mui/icons-material":"^7.0.0","@ameshkin/payload-patrol":"*"},"peerDependenciesMeta":{"@ameshkin/payload-patrol":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/agent-handler_0.1.1_1764029772255_0.05041917743058266","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@ameshkin/agent-handler","version":"0.1.2","_id":"@ameshkin/agent-handler@0.1.2","maintainers":[{"name":"ameshkin","email":"amir.meshkin@gmail.com"}],"homepage":"https://github.com/ameshkin/agent-handler#readme","bugs":{"url":"https://github.com/ameshkin/agent-handler/issues"},"bin":{"agent-handler":"dist/cli/index.js"},"dist":{"shasum":"157fa8e0452a625c3738b49f99abc6cc67742073","tarball":"https://registry.npmjs.org/@ameshkin/agent-handler/-/agent-handler-0.1.2.tgz","fileCount":1014,"integrity":"sha512-4uO9nTjvSBPZuZfUy1n5lZ1MSYMaHjIrhmWHq7G7wsTpbkphQby/PhuPCQEZ+ki+slBv1dGXJVcw6k7dySkilQ==","signatures":[{"sig":"MEUCIQDmU7TZ2sv3SJ1lCVj7wMQW2pVPCo71nymJzPqc2hXJFwIgeD8vh6Xlqz9FxFy+2D/2+wMwoxV5xKsupodP04veTCs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2145130},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","browser":{"fs":false,"path":false,"archiver":false,"fast-glob":false,"child_process":false,"@nodelib/fs.walk":false,"@nodelib/fs.scandir":false},"engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js"},"./memory":{"types":"./dist/memory/index.d.ts","import":"./dist/memory/index.js"},"./server":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js"},"./splunk":{"types":"./dist/splunk/index.d.ts","import":"./dist/splunk/index.js"},"./grammar":{"types":"./dist/grammar/index.d.ts","import":"./dist/grammar/index.js"},"./prompts":{"types":"./dist/prompts/index.d.ts","import":"./dist/prompts/index.js"},"./support":{"types":"./dist/support/index.d.ts","import":"./dist/support/index.js"},"./sentinel":{"types":"./dist/sentinel/index.d.ts","import":"./dist/sentinel/index.js"},"./evaluation":{"types":"./dist/evaluation/index.d.ts","import":"./dist/evaluation/index.js"},"./smart-fill":{"types":"./dist/smart-fill/index.d.ts","import":"./dist/smart-fill/index.js"},"./react/admin":{"types":"./dist/react/admin/index.d.ts","import":"./dist/react/admin/index.js"},"./site-search":{"types":"./dist/site-search/index.d.ts","import":"./dist/site-search/index.js"},"./react/splunk":{"types":"./dist/react/splunk/index.d.ts","import":"./dist/react/splunk/index.js"},"./observability":{"types":"./dist/observability/index.d.ts","import":"./dist/observability/index.js"},"./react/grammar":{"types":"./dist/react/grammar/index.d.ts","import":"./dist/react/grammar/index.js"},"./react/sentinel":{"types":"./dist/react/sentinel/index.d.ts","import":"./dist/react/sentinel/index.js"},"./react/smart-fill":{"types":"./dist/react/smart-fill/index.d.ts","import":"./dist/react/smart-fill/index.js"},"./react/site-search":{"types":"./dist/react/site-search/index.d.ts","import":"./dist/react/site-search/index.js"},"./react/observability":{"types":"./dist/react/observability/index.d.ts","import":"./dist/react/observability/index.js"},"./react/AgentHandlerPanel":{"types":"./dist/react/AgentHandlerPanel.d.ts","import":"./dist/react/AgentHandlerPanel.js"},"./react/components/ChatBox":{"types":"./dist/react/components/ChatBox.d.ts","import":"./dist/react/components/ChatBox.js"},"./react/components/ChatAnswer":{"types":"./dist/react/components/ChatAnswer.d.ts","import":"./dist/react/components/ChatAnswer.js"},"./react/components/AISearchBox":{"types":"./dist/react/components/AISearchBox.d.ts","import":"./dist/react/components/AISearchBox.js"},"./react/components/OpenAiContext":{"types":"./dist/react/components/OpenAiContext.d.ts","import":"./dist/react/components/OpenAiContext.js"},"./react/components/AutosuggestBox":{"types":"./dist/react/components/AutosuggestBox.d.ts","import":"./dist/react/components/AutosuggestBox.js"},"./react/hooks/useVectorStoreFiles":{"types":"./dist/react/hooks/useVectorStoreFiles.d.ts","import":"./dist/react/hooks/useVectorStoreFiles.js"}},"gitHead":"4c7b4ed727d86ef1c8321719d354794d2cc4fbc3","scripts":{"lint":"tsc --noEmit","test":"vitest --run --no-watch","build":"tsc -p tsconfig.json","release":"npm run build && npm test && npm version patch -m \"chore(release): %s\" && git push --follow-tags && npm publish --access public","test:ci":"vitest --run --reporter=basic --no-watch","test:ui":"vitest --ui --run --no-watch","lint:watch":"tsc --noEmit --watch","test:smoke":"vitest --run --no-watch src/core src/utils","test:watch":"vitest","test:manual":"echo '📋 See .docs/testing/TEST_CHECKLIST.md for manual testing guide'","test:coverage":"vitest --run --coverage --no-watch","test:features":"cucumber-js --config cucumber.mjs --publish-quiet","test:smoke:ci":"vitest --run --reporter=basic --no-watch src/core src/utils","test:features:ci":"cucumber-js --config cucumber.mjs --publish-quiet --format progress --no-strict","test:integration":"echo 'Run integration tests in a real project environment'"},"_npmUser":{"name":"ameshkin","email":"amir.meshkin@gmail.com"},"repository":{"url":"git+https://github.com/ameshkin/agent-handler.git","type":"git"},"_npmVersion":"10.2.3","description":"<div align=\"center\">","directories":{},"_nodeVersion":"20.10.0","dependencies":{"ink":"^4.4.1","zod":"^3.25.76","openai":"^6.8.1","scandir":"^0.0.4","archiver":"^7.0.1","commander":"^14.0.2","fast-glob":"^3.3.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^27.2.0","vitest":"^4.0.13","ts-node":"^10.9.2","happy-dom":"^20.0.10","@vitest/ui":"^4.0.13","playwright":"^1.56.1","typescript":"^5.5.4","@types/node":"^20.11.30","@types/react":"^18.3.26","@types/archiver":"^7.0.0","@playwright/test":"^1.56.1","@cucumber/cucumber":"^12.2.0","@vitest/coverage-v8":"^4.0.13","@vitejs/plugin-react":"^4.7.0","@testing-library/react":"^14.3.1","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","@mui/material":"^7.0.0","@emotion/react":"^11.0.0","@emotion/styled":"^11.0.0","@mui/icons-material":"^7.0.0","@ameshkin/payload-patrol":"*"},"peerDependenciesMeta":{"@ameshkin/payload-patrol":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/agent-handler_0.1.2_1764044202033_0.3609035154376372","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@ameshkin/agent-handler","version":"0.1.3","_id":"@ameshkin/agent-handler@0.1.3","maintainers":[{"name":"ameshkin","email":"amir.meshkin@gmail.com"}],"homepage":"https://github.com/ameshkin/agent-handler#readme","bugs":{"url":"https://github.com/ameshkin/agent-handler/issues"},"bin":{"agent-handler":"dist/cli/index.js"},"dist":{"shasum":"001e2e7550635ee314b7e7c942895a3e45466f26","tarball":"https://registry.npmjs.org/@ameshkin/agent-handler/-/agent-handler-0.1.3.tgz","fileCount":1014,"integrity":"sha512-sGdwFM5S4VO3T2EfNnZaMGEZ4IB8rnutGfdW2erTdSkmX/mz7UeRSbCi5Kvf8H/fa6eADYKuqNXY+2imlVOv+w==","signatures":[{"sig":"MEQCIEZ6VdYYnZK29elc2ZQSnmqNKi/zkO4afsYJuxlisj3NAiBHznT1M0Cvta97Y/MUdHy1GKHhzAts6KcnME6anrKFew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2145128},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","browser":{"fs":false,"path":false,"archiver":false,"fast-glob":false,"child_process":false,"@nodelib/fs.walk":false,"@nodelib/fs.scandir":false},"engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js"},"./memory":{"types":"./dist/memory/index.d.ts","import":"./dist/memory/index.js"},"./server":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js"},"./splunk":{"types":"./dist/splunk/index.d.ts","import":"./dist/splunk/index.js"},"./grammar":{"types":"./dist/grammar/index.d.ts","import":"./dist/grammar/index.js"},"./prompts":{"types":"./dist/prompts/index.d.ts","import":"./dist/prompts/index.js"},"./support":{"types":"./dist/support/index.d.ts","import":"./dist/support/index.js"},"./sentinel":{"types":"./dist/sentinel/index.d.ts","import":"./dist/sentinel/index.js"},"./evaluation":{"types":"./dist/evaluation/index.d.ts","import":"./dist/evaluation/index.js"},"./smart-fill":{"types":"./dist/smart-fill/index.d.ts","import":"./dist/smart-fill/index.js"},"./react/admin":{"types":"./dist/react/admin/index.d.ts","import":"./dist/react/admin/index.js"},"./site-search":{"types":"./dist/site-search/index.d.ts","import":"./dist/site-search/index.js"},"./react/splunk":{"types":"./dist/react/splunk/index.d.ts","import":"./dist/react/splunk/index.js"},"./observability":{"types":"./dist/observability/index.d.ts","import":"./dist/observability/index.js"},"./react/grammar":{"types":"./dist/react/grammar/index.d.ts","import":"./dist/react/grammar/index.js"},"./react/sentinel":{"types":"./dist/react/sentinel/index.d.ts","import":"./dist/react/sentinel/index.js"},"./react/smart-fill":{"types":"./dist/react/smart-fill/index.d.ts","import":"./dist/react/smart-fill/index.js"},"./react/site-search":{"types":"./dist/react/site-search/index.d.ts","import":"./dist/react/site-search/index.js"},"./react/observability":{"types":"./dist/react/observability/index.d.ts","import":"./dist/react/observability/index.js"},"./react/AgentHandlerPanel":{"types":"./dist/react/AgentHandlerPanel.d.ts","import":"./dist/react/AgentHandlerPanel.js"},"./react/components/ChatBox":{"types":"./dist/react/components/ChatBox.d.ts","import":"./dist/react/components/ChatBox.js"},"./react/components/ChatAnswer":{"types":"./dist/react/components/ChatAnswer.d.ts","import":"./dist/react/components/ChatAnswer.js"},"./react/components/AISearchBox":{"types":"./dist/react/components/AISearchBox.d.ts","import":"./dist/react/components/AISearchBox.js"},"./react/components/OpenAiContext":{"types":"./dist/react/components/OpenAiContext.d.ts","import":"./dist/react/components/OpenAiContext.js"},"./react/components/AutosuggestBox":{"types":"./dist/react/components/AutosuggestBox.d.ts","import":"./dist/react/components/AutosuggestBox.js"},"./react/hooks/useVectorStoreFiles":{"types":"./dist/react/hooks/useVectorStoreFiles.d.ts","import":"./dist/react/hooks/useVectorStoreFiles.js"}},"gitHead":"d3149447907fa95b94e0901492524ee61f844b92","scripts":{"lint":"tsc --noEmit","test":"vitest --run --no-watch","build":"tsc -p tsconfig.json","release":"npm run build && npm test && npm version patch -m \"chore(release): %s\" && git push --follow-tags && npm publish --access public","test:ci":"vitest --run --reporter=basic --no-watch","test:ui":"vitest --ui --run --no-watch","lint:watch":"tsc --noEmit --watch","test:smoke":"vitest --run --no-watch src/core src/utils","test:watch":"vitest","test:manual":"echo '📋 See .docs/testing/TEST_CHECKLIST.md for manual testing guide'","test:coverage":"vitest --run --coverage --no-watch","test:features":"cucumber-js --config cucumber.mjs --publish-quiet","test:smoke:ci":"vitest --run --reporter=basic --no-watch src/core src/utils","test:features:ci":"cucumber-js --config cucumber.mjs --publish-quiet --format progress --no-strict","test:integration":"echo 'Run integration tests in a real project environment'"},"_npmUser":{"name":"ameshkin","email":"amir.meshkin@gmail.com"},"repository":{"url":"git+https://github.com/ameshkin/agent-handler.git","type":"git"},"_npmVersion":"10.2.3","description":"<div align=\"center\">","directories":{},"_nodeVersion":"20.10.0","dependencies":{"ink":"^4.4.1","zod":"^3.25.76","openai":"^6.8.1","scandir":"^0.0.4","archiver":"^7.0.1","commander":"^14.0.2","fast-glob":"^3.3.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^27.2.0","vitest":"^4.0.13","ts-node":"^10.9.2","happy-dom":"^20.0.10","@vitest/ui":"^4.0.13","playwright":"^1.56.1","typescript":"^5.5.4","@types/node":"^20.11.30","@types/react":"^18.3.26","@types/archiver":"^7.0.0","@playwright/test":"^1.56.1","@cucumber/cucumber":"^12.2.0","@vitest/coverage-v8":"^4.0.13","@vitejs/plugin-react":"^4.7.0","@testing-library/react":"^14.3.1","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18","@mui/material":"^7.0.0","@emotion/react":"^11.0.0","@emotion/styled":"^11.0.0","@mui/icons-material":"^7.0.0","@ameshkin/payload-patrol":"*"},"peerDependenciesMeta":{"@ameshkin/payload-patrol":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/agent-handler_0.1.3_1764044407811_0.31793909277700183","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2025-11-25T00:16:12.139Z","modified":"2025-12-12T03:06:19.979Z","0.1.1":"2025-11-25T00:16:12.507Z","0.1.2":"2025-11-25T04:16:42.263Z","0.1.3":"2025-11-25T04:20:08.065Z"},"bugs":{"url":"https://github.com/ameshkin/agent-handler/issues"},"homepage":"https://github.com/ameshkin/agent-handler#readme","repository":{"url":"git+https://github.com/ameshkin/agent-handler.git","type":"git"},"description":"<div align=\"center\">","maintainers":[{"email":"amir.meshkin@gmail.com","name":"nevaro"}],"readme":"# @ameshkin/agent-handler\n\n<div align=\"center\">\n\n![npm version](https://img.shields.io/npm/v/@ameshkin/agent-handler?style=flat-square)\n![npm downloads](https://img.shields.io/npm/dm/@ameshkin/agent-handler?style=flat-square)\n![npm bundle size](https://img.shields.io/bundlephobia/minzip/@ameshkin/agent-handler?style=flat-square)\n![GitHub stars](https://img.shields.io/github/stars/ameshkin/agent-handler?style=social)\n![GitHub license](https://img.shields.io/github/license/ameshkin/agent-handler?style=flat-square)\n![Node.js version](https://img.shields.io/node/v/@ameshkin/agent-handler?style=flat-square)\n![TypeScript](https://img.shields.io/badge/TypeScript-5.5-blue?style=flat-square&logo=typescript)\n![Tests](https://img.shields.io/badge/tests-579%20passing-brightgreen?style=flat-square)\n![Coverage](https://img.shields.io/badge/coverage-80%25+-green?style=flat-square)\n\n[![CI](https://github.com/ameshkin/agent-handler/actions/workflows/test.yml/badge.svg)](https://github.com/ameshkin/agent-handler/actions)\n\n</div>\n\nA comprehensive agent handler library for OpenAI-powered applications with RAG, observability, evaluation, memory management, and more.\n\n## ✨ Features\n\n- 🤖 **AI-Powered Components** - Chat, search, autosuggest, and grammar correction\n- 🔍 **RAG & Search** - Enterprise-grade semantic search with vector stores\n- 📊 **Observability** - Agent execution tracing and monitoring\n- ✅ **Evaluation** - Test datasets and automated scoring\n- 💬 **Memory Management** - Conversation history and context management\n- 📝 **Prompt Management** - Versioned prompt library and optimization\n- 🔒 **Security** - AI-powered vulnerability scanning\n- 🛠️ **CLI Tools** - Command-line interface for assistant management\n- ⚡ **TypeScript** - Fully typed with TypeScript 5.5\n- 🧪 **Well Tested** - 579 tests across 61 test files\n\n## 📦 Installation\n\n```bash\nnpm install @ameshkin/agent-handler\n```\n\n## 🚀 Quick Start\n\n### Basic Chat Component\n\n```tsx\nimport { ChatBox } from '@ameshkin/agent-handler/react/components/ChatBox';\n\nfunction App() {\n  return (\n    <ChatBox\n      value={message}\n      onChange={setMessage}\n      onSubmit={handleSubmit}\n      assistantId=\"asst_xxx\"\n    />\n  );\n}\n```\n\n### AI Search\n\n```tsx\nimport { AISearchBox } from '@ameshkin/agent-handler/react/components/AISearchBox';\n\nfunction SearchPage() {\n  return (\n    <AISearchBox\n      assistantId=\"asst_xxx\"\n      onResults={(results) => console.log(results)}\n    />\n  );\n}\n```\n\n### CLI Usage\n\n```bash\n# Install globally\nnpm install -g @ameshkin/agent-handler\n\n# Index files for RAG\nagent-handler index --profile dev\n\n# Run assistant\nagent-handler run --profile dev \"What is this project about?\"\n```\n\n## 📚 Documentation\n\nComprehensive documentation is available in the [`.docs`](./.docs) directory:\n\n- **[Complete Documentation](./.docs/README.md)** - Full feature guide\n- **[API Routes](./.docs/guides/api-routes.md)** - Server endpoints\n- **[CLI Commands](./.docs/reference/cli-commands.md)** - Command reference\n- **[Configuration](./.docs/reference/agents-json-schema.md)** - Config schema\n\n### Popular Guides\n\n- [Chat & AI Search](./.docs/guides/chat-and-search.md) - One-line AI components\n- [Observability & Tracing](./.docs/guides/observability.md) - Execution monitoring\n- [Memory Management](./.docs/guides/memory.md) - Conversation history\n- [Grammar Assistant](./.docs/guides/grammar-assistant.md) - AI grammar correction\n- [Sentinel Security Scanner](./.docs/guides/sentinel-security-scanner.md) - Vulnerability scanning\n\n## 🧪 Testing\n\nThis package uses **Vitest** for unit/integration tests and **Cucumber/Gherkin** for BDD-style feature tests.\n\n### Quick Start\n\n```bash\n# Run all tests (CI-safe, non-watch)\nnpm test\n\n# CI-style run (recommended for CI/Cursor)\nnpm run test:ci\n\n# Watch mode (local development only)\nnpm run test:watch\n\n# Coverage report\nnpm run test:coverage\n\n# BDD/Gherkin features\nnpm run test:features\n```\n\n### Test Commands\n\nAll test commands are **non-watch and CI-safe** by default:\n\n- `npm test` - Run all Vitest tests once\n- `npm run test:ci` - **Recommended for CI/Cursor** (basic reporter, non-watch)\n- `npm run test:watch` - Watch mode (local development only)\n- `npm run test:ui` - Vitest UI dashboard (runs once, local only)\n- `npm run test:coverage` - Generate coverage report\n- `npm run test:features` - Run Gherkin feature tests\n- `npm run test:features:ci` - Gherkin with progress format (CI-safe)\n\nFor detailed testing documentation, see [TESTING.md](./TESTING.md).\n\n## 🎯 Core Modules\n\n### React Components\n\n- `ChatBox` - Full-featured chat interface\n- `AISearchBox` - AI-powered search component\n- `AutosuggestBox` - Intelligent autocomplete\n- `GrammarButton` - AI grammar correction\n- `TokenDisplay` - Token usage visualization\n- `AgentHandlerPanel` - Admin control panel\n\n### Server Functions\n\n- `runChat` - Execute chat conversations\n- `runAISearch` - Perform AI-powered searches\n- `uploadFilesToVectorStore` - Manage vector stores\n- `attachAssistant` - Configure assistants\n\n### LangChain-Inspired Features\n\n- **Observability** - Execution tracing and monitoring\n- **Evaluation** - Test datasets and automated scoring\n- **Memory** - Conversation history and context management\n- **Prompts** - Versioned prompt library and optimization\n\n### CLI Commands\n\n- `agent-handler index` - Index files for RAG\n- `agent-handler run` - Execute assistant\n- `agent-handler agents` - List assistants\n- `agent-handler doctor` - Health check\n\n## 📊 Project Status\n\n- ✅ **Production Ready** - All P0 features complete\n- ✅ **Well Tested** - 556 tests, ~80% coverage\n- ✅ **Type Safe** - Full TypeScript support\n- ✅ **Documented** - Comprehensive guides and API docs\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](./LICENSE) file for details.\n\n## 🔗 Links\n\n- [npm Package](https://www.npmjs.com/package/@ameshkin/agent-handler)\n- [GitHub Repository](https://github.com/ameshkin/agent-handler)\n- [Documentation](./.docs/README.md)\n- [Issue Tracker](https://github.com/ameshkin/agent-handler/issues)\n\n---\n\n<div align=\"center\">\n\nMade with ❤️ by [@ameshkin](https://github.com/ameshkin)\n\n</div>\n","readmeFilename":"readme.md"}