@buoy-gg/shared-ui 7.0.35 → 7.0.38

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 (332) hide show
  1. package/README.md +33 -26
  2. package/floating.d.ts +1 -0
  3. package/floating.js +2 -0
  4. package/lib/commonjs/JsModal.js +16 -1
  5. package/lib/commonjs/JsModal.web.js +16 -1
  6. package/lib/commonjs/dataViewer/CyberpunkInput.js +6 -1
  7. package/lib/commonjs/dataViewer/LiveExplorer.js +28 -16
  8. package/lib/commonjs/hooks/safe-area-impl.js +1 -1
  9. package/lib/commonjs/icons/ReactQueryIcon.js +9 -161
  10. package/lib/commonjs/icons/SentryBugIcon.js +9 -171
  11. package/lib/commonjs/icons/index.js +7 -0
  12. package/lib/commonjs/index.js +105 -6
  13. package/lib/commonjs/license/AccountSetup.js +56 -0
  14. package/lib/commonjs/license/AccountSetup.web.js +81 -0
  15. package/lib/commonjs/license/FeatureGate.js +10 -43
  16. package/lib/commonjs/license/FreeAccountPrompt.js +35 -12
  17. package/lib/commonjs/license/index.js +0 -6
  18. package/lib/commonjs/license/licenseModule.js +56 -36
  19. package/lib/commonjs/license/tierLimits.js +12 -63
  20. package/lib/commonjs/storage/devToolsStorageKeys.js +8 -1
  21. package/lib/commonjs/stores/BaseEventStore.js +21 -5
  22. package/lib/commonjs/stores/createToolStore.js +21 -3
  23. package/lib/commonjs/stores/floatingToolStore.js +71 -0
  24. package/lib/commonjs/stores/floatingToolStore.test.js +112 -0
  25. package/lib/commonjs/sync/keyedArrays.js +209 -0
  26. package/lib/commonjs/sync/toolActionRegistry.js +85 -2
  27. package/lib/commonjs/sync/toolAttention.test.js +51 -0
  28. package/lib/commonjs/sync/toolUiBridge.js +58 -0
  29. package/lib/commonjs/sync/typedEdit.js +228 -0
  30. package/lib/commonjs/sync/valuePath.js +337 -0
  31. package/lib/commonjs/sync/valueShape.js +161 -0
  32. package/lib/commonjs/ui/backgrounds/README.md +52 -0
  33. package/lib/commonjs/ui/backgrounds/ToolBackground.js +4 -2
  34. package/lib/commonjs/ui/backgrounds/index.js +8 -1
  35. package/lib/commonjs/ui/backgrounds/registry.js +8 -0
  36. package/lib/commonjs/ui/backgrounds/variants/wormhole/motion.js +48 -0
  37. package/lib/commonjs/ui/backgrounds/variants/wormhole/textures.js +3 -0
  38. package/lib/commonjs/ui/backgrounds/variants/wormhole.js +133 -0
  39. package/lib/commonjs/ui/components/ClipboardHintBanner.js +5 -6
  40. package/lib/commonjs/ui/components/CompactRow.js +94 -74
  41. package/lib/commonjs/ui/components/DraggableHeader.js +16 -1
  42. package/lib/commonjs/ui/components/ExpandablePopover.js +38 -6
  43. package/lib/commonjs/ui/components/HeaderSearchButton.js +17 -4
  44. package/lib/commonjs/ui/floating/FloatingTool.js +1010 -0
  45. package/lib/commonjs/ui/floating/FloatingTool.web.js +591 -0
  46. package/lib/commonjs/ui/floating/FloatingToolHost.js +32 -0
  47. package/lib/commonjs/ui/floating/FloatingToolHost.web.js +28 -0
  48. package/lib/commonjs/ui/floating/index.js +105 -0
  49. package/lib/commonjs/ui/floating/index.web.js +105 -0
  50. package/lib/commonjs/ui/floating/onboardingConstants.js +70 -0
  51. package/lib/commonjs/ui/floating/onboardingConstants.web.js +34 -0
  52. package/lib/commonjs/ui/gameUI/constants/gameUIColors.js +3 -1
  53. package/lib/commonjs/ui/index.js +118 -2
  54. package/lib/commonjs/ui/night/nightTheme.js +10 -0
  55. package/lib/commonjs/ui/night/primitives.js +22 -5
  56. package/lib/commonjs/ui/otto/OttoSceneView.js +69 -0
  57. package/lib/commonjs/ui/otto/index.js +22 -0
  58. package/lib/commonjs/ui/otto/ottoEngine.js +10 -7
  59. package/lib/commonjs/ui/otto/ottoScenes.js +949 -0
  60. package/lib/commonjs/utils/minimalSuperJSON.js +13 -3
  61. package/lib/module/JsModal.js +16 -1
  62. package/lib/module/JsModal.web.js +16 -1
  63. package/lib/module/dataViewer/CyberpunkInput.js +6 -1
  64. package/lib/module/dataViewer/LiveExplorer.js +28 -16
  65. package/lib/module/hooks/safe-area-impl.js +1 -1
  66. package/lib/module/icons/ReactQueryIcon.js +9 -161
  67. package/lib/module/icons/SentryBugIcon.js +9 -171
  68. package/lib/module/icons/index.js +3 -1
  69. package/lib/module/index.js +8 -1
  70. package/lib/module/license/AccountSetup.js +52 -0
  71. package/lib/module/license/AccountSetup.web.js +77 -0
  72. package/lib/module/license/FeatureGate.js +10 -43
  73. package/lib/module/license/FreeAccountPrompt.js +35 -12
  74. package/lib/module/license/index.js +1 -1
  75. package/lib/module/license/licenseModule.js +50 -35
  76. package/lib/module/license/tierLimits.js +13 -63
  77. package/lib/module/storage/devToolsStorageKeys.js +8 -1
  78. package/lib/module/stores/BaseEventStore.js +21 -5
  79. package/lib/module/stores/createToolStore.js +21 -3
  80. package/lib/module/stores/floatingToolStore.js +61 -0
  81. package/lib/module/stores/floatingToolStore.test.js +111 -0
  82. package/lib/module/sync/keyedArrays.js +204 -0
  83. package/lib/module/sync/toolActionRegistry.js +84 -2
  84. package/lib/module/sync/toolAttention.test.js +50 -0
  85. package/lib/module/sync/toolUiBridge.js +55 -0
  86. package/lib/module/sync/typedEdit.js +220 -0
  87. package/lib/module/sync/valuePath.js +330 -0
  88. package/lib/module/sync/valueShape.js +153 -0
  89. package/lib/module/ui/backgrounds/README.md +52 -0
  90. package/lib/module/ui/backgrounds/ToolBackground.js +4 -2
  91. package/lib/module/ui/backgrounds/index.js +2 -1
  92. package/lib/module/ui/backgrounds/registry.js +8 -0
  93. package/lib/module/ui/backgrounds/variants/wormhole/motion.js +44 -0
  94. package/lib/module/ui/backgrounds/variants/wormhole/textures.js +3 -0
  95. package/lib/module/ui/backgrounds/variants/wormhole.js +129 -0
  96. package/lib/module/ui/components/ClipboardHintBanner.js +5 -6
  97. package/lib/module/ui/components/CompactRow.js +94 -74
  98. package/lib/module/ui/components/DraggableHeader.js +16 -1
  99. package/lib/module/ui/components/ExpandablePopover.js +38 -6
  100. package/lib/module/ui/components/HeaderSearchButton.js +17 -4
  101. package/lib/module/ui/floating/FloatingTool.js +1003 -0
  102. package/lib/module/ui/floating/FloatingTool.web.js +590 -0
  103. package/lib/module/ui/floating/FloatingToolHost.js +29 -0
  104. package/lib/module/ui/floating/FloatingToolHost.web.js +25 -0
  105. package/lib/module/ui/floating/index.js +6 -0
  106. package/lib/module/ui/floating/index.web.js +6 -0
  107. package/lib/module/ui/floating/onboardingConstants.js +64 -0
  108. package/lib/module/ui/floating/onboardingConstants.web.js +27 -0
  109. package/lib/module/ui/gameUI/constants/gameUIColors.js +3 -1
  110. package/lib/module/ui/index.js +5 -1
  111. package/lib/module/ui/night/nightTheme.js +10 -0
  112. package/lib/module/ui/night/primitives.js +22 -5
  113. package/lib/module/ui/otto/OttoSceneView.js +64 -0
  114. package/lib/module/ui/otto/index.js +3 -1
  115. package/lib/module/ui/otto/ottoEngine.js +10 -7
  116. package/lib/module/ui/otto/ottoScenes.js +942 -0
  117. package/lib/module/utils/minimalSuperJSON.js +13 -3
  118. package/lib/typescript/commonjs/JsModal.d.ts +43 -2
  119. package/lib/typescript/commonjs/JsModal.d.ts.map +1 -1
  120. package/lib/typescript/commonjs/JsModal.web.d.ts +5 -2
  121. package/lib/typescript/commonjs/JsModal.web.d.ts.map +1 -1
  122. package/lib/typescript/commonjs/dataViewer/CyberpunkInput.d.ts.map +1 -1
  123. package/lib/typescript/commonjs/dataViewer/LiveExplorer.d.ts.map +1 -1
  124. package/lib/typescript/commonjs/hooks/safe-area-impl.d.ts +1 -1
  125. package/lib/typescript/commonjs/icons/ReactQueryIcon.d.ts +1 -2
  126. package/lib/typescript/commonjs/icons/ReactQueryIcon.d.ts.map +1 -1
  127. package/lib/typescript/commonjs/icons/SentryBugIcon.d.ts +1 -2
  128. package/lib/typescript/commonjs/icons/SentryBugIcon.d.ts.map +1 -1
  129. package/lib/typescript/commonjs/icons/index.d.ts +1 -1
  130. package/lib/typescript/commonjs/icons/index.d.ts.map +1 -1
  131. package/lib/typescript/commonjs/index.d.ts +8 -1
  132. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  133. package/lib/typescript/commonjs/license/AccountSetup.d.ts +4 -0
  134. package/lib/typescript/commonjs/license/AccountSetup.d.ts.map +1 -0
  135. package/lib/typescript/commonjs/license/AccountSetup.web.d.ts +2 -0
  136. package/lib/typescript/commonjs/license/AccountSetup.web.d.ts.map +1 -0
  137. package/lib/typescript/commonjs/license/FeatureGate.d.ts +3 -19
  138. package/lib/typescript/commonjs/license/FeatureGate.d.ts.map +1 -1
  139. package/lib/typescript/commonjs/license/FreeAccountPrompt.d.ts +8 -11
  140. package/lib/typescript/commonjs/license/FreeAccountPrompt.d.ts.map +1 -1
  141. package/lib/typescript/commonjs/license/index.d.ts +1 -1
  142. package/lib/typescript/commonjs/license/index.d.ts.map +1 -1
  143. package/lib/typescript/commonjs/license/licenseModule.d.ts +18 -31
  144. package/lib/typescript/commonjs/license/licenseModule.d.ts.map +1 -1
  145. package/lib/typescript/commonjs/license/tierLimits.d.ts +9 -52
  146. package/lib/typescript/commonjs/license/tierLimits.d.ts.map +1 -1
  147. package/lib/typescript/commonjs/storage/devToolsStorageKeys.d.ts +6 -0
  148. package/lib/typescript/commonjs/storage/devToolsStorageKeys.d.ts.map +1 -1
  149. package/lib/typescript/commonjs/stores/BaseEventStore.d.ts.map +1 -1
  150. package/lib/typescript/commonjs/stores/createToolStore.d.ts.map +1 -1
  151. package/lib/typescript/commonjs/stores/floatingToolStore.d.ts +27 -0
  152. package/lib/typescript/commonjs/stores/floatingToolStore.d.ts.map +1 -0
  153. package/lib/typescript/commonjs/stores/floatingToolStore.test.d.ts +2 -0
  154. package/lib/typescript/commonjs/stores/floatingToolStore.test.d.ts.map +1 -0
  155. package/lib/typescript/commonjs/sync/keyedArrays.d.ts +35 -0
  156. package/lib/typescript/commonjs/sync/keyedArrays.d.ts.map +1 -0
  157. package/lib/typescript/commonjs/sync/toolActionRegistry.d.ts +4 -32
  158. package/lib/typescript/commonjs/sync/toolActionRegistry.d.ts.map +1 -1
  159. package/lib/typescript/commonjs/sync/toolAttention.test.d.ts +2 -0
  160. package/lib/typescript/commonjs/sync/toolAttention.test.d.ts.map +1 -0
  161. package/lib/typescript/commonjs/sync/toolUiBridge.d.ts +25 -0
  162. package/lib/typescript/commonjs/sync/toolUiBridge.d.ts.map +1 -1
  163. package/lib/typescript/commonjs/sync/typedEdit.d.ts +70 -0
  164. package/lib/typescript/commonjs/sync/typedEdit.d.ts.map +1 -0
  165. package/lib/typescript/commonjs/sync/valuePath.d.ts +52 -0
  166. package/lib/typescript/commonjs/sync/valuePath.d.ts.map +1 -0
  167. package/lib/typescript/commonjs/sync/valueShape.d.ts +77 -0
  168. package/lib/typescript/commonjs/sync/valueShape.d.ts.map +1 -0
  169. package/lib/typescript/commonjs/ui/backgrounds/ToolBackground.d.ts +7 -1
  170. package/lib/typescript/commonjs/ui/backgrounds/ToolBackground.d.ts.map +1 -1
  171. package/lib/typescript/commonjs/ui/backgrounds/index.d.ts +2 -1
  172. package/lib/typescript/commonjs/ui/backgrounds/index.d.ts.map +1 -1
  173. package/lib/typescript/commonjs/ui/backgrounds/registry.d.ts.map +1 -1
  174. package/lib/typescript/commonjs/ui/backgrounds/types.d.ts +11 -1
  175. package/lib/typescript/commonjs/ui/backgrounds/types.d.ts.map +1 -1
  176. package/lib/typescript/commonjs/ui/backgrounds/variants/wormhole/motion.d.ts +24 -0
  177. package/lib/typescript/commonjs/ui/backgrounds/variants/wormhole/motion.d.ts.map +1 -0
  178. package/lib/typescript/commonjs/ui/backgrounds/variants/wormhole/textures.d.ts +13 -0
  179. package/lib/typescript/commonjs/ui/backgrounds/variants/wormhole/textures.d.ts.map +1 -0
  180. package/lib/typescript/commonjs/ui/backgrounds/variants/wormhole.d.ts +3 -0
  181. package/lib/typescript/commonjs/ui/backgrounds/variants/wormhole.d.ts.map +1 -0
  182. package/lib/typescript/commonjs/ui/components/ClipboardHintBanner.d.ts.map +1 -1
  183. package/lib/typescript/commonjs/ui/components/CompactRow.d.ts +8 -1
  184. package/lib/typescript/commonjs/ui/components/CompactRow.d.ts.map +1 -1
  185. package/lib/typescript/commonjs/ui/components/DraggableHeader.d.ts +4 -1
  186. package/lib/typescript/commonjs/ui/components/DraggableHeader.d.ts.map +1 -1
  187. package/lib/typescript/commonjs/ui/components/ExpandablePopover.d.ts +14 -1
  188. package/lib/typescript/commonjs/ui/components/ExpandablePopover.d.ts.map +1 -1
  189. package/lib/typescript/commonjs/ui/components/HeaderSearchButton.d.ts +7 -1
  190. package/lib/typescript/commonjs/ui/components/HeaderSearchButton.d.ts.map +1 -1
  191. package/lib/typescript/commonjs/ui/floating/FloatingTool.d.ts +79 -0
  192. package/lib/typescript/commonjs/ui/floating/FloatingTool.d.ts.map +1 -0
  193. package/lib/typescript/commonjs/ui/floating/FloatingTool.web.d.ts +64 -0
  194. package/lib/typescript/commonjs/ui/floating/FloatingTool.web.d.ts.map +1 -0
  195. package/lib/typescript/commonjs/ui/floating/FloatingToolHost.d.ts +3 -0
  196. package/lib/typescript/commonjs/ui/floating/FloatingToolHost.d.ts.map +1 -0
  197. package/lib/typescript/commonjs/ui/floating/FloatingToolHost.web.d.ts +3 -0
  198. package/lib/typescript/commonjs/ui/floating/FloatingToolHost.web.d.ts.map +1 -0
  199. package/lib/typescript/commonjs/ui/floating/index.d.ts +7 -0
  200. package/lib/typescript/commonjs/ui/floating/index.d.ts.map +1 -0
  201. package/lib/typescript/commonjs/ui/floating/index.web.d.ts +7 -0
  202. package/lib/typescript/commonjs/ui/floating/index.web.d.ts.map +1 -0
  203. package/lib/typescript/commonjs/ui/floating/onboardingConstants.d.ts +30 -0
  204. package/lib/typescript/commonjs/ui/floating/onboardingConstants.d.ts.map +1 -0
  205. package/lib/typescript/commonjs/ui/floating/onboardingConstants.web.d.ts +13 -0
  206. package/lib/typescript/commonjs/ui/floating/onboardingConstants.web.d.ts.map +1 -0
  207. package/lib/typescript/commonjs/ui/gameUI/constants/gameUIColors.d.ts +2 -0
  208. package/lib/typescript/commonjs/ui/gameUI/constants/gameUIColors.d.ts.map +1 -1
  209. package/lib/typescript/commonjs/ui/index.d.ts +6 -0
  210. package/lib/typescript/commonjs/ui/index.d.ts.map +1 -1
  211. package/lib/typescript/commonjs/ui/night/nightTheme.d.ts +10 -0
  212. package/lib/typescript/commonjs/ui/night/nightTheme.d.ts.map +1 -1
  213. package/lib/typescript/commonjs/ui/night/primitives.d.ts +10 -3
  214. package/lib/typescript/commonjs/ui/night/primitives.d.ts.map +1 -1
  215. package/lib/typescript/commonjs/ui/otto/OttoSceneView.d.ts +30 -0
  216. package/lib/typescript/commonjs/ui/otto/OttoSceneView.d.ts.map +1 -0
  217. package/lib/typescript/commonjs/ui/otto/index.d.ts +2 -0
  218. package/lib/typescript/commonjs/ui/otto/index.d.ts.map +1 -1
  219. package/lib/typescript/commonjs/ui/otto/ottoEngine.d.ts +1 -1
  220. package/lib/typescript/commonjs/ui/otto/ottoEngine.d.ts.map +1 -1
  221. package/lib/typescript/commonjs/ui/otto/ottoScenes.d.ts +75 -0
  222. package/lib/typescript/commonjs/ui/otto/ottoScenes.d.ts.map +1 -0
  223. package/lib/typescript/commonjs/utils/minimalSuperJSON.d.ts.map +1 -1
  224. package/lib/typescript/module/JsModal.d.ts +43 -2
  225. package/lib/typescript/module/JsModal.d.ts.map +1 -1
  226. package/lib/typescript/module/JsModal.web.d.ts +5 -2
  227. package/lib/typescript/module/JsModal.web.d.ts.map +1 -1
  228. package/lib/typescript/module/dataViewer/CyberpunkInput.d.ts.map +1 -1
  229. package/lib/typescript/module/dataViewer/LiveExplorer.d.ts.map +1 -1
  230. package/lib/typescript/module/hooks/safe-area-impl.d.ts +1 -1
  231. package/lib/typescript/module/icons/ReactQueryIcon.d.ts +1 -2
  232. package/lib/typescript/module/icons/ReactQueryIcon.d.ts.map +1 -1
  233. package/lib/typescript/module/icons/SentryBugIcon.d.ts +1 -2
  234. package/lib/typescript/module/icons/SentryBugIcon.d.ts.map +1 -1
  235. package/lib/typescript/module/icons/index.d.ts +1 -1
  236. package/lib/typescript/module/icons/index.d.ts.map +1 -1
  237. package/lib/typescript/module/index.d.ts +8 -1
  238. package/lib/typescript/module/index.d.ts.map +1 -1
  239. package/lib/typescript/module/license/AccountSetup.d.ts +4 -0
  240. package/lib/typescript/module/license/AccountSetup.d.ts.map +1 -0
  241. package/lib/typescript/module/license/AccountSetup.web.d.ts +2 -0
  242. package/lib/typescript/module/license/AccountSetup.web.d.ts.map +1 -0
  243. package/lib/typescript/module/license/FeatureGate.d.ts +3 -19
  244. package/lib/typescript/module/license/FeatureGate.d.ts.map +1 -1
  245. package/lib/typescript/module/license/FreeAccountPrompt.d.ts +8 -11
  246. package/lib/typescript/module/license/FreeAccountPrompt.d.ts.map +1 -1
  247. package/lib/typescript/module/license/index.d.ts +1 -1
  248. package/lib/typescript/module/license/index.d.ts.map +1 -1
  249. package/lib/typescript/module/license/licenseModule.d.ts +18 -31
  250. package/lib/typescript/module/license/licenseModule.d.ts.map +1 -1
  251. package/lib/typescript/module/license/tierLimits.d.ts +9 -52
  252. package/lib/typescript/module/license/tierLimits.d.ts.map +1 -1
  253. package/lib/typescript/module/storage/devToolsStorageKeys.d.ts +6 -0
  254. package/lib/typescript/module/storage/devToolsStorageKeys.d.ts.map +1 -1
  255. package/lib/typescript/module/stores/BaseEventStore.d.ts.map +1 -1
  256. package/lib/typescript/module/stores/createToolStore.d.ts.map +1 -1
  257. package/lib/typescript/module/stores/floatingToolStore.d.ts +27 -0
  258. package/lib/typescript/module/stores/floatingToolStore.d.ts.map +1 -0
  259. package/lib/typescript/module/stores/floatingToolStore.test.d.ts +2 -0
  260. package/lib/typescript/module/stores/floatingToolStore.test.d.ts.map +1 -0
  261. package/lib/typescript/module/sync/keyedArrays.d.ts +35 -0
  262. package/lib/typescript/module/sync/keyedArrays.d.ts.map +1 -0
  263. package/lib/typescript/module/sync/toolActionRegistry.d.ts +4 -32
  264. package/lib/typescript/module/sync/toolActionRegistry.d.ts.map +1 -1
  265. package/lib/typescript/module/sync/toolAttention.test.d.ts +2 -0
  266. package/lib/typescript/module/sync/toolAttention.test.d.ts.map +1 -0
  267. package/lib/typescript/module/sync/toolUiBridge.d.ts +25 -0
  268. package/lib/typescript/module/sync/toolUiBridge.d.ts.map +1 -1
  269. package/lib/typescript/module/sync/typedEdit.d.ts +70 -0
  270. package/lib/typescript/module/sync/typedEdit.d.ts.map +1 -0
  271. package/lib/typescript/module/sync/valuePath.d.ts +52 -0
  272. package/lib/typescript/module/sync/valuePath.d.ts.map +1 -0
  273. package/lib/typescript/module/sync/valueShape.d.ts +77 -0
  274. package/lib/typescript/module/sync/valueShape.d.ts.map +1 -0
  275. package/lib/typescript/module/ui/backgrounds/ToolBackground.d.ts +7 -1
  276. package/lib/typescript/module/ui/backgrounds/ToolBackground.d.ts.map +1 -1
  277. package/lib/typescript/module/ui/backgrounds/index.d.ts +2 -1
  278. package/lib/typescript/module/ui/backgrounds/index.d.ts.map +1 -1
  279. package/lib/typescript/module/ui/backgrounds/registry.d.ts.map +1 -1
  280. package/lib/typescript/module/ui/backgrounds/types.d.ts +11 -1
  281. package/lib/typescript/module/ui/backgrounds/types.d.ts.map +1 -1
  282. package/lib/typescript/module/ui/backgrounds/variants/wormhole/motion.d.ts +24 -0
  283. package/lib/typescript/module/ui/backgrounds/variants/wormhole/motion.d.ts.map +1 -0
  284. package/lib/typescript/module/ui/backgrounds/variants/wormhole/textures.d.ts +13 -0
  285. package/lib/typescript/module/ui/backgrounds/variants/wormhole/textures.d.ts.map +1 -0
  286. package/lib/typescript/module/ui/backgrounds/variants/wormhole.d.ts +3 -0
  287. package/lib/typescript/module/ui/backgrounds/variants/wormhole.d.ts.map +1 -0
  288. package/lib/typescript/module/ui/components/ClipboardHintBanner.d.ts.map +1 -1
  289. package/lib/typescript/module/ui/components/CompactRow.d.ts +8 -1
  290. package/lib/typescript/module/ui/components/CompactRow.d.ts.map +1 -1
  291. package/lib/typescript/module/ui/components/DraggableHeader.d.ts +4 -1
  292. package/lib/typescript/module/ui/components/DraggableHeader.d.ts.map +1 -1
  293. package/lib/typescript/module/ui/components/ExpandablePopover.d.ts +14 -1
  294. package/lib/typescript/module/ui/components/ExpandablePopover.d.ts.map +1 -1
  295. package/lib/typescript/module/ui/components/HeaderSearchButton.d.ts +7 -1
  296. package/lib/typescript/module/ui/components/HeaderSearchButton.d.ts.map +1 -1
  297. package/lib/typescript/module/ui/floating/FloatingTool.d.ts +79 -0
  298. package/lib/typescript/module/ui/floating/FloatingTool.d.ts.map +1 -0
  299. package/lib/typescript/module/ui/floating/FloatingTool.web.d.ts +64 -0
  300. package/lib/typescript/module/ui/floating/FloatingTool.web.d.ts.map +1 -0
  301. package/lib/typescript/module/ui/floating/FloatingToolHost.d.ts +3 -0
  302. package/lib/typescript/module/ui/floating/FloatingToolHost.d.ts.map +1 -0
  303. package/lib/typescript/module/ui/floating/FloatingToolHost.web.d.ts +3 -0
  304. package/lib/typescript/module/ui/floating/FloatingToolHost.web.d.ts.map +1 -0
  305. package/lib/typescript/module/ui/floating/index.d.ts +7 -0
  306. package/lib/typescript/module/ui/floating/index.d.ts.map +1 -0
  307. package/lib/typescript/module/ui/floating/index.web.d.ts +7 -0
  308. package/lib/typescript/module/ui/floating/index.web.d.ts.map +1 -0
  309. package/lib/typescript/module/ui/floating/onboardingConstants.d.ts +30 -0
  310. package/lib/typescript/module/ui/floating/onboardingConstants.d.ts.map +1 -0
  311. package/lib/typescript/module/ui/floating/onboardingConstants.web.d.ts +13 -0
  312. package/lib/typescript/module/ui/floating/onboardingConstants.web.d.ts.map +1 -0
  313. package/lib/typescript/module/ui/gameUI/constants/gameUIColors.d.ts +2 -0
  314. package/lib/typescript/module/ui/gameUI/constants/gameUIColors.d.ts.map +1 -1
  315. package/lib/typescript/module/ui/index.d.ts +6 -0
  316. package/lib/typescript/module/ui/index.d.ts.map +1 -1
  317. package/lib/typescript/module/ui/night/nightTheme.d.ts +10 -0
  318. package/lib/typescript/module/ui/night/nightTheme.d.ts.map +1 -1
  319. package/lib/typescript/module/ui/night/primitives.d.ts +10 -3
  320. package/lib/typescript/module/ui/night/primitives.d.ts.map +1 -1
  321. package/lib/typescript/module/ui/otto/OttoSceneView.d.ts +30 -0
  322. package/lib/typescript/module/ui/otto/OttoSceneView.d.ts.map +1 -0
  323. package/lib/typescript/module/ui/otto/index.d.ts +2 -0
  324. package/lib/typescript/module/ui/otto/index.d.ts.map +1 -1
  325. package/lib/typescript/module/ui/otto/ottoEngine.d.ts +1 -1
  326. package/lib/typescript/module/ui/otto/ottoEngine.d.ts.map +1 -1
  327. package/lib/typescript/module/ui/otto/ottoScenes.d.ts +75 -0
  328. package/lib/typescript/module/ui/otto/ottoScenes.d.ts.map +1 -0
  329. package/lib/typescript/module/utils/minimalSuperJSON.d.ts.map +1 -1
  330. package/package.json +25 -5
  331. package/scripts/generate-wormhole-textures.cjs +261 -0
  332. package/scripts/test-wormhole-motion.cjs +59 -0
