@oxy.so/bloom 7.0.1 → 7.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (519) hide show
  1. package/assets/character-runtime/README.md +55 -0
  2. package/assets/character-runtime/appearance-codec.mjs +149 -0
  3. package/assets/character-runtime/integrity.json +6 -0
  4. package/assets/character-runtime/legacy-engine.mjs +105 -0
  5. package/assets/character-runtime/legacy-geometry.mjs +166 -0
  6. package/assets/character-runtime/legacy-worker.mjs +85 -0
  7. package/assets/character-runtime/managed-avatar.mjs +258 -0
  8. package/assets/character-runtime/orbit-characters.data +0 -0
  9. package/assets/character-runtime/orbit-characters.mjs +30 -0
  10. package/assets/character-runtime/orbit-characters.wasm +0 -0
  11. package/assets/character-runtime/preparation-worker.mjs +19 -0
  12. package/assets/character-runtime/render-budget.mjs +144 -0
  13. package/assets/character-runtime/runtime.mjs +851 -0
  14. package/assets/character-runtime/thumbnails/eyes/crescent_inset.png +0 -0
  15. package/assets/character-runtime/thumbnails/eyes/dots.png +0 -0
  16. package/assets/character-runtime/thumbnails/eyes/double_highlights.png +0 -0
  17. package/assets/character-runtime/thumbnails/eyes/highlight_capsules.png +0 -0
  18. package/assets/character-runtime/thumbnails/eyes/oval.png +0 -0
  19. package/assets/character-runtime/thumbnails/eyes/round_inset.png +0 -0
  20. package/assets/character-runtime/thumbnails/eyes/sleepy_lids.png +0 -0
  21. package/assets/character-runtime/thumbnails/eyes/sparkle_capsules.png +0 -0
  22. package/assets/character-runtime/thumbnails/eyes/swept_lids.png +0 -0
  23. package/assets/character-runtime/thumbnails/shapes/capsule.png +0 -0
  24. package/assets/character-runtime/thumbnails/shapes/circle.png +0 -0
  25. package/assets/character-runtime/thumbnails/shapes/circle_two_ears.png +0 -0
  26. package/assets/character-runtime/thumbnails/shapes/four_lobed_butterfly.png +0 -0
  27. package/assets/character-runtime/thumbnails/shapes/heart.png +0 -0
  28. package/assets/character-runtime/thumbnails/shapes/rounded_cube.png +0 -0
  29. package/assets/character-runtime/thumbnails/shapes/rounded_diamond.png +0 -0
  30. package/assets/character-runtime/thumbnails/shapes/rounded_head_two_ears.png +0 -0
  31. package/assets/character-runtime/thumbnails/shapes/rounded_triangle.png +0 -0
  32. package/assets/character-runtime/thumbnails/shapes/six_lobed_flower.png +0 -0
  33. package/assets/character-runtime/thumbnails/shapes/twelve_scalloped_rosette.png +0 -0
  34. package/docs/adoption-matrix.mdx +9 -9
  35. package/docs/agent-avatar.mdx +44 -10
  36. package/docs/agent-creator.mdx +12 -4
  37. package/docs/multi-agent-chat.mdx +12 -0
  38. package/docs/project-board.mdx +3 -3
  39. package/lib/commonjs/agent-avatar/AgentAvatar.js +15 -203
  40. package/lib/commonjs/agent-avatar/AgentAvatar.js.map +1 -1
  41. package/lib/commonjs/agent-avatar/AgentAvatarProvider.js +69 -0
  42. package/lib/commonjs/agent-avatar/AgentAvatarProvider.js.map +1 -0
  43. package/lib/commonjs/agent-avatar/CharacterAvatar.js +212 -0
  44. package/lib/commonjs/agent-avatar/CharacterAvatar.js.map +1 -0
  45. package/lib/commonjs/agent-avatar/ProceduralAvatar.js +216 -0
  46. package/lib/commonjs/agent-avatar/ProceduralAvatar.js.map +1 -0
  47. package/lib/commonjs/agent-avatar/artwork.js +4 -3
  48. package/lib/commonjs/agent-avatar/artwork.js.map +1 -1
  49. package/lib/commonjs/agent-avatar/avatar-color.js +16 -0
  50. package/lib/commonjs/agent-avatar/avatar-color.js.map +1 -0
  51. package/lib/commonjs/agent-avatar/character-html.js +25 -0
  52. package/lib/commonjs/agent-avatar/character-html.js.map +1 -0
  53. package/lib/commonjs/agent-avatar/character-runtime-module.js +39 -0
  54. package/lib/commonjs/agent-avatar/character-runtime-module.js.map +1 -0
  55. package/lib/commonjs/agent-avatar/character-webview.js +18 -0
  56. package/lib/commonjs/agent-avatar/character-webview.js.map +1 -0
  57. package/lib/commonjs/agent-avatar/config-character.js +36 -0
  58. package/lib/commonjs/agent-avatar/config-character.js.map +1 -0
  59. package/lib/commonjs/agent-avatar/context.js +6 -1
  60. package/lib/commonjs/agent-avatar/context.js.map +1 -1
  61. package/lib/commonjs/agent-avatar/index.js +7 -0
  62. package/lib/commonjs/agent-avatar/index.js.map +1 -1
  63. package/lib/commonjs/agent-avatar/legacy-contours.js +57 -0
  64. package/lib/commonjs/agent-avatar/legacy-contours.js.map +1 -0
  65. package/lib/commonjs/agent-avatar/legacy-recipe.js +112 -0
  66. package/lib/commonjs/agent-avatar/legacy-recipe.js.map +1 -0
  67. package/lib/commonjs/agent-avatar/messages.js +2 -1
  68. package/lib/commonjs/agent-avatar/messages.js.map +1 -1
  69. package/lib/commonjs/agent-avatar/model.js +2 -0
  70. package/lib/commonjs/agent-avatar/model.js.map +1 -1
  71. package/lib/commonjs/agent-creator/AgentCreatorBase.js +251 -25
  72. package/lib/commonjs/agent-creator/AgentCreatorBase.js.map +1 -1
  73. package/lib/commonjs/agent-creator/CharacterControls.js +115 -0
  74. package/lib/commonjs/agent-creator/CharacterControls.js.map +1 -0
  75. package/lib/commonjs/agent-creator/EmotionPicker.js +51 -18
  76. package/lib/commonjs/agent-creator/EmotionPicker.js.map +1 -1
  77. package/lib/commonjs/agent-creator/ShapeArc.js +56 -26
  78. package/lib/commonjs/agent-creator/ShapeArc.js.map +1 -1
  79. package/lib/commonjs/agent-creator/ShapeSilhouette.js +62 -0
  80. package/lib/commonjs/agent-creator/ShapeSilhouette.js.map +1 -0
  81. package/lib/commonjs/agent-creator/constants.js +48 -1
  82. package/lib/commonjs/agent-creator/constants.js.map +1 -1
  83. package/lib/commonjs/agent-creator/messages.js +9 -0
  84. package/lib/commonjs/agent-creator/messages.js.map +1 -1
  85. package/lib/commonjs/agent-creator/shared.js +7 -10
  86. package/lib/commonjs/agent-creator/shared.js.map +1 -1
  87. package/lib/commonjs/agent-thinking/AgentThinking.js +4 -62
  88. package/lib/commonjs/agent-thinking/AgentThinking.js.map +1 -1
  89. package/lib/commonjs/agent-thinking/ThinkingLabel.js +77 -0
  90. package/lib/commonjs/agent-thinking/ThinkingLabel.js.map +1 -0
  91. package/lib/commonjs/chart-cards/TokensChartCard.js +20 -5
  92. package/lib/commonjs/chart-cards/TokensChartCard.js.map +1 -1
  93. package/lib/commonjs/locale/translations/ar.js +11 -1
  94. package/lib/commonjs/locale/translations/ar.js.map +1 -1
  95. package/lib/commonjs/locale/translations/bn.js +11 -1
  96. package/lib/commonjs/locale/translations/bn.js.map +1 -1
  97. package/lib/commonjs/locale/translations/ca.js +11 -1
  98. package/lib/commonjs/locale/translations/ca.js.map +1 -1
  99. package/lib/commonjs/locale/translations/de.js +11 -1
  100. package/lib/commonjs/locale/translations/de.js.map +1 -1
  101. package/lib/commonjs/locale/translations/es.js +11 -1
  102. package/lib/commonjs/locale/translations/es.js.map +1 -1
  103. package/lib/commonjs/locale/translations/fr.js +11 -1
  104. package/lib/commonjs/locale/translations/fr.js.map +1 -1
  105. package/lib/commonjs/locale/translations/hi.js +11 -1
  106. package/lib/commonjs/locale/translations/hi.js.map +1 -1
  107. package/lib/commonjs/locale/translations/id.js +11 -1
  108. package/lib/commonjs/locale/translations/id.js.map +1 -1
  109. package/lib/commonjs/locale/translations/it.js +11 -1
  110. package/lib/commonjs/locale/translations/it.js.map +1 -1
  111. package/lib/commonjs/locale/translations/ja.js +11 -1
  112. package/lib/commonjs/locale/translations/ja.js.map +1 -1
  113. package/lib/commonjs/locale/translations/pt.js +11 -1
  114. package/lib/commonjs/locale/translations/pt.js.map +1 -1
  115. package/lib/commonjs/locale/translations/ru.js +11 -1
  116. package/lib/commonjs/locale/translations/ru.js.map +1 -1
  117. package/lib/commonjs/locale/translations/tr.js +11 -1
  118. package/lib/commonjs/locale/translations/tr.js.map +1 -1
  119. package/lib/commonjs/locale/translations/zh.js +11 -1
  120. package/lib/commonjs/locale/translations/zh.js.map +1 -1
  121. package/lib/commonjs/multi-agent-chat/AvatarHandoff.js +2 -4
  122. package/lib/commonjs/multi-agent-chat/AvatarHandoff.js.map +1 -1
  123. package/lib/commonjs/multi-agent-chat/ChatAgentProfile.js +97 -0
  124. package/lib/commonjs/multi-agent-chat/ChatAgentProfile.js.map +1 -0
  125. package/lib/commonjs/multi-agent-chat/EditorRail.js +4 -0
  126. package/lib/commonjs/multi-agent-chat/EditorRail.js.map +1 -1
  127. package/lib/commonjs/multi-agent-chat/MultiAgentChatBase.js +89 -126
  128. package/lib/commonjs/multi-agent-chat/MultiAgentChatBase.js.map +1 -1
  129. package/lib/commonjs/multi-agent-chat/ReplyRow.js +8 -11
  130. package/lib/commonjs/multi-agent-chat/ReplyRow.js.map +1 -1
  131. package/lib/commonjs/multi-agent-chat/handoff.js +5 -5
  132. package/lib/commonjs/multi-agent-chat/handoff.js.map +1 -1
  133. package/lib/commonjs/project-board/CreateTicketDialog.js +33 -2
  134. package/lib/commonjs/project-board/CreateTicketDialog.js.map +1 -1
  135. package/lib/commonjs/project-board/ProjectBoardBase.js +137 -38
  136. package/lib/commonjs/project-board/ProjectBoardBase.js.map +1 -1
  137. package/lib/commonjs/project-board/TicketCornerGenieSurface.web.js +34 -28
  138. package/lib/commonjs/project-board/TicketCornerGenieSurface.web.js.map +1 -1
  139. package/lib/commonjs/project-board/TicketDetailDialog.js +6 -3
  140. package/lib/commonjs/project-board/TicketDetailDialog.js.map +1 -1
  141. package/lib/commonjs/project-board/TicketGenieSurface.js +17 -7
  142. package/lib/commonjs/project-board/TicketGenieSurface.js.map +1 -1
  143. package/lib/commonjs/project-board/TicketGenieSurface.web.js +1 -1
  144. package/lib/commonjs/project-board/TicketGenieSurface.web.js.map +1 -1
  145. package/lib/commonjs/project-board/TicketPresence.js +125 -0
  146. package/lib/commonjs/project-board/TicketPresence.js.map +1 -0
  147. package/lib/commonjs/project-board/TicketTokenChart.js +23 -0
  148. package/lib/commonjs/project-board/TicketTokenChart.js.map +1 -0
  149. package/lib/commonjs/project-board/context.js +3 -1
  150. package/lib/commonjs/project-board/context.js.map +1 -1
  151. package/lib/commonjs/search/Search.js +12 -3
  152. package/lib/commonjs/search/Search.js.map +1 -1
  153. package/lib/commonjs/sidebar/SidebarToolbar.js +28 -14
  154. package/lib/commonjs/sidebar/SidebarToolbar.js.map +1 -1
  155. package/lib/commonjs/text-field/TextField.js +13 -7
  156. package/lib/commonjs/text-field/TextField.js.map +1 -1
  157. package/lib/module/agent-avatar/AgentAvatar.js +16 -204
  158. package/lib/module/agent-avatar/AgentAvatar.js.map +1 -1
  159. package/lib/module/agent-avatar/AgentAvatarProvider.js +65 -0
  160. package/lib/module/agent-avatar/AgentAvatarProvider.js.map +1 -0
  161. package/lib/module/agent-avatar/CharacterAvatar.js +208 -0
  162. package/lib/module/agent-avatar/CharacterAvatar.js.map +1 -0
  163. package/lib/module/agent-avatar/ProceduralAvatar.js +212 -0
  164. package/lib/module/agent-avatar/ProceduralAvatar.js.map +1 -0
  165. package/lib/module/agent-avatar/artwork.js +3 -3
  166. package/lib/module/agent-avatar/artwork.js.map +1 -1
  167. package/lib/module/agent-avatar/avatar-color.js +12 -0
  168. package/lib/module/agent-avatar/avatar-color.js.map +1 -0
  169. package/lib/module/agent-avatar/character-html.js +19 -0
  170. package/lib/module/agent-avatar/character-html.js.map +1 -0
  171. package/lib/module/agent-avatar/character-runtime-module.js +35 -0
  172. package/lib/module/agent-avatar/character-runtime-module.js.map +1 -0
  173. package/lib/module/agent-avatar/character-webview.js +14 -0
  174. package/lib/module/agent-avatar/character-webview.js.map +1 -0
  175. package/lib/module/agent-avatar/config-character.js +32 -0
  176. package/lib/module/agent-avatar/config-character.js.map +1 -0
  177. package/lib/module/agent-avatar/context.js +5 -0
  178. package/lib/module/agent-avatar/context.js.map +1 -1
  179. package/lib/module/agent-avatar/index.js +1 -0
  180. package/lib/module/agent-avatar/index.js.map +1 -1
  181. package/lib/module/agent-avatar/legacy-contours.js +53 -0
  182. package/lib/module/agent-avatar/legacy-contours.js.map +1 -0
  183. package/lib/module/agent-avatar/legacy-recipe.js +104 -0
  184. package/lib/module/agent-avatar/legacy-recipe.js.map +1 -0
  185. package/lib/module/agent-avatar/messages.js +2 -1
  186. package/lib/module/agent-avatar/messages.js.map +1 -1
  187. package/lib/module/agent-avatar/model.js +2 -0
  188. package/lib/module/agent-avatar/model.js.map +1 -1
  189. package/lib/module/agent-creator/AgentCreatorBase.js +248 -22
  190. package/lib/module/agent-creator/AgentCreatorBase.js.map +1 -1
  191. package/lib/module/agent-creator/CharacterControls.js +112 -0
  192. package/lib/module/agent-creator/CharacterControls.js.map +1 -0
  193. package/lib/module/agent-creator/EmotionPicker.js +52 -19
  194. package/lib/module/agent-creator/EmotionPicker.js.map +1 -1
  195. package/lib/module/agent-creator/ShapeArc.js +58 -28
  196. package/lib/module/agent-creator/ShapeArc.js.map +1 -1
  197. package/lib/module/agent-creator/ShapeSilhouette.js +57 -0
  198. package/lib/module/agent-creator/ShapeSilhouette.js.map +1 -0
  199. package/lib/module/agent-creator/constants.js +47 -0
  200. package/lib/module/agent-creator/constants.js.map +1 -1
  201. package/lib/module/agent-creator/messages.js +9 -0
  202. package/lib/module/agent-creator/messages.js.map +1 -1
  203. package/lib/module/agent-creator/shared.js +1 -9
  204. package/lib/module/agent-creator/shared.js.map +1 -1
  205. package/lib/module/agent-thinking/AgentThinking.js +5 -63
  206. package/lib/module/agent-thinking/AgentThinking.js.map +1 -1
  207. package/lib/module/agent-thinking/ThinkingLabel.js +73 -0
  208. package/lib/module/agent-thinking/ThinkingLabel.js.map +1 -0
  209. package/lib/module/chart-cards/TokensChartCard.js +20 -5
  210. package/lib/module/chart-cards/TokensChartCard.js.map +1 -1
  211. package/lib/module/locale/translations/ar.js +11 -1
  212. package/lib/module/locale/translations/ar.js.map +1 -1
  213. package/lib/module/locale/translations/bn.js +11 -1
  214. package/lib/module/locale/translations/bn.js.map +1 -1
  215. package/lib/module/locale/translations/ca.js +11 -1
  216. package/lib/module/locale/translations/ca.js.map +1 -1
  217. package/lib/module/locale/translations/de.js +11 -1
  218. package/lib/module/locale/translations/de.js.map +1 -1
  219. package/lib/module/locale/translations/es.js +11 -1
  220. package/lib/module/locale/translations/es.js.map +1 -1
  221. package/lib/module/locale/translations/fr.js +11 -1
  222. package/lib/module/locale/translations/fr.js.map +1 -1
  223. package/lib/module/locale/translations/hi.js +11 -1
  224. package/lib/module/locale/translations/hi.js.map +1 -1
  225. package/lib/module/locale/translations/id.js +11 -1
  226. package/lib/module/locale/translations/id.js.map +1 -1
  227. package/lib/module/locale/translations/it.js +11 -1
  228. package/lib/module/locale/translations/it.js.map +1 -1
  229. package/lib/module/locale/translations/ja.js +11 -1
  230. package/lib/module/locale/translations/ja.js.map +1 -1
  231. package/lib/module/locale/translations/pt.js +11 -1
  232. package/lib/module/locale/translations/pt.js.map +1 -1
  233. package/lib/module/locale/translations/ru.js +11 -1
  234. package/lib/module/locale/translations/ru.js.map +1 -1
  235. package/lib/module/locale/translations/tr.js +11 -1
  236. package/lib/module/locale/translations/tr.js.map +1 -1
  237. package/lib/module/locale/translations/zh.js +11 -1
  238. package/lib/module/locale/translations/zh.js.map +1 -1
  239. package/lib/module/multi-agent-chat/AvatarHandoff.js +3 -5
  240. package/lib/module/multi-agent-chat/AvatarHandoff.js.map +1 -1
  241. package/lib/module/multi-agent-chat/ChatAgentProfile.js +94 -0
  242. package/lib/module/multi-agent-chat/ChatAgentProfile.js.map +1 -0
  243. package/lib/module/multi-agent-chat/EditorRail.js +4 -0
  244. package/lib/module/multi-agent-chat/EditorRail.js.map +1 -1
  245. package/lib/module/multi-agent-chat/MultiAgentChatBase.js +89 -126
  246. package/lib/module/multi-agent-chat/MultiAgentChatBase.js.map +1 -1
  247. package/lib/module/multi-agent-chat/ReplyRow.js +9 -12
  248. package/lib/module/multi-agent-chat/ReplyRow.js.map +1 -1
  249. package/lib/module/multi-agent-chat/handoff.js +4 -4
  250. package/lib/module/multi-agent-chat/handoff.js.map +1 -1
  251. package/lib/module/project-board/CreateTicketDialog.js +33 -2
  252. package/lib/module/project-board/CreateTicketDialog.js.map +1 -1
  253. package/lib/module/project-board/ProjectBoardBase.js +138 -39
  254. package/lib/module/project-board/ProjectBoardBase.js.map +1 -1
  255. package/lib/module/project-board/TicketCornerGenieSurface.web.js +35 -29
  256. package/lib/module/project-board/TicketCornerGenieSurface.web.js.map +1 -1
  257. package/lib/module/project-board/TicketDetailDialog.js +7 -4
  258. package/lib/module/project-board/TicketDetailDialog.js.map +1 -1
  259. package/lib/module/project-board/TicketGenieSurface.js +17 -7
  260. package/lib/module/project-board/TicketGenieSurface.js.map +1 -1
  261. package/lib/module/project-board/TicketGenieSurface.web.js +1 -1
  262. package/lib/module/project-board/TicketGenieSurface.web.js.map +1 -1
  263. package/lib/module/project-board/TicketPresence.js +119 -0
  264. package/lib/module/project-board/TicketPresence.js.map +1 -0
  265. package/lib/module/project-board/TicketTokenChart.js +20 -0
  266. package/lib/module/project-board/TicketTokenChart.js.map +1 -0
  267. package/lib/module/project-board/context.js +2 -0
  268. package/lib/module/project-board/context.js.map +1 -1
  269. package/lib/module/search/Search.js +12 -3
  270. package/lib/module/search/Search.js.map +1 -1
  271. package/lib/module/sidebar/SidebarToolbar.js +29 -15
  272. package/lib/module/sidebar/SidebarToolbar.js.map +1 -1
  273. package/lib/module/text-field/TextField.js +13 -7
  274. package/lib/module/text-field/TextField.js.map +1 -1
  275. package/lib/typescript/commonjs/agent-avatar/AgentAvatar.d.ts +2 -2
  276. package/lib/typescript/commonjs/agent-avatar/AgentAvatar.d.ts.map +1 -1
  277. package/lib/typescript/commonjs/agent-avatar/AgentAvatarProvider.d.ts +4 -0
  278. package/lib/typescript/commonjs/agent-avatar/AgentAvatarProvider.d.ts.map +1 -0
  279. package/lib/typescript/commonjs/agent-avatar/CharacterAvatar.d.ts +4 -0
  280. package/lib/typescript/commonjs/agent-avatar/CharacterAvatar.d.ts.map +1 -0
  281. package/lib/typescript/commonjs/agent-avatar/ProceduralAvatar.d.ts +6 -0
  282. package/lib/typescript/commonjs/agent-avatar/ProceduralAvatar.d.ts.map +1 -0
  283. package/lib/typescript/commonjs/agent-avatar/artwork.d.ts +2 -1
  284. package/lib/typescript/commonjs/agent-avatar/artwork.d.ts.map +1 -1
  285. package/lib/typescript/commonjs/agent-avatar/avatar-color.d.ts +3 -0
  286. package/lib/typescript/commonjs/agent-avatar/avatar-color.d.ts.map +1 -0
  287. package/lib/typescript/commonjs/agent-avatar/character-html.d.ts +4 -0
  288. package/lib/typescript/commonjs/agent-avatar/character-html.d.ts.map +1 -0
  289. package/lib/typescript/commonjs/agent-avatar/character-runtime-module.d.ts +2 -0
  290. package/lib/typescript/commonjs/agent-avatar/character-runtime-module.d.ts.map +1 -0
  291. package/lib/typescript/commonjs/agent-avatar/character-webview.d.ts +24 -0
  292. package/lib/typescript/commonjs/agent-avatar/character-webview.d.ts.map +1 -0
  293. package/lib/typescript/commonjs/agent-avatar/config-character.d.ts +11 -0
  294. package/lib/typescript/commonjs/agent-avatar/config-character.d.ts.map +1 -0
  295. package/lib/typescript/commonjs/agent-avatar/context.d.ts +15 -0
  296. package/lib/typescript/commonjs/agent-avatar/context.d.ts.map +1 -1
  297. package/lib/typescript/commonjs/agent-avatar/index.d.ts +3 -1
  298. package/lib/typescript/commonjs/agent-avatar/index.d.ts.map +1 -1
  299. package/lib/typescript/commonjs/agent-avatar/legacy-contours.d.ts +5 -0
  300. package/lib/typescript/commonjs/agent-avatar/legacy-contours.d.ts.map +1 -0
  301. package/lib/typescript/commonjs/agent-avatar/legacy-recipe.d.ts +40 -0
  302. package/lib/typescript/commonjs/agent-avatar/legacy-recipe.d.ts.map +1 -0
  303. package/lib/typescript/commonjs/agent-avatar/messages.d.ts +1 -0
  304. package/lib/typescript/commonjs/agent-avatar/messages.d.ts.map +1 -1
  305. package/lib/typescript/commonjs/agent-avatar/model.d.ts +3 -0
  306. package/lib/typescript/commonjs/agent-avatar/model.d.ts.map +1 -1
  307. package/lib/typescript/commonjs/agent-avatar/types.d.ts +10 -1
  308. package/lib/typescript/commonjs/agent-avatar/types.d.ts.map +1 -1
  309. package/lib/typescript/commonjs/agent-creator/AgentCreatorBase.d.ts.map +1 -1
  310. package/lib/typescript/commonjs/agent-creator/CharacterControls.d.ts +8 -0
  311. package/lib/typescript/commonjs/agent-creator/CharacterControls.d.ts.map +1 -0
  312. package/lib/typescript/commonjs/agent-creator/EmotionPicker.d.ts +12 -1
  313. package/lib/typescript/commonjs/agent-creator/EmotionPicker.d.ts.map +1 -1
  314. package/lib/typescript/commonjs/agent-creator/ShapeArc.d.ts +11 -2
  315. package/lib/typescript/commonjs/agent-creator/ShapeArc.d.ts.map +1 -1
  316. package/lib/typescript/commonjs/agent-creator/ShapeSilhouette.d.ts +6 -0
  317. package/lib/typescript/commonjs/agent-creator/ShapeSilhouette.d.ts.map +1 -0
  318. package/lib/typescript/commonjs/agent-creator/constants.d.ts +44 -0
  319. package/lib/typescript/commonjs/agent-creator/constants.d.ts.map +1 -1
  320. package/lib/typescript/commonjs/agent-creator/context.d.ts +9 -0
  321. package/lib/typescript/commonjs/agent-creator/context.d.ts.map +1 -1
  322. package/lib/typescript/commonjs/agent-creator/messages.d.ts +10 -0
  323. package/lib/typescript/commonjs/agent-creator/messages.d.ts.map +1 -1
  324. package/lib/typescript/commonjs/agent-creator/shared.d.ts +1 -1
  325. package/lib/typescript/commonjs/agent-creator/shared.d.ts.map +1 -1
  326. package/lib/typescript/commonjs/agent-thinking/AgentThinking.d.ts.map +1 -1
  327. package/lib/typescript/commonjs/agent-thinking/ThinkingLabel.d.ts +7 -0
  328. package/lib/typescript/commonjs/agent-thinking/ThinkingLabel.d.ts.map +1 -0
  329. package/lib/typescript/commonjs/chart-cards/TokensChartCard.d.ts +3 -1
  330. package/lib/typescript/commonjs/chart-cards/TokensChartCard.d.ts.map +1 -1
  331. package/lib/typescript/commonjs/locale/translations/ar.d.ts.map +1 -1
  332. package/lib/typescript/commonjs/locale/translations/bn.d.ts.map +1 -1
  333. package/lib/typescript/commonjs/locale/translations/ca.d.ts.map +1 -1
  334. package/lib/typescript/commonjs/locale/translations/de.d.ts.map +1 -1
  335. package/lib/typescript/commonjs/locale/translations/es.d.ts.map +1 -1
  336. package/lib/typescript/commonjs/locale/translations/fr.d.ts.map +1 -1
  337. package/lib/typescript/commonjs/locale/translations/hi.d.ts.map +1 -1
  338. package/lib/typescript/commonjs/locale/translations/id.d.ts.map +1 -1
  339. package/lib/typescript/commonjs/locale/translations/it.d.ts.map +1 -1
  340. package/lib/typescript/commonjs/locale/translations/ja.d.ts.map +1 -1
  341. package/lib/typescript/commonjs/locale/translations/pt.d.ts.map +1 -1
  342. package/lib/typescript/commonjs/locale/translations/ru.d.ts.map +1 -1
  343. package/lib/typescript/commonjs/locale/translations/tr.d.ts.map +1 -1
  344. package/lib/typescript/commonjs/locale/translations/zh.d.ts.map +1 -1
  345. package/lib/typescript/commonjs/multi-agent-chat/AvatarHandoff.d.ts.map +1 -1
  346. package/lib/typescript/commonjs/multi-agent-chat/ChatAgentProfile.d.ts +11 -0
  347. package/lib/typescript/commonjs/multi-agent-chat/ChatAgentProfile.d.ts.map +1 -0
  348. package/lib/typescript/commonjs/multi-agent-chat/EditorRail.d.ts.map +1 -1
  349. package/lib/typescript/commonjs/multi-agent-chat/MultiAgentChatBase.d.ts.map +1 -1
  350. package/lib/typescript/commonjs/multi-agent-chat/ReplyRow.d.ts.map +1 -1
  351. package/lib/typescript/commonjs/multi-agent-chat/handoff.d.ts +2 -2
  352. package/lib/typescript/commonjs/multi-agent-chat/handoff.d.ts.map +1 -1
  353. package/lib/typescript/commonjs/project-board/CreateTicketDialog.d.ts.map +1 -1
  354. package/lib/typescript/commonjs/project-board/ProjectBoardBase.d.ts.map +1 -1
  355. package/lib/typescript/commonjs/project-board/TicketCornerGenieSurface.web.d.ts.map +1 -1
  356. package/lib/typescript/commonjs/project-board/TicketDetailDialog.d.ts.map +1 -1
  357. package/lib/typescript/commonjs/project-board/TicketGenieSurface.d.ts.map +1 -1
  358. package/lib/typescript/commonjs/project-board/TicketPresence.d.ts +17 -0
  359. package/lib/typescript/commonjs/project-board/TicketPresence.d.ts.map +1 -0
  360. package/lib/typescript/commonjs/project-board/TicketTokenChart.d.ts +5 -0
  361. package/lib/typescript/commonjs/project-board/TicketTokenChart.d.ts.map +1 -0
  362. package/lib/typescript/commonjs/project-board/context.d.ts +2 -0
  363. package/lib/typescript/commonjs/project-board/context.d.ts.map +1 -1
  364. package/lib/typescript/commonjs/search/Search.d.ts.map +1 -1
  365. package/lib/typescript/commonjs/sidebar/SidebarToolbar.d.ts.map +1 -1
  366. package/lib/typescript/commonjs/text-field/TextField.d.ts.map +1 -1
  367. package/lib/typescript/module/agent-avatar/AgentAvatar.d.ts +2 -2
  368. package/lib/typescript/module/agent-avatar/AgentAvatar.d.ts.map +1 -1
  369. package/lib/typescript/module/agent-avatar/AgentAvatarProvider.d.ts +4 -0
  370. package/lib/typescript/module/agent-avatar/AgentAvatarProvider.d.ts.map +1 -0
  371. package/lib/typescript/module/agent-avatar/CharacterAvatar.d.ts +4 -0
  372. package/lib/typescript/module/agent-avatar/CharacterAvatar.d.ts.map +1 -0
  373. package/lib/typescript/module/agent-avatar/ProceduralAvatar.d.ts +6 -0
  374. package/lib/typescript/module/agent-avatar/ProceduralAvatar.d.ts.map +1 -0
  375. package/lib/typescript/module/agent-avatar/artwork.d.ts +2 -1
  376. package/lib/typescript/module/agent-avatar/artwork.d.ts.map +1 -1
  377. package/lib/typescript/module/agent-avatar/avatar-color.d.ts +3 -0
  378. package/lib/typescript/module/agent-avatar/avatar-color.d.ts.map +1 -0
  379. package/lib/typescript/module/agent-avatar/character-html.d.ts +4 -0
  380. package/lib/typescript/module/agent-avatar/character-html.d.ts.map +1 -0
  381. package/lib/typescript/module/agent-avatar/character-runtime-module.d.ts +2 -0
  382. package/lib/typescript/module/agent-avatar/character-runtime-module.d.ts.map +1 -0
  383. package/lib/typescript/module/agent-avatar/character-webview.d.ts +24 -0
  384. package/lib/typescript/module/agent-avatar/character-webview.d.ts.map +1 -0
  385. package/lib/typescript/module/agent-avatar/config-character.d.ts +11 -0
  386. package/lib/typescript/module/agent-avatar/config-character.d.ts.map +1 -0
  387. package/lib/typescript/module/agent-avatar/context.d.ts +15 -0
  388. package/lib/typescript/module/agent-avatar/context.d.ts.map +1 -1
  389. package/lib/typescript/module/agent-avatar/index.d.ts +3 -1
  390. package/lib/typescript/module/agent-avatar/index.d.ts.map +1 -1
  391. package/lib/typescript/module/agent-avatar/legacy-contours.d.ts +5 -0
  392. package/lib/typescript/module/agent-avatar/legacy-contours.d.ts.map +1 -0
  393. package/lib/typescript/module/agent-avatar/legacy-recipe.d.ts +40 -0
  394. package/lib/typescript/module/agent-avatar/legacy-recipe.d.ts.map +1 -0
  395. package/lib/typescript/module/agent-avatar/messages.d.ts +1 -0
  396. package/lib/typescript/module/agent-avatar/messages.d.ts.map +1 -1
  397. package/lib/typescript/module/agent-avatar/model.d.ts +3 -0
  398. package/lib/typescript/module/agent-avatar/model.d.ts.map +1 -1
  399. package/lib/typescript/module/agent-avatar/types.d.ts +10 -1
  400. package/lib/typescript/module/agent-avatar/types.d.ts.map +1 -1
  401. package/lib/typescript/module/agent-creator/AgentCreatorBase.d.ts.map +1 -1
  402. package/lib/typescript/module/agent-creator/CharacterControls.d.ts +8 -0
  403. package/lib/typescript/module/agent-creator/CharacterControls.d.ts.map +1 -0
  404. package/lib/typescript/module/agent-creator/EmotionPicker.d.ts +12 -1
  405. package/lib/typescript/module/agent-creator/EmotionPicker.d.ts.map +1 -1
  406. package/lib/typescript/module/agent-creator/ShapeArc.d.ts +11 -2
  407. package/lib/typescript/module/agent-creator/ShapeArc.d.ts.map +1 -1
  408. package/lib/typescript/module/agent-creator/ShapeSilhouette.d.ts +6 -0
  409. package/lib/typescript/module/agent-creator/ShapeSilhouette.d.ts.map +1 -0
  410. package/lib/typescript/module/agent-creator/constants.d.ts +44 -0
  411. package/lib/typescript/module/agent-creator/constants.d.ts.map +1 -1
  412. package/lib/typescript/module/agent-creator/context.d.ts +9 -0
  413. package/lib/typescript/module/agent-creator/context.d.ts.map +1 -1
  414. package/lib/typescript/module/agent-creator/messages.d.ts +10 -0
  415. package/lib/typescript/module/agent-creator/messages.d.ts.map +1 -1
  416. package/lib/typescript/module/agent-creator/shared.d.ts +1 -1
  417. package/lib/typescript/module/agent-creator/shared.d.ts.map +1 -1
  418. package/lib/typescript/module/agent-thinking/AgentThinking.d.ts.map +1 -1
  419. package/lib/typescript/module/agent-thinking/ThinkingLabel.d.ts +7 -0
  420. package/lib/typescript/module/agent-thinking/ThinkingLabel.d.ts.map +1 -0
  421. package/lib/typescript/module/chart-cards/TokensChartCard.d.ts +3 -1
  422. package/lib/typescript/module/chart-cards/TokensChartCard.d.ts.map +1 -1
  423. package/lib/typescript/module/locale/translations/ar.d.ts.map +1 -1
  424. package/lib/typescript/module/locale/translations/bn.d.ts.map +1 -1
  425. package/lib/typescript/module/locale/translations/ca.d.ts.map +1 -1
  426. package/lib/typescript/module/locale/translations/de.d.ts.map +1 -1
  427. package/lib/typescript/module/locale/translations/es.d.ts.map +1 -1
  428. package/lib/typescript/module/locale/translations/fr.d.ts.map +1 -1
  429. package/lib/typescript/module/locale/translations/hi.d.ts.map +1 -1
  430. package/lib/typescript/module/locale/translations/id.d.ts.map +1 -1
  431. package/lib/typescript/module/locale/translations/it.d.ts.map +1 -1
  432. package/lib/typescript/module/locale/translations/ja.d.ts.map +1 -1
  433. package/lib/typescript/module/locale/translations/pt.d.ts.map +1 -1
  434. package/lib/typescript/module/locale/translations/ru.d.ts.map +1 -1
  435. package/lib/typescript/module/locale/translations/tr.d.ts.map +1 -1
  436. package/lib/typescript/module/locale/translations/zh.d.ts.map +1 -1
  437. package/lib/typescript/module/multi-agent-chat/AvatarHandoff.d.ts.map +1 -1
  438. package/lib/typescript/module/multi-agent-chat/ChatAgentProfile.d.ts +11 -0
  439. package/lib/typescript/module/multi-agent-chat/ChatAgentProfile.d.ts.map +1 -0
  440. package/lib/typescript/module/multi-agent-chat/EditorRail.d.ts.map +1 -1
  441. package/lib/typescript/module/multi-agent-chat/MultiAgentChatBase.d.ts.map +1 -1
  442. package/lib/typescript/module/multi-agent-chat/ReplyRow.d.ts.map +1 -1
  443. package/lib/typescript/module/multi-agent-chat/handoff.d.ts +2 -2
  444. package/lib/typescript/module/multi-agent-chat/handoff.d.ts.map +1 -1
  445. package/lib/typescript/module/project-board/CreateTicketDialog.d.ts.map +1 -1
  446. package/lib/typescript/module/project-board/ProjectBoardBase.d.ts.map +1 -1
  447. package/lib/typescript/module/project-board/TicketCornerGenieSurface.web.d.ts.map +1 -1
  448. package/lib/typescript/module/project-board/TicketDetailDialog.d.ts.map +1 -1
  449. package/lib/typescript/module/project-board/TicketGenieSurface.d.ts.map +1 -1
  450. package/lib/typescript/module/project-board/TicketPresence.d.ts +17 -0
  451. package/lib/typescript/module/project-board/TicketPresence.d.ts.map +1 -0
  452. package/lib/typescript/module/project-board/TicketTokenChart.d.ts +5 -0
  453. package/lib/typescript/module/project-board/TicketTokenChart.d.ts.map +1 -0
  454. package/lib/typescript/module/project-board/context.d.ts +2 -0
  455. package/lib/typescript/module/project-board/context.d.ts.map +1 -1
  456. package/lib/typescript/module/search/Search.d.ts.map +1 -1
  457. package/lib/typescript/module/sidebar/SidebarToolbar.d.ts.map +1 -1
  458. package/lib/typescript/module/text-field/TextField.d.ts.map +1 -1
  459. package/package.json +8 -3
  460. package/src/agent-avatar/AgentAvatar.tsx +16 -296
  461. package/src/agent-avatar/AgentAvatarProvider.tsx +79 -0
  462. package/src/agent-avatar/CharacterAvatar.tsx +260 -0
  463. package/src/agent-avatar/ProceduralAvatar.tsx +303 -0
  464. package/src/agent-avatar/artwork.ts +3 -3
  465. package/src/agent-avatar/avatar-color.ts +17 -0
  466. package/src/agent-avatar/character-html.ts +21 -0
  467. package/src/agent-avatar/character-runtime-module.ts +37 -0
  468. package/src/agent-avatar/character-webview.ts +24 -0
  469. package/src/agent-avatar/config-character.ts +40 -0
  470. package/src/agent-avatar/context.ts +17 -0
  471. package/src/agent-avatar/index.ts +4 -1
  472. package/src/agent-avatar/legacy-contours.ts +76 -0
  473. package/src/agent-avatar/legacy-recipe.ts +123 -0
  474. package/src/agent-avatar/messages.ts +1 -0
  475. package/src/agent-avatar/model.ts +5 -0
  476. package/src/agent-avatar/types.ts +12 -1
  477. package/src/agent-creator/AgentCreatorBase.tsx +338 -39
  478. package/src/agent-creator/CharacterControls.tsx +150 -0
  479. package/src/agent-creator/EmotionPicker.tsx +43 -21
  480. package/src/agent-creator/ShapeArc.tsx +83 -29
  481. package/src/agent-creator/ShapeSilhouette.tsx +65 -0
  482. package/src/agent-creator/constants.ts +30 -0
  483. package/src/agent-creator/messages.ts +19 -0
  484. package/src/agent-creator/shared.ts +1 -15
  485. package/src/agent-thinking/AgentThinking.tsx +7 -70
  486. package/src/agent-thinking/ThinkingLabel.tsx +74 -0
  487. package/src/chart-cards/TokensChartCard.tsx +10 -6
  488. package/src/locale/translations/ar.ts +10 -1
  489. package/src/locale/translations/bn.ts +10 -1
  490. package/src/locale/translations/ca.ts +10 -1
  491. package/src/locale/translations/de.ts +10 -1
  492. package/src/locale/translations/es.ts +10 -1
  493. package/src/locale/translations/fr.ts +10 -1
  494. package/src/locale/translations/hi.ts +10 -1
  495. package/src/locale/translations/id.ts +10 -1
  496. package/src/locale/translations/it.ts +10 -1
  497. package/src/locale/translations/ja.ts +10 -1
  498. package/src/locale/translations/pt.ts +10 -1
  499. package/src/locale/translations/ru.ts +10 -1
  500. package/src/locale/translations/tr.ts +10 -1
  501. package/src/locale/translations/zh.ts +10 -1
  502. package/src/multi-agent-chat/AvatarHandoff.tsx +2 -5
  503. package/src/multi-agent-chat/ChatAgentProfile.tsx +116 -0
  504. package/src/multi-agent-chat/EditorRail.tsx +2 -0
  505. package/src/multi-agent-chat/MultiAgentChatBase.tsx +123 -175
  506. package/src/multi-agent-chat/ReplyRow.tsx +10 -9
  507. package/src/multi-agent-chat/handoff.ts +4 -4
  508. package/src/project-board/CreateTicketDialog.tsx +28 -4
  509. package/src/project-board/ProjectBoardBase.tsx +115 -21
  510. package/src/project-board/TicketCornerGenieSurface.web.tsx +11 -6
  511. package/src/project-board/TicketDetailDialog.tsx +5 -4
  512. package/src/project-board/TicketGenieSurface.tsx +9 -0
  513. package/src/project-board/TicketGenieSurface.web.tsx +1 -1
  514. package/src/project-board/TicketPresence.tsx +137 -0
  515. package/src/project-board/TicketTokenChart.tsx +14 -0
  516. package/src/project-board/context.ts +2 -0
  517. package/src/search/Search.tsx +6 -5
  518. package/src/sidebar/SidebarToolbar.tsx +27 -15
  519. package/src/text-field/TextField.tsx +12 -7
