{"_id":"@divinci-ai/robot-avatar","_rev":"4-26743636c31fe4f5b8c3e48fd462e287","name":"@divinci-ai/robot-avatar","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"@divinci-ai/robot-avatar","version":"0.1.0","_id":"@divinci-ai/robot-avatar@0.1.0","maintainers":[{"name":"mike-divinci","email":"mike@divinci.ai"}],"dist":{"shasum":"66bc477f21019ae56af1414037c1262b29398f63","tarball":"https://registry.npmjs.org/@divinci-ai/robot-avatar/-/robot-avatar-0.1.0.tgz","fileCount":53,"integrity":"sha512-fpoOk82llXZvKXLnmV87e/X0Fy45Fqv2FlAlHxg/vcbKahCX2hUoh6Eh+9GdDly+mZ5p5Qz2pVk8AwM1gVeYUQ==","signatures":[{"sig":"MEQCIEKbf7U/KiX7cdNNLWz6ZEgPi5HK0EOubqzf66S2bJCRAiBpDCeZM7Ly4FQ4CqUF42DpJQLRmX6LZsdX1rHKTvWJmQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113681},"main":"dist/index.js","type":"module","_from":"file:divinci-ai-robot-avatar-0.1.0.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./scene":{"types":"./dist/scene/index.d.ts","default":"./dist/scene/index.js"}},"scripts":{"test":"vitest run --passWithNoTests","build":"tsc"},"_npmUser":{"name":"mike-divinci","email":"mike@divinci.ai"},"_resolved":"/Users/mikeumus/Documents/server/workspace/sdk/packages/robot-avatar/divinci-ai-robot-avatar-0.1.0.tgz","_integrity":"sha512-fpoOk82llXZvKXLnmV87e/X0Fy45Fqv2FlAlHxg/vcbKahCX2hUoh6Eh+9GdDly+mZ5p5Qz2pVk8AwM1gVeYUQ==","_npmVersion":"10.9.8","description":"The Divinci robot mascot — procedural react-three-fiber avatar shared by the SDK docs hero, the web app, the Divinci Agent panel, and the Chrome extension.","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.7","three":"^0.185.0","vitest":"^3.2.4","typescript":"^5.5.0","@types/react":"^19.2.17","@types/three":"^0.185.0","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.6.1"},"peerDependencies":{"react":">=18.3.0","three":">=0.169.0","@react-three/drei":">=9.114.0","@react-three/fiber":">=8.17.0"},"_npmOperationalInternal":{"tmp":"tmp/robot-avatar_0.1.0_1782972191814_0.9357846747918899","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@divinci-ai/robot-avatar","version":"0.1.1","_id":"@divinci-ai/robot-avatar@0.1.1","maintainers":[{"name":"mike-divinci","email":"mike@divinci.ai"}],"dist":{"shasum":"e5ebb0e14d7065125c6e14ae70b97934563b4e8a","tarball":"https://registry.npmjs.org/@divinci-ai/robot-avatar/-/robot-avatar-0.1.1.tgz","fileCount":53,"integrity":"sha512-GSWr8TOWi37bBOVc/uQ0sLP8eDg2NVlDo6PwBDnpnVQ2dAWRhpe3ULG8SqvNOSkRrQMEh2k0ZioOgJOinEi2MQ==","signatures":[{"sig":"MEYCIQC9vqSZ9QUXEE2OXVfDC6YexfbsRUbIPKdkHNc2uVgTywIhAI7NZcG966tNDhEJJh06GMVj7brJwrVRDSYPO8R4YD7L","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":114675},"main":"dist/index.js","type":"module","_from":"file:divinci-ai-robot-avatar-0.1.1.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./scene":{"types":"./dist/scene/index.d.ts","default":"./dist/scene/index.js"}},"scripts":{"test":"vitest run --passWithNoTests","build":"tsc"},"_npmUser":{"name":"mike-divinci","email":"mike@divinci.ai"},"_resolved":"/Users/michael/.divinci-worktrees/sdk-publish/workspace/sdk/packages/robot-avatar/divinci-ai-robot-avatar-0.1.1.tgz","_integrity":"sha512-GSWr8TOWi37bBOVc/uQ0sLP8eDg2NVlDo6PwBDnpnVQ2dAWRhpe3ULG8SqvNOSkRrQMEh2k0ZioOgJOinEi2MQ==","_npmVersion":"12.0.2","description":"The Divinci robot mascot — procedural react-three-fiber avatar shared by the SDK docs hero, the web app, the Divinci Agent panel, and the Chrome extension.","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.7","three":"^0.185.0","vitest":"^3.2.4","typescript":"^5.5.0","@types/react":"^19.2.17","@types/three":"^0.185.0","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.6.1"},"peerDependencies":{"react":">=18.3.0","three":">=0.169.0","@react-three/drei":">=9.114.0","@react-three/fiber":">=8.17.0"},"_npmOperationalInternal":{"tmp":"tmp/robot-avatar_0.1.1_1787124366299_0.7094267220647161","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@divinci-ai/robot-avatar","version":"0.1.2","license":"MIT","_id":"@divinci-ai/robot-avatar@0.1.2","maintainers":[{"name":"mike-divinci","email":"mike@divinci.ai"}],"homepage":"https://sdk.divinci.ai","bugs":{"url":"https://github.com/Divinci-AI/sdk/issues"},"dist":{"shasum":"db7e88d6f6a1821714aa30e734a7183b61df1134","tarball":"https://registry.npmjs.org/@divinci-ai/robot-avatar/-/robot-avatar-0.1.2.tgz","fileCount":53,"integrity":"sha512-bCgqK2T2i1cJ0ZTAk976xZ4iqssIA+mWGMBtlLFRTMBhHTycYNLw+2bDFbZWtChjiK7cr9RCxvDU2PnPL1gM0A==","signatures":[{"sig":"MEYCIQCvvdaqTkEcOAYrmb9P4fj8x1WCTm9Euv4/2RC+rHOa2QIhAJHlWHTEumK106q17bWJNm4eYUG9W7jtl/uJCOESn/tR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":114899},"main":"dist/index.js","type":"module","_from":"file:divinci-ai-robot-avatar-0.1.2.tgz","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./scene":{"types":"./dist/scene/index.d.ts","default":"./dist/scene/index.js"}},"scripts":{"test":"vitest run --passWithNoTests","build":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0223384d-839f-4016-9d4b-deff75ada297"}},"_resolved":"/tmp/ffa652b33a8d3a4c2482041cef998158/divinci-ai-robot-avatar-0.1.2.tgz","_integrity":"sha512-bCgqK2T2i1cJ0ZTAk976xZ4iqssIA+mWGMBtlLFRTMBhHTycYNLw+2bDFbZWtChjiK7cr9RCxvDU2PnPL1gM0A==","repository":{"url":"git+https://github.com/Divinci-AI/sdk.git","type":"git"},"_npmVersion":"11.19.0","description":"The Divinci robot mascot — procedural react-three-fiber avatar shared by the SDK docs hero, the web app, the Divinci Agent panel, and the Chrome extension.","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.7","three":"^0.185.0","vitest":"^3.2.4","typescript":"^5.5.0","@types/react":"^19.2.17","@types/three":"^0.185.0","@react-three/drei":"^10.7.7","@react-three/fiber":"^9.6.1"},"peerDependencies":{"react":">=18.3.0","three":">=0.169.0","@react-three/drei":">=9.114.0","@react-three/fiber":">=8.17.0"},"_npmOperationalInternal":{"tmp":"tmp/robot-avatar_0.1.2_1787141478502_0.46287482714299477","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@divinci-ai/robot-avatar","version":"0.1.3","description":"The Divinci robot mascot — procedural react-three-fiber avatar shared by the SDK docs hero, the web app, the Divinci Agent panel, and the Chrome extension.","type":"module","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./scene":{"types":"./dist/scene/index.d.ts","default":"./dist/scene/index.js"}},"peerDependencies":{"@react-three/drei":">=9.114.0","@react-three/fiber":">=8.17.0","react":">=18.3.0","three":">=0.169.0"},"devDependencies":{"@react-three/drei":"^10.7.7","@react-three/fiber":"^9.6.1","@types/react":"^19.2.17","@types/three":"^0.185.0","react":"^19.2.7","three":"^0.185.0","typescript":"^5.5.0","vitest":"^3.2.4"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/Divinci-AI/sdk.git"},"bugs":{"url":"https://github.com/Divinci-AI/sdk/issues"},"license":"MIT","homepage":"https://sdk.divinci.ai","scripts":{"build":"tsc","test":"vitest run --passWithNoTests"},"_id":"@divinci-ai/robot-avatar@0.1.3","_integrity":"sha512-vBcWbdwPI5CSR1lssDE07P+RgWqvzl/MBhqEX7T2so5Ve1gzD3p0PTW3RR33vAWYq88mWuy4viwiGnjOlUTW3Q==","_resolved":"/tmp/28c3e71b1decc396f9717970886cf934/divinci-ai-robot-avatar-0.1.3.tgz","_from":"file:divinci-ai-robot-avatar-0.1.3.tgz","_nodeVersion":"22.23.2","_npmVersion":"11.19.1","dist":{"integrity":"sha512-vBcWbdwPI5CSR1lssDE07P+RgWqvzl/MBhqEX7T2so5Ve1gzD3p0PTW3RR33vAWYq88mWuy4viwiGnjOlUTW3Q==","shasum":"26e3dc8a42c07dc3a0c52c975817b47da8d516de","tarball":"https://registry.npmjs.org/@divinci-ai/robot-avatar/-/robot-avatar-0.1.3.tgz","fileCount":53,"unpackedSize":114899,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBNoK1Y1k+6qAp/zYdTGjNZnW0udTof5aam65QCULzXDAiEAj92y1xlWjbXmi6+FOLixBYstTNeMVh+6hOxRhr1HSCo="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0223384d-839f-4016-9d4b-deff75ada297"}},"directories":{},"maintainers":[{"name":"mike-divinci","email":"mike@divinci.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/robot-avatar_0.1.3_1788686567595_0.9822364283846459"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-02T06:03:11.670Z","modified":"2026-09-06T09:22:47.959Z","0.1.0":"2026-07-02T06:03:11.940Z","0.1.1":"2026-08-19T07:26:06.441Z","0.1.2":"2026-08-19T12:11:18.640Z","0.1.3":"2026-09-06T09:22:47.779Z"},"bugs":{"url":"https://github.com/Divinci-AI/sdk/issues"},"license":"MIT","homepage":"https://sdk.divinci.ai","repository":{"type":"git","url":"git+https://github.com/Divinci-AI/sdk.git"},"description":"The Divinci robot mascot — procedural react-three-fiber avatar shared by the SDK docs hero, the web app, the Divinci Agent panel, and the Chrome extension.","maintainers":[{"name":"mike-divinci","email":"mike@divinci.ai"}],"readme":"# @divinci-ai/robot-avatar\n\nThe Divinci robot mascot — the procedural, rigged react-three-fiber avatar\nshared by every surface that shows him:\n\n| Surface | Wrapper |\n|---|---|\n| SDK docs hero (sdk.divinci.ai) | `workspace/sdk/docs/src/components/RobotHero/RobotHero.tsx` |\n| Web app + Divinci Agent panel | `workspace/clients/web/src/components/RobotAvatar/RobotAvatar.tsx` |\n| Chrome extension (iframe) | via the web app / a dedicated robot page (planned) |\n\n## Entry points\n\n- **`@divinci-ai/robot-avatar`** (light, no three.js): `AvatarState`,\n  `RobotAvatarColors`, `blendHex`, `useRenderGate`. Safe for main bundles.\n- **`@divinci-ai/robot-avatar/scene`** (heavy): `RobotScene`, `LogoRobot`,\n  `AnimatedHeart`, `useRobotSignals`, `useGroupMotion`. **Always lazy-import**\n  so three.js stays in its own chunk:\n\n```tsx\nimport { lazy } from \"react\";\nconst RobotScene = lazy(() =>\n  import(\"@divinci-ai/robot-avatar/scene\").then((m) => ({ default: m.RobotScene }))\n);\n```\n\n## Built-in hardening (every consumer gets these)\n\n- `powerPreference: \"low-power\"` — never spins up the discrete GPU.\n- `failIfMajorPerformanceCaveat: true` — refuses software WebGL (SwiftShader)\n  instead of burning CPU; your error boundary shows the static fallback.\n- `paused` prop → R3F `frameloop: \"never\"`. Pair with `useRenderGate` (pauses\n  when scrolled off-screen, tab hidden, or user idle).\n- `onContextLost` callback — `webglcontextlost` does not throw through React;\n  listen here and swap to your static fallback.\n- `prefers-reduced-motion` honored live: autonomous animation freezes to a\n  rest pose; only the gentle cursor-driven gaze lean remains.\n- `dpr` capped at `[1, 1.5]` by default (the mascot renders small).\n\n## Consumer responsibilities\n\nEach wrapper owns: color resolution (theme vars vs brand constants), the\nstatic fallback image (Suspense placeholder + WebGL-failure fallback +\ncontext-loss swap), and any surface-specific gaze target (`speakerTarget`).\n\n## Version skew\n\nCompiled against the lowest consumer versions (react 18 / three 0.169 /\nr3f 8 / drei 9); peer ranges span through the docs site's react 19 / three\n0.185 / r3f 9 / drei 10. Only skew-stable APIs are used (`Canvas`, `useFrame`,\n`Environment`, `Lightformer`, core three geometry/materials) — check both\nconsumers when touching imports.\n","readmeFilename":"README.md"}