{"_id":"@athena-tracker/tracker","_rev":"7-a73b1c9305e30e230f0bfb6cda947bf5","name":"@athena-tracker/tracker","dist-tags":{"latest":"1.3.1"},"versions":{"1.0.0":{"name":"@athena-tracker/tracker","version":"1.0.0","keywords":["analytics","behavioral","ai","ml","react-native","web","onnx","edge-ai","athena"],"author":{"name":"Pascal Team"},"license":"MIT","_id":"@athena-tracker/tracker@1.0.0","maintainers":[{"name":"athena-rubaiyat","email":"r+2@markopolo.ai"}],"homepage":"https://github.com/RubaiyatF/Pascal#readme","bugs":{"url":"https://github.com/RubaiyatF/Pascal/issues"},"dist":{"shasum":"c0a09db09ddb53d2f72b6704317b848fac96d3d3","tarball":"https://registry.npmjs.org/@athena-tracker/tracker/-/tracker-1.0.0.tgz","fileCount":22,"integrity":"sha512-PZ3vmUYTsBXuNb143U7pyR/4wMA3bdK2wxBQyuMcAYqZNdWHVziFc6fz1RKOdBT4BL+6ufHlAcy5aIEfevEy8w==","signatures":[{"sig":"MEUCIAxAVmvgAZ2xBnL8QDKrwvYtaUEyyd5i85Q+iUTjuW0mAiEA9Sl0xg22YjizvYCPcxSe2iUUSFudpYMuXq70e7RP7eQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":528551},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","engines":{"node":">=16.0.0"},"gitHead":"9d1fdfa7361ff35a482f75d375080c1450dfaace","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest --passWithNoTests","build":"rollup -c","test:watch":"jest --watch","build:types":"tsc --declaration --emitDeclarationOnly --outDir dist","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"athena-rubaiyat","email":"r+2@markopolo.ai"},"repository":{"url":"git+https://github.com/RubaiyatF/Pascal.git","type":"git","directory":"tracker/packages/athena-tracker"},"_npmVersion":"10.9.2","description":"Behavioral analytics tracker with edge AI for React Native and Web","directories":{},"_nodeVersion":"22.14.0","dependencies":{"tslib":"^2.8.1","@types/react-native":"^0.72.0"},"react-native":"dist/index.js","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.54.0","rollup":"^4.5.0","ts-jest":"^29.1.1","typescript":"^5.3.2","@babel/core":"^7.23.0","@types/jest":"^29.5.8","@babel/preset-env":"^7.23.0","@rollup/plugin-babel":"^6.0.4","@rollup/plugin-commonjs":"^25.0.7","@babel/preset-typescript":"^7.23.0","@rollup/plugin-typescript":"^11.1.5","@typescript-eslint/parser":"^6.11.0","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"^6.11.0"},"peerDependencies":{"react-native":">=0.70.0"},"peerDependenciesMeta":{"react-native":{"optional":true},"onnxruntime-react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/tracker_1.0.0_1771999362576_0.820401405659023","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@athena-tracker/tracker","version":"1.0.1","keywords":["analytics","tracking","athena","sdk"],"author":{"name":"Pascal Analytics"},"license":"MIT","_id":"@athena-tracker/tracker@1.0.1","maintainers":[{"name":"athena-rubaiyat","email":"r+2@markopolo.ai"}],"dist":{"shasum":"5df62312ce8b8c97386a78ea6c9ee21759bd784c","tarball":"https://registry.npmjs.org/@athena-tracker/tracker/-/tracker-1.0.1.tgz","fileCount":8,"integrity":"sha512-cuWR9Cv1F2GTwuRkNZugP3QDg2wB8/IQs47SbVVEGbQD4usi6019BU0o3v9Gk6SLV1Nh6o9rgybDQ+UFLX0XlQ==","signatures":[{"sig":"MEUCIQDuHt96nAA5Fhgo7KPjhcDCs4/hox3e/Ivqm8y2oVwWmQIgOpwE6hnfgtV1s6Pv1KftR99aW3DEbP95DznWxaEKsD4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38749},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"9080f77e9bcc114f8fb1b927f7901610c201fa85","scripts":{"dev":"rollup -c -w","test":"jest","build":"rollup -c","prepublishOnly":"npm run build"},"_npmUser":{"name":"athena-rubaiyat","email":"r+2@markopolo.ai"},"_npmVersion":"10.9.2","description":"ATHENA Analytics tracker SDK wrapper","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"tslib":"^2.6.2","rollup":"^4.9.6","typescript":"^5.3.3","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.6","@rollup/plugin-node-resolve":"^15.2.3"},"_npmOperationalInternal":{"tmp":"tmp/tracker_1.0.1_1772131819248_0.12835593765446163","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@athena-tracker/tracker","version":"1.0.2","keywords":["analytics","tracking","athena","sdk"],"author":{"name":"Pascal Analytics"},"license":"MIT","_id":"@athena-tracker/tracker@1.0.2","maintainers":[{"name":"athena-rubaiyat","email":"r+2@markopolo.ai"}],"dist":{"shasum":"a1c000236ae86b0948eaf91a9614534730d084f3","tarball":"https://registry.npmjs.org/@athena-tracker/tracker/-/tracker-1.0.2.tgz","fileCount":8,"integrity":"sha512-8Gs/6nek4RmJw608hbRHH7Ml4+nI1tD/9YVQ+vP6VBCIVaeHSTQrEHL+gKnnoksad9UnMRAVfOXkLuU/iijKzg==","signatures":[{"sig":"MEQCIAaaEZrARogPhEQgpDXlLWkKY9AfRzC37yMxlDR424PdAiAajVHVyhS/zwhl5XZqKkxqwvdY0HpyA6sO/KFuhCMRwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38749},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"9080f77e9bcc114f8fb1b927f7901610c201fa85","scripts":{"dev":"rollup -c -w","test":"jest","build":"rollup -c","prepublishOnly":"npm run build"},"_npmUser":{"name":"athena-rubaiyat","email":"r+2@markopolo.ai"},"_npmVersion":"10.9.2","description":"ATHENA Analytics tracker SDK wrapper","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"tslib":"^2.6.2","rollup":"^4.9.6","typescript":"^5.3.3","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.6","@rollup/plugin-node-resolve":"^15.2.3"},"_npmOperationalInternal":{"tmp":"tmp/tracker_1.0.2_1772176487674_0.9415211996263213","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@athena-tracker/tracker","version":"1.2.0","keywords":["analytics","behavioral","ai","ml","react-native","web","onnx","edge-ai","athena"],"author":{"name":"Pascal Team"},"license":"MIT","_id":"@athena-tracker/tracker@1.2.0","maintainers":[{"name":"athena-rubaiyat","email":"r+2@markopolo.ai"}],"homepage":"https://github.com/RubaiyatF/Pascal#readme","bugs":{"url":"https://github.com/RubaiyatF/Pascal/issues"},"dist":{"shasum":"0a093e724ac87b862024db5219b2e7e49d8d67fa","tarball":"https://registry.npmjs.org/@athena-tracker/tracker/-/tracker-1.2.0.tgz","fileCount":24,"integrity":"sha512-fLRCgKbThmAt6fc65q5Xxjzux/iEem6Rd30D8l95zcZNNZ/X9KYM7pm4obay0hg+1WdI2ysCbilLERMrlPpKWQ==","signatures":[{"sig":"MEYCIQCiqZruOMIPFGyVwezfe4PJIyWIBaerNq5WJlFIydxlNAIhANNN0w4WqUfWQUwnyXsY86acVgEmRmJykm3JJVOH7TCa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":192341},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","engines":{"node":">=16.0.0"},"gitHead":"9080f77e9bcc114f8fb1b927f7901610c201fa85","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest --passWithNoTests","build":"rollup -c","test:watch":"jest --watch","build:types":"tsc --declaration --emitDeclarationOnly --outDir dist","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"athena-rubaiyat","email":"r+2@markopolo.ai"},"repository":{"url":"git+https://github.com/RubaiyatF/Pascal.git","type":"git","directory":"tracker/packages/athena-tracker"},"_npmVersion":"10.9.2","description":"Behavioral analytics and ML prediction tracker for React Native and Web. Captures 90+ event types, predicts purchase intent, and classifies user archetypes with server-side or on-device inference.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"tslib":"^2.8.1"},"react-native":"dist/index.js","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.54.0","rollup":"^4.5.0","ts-jest":"^29.1.1","typescript":"^5.3.2","@babel/core":"^7.23.0","@types/jest":"^29.5.8","@types/react":"^19.0.0","@babel/preset-env":"^7.23.0","@types/react-native":"^0.72.0","@rollup/plugin-babel":"^6.0.4","@rollup/plugin-commonjs":"^25.0.7","@babel/preset-typescript":"^7.23.0","@rollup/plugin-typescript":"^11.1.5","@typescript-eslint/parser":"^6.11.0","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"^6.11.0"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.70.0"},"peerDependenciesMeta":{"react-native":{"optional":true},"onnxruntime-react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/tracker_1.2.0_1772222277368_0.7339450441830311","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@athena-tracker/tracker","version":"1.2.1","keywords":["analytics","behavioral","ai","ml","react-native","web","onnx","edge-ai","athena"],"author":{"name":"Pascal Team"},"license":"MIT","_id":"@athena-tracker/tracker@1.2.1","maintainers":[{"name":"athena-rubaiyat","email":"r+2@markopolo.ai"}],"homepage":"https://github.com/RubaiyatF/Pascal#readme","bugs":{"url":"https://github.com/RubaiyatF/Pascal/issues"},"dist":{"shasum":"bd49fc11004595358f30a275d4e88d1d04e619d2","tarball":"https://registry.npmjs.org/@athena-tracker/tracker/-/tracker-1.2.1.tgz","fileCount":24,"integrity":"sha512-tdSsCaddOFWb+P3FGN2s0sPSkHl5nz/cSJ4amt7oFkuH3c7qzfs5bdrP+o8e+T+08zxH3Hgj5WY9hH5/2XoTrQ==","signatures":[{"sig":"MEUCIFFlR71yUYvqPg0ehndEewIcu0AmWqDcjwrOuyQVyw2nAiEA9buF1QdR6JqL+xUrcUmAGJy0bqPCx3fyGMtZoO2gwHY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":215323},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","engines":{"node":">=16.0.0"},"gitHead":"9080f77e9bcc114f8fb1b927f7901610c201fa85","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest --passWithNoTests","build":"rollup -c","test:watch":"jest --watch","build:types":"tsc --declaration --emitDeclarationOnly --outDir dist","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"athena-rubaiyat","email":"r+2@markopolo.ai"},"repository":{"url":"git+https://github.com/RubaiyatF/Pascal.git","type":"git","directory":"tracker/packages/athena-tracker"},"_npmVersion":"10.9.2","description":"Behavioral analytics and ML prediction tracker for React Native and Web. Captures 90+ event types, predicts purchase intent, and classifies user archetypes with server-side or on-device inference.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"tslib":"^2.8.1"},"react-native":"dist/index.js","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.54.0","rollup":"^4.5.0","ts-jest":"^29.1.1","typescript":"^5.3.2","@babel/core":"^7.23.0","@types/jest":"^29.5.8","@types/react":"^19.0.0","@babel/preset-env":"^7.23.0","@types/react-native":"^0.72.0","@rollup/plugin-babel":"^6.0.4","@rollup/plugin-commonjs":"^25.0.7","@babel/preset-typescript":"^7.23.0","@rollup/plugin-typescript":"^11.1.5","@typescript-eslint/parser":"^6.11.0","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"^6.11.0"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.70.0"},"peerDependenciesMeta":{"expo-crypto":{"optional":true},"react-native":{"optional":true},"onnxruntime-react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/tracker_1.2.1_1772226685848_0.6320573558680767","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@athena-tracker/tracker","version":"1.3.0","keywords":["analytics","behavioral","ai","ml","react-native","web","onnx","edge-ai","athena"],"author":{"name":"Pascal Team"},"license":"MIT","_id":"@athena-tracker/tracker@1.3.0","maintainers":[{"name":"athena-rubaiyat","email":"r+2@markopolo.ai"}],"homepage":"https://github.com/RubaiyatF/Pascal#readme","bugs":{"url":"https://github.com/RubaiyatF/Pascal/issues"},"dist":{"shasum":"3cd0a298a56df63a00be33dc03c85e9012b343cb","tarball":"https://registry.npmjs.org/@athena-tracker/tracker/-/tracker-1.3.0.tgz","fileCount":26,"integrity":"sha512-tXh2ZQPJgjGmI9q6V8Xq0EWJlV7XBaMzrhD4lX5DwLGW0TCtKW/Az83FMWGToHsnBcAaKILWonlel/y2FeuJ2w==","signatures":[{"sig":"MEYCIQCuK6LlsqSvHTHaYmK2x6Wh08CQrQxYJqp8qYErPt2PeQIhAL0J6iOl/6zxFhOwEbNHCXKG6ZyXyJoBi6VPVO9/1RX1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":243089},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","engines":{"node":">=16.0.0"},"gitHead":"9080f77e9bcc114f8fb1b927f7901610c201fa85","scripts":{"lint":"eslint src --ext .ts,.tsx","test":"jest --passWithNoTests","build":"rollup -c","test:watch":"jest --watch","build:types":"tsc --declaration --emitDeclarationOnly --outDir dist","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"athena-rubaiyat","email":"r+2@markopolo.ai"},"repository":{"url":"git+https://github.com/RubaiyatF/Pascal.git","type":"git","directory":"tracker/packages/athena-tracker"},"_npmVersion":"10.9.2","description":"Behavioral analytics and ML prediction tracker for React Native and Web. Captures 90+ event types, predicts purchase intent, and classifies user archetypes with server-side or on-device inference.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"tslib":"^2.8.1"},"react-native":"dist/index.js","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.54.0","rollup":"^4.5.0","ts-jest":"^29.1.1","typescript":"^5.3.2","@babel/core":"^7.23.0","@types/jest":"^29.5.8","@types/react":"^19.0.0","@babel/preset-env":"^7.23.0","@types/react-native":"^0.72.0","@rollup/plugin-babel":"^6.0.4","@rollup/plugin-commonjs":"^25.0.7","@babel/preset-typescript":"^7.23.0","@rollup/plugin-typescript":"^11.1.5","@typescript-eslint/parser":"^6.11.0","@rollup/plugin-node-resolve":"^15.2.3","@typescript-eslint/eslint-plugin":"^6.11.0"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.70.0"},"peerDependenciesMeta":{"expo-crypto":{"optional":true},"react-native":{"optional":true},"onnxruntime-web":{"optional":true},"onnxruntime-react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/tracker_1.3.0_1772227488006_0.7001560005486636","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@athena-tracker/tracker","version":"1.3.1","description":"Behavioral analytics and ML prediction tracker for React Native and Web. Captures 90+ event types, predicts purchase intent, and classifies user archetypes with server-side or on-device inference.","main":"dist/index.js","module":"dist/index.esm.js","types":"dist/index.d.ts","react-native":"dist/index.js","scripts":{"build":"rollup -c","build:types":"tsc --declaration --emitDeclarationOnly --outDir dist","test":"jest --passWithNoTests","test:watch":"jest --watch","lint":"eslint src --ext .ts,.tsx","prepublishOnly":"npm run build && npm test"},"keywords":["analytics","behavioral","ai","ml","react-native","web","onnx","edge-ai","athena"],"author":{"name":"Pascal Team"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/RubaiyatF/Pascal.git","directory":"tracker/packages/athena-tracker"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.70.0"},"peerDependenciesMeta":{"react-native":{"optional":true},"onnxruntime-react-native":{"optional":true},"onnxruntime-web":{"optional":true},"expo-crypto":{"optional":true}},"dependencies":{"tslib":"^2.8.1"},"devDependencies":{"@babel/core":"^7.23.0","@babel/preset-env":"^7.23.0","@babel/preset-typescript":"^7.23.0","@rollup/plugin-babel":"^6.0.4","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-node-resolve":"^15.2.3","@rollup/plugin-typescript":"^11.1.5","@types/jest":"^29.5.8","@types/react":"^19.0.0","@types/react-native":"^0.72.0","@typescript-eslint/eslint-plugin":"^6.11.0","@typescript-eslint/parser":"^6.11.0","eslint":"^8.54.0","jest":"^29.7.0","rollup":"^4.5.0","ts-jest":"^29.1.1","typescript":"^5.3.2"},"engines":{"node":">=16.0.0"},"_id":"@athena-tracker/tracker@1.3.1","gitHead":"9080f77e9bcc114f8fb1b927f7901610c201fa85","bugs":{"url":"https://github.com/RubaiyatF/Pascal/issues"},"homepage":"https://github.com/RubaiyatF/Pascal#readme","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-kwDiBqM1L/oc9wJdl1vkOmDmgekFttCxxKL/EbjlMGUHb8UMzyeHB0Pgrwc/pM3XQIwMazelcG5B8uPy0xUt/g==","shasum":"8c476fc1e9c6c6df2bd34b999480c092c4d0a47a","tarball":"https://registry.npmjs.org/@athena-tracker/tracker/-/tracker-1.3.1.tgz","fileCount":26,"unpackedSize":243091,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAIuSMLXbCiQpe+X7EEFAdSGy2BiNqCf5lDF7UGLrSkwAiEAiOVOdCPr9CTTVUv7Gve8wX1QERB/a4iv90oigmqPCuw="}]},"_npmUser":{"name":"athena-rubaiyat","email":"r+2@markopolo.ai"},"directories":{},"maintainers":[{"name":"athena-rubaiyat","email":"r+2@markopolo.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tracker_1.3.1_1772440789688_0.7791660482355067"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-25T06:02:42.482Z","modified":"2026-03-02T08:39:49.980Z","1.0.0":"2026-02-25T06:02:42.722Z","1.0.1":"2026-02-26T18:50:19.431Z","1.0.2":"2026-02-27T07:14:47.838Z","1.2.0":"2026-02-27T19:57:57.528Z","1.2.1":"2026-02-27T21:11:26.081Z","1.3.0":"2026-02-27T21:24:48.158Z","1.3.1":"2026-03-02T08:39:49.860Z"},"bugs":{"url":"https://github.com/RubaiyatF/Pascal/issues"},"author":{"name":"Pascal Team"},"license":"MIT","homepage":"https://github.com/RubaiyatF/Pascal#readme","keywords":["analytics","behavioral","ai","ml","react-native","web","onnx","edge-ai","athena"],"repository":{"type":"git","url":"git+https://github.com/RubaiyatF/Pascal.git","directory":"tracker/packages/athena-tracker"},"description":"Behavioral analytics and ML prediction tracker for React Native and Web. Captures 90+ event types, predicts purchase intent, and classifies user archetypes with server-side or on-device inference.","maintainers":[{"name":"athena-rubaiyat","email":"r+2@markopolo.ai"}],"readme":"# @athena-tracker/tracker\r\n\r\n> Behavioral analytics tracker with edge AI for React Native and Web\r\n\r\n[![npm version](https://img.shields.io/npm/v/@athena-tracker/tracker.svg)](https://www.npmjs.com/package/@athena-tracker/tracker)\r\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\r\n\r\n## Features\r\n\r\n- ✅ **90+ Behavioral Event Types** - Auto-captured touch, navigation, lifecycle events\r\n- ✅ **Dual-Mode ML Inference** - On-device (ONNX) or server-side (auto-fallback)\r\n- ✅ **Purchase Intent Prediction** - Real-time predictions for e-commerce (0.0-1.0)\r\n- ✅ **5 User Archetypes** - Fast Mover, On Track, Slow Adopter, At Risk, Different Path\r\n- ✅ **Cross-Platform** - Works on Web, iOS, Android (React Native)\r\n- ✅ **Privacy-First** - Optional on-device inference (data never leaves device)\r\n- ✅ **Zero Config** - Smart auto-detection of best inference mode\r\n- ✅ **TypeScript Support** - Full type definitions included\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @athena-tracker/tracker\r\n```\r\n\r\n### For React Native with On-Device Inference\r\n\r\n```bash\r\nnpm install @athena-tracker/tracker onnxruntime-react-native\r\n```\r\n\r\n### For OTA Updates (Server-Side Inference)\r\n\r\n```bash\r\nnpm install @athena-tracker/tracker\r\n```\r\n\r\n(No `onnxruntime-react-native` required - will automatically fall back to server-side inference)\r\n\r\n---\r\n\r\n## ⚠️ Getting Credentials (Required Before Installation)\r\n\r\n**Before you can use this package, you need an `appToken` from Pascal.**\r\n\r\n### For B2B Platform Partners (App Generators like Anything.com, Bubble.io)\r\n\r\nIf you're building a platform that generates apps for customers:\r\n\r\n1. **Contact Markopolo** to get partner credentials:\r\n   - Email: support@markopolo.ai\r\n   - Request: ATHENA B2B partner workspace\r\n\r\n2. **Receive credentials**:\r\n   - Workspace ID: `ws_your_company_com`\r\n   - JWT Token: `eyJhbGc...` (perpetual token)\r\n\r\n3. **Provision apps via API**:\r\n\r\n```javascript\r\n// Your backend code\r\nconst axios = require('axios');\r\n\r\nasync function provisionApp(appDetails) {\r\n  const response = await axios.post(\r\n    'https://tracker.pascal.cx/api/athena/provision',\r\n    {\r\n      workspaceId: process.env.ATHENA_WORKSPACE_ID,\r\n      appId: appDetails.id,\r\n      appName: appDetails.name,\r\n      platform: ['web', 'ios', 'android']\r\n    },\r\n    {\r\n      headers: {\r\n        'Authorization': `Bearer ${process.env.ATHENA_WORKSPACE_JWT}`,\r\n        'Content-Type': 'application/json'\r\n      }\r\n    }\r\n  );\r\n\r\n  const { appToken } = response.data;\r\n\r\n  // Store appToken in your database\r\n  await db.apps.update({\r\n    id: appDetails.id,\r\n    athena_app_token: appToken\r\n  });\r\n\r\n  return appToken;\r\n}\r\n```\r\n\r\n4. **Inject token into generated apps** (see Quick Start below)\r\n\r\n### For Agencies/Merchants (Website Integration)\r\n\r\nIf you're integrating tracking for merchant websites:\r\n\r\n1. **Contact Markopolo** for a partner API key:\r\n   - Email: support@markopolo.ai\r\n   - Request: Partner merchant provisioning\r\n\r\n2. **Provision merchants via API**:\r\n\r\n```javascript\r\nconst response = await axios.post(\r\n  'https://tracker.pascal.cx/api/partners/YOUR_PARTNER_NAME/merchants',\r\n  {\r\n    merchant_id: 'merchant_001',\r\n    merchant_email: 'owner@merchant.com',\r\n    webhook_url: 'https://your-platform.com/webhooks/pascal'\r\n  },\r\n  {\r\n    headers: {\r\n      'Authorization': `Bearer ${process.env.PASCAL_PARTNER_API_KEY}`,\r\n      'Content-Type': 'application/json'\r\n    }\r\n  }\r\n);\r\n\r\nconst { api_key } = response.data;  // This IS your appToken\r\n```\r\n\r\n### Testing with Demo Token\r\n\r\nFor testing purposes, you can use a demo token:\r\n\r\n```javascript\r\n// ⚠️ FOR TESTING ONLY - NOT FOR PRODUCTION\r\nAthenaTracker.init({\r\n  appToken: 'at_demo_test_mode_no_predictions',\r\n  debug: true\r\n});\r\n```\r\n\r\n**📖 Complete Guide**: See `PARTNER_INTEGRATION_GUIDE.md` for full details on both integration patterns.\r\n\r\n## Quick Start\r\n\r\n### React Native\r\n\r\n```typescript\r\nimport AthenaTracker from '@athena-tracker/tracker';\r\n\r\n// Initialize tracker\r\nAthenaTracker.init({\r\n  appToken: 'at_live_xxxxx',\r\n  inferenceMode: 'auto', // Auto-detects environment\r\n  webhook: {\r\n    url: 'https://your-backend.com/webhooks/athena',\r\n    enabled: true\r\n  }\r\n});\r\n```\r\n\r\n### Web\r\n\r\n```html\r\n<script src=\"https://tracker.pascal.cx/v1/tracker.min.js\"></script>\r\n<script>\r\n  const tracker = new PascalTracker({\r\n    projectId: 'your-app-token',\r\n    edgeAI: {\r\n      enabled: true,\r\n      modelPath: 'https://tracker.pascal.cx/models/base_model_int8.onnx'\r\n    }\r\n  });\r\n</script>\r\n```\r\n\r\n## Configuration\r\n\r\n### AthenaConfig\r\n\r\n```typescript\r\ninterface AthenaConfig {\r\n  appToken: string;              // Required: App token from ATHENA provisioning\r\n  apiUrl?: string;               // Optional: API base URL (default: https://tracker.pascal.cx)\r\n  inferenceMode?: 'auto' | 'on-device' | 'server'; // Optional: Inference mode\r\n  modelPath?: string;            // Optional: ONNX model path (for on-device)\r\n  serverInferenceUrl?: string;   // Optional: Server inference endpoint\r\n  webhook?: WebhookConfig;       // Optional: Webhook configuration\r\n  batching?: BatchingConfig;     // Optional: Event batching\r\n  debug?: boolean;               // Optional: Debug mode\r\n}\r\n```\r\n\r\n### Inference Modes\r\n\r\n#### Auto Mode (Recommended)\r\n\r\nAutomatically detects whether `onnxruntime-react-native` is available:\r\n\r\n```typescript\r\nAthenaTracker.init({\r\n  appToken: 'at_live_xxxxx',\r\n  inferenceMode: 'auto' // Default\r\n});\r\n```\r\n\r\n#### On-Device Mode (Forced)\r\n\r\nForce on-device inference (requires `onnxruntime-react-native`):\r\n\r\n```typescript\r\nAthenaTracker.init({\r\n  appToken: 'at_live_xxxxx',\r\n  inferenceMode: 'on-device',\r\n  modelPath: '/path/to/model.onnx'\r\n});\r\n```\r\n\r\n#### Server Mode (Forced)\r\n\r\nForce server-side inference:\r\n\r\n```typescript\r\nAthenaTracker.init({\r\n  appToken: 'at_live_xxxxx',\r\n  inferenceMode: 'server',\r\n  // ⚠️ REQUIRED for predictions - this is a separate service from apiUrl\r\n  serverInferenceUrl: 'https://pascal-ml-api-cgn7rucynq-uc.a.run.app/v1/predict'\r\n});\r\n```\r\n\r\n**⚠️ CRITICAL**: The `serverInferenceUrl` parameter is **REQUIRED** for ML predictions. This is a **separate service** from `apiUrl`:\r\n- `apiUrl` (default: `https://tracker.pascal.cx`) - Handles event ingestion only\r\n- `serverInferenceUrl` - Handles ML inference and predictions (separate Cloud Run service)\r\n\r\nWithout `serverInferenceUrl`, predictions will fail with HTTP 404 errors. See troubleshooting below for details.\r\n\r\n## Webhook Integration\r\n\r\nReceive real-time predictions via webhooks:\r\n\r\n```typescript\r\nAthenaTracker.init({\r\n  appToken: 'at_live_xxxxx',\r\n  webhook: {\r\n    url: 'https://your-backend.com/webhooks/athena',\r\n    enabled: true,\r\n    retry: {\r\n      maxAttempts: 3,\r\n      backoffMs: 1000\r\n    }\r\n  }\r\n});\r\n```\r\n\r\n### Webhook Payload\r\n\r\n```json\r\n{\r\n  \"user_id\": \"user_abc\",\r\n  \"session_id\": \"sess_123\",\r\n  \"predicted_class\": \"engaged_explorer\",\r\n  \"confidence\": 0.85,\r\n  \"archetype\": \"on_track\",\r\n  \"purchase_intent\": 0.72,\r\n  \"cart_abandonment_risk\": 0.15,\r\n  \"recommended_action\": \"Show 10% discount offer\",\r\n  \"urgency\": \"high\",\r\n  \"trigger_reason\": \"High-value cart ($249), 80% scroll depth, 45s time-on-page\",\r\n  \"timestamp\": \"2026-02-24T12:34:56Z\"\r\n}\r\n```\r\n\r\n## User Archetypes\r\n\r\n| Archetype | Description | Similarity Score |\r\n|-----------|-------------|------------------|\r\n| **fast_mover** | High purchase intent, quick decision-maker | >85% |\r\n| **on_track** | Steady browsing, likely to convert | 60-85% |\r\n| **slow_adopter** | Needs guidance, price-sensitive | 40-60% |\r\n| **at_risk** | Low engagement, high abandonment risk | <40% |\r\n| **different_path** | Unconventional browsing pattern | Unique |\r\n\r\n## API Reference\r\n\r\n### AthenaTracker\r\n\r\n```typescript\r\nclass AthenaTracker {\r\n  static init(config: AthenaConfig): Promise<void>\r\n  static identify(userId: string, traits?: Record<string, any>): void\r\n  static track(eventType: string, properties?: Record<string, any>): void\r\n  static getInferenceMode(): 'on-device' | 'server' | null\r\n  static getSessionId(): string | null\r\n}\r\n```\r\n\r\n### Methods\r\n\r\n#### `init(config)`\r\n\r\nInitialize the tracker with configuration.\r\n\r\n```typescript\r\nawait AthenaTracker.init({\r\n  appToken: 'at_live_xxxxx'\r\n});\r\n```\r\n\r\n#### `identify(userId, traits?)`\r\n\r\nIdentify a user.\r\n\r\n```typescript\r\nAthenaTracker.identify('user_123', {\r\n  email: 'user@example.com',\r\n  name: 'John Doe'\r\n});\r\n```\r\n\r\n#### `track(eventType, properties?)`\r\n\r\nTrack a custom event.\r\n\r\n```typescript\r\nAthenaTracker.track('button_click', {\r\n  button_id: 'checkout',\r\n  page: '/cart'\r\n});\r\n```\r\n\r\n## React Native Components\r\n\r\n### AthenaOTAWrapper\r\n\r\nFor apps using Expo OTA updates, wrap your app with `AthenaOTAWrapper`:\r\n\r\n```tsx\r\nimport { AthenaOTAWrapper } from '@athena-tracker/tracker';\r\n\r\nexport default function App() {\r\n  return (\r\n    <AthenaOTAWrapper\r\n      loadingMessage=\"Loading...\"\r\n      updateMessage=\"Updating...\"\r\n    >\r\n      <YourApp />\r\n    </AthenaOTAWrapper>\r\n  );\r\n}\r\n```\r\n\r\n**What it does:**\r\n- Checks for OTA updates on app launch\r\n- Fetches and applies updates automatically\r\n- Forces immediate reload (<2 seconds)\r\n- Displays loading spinner during update\r\n\r\n**Props:**\r\n- `loadingMessage` (string, optional): Message during initial load (default: \"Loading...\")\r\n- `updateMessage` (string, optional): Message during update (default: \"Updating...\")\r\n\r\n---\r\n\r\n### ReactNativeEventCapture\r\n\r\nAdvanced event capture for custom use cases:\r\n\r\n```tsx\r\nimport { ReactNativeEventCapture } from '@athena-tracker/tracker';\r\n\r\nconst capture = new ReactNativeEventCapture({\r\n  captureTouch: true,\r\n  captureNavigation: true,\r\n  captureLifecycle: true,\r\n  captureNetworkErrors: true,\r\n  batchSize: 10,\r\n  batchIntervalMs: 10000\r\n});\r\n\r\n// Start capturing\r\ncapture.start();\r\n\r\n// Track screen view manually\r\ncapture.trackScreenView('ProductDetails', { productId: '123' });\r\n\r\n// Track custom event\r\ncapture.track('AddToCart', { productId: '123', price: 49.99 });\r\n\r\n// Stop capturing\r\ncapture.stop();\r\n```\r\n\r\n**Configuration:**\r\n- `captureTouch` (boolean): Capture touch events (Tap, Swipe, LongPress)\r\n- `captureNavigation` (boolean): Capture screen navigation\r\n- `captureLifecycle` (boolean): Capture app lifecycle (Open, Background, Foreground)\r\n- `captureNetworkErrors` (boolean): Capture failed network requests\r\n- `batchSize` (number): Events per batch (default: 10)\r\n- `batchIntervalMs` (number): Batch interval in milliseconds (default: 10000)\r\n\r\n**Captured Events:**\r\n- `AppOpen`, `AppForeground`, `AppBackground`, `AppInactive`\r\n- `Tap`, `Swipe`, `LongPress`\r\n- `ScreenView`\r\n- `NetworkError`\r\n\r\n## Performance\r\n\r\n- **Bundle size**: ~10MB (includes ONNX model for on-device mode)\r\n- **On-device inference latency**: <10ms P95\r\n- **Server-side inference latency**: <100ms P95\r\n- **Memory overhead**: <50MB\r\n- **Battery impact**: Negligible (<1%)\r\n\r\n## Troubleshooting\r\n\r\n### \"Server inference failed: 404 Not Found\" Error\r\n\r\n**Symptom**: Predictions fail with 404 errors in console logs.\r\n\r\n**Cause**: Missing or incorrect `serverInferenceUrl` configuration.\r\n\r\n**Solution**: Explicitly set the `serverInferenceUrl` parameter:\r\n\r\n```typescript\r\nAthenaTracker.init({\r\n  appToken: 'at_live_xxxxx',\r\n  apiUrl: 'https://tracker.pascal.cx', // Event ingestion\r\n  serverInferenceUrl: 'https://pascal-ml-api-cgn7rucynq-uc.a.run.app/v1/predict', // ML inference\r\n  inferenceMode: 'server'\r\n});\r\n```\r\n\r\n### Event Tracking Works But No Predictions\r\n\r\n**Cause**: Event tracking and ML predictions use separate endpoints.\r\n\r\n**Solution**: Verify `serverInferenceUrl` is set correctly. Test with:\r\n\r\n```bash\r\ncurl -X POST https://pascal-ml-api-cgn7rucynq-uc.a.run.app/v1/predict \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -d '{\"app_token\":\"your_token\",\"events\":[...]}'\r\n```\r\n\r\n## What's New in v1.1.0\r\n\r\n- ✅ **Updated ML inference endpoint** to latest production URL\r\n- ✅ **70+ event types supported** via EVENT_MAPPING (cart_viewed, coupon_applied, etc.)\r\n- ✅ **Enhanced documentation** with critical configuration requirements\r\n- ✅ **React Native integration validated** with production test app\r\n- ✅ **Improved error messages** for missing serverInferenceUrl\r\n\r\n## Browser Support\r\n\r\n- Chrome/Edge 90+\r\n- Safari 14+\r\n- Firefox 88+\r\n- React Native 0.70+\r\n\r\n## License\r\n\r\nMIT\r\n\r\n## Documentation\r\n\r\n- Full documentation: https://docs.athena.ai/tracker\r\n- Integration guide: See ATHENA_HANDOVER_DOCUMENTATION.md\r\n- API reference: https://tracker.pascal.cx/docs\r\n\r\n## Support\r\n\r\n- Issues: https://github.com/RubaiyatF/Pascal/issues\r\n- Email: support@pascal.cx\r\n- Slack: #athena-integration (for partners)\r\n","readmeFilename":"README.md"}