@@ -0,0 +1,258 @@
1
+ import { renderBudget } from './render-budget.mjs';
2
+
3
+ const snapshots = new Map();
4
+ const waiting = new Map();
5
+ const pixelsFor = (canvas) =>
6
+ Math.max(
7
+ 64,
8
+ Math.min(
9
+ 512,
10
+ Math.round(
11
+ Math.min(canvas.clientWidth, canvas.clientHeight) *
12
+ Math.min(devicePixelRatio || 1, 2),
13
+ ),
14
+ ),
15
+ );
16
+
17
+ // Presentation lifetime is independent of the GPU lease. Overflow avatars keep
18
+ // their real engine pixels and can reclaim a lease through pointer/command input.
19
+ export function createManagedAvatar(canvas, initial, callbacks, factory) {
20
+ let props = initial,
21
+ controller,
22
+ disposed = false,
23
+ ready = false;
24
+ let visible = false,
25
+ hovered = false,
26
+ urgentUntil = 0,
27
+ timer;
28
+ let pendingWork = false,
29
+ pendingReaction = false,
30
+ starting = false;
31
+ let capabilities,
32
+ lastDiagnostics = {},
33
+ cacheKey = '',
34
+ cachedKey = '';
35
+ const still = () =>
36
+ props.portrait ||
37
+ props.paused ||
38
+ props.reduced ||
39
+ props.config.motion === 0;
40
+ const fingerprint = () =>
41
+ JSON.stringify([
42
+ props.config.character,
43
+ props.legacy,
44
+ props.config.lookAt,
45
+ pixelsFor(canvas),
46
+ ]);
47
+ const priority = () =>
48
+ pendingWork || pendingReaction || performance.now() < urgentUntil
49
+ ? 3
50
+ : hovered
51
+ ? 2
52
+ : props.interactive
53
+ ? 1
54
+ : 0;
55
+ const refresh = () =>
56
+ lease.update({
57
+ visible: (visible || props.portrait) && !document.hidden,
58
+ still: still(),
59
+ priority: still() ? 0 : priority(),
60
+ needsPaint: !ready,
61
+ });
62
+ function promote(duration = 5000) {
63
+ if (still()) return;
64
+ urgentUntil = performance.now() + duration;
65
+ clearTimeout(timer);
66
+ timer = setTimeout(refresh, duration + 1);
67
+ refresh();
68
+ }
69
+ function commands() {
70
+ if (!controller?.diagnostics?.()?.ready) return;
71
+ if (pendingWork)
72
+ promote(
73
+ 2500 * Math.max(1, Math.min(10, props.workingCycles || 1)) + 1000,
74
+ );
75
+ else if (pendingReaction) promote();
76
+ if (pendingWork) {
77
+ pendingWork = false;
78
+ controller.work?.();
79
+ }
80
+ if (pendingReaction) {
81
+ pendingReaction = false;
82
+ controller.react?.();
83
+ }
84
+ }
85
+ const lease = renderBudget.register({
86
+ async start() {
87
+ starting = true;
88
+ try {
89
+ const created = await factory(canvas, props, {
90
+ onCapabilities(value) {
91
+ if (disposed) return;
92
+ capabilities = value;
93
+ callbacks.onCapabilities?.(value);
94
+ },
95
+ onError(error) {
96
+ if (!disposed) lease.fail(error);
97
+ },
98
+ onReady() {
99
+ if (!disposed) queueMicrotask(commands);
100
+ },
101
+ onPaint(settled = true) {
102
+ if (disposed || !settled) return;
103
+ if (!ready) {
104
+ ready = true;
105
+ lease.painted();
106
+ callbacks.onReady?.();
107
+ }
108
+ if (cachedKey !== cacheKey) {
109
+ const image = document.createElement('canvas');
110
+ image.width = canvas.width;
111
+ image.height = canvas.height;
112
+ image.getContext('2d').drawImage(canvas, 0, 0);
113
+ snapshots.delete(cacheKey);
114
+ snapshots.set(cacheKey, { image, capabilities });
115
+ if (snapshots.size > 64)
116
+ snapshots.delete(snapshots.keys().next().value);
117
+ cachedKey = cacheKey;
118
+ for (const receive of waiting.get(cacheKey) ?? []) receive();
119
+ }
120
+ callbacks.onPaint?.();
121
+ },
122
+ });
123
+ controller = created;
124
+ created.update(props, true);
125
+ return created;
126
+ } finally {
127
+ starting = false;
128
+ }
129
+ },
130
+ suspend(value) {
131
+ lastDiagnostics = value.diagnostics?.() ?? lastDiagnostics;
132
+ value.dispose();
133
+ if (controller === value) controller = undefined;
134
+ },
135
+ error(error) {
136
+ if (!disposed) callbacks.onError?.(error);
137
+ },
138
+ });
139
+ function paintSnapshot() {
140
+ if (disposed || ready || controller || starting) return;
141
+ const saved = snapshots.get(cacheKey);
142
+ if (!saved) return;
143
+ canvas.width = saved.image.width;
144
+ canvas.height = saved.image.height;
145
+ canvas.getContext('2d').drawImage(saved.image, 0, 0);
146
+ ready = true;
147
+ cachedKey = cacheKey;
148
+ capabilities = saved.capabilities;
149
+ callbacks.onCapabilities?.(capabilities);
150
+ callbacks.onReady?.();
151
+ callbacks.onPaint?.();
152
+ refresh();
153
+ }
154
+ function unwatch() {
155
+ const watchers = waiting.get(cacheKey);
156
+ watchers?.delete(paintSnapshot);
157
+ if (watchers?.size === 0) waiting.delete(cacheKey);
158
+ }
159
+ function appearance() {
160
+ const next = fingerprint();
161
+ if (next === cacheKey) return;
162
+ unwatch();
163
+ cacheKey = next;
164
+ ready = false;
165
+ if (!waiting.has(cacheKey)) waiting.set(cacheKey, new Set());
166
+ waiting.get(cacheKey).add(paintSnapshot);
167
+ paintSnapshot();
168
+ }
169
+ const update = (next) => {
170
+ if (disposed) return;
171
+ const work =
172
+ next.workingKey !== undefined && next.workingKey !== props.workingKey;
173
+ const reaction =
174
+ next.reactionKey !== undefined && next.reactionKey !== props.reactionKey;
175
+ props = next;
176
+ if (still()) {
177
+ pendingWork = false;
178
+ pendingReaction = false;
179
+ }
180
+ appearance();
181
+ const queueCommands = !controller?.diagnostics?.()?.ready;
182
+ if (!still() && (work || reaction)) {
183
+ if (queueCommands) {
184
+ pendingWork ||= work;
185
+ pendingReaction ||= reaction;
186
+ }
187
+ promote(
188
+ work
189
+ ? 2500 * Math.max(1, Math.min(10, props.workingCycles || 1)) + 5000
190
+ : 5000,
191
+ );
192
+ }
193
+ controller?.update(props, queueCommands);
194
+ refresh();
195
+ };
196
+ const enter = () => {
197
+ if (props.interactive) {
198
+ hovered = true;
199
+ refresh();
200
+ }
201
+ };
202
+ const leave = () => {
203
+ hovered = false;
204
+ refresh();
205
+ };
206
+ const down = (event) => {
207
+ if (!props.interactive || event.button !== 0 || !event.isPrimary || still())
208
+ return;
209
+ // Cold surfaces cannot receive the original pointer-down yet. Replay one
210
+ // original reaction once ready; warm surfaces receive their normal events.
211
+ if (!controller || !controller.diagnostics?.()?.ready)
212
+ pendingReaction = true;
213
+ promote();
214
+ };
215
+ canvas.addEventListener('pointerenter', enter);
216
+ canvas.addEventListener('pointerleave', leave);
217
+ canvas.addEventListener('pointerdown', down, true);
218
+ const intersection = new IntersectionObserver((entries) => {
219
+ visible = entries[0]?.isIntersecting === true;
220
+ refresh();
221
+ });
222
+ intersection.observe(canvas);
223
+ const resize = new ResizeObserver(() => {
224
+ appearance();
225
+ refresh();
226
+ });
227
+ resize.observe(canvas);
228
+ document.addEventListener('visibilitychange', refresh);
229
+ appearance();
230
+ refresh();
231
+ return {
232
+ update,
233
+ diagnostics: () => ({
234
+ ...lastDiagnostics,
235
+ ...controller?.diagnostics?.(),
236
+ ready,
237
+ pending: !ready || !!controller?.diagnostics?.()?.pending,
238
+ suspended: !controller,
239
+ }),
240
+ dispose() {
241
+ if (disposed) return;
242
+ disposed = true;
243
+ clearTimeout(timer);
244
+ unwatch();
245
+ intersection.disconnect();
246
+ resize.disconnect();
247
+ canvas.removeEventListener('pointerenter', enter);
248
+ canvas.removeEventListener('pointerleave', leave);
249
+ canvas.removeEventListener('pointerdown', down, true);
250
+ document.removeEventListener('visibilitychange', refresh);
251
+ lease.dispose();
252
+ },
253
+ };
254
+ }
255
+ export const managedAvatarStats = () => ({
256
+ ...renderBudget.stats(),
257
+ snapshots: snapshots.size,
258
+ });