@backbay/glia 0.2.0-alpha.6 → 0.2.0-alpha.8

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 (226) hide show
  1. package/dist/audio/index.js +1145 -5
  2. package/dist/audio/index.js.map +1 -1
  3. package/dist/components/index.js +3187 -10
  4. package/dist/components/index.js.map +1 -1
  5. package/dist/core.js +19714 -12
  6. package/dist/core.js.map +1 -1
  7. package/dist/emotion/index.js +1 -1
  8. package/dist/emotion/index.js.map +1 -1
  9. package/dist/hooks/index.js +941 -6
  10. package/dist/hooks/index.js.map +1 -1
  11. package/dist/index.js +31841 -183
  12. package/dist/index.js.map +1 -1
  13. package/dist/primitives/index.js +21111 -57
  14. package/dist/primitives/index.js.map +1 -1
  15. package/dist/protocol/index.js +360 -2
  16. package/dist/protocol/index.js.map +1 -1
  17. package/dist/speakeasy/index.js +2786 -38
  18. package/dist/speakeasy/index.js.map +1 -1
  19. package/dist/styles.css +1 -1
  20. package/dist/theme/index.js +1150 -3
  21. package/dist/theme/index.js.map +1 -1
  22. package/dist/vision/index.js +370 -2
  23. package/dist/vision/index.js.map +1 -1
  24. package/dist/workspace/index.js +16824 -2
  25. package/dist/workspace/index.js.map +1 -1
  26. package/package.json +16 -10
  27. package/dist/AuroraBackground-AP6ZHVFA.js +0 -6
  28. package/dist/AuroraBackground-AP6ZHVFA.js.map +0 -1
  29. package/dist/BentoGrid-CDARICNM.js +0 -6
  30. package/dist/BentoGrid-CDARICNM.js.map +0 -1
  31. package/dist/CommandPalette-JCWJKRBY.js +0 -6
  32. package/dist/CommandPalette-JCWJKRBY.js.map +0 -1
  33. package/dist/Glass-H4X4ZI4P.js +0 -7
  34. package/dist/Glass-H4X4ZI4P.js.map +0 -1
  35. package/dist/GlitchText-KLQ57PPY.js +0 -6
  36. package/dist/GlitchText-KLQ57PPY.js.map +0 -1
  37. package/dist/GlowButton-VGBPMZO7.js +0 -6
  38. package/dist/GlowButton-VGBPMZO7.js.map +0 -1
  39. package/dist/Graph3D-GO7N2EZQ.js +0 -540
  40. package/dist/Graph3D-GO7N2EZQ.js.map +0 -1
  41. package/dist/HUDProgressRing-N6C5NAEV.js +0 -6
  42. package/dist/HUDProgressRing-N6C5NAEV.js.map +0 -1
  43. package/dist/KPIStat-PBQK27ZB.js +0 -6
  44. package/dist/KPIStat-PBQK27ZB.js.map +0 -1
  45. package/dist/NeonToast-W5F7MU3U.js +0 -6
  46. package/dist/NeonToast-W5F7MU3U.js.map +0 -1
  47. package/dist/ParticleField-WK6CNHWU.js +0 -51
  48. package/dist/ParticleField-WK6CNHWU.js.map +0 -1
  49. package/dist/TextGenerateEffect-EUCEIIUJ.js +0 -6
  50. package/dist/TextGenerateEffect-EUCEIIUJ.js.map +0 -1
  51. package/dist/ThreeDCard-VH5I3SSY.js +0 -6
  52. package/dist/ThreeDCard-VH5I3SSY.js.map +0 -1
  53. package/dist/TypingAnimation-GIWOHPIX.js +0 -6
  54. package/dist/TypingAnimation-GIWOHPIX.js.map +0 -1
  55. package/dist/alert-dialog-QOSYBIIE.js +0 -19
  56. package/dist/alert-dialog-QOSYBIIE.js.map +0 -1
  57. package/dist/avatar-N5R37PCU.js +0 -10
  58. package/dist/avatar-N5R37PCU.js.map +0 -1
  59. package/dist/badge-GTVIIGPY.js +0 -8
  60. package/dist/badge-GTVIIGPY.js.map +0 -1
  61. package/dist/button-D7IMSV2D.js +0 -8
  62. package/dist/button-D7IMSV2D.js.map +0 -1
  63. package/dist/chunk-3CMPQOMY.js +0 -69
  64. package/dist/chunk-3CMPQOMY.js.map +0 -1
  65. package/dist/chunk-3OQT6IYR.js +0 -41
  66. package/dist/chunk-3OQT6IYR.js.map +0 -1
  67. package/dist/chunk-43B2WVLS.js +0 -85
  68. package/dist/chunk-43B2WVLS.js.map +0 -1
  69. package/dist/chunk-4SRFO5W3.js +0 -121
  70. package/dist/chunk-4SRFO5W3.js.map +0 -1
  71. package/dist/chunk-5IZELOOU.js +0 -362
  72. package/dist/chunk-5IZELOOU.js.map +0 -1
  73. package/dist/chunk-6DM4ACSS.js +0 -154
  74. package/dist/chunk-6DM4ACSS.js.map +0 -1
  75. package/dist/chunk-6IGT34PC.js +0 -50
  76. package/dist/chunk-6IGT34PC.js.map +0 -1
  77. package/dist/chunk-6RKBCJHN.js +0 -194
  78. package/dist/chunk-6RKBCJHN.js.map +0 -1
  79. package/dist/chunk-6RX2WGCO.js +0 -108
  80. package/dist/chunk-6RX2WGCO.js.map +0 -1
  81. package/dist/chunk-7K4WZM3U.js +0 -189
  82. package/dist/chunk-7K4WZM3U.js.map +0 -1
  83. package/dist/chunk-7MDBHJPT.js +0 -407
  84. package/dist/chunk-7MDBHJPT.js.map +0 -1
  85. package/dist/chunk-7UQD6ROV.js +0 -9
  86. package/dist/chunk-7UQD6ROV.js.map +0 -1
  87. package/dist/chunk-AFNIVLZP.js +0 -1069
  88. package/dist/chunk-AFNIVLZP.js.map +0 -1
  89. package/dist/chunk-ANWYRO6A.js +0 -407
  90. package/dist/chunk-ANWYRO6A.js.map +0 -1
  91. package/dist/chunk-DIXPOHDO.js +0 -71
  92. package/dist/chunk-DIXPOHDO.js.map +0 -1
  93. package/dist/chunk-DWYMKYPI.js +0 -3
  94. package/dist/chunk-DWYMKYPI.js.map +0 -1
  95. package/dist/chunk-E3NVDCZG.js +0 -280
  96. package/dist/chunk-E3NVDCZG.js.map +0 -1
  97. package/dist/chunk-EBM7YBKL.js +0 -399
  98. package/dist/chunk-EBM7YBKL.js.map +0 -1
  99. package/dist/chunk-EPAM7IWW.js +0 -294
  100. package/dist/chunk-EPAM7IWW.js.map +0 -1
  101. package/dist/chunk-EXQ7GYRS.js +0 -134
  102. package/dist/chunk-EXQ7GYRS.js.map +0 -1
  103. package/dist/chunk-F4QTUZ3C.js +0 -136
  104. package/dist/chunk-F4QTUZ3C.js.map +0 -1
  105. package/dist/chunk-FEW533R2.js +0 -105
  106. package/dist/chunk-FEW533R2.js.map +0 -1
  107. package/dist/chunk-FFZLJKC7.js +0 -270
  108. package/dist/chunk-FFZLJKC7.js.map +0 -1
  109. package/dist/chunk-GEAMOBF7.js +0 -8486
  110. package/dist/chunk-GEAMOBF7.js.map +0 -1
  111. package/dist/chunk-GRTRSCTD.js +0 -74
  112. package/dist/chunk-GRTRSCTD.js.map +0 -1
  113. package/dist/chunk-IKGYOGLK.js +0 -16
  114. package/dist/chunk-IKGYOGLK.js.map +0 -1
  115. package/dist/chunk-IQ7WYWVJ.js +0 -73
  116. package/dist/chunk-IQ7WYWVJ.js.map +0 -1
  117. package/dist/chunk-IXIVWQLF.js +0 -543
  118. package/dist/chunk-IXIVWQLF.js.map +0 -1
  119. package/dist/chunk-JCJU57RC.js +0 -115
  120. package/dist/chunk-JCJU57RC.js.map +0 -1
  121. package/dist/chunk-KORSTBU4.js +0 -117
  122. package/dist/chunk-KORSTBU4.js.map +0 -1
  123. package/dist/chunk-KSEZ6UM2.js +0 -235
  124. package/dist/chunk-KSEZ6UM2.js.map +0 -1
  125. package/dist/chunk-MHPF7R3O.js +0 -1376
  126. package/dist/chunk-MHPF7R3O.js.map +0 -1
  127. package/dist/chunk-MPC5IH7E.js +0 -81
  128. package/dist/chunk-MPC5IH7E.js.map +0 -1
  129. package/dist/chunk-MQIU2NYA.js +0 -114
  130. package/dist/chunk-MQIU2NYA.js.map +0 -1
  131. package/dist/chunk-NYMBJOGR.js +0 -2192
  132. package/dist/chunk-NYMBJOGR.js.map +0 -1
  133. package/dist/chunk-OBZD2M3C.js +0 -169
  134. package/dist/chunk-OBZD2M3C.js.map +0 -1
  135. package/dist/chunk-ODM2AG6G.js +0 -176
  136. package/dist/chunk-ODM2AG6G.js.map +0 -1
  137. package/dist/chunk-ONDKF5LP.js +0 -53
  138. package/dist/chunk-ONDKF5LP.js.map +0 -1
  139. package/dist/chunk-P25YCWQB.js +0 -41
  140. package/dist/chunk-P25YCWQB.js.map +0 -1
  141. package/dist/chunk-PFYVNM6H.js +0 -14
  142. package/dist/chunk-PFYVNM6H.js.map +0 -1
  143. package/dist/chunk-PWNNSGFL.js +0 -20
  144. package/dist/chunk-PWNNSGFL.js.map +0 -1
  145. package/dist/chunk-Q2PGZVOT.js +0 -36
  146. package/dist/chunk-Q2PGZVOT.js.map +0 -1
  147. package/dist/chunk-Q2XDMV7U.js +0 -76
  148. package/dist/chunk-Q2XDMV7U.js.map +0 -1
  149. package/dist/chunk-QG7FH2FI.js +0 -45
  150. package/dist/chunk-QG7FH2FI.js.map +0 -1
  151. package/dist/chunk-R7HUOK2D.js +0 -1914
  152. package/dist/chunk-R7HUOK2D.js.map +0 -1
  153. package/dist/chunk-REUYY7G5.js +0 -773
  154. package/dist/chunk-REUYY7G5.js.map +0 -1
  155. package/dist/chunk-RHC2Z2HT.js +0 -199
  156. package/dist/chunk-RHC2Z2HT.js.map +0 -1
  157. package/dist/chunk-RMCVLIFE.js +0 -23
  158. package/dist/chunk-RMCVLIFE.js.map +0 -1
  159. package/dist/chunk-ROZLTXGR.js +0 -234
  160. package/dist/chunk-ROZLTXGR.js.map +0 -1
  161. package/dist/chunk-RSS2C2O3.js +0 -17
  162. package/dist/chunk-RSS2C2O3.js.map +0 -1
  163. package/dist/chunk-SAGCG5SH.js +0 -355
  164. package/dist/chunk-SAGCG5SH.js.map +0 -1
  165. package/dist/chunk-TM6AOUSD.js +0 -40
  166. package/dist/chunk-TM6AOUSD.js.map +0 -1
  167. package/dist/chunk-TPK4BYCO.js +0 -970
  168. package/dist/chunk-TPK4BYCO.js.map +0 -1
  169. package/dist/chunk-UNQIL4K2.js +0 -34
  170. package/dist/chunk-UNQIL4K2.js.map +0 -1
  171. package/dist/chunk-UUG6L75Y.js +0 -47
  172. package/dist/chunk-UUG6L75Y.js.map +0 -1
  173. package/dist/chunk-V2SYMV4W.js +0 -114
  174. package/dist/chunk-V2SYMV4W.js.map +0 -1
  175. package/dist/chunk-V7EN5CTH.js +0 -130
  176. package/dist/chunk-V7EN5CTH.js.map +0 -1
  177. package/dist/chunk-VITKG2HL.js +0 -1125
  178. package/dist/chunk-VITKG2HL.js.map +0 -1
  179. package/dist/chunk-VYEWU5LO.js +0 -2631
  180. package/dist/chunk-VYEWU5LO.js.map +0 -1
  181. package/dist/chunk-W67QAGSH.js +0 -178
  182. package/dist/chunk-W67QAGSH.js.map +0 -1
  183. package/dist/chunk-WWBIN6KV.js +0 -1353
  184. package/dist/chunk-WWBIN6KV.js.map +0 -1
  185. package/dist/chunk-X77Z4PFB.js +0 -224
  186. package/dist/chunk-X77Z4PFB.js.map +0 -1
  187. package/dist/chunk-X7VG7OTT.js +0 -8
  188. package/dist/chunk-X7VG7OTT.js.map +0 -1
  189. package/dist/chunk-XE4K2SGI.js +0 -74
  190. package/dist/chunk-XE4K2SGI.js.map +0 -1
  191. package/dist/chunk-YIUG7IJK.js +0 -628
  192. package/dist/chunk-YIUG7IJK.js.map +0 -1
  193. package/dist/chunk-YNVN3V4Y.js +0 -13
  194. package/dist/chunk-YNVN3V4Y.js.map +0 -1
  195. package/dist/chunk-Z2S54IZX.js +0 -198
  196. package/dist/chunk-Z2S54IZX.js.map +0 -1
  197. package/dist/chunk-ZR6AH25Z.js +0 -17
  198. package/dist/chunk-ZR6AH25Z.js.map +0 -1
  199. package/dist/dialog-SPM3DTTI.js +0 -17
  200. package/dist/dialog-SPM3DTTI.js.map +0 -1
  201. package/dist/dropdown-menu-HMTWKWGK.js +0 -21
  202. package/dist/dropdown-menu-HMTWKWGK.js.map +0 -1
  203. package/dist/input-BH4P4S26.js +0 -6
  204. package/dist/input-BH4P4S26.js.map +0 -1
  205. package/dist/label-5Z4Q6VER.js +0 -8
  206. package/dist/label-5Z4Q6VER.js.map +0 -1
  207. package/dist/popover-IFOUXYLI.js +0 -18
  208. package/dist/popover-IFOUXYLI.js.map +0 -1
  209. package/dist/scroll-area-DJXNW6QX.js +0 -14
  210. package/dist/scroll-area-DJXNW6QX.js.map +0 -1
  211. package/dist/select-FZ277C3G.js +0 -22
  212. package/dist/select-FZ277C3G.js.map +0 -1
  213. package/dist/separator-BTMLN4NB.js +0 -8
  214. package/dist/separator-BTMLN4NB.js.map +0 -1
  215. package/dist/skeleton-DXIWBH4W.js +0 -6
  216. package/dist/skeleton-DXIWBH4W.js.map +0 -1
  217. package/dist/switch-4MCXIZBY.js +0 -13
  218. package/dist/switch-4MCXIZBY.js.map +0 -1
  219. package/dist/tabs-O7AW3APK.js +0 -17
  220. package/dist/tabs-O7AW3APK.js.map +0 -1
  221. package/dist/textarea-IB5WAFDO.js +0 -6
  222. package/dist/textarea-IB5WAFDO.js.map +0 -1
  223. package/dist/toggle-XVPPG6P4.js +0 -10
  224. package/dist/toggle-XVPPG6P4.js.map +0 -1
  225. package/dist/tooltip-JICZTD4F.js +0 -18
  226. package/dist/tooltip-JICZTD4F.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/hooks/useSync.ts","../src/hooks/useAgentRun.ts","../src/hooks/usePlaySession.ts"],"names":["useState","useRef","useCallback","useEffect"],"mappings":"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","file":"chunk-YIUG7IJK.js","sourcesContent":["/**\n * useSync - Offline-first sync hook with conflict resolution\n *\n * Implements the hybrid local+API sync pattern from Backbay.\n */\n\nimport { useState, useCallback, useEffect, useRef } from 'react';\nimport type { SyncStatus, SyncConflict, ConflictResolution } from '../protocol/types.js';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface UseSyncOptions<T> {\n /** Unique key for localStorage */\n key: string;\n\n /** API endpoint for sync */\n endpoint: string;\n\n /** Debounce time in ms (default: 2000) */\n debounce?: number;\n\n /** Initial data */\n initialData?: T;\n\n /** Custom fetch function */\n fetcher?: (endpoint: string) => Promise<T>;\n\n /** Custom save function */\n saver?: (endpoint: string, data: T) => Promise<T>;\n\n /** Called when conflict is detected */\n onConflict?: (conflict: SyncConflict<T>) => void;\n\n /** Called on sync error */\n onError?: (error: Error) => void;\n\n /** Called on successful sync */\n onSync?: (data: T) => void;\n}\n\nexport interface UseSyncReturn<T> {\n /** Current data */\n data: T | null;\n\n /** Update data locally (triggers debounced sync) */\n setData: (data: T | ((prev: T | null) => T)) => void;\n\n /** Current sync status */\n status: SyncStatus;\n\n /** Number of pending changes */\n pendingChanges: number;\n\n /** Timestamp of last successful sync */\n lastSyncedAt: number | null;\n\n /** Current conflict if status === 'conflict' */\n conflict: SyncConflict<T> | null;\n\n /** Resolve a conflict */\n resolveConflict: (resolution: ConflictResolution) => Promise<void>;\n\n /** Force immediate save (bypass debounce) */\n forceSave: () => Promise<void>;\n\n /** Refresh from server */\n refresh: () => Promise<void>;\n\n /** Whether initial load is complete */\n isLoaded: boolean;\n}\n\n// =============================================================================\n// Local Storage Helpers\n// =============================================================================\n\ntype StoredDataV1<T> = {\n data: T;\n timestamp: number;\n version: number;\n};\n\ninterface StoredDataV2<T> {\n data: T;\n /** When the data last changed locally (ms since epoch). */\n lastModifiedAt: number;\n /** When we last successfully synced to server (ms since epoch). 0 means \"unknown/never\". */\n lastSyncedAt: number;\n /** Hash of the server data at the last successful sync (empty string means \"unknown/never\"). */\n lastSyncedHash: string;\n}\n\ntype StoredData<T> = StoredDataV2<T>;\n\nfunction stableStringify(value: unknown): string {\n if (value === null || typeof value !== \"object\") {\n const encoded = JSON.stringify(value);\n return encoded === undefined ? \"null\" : encoded;\n }\n\n if (Array.isArray(value)) {\n return `[${value.map(stableStringify).join(\",\")}]`;\n }\n\n const record = value as Record<string, unknown>;\n const keys = Object.keys(record).sort();\n return `{${keys.map((k) => `${JSON.stringify(k)}:${stableStringify(record[k])}`).join(\",\")}}`;\n}\n\nfunction hashString(input: string): string {\n // FNV-1a 32-bit\n let hash = 0x811c9dc5;\n for (let i = 0; i < input.length; i++) {\n hash ^= input.charCodeAt(i);\n hash = (hash * 0x01000193) >>> 0;\n }\n return hash.toString(36);\n}\n\nfunction hashData(value: unknown): string {\n return hashString(stableStringify(value));\n}\n\nfunction normalizeStoredData<T>(raw: unknown): StoredData<T> | null {\n if (!raw || typeof raw !== \"object\") return null;\n const record = raw as Record<string, unknown>;\n\n // v2\n if (\n \"data\" in record &&\n typeof record.lastModifiedAt === \"number\" &&\n typeof record.lastSyncedAt === \"number\" &&\n typeof record.lastSyncedHash === \"string\"\n ) {\n return record as unknown as StoredData<T>;\n }\n\n // v1 (legacy)\n if (\"data\" in record && typeof record.timestamp === \"number\" && typeof record.version === \"number\") {\n const legacy = record as StoredDataV1<T>;\n const syncedHash = hashData(legacy.data);\n return {\n data: legacy.data,\n lastModifiedAt: legacy.timestamp,\n lastSyncedAt: legacy.timestamp,\n lastSyncedHash: syncedHash,\n };\n }\n\n return null;\n}\n\nfunction getStoredData<T>(key: string): StoredData<T> | null {\n try {\n const raw = localStorage.getItem(key);\n if (!raw) return null;\n const parsed = JSON.parse(raw) as unknown;\n return normalizeStoredData<T>(parsed);\n } catch {\n return null;\n }\n}\n\nfunction setStoredData<T>(key: string, record: StoredData<T>): void {\n localStorage.setItem(key, JSON.stringify(record));\n}\n\n// =============================================================================\n// Hook Implementation\n// =============================================================================\n\nexport function useSync<T>({\n key,\n endpoint,\n debounce = 2000,\n initialData,\n fetcher,\n saver,\n onConflict,\n onError,\n onSync,\n}: UseSyncOptions<T>): UseSyncReturn<T> {\n // State\n const [data, setDataState] = useState<T | null>(initialData ?? null);\n const [status, setStatus] = useState<SyncStatus>('synced');\n const [pendingChanges, setPendingChanges] = useState(0);\n const [lastSyncedAt, setLastSyncedAt] = useState<number | null>(null);\n const [conflict, setConflict] = useState<SyncConflict<T> | null>(null);\n const [isLoaded, setIsLoaded] = useState(false);\n\n // Refs\n const debounceTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const isSavingRef = useRef(false);\n\n // Fetcher / saver are injectable to support custom backends.\n const doFetch = useCallback(\n async (url: string) => {\n if (fetcher) return fetcher(url);\n const response = await fetch(url);\n if (!response.ok) throw new Error(`HTTP ${response.status}`);\n return response.json() as Promise<T>;\n },\n [fetcher]\n );\n\n const doSave = useCallback(\n async (url: string, payload: T) => {\n if (saver) return saver(url, payload);\n const response = await fetch(url, {\n method: \"PUT\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(payload),\n });\n if (!response.ok) throw new Error(`HTTP ${response.status}`);\n return response.json() as Promise<T>;\n },\n [saver]\n );\n\n // Load initial data\n useEffect(() => {\n const loadInitial = async () => {\n // First, check localStorage for cached data\n const stored = getStoredData<T>(key);\n if (stored) {\n setDataState(stored.data);\n const storedSyncedAt = stored.lastSyncedAt > 0 ? stored.lastSyncedAt : null;\n setLastSyncedAt(storedSyncedAt);\n\n const hasLocalChanges = stored.lastModifiedAt > stored.lastSyncedAt;\n if (hasLocalChanges) {\n setStatus(\"pending\");\n setPendingChanges((c) => Math.max(c, 1));\n }\n }\n\n // Then fetch from server\n try {\n const serverData = await doFetch(endpoint);\n const remoteTimestamp = Date.now();\n const remoteHash = hashData(serverData);\n\n if (stored) {\n const hasLocalChanges = stored.lastModifiedAt > stored.lastSyncedAt;\n const baselineHash = stored.lastSyncedHash || hashData(stored.data);\n const remoteChangedSinceSync = remoteHash !== baselineHash;\n\n if (hasLocalChanges && remoteChangedSinceSync) {\n const localConflict: SyncConflict<T> = {\n local: stored.data,\n remote: serverData,\n localTimestamp: stored.lastModifiedAt,\n remoteTimestamp,\n };\n setConflict(localConflict);\n setStatus(\"conflict\");\n onConflict?.(localConflict);\n } else if (!hasLocalChanges) {\n // No local changes, use server data\n setDataState(serverData);\n setStoredData(key, {\n data: serverData,\n lastModifiedAt: remoteTimestamp,\n lastSyncedAt: remoteTimestamp,\n lastSyncedHash: remoteHash,\n });\n setLastSyncedAt(remoteTimestamp);\n setPendingChanges(0);\n setStatus(\"synced\");\n } else {\n // Local has changes, but server hasn't changed since last sync.\n // Keep local data and remain pending until the next save.\n setStatus(\"pending\");\n }\n } else {\n // No local data, use server data\n setDataState(serverData);\n setStoredData(key, {\n data: serverData,\n lastModifiedAt: remoteTimestamp,\n lastSyncedAt: remoteTimestamp,\n lastSyncedHash: remoteHash,\n });\n setLastSyncedAt(remoteTimestamp);\n setPendingChanges(0);\n setStatus(\"synced\");\n }\n } catch (error) {\n // Offline - use cached data\n setStatus(\"offline\");\n if (error instanceof Error) {\n onError?.(error);\n }\n }\n\n setIsLoaded(true);\n };\n\n loadInitial();\n }, [key, endpoint, doFetch, onConflict, onError]);\n\n // Save to server\n const saveToServer = useCallback(async (payload?: T) => {\n const dataToSave = payload ?? data;\n if (isSavingRef.current || dataToSave === null) return;\n isSavingRef.current = true;\n\n try {\n setStatus(\"pending\");\n const serverData = await doSave(endpoint, dataToSave);\n const syncedAt = Date.now();\n const syncedHash = hashData(serverData);\n\n setDataState(serverData);\n setStoredData(key, {\n data: serverData,\n lastModifiedAt: syncedAt,\n lastSyncedAt: syncedAt,\n lastSyncedHash: syncedHash,\n });\n setLastSyncedAt(syncedAt);\n setPendingChanges(0);\n setStatus(\"synced\");\n onSync?.(serverData);\n } catch (error) {\n setStatus(\"offline\");\n if (error instanceof Error) {\n onError?.(error);\n }\n } finally {\n isSavingRef.current = false;\n }\n }, [data, endpoint, key, doSave, onSync, onError]);\n\n // Set data with debounced sync\n const setData = useCallback(\n (updater: T | ((prev: T | null) => T)) => {\n setDataState((prev) => {\n const newData = typeof updater === \"function\" ? (updater as (prev: T | null) => T)(prev) : updater;\n\n const previousStored = getStoredData<T>(key);\n const now = Date.now();\n\n setStoredData(key, {\n data: newData,\n lastModifiedAt: now,\n lastSyncedAt: previousStored?.lastSyncedAt ?? 0,\n lastSyncedHash: previousStored?.lastSyncedHash ?? \"\",\n });\n\n setPendingChanges((c) => c + 1);\n setStatus(\"pending\");\n\n // Clear existing debounce timer\n if (debounceTimerRef.current) {\n clearTimeout(debounceTimerRef.current);\n }\n\n // Set new debounce timer\n debounceTimerRef.current = setTimeout(() => {\n saveToServer();\n }, debounce);\n\n return newData;\n });\n },\n [key, debounce, saveToServer]\n );\n\n // Force save (bypass debounce)\n const forceSave = useCallback(async () => {\n if (debounceTimerRef.current) {\n clearTimeout(debounceTimerRef.current);\n debounceTimerRef.current = null;\n }\n await saveToServer();\n }, [saveToServer]);\n\n // Refresh from server\n const refresh = useCallback(async () => {\n try {\n const serverData = await doFetch(endpoint);\n const syncedAt = Date.now();\n const syncedHash = hashData(serverData);\n\n setDataState(serverData);\n setStoredData(key, {\n data: serverData,\n lastModifiedAt: syncedAt,\n lastSyncedAt: syncedAt,\n lastSyncedHash: syncedHash,\n });\n setLastSyncedAt(syncedAt);\n setPendingChanges(0);\n setConflict(null);\n setStatus(\"synced\");\n } catch (error) {\n setStatus(\"offline\");\n if (error instanceof Error) {\n onError?.(error);\n }\n }\n }, [endpoint, key, doFetch, onError]);\n\n // Resolve conflict\n const resolveConflict = useCallback(\n async (resolution: ConflictResolution) => {\n if (!conflict) return;\n\n switch (resolution) {\n case \"keep_local\":\n // Keep local, push to server\n setDataState(conflict.local);\n setConflict(null);\n setStatus(\"pending\");\n setPendingChanges((c) => Math.max(c, 1));\n await saveToServer(conflict.local);\n break;\n\n case \"use_remote\": {\n // Use remote, discard local\n const remoteHash = hashData(conflict.remote);\n setDataState(conflict.remote);\n setStoredData(key, {\n data: conflict.remote,\n lastModifiedAt: conflict.remoteTimestamp,\n lastSyncedAt: conflict.remoteTimestamp,\n lastSyncedHash: remoteHash,\n });\n setLastSyncedAt(conflict.remoteTimestamp);\n setPendingChanges(0);\n setConflict(null);\n setStatus(\"synced\");\n break;\n }\n\n case \"create_copy\":\n // Keep local as copy, also keep remote\n // This would typically save local to a new key/endpoint\n // For now, we just keep local\n setDataState(conflict.local);\n setConflict(null);\n setStatus(\"pending\");\n setPendingChanges((c) => Math.max(c, 1));\n await saveToServer(conflict.local);\n break;\n }\n },\n [conflict, key, saveToServer]\n );\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n if (debounceTimerRef.current) {\n clearTimeout(debounceTimerRef.current);\n }\n };\n }, []);\n\n return {\n data,\n setData,\n status,\n pendingChanges,\n lastSyncedAt,\n conflict,\n resolveConflict,\n forceSave,\n refresh,\n isLoaded,\n };\n}\n","/**\n * useAgentRun - Hook for executing agent runs\n */\n\nimport { useState, useCallback, useRef } from 'react';\nimport type { AgentRun, RunStatus } from '../protocol/types.js';\nimport { useBBContext } from '../components/BBProvider.js';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface UseAgentRunOptions {\n /** Called when run starts */\n onStart?: (run: AgentRun) => void;\n\n /** Called when run completes */\n onComplete?: (run: AgentRun) => void;\n\n /** Called when run fails */\n onError?: (run: AgentRun, error: Error) => void;\n\n /** Called when run is cancelled */\n onCancel?: (run: AgentRun) => void;\n}\n\nexport interface UseAgentRunReturn {\n /** Current run object or null */\n run: AgentRun | null;\n\n /** Current status */\n status: RunStatus;\n\n /** Run output when completed */\n output: string | null;\n\n /** Error message if failed */\n error: string | null;\n\n /** Actual cost incurred */\n cost: number | null;\n\n /** Time taken in ms */\n latency: number | null;\n\n /** Start a new run */\n start: (agentId: string, prompt: string, context?: Record<string, unknown>) => Promise<void>;\n\n /** Cancel the current run */\n cancel: () => void;\n\n /** Whether a run is in progress */\n isRunning: boolean;\n}\n\n// =============================================================================\n// Hook Implementation\n// =============================================================================\n\nexport function useAgentRun(options: UseAgentRunOptions = {}): UseAgentRunReturn {\n const { onStart, onComplete, onError, onCancel } = options;\n\n const { config, addRun, updateRun, getAgent } = useBBContext();\n\n const [run, setRun] = useState<AgentRun | null>(null);\n const [status, setStatus] = useState<RunStatus>('idle');\n const [output, setOutput] = useState<string | null>(null);\n const [error, setError] = useState<string | null>(null);\n const [cost, setCost] = useState<number | null>(null);\n const [latency, setLatency] = useState<number | null>(null);\n\n const abortControllerRef = useRef<AbortController | null>(null);\n\n const start = useCallback(\n async (agentId: string, prompt: string, context?: Record<string, unknown>) => {\n // Cancel any existing run\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n\n const controller = new AbortController();\n abortControllerRef.current = controller;\n\n const runId = `run-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;\n const startedAt = Date.now();\n\n const newRun: AgentRun = {\n id: runId,\n agentId,\n prompt,\n context,\n status: 'running',\n startedAt,\n };\n\n // Update state\n setRun(newRun);\n setStatus('running');\n setOutput(null);\n setError(null);\n setCost(null);\n setLatency(null);\n\n // Add to global tracking\n addRun(newRun);\n onStart?.(newRun);\n\n try {\n // Make API call\n const response = await fetch(`${config.apiBaseUrl}/runs`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...config.headers,\n },\n body: JSON.stringify({\n agentId,\n prompt,\n context,\n }),\n signal: controller.signal,\n });\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n\n const result = await response.json();\n const completedAt = Date.now();\n const runLatency = completedAt - startedAt;\n\n // Get agent cost estimate\n const agent = getAgent(agentId);\n const runCost = result.cost ?? agent?.costPerRun ?? 0;\n\n const completedRun: AgentRun = {\n ...newRun,\n status: 'completed',\n output: result.output,\n cost: runCost,\n tokenCount: result.tokenCount,\n latencyMs: runLatency,\n completedAt,\n };\n\n // Update state\n setRun(completedRun);\n setStatus('completed');\n setOutput(result.output);\n setCost(runCost);\n setLatency(runLatency);\n\n // Update global tracking\n updateRun(runId, completedRun);\n onComplete?.(completedRun);\n } catch (err) {\n if (err instanceof Error && err.name === 'AbortError') {\n // Cancelled\n const cancelledRun: AgentRun = {\n ...newRun,\n status: 'cancelled',\n completedAt: Date.now(),\n };\n setRun(cancelledRun);\n setStatus('cancelled');\n updateRun(runId, cancelledRun);\n onCancel?.(cancelledRun);\n return;\n }\n\n // Failed\n const errorMessage = err instanceof Error ? err.message : 'Unknown error';\n const failedRun: AgentRun = {\n ...newRun,\n status: 'failed',\n error: errorMessage,\n completedAt: Date.now(),\n };\n\n setRun(failedRun);\n setStatus('failed');\n setError(errorMessage);\n\n updateRun(runId, failedRun);\n onError?.(failedRun, err instanceof Error ? err : new Error(errorMessage));\n } finally {\n if (abortControllerRef.current === controller) {\n abortControllerRef.current = null;\n }\n }\n },\n [config, addRun, updateRun, getAgent, onStart, onComplete, onError, onCancel]\n );\n\n const cancel = useCallback(() => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n abortControllerRef.current = null;\n }\n }, []);\n\n return {\n run,\n status,\n output,\n error,\n cost,\n latency,\n start,\n cancel,\n isRunning: status === 'running',\n };\n}\n","/**\n * usePlaySession - Hook for managing play sessions with external environments\n *\n * Handles session lifecycle, LiveKit connections, and JSON-RPC calls to adapters.\n */\n\nimport { useState, useCallback, useRef, useEffect } from 'react';\nimport type { PlaySessionData, PlaySessionStatus, JsonRpcResponse } from '../protocol/types.js';\nimport { useBBContext } from '../components/BBProvider.js';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface UsePlaySessionOptions {\n /** Adapter ID (e.g., 'openrct2', 'bbdoom') */\n adapter: string;\n\n /** Auto-connect on mount */\n autoConnect?: boolean;\n\n /** Connection timeout in ms */\n timeout?: number;\n\n /** Called when session is established */\n onConnect?: (session: PlaySessionData) => void;\n\n /** Called when session ends */\n onDisconnect?: () => void;\n\n /** Called on RPC result */\n onRpcResult?: (response: JsonRpcResponse) => void;\n\n /** Called on error */\n onError?: (error: Error) => void;\n}\n\nexport interface UsePlaySessionReturn {\n /** Current session or null */\n session: PlaySessionData | null;\n\n /** Session status */\n status: PlaySessionStatus;\n\n /** LiveKit video track (for rendering) */\n videoTrack: MediaStreamTrack | null;\n\n /** LiveKit audio track */\n audioTrack: MediaStreamTrack | null;\n\n /** Make a JSON-RPC call */\n call: <T = unknown>(method: string, params?: Record<string, unknown>) => Promise<JsonRpcResponse<T>>;\n\n /** Shorthand for observe.* methods */\n observe: <T = unknown>(key: string) => Promise<T>;\n\n /** Shorthand for act.* methods */\n act: <T = unknown>(action: string, params?: Record<string, unknown>) => Promise<T>;\n\n /** Connect to the session */\n connect: (options?: { timeout?: number }) => Promise<void>;\n\n /** Disconnect from the session */\n disconnect: () => Promise<void>;\n\n /** Whether currently connected */\n isConnected: boolean;\n\n /** Error message if any */\n error: string | null;\n}\n\n// =============================================================================\n// Hook Implementation\n// =============================================================================\n\nexport function usePlaySession({\n adapter,\n autoConnect = false,\n timeout = 30000,\n onConnect,\n onDisconnect,\n onRpcResult,\n onError,\n}: UsePlaySessionOptions): UsePlaySessionReturn {\n const { config } = useBBContext();\n\n // State\n const [session, setSession] = useState<PlaySessionData | null>(null);\n const [status, setStatus] = useState<PlaySessionStatus>('disconnected');\n const [videoTrack, setVideoTrack] = useState<MediaStreamTrack | null>(null);\n const [audioTrack, setAudioTrack] = useState<MediaStreamTrack | null>(null);\n const [error, setError] = useState<string | null>(null);\n\n // Refs\n const wsRef = useRef<WebSocket | null>(null);\n const rpcIdRef = useRef(0);\n const pendingCallsRef = useRef<Map<number, {\n resolve: (value: JsonRpcResponse) => void;\n reject: (error: Error) => void;\n }>>(new Map());\n\n // Connect to session\n const connect = useCallback(\n async (options?: { timeout?: number }) => {\n if (status === 'connecting' || status === 'connected') return;\n\n setStatus('connecting');\n setError(null);\n\n const connectTimeout = options?.timeout ?? timeout;\n\n try {\n // Create session via API\n const response = await fetch(`${config.apiBaseUrl}/play-sessions`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...config.headers,\n },\n body: JSON.stringify({ adapter }),\n });\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n\n const sessionData = await response.json();\n const newSession: PlaySessionData = {\n id: sessionData.id,\n adapter,\n capabilityToken: sessionData.capabilityToken,\n createdAt: Date.now(),\n expiresAt: sessionData.expiresAt,\n livekitUrl: sessionData.livekitUrl,\n livekitToken: sessionData.livekitToken,\n };\n\n setSession(newSession);\n\n // Connect WebSocket for RPC\n const wsUrl = sessionData.wsUrl ?? `${config.apiBaseUrl.replace('http', 'ws')}/play-sessions/${newSession.id}/ws`;\n const ws = new WebSocket(wsUrl);\n wsRef.current = ws;\n\n // Set up WebSocket handlers\n await new Promise<void>((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n ws.close();\n reject(new Error('Connection timeout'));\n }, connectTimeout);\n\n ws.onopen = () => {\n clearTimeout(timeoutId);\n resolve();\n };\n\n ws.onerror = () => {\n clearTimeout(timeoutId);\n reject(new Error('WebSocket connection failed'));\n };\n });\n\n ws.onmessage = (event) => {\n try {\n const message = JSON.parse(event.data);\n\n // Handle RPC response\n if ('id' in message && pendingCallsRef.current.has(message.id)) {\n const pending = pendingCallsRef.current.get(message.id)!;\n pendingCallsRef.current.delete(message.id);\n pending.resolve(message);\n onRpcResult?.(message);\n }\n } catch {\n // Ignore parse errors\n }\n };\n\n ws.onclose = () => {\n setStatus('disconnected');\n setSession(null);\n wsRef.current = null;\n onDisconnect?.();\n };\n\n ws.onerror = () => {\n setError('WebSocket error');\n onError?.(new Error('WebSocket error'));\n };\n\n // Connect to LiveKit if available\n if (newSession.livekitUrl && newSession.livekitToken) {\n // Note: LiveKit connection would typically use @livekit/client-sdk\n // For now, we just store the connection info for the consumer to use\n }\n\n setStatus('connected');\n onConnect?.(newSession);\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : 'Connection failed';\n setStatus('error');\n setError(errorMessage);\n onError?.(err instanceof Error ? err : new Error(errorMessage));\n }\n },\n [adapter, config, status, timeout, onConnect, onDisconnect, onRpcResult, onError]\n );\n\n // Disconnect\n const disconnect = useCallback(async () => {\n if (wsRef.current) {\n wsRef.current.close();\n wsRef.current = null;\n }\n\n // Optionally notify server\n if (session) {\n try {\n await fetch(`${config.apiBaseUrl}/play-sessions/${session.id}`, {\n method: 'DELETE',\n headers: config.headers,\n });\n } catch {\n // Ignore errors on disconnect\n }\n }\n\n setSession(null);\n setStatus('disconnected');\n setVideoTrack(null);\n setAudioTrack(null);\n onDisconnect?.();\n }, [session, config, onDisconnect]);\n\n // Make RPC call\n const call = useCallback(\n <T = unknown>(method: string, params?: Record<string, unknown>): Promise<JsonRpcResponse<T>> => {\n return new Promise((resolve, reject) => {\n if (!wsRef.current || wsRef.current.readyState !== WebSocket.OPEN) {\n reject(new Error('Not connected'));\n return;\n }\n\n const id = ++rpcIdRef.current;\n const request = {\n jsonrpc: '2.0',\n id,\n method,\n params: params ?? {},\n };\n\n pendingCallsRef.current.set(id, {\n resolve: resolve as (value: JsonRpcResponse) => void,\n reject,\n });\n\n wsRef.current.send(JSON.stringify(request));\n\n // Timeout for RPC call\n setTimeout(() => {\n if (pendingCallsRef.current.has(id)) {\n pendingCallsRef.current.delete(id);\n reject(new Error('RPC call timeout'));\n }\n }, 30000);\n });\n },\n []\n );\n\n // Observe shorthand\n const observe = useCallback(\n async <T = unknown>(key: string): Promise<T> => {\n const response = await call<T>(`observe.${key}`);\n if (response.error) {\n throw new Error(response.error.message);\n }\n return response.result as T;\n },\n [call]\n );\n\n // Act shorthand\n const act = useCallback(\n async <T = unknown>(action: string, params?: Record<string, unknown>): Promise<T> => {\n const response = await call<T>(`act.${action}`, params);\n if (response.error) {\n throw new Error(response.error.message);\n }\n return response.result as T;\n },\n [call]\n );\n\n // Auto-connect on mount\n useEffect(() => {\n if (autoConnect) {\n connect();\n }\n }, [autoConnect]); // eslint-disable-line react-hooks/exhaustive-deps\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n if (wsRef.current) {\n wsRef.current.close();\n }\n };\n }, []);\n\n return {\n session,\n status,\n videoTrack,\n audioTrack,\n call,\n observe,\n act,\n connect,\n disconnect,\n isConnected: status === 'connected',\n error,\n };\n}\n"]}
