{"_id":"@garrix82/reactgenie-lib","_rev":"10-3b3d7b4f9d0293c70413c4ee74c19d77","name":"@garrix82/reactgenie-lib","dist-tags":{"latest":"1.3.9"},"versions":{"1.3.0":{"name":"@garrix82/reactgenie-lib","version":"1.3.0","keywords":["Multimodal","Voice-interface","React Native","Toolkit"],"author":{"name":"Omkar Mirgal","email":"github.com/OmkarMirgal"},"license":"Apache-2.0","_id":"@garrix82/reactgenie-lib@1.3.0","maintainers":[{"name":"garrix82","email":"omchemnitz88@gmail.com"}],"bin":{"parse":"scripts/parse.js","dry-run":"scripts/dry-run.js","get-prompt":"scripts/prompt.js","set-script":"scripts/set-script.js"},"dist":{"shasum":"1f1667537dd6eb0b8856c346d08da4a232c97fb5","tarball":"https://registry.npmjs.org/@garrix82/reactgenie-lib/-/reactgenie-lib-1.3.0.tgz","fileCount":85,"integrity":"sha512-kEC1HU5mVkEkwU9vu7Eg9VEGGrZSzU2hRqKcK4Q2YTJhgRfNbNko/bsdrGka9AkE1oI6E9ewqHcFWNKJA2fDOg==","signatures":[{"sig":"MEYCIQDCGSfn6exfljZTB/THfMdsss/Ln8EFFHOau7kI7vXNdgIhAL9/qcRtxhQcsfmfOUvUs5j2yeCqUgXlpdMrR+3yTxaJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1980995},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"f137c9bc8d427097bc3d925cf7008614eb48996f","scripts":{"test":"jest","clean":"rm -rf dist","prepare":"if [ -d \"dist\" ]; then rm -r dist; fi && tsc --emitDeclarationOnly --skipLibCheck && pnpm babel src --out-file-extension .js --out-dir dist --extensions \".ts,.tsx\" --source-maps inline","test:ios":"jest genie-view-wrapper.ios.test","test:web":"jest genie-view-wrapper.web.test","test:babel":"babel-node -x .ts ./scripts/get-prompt.ts","test:watch":"jest --watch","test:android":"jest genie-view-wrapper.android.test","publish:local":"pnpm publish --registry http://localhost:4873 --no-git-checks","test:coverage":"jest --coverage","version:patch":"pnpm version patch && pnpm run publish:local"},"_npmUser":{"name":"garrix82","email":"omchemnitz88@gmail.com"},"_npmVersion":"10.9.3","description":"A Toolkit for Multimodal Applications","directories":{},"_nodeVersion":"22.19.0","dependencies":{"expo-blur":"~15.0.8","@babel/core":"^7.23.3","p-defer-es5":"^2.0.1","sonner-native":"^0.21.1","@reduxjs/toolkit":"^2.8.2","reflect-metadata":"^0.1.13","react-native-logs":"^5.1.0","@expo/vector-icons":"^13.0.0 || ^14.0.0 || ^15.0.0","@babel/preset-react":"^7.23.3","regenerator-runtime":"^0.14.0","react-native-elements":"^3.4.3","@react-navigation/stack":"^7.0.0","react-native-root-toast":"^3.5.1","@garrix82/reactgenie-dsl":"1.0.0","react-speech-recognition":"^3.9.1","@react-native-material/core":"^1.3.7","web-speech-cognitive-services":"7.1.3","@babel/plugin-proposal-decorators":"^7.23.3","microsoft-cognitiveservices-speech-sdk":"1.32.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.53.0","prettier":"3.0.3","@babel/cli":"^7.23.0","babel-jest":"^29.7.0","@babel/node":"^7.22.19","@types/jest":"^29.5.11","@types/node":"^25.3.0","@babel/preset-env":"^7.28.0","eslint-plugin-react":"^7.32.2","react-test-renderer":"^19.2.0","expo-yarn-workspaces":"^2.2.2","@testing-library/react":"^14.1.2","jest-environment-jsdom":"^29.7.0","babel-plugin-reactgenie":"0.3.8","@babel/preset-typescript":"^7.27.1","@testing-library/jest-dom":"^6.1.5","@typescript-eslint/parser":"^6.10.0","eslint-plugin-react-hooks":"^4.6.0","@testing-library/react-native":"^12.4.2","@types/react-speech-recognition":"^3.9.4","@typescript-eslint/eslint-plugin":"^6.10.0","babel-plugin-parameter-decorator":"^1.0.16"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","redux":"^4.2.1 || ^5.0.0","react-dom":"^18.2.0 || ^19.0.0","expo-audio":"*","expo-router":"^6.0.0","expo-speech":"*","react-redux":"^8.1.3 || ^9.0.0","react-native":"^0.72.6 || ^0.73.0 || ^0.74.0 || ^0.75.0 || ^0.76.0 || ^0.81.0","expo-file-system":"~17.0.0 || ~18.0.0","react-native-webrtc":"*","@react-navigation/native":"^6.1.9 || ^7.0.0","@react-navigation/native-stack":"^6.9.17 || ^7.0.0"},"optionalDependencies":{"winston":"^3.10.0"},"peerDependenciesMeta":{"expo-audio":{"optional":true},"expo-router":{"optional":true},"expo-speech":{"optional":true},"expo-file-system":{"optional":true},"react-native-webrtc":{"optional":true},"@react-navigation/native-stack":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reactgenie-lib_1.3.0_1774247490780_0.8449562858776423","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@garrix82/reactgenie-lib","version":"1.3.1","keywords":["Multimodal","Voice-interface","React Native","Toolkit"],"author":{"name":"Omkar Mirgal","email":"github.com/OmkarMirgal"},"license":"Apache-2.0","_id":"@garrix82/reactgenie-lib@1.3.1","maintainers":[{"name":"garrix82","email":"omchemnitz88@gmail.com"}],"bin":{"parse":"scripts/parse.js","dry-run":"scripts/dry-run.js","get-prompt":"scripts/prompt.js","set-script":"scripts/set-script.js"},"dist":{"shasum":"efadc8cf42312d788de0042bb14b0977efc003bf","tarball":"https://registry.npmjs.org/@garrix82/reactgenie-lib/-/reactgenie-lib-1.3.1.tgz","fileCount":76,"integrity":"sha512-LK4qf/98dnkMoP7JA+y16FuCrfUWgPjZWZC0hF19Zo1C9S66UCLH9depjqxWZqA9qalETKfRp4Th0btfrQyk7A==","signatures":[{"sig":"MEQCIFXNxaMzNgrXKAUduNqMDXMBsNur88Jw09rBRxiTNEXhAiBOc94X2C5V457ZN//Itp5EKX6lQbgXCwcUf0UW5ToOOg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1981199},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"270b14c4186a95935a284e859274e9991360621b","scripts":{"test":"jest","clean":"rm -rf dist","prepare":"if [ -d \"dist\" ]; then rm -r dist; fi && tsc --emitDeclarationOnly --skipLibCheck && pnpm babel src --out-file-extension .js --out-dir dist --extensions \".ts,.tsx\" --source-maps inline","test:ios":"jest genie-view-wrapper.ios.test","test:web":"jest genie-view-wrapper.web.test","test:babel":"babel-node -x .ts ./scripts/get-prompt.ts","test:watch":"jest --watch","test:android":"jest genie-view-wrapper.android.test","publish:local":"pnpm publish --registry http://localhost:4873 --no-git-checks","test:coverage":"jest --coverage","version:patch":"pnpm version patch && pnpm run publish:local"},"_npmUser":{"name":"garrix82","email":"omchemnitz88@gmail.com"},"_npmVersion":"10.9.3","description":"A Toolkit for Multimodal Applications","directories":{},"_nodeVersion":"22.19.0","dependencies":{"expo-blur":"~15.0.8","@babel/core":"^7.23.3","p-defer-es5":"^2.0.1","sonner-native":"^0.21.1","@reduxjs/toolkit":"^2.8.2","reflect-metadata":"^0.1.13","react-native-logs":"^5.1.0","@expo/vector-icons":"^13.0.0 || ^14.0.0 || ^15.0.0","@babel/preset-react":"^7.23.3","regenerator-runtime":"^0.14.0","react-native-elements":"^3.4.3","@react-navigation/stack":"^7.0.0","react-native-root-toast":"^3.5.1","@garrix82/reactgenie-dsl":"1.0.0","react-speech-recognition":"^3.9.1","@react-native-material/core":"^1.3.7","web-speech-cognitive-services":"7.1.3","@babel/plugin-proposal-decorators":"^7.23.3","microsoft-cognitiveservices-speech-sdk":"1.32.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.53.0","prettier":"3.0.3","@babel/cli":"^7.23.0","babel-jest":"^29.7.0","@babel/node":"^7.22.19","@types/jest":"^29.5.11","@types/node":"^25.3.0","@babel/preset-env":"^7.28.0","eslint-plugin-react":"^7.32.2","react-test-renderer":"^19.2.0","expo-yarn-workspaces":"^2.2.2","@testing-library/react":"^14.1.2","jest-environment-jsdom":"^29.7.0","babel-plugin-reactgenie":"0.3.8","@babel/preset-typescript":"^7.27.1","@testing-library/jest-dom":"^6.1.5","@typescript-eslint/parser":"^6.10.0","eslint-plugin-react-hooks":"^4.6.0","@testing-library/react-native":"^12.4.2","@types/react-speech-recognition":"^3.9.4","@typescript-eslint/eslint-plugin":"^6.10.0","babel-plugin-parameter-decorator":"^1.0.16"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","redux":"^4.2.1 || ^5.0.0","react-dom":"^18.2.0 || ^19.0.0","expo-audio":"*","expo-router":"^6.0.0","expo-speech":"*","react-redux":"^8.1.3 || ^9.0.0","react-native":"^0.72.6 || ^0.73.0 || ^0.74.0 || ^0.75.0 || ^0.76.0 || ^0.81.0","expo-file-system":"~17.0.0 || ~18.0.0","react-native-webrtc":"*","@react-navigation/native":"^6.1.9 || ^7.0.0","@react-navigation/native-stack":"^6.9.17 || ^7.0.0"},"optionalDependencies":{"winston":"^3.10.0"},"peerDependenciesMeta":{"expo-audio":{"optional":true},"expo-router":{"optional":true},"expo-speech":{"optional":true},"expo-file-system":{"optional":true},"react-native-webrtc":{"optional":true},"@react-navigation/native-stack":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reactgenie-lib_1.3.1_1774250236972_0.15210353854880476","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@garrix82/reactgenie-lib","version":"1.3.2","keywords":["Multimodal","Voice-interface","React Native","Toolkit"],"author":{"name":"Omkar Mirgal","email":"github.com/OmkarMirgal"},"license":"Apache-2.0","_id":"@garrix82/reactgenie-lib@1.3.2","maintainers":[{"name":"garrix82","email":"omchemnitz88@gmail.com"}],"bin":{"parse":"scripts/parse.js","dry-run":"scripts/dry-run.js","get-prompt":"scripts/prompt.js","set-script":"scripts/set-script.js"},"dist":{"shasum":"d169ba59a47a0997b5f7ef6bdb688dad58537a41","tarball":"https://registry.npmjs.org/@garrix82/reactgenie-lib/-/reactgenie-lib-1.3.2.tgz","fileCount":73,"integrity":"sha512-ac4zf+BxFIAqoS8gUiuO6vXXHq85AngEICbO44/bpA+Jf6Z1e3k/yxHLaphMFuFwfyBgN/Sk4DgeIdT6lJYs6w==","signatures":[{"sig":"MEQCIEEyN+OjtIuKm9sXXc01MvmS9FZQLjrPlDcWQknwG901AiBV62o3LoTKpnkG7uFH95Vlj7zmfOoL2arc9JUdQLbiLg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1546043},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"270b14c4186a95935a284e859274e9991360621b","scripts":{"test":"jest","clean":"rm -rf dist","prepare":"if [ -d \"dist\" ]; then rm -r dist; fi && tsc --emitDeclarationOnly --skipLibCheck && pnpm babel src --out-file-extension .js --out-dir dist --extensions \".ts,.tsx\" --source-maps inline","test:ios":"jest genie-view-wrapper.ios.test","test:web":"jest genie-view-wrapper.web.test","test:babel":"babel-node -x .ts ./scripts/get-prompt.ts","test:watch":"jest --watch","test:android":"jest genie-view-wrapper.android.test","publish:local":"pnpm publish --registry http://localhost:4873 --no-git-checks","test:coverage":"jest --coverage","version:patch":"pnpm version patch && pnpm run publish:local"},"_npmUser":{"name":"garrix82","email":"omchemnitz88@gmail.com"},"_npmVersion":"10.9.3","description":"A Toolkit for Multimodal Applications","directories":{},"_nodeVersion":"22.19.0","dependencies":{"expo-blur":"~15.0.8","@babel/core":"^7.23.3","p-defer-es5":"^2.0.1","sonner-native":"^0.21.1","@reduxjs/toolkit":"^2.8.2","reflect-metadata":"^0.1.13","react-native-logs":"^5.1.0","@expo/vector-icons":"^13.0.0 || ^14.0.0 || ^15.0.0","@babel/preset-react":"^7.23.3","regenerator-runtime":"^0.14.0","react-native-elements":"^3.4.3","@react-navigation/stack":"^7.0.0","react-native-root-toast":"^3.5.1","@garrix82/reactgenie-dsl":"1.0.0","react-speech-recognition":"^3.9.1","@react-native-material/core":"^1.3.7","web-speech-cognitive-services":"7.1.3","@babel/plugin-proposal-decorators":"^7.23.3","microsoft-cognitiveservices-speech-sdk":"1.32.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.53.0","prettier":"3.0.3","@babel/cli":"^7.23.0","babel-jest":"^29.7.0","@babel/node":"^7.22.19","@types/jest":"^29.5.11","@types/node":"^25.3.0","@babel/preset-env":"^7.28.0","eslint-plugin-react":"^7.32.2","react-test-renderer":"^19.2.0","expo-yarn-workspaces":"^2.2.2","@testing-library/react":"^14.1.2","jest-environment-jsdom":"^29.7.0","babel-plugin-reactgenie":"0.3.8","@babel/preset-typescript":"^7.27.1","@testing-library/jest-dom":"^6.1.5","@typescript-eslint/parser":"^6.10.0","eslint-plugin-react-hooks":"^4.6.0","@testing-library/react-native":"^12.4.2","@types/react-speech-recognition":"^3.9.4","@typescript-eslint/eslint-plugin":"^6.10.0","babel-plugin-parameter-decorator":"^1.0.16"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","redux":"^4.2.1 || ^5.0.0","react-dom":"^18.2.0 || ^19.0.0","expo-audio":"*","expo-router":"^6.0.0","expo-speech":"*","react-redux":"^8.1.3 || ^9.0.0","react-native":"^0.72.6 || ^0.73.0 || ^0.74.0 || ^0.75.0 || ^0.76.0 || ^0.81.0","expo-file-system":"~17.0.0 || ~18.0.0","react-native-webrtc":"*","@react-navigation/native":"^6.1.9 || ^7.0.0","@react-navigation/native-stack":"^6.9.17 || ^7.0.0"},"optionalDependencies":{"winston":"^3.10.0"},"peerDependenciesMeta":{"expo-audio":{"optional":true},"expo-router":{"optional":true},"expo-speech":{"optional":true},"expo-file-system":{"optional":true},"react-native-webrtc":{"optional":true},"@react-navigation/native-stack":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reactgenie-lib_1.3.2_1774251104657_0.5472643978665486","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"@garrix82/reactgenie-lib","version":"1.3.3","keywords":["Multimodal","Voice-interface","React Native","Toolkit"],"author":{"name":"Omkar Mirgal","email":"github.com/OmkarMirgal"},"license":"Apache-2.0","_id":"@garrix82/reactgenie-lib@1.3.3","maintainers":[{"name":"garrix82","email":"omchemnitz88@gmail.com"}],"bin":{"parse":"scripts/parse.js","dry-run":"scripts/dry-run.js","get-prompt":"scripts/prompt.js","set-script":"scripts/set-script.js"},"dist":{"shasum":"169c47ebc74403906a64a4188ea648881a44f600","tarball":"https://registry.npmjs.org/@garrix82/reactgenie-lib/-/reactgenie-lib-1.3.3.tgz","fileCount":73,"integrity":"sha512-7b6wPGaPKQZfYFkyXICp8fjrl3kNAPPCj8+2LtArln4mC7BCcOJGJuaVUtETSrLptGkM9DlwLtCOVeUV2VYbOQ==","signatures":[{"sig":"MEUCIA0H07qMQevm6R8rIF8lMpStpE6Q2GfuZmvjHT7B2NxjAiEAv9yuHedilk/cJQAhWKcQUxH12ABq6fEctdikY1fYhtE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1545984},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"270b14c4186a95935a284e859274e9991360621b","scripts":{"test":"jest","clean":"rm -rf dist","prepare":"if [ -d \"dist\" ]; then rm -r dist; fi && tsc --emitDeclarationOnly --skipLibCheck && pnpm babel src --out-file-extension .js --out-dir dist --extensions \".ts,.tsx\" --source-maps inline","test:ios":"jest genie-view-wrapper.ios.test","test:web":"jest genie-view-wrapper.web.test","test:babel":"babel-node -x .ts ./scripts/get-prompt.ts","test:watch":"jest --watch","test:android":"jest genie-view-wrapper.android.test","publish:local":"pnpm publish --registry http://localhost:4873 --no-git-checks","test:coverage":"jest --coverage","version:patch":"pnpm version patch && pnpm run publish:local"},"_npmUser":{"name":"garrix82","email":"omchemnitz88@gmail.com"},"_npmVersion":"10.9.3","description":"A Toolkit for Multimodal Applications","directories":{},"_nodeVersion":"22.19.0","dependencies":{"expo-blur":"~15.0.8","@babel/core":"^7.23.3","p-defer-es5":"^2.0.1","sonner-native":"^0.21.1","@reduxjs/toolkit":"^2.8.2","reflect-metadata":"^0.1.13","react-native-logs":"^5.1.0","@expo/vector-icons":"^13.0.0 || ^14.0.0 || ^15.0.0","@babel/preset-react":"^7.23.3","regenerator-runtime":"^0.14.0","react-native-elements":"^3.4.3","@react-navigation/stack":"^7.0.0","react-native-root-toast":"^3.5.1","@garrix82/reactgenie-dsl":"1.0.0","react-speech-recognition":"^3.9.1","@react-native-material/core":"^1.3.7","web-speech-cognitive-services":"7.1.3","@babel/plugin-proposal-decorators":"^7.23.3","microsoft-cognitiveservices-speech-sdk":"1.32.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.53.0","prettier":"3.0.3","@babel/cli":"^7.23.0","babel-jest":"^29.7.0","@babel/node":"^7.22.19","@types/jest":"^29.5.11","@types/node":"^25.3.0","@babel/preset-env":"^7.28.0","eslint-plugin-react":"^7.32.2","react-test-renderer":"^19.2.0","expo-yarn-workspaces":"^2.2.2","@testing-library/react":"^14.1.2","jest-environment-jsdom":"^29.7.0","babel-plugin-reactgenie":"0.3.8","@babel/preset-typescript":"^7.27.1","@testing-library/jest-dom":"^6.1.5","@typescript-eslint/parser":"^6.10.0","eslint-plugin-react-hooks":"^4.6.0","@testing-library/react-native":"^12.4.2","@types/react-speech-recognition":"^3.9.4","@typescript-eslint/eslint-plugin":"^6.10.0","babel-plugin-parameter-decorator":"^1.0.16"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","redux":"^4.2.1 || ^5.0.0","react-dom":"^18.2.0 || ^19.0.0","expo-audio":"*","expo-router":"^6.0.0","expo-speech":"*","react-redux":"^8.1.3 || ^9.0.0","react-native":"^0.72.6 || ^0.73.0 || ^0.74.0 || ^0.75.0 || ^0.76.0 || ^0.81.0","expo-file-system":"~17.0.0 || ~18.0.0","react-native-webrtc":"*","@react-navigation/native":"^6.1.9 || ^7.0.0","@react-navigation/native-stack":"^6.9.17 || ^7.0.0"},"optionalDependencies":{"winston":"^3.10.0"},"peerDependenciesMeta":{"expo-audio":{"optional":true},"expo-router":{"optional":true},"expo-speech":{"optional":true},"expo-file-system":{"optional":true},"react-native-webrtc":{"optional":true},"@react-navigation/native-stack":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reactgenie-lib_1.3.3_1774254451658_0.5102140318012731","host":"s3://npm-registry-packages-npm-production"}},"1.3.4":{"name":"@garrix82/reactgenie-lib","version":"1.3.4","keywords":["Multimodal","Voice-interface","React Native","Toolkit"],"author":{"name":"Omkar Mirgal","email":"github.com/OmkarMirgal"},"license":"Apache-2.0","_id":"@garrix82/reactgenie-lib@1.3.4","maintainers":[{"name":"garrix82","email":"omchemnitz88@gmail.com"}],"bin":{"parse":"scripts/parse.js","dry-run":"scripts/dry-run.js","get-prompt":"scripts/prompt.js","set-script":"scripts/set-script.js"},"dist":{"shasum":"68fe5a8e4aedeb36dd1b748c468cabddb020ea6e","tarball":"https://registry.npmjs.org/@garrix82/reactgenie-lib/-/reactgenie-lib-1.3.4.tgz","fileCount":73,"integrity":"sha512-ryCBOblXyNgrVlOh0xH49C2AYlCP1wx+RnTZEo8/eTt0HusOgyGnguDbVLGOmKW+TqU9CmJOoVa2G2qPPTlJsw==","signatures":[{"sig":"MEYCIQD8t5HrvL0Om7F7btq8rdAyPiQXkOmZncXoBNul2dGEXgIhAOR7g3Xhz07zUswxGdF1RfmbgTmS1nzHn3oKY7Q0LlNd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1550672},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"06af6994a51ce3a0e2443b008eb3b8b566869045","scripts":{"test":"jest","clean":"rm -rf dist","prepare":"if [ -d \"dist\" ]; then rm -r dist; fi && tsc --emitDeclarationOnly --skipLibCheck && pnpm babel src --out-file-extension .js --out-dir dist --extensions \".ts,.tsx\" --source-maps inline","test:ios":"jest genie-view-wrapper.ios.test","test:web":"jest genie-view-wrapper.web.test","test:babel":"babel-node -x .ts ./scripts/get-prompt.ts","test:watch":"jest --watch","test:android":"jest genie-view-wrapper.android.test","publish:local":"pnpm publish --registry http://localhost:4873 --no-git-checks","test:coverage":"jest --coverage","version:patch":"pnpm version patch && pnpm run publish:local"},"_npmUser":{"name":"garrix82","email":"omchemnitz88@gmail.com"},"_npmVersion":"10.9.3","description":"A Toolkit for Multimodal Applications","directories":{},"_nodeVersion":"22.19.0","dependencies":{"expo-blur":"~15.0.8","@babel/core":"^7.23.3","p-defer-es5":"^2.0.1","sonner-native":"^0.21.1","@reduxjs/toolkit":"^2.8.2","reflect-metadata":"^0.1.13","react-native-logs":"^5.1.0","@expo/vector-icons":"^13.0.0 || ^14.0.0 || ^15.0.0","@babel/preset-react":"^7.23.3","regenerator-runtime":"^0.14.0","react-native-elements":"^3.4.3","@react-navigation/stack":"^7.0.0","react-native-root-toast":"^3.5.1","@garrix82/reactgenie-dsl":"~1.0.0","react-speech-recognition":"^3.9.1","@react-native-material/core":"^1.3.7","web-speech-cognitive-services":"7.1.3","@babel/plugin-proposal-decorators":"^7.23.3","microsoft-cognitiveservices-speech-sdk":"1.32.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.53.0","prettier":"3.0.3","@babel/cli":"^7.23.0","babel-jest":"^29.7.0","@babel/node":"^7.22.19","@types/jest":"^29.5.11","@types/node":"^25.3.0","@babel/preset-env":"^7.28.0","eslint-plugin-react":"^7.32.2","react-test-renderer":"^19.2.0","expo-yarn-workspaces":"^2.2.2","@testing-library/react":"^14.1.2","jest-environment-jsdom":"^29.7.0","babel-plugin-reactgenie":"0.3.8","@babel/preset-typescript":"^7.27.1","@testing-library/jest-dom":"^6.1.5","@typescript-eslint/parser":"^6.10.0","eslint-plugin-react-hooks":"^4.6.0","@testing-library/react-native":"^12.4.2","@types/react-speech-recognition":"^3.9.4","@typescript-eslint/eslint-plugin":"^6.10.0","babel-plugin-parameter-decorator":"^1.0.16"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","redux":"^4.2.1 || ^5.0.0","react-dom":"^18.2.0 || ^19.0.0","expo-audio":"*","expo-router":"^6.0.0","expo-speech":"*","react-redux":"^8.1.3 || ^9.0.0","react-native":"^0.72.6 || ^0.73.0 || ^0.74.0 || ^0.75.0 || ^0.76.0 || ^0.81.0","expo-file-system":"~17.0.0 || ~18.0.0","react-native-webrtc":"*","@react-navigation/native":"^6.1.9 || ^7.0.0","@react-navigation/native-stack":"^6.9.17 || ^7.0.0"},"optionalDependencies":{"winston":"^3.10.0"},"peerDependenciesMeta":{"expo-audio":{"optional":true},"expo-router":{"optional":true},"expo-speech":{"optional":true},"expo-file-system":{"optional":true},"react-native-webrtc":{"optional":true},"@react-navigation/native-stack":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reactgenie-lib_1.3.4_1774279255089_0.3091365333679492","host":"s3://npm-registry-packages-npm-production"}},"1.3.5":{"name":"@garrix82/reactgenie-lib","version":"1.3.5","keywords":["Multimodal","Voice-interface","React Native","Toolkit"],"author":{"name":"Omkar Mirgal","email":"github.com/OmkarMirgal"},"license":"Apache-2.0","_id":"@garrix82/reactgenie-lib@1.3.5","maintainers":[{"name":"garrix82","email":"omchemnitz88@gmail.com"}],"bin":{"parse":"scripts/parse.js","dry-run":"scripts/dry-run.js","get-prompt":"scripts/prompt.js","set-script":"scripts/set-script.js"},"dist":{"shasum":"79a4282d95441024da8f7bec048c15d6077c13b2","tarball":"https://registry.npmjs.org/@garrix82/reactgenie-lib/-/reactgenie-lib-1.3.5.tgz","fileCount":73,"integrity":"sha512-KbWZHnvoJLWfxR7qCEm20Nv8gtmU/olk16qqgQRtRwKpRJfwTtZrtTxYui0F5IB33gXBynAbzDRfkylGnJ5Kfw==","signatures":[{"sig":"MEYCIQDZb/OWJI4K6UJa7QutX+wOYU4F5kkJJTMjRB2GpoQoMwIhAOQAF9xX0zo3saYAIAvfmQI3cAhEN4z3TGg5ahpdvrqa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1552789},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"aa921304cb779899358ce6616dc8859c71d5b117","scripts":{"test":"jest","clean":"rm -rf dist","prepare":"if [ -d \"dist\" ]; then rm -r dist; fi && tsc --emitDeclarationOnly --skipLibCheck && pnpm babel src --out-file-extension .js --out-dir dist --extensions \".ts,.tsx\" --source-maps inline","test:ios":"jest genie-view-wrapper.ios.test","test:web":"jest genie-view-wrapper.web.test","test:babel":"babel-node -x .ts ./scripts/get-prompt.ts","test:watch":"jest --watch","test:android":"jest genie-view-wrapper.android.test","publish:local":"pnpm publish --registry http://localhost:4873 --no-git-checks","test:coverage":"jest --coverage","version:patch":"pnpm version patch && pnpm run publish:local"},"_npmUser":{"name":"garrix82","email":"omchemnitz88@gmail.com"},"_npmVersion":"10.9.3","description":"A Toolkit for Multimodal Applications","directories":{},"_nodeVersion":"22.19.0","dependencies":{"expo-blur":"~15.0.8","@babel/core":"^7.23.3","p-defer-es5":"^2.0.1","sonner-native":"^0.21.1","@reduxjs/toolkit":"^2.8.2","reflect-metadata":"^0.1.13","react-native-logs":"^5.1.0","@expo/vector-icons":"^13.0.0 || ^14.0.0 || ^15.0.0","@babel/preset-react":"^7.23.3","regenerator-runtime":"^0.14.0","react-native-elements":"^3.4.3","@react-navigation/stack":"^7.0.0","react-native-root-toast":"^3.5.1","@garrix82/reactgenie-dsl":"~1.0.3","react-speech-recognition":"^3.9.1","@react-native-material/core":"^1.3.7","web-speech-cognitive-services":"7.1.3","@babel/plugin-proposal-decorators":"^7.23.3","microsoft-cognitiveservices-speech-sdk":"1.32.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.53.0","prettier":"3.0.3","@babel/cli":"^7.23.0","babel-jest":"^29.7.0","@babel/node":"^7.22.19","@types/jest":"^29.5.11","@types/node":"^25.3.0","@babel/preset-env":"^7.28.0","eslint-plugin-react":"^7.32.2","react-test-renderer":"^19.2.0","expo-yarn-workspaces":"^2.2.2","@testing-library/react":"^14.1.2","jest-environment-jsdom":"^29.7.0","@babel/preset-typescript":"^7.27.1","@testing-library/jest-dom":"^6.1.5","@typescript-eslint/parser":"^6.10.0","eslint-plugin-react-hooks":"^4.6.0","@testing-library/react-native":"^12.4.2","@types/react-speech-recognition":"^3.9.4","@typescript-eslint/eslint-plugin":"^6.10.0","babel-plugin-parameter-decorator":"^1.0.16","@garrix82/babel-plugin-reactgenie":"^0.3.9"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","redux":"^4.2.1 || ^5.0.0","react-dom":"^18.2.0 || ^19.0.0","expo-audio":"*","expo-router":"^6.0.0","expo-speech":"*","react-redux":"^8.1.3 || ^9.0.0","react-native":"^0.72.6 || ^0.73.0 || ^0.74.0 || ^0.75.0 || ^0.76.0 || ^0.81.0","expo-file-system":"~17.0.0 || ~18.0.0","react-native-webrtc":"*","@react-navigation/native":"^6.1.9 || ^7.0.0","@react-navigation/native-stack":"^6.9.17 || ^7.0.0"},"optionalDependencies":{"winston":"^3.10.0"},"peerDependenciesMeta":{"expo-audio":{"optional":true},"expo-router":{"optional":true},"expo-speech":{"optional":true},"expo-file-system":{"optional":true},"react-native-webrtc":{"optional":true},"@react-navigation/native-stack":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reactgenie-lib_1.3.5_1774322316784_0.8880055144968846","host":"s3://npm-registry-packages-npm-production"}},"1.3.6":{"name":"@garrix82/reactgenie-lib","version":"1.3.6","keywords":["Multimodal","Voice-interface","React Native","Toolkit"],"author":{"name":"Omkar Mirgal","email":"github.com/OmkarMirgal"},"license":"Apache-2.0","_id":"@garrix82/reactgenie-lib@1.3.6","maintainers":[{"name":"garrix82","email":"omchemnitz88@gmail.com"}],"bin":{"parse":"scripts/parse.js","dry-run":"scripts/dry-run.js","get-prompt":"scripts/prompt.js","set-script":"scripts/set-script.js"},"dist":{"shasum":"e695e82b058460257759cf17ab053a5b506ddab2","tarball":"https://registry.npmjs.org/@garrix82/reactgenie-lib/-/reactgenie-lib-1.3.6.tgz","fileCount":73,"integrity":"sha512-W21YFJgTLKcBolJx7CoRH+ZCb6U+Tx7NP62VBowJl37/sls1VJcv4+joQoGbiuBsUtCcS8FgNtbd9j7ZuTs1zw==","signatures":[{"sig":"MEQCICsizAyFfPdFCYBKDO+P0mvZg6wYQfHrk4Zwn8uYAPUxAiAiz44WtSZEd2SR7ImC5uLX9JLuFge5slIvu1PXMA33jQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1572391},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"bdd22d2cc7026008874b3d6af3974420be42acd1","scripts":{"test":"jest","clean":"rm -rf dist","prepare":"if [ -d \"dist\" ]; then rm -r dist; fi && tsc --emitDeclarationOnly --skipLibCheck && pnpm babel src --out-file-extension .js --out-dir dist --extensions \".ts,.tsx\" --source-maps inline","test:ios":"jest genie-view-wrapper.ios.test","test:web":"jest genie-view-wrapper.web.test","test:babel":"babel-node -x .ts ./scripts/get-prompt.ts","test:watch":"jest --watch","test:android":"jest genie-view-wrapper.android.test","publish:local":"pnpm publish --registry http://localhost:4873 --no-git-checks","test:coverage":"jest --coverage","version:patch":"pnpm version patch && pnpm run publish:local"},"_npmUser":{"name":"garrix82","email":"omchemnitz88@gmail.com"},"_npmVersion":"10.9.3","description":"A Toolkit for Multimodal Applications","directories":{},"_nodeVersion":"22.19.0","dependencies":{"expo-blur":"~15.0.8","@babel/core":"^7.23.3","p-defer-es5":"^2.0.1","sonner-native":"^0.21.1","@reduxjs/toolkit":"^2.8.2","reflect-metadata":"^0.1.13","react-native-logs":"^5.1.0","@expo/vector-icons":"^13.0.0 || ^14.0.0 || ^15.0.0","@babel/preset-react":"^7.23.3","regenerator-runtime":"^0.14.0","react-native-elements":"^3.4.3","@react-navigation/stack":"^7.0.0","react-native-root-toast":"^3.5.1","@garrix82/reactgenie-dsl":"~1.0.4","react-speech-recognition":"^3.9.1","@react-native-material/core":"^1.3.7","web-speech-cognitive-services":"7.1.3","@babel/plugin-proposal-decorators":"^7.23.3","microsoft-cognitiveservices-speech-sdk":"1.32.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.53.0","prettier":"3.0.3","@babel/cli":"^7.23.0","babel-jest":"^29.7.0","@babel/node":"^7.22.19","@types/jest":"^29.5.11","@types/node":"^25.3.0","@babel/preset-env":"^7.28.0","eslint-plugin-react":"^7.32.2","react-test-renderer":"^19.2.0","expo-yarn-workspaces":"^2.2.2","@testing-library/react":"^14.1.2","jest-environment-jsdom":"^29.7.0","@babel/preset-typescript":"^7.27.1","@testing-library/jest-dom":"^6.1.5","@typescript-eslint/parser":"^6.10.0","eslint-plugin-react-hooks":"^4.6.0","@testing-library/react-native":"^12.4.2","@types/react-speech-recognition":"^3.9.4","@typescript-eslint/eslint-plugin":"^6.10.0","babel-plugin-parameter-decorator":"^1.0.16","@garrix82/babel-plugin-reactgenie":"^0.3.9"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","redux":"^4.2.1 || ^5.0.0","react-dom":"^18.2.0 || ^19.0.0","expo-audio":"*","expo-router":"^6.0.0","expo-speech":"*","react-redux":"^8.1.3 || ^9.0.0","react-native":"^0.72.6 || ^0.73.0 || ^0.74.0 || ^0.75.0 || ^0.76.0 || ^0.81.0","expo-file-system":"~17.0.0 || ~18.0.0","react-native-webrtc":"*","@react-navigation/native":"^6.1.9 || ^7.0.0","@react-navigation/native-stack":"^6.9.17 || ^7.0.0"},"optionalDependencies":{"winston":"^3.10.0"},"peerDependenciesMeta":{"expo-audio":{"optional":true},"expo-router":{"optional":true},"expo-speech":{"optional":true},"expo-file-system":{"optional":true},"react-native-webrtc":{"optional":true},"@react-navigation/native-stack":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reactgenie-lib_1.3.6_1774443297078_0.5478617179612255","host":"s3://npm-registry-packages-npm-production"}},"1.3.7":{"name":"@garrix82/reactgenie-lib","version":"1.3.7","keywords":["Multimodal","Voice-interface","React Native","Toolkit"],"author":{"name":"Omkar Mirgal","email":"github.com/OmkarMirgal"},"license":"Apache-2.0","_id":"@garrix82/reactgenie-lib@1.3.7","maintainers":[{"name":"garrix82","email":"omchemnitz88@gmail.com"}],"bin":{"parse":"scripts/parse.js","dry-run":"scripts/dry-run.js","get-prompt":"scripts/prompt.js","set-script":"scripts/set-script.js"},"dist":{"shasum":"d07eea3a9a9d86042ba483e3707c47f4d9a899f4","tarball":"https://registry.npmjs.org/@garrix82/reactgenie-lib/-/reactgenie-lib-1.3.7.tgz","fileCount":73,"integrity":"sha512-CKXMejKrs8oeD/SwbZevcEf5Z5YulwEz8j2Fp3OBWjMRJSVp8pWcvuKXKCayk1a0baipLUH/OvZf5qCimRaC3g==","signatures":[{"sig":"MEUCIFEWMU/jBlXWTG+J0MD+Z0k3guraNCzOXo/rufmQ3TBPAiEA444tYukxqWfDiBGg5SvwMgfnixa8O2bePrJb/qorANo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1578369},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"87d1c10c20c34d10ec0ac0ed8373ccd1d0e1fe09","scripts":{"test":"jest","clean":"rm -rf dist","prepare":"if [ -d \"dist\" ]; then rm -r dist; fi && tsc --emitDeclarationOnly --skipLibCheck && pnpm babel src --out-file-extension .js --out-dir dist --extensions \".ts,.tsx\" --source-maps inline","test:ios":"jest genie-view-wrapper.ios.test","test:web":"jest genie-view-wrapper.web.test","test:babel":"babel-node -x .ts ./scripts/get-prompt.ts","test:watch":"jest --watch","test:android":"jest genie-view-wrapper.android.test","publish:local":"pnpm publish --registry http://localhost:4873 --no-git-checks","test:coverage":"jest --coverage","version:patch":"pnpm version patch && pnpm run publish:local"},"_npmUser":{"name":"garrix82","email":"omchemnitz88@gmail.com"},"_npmVersion":"10.9.3","description":"A Toolkit for Multimodal Applications","directories":{},"_nodeVersion":"22.19.0","dependencies":{"expo-blur":"~15.0.8","@babel/core":"^7.23.3","p-defer-es5":"^2.0.1","sonner-native":"^0.21.1","@reduxjs/toolkit":"^2.8.2","reflect-metadata":"^0.1.13","react-native-logs":"^5.1.0","@expo/vector-icons":"^13.0.0 || ^14.0.0 || ^15.0.0","@babel/preset-react":"^7.23.3","regenerator-runtime":"^0.14.0","react-native-elements":"^3.4.3","@react-navigation/stack":"^7.0.0","react-native-root-toast":"^3.5.1","@garrix82/reactgenie-dsl":"~1.0.4","react-speech-recognition":"^3.9.1","@react-native-material/core":"^1.3.7","web-speech-cognitive-services":"7.1.3","@babel/plugin-proposal-decorators":"^7.23.3","microsoft-cognitiveservices-speech-sdk":"1.32.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.53.0","prettier":"3.0.3","@babel/cli":"^7.23.0","babel-jest":"^29.7.0","@babel/node":"^7.22.19","@types/jest":"^29.5.11","@types/node":"^25.3.0","@babel/preset-env":"^7.28.0","eslint-plugin-react":"^7.32.2","react-test-renderer":"^19.2.0","expo-yarn-workspaces":"^2.2.2","@testing-library/react":"^14.1.2","jest-environment-jsdom":"^29.7.0","@babel/preset-typescript":"^7.27.1","@testing-library/jest-dom":"^6.1.5","@typescript-eslint/parser":"^6.10.0","eslint-plugin-react-hooks":"^4.6.0","@testing-library/react-native":"^12.4.2","@types/react-speech-recognition":"^3.9.4","@typescript-eslint/eslint-plugin":"^6.10.0","babel-plugin-parameter-decorator":"^1.0.16","@garrix82/babel-plugin-reactgenie":"^0.3.9"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","redux":"^4.2.1 || ^5.0.0","react-dom":"^18.2.0 || ^19.0.0","expo-audio":"*","expo-router":"^6.0.0","expo-speech":"*","react-redux":"^8.1.3 || ^9.0.0","react-native":"^0.72.6 || ^0.73.0 || ^0.74.0 || ^0.75.0 || ^0.76.0 || ^0.81.0","expo-file-system":"~17.0.0 || ~18.0.0","react-native-webrtc":"*","@react-navigation/native":"^6.1.9 || ^7.0.0","@react-navigation/native-stack":"^6.9.17 || ^7.0.0"},"optionalDependencies":{"winston":"^3.10.0"},"peerDependenciesMeta":{"expo-audio":{"optional":true},"expo-router":{"optional":true},"expo-speech":{"optional":true},"expo-file-system":{"optional":true},"react-native-webrtc":{"optional":true},"@react-navigation/native-stack":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reactgenie-lib_1.3.7_1775741794126_0.37304597092102565","host":"s3://npm-registry-packages-npm-production"}},"1.3.8":{"name":"@garrix82/reactgenie-lib","version":"1.3.8","keywords":["Multimodal","Voice-interface","React Native","Toolkit"],"author":{"name":"Omkar Mirgal","email":"github.com/OmkarMirgal"},"license":"Apache-2.0","_id":"@garrix82/reactgenie-lib@1.3.8","maintainers":[{"name":"garrix82","email":"omchemnitz88@gmail.com"}],"bin":{"parse":"scripts/parse.js","dry-run":"scripts/dry-run.js","get-prompt":"scripts/prompt.js","set-script":"scripts/set-script.js"},"dist":{"shasum":"394d360ba486497b4937b75c3d94f80dbbf3f18e","tarball":"https://registry.npmjs.org/@garrix82/reactgenie-lib/-/reactgenie-lib-1.3.8.tgz","fileCount":73,"integrity":"sha512-mzrJ+ZMUX5Sq+sXlGTTfD24LJznuc3uP2L+OwpQrnIgXhmeMxopLkRnTibzAPM4sj2raT6ICtjUvP0yMKqB5nw==","signatures":[{"sig":"MEUCIQCiC0BKqs0nirgT8Hb4yMRGLYb6oijPIjcFc86vndd1zwIgEm++7qo2NwdjOZXvrCI7G49sJPOBH1Wx4cNmB875TVI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1578310},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"4cee5f98c224f0ad28cd406b9ccb0251d22dc872","scripts":{"test":"jest","clean":"rm -rf dist","prepare":"if [ -d \"dist\" ]; then rm -r dist; fi && tsc --emitDeclarationOnly --skipLibCheck && pnpm babel src --out-file-extension .js --out-dir dist --extensions \".ts,.tsx\" --source-maps inline","test:ios":"jest genie-view-wrapper.ios.test","test:web":"jest genie-view-wrapper.web.test","test:babel":"babel-node -x .ts ./scripts/get-prompt.ts","test:watch":"jest --watch","test:android":"jest genie-view-wrapper.android.test","publish:local":"pnpm publish --registry http://localhost:4873 --no-git-checks","test:coverage":"jest --coverage","version:patch":"pnpm version patch && pnpm run publish:local"},"_npmUser":{"name":"garrix82","email":"omchemnitz88@gmail.com"},"_npmVersion":"10.9.3","description":"A Toolkit for Multimodal Applications","directories":{},"_nodeVersion":"22.19.0","dependencies":{"expo-blur":"~15.0.8","@babel/core":"^7.23.3","p-defer-es5":"^2.0.1","sonner-native":"^0.21.1","@reduxjs/toolkit":"^2.8.2","reflect-metadata":"^0.1.13","react-native-logs":"^5.1.0","@expo/vector-icons":"^13.0.0 || ^14.0.0 || ^15.0.0","@babel/preset-react":"^7.23.3","regenerator-runtime":"^0.14.0","react-native-elements":"^3.4.3","@react-navigation/stack":"^7.0.0","react-native-root-toast":"^3.5.1","@garrix82/reactgenie-dsl":"~1.0.4","react-speech-recognition":"^3.9.1","@react-native-material/core":"^1.3.7","web-speech-cognitive-services":"7.1.3","@babel/plugin-proposal-decorators":"^7.23.3","microsoft-cognitiveservices-speech-sdk":"1.32.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.53.0","prettier":"3.0.3","@babel/cli":"^7.23.0","babel-jest":"^29.7.0","@babel/node":"^7.22.19","@types/jest":"^29.5.11","@types/node":"^25.3.0","@babel/preset-env":"^7.28.0","eslint-plugin-react":"^7.32.2","react-test-renderer":"^19.2.0","expo-yarn-workspaces":"^2.2.2","@testing-library/react":"^14.1.2","jest-environment-jsdom":"^29.7.0","@babel/preset-typescript":"^7.27.1","@testing-library/jest-dom":"^6.1.5","@typescript-eslint/parser":"^6.10.0","eslint-plugin-react-hooks":"^4.6.0","@testing-library/react-native":"^12.4.2","@types/react-speech-recognition":"^3.9.4","@typescript-eslint/eslint-plugin":"^6.10.0","babel-plugin-parameter-decorator":"^1.0.16","@garrix82/babel-plugin-reactgenie":"^0.3.9"},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","redux":"^4.2.1 || ^5.0.0","react-dom":"^18.2.0 || ^19.0.0","expo-audio":"*","expo-router":"^6.0.0","expo-speech":"*","react-redux":"^8.1.3 || ^9.0.0","react-native":"^0.72.6 || ^0.73.0 || ^0.74.0 || ^0.75.0 || ^0.76.0 || ^0.81.0","expo-file-system":"~17.0.0 || ~18.0.0","react-native-webrtc":"*","@react-navigation/native":"^6.1.9 || ^7.0.0","@react-navigation/native-stack":"^6.9.17 || ^7.0.0"},"optionalDependencies":{"winston":"^3.10.0"},"peerDependenciesMeta":{"expo-audio":{"optional":true},"expo-router":{"optional":true},"expo-speech":{"optional":true},"expo-file-system":{"optional":true},"react-native-webrtc":{"optional":true},"@react-navigation/native-stack":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/reactgenie-lib_1.3.8_1775781707233_0.33889107544446495","host":"s3://npm-registry-packages-npm-production"}},"1.3.9":{"name":"@garrix82/reactgenie-lib","version":"1.3.9","description":"A Toolkit for Multimodal Applications","author":{"name":"Omkar Mirgal","email":"github.com/OmkarMirgal"},"license":"Apache-2.0","keywords":["Multimodal","Voice-interface","React Native","Toolkit"],"main":"dist/index.js","scripts":{"test":"jest","test:babel":"babel-node -x .ts ./scripts/get-prompt.ts","test:watch":"jest --watch","test:coverage":"jest --coverage","test:web":"jest genie-view-wrapper.web.test","test:ios":"jest genie-view-wrapper.ios.test","test:android":"jest genie-view-wrapper.android.test","prepare":"if [ -d \"dist\" ]; then rm -r dist; fi && tsc --emitDeclarationOnly --skipLibCheck && pnpm babel src --out-file-extension .js --out-dir dist --extensions \".ts,.tsx\" --source-maps inline","clean":"rm -rf dist","publish:local":"pnpm publish --registry http://localhost:4873 --no-git-checks","version:patch":"pnpm version patch && pnpm run publish:local"},"bin":{"get-prompt":"scripts/prompt.js","dry-run":"scripts/dry-run.js","set-script":"scripts/set-script.js","parse":"scripts/parse.js"},"devDependencies":{"@babel/cli":"^7.23.0","@babel/node":"^7.22.19","@babel/preset-env":"^7.28.0","@babel/preset-typescript":"^7.27.1","@testing-library/jest-dom":"^6.1.5","@testing-library/react":"^14.1.2","@testing-library/react-native":"^12.4.2","@types/jest":"^29.5.11","@types/node":"^25.3.0","@types/react-speech-recognition":"^3.9.4","@typescript-eslint/eslint-plugin":"^6.10.0","@typescript-eslint/parser":"^6.10.0","babel-jest":"^29.7.0","babel-plugin-parameter-decorator":"^1.0.16","@garrix82/babel-plugin-reactgenie":"^0.3.9","eslint":"^8.53.0","eslint-plugin-react":"^7.32.2","eslint-plugin-react-hooks":"^4.6.0","expo-yarn-workspaces":"^2.2.2","jest":"^29.7.0","jest-environment-jsdom":"^29.7.0","prettier":"3.0.3","react-test-renderer":"^19.2.0"},"dependencies":{"@babel/core":"^7.23.3","@babel/plugin-proposal-decorators":"^7.23.3","@babel/preset-react":"^7.23.3","@expo/vector-icons":"^13.0.0 || ^14.0.0 || ^15.0.0","@garrix82/reactgenie-dsl":"~1.0.4","@react-native-material/core":"^1.3.7","@react-navigation/stack":"^7.0.0","@reduxjs/toolkit":"^2.8.2","expo-blur":"~15.0.8","microsoft-cognitiveservices-speech-sdk":"1.32.0","p-defer-es5":"^2.0.1","react-native-elements":"^3.4.3","react-native-logs":"^5.1.0","react-native-root-toast":"^3.5.1","react-speech-recognition":"^3.9.1","reflect-metadata":"^0.1.13","regenerator-runtime":"^0.14.0","sonner-native":"^0.21.1","web-speech-cognitive-services":"7.1.3"},"optionalDependencies":{"winston":"^3.10.0"},"peerDependencies":{"@react-navigation/native":"^6.1.9 || ^7.0.0","@react-navigation/native-stack":"^6.9.17 || ^7.0.0","expo-audio":"*","expo-file-system":"~17.0.0 || ~18.0.0","expo-router":"^6.0.0","expo-speech":"*","react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0","react-native":"^0.72.6 || ^0.73.0 || ^0.74.0 || ^0.75.0 || ^0.76.0 || ^0.81.0","react-native-webrtc":"*","react-redux":"^8.1.3 || ^9.0.0","redux":"^4.2.1 || ^5.0.0"},"peerDependenciesMeta":{"expo-router":{"optional":true},"@react-navigation/native-stack":{"optional":true},"expo-audio":{"optional":true},"expo-file-system":{"optional":true},"expo-speech":{"optional":true},"react-native-webrtc":{"optional":true}},"_id":"@garrix82/reactgenie-lib@1.3.9","gitHead":"7063b880fd0d640781bac000aebd9da0a0d8c254","types":"./dist/index.d.ts","_nodeVersion":"22.19.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-ylrR/PSaxrQTfPIXAJY2ndexlDHRO+wvYGfr3lL+bStwuLUgls136NEsNPkQ/bzZf/OR5wJifJ97T8CX/+OG4Q==","shasum":"ff9e56becf7ca65110922c2b56403f6ddfc1905f","tarball":"https://registry.npmjs.org/@garrix82/reactgenie-lib/-/reactgenie-lib-1.3.9.tgz","fileCount":73,"unpackedSize":1578443,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDD4VUkoVo0gbJu3nwoJPX5YpqUI1FbrzWHqX5c4vmGXAiA42wJMksXwmtE74CKkFRQLBmNEnt3Rta+65XNNyU1FRw=="}]},"_npmUser":{"name":"garrix82","email":"omchemnitz88@gmail.com"},"directories":{},"maintainers":[{"name":"garrix82","email":"omchemnitz88@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/reactgenie-lib_1.3.9_1776249006741_0.7392734209236222"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-23T06:31:30.679Z","modified":"2026-04-15T10:30:07.076Z","1.3.0":"2026-03-23T06:31:30.982Z","1.3.1":"2026-03-23T07:17:17.167Z","1.3.2":"2026-03-23T07:31:44.843Z","1.3.3":"2026-03-23T08:27:31.877Z","1.3.4":"2026-03-23T15:20:55.285Z","1.3.5":"2026-03-24T03:18:37.003Z","1.3.6":"2026-03-25T12:54:57.264Z","1.3.7":"2026-04-09T13:36:34.454Z","1.3.8":"2026-04-10T00:41:47.401Z","1.3.9":"2026-04-15T10:30:06.953Z"},"author":{"name":"Omkar Mirgal","email":"github.com/OmkarMirgal"},"license":"Apache-2.0","keywords":["Multimodal","Voice-interface","React Native","Toolkit"],"description":"A Toolkit for Multimodal Applications","maintainers":[{"name":"garrix82","email":"omchemnitz88@gmail.com"}],"readme":"# ReactGenie\n\n> React, React Native, and Expo integration for multimodal apps built on `@omkarfork/reactgenie-dsl`\n\n[![NPM](https://img.shields.io/npm/v/@omkarfork/reactgenie-lib.svg)](https://www.npmjs.com/package/@omkarfork/reactgenie-lib)\n[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)\n\n> Fork notice: this package snapshot is maintained as a thesis-project fork by [Omkar Mirgal](https://github.com/OmkarMirgal). For the original ReactGenie project, see [StanfordHCI/ReactGenie](https://github.com/StanfordHCI/ReactGenie).\n\n## Introduction\n\n`@omkarfork/reactgenie-lib` is the React integration layer for `@omkarfork/reactgenie-dsl`.\n\nIt gives you the pieces needed to turn Genie DSL classes into a working UI runtime:\n\n- decorator and base-class re-exports for Genie models\n- a Redux-backed runtime bootstrap with `initReactGenie()`\n- visible-view registration with `GenieClassInterface(...)`\n- multimodal execution through `ModalityProvider`\n- speech recognition support for web and native runtimes\n- Expo Router integration helpers\n- platform-aware voice UI, overlays, logging, and telemetry hooks\n\nThis README covers the current package surface, installation, quick start, and feature map. For deeper architecture, advanced routing details, and lower-level implementation notes, see [DEVELOPER_GUIDE.md](./DEVELOPER_GUIDE.md).\n\n## Feature Overview\n\nReactGenie currently includes:\n\n- React-oriented re-exports of the DSL decorators and base classes: `GenieClass`, `GenieFunction`, `GenieProperty`, `GenieKey`, `DataClass`, `HelperClass`, `int`, `float`\n- runtime bootstrap with `initReactGenie()`\n- shared store access with `useGenieSelector()` and `useGenieCodeSelector()`\n- UI-to-object registration with `GenieClassInterface(...)`\n- multimodal orchestration with `ModalityProvider`\n- contextual object resolution through injected `Current()` and `AllCurrent()`\n- speech recognition adapters for:\n  - Groq on web\n  - Groq on native via optional Expo audio/filesystem support\n  - OpenAI realtime transcription on web\n  - OpenAI realtime transcription on native via optional WebRTC support\n  - browser Web Speech fallback for Groq flows\n  - local MLX Whisper on web\n- voice UI primitives including `VoiceRecognitionBar`, `AudioVisualizer`, and `AudioLevelIndicator`\n- the `useSpeechRecognition()` hook for custom voice UI\n- Expo Router helpers: `useExpoRouterAdapter()`, `withExpoRouterAdapter()`, `useRegisterGenieRoute()`, `registerGenieRoute()`\n- platform abstraction exports for overlay, button, transcript, event, and safe-container helpers\n- runtime diagnostics with `configureLogger()`, `setLogLevel()`, `setLoggerTelemetryBridge()`, and voice-pipeline telemetry bridges\n- built-in helper classes `DateTime` and `TimeDelta`\n- typed user-facing errors with `GenieUserFacingError`\n- CLI binaries for prompt and parser experiments: `get-prompt`, `dry-run`, `set-script`, `parse`\n\n## Installation\n\nInstall the library and the required peer dependencies for any ReactGenie app:\n\n```bash\nnpm install @omkarfork/reactgenie-lib @omkarfork/reactgenie-dsl react-redux redux reflect-metadata\n```\n\nIf your app uses React Navigation directly, install the expected navigation peers:\n\n```bash\nnpm install @react-navigation/native @react-navigation/native-stack @react-navigation/stack\n```\n\nOptional peers depend on which runtime paths you want to enable:\n\n- `expo-router` for file-based route integration\n- `expo-audio` and `expo-file-system` for native Groq speech capture\n- `react-native-webrtc` for native OpenAI realtime transcription\n- `expo-speech` if your native app speaks responses aloud\n\n### TypeScript and Babel setup\n\nReactGenie depends on decorator metadata. Enable the same pipeline used by ReactGenieDSL.\n\nTypeScript:\n\n```json\n{\n  \"compilerOptions\": {\n    \"experimentalDecorators\": true,\n    \"emitDecoratorMetadata\": true,\n    \"useDefineForClassFields\": false\n  }\n}\n```\n\nBabel:\n\n```js\nplugins: [\n  [\"@babel/plugin-proposal-decorators\", { legacy: true }],\n  [\"@babel/plugin-transform-class-properties\", { loose: true }],\n  \"babel-plugin-parameter-decorator\",\n  \"babel-plugin-reactgenie\"\n]\n```\n\nImport `reflect-metadata` before any decorated Genie classes are evaluated.\n\n## Quick Start\n\nThe example below matches the current package API.\n\n### 1. Define your Genie model\n\n```ts\nimport \"reflect-metadata\";\nimport {\n  DataClass,\n  GenieClass,\n  GenieFunction,\n  GenieKey,\n  GenieProperty,\n  int,\n} from \"@omkarfork/reactgenie-lib\";\n\n@GenieClass(\"A counter\")\nexport class Counter extends DataClass {\n  @GenieKey\n  @GenieProperty(\"Stable counter name\")\n  name: string;\n\n  @GenieProperty(\"Current count\")\n  count: int;\n\n  static Examples = [\n    {\n      user_utterance: \"increment this counter\",\n      example_parsed: \"Counter.Current().increment()\",\n    },\n    {\n      user_utterance: \"what is the count\",\n      example_parsed: \"Counter.Current().count\",\n    },\n  ];\n\n  constructor({ name, count = 0 }: { name: string; count?: int }) {\n    super({ name });\n    this.name = name;\n    this.count = count;\n  }\n\n  static setup() {\n    Counter.CreateObject({ name: \"apples\", count: 2 });\n    Counter.CreateObject({ name: \"oranges\", count: 5 });\n  }\n\n  @GenieFunction(\"Increment the counter\")\n  increment(): this {\n    this.count += 1;\n    return this;\n  }\n}\n```\n\n### 2. Register a renderable view\n\n```tsx\nimport { Pressable, Text, View } from \"react-native\";\nimport {\n  GenieClassInterface,\n  genieDispatch,\n  useGenieSelector,\n} from \"@omkarfork/reactgenie-lib\";\nimport { Counter } from \"./counter\";\n\ntype CounterViewProps = {\n  name: string;\n};\n\nfunction CounterView({ name }: CounterViewProps) {\n  const counter = useGenieSelector(() => Counter.GetObject({ name }));\n  const count = useGenieSelector(() => counter.count);\n\n  return (\n    <View>\n      <Text>{name}</Text>\n      <Text>{count}</Text>\n      <Pressable onPress={() => genieDispatch(() => counter.increment())}>\n        <Text>Increment</Text>\n      </Pressable>\n    </View>\n  );\n}\n\nexport const CounterCard = GenieClassInterface(\n  \"Counter\",\n  ({ name }: CounterViewProps) => `${name} counter`,\n  1\n)(CounterView);\n```\n\n`GenieClassInterface(...)` currently takes:\n\n```ts\nGenieClassInterface(\n  type: string,\n  displayTitle?: string | ((props: any) => string),\n  displayPriority?: number | ((props: any) => number)\n)\n```\n\nImportant: the registered view class name comes from the wrapped component function name (`CounterView` above), not from the `displayTitle` argument.\n\n### 3. Initialize the shared runtime\n\n```ts\nimport { initReactGenie } from \"@omkarfork/reactgenie-lib\";\nimport { Counter } from \"./counter\";\n\nexport const reactGenieStore = initReactGenie();\n\nCounter.setup();\n```\n\nCall `setup()` yourself after `initReactGenie()`. The README examples in older docs implied that setup was automatic; the current implementation expects explicit initialization order.\n\n### 4. Mount the provider\n\n```tsx\nimport { Provider } from \"react-redux\";\nimport {\n  ModalityProvider,\n  type SpeechRecognitionConfig,\n} from \"@omkarfork/reactgenie-lib\";\nimport type { NlInterpreterParserConfig } from \"@omkarfork/reactgenie-dsl\";\nimport { reactGenieStore } from \"./store\";\nimport { CounterCard } from \"./CounterCard\";\n\nconst parserConfig: NlInterpreterParserConfig = {\n  provider: \"groq\",\n};\n\nconst speechConfig: SpeechRecognitionConfig = {\n  provider: \"groq\",\n  groq: {\n    apiBaseUrl: \"http://localhost:4000\",\n  },\n};\n\nexport function App() {\n  return (\n    <Provider store={reactGenieStore}>\n      <ModalityProvider\n        clientSecret=\"proxy-or-provider-token\"\n        apiBaseUrl=\"http://localhost:4000\"\n        parserConfig={parserConfig}\n        speechConfig={speechConfig}\n        displayTranscript={true}\n      >\n        <CounterCard name=\"apples\" />\n      </ModalityProvider>\n    </Provider>\n  );\n}\n```\n\n## Core Concepts\n\n### `@GenieClass`\n\nMarks a class as part of the Genie model surface and contributes prompt metadata.\n\n```ts\n@GenieClass(\"A counter\")\nexport class Counter extends DataClass {}\n```\n\n### `DataClass`\n\nUse `DataClass` for persisted Genie objects with stable keys. These objects can be created with `CreateObject(...)`, retrieved with `GetObject(...)`, enumerated with `All()`, and targeted through UI-aware helpers such as `Current()` and `AllCurrent()` after ReactGenie initialization.\n\n### `HelperClass`\n\nUse `HelperClass` for structured helper values nested inside data objects. Helper classes are serialized through parent data objects and are not standalone persisted records.\n\n### `@GenieKey`\n\nMarks the key field for a `DataClass`. Each `DataClass` needs a Genie key.\n\n```ts\n@GenieKey\n@GenieProperty()\nname: string;\n```\n\n### `@GenieProperty`\n\nMarks a field as part of the serializable Genie state and prompt-visible model.\n\n```ts\n@GenieProperty(\"Current count\")\ncount: int;\n```\n\n### `@GenieFunction`\n\nMarks a static or instance method as callable from Genie-generated DSL / multimodal flows.\n\n```ts\n@GenieFunction(\"Increment the counter\")\nincrement(): this {\n  this.count += 1;\n  return this;\n}\n```\n\n### `CreateObject(...)`\n\nCreate Genie objects through `CreateObject(...)`, not `new`.\n\n```ts\nCounter.CreateObject({ name: \"apples\", count: 2 });\n```\n\n### `GetObject(...)`\n\nFetch a `DataClass` instance by its key.\n\n```ts\nconst apples = Counter.GetObject({ name: \"apples\" });\n```\n\n### `Current()` and `AllCurrent()`\n\nAfter `initReactGenie()`, ReactGenie injects:\n\n- `Current()`: the single visible object the user is most likely referring to\n- `AllCurrent()`: all visible objects of that class, or the nearest matches to multiple taps\n\nThese helpers are driven by visible registered interfaces, so they only work when the corresponding UI is wrapped with `GenieClassInterface(...)`.\n\n### `GenieClassInterface(...)`\n\nWrap any component that should be:\n\n- targetable by voice results\n- visible to `Current()` / `AllCurrent()`\n- eligible for result-driven navigation\n\n## `ModalityProvider`\n\n`ModalityProvider` is the main runtime entry point. It creates the shared interpreter, merges examples, listens for speech, parses commands, executes DSL, emits user-facing responses, and routes displayable results into registered views.\n\nKey props in the current implementation:\n\n- `examples`: extra prompt examples to merge with class-level `static Examples`\n- `clientSecret`: required credential or client token used by parser / speech providers\n- `apiBaseUrl`: optional shared proxy base URL\n- `parserConfig`: ReactGenieDSL parser configuration\n- `speechConfig`: speech runtime configuration\n- `speechLanguage`: recognition language tag\n- `displayTranscript`: show transcript text in the default voice UI\n- `extraPrompt`: append extra instructions to the parser prompt\n- `VoiceUIComponent`: replace the default `VoiceRecognitionBar`\n- `showFloatingMicButton`: show or hide the default floating mic button\n- `voicePlaceholder`: custom placeholder text for the default voice UI\n- `loggerConfig`: override runtime logging configuration\n- `langsmithConfig`: optional monitor configuration object with `apiKey`, `project`, and `endpoint`\n\nIf you are migrating from older examples, note that the current prop name is `clientSecret`, not `codexApiKey`.\n\n## Speech Recognition\n\nReactGenie ships a unified speech layer and individual adapters.\n\n### Supported speech paths\n\n| Path | Runtime | Export | Notes |\n| --- | --- | --- | --- |\n| Groq web transcription | Web | `GroqSpeechRecognizer` | Default provider path on web when configured. |\n| Groq native transcription | iOS / Android | selected through `UnifiedSpeechRecognizer` | Requires optional `expo-audio` and `expo-file-system`. |\n| OpenAI realtime transcription | Web | `OpenAISpeechRecognizer` | WebRTC-based realtime transcription. |\n| OpenAI realtime transcription | iOS / Android | selected through `UnifiedSpeechRecognizer` | Requires optional `react-native-webrtc`. |\n| Browser Web Speech fallback | Web | `SpeechRecognizer` | Used as a Groq fallback when enabled. |\n| Local MLX Whisper | Web | `MLXSpeechRecognizer` | Useful for local speech pipelines. |\n\n### Unified speech helpers\n\nThe main speech exports are:\n\n- `UnifiedSpeechRecognizer`\n- `getSpeechRecognitionConfig()`\n- `selectSpeechRecognitionMethod()`\n- `getSpeechRecognitionStatus()`\n- `useSpeechRecognition()`\n- `VoiceRecognitionBar`\n\n### `SpeechRecognitionConfig`\n\nThe current config shape is:\n\n```ts\ntype SpeechRecognitionConfig = {\n  provider?: \"groq\" | \"openai\";\n  fallbackToWebSpeech?: boolean;\n  groq?: {\n    enabled?: boolean;\n    apiKey?: string;\n    apiBaseUrl?: string;\n    transcriptionEndpoint?: string;\n    stream?: boolean;\n  };\n  openai?: {\n    proxyBaseUrl?: string;\n    transcriptionSessionEndpoint?: string;\n    translationEndpoint?: string;\n    realtimeWebRtcUrl?: string;\n    realtimeModel?: \"gpt-4o-transcribe\" | \"gpt-4o-mini-transcribe\";\n    translationModel?: string;\n    vadEnabled?: boolean;\n    autoStopOnVadSilence?: boolean;\n    vadThreshold?: number;\n    vadPrefixPaddingMs?: number;\n    vadSilenceDurationMs?: number;\n    vadIdleTimeoutMs?: number;\n    prewarmOnMount?: boolean;\n  };\n  localModel?: {\n    enabledOnWeb?: boolean;\n    baseUrl?: string;\n    mode?: \"oneshot\" | \"sse\" | \"realtime\";\n    model?: string;\n  };\n};\n```\n\nDefaults in the current implementation include:\n\n- speech provider defaults to `groq`\n- Groq defaults to streaming mode\n- Groq defaults to `fallbackToWebSpeech: true`\n- OpenAI defaults to `realtimeModel: \"gpt-4o-transcribe\"`\n- OpenAI defaults to `prewarmOnMount: true`\n- local MLX defaults to disabled on web unless explicitly enabled\n\n## Routing and Result Display\n\nReactGenie can turn displayable execution results into navigation events when the target object type has a registered interface.\n\nExpo Router support is available through:\n\n- `useExpoRouterAdapter()`\n- `withExpoRouterAdapter()`\n- `useRegisterGenieRoute()`\n- `registerGenieRoute()`\n- `isExpoRouterAvailable()`\n- `getRegisteredRoutes()`\n- `getRouteMap()`\n\nExample:\n\n```tsx\nimport { useRegisterGenieRoute } from \"@omkarfork/reactgenie-lib\";\n\nexport default function CounterRoute() {\n  useRegisterGenieRoute(\"CounterView\");\n  return <CounterCard name=\"apples\" />;\n}\n```\n\nNotes:\n\n- the route key must match the wrapped component function name, not necessarily the exported variable name\n- duplicate route registration for the same view class and different paths throws\n- dynamic route params are filtered so Genie metadata does not become arbitrary query params\n- result-window and query-intent metadata are stored in shared state for downstream reconstruction\n\n## Public API At a Glance\n\n### Runtime and store\n\n- `ModalityProvider`\n- `GenieInterpreter`\n- `initReactGenie`\n- `useGenieSelector`\n- `useGenieCodeSelector`\n- `resetGenieNavigation`\n- `genieDispatch`\n- `sharedStore`\n- `sharedState`\n\n### Genie model and decorators\n\n- `GenieClass`\n- `GenieClassInterface`\n- `GenieFunction`\n- `GenieProperty`\n- `GenieKey`\n- `DataClass`\n- `HelperClass`\n- `AllGenieObjects`\n- `ClassDescriptor`\n- `FieldDescriptor`\n- `FuncDescriptor`\n- `ParamDescriptor`\n- `int`\n- `float`\n- `DateTime`\n- `TimeDelta`\n\n### Voice and speech\n\n- `useSpeechRecognition`\n- `SpeechState`\n- `VoiceRecognitionBar`\n- `SpeechRecognizer`\n- `GroqSpeechRecognizer`\n- `OpenAISpeechRecognizer`\n- `MLXSpeechRecognizer`\n- `UnifiedSpeechRecognizer`\n- `isGroqSpeechAvailable`\n- `getGroqSpeechCapabilities`\n- `isOpenAISpeechAvailable`\n- `getOpenAISpeechCapabilities`\n- `getSpeechRecognitionConfig`\n- `selectSpeechRecognitionMethod`\n- `getSpeechRecognitionStatus`\n- `streamGroqTranscription`\n- `mergeTranscriptParts`\n- `AudioVisualizer`\n- `AudioLevelIndicator`\n\n### Routing and platform support\n\n- `useExpoRouterAdapter`\n- `withExpoRouterAdapter`\n- `useRegisterGenieRoute`\n- `registerGenieRoute`\n- `isExpoRouterAvailable`\n- `getRegisteredRoutes`\n- `getRouteMap`\n- platform-aware exports from `./platform`, including overlay, button, transcript, loading, safe-container, event, and type helpers\n\n### Diagnostics and errors\n\n- `configureLogger`\n- `setLogLevel`\n- `logger`\n- `setLoggerTelemetryBridge`\n- `setVoicePipelineTelemetryBridge`\n- `getVoicePipelineTelemetryBridge`\n- `GenieUserFacingError`\n- `isGenieUserFacingError`\n\n### Types and compatibility exports\n\n- `ReactGenieState`\n- `NavigatorState`\n- `QueryIntent`\n- `QueryIntentOperation`\n- `ResultWindowEntry`\n- `SpeechRecognitionState`\n- `SpeechRecognitionControls`\n- `UseSpeechRecognitionReturn`\n- `VoiceRecognitionBarProps`\n- `SpeechRecognitionConfig`\n- `UnifiedSpeechRecognizerProps`\n- `GroqConfigProps`\n- `OpenAIConfigProps`\n- `LocalModelConfigProps`\n- `LoggerRuntimeConfig`\n- `LogLevel`\n- `LoggerTelemetryBridge`\n- `VoicePipelineContext`\n- `VoicePipelineHandle`\n- `VoicePipelineOutcome`\n- `VoicePipelineStage`\n- `VoicePipelineStageHandle`\n- `VoicePipelineStageStatus`\n- `VoicePipelineTelemetryBridge`\n- `RouteRegistrationInfo`\n- `NativeSpeechRecognizerProps` and `OpenAINativeSpeechRecognizerProps` as type-only exports\n- `ReactFromModule`\n- `ReactReduxFromModule`\n\n## Custom Voice UI\n\nIf you do not want the default floating mic and voice bar, you can:\n\n- pass `showFloatingMicButton={false}`\n- supply your own `VoiceUIComponent`\n- build a fully custom interface with `useSpeechRecognition()`\n\nThe default UI components already understand transcript display, listening state, processing state, and waveform preview.\n\n## Logging and Telemetry\n\nReactGenie includes runtime logging and voice-pipeline instrumentation hooks:\n\n- `configureLogger(...)` to enable or tune runtime sinks\n- `setLogLevel(...)` for environment-specific noise control\n- `setLoggerTelemetryBridge(...)` to forward logger events\n- `setVoicePipelineTelemetryBridge(...)` to observe mic / parse / execute pipeline stages\n\nThese hooks are useful when you want app-level observability without forking the runtime.\n\n## CLI Utilities\n\nThe published package exposes four binaries:\n\n- `get-prompt`\n- `dry-run`\n- `set-script`\n- `parse`\n\nThese are oriented toward local prompt-generation and parser experiments around Genie test harnesses.\n\n## Common Notes\n\n- Create Genie objects with `CreateObject(...)`, not `new`.\n- Import all Genie classes and registered interfaces before calling `initReactGenie()`.\n- Wrap visible targetable components with `GenieClassInterface(...)`; otherwise `Current()` / `AllCurrent()` cannot resolve them.\n- Register routes when using Expo Router if you expect displayable results to navigate.\n- If native speech does not work, check whether the corresponding optional peer dependencies are installed for your selected provider path.\n\n## License\n\nApache-2.0\n\nThis package is a thesis-project fork maintained by [Omkar Mirgal](https://github.com/OmkarMirgal).\nBased on the original ReactGenie project by StanfordHCI.\nOriginal upstream attribution includes [Jackie Yang](https://github.com/valkjsaaa).\nSee the LICENSE file for the full license text.\n","readmeFilename":"README.md"}