@@ -1,14 +1,13 @@
1
1
  /**
2
- * The upsell an ANONYMOUS user sees — someone with no key at all.
2
+ * The account setup sheet — what a locked manager shows instead of the tools.
3
3
  *
4
- * Deliberately not the Pro modal. Their next step is free and takes about
5
- * thirty seconds, so asking them for money would be asking the wrong question
6
- * at the wrong moment, and would suppress exactly the signup this exists to
7
- * produce. Pro is still offered, as a secondary action.
4
+ * Deliberately not the Pro modal. The next step is a free account and takes
5
+ * about thirty seconds, so asking for money here would be asking the wrong
6
+ * question at the wrong moment. Pro is still offered, as a secondary action.
8
7
  *
9
- * The command is shown inline and copyable rather than linked, because there is
10
- * no grace period: someone who just watched their limits shrink needs the fix
11
- * in front of them, not a link to a page that has a link to a command.
8
+ * The command is shown inline and copyable rather than linked, because
9
+ * someone who cannot open the tools needs the fix in front of them, not a link
10
+ * to a page that has a link to a command.
12
11
  */
13
12
  import React from "react";
14
13
  /** The one thing a reader has to be able to act on. */
@@ -16,8 +15,6 @@ export declare const LOGIN_COMMAND = "npx buoy login";
16
15
  export interface FreeAccountPromptProps {
17
16
  visible: boolean;
18
17
  onClose: () => void;
19
- /** What the user just bumped into, e.g. "Network requests". */
20
- featureName?: string;
21
18
  }