@@ -1,13 +0,0 @@
1
- import * as React from 'react';
2
- import 'react/jsx-runtime';
3
-
4
- // ../../node_modules/@radix-ui/react-direction/dist/index.mjs
5
- var DirectionContext = React.createContext(void 0);
6
- function useDirection(localDir) {
7
- const globalDir = React.useContext(DirectionContext);
8
- return localDir || globalDir || "ltr";
9
- }
10
-
11
- export { useDirection };
12
- //# sourceMappingURL=chunk-YNVN3V4Y.js.map
13
- //# sourceMappingURL=chunk-YNVN3V4Y.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../node_modules/@radix-ui/react-direction/src/direction.tsx"],"names":[],"mappings":";;;;AAGA,IAAM,gBAAA,GAAyB,oBAAqC,MAAS,CAAA;AAiB7E,SAAS,aAAa,QAAA,EAAsB;AAC1C,EAAA,MAAM,SAAA,GAAkB,iBAAW,gBAAgB,CAAA;AACnD,EAAA,OAAO,YAAY,SAAA,IAAa,KAAA;AAClC","file":"chunk-YNVN3V4Y.js","sourcesContent":["import * as React from 'react';\n\ntype Direction = 'ltr' | 'rtl';\nconst DirectionContext = React.createContext<Direction | undefined>(undefined);\n\n/* -------------------------------------------------------------------------------------------------\n * Direction\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DirectionProviderProps {\n children?: React.ReactNode;\n dir: Direction;\n}\nconst DirectionProvider: React.FC<DirectionProviderProps> = (props) => {\n const { dir, children } = props;\n return <DirectionContext.Provider value={dir}>{children}</DirectionContext.Provider>;\n};\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction useDirection(localDir?: Direction) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || 'ltr';\n}\n\nconst Provider = DirectionProvider;\n\nexport {\n useDirection,\n //\n Provider,\n //\n DirectionProvider,\n};\n"]}
@@ -1,198 +0,0 @@
1
- import { useBBContext } from './chunk-Q2XDMV7U.js';
2
- import { useState, useRef, useCallback, useEffect } from 'react';
3
-
4
- function useRunStream(runId, options = {}) {
5
- const { pollInterval = 4e3, preferPolling = false, onEvent, onComplete, onError } = options;
6
- const { config } = useBBContext();
7
- const [events, setEvents] = useState([]);
8
- const [latestEvent, setLatestEvent] = useState(null);
9
- const [status, setStatus] = useState("idle");
10
- const [isConnected, setIsConnected] = useState(false);
11
- const [run, setRun] = useState(null);
12
- const eventSourceRef = useRef(null);
13
- const pollingIntervalRef = useRef(null);
14
- const isActiveRef = useRef(true);
15
- const handleEvent = useCallback(
16
- (event) => {
17
- if (!isActiveRef.current) return;
18
- setEvents((prev) => [...prev, event]);
19
- setLatestEvent(event);
20
- onEvent?.(event);
21
- if (event.data?.status) {
22
- setStatus(event.data.status);
23
- }
24
- if (event.type === "completed" || event.type === "failed" || event.type === "cancelled") {
25
- const finalStatus = event.type === "completed" ? "completed" : event.type === "failed" ? "failed" : "cancelled";
26
- setStatus(finalStatus);
27
- if (event.data?.run) {
28
- setRun(event.data.run);
29
- if (event.type === "completed") {
30
- onComplete?.(event.data.run);
31
- }
32
- }
33
- }
34
- },
35
- [onEvent, onComplete]
36
- );
37
- const setupEventSource = useCallback(() => {
38
- if (!runId || preferPolling) return;
39
- const url = `${config.apiBaseUrl}/runs/${runId}/events`;
40
- const eventSource = new EventSource(url);
41
- eventSource.onopen = () => {
42
- setIsConnected(true);
43
- handleEvent({
44
- type: "connected",
45
- runId,
46
- timestamp: Date.now()
47
- });
48
- };
49
- eventSource.onmessage = (e) => {
50
- try {
51
- const data = JSON.parse(e.data);
52
- handleEvent({
53
- type: data.type ?? "status",
54
- runId,
55
- timestamp: Date.now(),
56
- data
57
- });
58
- } catch (err) {
59
- console.error("Failed to parse event:", err);
60
- }
61
- };
62
- eventSource.onerror = () => {
63
- setIsConnected(false);
64
- startPolling();
65
- };
66
- eventSourceRef.current = eventSource;
67
- }, [runId, config.apiBaseUrl, preferPolling, handleEvent]);
68
- const startPolling = useCallback(() => {
69
- if (!runId || pollingIntervalRef.current) return;
70
- const poll = async () => {
71
- if (!isActiveRef.current || !runId) return;
72
- try {
73
- const response = await fetch(`${config.apiBaseUrl}/runs/${runId}`, {
74
- headers: config.headers
75
- });
76
- if (!response.ok) {
77
- throw new Error(`HTTP ${response.status}`);
78
- }
79
- const data = await response.json();
80
- handleEvent({
81
- type: "status",
82
- runId,
83
- timestamp: Date.now(),
84
- data: {
85
- status: data.status,
86
- output: data.output,
87
- run: data
88
- }
89
- });
90
- if (data.status === "completed" || data.status === "failed" || data.status === "cancelled") {
91
- stopPolling();
92
- handleEvent({
93
- type: data.status,
94
- runId,
95
- timestamp: Date.now(),
96
- data: { run: data }
97
- });
98
- }
99
- } catch (err) {
100
- if (err instanceof Error) {
101
- onError?.(err);
102
- }
103
- }
104
- };
105
- poll();
106
- pollingIntervalRef.current = setInterval(poll, pollInterval);
107
- }, [runId, config, pollInterval, handleEvent, onError]);
108
- const stopPolling = useCallback(() => {
109
- if (pollingIntervalRef.current) {
110
- clearInterval(pollingIntervalRef.current);
111
- pollingIntervalRef.current = null;
112
- }
113
- }, []);
114
- const disconnect = useCallback(() => {
115
- isActiveRef.current = false;
116
- if (eventSourceRef.current) {
117
- eventSourceRef.current.close();
118
- eventSourceRef.current = null;
119
- }
120
- stopPolling();
121
- setIsConnected(false);
122
- }, [stopPolling]);
123
- const reconnect = useCallback(() => {
124
- disconnect();
125
- isActiveRef.current = true;
126
- setEvents([]);
127
- setLatestEvent(null);
128
- setStatus("idle");
129
- if (preferPolling) {
130
- startPolling();
131
- } else {
132
- setupEventSource();
133
- }
134
- }, [disconnect, preferPolling, startPolling, setupEventSource]);
135
- useEffect(() => {
136
- if (!runId) {
137
- disconnect();
138
- return;
139
- }
140
- isActiveRef.current = true;
141
- setEvents([]);
142
- setLatestEvent(null);
143
- setStatus("running");
144
- if (preferPolling) {
145
- startPolling();
146
- } else {
147
- setupEventSource();
148
- setTimeout(() => {
149
- if (isActiveRef.current && !isConnected) {
150
- startPolling();
151
- }
152
- }, 2e3);
153
- }
154
- return () => {
155
- disconnect();
156
- };
157
- }, [runId]);
158
- return {
159
- events,
160
- latestEvent,
161
- status,
162
- isConnected,
163
- run,
164
- disconnect,
165
- reconnect
166
- };
167
- }
168
- function subscribeToRunEvents(apiBaseUrl, runId, callback, options = {}) {
169
- const url = `${apiBaseUrl}/runs/${runId}/events`;
170
- const eventSource = new EventSource(url);
171
- eventSource.onopen = () => {
172
- callback({
173
- type: "connected",
174
- runId,
175
- timestamp: Date.now()
176
- });
177
- };
178
- eventSource.onmessage = (e) => {
179
- try {
180
- const data = JSON.parse(e.data);
181
- callback({
182
- type: data.type ?? "status",
183
- runId,
184
- timestamp: Date.now(),
185
- data
186
- });
187
- } catch (err) {
188
- console.error("Failed to parse event:", err);
189
- }
190
- };
191
- eventSource.onerror = () => {
192
- };
193
- return () => eventSource.close();
194
- }
195
-
196
- export { subscribeToRunEvents, useRunStream };
197
- //# sourceMappingURL=chunk-Z2S54IZX.js.map
198
- //# sourceMappingURL=chunk-Z2S54IZX.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/hooks/useRunStream.ts"],"names":[],"mappings":"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","file":"chunk-Z2S54IZX.js","sourcesContent":["/**\n * useRunStream - Hook for streaming run events\n *\n * Implements dual EventSource + polling pattern for resilient real-time updates.\n */\n\nimport { useState, useEffect, useCallback, useRef } from 'react';\nimport type { RunEvent, RunStatus, AgentRun } from '../protocol/types.js';\nimport { useBBContext } from '../components/BBProvider.js';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface UseRunStreamOptions {\n /** Polling interval in ms (default: 4000) */\n pollInterval?: number;\n\n /** Whether to use polling as primary (if EventSource unavailable) */\n preferPolling?: boolean;\n\n /** Called on each event */\n onEvent?: (event: RunEvent) => void;\n\n /** Called when run completes */\n onComplete?: (run: AgentRun) => void;\n\n /** Called on error */\n onError?: (error: Error) => void;\n}\n\nexport interface UseRunStreamReturn {\n /** All received events */\n events: RunEvent[];\n\n /** Most recent event */\n latestEvent: RunEvent | null;\n\n /** Derived run status */\n status: RunStatus;\n\n /** Whether EventSource is connected */\n isConnected: boolean;\n\n /** Current run data (if available) */\n run: AgentRun | null;\n\n /** Manually disconnect */\n disconnect: () => void;\n\n /** Manually reconnect */\n reconnect: () => void;\n}\n\n// =============================================================================\n// Hook Implementation\n// =============================================================================\n\nexport function useRunStream(\n runId: string | null,\n options: UseRunStreamOptions = {}\n): UseRunStreamReturn {\n const { pollInterval = 4000, preferPolling = false, onEvent, onComplete, onError } = options;\n\n const { config } = useBBContext();\n\n const [events, setEvents] = useState<RunEvent[]>([]);\n const [latestEvent, setLatestEvent] = useState<RunEvent | null>(null);\n const [status, setStatus] = useState<RunStatus>('idle');\n const [isConnected, setIsConnected] = useState(false);\n const [run, setRun] = useState<AgentRun | null>(null);\n\n const eventSourceRef = useRef<EventSource | null>(null);\n const pollingIntervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\n const isActiveRef = useRef(true);\n\n // Handle incoming event\n const handleEvent = useCallback(\n (event: RunEvent) => {\n if (!isActiveRef.current) return;\n\n setEvents((prev) => [...prev, event]);\n setLatestEvent(event);\n onEvent?.(event);\n\n // Update status from event\n if (event.data?.status) {\n setStatus(event.data.status);\n }\n\n // Handle completion events\n if (event.type === 'completed' || event.type === 'failed' || event.type === 'cancelled') {\n const finalStatus =\n event.type === 'completed'\n ? 'completed'\n : event.type === 'failed'\n ? 'failed'\n : 'cancelled';\n setStatus(finalStatus);\n\n if (event.data?.run) {\n setRun(event.data.run);\n if (event.type === 'completed') {\n onComplete?.(event.data.run);\n }\n }\n }\n },\n [onEvent, onComplete]\n );\n\n // Setup EventSource\n const setupEventSource = useCallback(() => {\n if (!runId || preferPolling) return;\n\n const url = `${config.apiBaseUrl}/runs/${runId}/events`;\n const eventSource = new EventSource(url);\n\n eventSource.onopen = () => {\n setIsConnected(true);\n handleEvent({\n type: 'connected',\n runId,\n timestamp: Date.now(),\n });\n };\n\n eventSource.onmessage = (e) => {\n try {\n const data = JSON.parse(e.data);\n handleEvent({\n type: data.type ?? 'status',\n runId,\n timestamp: Date.now(),\n data,\n });\n } catch (err) {\n console.error('Failed to parse event:', err);\n }\n };\n\n eventSource.onerror = () => {\n setIsConnected(false);\n // EventSource will auto-reconnect, but we'll start polling as fallback\n startPolling();\n };\n\n eventSourceRef.current = eventSource;\n }, [runId, config.apiBaseUrl, preferPolling, handleEvent]);\n\n // Setup polling\n const startPolling = useCallback(() => {\n if (!runId || pollingIntervalRef.current) return;\n\n const poll = async () => {\n if (!isActiveRef.current || !runId) return;\n\n try {\n const response = await fetch(`${config.apiBaseUrl}/runs/${runId}`, {\n headers: config.headers,\n });\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n }\n\n const data = await response.json();\n\n handleEvent({\n type: 'status',\n runId,\n timestamp: Date.now(),\n data: {\n status: data.status,\n output: data.output,\n run: data,\n },\n });\n\n // Stop polling if run is complete\n if (data.status === 'completed' || data.status === 'failed' || data.status === 'cancelled') {\n stopPolling();\n handleEvent({\n type: data.status,\n runId,\n timestamp: Date.now(),\n data: { run: data },\n });\n }\n } catch (err) {\n if (err instanceof Error) {\n onError?.(err);\n }\n }\n };\n\n // Initial poll\n poll();\n\n // Setup interval\n pollingIntervalRef.current = setInterval(poll, pollInterval);\n }, [runId, config, pollInterval, handleEvent, onError]);\n\n const stopPolling = useCallback(() => {\n if (pollingIntervalRef.current) {\n clearInterval(pollingIntervalRef.current);\n pollingIntervalRef.current = null;\n }\n }, []);\n\n // Disconnect everything\n const disconnect = useCallback(() => {\n isActiveRef.current = false;\n\n if (eventSourceRef.current) {\n eventSourceRef.current.close();\n eventSourceRef.current = null;\n }\n\n stopPolling();\n setIsConnected(false);\n }, [stopPolling]);\n\n // Reconnect\n const reconnect = useCallback(() => {\n disconnect();\n isActiveRef.current = true;\n\n // Reset state\n setEvents([]);\n setLatestEvent(null);\n setStatus('idle');\n\n // Restart\n if (preferPolling) {\n startPolling();\n } else {\n setupEventSource();\n }\n }, [disconnect, preferPolling, startPolling, setupEventSource]);\n\n // Effect: Setup on mount / runId change\n useEffect(() => {\n if (!runId) {\n disconnect();\n return;\n }\n\n isActiveRef.current = true;\n setEvents([]);\n setLatestEvent(null);\n setStatus('running');\n\n if (preferPolling) {\n startPolling();\n } else {\n setupEventSource();\n // Also start polling as fallback with longer interval\n setTimeout(() => {\n if (isActiveRef.current && !isConnected) {\n startPolling();\n }\n }, 2000);\n }\n\n return () => {\n disconnect();\n };\n }, [runId]); // eslint-disable-line react-hooks/exhaustive-deps\n\n return {\n events,\n latestEvent,\n status,\n isConnected,\n run,\n disconnect,\n reconnect,\n };\n}\n\n// =============================================================================\n// Utility: Subscribe to run events (non-hook version)\n// =============================================================================\n\nexport function subscribeToRunEvents(\n apiBaseUrl: string,\n runId: string,\n callback: (event: RunEvent) => void,\n options: { headers?: Record<string, string> } = {}\n): () => void {\n const url = `${apiBaseUrl}/runs/${runId}/events`;\n const eventSource = new EventSource(url);\n\n eventSource.onopen = () => {\n callback({\n type: 'connected',\n runId,\n timestamp: Date.now(),\n });\n };\n\n eventSource.onmessage = (e) => {\n try {\n const data = JSON.parse(e.data);\n callback({\n type: data.type ?? 'status',\n runId,\n timestamp: Date.now(),\n data,\n });\n } catch (err) {\n console.error('Failed to parse event:', err);\n }\n };\n\n eventSource.onerror = () => {\n // EventSource handles reconnection automatically\n };\n\n return () => eventSource.close();\n}\n"]}
@@ -1,17 +0,0 @@
1
- import { cn } from './chunk-6RX2WGCO.js';
2
- import { jsx } from 'react/jsx-runtime';
3
-
4
- function Skeleton({ className, ...props }) {
5
- return /* @__PURE__ */ jsx(
6
- "div",
7
- {
8
- "data-slot": "skeleton",
9
- className: cn("bg-accent animate-pulse rounded-md", className),
10
- ...props
11
- }
12
- );
13
- }
14
-
15
- export { Skeleton };
16
- //# sourceMappingURL=chunk-ZR6AH25Z.js.map
17
- //# sourceMappingURL=chunk-ZR6AH25Z.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/primitives/ui/skeleton.tsx"],"names":[],"mappings":";;;AAGA,SAAS,QAAA,CAAS,EAAE,SAAA,EAAW,GAAG,OAAM,EAA0B;AAChE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,UAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,oCAAA,EAAsC,SAAS,CAAA;AAAA,MAC5D,GAAG;AAAA;AAAA,GACN;AAEJ","file":"chunk-ZR6AH25Z.js","sourcesContent":["import { cn } from \"../../lib/utils\";\nimport type { ComponentProps } from \"react\";\n\nfunction Skeleton({ className, ...props }: ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"bg-accent animate-pulse rounded-md\", className)}\n {...props}\n />\n );\n}\n\nexport { Skeleton };\n"]}
@@ -1,17 +0,0 @@
1
- export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger } from './chunk-JCJU57RC.js';
2
- import './chunk-EBM7YBKL.js';
3
- import './chunk-AFNIVLZP.js';
4
- import './chunk-ROZLTXGR.js';
5
- import './chunk-IKGYOGLK.js';
6
- import './chunk-V7EN5CTH.js';
7
- import './chunk-PFYVNM6H.js';
8
- import './chunk-MPC5IH7E.js';
9
- import './chunk-DIXPOHDO.js';
10
- import './chunk-EXQ7GYRS.js';
11
- import './chunk-7UQD6ROV.js';
12
- import './chunk-P25YCWQB.js';
13
- import './chunk-6RX2WGCO.js';
14
- import './chunk-3CMPQOMY.js';
15
- import './chunk-TM6AOUSD.js';
16
- //# sourceMappingURL=dialog-SPM3DTTI.js.map
17
- //# sourceMappingURL=dialog-SPM3DTTI.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"dialog-SPM3DTTI.js"}
@@ -1,21 +0,0 @@
1
- export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from './chunk-WWBIN6KV.js';
2
- import './chunk-NYMBJOGR.js';
3
- import './chunk-3OQT6IYR.js';
4
- import './chunk-X77Z4PFB.js';
5
- import './chunk-6DM4ACSS.js';
6
- import './chunk-YNVN3V4Y.js';
7
- import './chunk-AFNIVLZP.js';
8
- import './chunk-ROZLTXGR.js';
9
- import './chunk-IKGYOGLK.js';
10
- import './chunk-V7EN5CTH.js';
11
- import './chunk-PFYVNM6H.js';
12
- import './chunk-MPC5IH7E.js';
13
- import './chunk-DIXPOHDO.js';
14
- import './chunk-EXQ7GYRS.js';
15
- import './chunk-7UQD6ROV.js';
16
- import './chunk-P25YCWQB.js';
17
- import './chunk-6RX2WGCO.js';
18
- import './chunk-3CMPQOMY.js';
19
- import './chunk-TM6AOUSD.js';
20
- //# sourceMappingURL=dropdown-menu-HMTWKWGK.js.map
21
- //# sourceMappingURL=dropdown-menu-HMTWKWGK.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"dropdown-menu-HMTWKWGK.js"}
@@ -1,6 +0,0 @@
1
- export { Input } from './chunk-RMCVLIFE.js';
2
- import './chunk-6RX2WGCO.js';
3
- import './chunk-3CMPQOMY.js';
4
- import './chunk-TM6AOUSD.js';
5
- //# sourceMappingURL=input-BH4P4S26.js.map
6
- //# sourceMappingURL=input-BH4P4S26.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"input-BH4P4S26.js"}
@@ -1,8 +0,0 @@
1
- export { Label } from './chunk-IQ7WYWVJ.js';
2
- import './chunk-FEW533R2.js';
3
- import './chunk-P25YCWQB.js';
4
- import './chunk-6RX2WGCO.js';
5
- import './chunk-3CMPQOMY.js';
6
- import './chunk-TM6AOUSD.js';
7
- //# sourceMappingURL=label-5Z4Q6VER.js.map
8
- //# sourceMappingURL=label-5Z4Q6VER.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"label-5Z4Q6VER.js"}
@@ -1,18 +0,0 @@
1
- export { Popover, PopoverAnchor, PopoverContent, PopoverTrigger } from './chunk-ANWYRO6A.js';
2
- import './chunk-NYMBJOGR.js';
3
- import './chunk-3OQT6IYR.js';
4
- import './chunk-AFNIVLZP.js';
5
- import './chunk-ROZLTXGR.js';
6
- import './chunk-IKGYOGLK.js';
7
- import './chunk-V7EN5CTH.js';
8
- import './chunk-PFYVNM6H.js';
9
- import './chunk-MPC5IH7E.js';
10
- import './chunk-DIXPOHDO.js';
11
- import './chunk-EXQ7GYRS.js';
12
- import './chunk-7UQD6ROV.js';
13
- import './chunk-P25YCWQB.js';
14
- import './chunk-6RX2WGCO.js';
15
- import './chunk-3CMPQOMY.js';
16
- import './chunk-TM6AOUSD.js';
17
- //# sourceMappingURL=popover-IFOUXYLI.js.map
18
- //# sourceMappingURL=popover-IFOUXYLI.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"popover-IFOUXYLI.js"}
@@ -1,14 +0,0 @@
1
- export { ScrollArea, ScrollBar } from './chunk-REUYY7G5.js';
2
- import './chunk-X7VG7OTT.js';
3
- import './chunk-YNVN3V4Y.js';
4
- import './chunk-V7EN5CTH.js';
5
- import './chunk-PFYVNM6H.js';
6
- import './chunk-MPC5IH7E.js';
7
- import './chunk-EXQ7GYRS.js';
8
- import './chunk-7UQD6ROV.js';
9
- import './chunk-P25YCWQB.js';
10
- import './chunk-6RX2WGCO.js';
11
- import './chunk-3CMPQOMY.js';
12
- import './chunk-TM6AOUSD.js';
13
- //# sourceMappingURL=scroll-area-DJXNW6QX.js.map
14
- //# sourceMappingURL=scroll-area-DJXNW6QX.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"scroll-area-DJXNW6QX.js"}
@@ -1,22 +0,0 @@
1
- export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue } from './chunk-MHPF7R3O.js';
2
- import './chunk-Q2PGZVOT.js';
3
- import './chunk-NYMBJOGR.js';
4
- import './chunk-RSS2C2O3.js';
5
- import './chunk-3OQT6IYR.js';
6
- import './chunk-X7VG7OTT.js';
7
- import './chunk-6DM4ACSS.js';
8
- import './chunk-YNVN3V4Y.js';
9
- import './chunk-AFNIVLZP.js';
10
- import './chunk-ROZLTXGR.js';
11
- import './chunk-IKGYOGLK.js';
12
- import './chunk-PFYVNM6H.js';
13
- import './chunk-MPC5IH7E.js';
14
- import './chunk-DIXPOHDO.js';
15
- import './chunk-EXQ7GYRS.js';
16
- import './chunk-7UQD6ROV.js';
17
- import './chunk-P25YCWQB.js';
18
- import './chunk-6RX2WGCO.js';
19
- import './chunk-3CMPQOMY.js';
20
- import './chunk-TM6AOUSD.js';
21
- //# sourceMappingURL=select-FZ277C3G.js.map
22
- //# sourceMappingURL=select-FZ277C3G.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"select-FZ277C3G.js"}
@@ -1,8 +0,0 @@
1
- export { Separator } from './chunk-43B2WVLS.js';
2
- import './chunk-FEW533R2.js';
3
- import './chunk-P25YCWQB.js';
4
- import './chunk-6RX2WGCO.js';
5
- import './chunk-3CMPQOMY.js';
6
- import './chunk-TM6AOUSD.js';
7
- //# sourceMappingURL=separator-BTMLN4NB.js.map
8
- //# sourceMappingURL=separator-BTMLN4NB.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"separator-BTMLN4NB.js"}
@@ -1,6 +0,0 @@
1
- export { Skeleton } from './chunk-ZR6AH25Z.js';
2
- import './chunk-6RX2WGCO.js';
3
- import './chunk-3CMPQOMY.js';
4
- import './chunk-TM6AOUSD.js';
5
- //# sourceMappingURL=skeleton-DXIWBH4W.js.map
6
- //# sourceMappingURL=skeleton-DXIWBH4W.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"skeleton-DXIWBH4W.js"}
@@ -1,13 +0,0 @@
1
- export { Switch } from './chunk-ODM2AG6G.js';
2
- import './chunk-RSS2C2O3.js';
3
- import './chunk-3OQT6IYR.js';
4
- import './chunk-MPC5IH7E.js';
5
- import './chunk-DIXPOHDO.js';
6
- import './chunk-EXQ7GYRS.js';
7
- import './chunk-7UQD6ROV.js';
8
- import './chunk-P25YCWQB.js';
9
- import './chunk-6RX2WGCO.js';
10
- import './chunk-3CMPQOMY.js';
11
- import './chunk-TM6AOUSD.js';
12
- //# sourceMappingURL=switch-4MCXIZBY.js.map
13
- //# sourceMappingURL=switch-4MCXIZBY.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"switch-4MCXIZBY.js"}
@@ -1,17 +0,0 @@
1
- export { Tabs, TabsContent, TabsList, TabsTrigger } from './chunk-KSEZ6UM2.js';
2
- import './chunk-X77Z4PFB.js';
3
- import './chunk-6DM4ACSS.js';
4
- import './chunk-YNVN3V4Y.js';
5
- import './chunk-IKGYOGLK.js';
6
- import './chunk-V7EN5CTH.js';
7
- import './chunk-PFYVNM6H.js';
8
- import './chunk-MPC5IH7E.js';
9
- import './chunk-DIXPOHDO.js';
10
- import './chunk-EXQ7GYRS.js';
11
- import './chunk-7UQD6ROV.js';
12
- import './chunk-P25YCWQB.js';
13
- import './chunk-6RX2WGCO.js';
14
- import './chunk-3CMPQOMY.js';
15
- import './chunk-TM6AOUSD.js';
16
- //# sourceMappingURL=tabs-O7AW3APK.js.map
17
- //# sourceMappingURL=tabs-O7AW3APK.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"tabs-O7AW3APK.js"}
@@ -1,6 +0,0 @@
1
- export { Textarea } from './chunk-PWNNSGFL.js';
2
- import './chunk-6RX2WGCO.js';
3
- import './chunk-3CMPQOMY.js';
4
- import './chunk-TM6AOUSD.js';
5
- //# sourceMappingURL=textarea-IB5WAFDO.js.map
6
- //# sourceMappingURL=textarea-IB5WAFDO.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"textarea-IB5WAFDO.js"}
@@ -1,10 +0,0 @@
1
- export { Toggle, toggleVariants } from './chunk-XE4K2SGI.js';
2
- import './chunk-DIXPOHDO.js';
3
- import './chunk-EXQ7GYRS.js';
4
- import './chunk-7UQD6ROV.js';
5
- import './chunk-P25YCWQB.js';
6
- import './chunk-6RX2WGCO.js';
7
- import './chunk-3CMPQOMY.js';
8
- import './chunk-TM6AOUSD.js';
9
- //# sourceMappingURL=toggle-XVPPG6P4.js.map
10
- //# sourceMappingURL=toggle-XVPPG6P4.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"toggle-XVPPG6P4.js"}