{"_id":"@orga-ai/react","_rev":"32-dd6dfaa03514a2674128fb4b1f1f4674","name":"@orga-ai/react","dist-tags":{"test":"1.0.3-test.3","latest":"1.1.2"},"versions":{"1.0.0":{"name":"@orga-ai/react","version":"1.0.0","keywords":["react","ai","audio","video","webrtc","orga-ai"],"author":{"name":"Orga AI"},"license":"Proprietary","_id":"@orga-ai/react@1.0.0","maintainers":[{"name":"dmmoim","email":"marc@orga-ai.com"},{"name":"crashcode","email":"gerard@orga-ai.com"},{"name":"austinxorga","email":"austin@orga-ai.com"}],"homepage":"https://docs.orga-ai.com/version-11/guide/react-sdk/introduction","dist":{"shasum":"945d60294276bad055f378cb9144d06f7966ce10","tarball":"https://registry.npmjs.org/@orga-ai/react/-/react-1.0.0.tgz","fileCount":41,"integrity":"sha512-jbIHjRcOeEFHVtIV0wYXkr4EtUMQdbUf4w5xOIPH1VInm8fz7JaLiYhEkDqMlaqzVJ2v5/77N7dAFpj+9Fh6Kg==","signatures":[{"sig":"MEUCIQCAoX4yhZ0zyV8iLNhHTTy5tV/PYpCD7gdBcPvOS2liqAIgCx97WSULp/gPoEakELGvmRUR6YGYnovH9PxmQPyhSeE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":191476},"main":"lib/index.js","_from":"file:orga-ai-react-1.0.0.tgz","types":"lib/index.d.ts","scripts":{"test":"jest","build":"tsc --project tsconfig.json","clean":"rm -rf dist lib build *.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit --pretty","test:coverage":"jest --coverage"},"_npmUser":{"name":"austinxorga","email":"austin@orga-ai.com"},"_resolved":"/private/var/folders/yq/sgh0q7k53fz0sst7tgybnc_c0000gn/T/fd786bf6c44c670f62077f2c2b6aa461/orga-ai-react-1.0.0.tgz","_integrity":"sha512-jbIHjRcOeEFHVtIV0wYXkr4EtUMQdbUf4w5xOIPH1VInm8fz7JaLiYhEkDqMlaqzVJ2v5/77N7dAFpj+9Fh6Kg==","_npmVersion":"11.4.2","description":"React SDK for Orga AI — real-time multimodal AI that hears, sees, and speaks.","directories":{},"_nodeVersion":"23.9.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","react":">=18.0.0","eslint":"^9.31.0","ts-jest":"^29.4.0","react-dom":">=18.0.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^20.19.9","@types/react":"^19.1.8","@testing-library/react":"^14.3.1","jest-environment-jsdom":"^29.7.0","@testing-library/jest-dom":"^6.7.0","@typescript-eslint/parser":"^8.37.0","@testing-library/user-event":"^14.6.1","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react_1.0.0_1757424969742_0.08595891691203272","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-test.3":{"name":"@orga-ai/react","version":"1.0.0-test.3","keywords":["react","ai","audio","video","webrtc","orga-ai"],"author":{"name":"Orga AI"},"license":"Proprietary","_id":"@orga-ai/react@1.0.0-test.3","maintainers":[{"name":"dmmoim","email":"marc@orga-ai.com"},{"name":"crashcode","email":"gerard@orga-ai.com"},{"name":"austinxorga","email":"austin@orga-ai.com"}],"homepage":"https://docs.orga-ai.com/version-11/guide/react-sdk/introduction","dist":{"shasum":"dbf114b582167d1abdc6ee956f4cd8ef46ab5508","tarball":"https://registry.npmjs.org/@orga-ai/react/-/react-1.0.0-test.3.tgz","fileCount":41,"integrity":"sha512-1ZKkAwlVnqWq3wHJdSvvKv5hUfCgdxu/sKLmx6TDY3y5LAYrNpu0Md7FvaGVOJAsxBxb+E8E4AXy7f8jkEMKJw==","signatures":[{"sig":"MEQCIHiBcgdi9a/sKJU4dFqWit4YlmwRy6w5rCNF5av5t8a1AiB9TBHToWnyRiFzGcZ4iJf9MnMEKUK+dGNmA2VbQfBq4A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":191487},"main":"lib/index.js","types":"lib/index.d.ts","gitHead":"664a62b2d42f1193687146ffdcdc2aafac77ec0c","scripts":{"test":"jest","build":"tsc --project tsconfig.json","clean":"rm -rf dist lib build *.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit --pretty","test:coverage":"jest --coverage"},"_npmUser":{"name":"austinxorga","email":"austin@orga-ai.com"},"_npmVersion":"10.5.0","description":"React SDK for Orga AI — real-time multimodal AI that hears, sees, and speaks.","directories":{},"_nodeVersion":"21.7.3","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","react":">=18.0.0","eslint":"^9.31.0","ts-jest":"^29.4.0","react-dom":">=18.0.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^20.19.9","@types/react":"^19.1.8","@testing-library/react":"^14.3.1","jest-environment-jsdom":"^29.7.0","@testing-library/jest-dom":"^6.7.0","@typescript-eslint/parser":"^8.37.0","@testing-library/user-event":"^14.6.1","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react_1.0.0-test.3_1757814879757_0.7484325707825354","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-test.7":{"name":"@orga-ai/react","version":"1.0.0-test.7","keywords":["react","ai","audio","video","webrtc","orga-ai"],"author":{"name":"Orga AI"},"license":"Proprietary","_id":"@orga-ai/react@1.0.0-test.7","maintainers":[{"name":"dmmoim","email":"marc@orga-ai.com"},{"name":"crashcode","email":"gerard@orga-ai.com"},{"name":"austinxorga","email":"austin@orga-ai.com"}],"homepage":"https://docs.orga-ai.com/version-11/guide/react-sdk/introduction","dist":{"shasum":"d9ee91db02baedd9fed72a10d9e9a827166d2e03","tarball":"https://registry.npmjs.org/@orga-ai/react/-/react-1.0.0-test.7.tgz","fileCount":41,"integrity":"sha512-kLZZq3ltuKjbkkU0ro5IqV6TNOjnWeQJ+KJwigDNuTRXCg0+/14y4SjAPSKTAEZkJF0J4HyBEuQ10xFw6czThw==","signatures":[{"sig":"MEYCIQDz74rvllgGrqyn41JY5z8zK9HWQaeUWeMbrJhTJvUxvgIhALfGVHmAcyP8fbGwu+PWYCgdvN8nHpoSwDpJ6QxbigJh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":192527},"main":"lib/index.js","_from":"file:orga-ai-react-1.0.0-test.7.tgz","types":"lib/index.d.ts","scripts":{"test":"jest","build":"tsc --project tsconfig.json","clean":"rm -rf dist lib build *.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit --pretty","test:coverage":"jest --coverage"},"_npmUser":{"name":"austinxorga","email":"austin@orga-ai.com"},"_resolved":"C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\c6c12d13fa8772822079045605bade27\\orga-ai-react-1.0.0-test.7.tgz","_integrity":"sha512-kLZZq3ltuKjbkkU0ro5IqV6TNOjnWeQJ+KJwigDNuTRXCg0+/14y4SjAPSKTAEZkJF0J4HyBEuQ10xFw6czThw==","_npmVersion":"10.5.2","description":"React SDK for Orga AI — real-time multimodal AI that hears, sees, and speaks.","directories":{},"_nodeVersion":"20.14.0","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","react":">=18.0.0","eslint":"^9.31.0","ts-jest":"^29.4.0","react-dom":">=18.0.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^20.19.9","@types/react":"^19.1.8","@testing-library/react":"^14.3.1","jest-environment-jsdom":"^29.7.0","@testing-library/jest-dom":"^6.7.0","@typescript-eslint/parser":"^8.37.0","@testing-library/user-event":"^14.6.1","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react_1.0.0-test.7_1757821225904_0.31371520539642317","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-test.9":{"name":"@orga-ai/react","version":"1.0.0-test.9","keywords":["react","ai","audio","video","webrtc","orga-ai"],"author":{"name":"Orga AI"},"license":"Proprietary","_id":"@orga-ai/react@1.0.0-test.9","maintainers":[{"name":"dmmoim","email":"marc@orga-ai.com"},{"name":"crashcode","email":"gerard@orga-ai.com"},{"name":"austinxorga","email":"austin@orga-ai.com"}],"homepage":"https://docs.orga-ai.com/version-11/guide/react-sdk/introduction","dist":{"shasum":"e0788a1325e75ac1f9989b0cf739fd2aa8f92913","tarball":"https://registry.npmjs.org/@orga-ai/react/-/react-1.0.0-test.9.tgz","fileCount":41,"integrity":"sha512-1Co5aLO9rMHXCRXA2gj7GF3lZAuJFcDSrGk1irqWGmH8lgifpzAeeXULYN0+wGg0FX3aj/thPrPYeMILr1XpKA==","signatures":[{"sig":"MEQCIHK4jPwJZBO968QYFz3bJJ0IDETyDQUIiwgtmB+QvHicAiAQCFunI6p6Aj5t0fAN7K0LcLrrxNQHcPbyeEej4oLy9Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":192527},"main":"lib/index.js","_from":"file:orga-ai-react-1.0.0-test.9.tgz","types":"lib/index.d.ts","scripts":{"test":"jest","build":"tsc --project tsconfig.json","clean":"rm -rf dist lib build *.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit --pretty","test:coverage":"jest --coverage"},"_npmUser":{"name":"austinxorga","email":"austin@orga-ai.com"},"_resolved":"C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\868c1eff2390e3c60cfd9daddb8dc07e\\orga-ai-react-1.0.0-test.9.tgz","_integrity":"sha512-1Co5aLO9rMHXCRXA2gj7GF3lZAuJFcDSrGk1irqWGmH8lgifpzAeeXULYN0+wGg0FX3aj/thPrPYeMILr1XpKA==","_npmVersion":"10.5.2","description":"React SDK for Orga AI — real-time multimodal AI that hears, sees, and speaks.","directories":{},"_nodeVersion":"20.14.0","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","react":">=18.0.0","eslint":"^9.31.0","ts-jest":"^29.4.0","react-dom":">=18.0.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^20.19.9","@types/react":"^19.1.8","@testing-library/react":"^14.3.1","jest-environment-jsdom":"^29.7.0","@testing-library/jest-dom":"^6.7.0","@typescript-eslint/parser":"^8.37.0","@testing-library/user-event":"^14.6.1","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react_1.0.0-test.9_1757862843425_0.9209228029645986","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@orga-ai/react","version":"1.0.1","keywords":["react","ai","audio","video","webrtc","orga-ai"],"author":{"name":"Orga AI"},"license":"Proprietary","_id":"@orga-ai/react@1.0.1","maintainers":[{"name":"dmmoim","email":"marc@orga-ai.com"},{"name":"crashcode","email":"gerard@orga-ai.com"},{"name":"austinxorga","email":"austin@orga-ai.com"}],"homepage":"https://docs.orga-ai.com/version-11/guide/react-sdk/introduction","dist":{"shasum":"70e07f6225ef5dc9daf8c12fcf7e134df650466b","tarball":"https://registry.npmjs.org/@orga-ai/react/-/react-1.0.1.tgz","fileCount":41,"integrity":"sha512-jl3jU+iUL2ox0rLysnolowvmpjez/5eaDZd/jlWjl3XKpPRr90ZAzHsDrXbJRAML3naRYUm115d/Ev0QGXliKQ==","signatures":[{"sig":"MEQCIE9027wcWPuZlq/4oJKpYvjs5BFyUIEcq+Mqb4GObyVsAiAJbBr0QxbptStMvNFpvKgaOBUms/alJ7waXfxucn5VTw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":191703},"main":"lib/index.js","_from":"file:orga-ai-react-1.0.1.tgz","types":"lib/index.d.ts","scripts":{"test":"jest","build":"tsc --project tsconfig.json","clean":"rm -rf dist lib build *.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit --pretty","test:coverage":"jest --coverage"},"_npmUser":{"name":"austinxorga","email":"austin@orga-ai.com"},"_resolved":"/private/var/folders/yq/sgh0q7k53fz0sst7tgybnc_c0000gn/T/33228d0ace77566915254b65201e2ab7/orga-ai-react-1.0.1.tgz","_integrity":"sha512-jl3jU+iUL2ox0rLysnolowvmpjez/5eaDZd/jlWjl3XKpPRr90ZAzHsDrXbJRAML3naRYUm115d/Ev0QGXliKQ==","_npmVersion":"11.4.2","description":"React SDK for Orga AI — real-time multimodal AI that hears, sees, and speaks.","directories":{},"_nodeVersion":"23.9.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","react":">=18.0.0","eslint":"^9.31.0","ts-jest":"^29.4.0","react-dom":">=18.0.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^20.19.9","@types/react":"^19.1.8","@testing-library/react":"^14.3.1","jest-environment-jsdom":"^29.7.0","@testing-library/jest-dom":"^6.7.0","@typescript-eslint/parser":"^8.37.0","@testing-library/user-event":"^14.6.1","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react_1.0.1_1759323947447_0.5448817297362394","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@orga-ai/react","version":"1.0.2","keywords":["react","ai","audio","video","webrtc","orga-ai"],"author":{"name":"Orga AI"},"license":"Proprietary","_id":"@orga-ai/react@1.0.2","maintainers":[{"name":"dmmoim","email":"marc@orga-ai.com"},{"name":"crashcode","email":"gerard@orga-ai.com"},{"name":"austinxorga","email":"austin@orga-ai.com"}],"homepage":"https://docs.orga-ai.com/version-11/guide/react-sdk/introduction","dist":{"shasum":"d67b7d72a5d945e9182f039a7cd7e23a2a825faa","tarball":"https://registry.npmjs.org/@orga-ai/react/-/react-1.0.2.tgz","fileCount":41,"integrity":"sha512-0aNq1OmUIj0w5E1SLJ4sfR0OVvsbpDZ3p6wP4BpyUIzHahnoc7rOGSUV7fdkIJ/9sOKvg76iVL1Y5kjVslfDkw==","signatures":[{"sig":"MEQCIG3hdkj4ezL3j3IsoXhDHuUe1q0EWB9q/J6ARpTDwWm+AiAAo6xua6HgJp6hp71ba9PtnawRi0oGC3wlsTuzt7huaQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":194622},"main":"lib/index.js","_from":"file:orga-ai-react-1.0.2.tgz","types":"lib/index.d.ts","scripts":{"test":"jest","build":"tsc --project tsconfig.json","clean":"rm -rf dist lib build *.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit --pretty","test:coverage":"jest --coverage"},"_npmUser":{"name":"austinxorga","email":"austin@orga-ai.com"},"_resolved":"/private/var/folders/yq/sgh0q7k53fz0sst7tgybnc_c0000gn/T/ed96b5de0acba4a145dd878f8c0ef622/orga-ai-react-1.0.2.tgz","_integrity":"sha512-0aNq1OmUIj0w5E1SLJ4sfR0OVvsbpDZ3p6wP4BpyUIzHahnoc7rOGSUV7fdkIJ/9sOKvg76iVL1Y5kjVslfDkw==","_npmVersion":"11.4.2","description":"React SDK for Orga AI — real-time multimodal AI that hears, sees, and speaks.","directories":{},"_nodeVersion":"23.9.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","react":">=18.0.0","eslint":"^9.31.0","ts-jest":"^29.4.0","react-dom":">=18.0.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^20.19.9","@types/react":"^19.1.8","@testing-library/react":"^14.3.1","jest-environment-jsdom":"^29.7.0","@testing-library/jest-dom":"^6.7.0","@typescript-eslint/parser":"^8.37.0","@testing-library/user-event":"^14.6.1","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react_1.0.2_1759412313382_0.7389372196567574","host":"s3://npm-registry-packages-npm-production"}},"1.0.2-test.1":{"name":"@orga-ai/react","version":"1.0.2-test.1","keywords":["react","ai","audio","video","webrtc","orga-ai"],"author":{"name":"Orga AI"},"license":"Proprietary","_id":"@orga-ai/react@1.0.2-test.1","maintainers":[{"name":"dmmoim","email":"marc@orga-ai.com"},{"name":"crashcode","email":"gerard@orga-ai.com"},{"name":"austinxorga","email":"austin@orga-ai.com"}],"homepage":"https://docs.orga-ai.com/version-11/guide/react-sdk/introduction","dist":{"shasum":"47ceb9a8ef3ae656d756f725fc446df32fd0bcb6","tarball":"https://registry.npmjs.org/@orga-ai/react/-/react-1.0.2-test.1.tgz","fileCount":41,"integrity":"sha512-XEKKApqEp0DkbXj91YgLqWWdE9nyd0Dij5mYteqoBwWyG2D5v62QdJMGj4xysYMALhp3beYdKULRXlTxOnS/JQ==","signatures":[{"sig":"MEUCIG4toccmvOmJ7H1ECWx57O6kY4FrLPN9FRjLA8Qx7/EUAiEAy5Zm9XjNOPV8/HRRG0jo1cu9GiU+lpPR1cCHB4WcqVs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":199175},"main":"lib/index.js","_from":"file:orga-ai-react-1.0.2-test.1.tgz","types":"lib/index.d.ts","scripts":{"test":"jest","build":"tsc --project tsconfig.json","clean":"rm -rf dist lib build *.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit --pretty","test:coverage":"jest --coverage"},"_npmUser":{"name":"austinxorga","email":"austin@orga-ai.com"},"_resolved":"/private/var/folders/yq/sgh0q7k53fz0sst7tgybnc_c0000gn/T/13f2818fc702a3a63d6d323be3a12091/orga-ai-react-1.0.2-test.1.tgz","_integrity":"sha512-XEKKApqEp0DkbXj91YgLqWWdE9nyd0Dij5mYteqoBwWyG2D5v62QdJMGj4xysYMALhp3beYdKULRXlTxOnS/JQ==","_npmVersion":"11.4.2","description":"React SDK for Orga AI — real-time multimodal AI that hears, sees, and speaks.","directories":{},"_nodeVersion":"23.9.0","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","react":">=18.0.0","eslint":"^9.31.0","ts-jest":"^29.4.0","react-dom":">=18.0.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^20.19.9","@types/react":"^19.1.8","@testing-library/react":"^14.3.1","jest-environment-jsdom":"^29.7.0","@testing-library/jest-dom":"^6.7.0","@typescript-eslint/parser":"^8.37.0","@testing-library/user-event":"^14.6.1","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react_1.0.2-test.1_1759498284662_0.09899453608178677","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@orga-ai/react","version":"1.0.3","keywords":["react","ai","audio","video","webrtc","orga-ai"],"author":{"name":"Orga AI"},"license":"Proprietary","_id":"@orga-ai/react@1.0.3","maintainers":[{"name":"dmmoim","email":"marc@orga-ai.com"},{"name":"crashcode","email":"gerard@orga-ai.com"},{"name":"austinxorga","email":"austin@orga-ai.com"}],"homepage":"https://docs.orga-ai.com/version-11/guide/react-sdk/introduction","dist":{"shasum":"e1567974659b0c29c87939e39ef33a146f7f6b3b","tarball":"https://registry.npmjs.org/@orga-ai/react/-/react-1.0.3.tgz","fileCount":41,"integrity":"sha512-ba9hDb1UMn+EAnazb9z3HBQ9ahPR5cn/Ewt2t2AqW+r8mnBvXSDzAjOxx+l0R6pFg3aU/8AL4zTcDY30L6MVrA==","signatures":[{"sig":"MEYCIQDqTHq6+sJ1c4QbE2KWLShqwfPdJCQW2/kENQFclNfH/gIhAJ21evzyyvmHuK2grwmVb9QtvQmrqPjG+FVUrl3c3P1f","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":194786},"main":"lib/index.js","_from":"file:orga-ai-react-1.0.3.tgz","types":"lib/index.d.ts","scripts":{"test":"jest","build":"tsc --project tsconfig.json","clean":"rm -rf dist lib build *.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit --pretty","test:coverage":"jest --coverage"},"_npmUser":{"name":"austinxorga","email":"austin@orga-ai.com"},"_resolved":"/private/var/folders/yq/sgh0q7k53fz0sst7tgybnc_c0000gn/T/5a12a3649327d7b211381fb5f0ba456e/orga-ai-react-1.0.3.tgz","_integrity":"sha512-ba9hDb1UMn+EAnazb9z3HBQ9ahPR5cn/Ewt2t2AqW+r8mnBvXSDzAjOxx+l0R6pFg3aU/8AL4zTcDY30L6MVrA==","_npmVersion":"11.4.2","description":"React SDK for Orga AI — real-time multimodal AI that hears, sees, and speaks.","directories":{},"_nodeVersion":"23.9.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","react":">=18.0.0","eslint":"^9.31.0","ts-jest":"^29.4.0","react-dom":">=18.0.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^20.19.9","@types/react":"^19.1.8","@testing-library/react":"^14.3.1","jest-environment-jsdom":"^29.7.0","@testing-library/jest-dom":"^6.7.0","@typescript-eslint/parser":"^8.37.0","@testing-library/user-event":"^14.6.1","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react_1.0.3_1759742253164_0.42670540485064046","host":"s3://npm-registry-packages-npm-production"}},"1.0.3-test.1":{"name":"@orga-ai/react","version":"1.0.3-test.1","keywords":["react","ai","audio","video","webrtc","orga-ai"],"author":{"name":"Orga AI"},"license":"Proprietary","_id":"@orga-ai/react@1.0.3-test.1","maintainers":[{"name":"dmmoim","email":"marc@orga-ai.com"},{"name":"crashcode","email":"gerard@orga-ai.com"},{"name":"austinxorga","email":"austin@orga-ai.com"}],"homepage":"https://docs.orga-ai.com/version-11/guide/react-sdk/introduction","dist":{"shasum":"7c4fc14ab4ae22f0de69f59d283af7c5772a4864","tarball":"https://registry.npmjs.org/@orga-ai/react/-/react-1.0.3-test.1.tgz","fileCount":41,"integrity":"sha512-XCGR9/4iqC1Ao4WRCWtYQwDLYmqFhBi59WIzbIDYX/XEa7ucrXrN3vzBzTlBliSEbWe3sp/rZW6OGIVrnQU2Ng==","signatures":[{"sig":"MEUCIQDehhVpxyDUlCU99vcFUbo0ciesLKpM5mMRbK0JglpY2QIgb3lKtyNM5RoqiYM0Pd7/XY7fs5clQ1DAWXqFxKcEA8U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":194793},"main":"lib/index.js","_from":"file:orga-ai-react-1.0.3-test.1.tgz","types":"lib/index.d.ts","scripts":{"test":"jest","build":"tsc --project tsconfig.json","clean":"rm -rf dist lib build *.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit --pretty","test:coverage":"jest --coverage"},"_npmUser":{"name":"austinxorga","email":"austin@orga-ai.com"},"_resolved":"/private/var/folders/yq/sgh0q7k53fz0sst7tgybnc_c0000gn/T/763714247167b0802bd512e4a1810556/orga-ai-react-1.0.3-test.1.tgz","_integrity":"sha512-XCGR9/4iqC1Ao4WRCWtYQwDLYmqFhBi59WIzbIDYX/XEa7ucrXrN3vzBzTlBliSEbWe3sp/rZW6OGIVrnQU2Ng==","_npmVersion":"11.4.2","description":"React SDK for Orga AI — real-time multimodal AI that hears, sees, and speaks.","directories":{},"_nodeVersion":"23.9.0","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","react":">=18.0.0","eslint":"^9.31.0","ts-jest":"^29.4.0","react-dom":">=18.0.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^20.19.9","@types/react":"^19.1.8","@testing-library/react":"^14.3.1","jest-environment-jsdom":"^29.7.0","@testing-library/jest-dom":"^6.7.0","@typescript-eslint/parser":"^8.37.0","@testing-library/user-event":"^14.6.1","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react_1.0.3-test.1_1760536331737_0.48595842140527945","host":"s3://npm-registry-packages-npm-production"}},"1.0.3-test.2":{"name":"@orga-ai/react","version":"1.0.3-test.2","keywords":["react","ai","audio","video","webrtc","orga-ai"],"author":{"name":"Orga AI"},"license":"Proprietary","_id":"@orga-ai/react@1.0.3-test.2","maintainers":[{"name":"dmmoim","email":"marc@orga-ai.com"},{"name":"crashcode","email":"gerard@orga-ai.com"},{"name":"austinxorga","email":"austin@orga-ai.com"}],"homepage":"https://docs.orga-ai.com/version-11/guide/react-sdk/introduction","dist":{"shasum":"1eaee6495d1d061e281c68f1de3717f78e293abe","tarball":"https://registry.npmjs.org/@orga-ai/react/-/react-1.0.3-test.2.tgz","fileCount":41,"integrity":"sha512-ySpHC9MCvHaxHdIeJh7lRH/sifmcjFkeBvCuR9ytTHOnV3u7q86n06zQtNf+vaf69lx6ISMEyUjJ2MOcPdiK1g==","signatures":[{"sig":"MEUCIQCJtNECOXz/uFLoeKdAZ9o0jp3oOfiC/jWQtd1VX73KYQIgGL73sSGhnCbMCU9abTmHfcCNNhSz76l/MtE2iGCeowk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":194995},"main":"lib/index.js","_from":"file:orga-ai-react-1.0.3-test.2.tgz","types":"lib/index.d.ts","scripts":{"test":"jest","build":"tsc --project tsconfig.json","clean":"rm -rf dist lib build *.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit --pretty","test:coverage":"jest --coverage"},"_npmUser":{"name":"austinxorga","email":"austin@orga-ai.com"},"_resolved":"/private/var/folders/yq/sgh0q7k53fz0sst7tgybnc_c0000gn/T/128223e4eebaf6cff33eb1bd4797bfef/orga-ai-react-1.0.3-test.2.tgz","_integrity":"sha512-ySpHC9MCvHaxHdIeJh7lRH/sifmcjFkeBvCuR9ytTHOnV3u7q86n06zQtNf+vaf69lx6ISMEyUjJ2MOcPdiK1g==","_npmVersion":"11.4.2","description":"React SDK for Orga AI — real-time multimodal AI that hears, sees, and speaks.","directories":{},"_nodeVersion":"23.9.0","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","react":">=18.0.0","eslint":"^9.31.0","ts-jest":"^29.4.0","react-dom":">=18.0.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^20.19.9","@types/react":"^19.1.8","@testing-library/react":"^14.3.1","jest-environment-jsdom":"^29.7.0","@testing-library/jest-dom":"^6.7.0","@typescript-eslint/parser":"^8.37.0","@testing-library/user-event":"^14.6.1","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react_1.0.3-test.2_1760618388503_0.9734281988725355","host":"s3://npm-registry-packages-npm-production"}},"1.0.3-test.3":{"name":"@orga-ai/react","version":"1.0.3-test.3","keywords":["react","ai","audio","video","webrtc","orga-ai"],"author":{"name":"Orga AI"},"license":"Proprietary","_id":"@orga-ai/react@1.0.3-test.3","maintainers":[{"name":"dmmoim","email":"marc@orga-ai.com"},{"name":"crashcode","email":"gerard@orga-ai.com"},{"name":"austinxorga","email":"austin@orga-ai.com"}],"homepage":"https://docs.orga-ai.com/version-11/guide/react-sdk/introduction","dist":{"shasum":"ed6163923d61480bd396c936047c8b4696007461","tarball":"https://registry.npmjs.org/@orga-ai/react/-/react-1.0.3-test.3.tgz","fileCount":41,"integrity":"sha512-qdm3Vd/VCqEaoctkQhn5VKAHCSeoy1tncLGRK8yLtp3weSAmUJK4RtwMyQ2Rn011V8LsvqZCIFqTmhW0s1YN8Q==","signatures":[{"sig":"MEUCIC3RtRSzqn2k37RZsbUOlVXc+iUL7Q865XFNVD4JIOTvAiEAk4n2kLXD4VJmlbTnBGqEsC/LQzyCr3sQWW22eoO0iDc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":195063},"main":"lib/index.js","_from":"file:orga-ai-react-1.0.3-test.3.tgz","types":"lib/index.d.ts","scripts":{"test":"jest","build":"tsc --project tsconfig.json","clean":"rm -rf dist lib build *.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit --pretty","test:coverage":"jest --coverage"},"_npmUser":{"name":"austinxorga","email":"austin@orga-ai.com"},"_resolved":"/private/var/folders/yq/sgh0q7k53fz0sst7tgybnc_c0000gn/T/794f4aa0c21ecc3f39417c2db3803fc5/orga-ai-react-1.0.3-test.3.tgz","_integrity":"sha512-qdm3Vd/VCqEaoctkQhn5VKAHCSeoy1tncLGRK8yLtp3weSAmUJK4RtwMyQ2Rn011V8LsvqZCIFqTmhW0s1YN8Q==","_npmVersion":"11.4.2","description":"React SDK for Orga AI — real-time multimodal AI that hears, sees, and speaks.","directories":{},"_nodeVersion":"23.9.0","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","react":">=18.0.0","eslint":"^9.31.0","ts-jest":"^29.4.0","react-dom":">=18.0.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^20.19.9","@types/react":"^19.1.8","@testing-library/react":"^14.3.1","jest-environment-jsdom":"^29.7.0","@testing-library/jest-dom":"^6.7.0","@typescript-eslint/parser":"^8.37.0","@testing-library/user-event":"^14.6.1","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react_1.0.3-test.3_1760618651320_0.8634770334097126","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@orga-ai/react","version":"1.0.4","keywords":["react","ai","audio","video","webrtc","orga-ai"],"author":{"name":"Orga AI"},"license":"Proprietary","_id":"@orga-ai/react@1.0.4","maintainers":[{"name":"dmmoim","email":"marc@orga-ai.com"},{"name":"crashcode","email":"gerard@orga-ai.com"},{"name":"austinxorga","email":"austin@orga-ai.com"}],"homepage":"https://docs.orga-ai.com/version-11/guide/react-sdk/introduction","dist":{"shasum":"70b54f7d9df9655bf0c403238509f272008a8b20","tarball":"https://registry.npmjs.org/@orga-ai/react/-/react-1.0.4.tgz","fileCount":27,"integrity":"sha512-426VOS+Jw9JtDaSX+zf/4OGe1rf6ZOQ/K+6GDiA6aQ4FB68SfgmusSBTqk6TBUHKSmIkAf68uIFmWHzUTn8zKA==","signatures":[{"sig":"MEYCIQD2KVPGpCf2Ru9pA5hxcQJyph7rfUId6gUS0w2qH/dWDAIhALm9HvkCdGiGdq+u/r2WEQhLLYBN2UND+nwXuS2ToE98","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145305},"main":"lib/index.js","_from":"file:orga-ai-react-1.0.4.tgz","types":"lib/index.d.ts","scripts":{"test":"jest","build":"tsc --project tsconfig.json","clean":"rm -rf dist lib build *.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit --pretty","test:coverage":"jest --coverage"},"_npmUser":{"name":"austinxorga","email":"austin@orga-ai.com"},"_resolved":"/private/var/folders/yq/sgh0q7k53fz0sst7tgybnc_c0000gn/T/04f5771de2ca5cb724daa0871153eb46/orga-ai-react-1.0.4.tgz","_integrity":"sha512-426VOS+Jw9JtDaSX+zf/4OGe1rf6ZOQ/K+6GDiA6aQ4FB68SfgmusSBTqk6TBUHKSmIkAf68uIFmWHzUTn8zKA==","deprecated":"Please update to 1.0.5 for latest core dependency","_npmVersion":"11.4.2","description":"React SDK for Orga AI — real-time multimodal AI that hears, sees, and speaks.","directories":{},"_nodeVersion":"23.9.0","dependencies":{"@orga-ai/core":"1.0.0-test.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","react":"^18.0.0","eslint":"^9.31.0","ts-jest":"^29.4.0","react-dom":"^18.0.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^20.19.9","@types/react":"^19.1.8","@testing-library/react":"^14.3.1","jest-environment-jsdom":"^29.7.0","@testing-library/jest-dom":"^6.7.0","@typescript-eslint/parser":"^8.37.0","@testing-library/user-event":"^14.6.1","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react_1.0.4_1761041277106_0.7951046988716537","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@orga-ai/react","version":"1.0.5","keywords":["react","ai","audio","video","webrtc","orga-ai"],"author":{"name":"Orga AI"},"license":"Proprietary","_id":"@orga-ai/react@1.0.5","maintainers":[{"name":"dmmoim","email":"marc@orga-ai.com"},{"name":"crashcode","email":"gerard@orga-ai.com"},{"name":"austinxorga","email":"austin@orga-ai.com"}],"homepage":"https://docs.orga-ai.com/version-11/guide/react-sdk/introduction","dist":{"shasum":"e36d50bbffb777fbb8a57a0dc90be11e4c75522f","tarball":"https://registry.npmjs.org/@orga-ai/react/-/react-1.0.5.tgz","fileCount":27,"integrity":"sha512-I2XOFIetMvNxKciqtu815XWc/vSqKVxZkNsiuAYYsBONU622TCfAenhWF/mR5aV9Uu0/Us2+R3xMyUBLK3gOqw==","signatures":[{"sig":"MEQCIEn7+LMw59+RbKzuM6bJiOorJLh3O7j41eCH/3uYLZcnAiBeockasnWA0AOisM+U5OoZ+GsG2sGL/I/yAIYnoWGgow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145299},"main":"lib/index.js","_from":"file:orga-ai-react-1.0.5.tgz","types":"lib/index.d.ts","scripts":{"test":"jest","build":"tsc --project tsconfig.json","clean":"rm -rf dist lib build *.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit --pretty","test:coverage":"jest --coverage"},"_npmUser":{"name":"austinxorga","email":"austin@orga-ai.com"},"_resolved":"/private/var/folders/yq/sgh0q7k53fz0sst7tgybnc_c0000gn/T/c4f640dba4132bbdfbb2ed5980e29cab/orga-ai-react-1.0.5.tgz","_integrity":"sha512-I2XOFIetMvNxKciqtu815XWc/vSqKVxZkNsiuAYYsBONU622TCfAenhWF/mR5aV9Uu0/Us2+R3xMyUBLK3gOqw==","_npmVersion":"11.4.2","description":"React SDK for Orga AI — real-time multimodal AI that hears, sees, and speaks.","directories":{},"_nodeVersion":"23.9.0","dependencies":{"@orga-ai/core":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","react":"^18.0.0","eslint":"^9.31.0","ts-jest":"^29.4.0","react-dom":"^18.0.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^20.19.9","@types/react":"^19.1.8","@testing-library/react":"^14.3.1","jest-environment-jsdom":"^29.7.0","@testing-library/jest-dom":"^6.7.0","@typescript-eslint/parser":"^8.37.0","@testing-library/user-event":"^14.6.1","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react_1.0.5_1761051663400_0.3587844858748621","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@orga-ai/react","version":"1.0.6","keywords":["react","ai","audio","video","webrtc","orga-ai"],"author":{"name":"Orga AI"},"license":"Apache-2.0","_id":"@orga-ai/react@1.0.6","maintainers":[{"name":"dmmoim","email":"marc@orga-ai.com"},{"name":"crashcode","email":"gerard@orga-ai.com"},{"name":"austinxorga","email":"austin@orga-ai.com"}],"homepage":"https://docs.orga-ai.com/docs/client-sdks/react/introduction","dist":{"shasum":"4fed95230afada4de193b0a976a56f56a0b3241e","tarball":"https://registry.npmjs.org/@orga-ai/react/-/react-1.0.6.tgz","fileCount":27,"integrity":"sha512-n6k+JxjJB2tmJmFRUcRaDOp8ezJO8z8FSt9j1xWx7Z31S7lyKQAH8IgUz838vUJf5LfrJpXSbnSP5ppIjbByWQ==","signatures":[{"sig":"MEUCIHG1ILHX8JbdLYzKVen+p5Z8Dx0YsyI/04Q1ME1svzXxAiEAz6dFLl+er8fcFKrE4052hUzKHn2TwrlAFOgzJ7ggu3A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":154332},"main":"dist/index.js","_from":"file:orga-ai-react-1.0.6.tgz","types":"dist/index.d.ts","scripts":{"test":"jest","build":"tsc --project tsconfig.json","clean":"rm -rf dist lib build *.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit --pretty","test:coverage":"jest --coverage"},"_npmUser":{"name":"austinxorga","email":"austin@orga-ai.com"},"_resolved":"/private/var/folders/yq/sgh0q7k53fz0sst7tgybnc_c0000gn/T/fe737899cec42a3b692f19db8338be1f/orga-ai-react-1.0.6.tgz","_integrity":"sha512-n6k+JxjJB2tmJmFRUcRaDOp8ezJO8z8FSt9j1xWx7Z31S7lyKQAH8IgUz838vUJf5LfrJpXSbnSP5ppIjbByWQ==","_npmVersion":"10.9.4","description":"React SDK for Orga AI — real-time multimodal AI that hears, sees, and speaks.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"@orga-ai/core":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","react":"^18.0.0","eslint":"^9.31.0","ts-jest":"^29.4.0","react-dom":"^18.0.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^20.19.9","@types/react":"^19.1.8","@testing-library/react":"^14.3.1","jest-environment-jsdom":"^29.7.0","@testing-library/jest-dom":"^6.7.0","@typescript-eslint/parser":"^8.37.0","@testing-library/user-event":"^14.6.1","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react_1.0.6_1764774098889_0.6118760896095357","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@orga-ai/react","version":"1.0.7","keywords":["react","ai","audio","video","webrtc","orga-ai"],"author":{"name":"Orga AI"},"license":"Apache-2.0","_id":"@orga-ai/react@1.0.7","maintainers":[{"name":"dmmoim","email":"marc@orga-ai.com"},{"name":"crashcode","email":"gerard@orga-ai.com"},{"name":"austinxorga","email":"austin@orga-ai.com"}],"homepage":"https://docs.orga-ai.com/docs/client-sdks/react/introduction","dist":{"shasum":"22837feaa776b7c2b2a43aec0e599d6abb9ab92a","tarball":"https://registry.npmjs.org/@orga-ai/react/-/react-1.0.7.tgz","fileCount":27,"integrity":"sha512-eVPaTTUJA1auKC6ldIa0jhiM/an+AInBO0srufCwdDalr4eFbP6i8CjtX2USwA0RXEIGMR7igvXbnm9DMuZKBw==","signatures":[{"sig":"MEUCIQDIZwFrRzf/fSITXDoFVktnuJsZUCF+IsoXrFUz5m6MdwIgH14EtjzI1GcGvw/Hm4LNnB+YTwVr3q/vAb804R+3eCA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":166031},"main":"dist/index.js","_from":"file:orga-ai-react-1.0.7.tgz","types":"dist/index.d.ts","scripts":{"test":"jest","build":"tsc --project tsconfig.json","clean":"rm -rf dist lib build *.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit --pretty","test:coverage":"jest --coverage"},"_npmUser":{"name":"austinxorga","email":"austin@orga-ai.com"},"_resolved":"/tmp/e8ca81064b37706f1c09923a81d44a16/orga-ai-react-1.0.7.tgz","_integrity":"sha512-eVPaTTUJA1auKC6ldIa0jhiM/an+AInBO0srufCwdDalr4eFbP6i8CjtX2USwA0RXEIGMR7igvXbnm9DMuZKBw==","_npmVersion":"10.8.2","description":"React SDK for Orga AI — real-time multimodal AI that hears, sees, and speaks.","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@orga-ai/core":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","react":"^18.0.0","eslint":"^9.31.0","ts-jest":"^29.4.0","react-dom":"^18.0.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^20.19.9","@types/react":"^19.1.8","@testing-library/react":"^14.3.1","jest-environment-jsdom":"^29.7.0","@testing-library/jest-dom":"^6.7.0","@typescript-eslint/parser":"^8.37.0","@testing-library/user-event":"^14.6.1","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react_1.0.7_1764859776995_0.40617283015134054","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@orga-ai/react","version":"1.0.8","keywords":["react","ai","audio","video","webrtc","orga-ai"],"author":{"name":"Orga AI"},"license":"Apache-2.0","_id":"@orga-ai/react@1.0.8","maintainers":[{"name":"dmmoim","email":"marc@orga-ai.com"},{"name":"crashcode","email":"gerard@orga-ai.com"},{"name":"austinxorga","email":"austin@orga-ai.com"}],"homepage":"https://docs.orga-ai.com/docs/client-sdks/react/introduction","dist":{"shasum":"5c5b2e87bb9e914da6ea67fa95008b37fc190a8e","tarball":"https://registry.npmjs.org/@orga-ai/react/-/react-1.0.8.tgz","fileCount":27,"integrity":"sha512-VBYQw6zDyFOdE35W2GZc2ifDhH20Zw3XdJzW7KX0KMCyj5dCpGM5roIYVWnQT9jxxs8OSMDTE2v9iHhCtfOyXw==","signatures":[{"sig":"MEUCIQDs9zgp4+qaZezvVywpV3mkpH8obNbwlqrbEQ5jT4DMfAIgLJdiOdfbhepLMPy7SX4+Q/JQLCGuVmVvpXRzBtGr6SE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165716},"main":"dist/index.js","_from":"file:orga-ai-react-1.0.8.tgz","types":"dist/index.d.ts","scripts":{"test":"jest","build":"tsc --project tsconfig.json","clean":"rm -rf dist lib build *.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit --pretty","test:coverage":"jest --coverage"},"_npmUser":{"name":"austinxorga","email":"austin@orga-ai.com"},"_resolved":"/tmp/875e236c511493a18542b51807b5f70b/orga-ai-react-1.0.8.tgz","_integrity":"sha512-VBYQw6zDyFOdE35W2GZc2ifDhH20Zw3XdJzW7KX0KMCyj5dCpGM5roIYVWnQT9jxxs8OSMDTE2v9iHhCtfOyXw==","_npmVersion":"10.8.2","description":"React SDK for Orga AI — real-time multimodal AI that hears, sees, and speaks.","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@orga-ai/core":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","react":"^18.0.0","eslint":"^9.31.0","ts-jest":"^29.4.0","react-dom":"^18.0.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^20.19.9","@types/react":"^19.1.8","@testing-library/react":"^14.3.1","jest-environment-jsdom":"^29.7.0","@testing-library/jest-dom":"^6.7.0","@typescript-eslint/parser":"^8.37.0","@testing-library/user-event":"^14.6.1","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react_1.0.8_1768224690750_0.7438886244783487","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@orga-ai/react","version":"1.0.9","keywords":["react","ai","audio","video","webrtc","orga-ai"],"author":{"name":"Orga AI"},"license":"Apache-2.0","_id":"@orga-ai/react@1.0.9","maintainers":[{"name":"dmmoim","email":"marc@orga-ai.com"},{"name":"crashcode","email":"gerard@orga-ai.com"},{"name":"austinxorga","email":"austin@orga-ai.com"}],"homepage":"https://docs.orga-ai.com/docs/client-sdks/react/introduction","dist":{"shasum":"373b123cf2c80916daeeae374296adfa2d63905b","tarball":"https://registry.npmjs.org/@orga-ai/react/-/react-1.0.9.tgz","fileCount":27,"integrity":"sha512-DHYYxc0eDFnursmQ2sfCah6aIBLRvlrPrFiQhFpLMywj4fo9XPnmefNjwRTbgVKChlP9BiC5mdANOYgV1Z+aiA==","signatures":[{"sig":"MEQCIEA4PDb0eSzzgXB3WhXe5ufX6ezGl7DZ0HgN4YoanQfhAiBILf76e5mcD0+OsWFvHRa7plMdmfewRZNsQjbp4VStvg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165716},"main":"dist/index.js","_from":"file:orga-ai-react-1.0.9.tgz","types":"dist/index.d.ts","scripts":{"test":"jest","build":"tsc --project tsconfig.json","clean":"rm -rf dist lib build *.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit --pretty","test:coverage":"jest --coverage"},"_npmUser":{"name":"austinxorga","email":"austin@orga-ai.com"},"_resolved":"/tmp/9764b9ddebe851368110909d6cb092ba/orga-ai-react-1.0.9.tgz","_integrity":"sha512-DHYYxc0eDFnursmQ2sfCah6aIBLRvlrPrFiQhFpLMywj4fo9XPnmefNjwRTbgVKChlP9BiC5mdANOYgV1Z+aiA==","_npmVersion":"10.8.2","description":"React SDK for Orga AI — real-time multimodal AI that hears, sees, and speaks.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@orga-ai/core":"^1.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","react":"^18.0.0","eslint":"^9.31.0","ts-jest":"^29.4.0","react-dom":"^18.0.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^20.19.9","@types/react":"^19.1.8","@testing-library/react":"^14.3.1","jest-environment-jsdom":"^29.7.0","@testing-library/jest-dom":"^6.7.0","@typescript-eslint/parser":"^8.37.0","@testing-library/user-event":"^14.6.1","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react_1.0.9_1769430944395_0.022482588810295523","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@orga-ai/react","version":"1.1.0","keywords":["react","ai","audio","video","webrtc","orga-ai"],"author":{"name":"Orga AI"},"license":"Apache-2.0","_id":"@orga-ai/react@1.1.0","maintainers":[{"name":"dmmoim","email":"marc@orga-ai.com"},{"name":"crashcode","email":"gerard@orga-ai.com"},{"name":"austinxorga","email":"austin@orga-ai.com"}],"homepage":"https://docs.orga-ai.com/docs/client-sdks/react/introduction","dist":{"shasum":"f1b75c5462d26157ee6d843184920f5c77e56700","tarball":"https://registry.npmjs.org/@orga-ai/react/-/react-1.1.0.tgz","fileCount":27,"integrity":"sha512-TysvTRjnLFSbi3JSElnLC9tpIZ+9brtd163gWUMxcrSkWdQDNAeayadPcFEF1j180lw6JbukUGUOvb/f2Z+dfA==","signatures":[{"sig":"MEQCIE6fnH7PgX1Eg8kp1LpTlP390G8tGxF1vMDM8pLtoJJpAiBxPs9zgsqUUyP7aGgvp5Iq4CbvJPydEeXvLJ2pOgFujQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":167743},"main":"dist/index.js","_from":"file:orga-ai-react-1.1.0.tgz","types":"dist/index.d.ts","scripts":{"test":"jest","build":"tsc --project tsconfig.json","clean":"rm -rf dist lib build *.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit --pretty","test:coverage":"jest --coverage"},"_npmUser":{"name":"austinxorga","email":"austin@orga-ai.com"},"_resolved":"/tmp/3b7c6cce4874360df6314c2513354c76/orga-ai-react-1.1.0.tgz","_integrity":"sha512-TysvTRjnLFSbi3JSElnLC9tpIZ+9brtd163gWUMxcrSkWdQDNAeayadPcFEF1j180lw6JbukUGUOvb/f2Z+dfA==","_npmVersion":"10.8.2","description":"React SDK for Orga AI — real-time multimodal AI that hears, sees, and speaks.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@orga-ai/core":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","react":"^18.0.0","eslint":"^9.31.0","ts-jest":"^29.4.0","react-dom":"^18.0.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^20.19.9","@types/react":"^19.1.8","@testing-library/react":"^14.3.1","jest-environment-jsdom":"^29.7.0","@testing-library/jest-dom":"^6.7.0","@typescript-eslint/parser":"^8.37.0","@testing-library/user-event":"^14.6.1","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react_1.1.0_1770793423948_0.7494813248366612","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@orga-ai/react","version":"1.1.1","keywords":["react","ai","audio","video","webrtc","orga-ai"],"author":{"name":"Orga AI"},"license":"Apache-2.0","_id":"@orga-ai/react@1.1.1","maintainers":[{"name":"dmmoim","email":"marc@orga-ai.com"},{"name":"crashcode","email":"gerard@orga-ai.com"},{"name":"austinxorga","email":"austin@orga-ai.com"}],"homepage":"https://docs.orga-ai.com/docs/client-sdks/react/introduction","dist":{"shasum":"93ff157648630eeb6adf8a90d029ec9612054f61","tarball":"https://registry.npmjs.org/@orga-ai/react/-/react-1.1.1.tgz","fileCount":27,"integrity":"sha512-53bVjSi9yH1v10O+51rlvK/KdVb/rtrF/1bhbB8XDYBhgi9z/AZii7d6V5beS8muvxsJDD+mNFUO7kCYy5OXiA==","signatures":[{"sig":"MEUCIHDZKNDivdCXtMPNFFeajeb72FmpY8vINhwD3gw+qveNAiEAzobPl3pkG4hNR18fic7k5LD/oSRB35mYq2c5kgPShZM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":167729},"main":"dist/index.js","_from":"file:orga-ai-react-1.1.1.tgz","types":"dist/index.d.ts","scripts":{"test":"jest","build":"tsc --project tsconfig.json","clean":"rm -rf dist lib build *.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit --pretty","test:coverage":"jest --coverage"},"_npmUser":{"name":"austinxorga","email":"austin@orga-ai.com"},"_resolved":"/tmp/cc71c83106b268c7e5de70784f0de772/orga-ai-react-1.1.1.tgz","_integrity":"sha512-53bVjSi9yH1v10O+51rlvK/KdVb/rtrF/1bhbB8XDYBhgi9z/AZii7d6V5beS8muvxsJDD+mNFUO7kCYy5OXiA==","_npmVersion":"10.8.2","description":"React SDK for Orga AI — real-time multimodal AI that hears, sees, and speaks.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@orga-ai/core":"^1.1.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","react":"^18.0.0","eslint":"^9.31.0","ts-jest":"^29.4.0","react-dom":"^18.0.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^20.19.9","@types/react":"^19.1.8","@testing-library/react":"^14.3.1","jest-environment-jsdom":"^29.7.0","@testing-library/jest-dom":"^6.7.0","@typescript-eslint/parser":"^8.37.0","@testing-library/user-event":"^14.6.1","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react_1.1.1_1770800203451_0.0022640702619456388","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@orga-ai/react","version":"1.1.2","main":"dist/index.js","types":"dist/index.d.ts","author":{"name":"Orga AI"},"license":"Apache-2.0","description":"React SDK for Orga AI — real-time multimodal AI that hears, sees, and speaks.","homepage":"https://docs.orga-ai.com/docs/client-sdks/react/introduction","keywords":["react","ai","audio","video","webrtc","orga-ai"],"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"dependencies":{"@orga-ai/core":"^1.1.1"},"devDependencies":{"@testing-library/jest-dom":"^6.7.0","@testing-library/react":"^14.3.1","@testing-library/user-event":"^14.6.1","@types/jest":"^30.0.0","@types/node":"^20.19.9","@types/react":"^19.1.8","@typescript-eslint/eslint-plugin":"^8.37.0","@typescript-eslint/parser":"^8.37.0","eslint":"^9.31.0","jest":"^29.7.0","jest-environment-jsdom":"^29.7.0","react":"^18.0.0","react-dom":"^18.0.0","ts-jest":"^29.4.0","typescript":"^5.8.3"},"scripts":{"build":"tsc --project tsconfig.json","clean":"rm -rf dist lib build *.tsbuildinfo","type-check":"tsc --noEmit --pretty","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_id":"@orga-ai/react@1.1.2","_integrity":"sha512-yUF9b+MMjuzvwXjv2WlLJ1NZzEv+w95guvUzMKM/GVNnGrcfEXKIC29OPaDSbOtIt+A1wnYPEBqVfFxAvs/CdA==","_resolved":"/tmp/b5c916df26857868844d8f45b34ffc8f/orga-ai-react-1.1.2.tgz","_from":"file:orga-ai-react-1.1.2.tgz","_nodeVersion":"20.20.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-yUF9b+MMjuzvwXjv2WlLJ1NZzEv+w95guvUzMKM/GVNnGrcfEXKIC29OPaDSbOtIt+A1wnYPEBqVfFxAvs/CdA==","shasum":"32e81b303951b3b53c044cdc1ff87b123236a7ab","tarball":"https://registry.npmjs.org/@orga-ai/react/-/react-1.1.2.tgz","fileCount":27,"unpackedSize":168707,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEQq2yBGmSeA16WMlDlRhieIvy/vtzAJuAmfKuFoqB3lAiEAq/cXXhfJWA4pxhboy5pOFjEQxoQERwMCi8vLxFyTZAE="}]},"_npmUser":{"name":"austinxorga","email":"austin@orga-ai.com"},"directories":{},"maintainers":[{"name":"dmmoim","email":"marc@orga-ai.com"},{"name":"crashcode","email":"gerard@orga-ai.com"},{"name":"austinxorga","email":"austin@orga-ai.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react_1.1.2_1773403057735_0.06311242259953476"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-09T09:11:02.264Z","modified":"2026-03-13T11:57:38.061Z","1.0.0-test.1":"2025-09-09T09:11:02.465Z","1.0.0-test.2":"2025-09-09T09:55:57.972Z","1.0.0":"2025-09-09T13:36:09.930Z","1.0.0-test.3":"2025-09-14T01:54:39.949Z","1.0.0-test.4":"2025-09-14T02:12:38.903Z","1.0.0-test.5":"2025-09-14T02:27:41.121Z","1.0.0-test.6":"2025-09-14T03:19:16.818Z","1.0.0-test.7":"2025-09-14T03:40:26.127Z","1.0.0-test.9":"2025-09-14T15:14:03.609Z","1.0.1":"2025-10-01T13:05:47.635Z","1.0.2":"2025-10-02T13:38:33.667Z","1.0.2-test.1":"2025-10-03T13:31:24.880Z","1.0.3":"2025-10-06T09:17:33.353Z","1.0.3-test.1":"2025-10-15T13:52:11.897Z","1.0.3-test.2":"2025-10-16T12:39:48.691Z","1.0.3-test.3":"2025-10-16T12:44:11.573Z","1.0.4":"2025-10-21T10:07:57.268Z","1.0.5":"2025-10-21T13:01:03.567Z","1.0.6":"2025-12-03T15:01:39.071Z","1.0.7":"2025-12-04T14:49:37.148Z","1.0.8":"2026-01-12T13:31:30.896Z","1.0.9":"2026-01-26T12:35:44.535Z","1.1.0":"2026-02-11T07:03:44.097Z","1.1.1":"2026-02-11T08:56:43.600Z","1.1.2":"2026-03-13T11:57:37.892Z"},"author":{"name":"Orga AI"},"license":"Apache-2.0","homepage":"https://docs.orga-ai.com/docs/client-sdks/react/introduction","keywords":["react","ai","audio","video","webrtc","orga-ai"],"description":"React SDK for Orga AI — real-time multimodal AI that hears, sees, and speaks.","maintainers":[{"name":"dmmoim","email":"marc@orga-ai.com"},{"name":"crashcode","email":"gerard@orga-ai.com"},{"name":"austinxorga","email":"austin@orga-ai.com"}],"readme":"# Orga React SDK\n\nThe Orga React SDK enables real-time AI-powered audio and video features in your React web applications using a simple context and hook-based API.\n\n---\n\n## Project Overview\n\n- **Purpose:** Integrate Orga AI for real-time audio and video interaction in React apps.\n- **Platform:** React (supports React context, works with most React-based projects).\n\n---\n\n## Installation\n\nInstall the SDK from npm:\n\n```sh\nnpm install @orga-ai/react\n```\n\n> **Note:** This package automatically includes `@orga-ai/core` as a dependency, so you don't need to install it separately. The React SDK re-exports all core functionality, giving you access to both React-specific features and the underlying core API.\n\n### Optional: Direct Core Access\n\nIf you need to use `@orga-ai/core` directly or require a specific version, you can install it separately:\n\n```sh\nnpm install @orga-ai/core\n```\n\nThis is typically only needed for advanced use cases or when you need to use core functionality outside of React components.\n\n### Package Architecture\n\nThe Orga React SDK is built on top of `@orga-ai/core`, which provides the framework-agnostic foundation:\n\n- **`@orga-ai/core`**: Framework-agnostic core with configuration management, API communication, and platform abstractions\n- **`@orga-ai/react`**: React-specific hooks, components, and context providers\n\nThis layered architecture means you get:\n- ✅ **React features**: Hooks, components, and context management\n- ✅ **Core features**: Direct access to the underlying API when needed\n- ✅ **Type safety**: Full TypeScript support across both layers\n- ✅ **Automatic updates**: Core improvements benefit React users automatically\n\n---\n\n## Quick Start\n\nGet up and running in minutes with a complete working example:\n\n### 1. Set Up Environment Variables\n\nCreate a `.env.local` file in your project root:\n\n```env\nORGA_API_KEY=your_orga_api_key_here\n```\n\n> **Note:** Get your API key from the Orga AI dashboard. Never commit this file to version control.\n\n### 2. Create the API Route\n\nCreate the backend endpoint for fetching ephemeral tokens:\n\n```ts\n// app/api/orga-client-secrets/route.ts\nimport { NextResponse } from \"next/server\";\n\nconst ORGA_API_KEY = process.env.ORGA_API_KEY;\n\nconst fetchIceServers = async (ephemeralToken: string) => {\n  const URL = `https://api.orga-ai.com/v1/realtime/ice-config`;\n  try {\n    const iceServersResponse = await fetch(URL, {\n      method: \"GET\",\n      headers: {\n        Authorization: `Bearer ${ephemeralToken}`,\n      },\n    });\n    if (!iceServersResponse.ok) {\n      return NextResponse.json({ error: \"Failed to fetch ICE servers\" }, { status: 500 });\n    }\n    const data = await iceServersResponse.json();\n    return data.iceServers;\n  } catch (error) {\n    return NextResponse.json({ error: \"Internal server error\" }, { status: 500 });\n  }\n};\n\nexport const GET = async () => {\n  if (!ORGA_API_KEY) {\n    return NextResponse.json(\n      { error: 'Missing ORGA_API_KEY environment variable' }, \n      { status: 500 }\n    );\n  }\n\n  const apiUrl = `https://api.orga-ai.com/v1/realtime/client-secrets`;\n  const clientSecrets = await fetch(apiUrl, {\n    method: \"POST\",\n    headers: {\n      Authorization: `Bearer ${ORGA_API_KEY}`,\n    },\n  });\n    \n  if (!clientSecrets.ok) {\n    return NextResponse.json(\n      { error: 'Failed to fetch client secrets' }, \n      { status: clientSecrets.status }\n    );\n  }\n\n  const data = await clientSecrets.json();\n  const iceServers = await fetchIceServers(data.ephemeral_token);\n  const returnData = {\n    iceServers,\n    ephemeralToken: data.ephemeral_token\n  }\n  return NextResponse.json(returnData);\n}\n```\n\n### 3. Initialize the SDK\n\n```tsx\n//app/providers/OrgaClientProvider.tsx (Client Component)\n'use client'\nimport { OrgaAI, OrgaAIProvider } from '@orga-ai/react';\n\nOrgaAI.init({\n  logLevel: 'debug',\n  // OR use sessionConfigEndpoint for external backend endpoint:\n  // sessionConfigEndpoint: 'https://your-backend.com/api/orga-client-secrets',\n  fetchSessionConfig: async () => {\n    const response = await fetch('/api/orga-client-secrets');\n    const { ephemeralToken, iceServers } = await response.json();\n    return { ephemeralToken, iceServers };\n  },\n  model: 'orga-1-beta',\n  voice: 'alloy',\n});\n\nexport function OrgaClientProvider({ children }: { children: React.ReactNode }) {\n  return <OrgaAIProvider>{children}</OrgaAIProvider>;\n}\n```\n\n### 4. Wrap Your App with the Provider\n\n```tsx\n// app/layout.tsx\nimport { OrgaClientProvider } from './providers/OrgaProvider';\n\nexport default function RootLayout({\n  children,\n}: Readonly<{\n  children: React.ReactNode;\n}>) {\n  return (\n    <html lang=\"en\">\n      <body>\n          <OrgaClientProvider>\n            {children}\n          </OrgaClientProvider>\n      </body>\n    </html>\n  );\n}\n```\n\n### 5. Use the Hook in Your Components\n\n```tsx\n// app/page.tsx (Client Component)\n'use client'\nimport { useOrgaAI, OrgaVideo, OrgaAudio } from '@orga-ai/react';\n\nexport default function Home() {\n  const {\n    startSession,\n    endSession,\n    userVideoStream,\n    userAudioStream,\n    aiAudioStream,\n    connectionState,\n    isCameraOn,\n    toggleCamera,\n    toggleMic,\n    isMicOn,\n  } = useOrgaAI();\n\n  const handleStart = async () => {\n    await startSession({\n      onSessionConnected: () => {\n        console.log(\"Connected!\");\n      },\n    });\n  };\n\n  return (\n    <div className=\"min-h-screen bg-gray-50 p-8\">\n      <div className=\"max-w-2xl mx-auto\">\n        <h1 className=\"text-3xl font-bold text-center mb-8\">\n          Orga AI SDK Quick Start\n        </h1>\n\n        <div className=\"bg-white rounded-lg shadow-md p-6 mb-6\">\n          <h2 className=\"text-xl font-semibold mb-4\">Camera Preview</h2>\n          <div className=\"relative bg-gray-900 rounded-lg overflow-hidden\">\n            <OrgaVideo\n              stream={userVideoStream}\n              className=\"w-full h-64 object-cover\"\n            />\n            {!userVideoStream && (\n              <div className=\"absolute inset-0 flex items-center justify-center text-gray-400\">\n                <p>Camera preview will appear here</p>\n              </div>\n            )}\n          </div>\n        </div>\n\n        <div className=\"bg-white rounded-lg shadow-md p-6 mb-6\">\n          <h2 className=\"text-xl font-semibold mb-4\">Controls</h2>\n          <div className=\"mb-4 p-3 bg-gray-100 rounded-lg\">\n            <span className=\"font-medium\">Status: {connectionState}</span>\n          </div>\n\n          <div className=\"space-y-3\">\n            <button\n              onClick={handleStart}\n              disabled={\n                connectionState === \"connected\" ||\n                connectionState === \"connecting\"\n              }\n              className=\"w-full bg-blue-600 hover:bg-blue-700 disabled:bg-gray-400 text-white py-2 px-4 rounded-lg\"\n            >\n              {connectionState === \"connecting\"\n                ? \"Connecting...\"\n                : \"Start Session\"}\n            </button>\n\n            <button\n              onClick={endSession}\n              disabled={connectionState !== \"connected\"}\n              className=\"w-full bg-red-600 hover:bg-red-700 text-white py-2 px-4 rounded-lg\"\n            >\n              End Session\n            </button>\n\n            <div className=\"grid grid-cols-2 gap-3\">\n              <button\n                onClick={toggleCamera}\n                disabled={connectionState !== \"connected\"}\n                className={`py-2 px-4 rounded-lg ${\n                  isCameraOn\n                    ? \"bg-green-600 text-white\"\n                    : \"bg-gray-200 text-gray-700\"\n                }`}\n              >\n                {isCameraOn ? \"Camera On\" : \"Camera Off\"}\n              </button>\n\n              <button\n                onClick={toggleMic}\n                disabled={connectionState !== \"connected\"}\n                className={`py-2 px-4 rounded-lg ${\n                  isMicOn\n                    ? \"bg-green-600 text-white\"\n                    : \"bg-gray-200 text-gray-700\"\n                }`}\n              >\n                {isMicOn ? \"Mic On\" : \"Mic Off\"}\n              </button>\n            </div>\n          </div>\n        </div>\n        <OrgaAudio stream={aiAudioStream} />\n      </div>\n    </div>\n  );\n}\n```\n\n> **Note:** For Next.js or SSR projects, ensure the provider and hooks are only used in client components.\n\n---\n\n## Why the Proxy Endpoint?\n\nThe Orga AI SDK requires a **proxy endpoint** on your backend server. This is a **security requirement**, not an optional pattern.\n\n### **Security Architecture**\n\n```mermaid\ngraph LR\n    A[Client Browser] --> B[Your Backend]\n    B --> C[Orga AI API]\n    C --> B\n    B --> A\n```\n\n**Why this pattern is required:**\n\n1. **API Keys Must Stay Server-Side**\n   - Your Orga AI API key contains sensitive credentials\n   - If exposed to the client, anyone could use your account\n   - The proxy keeps your API key secure on your server\n\n2. **Full Control**\n   - Rate limiting per user\n   - Custom authentication\n   - Audit logging\n   - Business logic integration\n\n### **What the Proxy Does**\n\nYour backend endpoint (`/api/orga-client-secrets`) acts as a secure bridge:\n\n1. **Receives request** from your client\n2. **Uses your API key** to call Orga AI (server-side)\n3. **Returns ephemeral token** to client (safe to expose)\n4. **Client uses ephemeral token** for WebRTC connection\n\nThis ensures your API key never leaves your server while providing secure access to Orga AI features.\n\n---\n\n## Configuration\n\nYou **must** initialize the SDK before use, providing either a `sessionConfigEndpoint` or a `fetchSessionConfig` function. This should securely fetch an ephemeral token and ICE servers from your backend using your API key.\n\n**Never expose your API key in client code.**\n\n```ts\nimport { OrgaAI } from '@orga-ai/react';\n\nOrgaAI.init({\n  sessionConfigEndpoint: 'https://your-backend.com/api/orga-client-secrets',\n  // OR use fetchSessionConfig for custom implementation:\n  // fetchSessionConfig: async () => {\n  //   const response = await fetch('/api/orga-client-secrets');\n  //   const { ephemeralToken, iceServers } = await response.json();\n  //   return { ephemeralToken, iceServers };\n  // },\n});\n```\n\n---\n\n## Secure Backend Example for Ephemeral Token & ICE Servers\n\n**Never expose your Orga AI API key in client code. Always use a secure backend to fetch ephemeral tokens and ICE servers.**\n\n---\n\n> **Summary:**\n> - Always keep your Orga AI API key on a secure backend.\n> - Never expose them in your app or client-side code.\n> - The client (web or mobile) should only call your backend, never Orga AI directly.\n\n---\n\n## OrgaAI.init Configuration Options\n\nThe `OrgaAI.init(config)` method accepts the following options:\n\n| Option                          | Type      | Description                                                                                 | Default      | Required? |\n|----------------------------------|-----------|---------------------------------------------------------------------------------------------|--------------|-----------|\n| `logLevel`                      | `\"debug\" \\| \"info\" \\| \"warn\" \\| \"error\" \\| \"disabled\"` | Logging verbosity.                                    | `\"disabled\"`     | No        |\n| `timeout`                       | `number`  | Timeout for requests, in milliseconds.                                                      | `30000`      | No        |\n| `sessionConfigEndpoint`         | `string`  | URL to your backend endpoint for fetching ephemeral tokens and ICE servers.                 | —            | Yes*      |\n| `fetchSessionConfig` | `() => Promise<{ ephemeralToken: string; iceServers: RTCIceServer[] }>` | Custom function to fetch ephemeral token and ICE servers. | —            | Yes*      |\n| `enableTranscriptions` | `boolean` | Whether to return transcription data in the session. | `false`           | No      |\n| `instructions`                  | `string`  | Custom instructions for the AI in this session.                                            | —            | No | \n| `model`                         | `OrgaAIModel` | Model to use (see SDK for allowed values).                                                 | —            | No        |\n| `voice`                         | `OrgaAIVoice` | Voice to use (see SDK for allowed values).                                                 | —            | No        |\n| `temperature`                   | `number`  | Sampling temperature (randomness). Must be between allowed min/max.                         | —            | No        |\n| `history`                       | `boolean` | Whether to include conversation history for context. Defaults to `true`.                    | `true`       | No        |\n\n> **Note:** Either `sessionConfigEndpoint` **or** `fetchSessionConfig` is required.\n\n### Example\n\n```ts\nOrgaAI.init({\n  logLevel: 'debug',\n  timeout: 30000,\n  sessionConfigEndpoint: 'https://your-backend.com/api/orga-client-secrets',\n  // OR use fetchSessionConfig for custom implementation:\n  // fetchSessionConfig: async () => {\n  //   const response = await fetch('/api/orga-client-secrets');\n  //   const { ephemeralToken, iceServers } = await response.json();\n  //   return { ephemeralToken, iceServers };\n  // },\n  model: 'orga-1-beta',\n  voice: 'alloy',\n  temperature: 0.7,\n  history: true,\n});\n```\n\n#### Descriptions\n\n- **logLevel:** Controls the verbosity of SDK logs. Use `\"debug\"` for development, `\"warn\"` or `\"error\"` for production.\n- **timeout:** How long (in ms) the SDK will wait for backend responses before timing out.\n- **sessionConfigEndpoint:** If provided, the SDK will call this endpoint to fetch session configuration (ephemeral tokens and ICE servers). Should be a backend endpoint you control. This is the simpler approach when your backend doesn't require custom headers or authentication.\n- **fetchSessionConfig:** If provided, the SDK will use this function to fetch session configuration. This gives you full control over the request, including custom headers, authentication, and error handling. Use this when your backend requires specific middleware or authentication.\n- **model:** The AI model to use. See SDK for allowed values.\n- **voice:** The voice to use for audio output. See SDK for allowed values.\n- **temperature:** Controls randomness in AI responses. Must be within allowed range.\n- **history:** Whether to include conversation history for context. When `true`, the backend includes previous interactions in the conversation context.\n\n---\n\n## Session Configuration Approaches\n\nThe SDK provides two ways to fetch session configuration (ephemeral tokens and ICE servers) from your backend:\n\n### Approach 1: Simple Endpoint (sessionConfigEndpoint)\n\nUse this when your backend endpoint doesn't require custom headers or authentication:\n\n```ts\nOrgaAI.init({\n  sessionConfigEndpoint: 'https://your-backend.com/api/orga-ephemeral',\n  // ... other config\n});\n```\n\n**When to use:**\n- Your backend endpoint is publicly accessible\n- No authentication headers required\n- Simple GET request to your endpoint\n- Standard response format\n\n### Approach 2: Custom Function (fetchSessionConfig)\n\nUse this when you need full control over the request:\n\n```ts\nOrgaAI.init({\n  fetchSessionConfig: async () => {\n    const response = await fetch('/api/orga-client-secrets', {\n      method: 'GET',\n      headers: {\n        'Authorization': `Bearer ${userToken}`,\n        'Content-Type': 'application/json',\n      },\n    });\n    const { ephemeralToken, iceServers } = await response.json();\n    return { ephemeralToken, iceServers };\n  },\n  // ... other config\n});\n```\n\n**When to use:**\n- Your backend requires authentication headers\n- Custom middleware or request processing needed\n- Error handling requirements\n- Dynamic endpoint URLs\n- Request/response transformation needed\n\n---\n\n## Session Configuration\n\nWhen calling `startSession(config)`, you can pass configuration options that will override the global settings from `OrgaAI.init()`. This allows you to customize each session independently.\n\n### Session Configuration Options\n\n| Option                          | Type      | Description                                                                                 | Default      |\n|----------------------------------|-----------|---------------------------------------------------------------------------------------------|--------------|\n| `enableTranscriptions`          | `boolean` | Whether to return transcription data in the session.                                        | `false`      |\n| `videoQuality`                  | `\"low\" \\| \"medium\" \\| \"high\"` | Video quality for camera stream.                                                      | `\"medium\"`   |\n| `timeout`                       | `number`  | Session-specific timeout (overrides global timeout).                                        | Global timeout|\n| `model`                         | `OrgaAIModel` | AI model to use for this session (overrides global model).                           | Global model  |\n| `voice`                         | `OrgaAIVoice` | Voice to use for this session (overrides global voice).                               | Global voice  |\n| `temperature`                   | `number`  | Temperature for this session (overrides global temperature).                               | Global temp   |\n| `instructions`                  | `string`  | Custom instructions for the AI in this session.                                            | —            |\n| `modalities`                    | `Modality[]` | Audio/video modalities for this session (overrides global).                        | Global modalities|\n\n### Session Callbacks\n\nYou can also pass callbacks to handle session events:\n\n| Callback                        | Type      | Description                                                                                 |\n|----------------------------------|-----------|---------------------------------------------------------------------------------------------|\n| `onSessionStart`                | `() => void` | Called when the session starts successfully.                                           |\n| `onSessionEnd`                  | `() => void` | Called when the session ends (either manually or due to error).                      |\n| `onSessionConnected`            | `() => void` | Called when the WebRTC connection is established.                                     |\n| `onSessionCreated`              | `(event: SessionCreatedEvent) => void` | Called when a new session is created on the backend. |\n| `onConversationCreated`         | `(event: ConversationCreatedEvent) => void` | Called when a new conversation is created on the backend. |\n| `onError`                       | `(error: Error) => void` | Called when an error occurs during the session.                                    |\n| `onConnectionStateChange`       | `(state: ConnectionState) => void` | Called when the connection state changes (connecting, connected, failed, etc.). |\n| `onConversationMessageCreated`  | `(item: ConversationItem) => void` | Called when a new conversation message is created (user speech or AI response). |\n\n### Example Session Configuration\n\n```tsx\nconst { startSession } = useOrgaAI();\n\nconst handleStartSession = async () => {\n  await startSession({\n    // Override global settings\n    model: 'orga-1-beta',\n    voice: 'alloy',\n    temperature: 0.8,\n    videoQuality: 'high',\n    enableTranscriptions: true,\n    \n    // Session-specific instructions\n    instructions: 'You are a helpful assistant. Speak clearly and concisely.',\n    \n    // Event callbacks\n    onSessionStart: () => {\n      console.log('Session started!');\n    },\n    onSessionConnected: () => {\n      console.log('Connected to OrgaAI!');\n    },\n    onError: (error) => {\n      console.error('Session error:', error);\n    },\n    onConversationMessageCreated: (item) => {\n      console.log('New message:', item);\n    },\n    onSessionCreated: (event) => {\n      console.log('Session created:', event.session.id);\n    },\n    onConversationCreated: (event) => {\n      console.log('Conversation created:', event.conversation.id);\n    },\n  });\n};\n```\n\n---\n\n## Features\n\n- **Simplified API:** Clean, intuitive interface with essential methods only\n- **Automatic Modality Management:** Camera/mic toggles automatically update backend modalities\n- **Enhanced Logging:** Configurable logging with timeline events for debugging\n- **Session Configuration:** Override global settings per session\n- **Real-time Audio/Video:** Seamless WebRTC integration\n- **React Context:** Easy integration with React applications\n\n---\n\n## API Reference\n\n> **Note:** This SDK re-exports all functionality from `@orga-ai/core`, so you can import both React-specific features and core functionality from the same package:\n> \n> ```tsx\n> import { useOrgaAI, OrgaAIProvider } from '@orga-ai/react';  // React features\n> import { OrgaAI, logger } from '@orga-ai/react';            // Core features (re-exported)\n> ```\n\n### Components\n\n- **OrgaAIProvider**\n  - Provides Orga context to your React app. Wrap your app with this provider.\n  - _Import:_\n    ```tsx\n    import { OrgaAIProvider } from '@orga-ai/react';\n    ```\n  - _Usage:_\n    ```tsx\n    <OrgaAIProvider>\n      {/* ...your app... */}\n    </OrgaAIProvider>\n    ```\n\n- **OrgaVideo**\n  - Convenient wrapper for displaying video streams (camera preview).\n  - _Import:_\n    ```tsx\n    import { OrgaVideo } from '@orga-ai/react';\n    ```\n  - _Props:_\n    ```tsx\n    type OrgaVideoProps = React.VideoHTMLAttributes<HTMLVideoElement> & {\n      stream: MediaStream | null;\n    };\n    ```\n  - _Usage:_\n    ```tsx\n    <OrgaVideo stream={userVideoStream} className=\"camera-preview\" />\n    ```\n\n- **OrgaAudio**\n  - Convenient wrapper for playing audio streams (AI responses).\n  - _Import:_\n    ```tsx\n    import { OrgaAudio } from '@orga-ai/react';\n    ```\n  - _Props:_\n    ```tsx\n    type OrgaAudioProps = React.AudioHTMLAttributes<HTMLAudioElement> & {\n      stream: MediaStream | null;\n    };\n    ```\n  - _Usage:_\n    ```tsx\n    <OrgaAudio stream={aiAudioStream} />\n    ```\n\n### Hooks\n\n- **useOrgaAI**\n  - Access Orga SDK methods and state in your components.\n  - _Import:_\n    ```tsx\n    import { useOrgaAI } from '@orga-ai/react';\n    ```\n  - _Returns:_\n    ```tsx\n    {\n      // Session management\n      startSession: (config?: SessionConfig) => Promise<void>;\n      endSession: () => Promise<void>;\n\n      // Media controls\n      enableMic: () => Promise<void>;\n      disableMic: () => Promise<void>;\n      toggleMic: () => Promise<void>;\n      enableCamera: () => Promise<void>;\n      disableCamera: () => Promise<void>;\n      toggleCamera: () => Promise<void>;\n\n      // State\n      connectionState: ConnectionState;\n      aiAudioStream: MediaStream | null; // AI audio response\n      userAudioStream: MediaStream | null; // User's microphone audio stream\n      userVideoStream: MediaStream | null; // Camera preview\n      conversationItems: ConversationItem[];\n      isCameraOn: boolean;\n      isMicOn: boolean;\n      conversationId: string | null;\n\n      // Parameter management\n      model: OrgaAIModel | null;\n      voice: OrgaAIVoice | null;\n      temperature: number | null;\n      instructions: string | null;\n      modalities: Modality[];\n      updateParams: (params: {\n        model?: OrgaAIModel;\n        voice?: OrgaAIVoice;\n        temperature?: number;\n        instructions?: string;\n        modalities?: Modality[];\n      }) => void;\n    }\n    ```\n\n### Advanced Usage Examples\n\n#### Custom Media Handling\n\nIf you prefer to handle media streams manually instead of using the provided components:\n\n```tsx\nfunction CustomMediaComponent() {\n  const { userVideoStream, aiAudioStream } = useOrgaAI();\n  const videoRef = useRef<HTMLVideoElement>(null);\n  const audioRef = useRef<HTMLAudioElement>(null);\n\n  useEffect(() => {\n    if (videoRef.current) {\n      videoRef.current.srcObject = userVideoStream;\n    }\n  }, [userVideoStream]);\n\n  useEffect(() => {\n    if (audioRef.current) {\n      audioRef.current.srcObject = aiAudioStream;\n    }\n  }, [aiAudioStream]);\n\n  return (\n    <div>\n      <video \n        ref={videoRef} \n        autoPlay \n        playsInline \n        className=\"custom-video\"\n      />\n      <audio \n        ref={audioRef} \n        autoPlay \n        hidden \n      />\n    </div>\n  );\n}\n```\n\n#### Conditional Video Display\n\nWhen using `OrgaVideo`, you'll typically want to show a placeholder when the camera is off or no stream is available:\n\n```tsx\nfunction VideoWithPlaceholder() {\n  const { userVideoStream, isCameraOn } = useOrgaAI();\n\n  return (\n    <div className=\"video-container\">\n      {isCameraOn && userVideoStream ? (\n        <OrgaVideo\n          stream={userVideoStream}\n          className=\"camera-feed\"\n        />\n      ) : (\n        <div className=\"placeholder\">\n          <div className=\"placeholder-icon\">📹</div>\n          <p>Camera is {isCameraOn ? 'loading...' : 'off'}</p>\n        </div>\n      )}\n    </div>\n  );\n}\n```\n\nThis pattern ensures:\n- **Smooth UX:** Users see appropriate feedback\n- **Performance:** Video component only mounts when needed\n- **Flexibility:** Custom placeholder content for your app's design\n\n---\n\n## Troubleshooting\n\n### Common Issues\n\n1. **\"fetchSessionConfig is not defined\"**\n   - Ensure you've called `OrgaAI.init()` with the required function\n   - Check that your backend endpoint is working correctly\n\n2. **Connection failures**\n   - Check your backend ephemeral token endpoint\n   - Verify ICE servers are being returned correctly\n   - Check network connectivity\n\n### Debugging\n\nEnable debug logging to see detailed information:\n\n```ts\nOrgaAI.init({\n  logLevel: 'debug',\n  // ... other config\n});\n```\n\nThis will show you the complete timeline of events, making it easier to identify issues.\n\n---\n\n## Support\n\nFor issues, questions, or contributions, please refer to the SDK documentation or contact the Orga AI team.","readmeFilename":"README.md"}