22
- export declare const FreeAccountPrompt: ({ visible, onClose, featureName, }: FreeAccountPromptProps) => React.JSX.Element | null;
19
+ export declare const FreeAccountPrompt: ({ visible, onClose, }: FreeAccountPromptProps) => React.JSX.Element | null;
23
20
  //# sourceMappingURL=FreeAccountPrompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FreeAccountPrompt.d.ts","sourceRoot":"","sources":["../../../../src/license/FreeAccountPrompt.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AAcxE,uDAAuD;AACvD,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAE9C,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,iBAAiB,GAAI,oCAI/B,sBAAsB,6BAoFxB,CAAC"}
1
+ {"version":3,"file":"FreeAccountPrompt.d.ts","sourceRoot":"","sources":["../../../../src/license/FreeAccountPrompt.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AAexE,uDAAuD;AACvD,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAE9C,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,eAAO,MAAM,iBAAiB,GAAI,uBAG/B,sBAAsB,6BAgGxB,CAAC"}
@@ -6,6 +6,6 @@ export type { FreeAccountPromptProps } from "./FreeAccountPrompt";
6
6
  export type { LicenseEntryModalProps, LicenseState } from "./LicenseEntryModal";
7
7
  export { getUseIsPro, getUseLicense, getUseTier, } from "./licenseModule";
8
8
  export type { BuoyTier } from "./licenseModule";
9
- export { TIER_LIMITS, useLimit, resolveEffectiveTier, freeKeyRaises } from "./tierLimits";
9
+ export { TIER_LIMITS, useLimit, resolveEffectiveTier } from "./tierLimits";
10
10
  export type { TierLimitKey } from "./tierLimits";
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/license/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACtI,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAEtH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACvE,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,YAAY,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAIhF,OAAO,EACL,WAAW,EACX,aAAa,EACb,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC1F,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/license/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACtI,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAEtH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACvE,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,YAAY,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAIhF,OAAO,EACL,WAAW,EACX,aAAa,EACb,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC3E,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
@@ -1,13 +1,13 @@
1
1
  /**
2
- * Centralized lazy loading of `@buoy-gg/license`.
2
+ * Centralized access of `@buoy-gg/license`.
3
3
  *
4
4
  * This is the SINGLE place any package resolves license hooks — tools must not
5
- * `require("@buoy-gg/license")` themselves. Lives in its own module (rather
5
+ * resolve the license module themselves. Lives in its own module (rather
6
6
  * than `./index`) so `tierLimits` can consume it without an import cycle.
7
7
  */
8
8
  import type { LicenseState as LicenseStateType } from "./LicenseEntryModal";
9
- /** Access tier. Mirrors BuoyTier in @buoy-gg/license. */
10
- export type BuoyTier = "anonymous" | "free" | "pro";
9
+ /** Tier. Mirrors BuoyTier in @buoy-gg/license. */
10
+ export type BuoyTier = "free" | "pro";
11
11
  /**
12
12
  * Get the useIsPro hook from @buoy-gg/license.
13
13
  * Falls back to () => false if the license package is not available.
@@ -23,33 +23,20 @@ export declare function getUseIsPro(): () => boolean;
23
23
  */
24
24
  export declare function getUseLicense(): (() => LicenseStateType) | null;
25
25
  /**
26
- * Get the useTier hook from @buoy-gg/license.
27
- *
28
- * Falls back to `"free"` — NOT `"anonymous"` — when the license package can't
29
- * be resolved. That deliberately matches the existing `getUseIsPro()` fallback,
30
- * which yields free-tier behavior today, and it picks the safer failure:
31
- *
32
- * - falling back to "anonymous" would let one bundler quirk silently cut every
33
- * legitimate user's limits by ~80%;
34
- * - falling back to "free" costs no revenue, because Pro still requires a key
35
- * that a live license server validated — this path can never grant Pro.
36
- *
37
- * Reaching it at all requires `@buoy-gg/license` to be missing, and it is a
38
- * hard dependency of `@buoy-gg/core`.
26
+ * Falls back to "free" without the license package. That grants nothing: a
27
+ * missing license module also means no account admission, and nothing is
28
+ * exposed without it.
39
29
  */
40
30
  export declare function getUseTier(): () => BuoyTier;
41
- /**
42
- * Whether the anonymous tier is switched on.
43
- *
44
- * The switch itself lives in @buoy-gg/license (see its config.ts) because the
45
- * Weekend Pass change has to flip at the same moment as the reduced limits, and
46
- * those live in different packages. Read through the same lazy loader as the
47
- * hooks so a missing license package degrades gracefully rather than throwing
48
- * at module load.
49
- *
50
- * Falls back to `false` — the anonymous tier off, everyone on free limits —
51
- * which matches the `getUseTier()` fallback of "free". A build that cannot
52
- * resolve the license package must never take limits AWAY from someone.
53
- */
54
- export declare function isAnonymousTierEnabled(): boolean;
31
+ export type AccountAccess = {
32
+ status: "initializing" | "locked" | "admitted";
33
+ reason: string | null;
34
+ validUntil: number | null;
35
+ };
36
+ export declare function getAccountAccess(): AccountAccess;
37
+ export declare function hasAccountAccess(): boolean;
38
+ export declare function assertAccountAccess(): void;
39
+ export declare function subscribeAccountAccess(listener: () => void): () => void;
40
+ export declare function getUseAccountAccess(): () => AccountAccess;
41
+ export declare function retryAccountAccess(): Promise<void>;
55
42
  //# sourceMappingURL=licenseModule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"licenseModule.d.ts","sourceRoot":"","sources":["../../../../src/license/licenseModule.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5E,yDAAyD;AACzD,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,KAAK,CAAC;AA4BpD;;;;;GAKG;AACH,wBAAgB,WAAW,IAAI,MAAM,OAAO,CAG3C;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,IAAI,CAAC,MAAM,gBAAgB,CAAC,GAAG,IAAI,CAG/D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,IAAI,MAAM,QAAQ,CAG3C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAGhD"}
1
+ {"version":3,"file":"licenseModule.d.ts","sourceRoot":"","sources":["../../../../src/license/licenseModule.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5E,kDAAkD;AAClD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;AAuBtC;;;;;GAKG;AACH,wBAAgB,WAAW,IAAI,MAAM,OAAO,CAG3C;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,IAAI,CAAC,MAAM,gBAAgB,CAAC,GAAG,IAAI,CAG/D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,MAAM,QAAQ,CAG3C;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,cAAc,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC/C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAYF,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AACD,wBAAgB,gBAAgB,IAAI,OAAO,CAAqD;AAChG,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AACD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAEvE;AACD,wBAAgB,mBAAmB,IAAI,MAAM,aAAa,CAGzD;AACD,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAKxD"}
@@ -1,111 +1,89 @@
1
1
  /**
2
- * Per-tier numeric limits — the ONLY thing that separates anonymous from free.
2
+ * Per-tier numeric limits — the ONLY thing that separates free from pro on a
3
+ * count.
3
4
  *
4
- * Every binary Pro gate (copy-to-clipboard, state editing, storage mutations,
5
- * navigation) is identical for both: locked. That keeps the tier split to one
6
- * table instead of scattered conditionals.
7
- *
8
- * The governing rule: **the free column never moves.** Anonymous is carved out
9
- * BELOW today's free tier — nothing is ever added to free in exchange for an
10
- * account, because that would come straight out of the Pro upgrade.
5
+ * Binary Pro gates (copy-to-clipboard, state editing, storage mutations,
6
+ * navigation) live in the tools themselves; this table is only for "how many".
7
+ * Whether the tools are usable at all is account admission, which is a
8
+ * separate question from the tier and is never expressed as a limit.
11
9
  */
12
10
  import { type BuoyTier } from "./licenseModule";
13
11
  interface TierLimit {
14
- /** No credential — a trial: every tool visible, much smaller caps. */
15
- readonly anonymous: number;
16
- /** A validated key on the Free policy. Today's free tier, unchanged. */
12
+ /** A validated key on the Free policy. */
17
13
  readonly free: number;
18
14
  /** A validated key on the Solo or Business policy. */
19
15
  readonly pro: number;
20
16
  }
21
17
  declare const LIMITS: {
22
18
  "network.requests": {
23
- anonymous: number;
24
19
  free: number;
25
20
  pro: number;
26
21
  };
27
22
  "network.saved": {
28
- anonymous: number;
29
23
  free: number;
30
24
  pro: number;
31
25
  };
32
26
  "network.overrideRules": {
33
- anonymous: number;
34
27
  free: number;
35
28
  pro: number;
36
29
  };
37
30
  "storage.events": {
38
- anonymous: number;
39
31
  free: number;
40
32
  pro: number;
41
33
  };
42
34
  "storage.keys": {
43
- anonymous: number;
44
35
  free: number;
45
36
  pro: number;
46
37
  };
47
38
  "storage.mmkvInstances": {
48
- anonymous: number;
49
39
  free: number;
50
40
  pro: number;
51
41
  };
52
42
  "redux.actions": {
53
- anonymous: number;
54
43
  free: number;
55
44
  pro: number;
56
45
  };
57
46
  "zustand.changes": {
58
- anonymous: number;
59
47
  free: number;
60
48
  pro: number;
61
49
  };
62
50
  "jotai.changes": {
63
- anonymous: number;
64
51
  free: number;
65
52
  pro: number;
66
53
  };
67
54
  "events.entries": {
68
- anonymous: number;
69
55
  free: number;
70
56
  pro: number;
71
57
  };
72
58
  "highlightUpdates.components": {
73
- anonymous: number;
74
59
  free: number;
75
60
  pro: number;
76
61
  };
77
62
  "highlightUpdates.historyEvents": {
78
- anonymous: number;
79
63
  free: number;
80
64
  pro: number;
81
65
  };
82
66
  "highlightUpdates.detailEvents": {
83
- anonymous: number;
84
67
  free: number;
85
68
  pro: number;
86
69
  };
87
70
  "routeEvents.entries": {
88
- anonymous: number;
89
71
  free: number;
90
72
  pro: number;
91
73
  };
92
74
  "timeMachine.snapshots": {
93
- anonymous: number;
94
75
  free: number;
95
76
  pro: number;
96
77
  };
97
78
  "perfMonitor.automationCases": {
98
- anonymous: number;
99
79
  free: number;
100
80
  pro: number;
101
81
  };
102
82
  "scenarios.saved": {
103
- anonymous: number;
104
83
  free: number;
105
84
  pro: number;
106
85
  };
107
86
  "scenarios.active": {
108
- anonymous: number;
109
87
  free: number;
110
88
  pro: number;
111
89
  };
@@ -116,10 +94,8 @@ export declare const TIER_LIMITS: Record<TierLimitKey, TierLimit>;
116
94
  * The tier whose limits actually apply.
117
95
  *
118
96
  * `hasProAccess` is `useIsPro()`, which is true for a real Pro license OR the
119
- * free Weekend Pass. Routing the Weekend Pass through here is what keeps
120
- * today's behavior intact: weekend users get Pro limits, exactly as they do
121
- * now. When the Weekend Pass is later gated to key-holders, that change lands
122
- * here for free — no limit call site has to know about it.
97
+ * Weekend Pass. Routing the Weekend Pass through here is what gives weekend
98
+ * users Pro limits without any limit call site having to know about it.
123
99
  */
124
100
  export declare function resolveEffectiveTier(tier: BuoyTier, hasProAccess: boolean): BuoyTier;
125
101
  /**
@@ -130,24 +106,5 @@ export declare function resolveEffectiveTier(tier: BuoyTier, hasProAccess: boole
130
106
  * directly in `slice(0, limit)` and `length >= limit` comparisons.
131
107
  */
132
108
  export declare function useLimit(key: TierLimitKey): number;
133
- /**
134
- * Whether claiming a FREE key would actually raise this limit right now.
135
- *
136
- * The anonymous upsell must never promise something a free key won't deliver.
137
- * Two ways it could lie, and this closes both:
138
- *
139
- * - **Pro-exclusive features.** Copy-to-clipboard, state editing, storage
140
- * mutations and navigation are locked for anonymous AND free alike. Telling
141
- * an anonymous user a free key opens them would be false.
142
- * - **Limits that are already equal.** Override rules and MMKV instances sit
143
- * at 1 for both tiers, so a key changes nothing there either.
144
- *
145
- * It also respects `ANONYMOUS_TIER_ENABLED`: while the anonymous tier is off,
146
- * an anonymous user is *already* getting the free limits, so there is nothing
147
- * to claim and this correctly returns false everywhere. That falls out of
148
- * asking `resolveEffectiveTier` rather than reading the table directly, so the
149
- * switch and the copy can never disagree.
150
- */
151
- export declare function freeKeyRaises(key: TierLimitKey): boolean;
152
109
  export {};
153
110
  //# sourceMappingURL=tierLimits.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tierLimits.d.ts","sourceRoot":"","sources":["../../../../src/license/tierLimits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,iBAAiB,CAAC;AAEzB,UAAU,SAAS;IACjB,sEAAsE;IACtE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCX,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,MAAM,CAAC;AAE/C,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,YAAY,EAAE,SAAS,CAAU,CAAC;AAEnE;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,QAAQ,EACd,YAAY,EAAE,OAAO,GACpB,QAAQ,CAMV;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAIlD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAMxD"}
1
+ {"version":3,"file":"tierLimits.d.ts","sourceRoot":"","sources":["../../../../src/license/tierLimits.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAA2B,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEzE,UAAU,SAAS;IACjB,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCX,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,MAAM,CAAC;AAE/C,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,YAAY,EAAE,SAAS,CAAU,CAAC;AAEnE;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,QAAQ,EACd,YAAY,EAAE,OAAO,GACpB,QAAQ,CAEV;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAIlD"}
@@ -122,6 +122,12 @@ export declare const devToolsStorageKeys: {
122
122
  readonly timeMachine: {
123
123
  readonly root: () => "@react_buoy_time_machine";
124
124
  readonly diffViewerMode: () => "@react_buoy_time_machine_diff_viewer_mode";
125
+ /** The restore point the floating restore bar restores on tap (snapshot id). */
126
+ readonly armedPoint: () => "@react_buoy_time_machine_armed_point";
127
+ /** "1" when the action bar restores in reload mode (storage, then a JS reload). */
128
+ readonly barReloadMode: () => "@react_buoy_time_machine_bar_reload_mode";
129
+ /** Source ids switched OFF in the Sources strip (JSON string array). */
130
+ readonly disabledSources: () => "@react_buoy_time_machine_disabled_sources";
125
131
  };
126
132
  /**
127
133
  * Scenarios storage keys. The library (saved + draft scenarios) and the
@@ -1 +1 @@
1
- {"version":3,"file":"devToolsStorageKeys.d.ts","sourceRoot":"","sources":["../../../../src/storage/devToolsStorageKeys.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;IAC9B;;OAEG;;IAGH;;OAEG;;;;;;;IASH;;OAEG;;;;;;;;IAUH;;;;;;;;;;OAUG;8BACc,MAAM;;QAInB,kEAAkE;;;QAGlE,iCAAiC;sBACnB,MAAM;;IAIxB;;OAEG;;;;;;QAQD,kDAAkD;;QAElD,gCAAgC;;QAGhC,gCAAgC;;;IAKlC;;OAEG;;;QAGD,mCAAmC;;QAEnC,qEAAqE;;;IAIvE;;OAEG;;;;;IAOH;;OAEG;;;;;;;IAQH;;OAEG;;;;;;;IASH;;OAEG;;;;;;;;;;;;;;IAuBH;;;;OAIG;;;;;IAOH;;;;;OAKG;;;;;;;IAQH;;OAEG;;;;;;;;;;;IAiBH;;OAEG;;;;;;;;;;QAcD;;;WAGG;;QAEH;;;;;WAKG;;;IAIL;;OAEG;;;;;;;;;;IAgBH;;OAEG;;;;;;;QAUD,2BAA2B;;;IAK7B;;OAEG;;;;;;;;;IAcH;;OAEG;;;QAGD,8DAA8D;;;IAKhE;;OAEG;;;QAGD;;;;;;;;WAQG;;QAEH,oCAAoC;;QAGpC,wCAAwC;;QAGxC;;;;;WAKG;;QAEH,2BAA2B;;;IAK7B;;OAEG;;;QAGD;;;;WAIG;;;CAGG,CAAC;AAwBX;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CA0BzD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE9D;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,EAAE,CAsBpD"}
1
+ {"version":3,"file":"devToolsStorageKeys.d.ts","sourceRoot":"","sources":["../../../../src/storage/devToolsStorageKeys.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB;IAC9B;;OAEG;;IAGH;;OAEG;;;;;;;IASH;;OAEG;;;;;;;;IAUH;;;;;;;;;;OAUG;8BACc,MAAM;;QAInB,kEAAkE;;;QAGlE,iCAAiC;sBACnB,MAAM;;IAIxB;;OAEG;;;;;;QAQD,kDAAkD;;QAElD,gCAAgC;;QAGhC,gCAAgC;;;IAKlC;;OAEG;;;QAGD,mCAAmC;;QAEnC,qEAAqE;;;IAIvE;;OAEG;;;;;IAOH;;OAEG;;;;;;;IAQH;;OAEG;;;;;;;IASH;;OAEG;;;;;;;;;;;;;;IAuBH;;;;OAIG;;;;QAKD,gFAAgF;;QAGhF,mFAAmF;;QAGnF,wEAAwE;;;IAK1E;;;;;OAKG;;;;;;;IAQH;;OAEG;;;;;;;;;;;IAiBH;;OAEG;;;;;;;;;;QAcD;;;WAGG;;QAEH;;;;;WAKG;;;IAIL;;OAEG;;;;;;;;;;IAgBH;;OAEG;;;;;;;QAUD,2BAA2B;;;IAK7B;;OAEG;;;;;;;;;IAcH;;OAEG;;;QAGD,8DAA8D;;;IAKhE;;OAEG;;;QAGD;;;;;;;;WAQG;;QAEH,oCAAoC;;QAGpC,wCAAwC;;QAGxC;;;;;WAKG;;QAEH,2BAA2B;;;IAK7B;;OAEG;;;QAGD;;;;WAIG;;;CAGG,CAAC;AAwBX;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CA0BzD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE9D;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,EAAE,CAsBpD"}
@@ -1 +1 @@
1
- {"version":3,"file":"BaseEventStore.d.ts","sourceRoot":"","sources":["../../../../src/stores/BaseEventStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;AAE/D;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,8BAAsB,cAAc,CAAC,MAAM,CAAE,SAAQ,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACtF,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,CAAM;IAChC,SAAS,CAAC,cAAc,EAAE,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAa;IACjE,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,cAAc,CAA8B;gBAExC,OAAO,EAAE,qBAAqB;IAU1C;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAEzD;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,aAAa,IAAI,IAAI;IAExC;;OAEG;IACH,QAAQ,CAAC,WAAW,IAAI,OAAO;IAM/B;;;OAGG;IACH,SAAS,CAAC,WAAW,IAAI,IAAI;IAO7B;;;OAGG;IACH,SAAS,CAAC,aAAa,IAAI,IAAI;IAW/B;;OAEG;IACH,SAAS,CAAC,uBAAuB,IAAI,MAAM;IAI3C;;;;;;OAMG;IACH,iBAAiB,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI;IA8B9D;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI;IASpD;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAWvC;;OAEG;IACH,SAAS,CAAC,oBAAoB,IAAI,IAAI;IAWtC;;OAEG;IACH,SAAS,IAAI,MAAM,EAAE;IAIrB;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,WAAW,IAAI,IAAI;IAYnB;;;OAGG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAWzC;;;;;OAKG;IACH,cAAc,IAAI,IAAI;IAOtB;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAKrC;;;;;;;OAOG;IACH,OAAO,CAAC,UAAU;IAgBlB;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAY/B;;OAEG;IACH,mBAAmB,IAAI;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,KAAK,EAAE,MAAM,CAAC;KACf;CAOF"}
1
+ {"version":3,"file":"BaseEventStore.d.ts","sourceRoot":"","sources":["../../../../src/stores/BaseEventStore.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;AAE/D;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,8BAAsB,cAAc,CAAC,MAAM,CAAE,SAAQ,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACtF,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,CAAM;IAChC,SAAS,CAAC,cAAc,EAAE,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAa;IACjE,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,cAAc,CAA8B;gBAExC,OAAO,EAAE,qBAAqB;IAwB1C;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAEzD;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,aAAa,IAAI,IAAI;IAExC;;OAEG;IACH,QAAQ,CAAC,WAAW,IAAI,OAAO;IAM/B;;;OAGG;IACH,SAAS,CAAC,WAAW,IAAI,IAAI;IAO7B;;;OAGG;IACH,SAAS,CAAC,aAAa,IAAI,IAAI;IAW/B;;OAEG;IACH,SAAS,CAAC,uBAAuB,IAAI,MAAM;IAI3C;;;;;;OAMG;IACH,iBAAiB,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI;IA8B9D;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI;IASpD;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAYvC;;OAEG;IACH,SAAS,CAAC,oBAAoB,IAAI,IAAI;IAWtC;;OAEG;IACH,SAAS,IAAI,MAAM,EAAE;IAIrB;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,WAAW,IAAI,IAAI;IAYnB;;;OAGG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAWzC;;;;;OAKG;IACH,cAAc,IAAI,IAAI;IAOtB;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAKrC;;;;;;;OAOG;IACH,OAAO,CAAC,UAAU;IAgBlB;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAY/B;;OAEG;IACH,mBAAmB,IAAI;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,KAAK,EAAE,MAAM,CAAC;KACf;CAOF"}
@@ -1 +1 @@
1
- {"version":3,"file":"createToolStore.d.ts","sourceRoot":"","sources":["../../../../src/stores/createToolStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,mEAAmE;AACnE,MAAM,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC;AAE3C,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC;AAElD,MAAM,WAAW,gBAAgB;IAC/B;qEACiE;IACjE,EAAE,EAAE,MAAM,CAAC;IACX,yBAAyB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,8DAA8D;IAC9D,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,oFAAoF;IACpF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,6EAA6E;IAC7E,SAAS,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,IAAI,CAAC;IACnD,yDAAyD;IACzD,WAAW,IAAI,CAAC,EAAE,CAAC;IACnB,uBAAuB;IACvB,IAAI,IAAI,MAAM,CAAC;IACf,uFAAuF;IACvF,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACnB,iFAAiF;IACjF,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;IACrB,gFAAgF;IAChF,MAAM,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC;IACtC,iEAAiE;IACjE,KAAK,IAAI,IAAI,CAAC;IACd,sFAAsF;IACtF,OAAO,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,IAAI,CAAC;IACjD,2EAA2E;IAC3E,MAAM,IAAI,IAAI,CAAC;IACf;;;;OAIG;IACH,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,4EAA4E;IAC5E,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,QAAQ,IAAI,OAAO,CAAC;IACpB,oEAAoE;IACpE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,IAAI,MAAM,CAAC;IACjB,oDAAoD;IACpD,OAAO,IAAI,MAAM,CAAC;IAClB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,mDAAmD;IACnD,aAAa,IAAI,MAAM,CAAC;IACxB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAYD,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAAC,CAAC,CAAC,CA6J1E"}
1
+ {"version":3,"file":"createToolStore.d.ts","sourceRoot":"","sources":["../../../../src/stores/createToolStore.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,mEAAmE;AACnE,MAAM,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC;AAE3C,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC;AAElD,MAAM,WAAW,gBAAgB;IAC/B;qEACiE;IACjE,EAAE,EAAE,MAAM,CAAC;IACX,yBAAyB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,8DAA8D;IAC9D,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,oFAAoF;IACpF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,6EAA6E;IAC7E,SAAS,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,IAAI,CAAC;IACnD,yDAAyD;IACzD,WAAW,IAAI,CAAC,EAAE,CAAC;IACnB,uBAAuB;IACvB,IAAI,IAAI,MAAM,CAAC;IACf,uFAAuF;IACvF,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACnB,iFAAiF;IACjF,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;IACrB,gFAAgF;IAChF,MAAM,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC;IACtC,iEAAiE;IACjE,KAAK,IAAI,IAAI,CAAC;IACd,sFAAsF;IACtF,OAAO,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,IAAI,CAAC;IACjD,2EAA2E;IAC3E,MAAM,IAAI,IAAI,CAAC;IACf;;;;OAIG;IACH,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,4EAA4E;IAC5E,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,QAAQ,IAAI,OAAO,CAAC;IACpB,oEAAoE;IACpE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,IAAI,MAAM,CAAC;IACjB,oDAAoD;IACpD,OAAO,IAAI,MAAM,CAAC;IAClB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,mDAAmD;IACnD,aAAa,IAAI,MAAM,CAAC;IACxB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAYD,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAAC,CAAC,CAAC,CA8K1E"}
@@ -0,0 +1,27 @@
1
+ import type { ReactNode } from "react";
2
+ export interface FloatingToolRenderContext {
3
+ id: string;
4
+ /** Changes when an existing tool is opened again, so its grip can restore it. */
5
+ revealToken: number;
6
+ dismiss(): void;
7
+ }
8
+ export interface FloatingToolRegistration {
9
+ /** Unique across the app; also use this id on FloatingTool for isolated position storage. */
10
+ id: string;
11
+ render(context: FloatingToolRenderContext): ReactNode;
12
+ }
13
+ export interface FloatingToolEntry extends FloatingToolRegistration {
14
+ revealToken: number;
15
+ }
16
+ export declare const getFloatingTools: () => readonly FloatingToolEntry[];
17
+ export declare const subscribeFloatingTools: (listener: () => void) => () => void;
18
+ /** Open or restore one tool. Mount FloatingToolHost once at the application root. */
19
+ export declare function openFloatingTool(tool: FloatingToolRegistration): void;
20
+ /** Removes the UI only. Tool actions such as Stop belong to the tool's own controller. */
21
+ export declare function dismissFloatingTool(id: string): void;
22
+ /** Register at app startup to restore an open tool using its existing position storage. */
23
+ export declare function registerPersistentFloatingTool(tool: FloatingToolRegistration, storage: {
24
+ getItem(key: string): Promise<string | null>;
25
+ setItem(key: string, value: string): Promise<unknown>;
26
+ }): () => void;
27
+ //# sourceMappingURL=floatingToolStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"floatingToolStore.d.ts","sourceRoot":"","sources":["../../../../src/stores/floatingToolStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,iFAAiF;IACjF,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,IAAI,IAAI,CAAC;CACjB;AACD,MAAM,WAAW,wBAAwB;IACvC,6FAA6F;IAC7F,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,OAAO,EAAE,yBAAyB,GAAG,SAAS,CAAC;CACvD;AACD,MAAM,WAAW,iBAAkB,SAAQ,wBAAwB;IAAG,WAAW,EAAE,MAAM,CAAA;CAAE;AAK3F,eAAO,MAAM,gBAAgB,oCAAgB,CAAC;AAC9C,eAAO,MAAM,sBAAsB,GAAI,UAAU,MAAM,IAAI,eAA+E,CAAC;AAE3I,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,wBAAwB,GAAG,IAAI,CAOrE;AAED,0FAA0F;AAC1F,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAIpD;AAED,2FAA2F;AAC3F,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,wBAAwB,EAC9B,OAAO,EAAE;IAAE,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,GAC/G,MAAM,IAAI,CAqBZ"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=floatingToolStore.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"floatingToolStore.test.d.ts","sourceRoot":"","sources":["../../../../src/stores/floatingToolStore.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * The field that identifies items in this list, or undefined if there isn't one.
3
+ *
4
+ * Every item must carry it, and every value must be a distinct string/number —
5
+ * a duplicated id would make an addressed edit ambiguous, and silently picking
6
+ * the first match is exactly the kind of "helpful" guess that loses data.
7
+ */
8
+ export declare function identityField(items: unknown[]): string | undefined;
9
+ /**
10
+ * Let a caller address list items by their own id instead of resending the list.
11
+ *
12
+ * { lines: { "seed-1": { qty: 5 } } } change one field of one item
13
+ * { lines: { "seed-2": null } } remove that item
14
+ * { lines: { "new-1": { …all fields… } } } append (id not already present)
15
+ *
16
+ * WHY THIS EXISTS. Resending the whole array is correct only when the caller has
17
+ * SEEN the whole array, and reads are capped — so on a long list the honest
18
+ * agents refuse and the careless ones send back only the items they were shown,
19
+ * silently destroying the rest. Measured: with a 20-item bag truncated to 5, the
20
+ * whole-array form scored 0/9 across three models and one of them deleted 15
21
+ * lines without a word. Addressed edits scored 9/9. (`pnpm ai:array`.)
22
+ *
23
+ * It also makes mass deletion impossible BY OMISSION: `lines: []` empties a bag,
24
+ * but a keyed edit can only remove ids it names.
25
+ *
26
+ * Returns the patch with keyed objects expanded into real arrays, so everything
27
+ * downstream — the typed-edit guard, the receipt, the store write — is unchanged
28
+ * and keeps all of its protections.
29
+ */
30
+ export declare function expandKeyedArrays(current: unknown, patch: unknown, path?: string, notes?: string[]): {
31
+ patch: unknown;
32
+ notes: string[];
33
+ error?: string;
34
+ };
35
+ //# sourceMappingURL=keyedArrays.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyedArrays.d.ts","sourceRoot":"","sources":["../../../../src/sync/keyedArrays.ts"],"names":[],"mappings":"AAwBA;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,SAAS,CAYlE;AA6CD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,OAAO,EACd,IAAI,SAAK,EACT,KAAK,GAAE,MAAM,EAAO,GACnB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAyDrD"}
@@ -1,38 +1,8 @@
1
- /**
2
- * toolActionRegistry — the on-device twin of the broker's action dispatch.
3
- *
4
- * Buoy already has exactly one place where `{toolId, action, params}` becomes a
5
- * real call into a tool: `handleAction` in external-sync, fed by the adapter
6
- * map that `autoExternalSync` assembles. That map was private to the React
7
- * tree, so anything running ON the device (the Scenarios runner) had no way to
8
- * reach it and would have had to duplicate the map — two dispatch paths that
9
- * drift the first time an adapter changes.
10
- *
11
- * This module publishes the SAME map through a global seam, so a scenario step,
12
- * a desktop click and an MCP call are one code path with two entry points.
13
- *
14
- * WHY A GLOBAL, NOT AN IMPORT: the map is built inside a component (the
15
- * react-query adapter is a hook, the env adapter is a factory closed over a
16
- * prop, and custom tools arrive as props), so it cannot be a module constant.
17
- * Meanwhile the consumer must not import `@buoy-gg/core` — that package imports
18
- * the tools, and a tool importing it back is the require cycle that puts a
19
- * LogBox on every reload. Same reasoning, and the same shape, as
20
- * `crashFlush.ts` in external-sync.
21
- *
22
- * WE STORE A GETTER, NOT A SNAPSHOT, for the reason `attachDeviceSync` does:
23
- * the adapter map is re-created on renders that change its inputs, and a stale
24
- * captured copy would keep dispatching into adapters the tree has replaced.
25
- *
26
- * SAFETY: this registry is populated only while `AutoExternalSync` is mounted,
27
- * which is itself gated (dev, or release + an explicit opt-in + a real Pro
28
- * license). It is deliberately NOT a substitute for a caller's own production
29
- * gate — anything that bends app state through it must check `__DEV__` itself,
30
- * because the actions reachable here (network overrides, storage writes,
31
- * impersonation) have no business running in a shipped app.
32
- */
33
1
  /** The duck-typed adapter shape, matching external-sync's `ToolSyncAdapter`. */
34
2
  export interface RegisteredToolAdapter {
35
3
  version?: number;
4
+ /** Internal teardown of resources this adapter owns. Never exposed as an action. */
5
+ dispose?: (cleanup: (toolId: string, action: string, params?: unknown) => Promise<unknown>) => void | Promise<void>;
36
6
  getSnapshot?: () => unknown;
37
7
  subscribe?: (onChange: () => void) => () => void;
38
8
  actions?: Record<string, (params: unknown) => unknown | Promise<unknown>>;
@@ -82,4 +52,6 @@ export declare function dispatchToolAction(toolId: string, action: string, param
82
52
  * caller can say "Buoy tools are still starting up" instead of "unknown tool".
83
53
  */
84
54
  export declare function waitForToolRegistry(timeoutMs?: number): Promise<boolean>;
55
+ /** Guard retained references too, and discard results completed after revocation. */
56
+ export declare function guardToolAdapter<T extends RegisteredToolAdapter>(adapter: T): T;
85
57
  //# sourceMappingURL=toolActionRegistry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolActionRegistry.d.ts","sourceRoot":"","sources":["../../../../src/sync/toolActionRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAIH,gFAAgF;AAChF,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;CAC3E;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;AAenE;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,cAAc,GAC7B,MAAM,IAAI,CAMZ;AAED,uDAAuD;AACvD,wBAAgB,eAAe,IAAI,cAAc,CAUhD;AAED,uCAAuC;AACvC,wBAAgB,WAAW,IAAI,MAAM,EAAE,CAEtC;AAED,kFAAkF;AAClF,wBAAgB,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAM1D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAI9C;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQvE;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,SAAS,SAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ5E"}
1
+ {"version":3,"file":"toolActionRegistry.d.ts","sourceRoot":"","sources":["../../../../src/sync/toolActionRegistry.ts"],"names":[],"mappings":"AAoCA,gFAAgF;AAChF,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpH,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;CAC3E;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;AAenE;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,cAAc,GAC7B,MAAM,IAAI,CAkCZ;AAED,uDAAuD;AACvD,wBAAgB,eAAe,IAAI,cAAc,CAWhD;AAED,uCAAuC;AACvC,wBAAgB,WAAW,IAAI,MAAM,EAAE,CAEtC;AAED,kFAAkF;AAClF,wBAAgB,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAM1D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAI9C;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASvE;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,OAAO,CAAC,CAalB;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,SAAS,SAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ5E;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,qBAAqB,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAgC/E"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=toolAttention.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolAttention.test.d.ts","sourceRoot":"","sources":["../../../../src/sync/toolAttention.test.ts"],"names":[],"mappings":""}
@@ -36,4 +36,29 @@ export declare function registerToolOpener(opener: ToolOpener): () => void;
36
36
  export declare function openBuoyTool(toolId: string): boolean;
37
37
  /** True when some host is listening — for deciding whether to offer the button. */
38
38
  export declare function canOpenBuoyTools(): boolean;
39
+ /**
40
+ * "This tool needs you" — shown as a badge on its chip in the minimized rail.
41
+ *
42
+ * The case: Ask Buoy is minimized so a tester can watch the app, and the
43
+ * agent hits a step that needs a tap. Nobody can see the card. The sheet used
44
+ * to fail safe by DECLINING the change and ending the turn — which made
45
+ * minimize mean "stop", the opposite of what it is for. Now the approval
46
+ * holds, the chip gets a badge, and tapping the chip (the existing restore
47
+ * path) brings the card back. Same seam shape as the opener above: the rail
48
+ * lives inside the host, the tool cannot import the host, so it publishes
49
+ * through a global.
50
+ *
51
+ * `done` and `failed` cover the other thing a hidden tool cannot say — that
52
+ * the work you minimized it to wait for has finished.
53
+ */
54
+ export type ToolAttention = {
55
+ kind: "needsInput" | "done" | "failed";
56
+ /** Read by screen readers and shown as the chip's accessibility label. */
57
+ label: string;
58
+ };
59
+ /** Set, replace or (with null) clear a tool's badge. No-op when nothing changed. */
60
+ export declare function setToolAttention(toolId: string, next: ToolAttention | null): void;
61
+ export declare function getToolAttention(toolId: string): ToolAttention | null;
62
+ /** For `useSyncExternalStore` in the rail. */
63
+ export declare function subscribeToolAttention(fn: () => void): () => void;
39
64
  //# sourceMappingURL=toolUiBridge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolUiBridge.d.ts","sourceRoot":"","sources":["../../../../src/sync/toolUiBridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,sEAAsE;AACtE,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;AAUrD,uEAAuE;AACvE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,IAAI,CAMjE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CASpD;AAED,mFAAmF;AACnF,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C"}
1
+ {"version":3,"file":"toolUiBridge.d.ts","sourceRoot":"","sources":["../../../../src/sync/toolUiBridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,sEAAsE;AACtE,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;AAUrD,uEAAuE;AACvE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,IAAI,CAMjE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CASpD;AAED,mFAAmF;AACnF,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAID;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,YAAY,GAAG,MAAM,GAAG,QAAQ,CAAC;IACvC,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAcF,oFAAoF;AACpF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI,CAajF;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAErE;AAED,8CAA8C;AAC9C,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAMjE"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * The typed-edit guard — ONE implementation, for every surface that takes a
3
+ * merge patch from a remote caller.
4
+ *
5
+ * The rule, which is the React Query devtools value-editor rule: you may change
6
+ * the VALUE of a field that already exists, to the same kind of thing. You may
7
+ * not add a field, change a field's type, or null a list or object the screen
8
+ * renders. A list may grow or shrink — carts are lists you add to — but every
9
+ * item in it must have the same fields as the items already there, because an
10
+ * item missing a field the others have is what crashes the list on render.
11
+ *
12
+ * WHY IT LIVES HERE. This existed twice, once in the zustand adapter and once in
13
+ * react-query, drifting slightly (one said "the ones already in the list", the
14
+ * other "the items"; only one had the did-you-mean hint). Jotai had NO copy at
15
+ * all, so `setAtom` accepted a string over a number or a one-item array over a
16
+ * fifty-item one with nothing to stop it. Three copies of a data-destroying
17
+ * safety rule is two more than anyone can keep in step — the same argument
18
+ * `keyedArrays.ts` makes about the expansion it owns.
19
+ *
20
+ * The one behavioural knob is `noun`: what to call the thing being edited in a
21
+ * refusal ("this store", "this data", "this atom"). Everything else is shared,
22
+ * deliberately — a rule that differs per surface is a rule nobody can state.
23
+ */
24
+ /** The shape category the screen depends on: array vs object vs the rest. */
25
+ export declare function shapeKind(v: unknown): string;
26
+ export interface EditViolation {
27
+ path: string;
28
+ kind: "add-key" | "type-change" | "missing-key";
29
+ detail: string;
30
+ /** For an `add-key`: where a field of that name DOES live, if anywhere. */
31
+ movedTo?: string;
32
+ }
33
+ /**
34
+ * Where a key actually lives in a nested value, as a dotted path — first match,
35
+ * breadth-first, capped so a huge payload cannot stall the walk.
36
+ *
37
+ * This is what turns "you put `name` at the top" into "`name` lives at
38
+ * `item.name`", which is the difference between a caller that gives up and one
39
+ * that fixes it. Ten of eleven measured `query` write failures were this exact
40
+ * mistake.
41
+ */
42
+ export declare function findKeyPath(obj: unknown, key: string, maxNodes?: number): string | undefined;
43
+ export interface TypedEditOptions {
44
+ /** What a refusal calls the thing being edited: "store", "data", "atom". */
45
+ noun?: string;
46
+ }
47
+ /**
48
+ * Every way this patch would break the value it is merged into. Empty means the
49
+ * edit is safe to apply.
50
+ */
51
+ export declare function typedEditViolations(current: unknown, patch: unknown, opts?: TypedEditOptions, root?: unknown, path?: string, out?: EditViolation[]): EditViolation[];
52
+ /**
53
+ * The patch the caller should have sent, when every problem was a field written
54
+ * at the wrong DEPTH.
55
+ *
56
+ * The guard already worked out where each field really lives in order to say
57
+ * "did you mean `item.name`?", so it can rebuild the patch instead of leaving
58
+ * the caller to re-derive it from prose. Returns undefined unless EVERY
59
+ * violation is a relocatable add-key: a partial suggestion that silently drops
60
+ * the parts we could not fix would be worse than none, because the caller would
61
+ * send it, be refused again, and learn nothing.
62
+ */
63
+ export declare function suggestedPatch(patch: unknown, violations: EditViolation[]): Record<string, unknown> | undefined;
64
+ /**
65
+ * The sentence a refusal ends with. Shared so every surface refuses in the same
66
+ * words — a caller that learns the rule on one tool should recognise it on the
67
+ * next.
68
+ */
69
+ export declare function refusalText(violations: EditViolation[], noun: string, suggestion?: Record<string, unknown>): string;
70
+ //# sourceMappingURL=typedEdit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typedEdit.d.ts","sourceRoot":"","sources":["../../../../src/sync/typedEdit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAKH,6EAA6E;AAC7E,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAK5C;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,GAAG,aAAa,GAAG,aAAa,CAAC;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAID;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,SAAO,GAAG,MAAM,GAAG,SAAS,CAiB1F;AAED,MAAM,WAAW,gBAAgB;IAC/B,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,OAAO,EACd,IAAI,GAAE,gBAAqB,EAC3B,IAAI,GAAE,OAAiB,EACvB,IAAI,SAAK,EACT,GAAG,GAAE,aAAa,EAAO,GACxB,aAAa,EAAE,CA6EjB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAoB/G;AAWD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAanH"}