@octomil/browser 1.0.0 → 1.2.0

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 (415) hide show
  1. package/README.md +168 -36
  2. package/dist/_generated/accelerator_type.d.ts +8 -0
  3. package/dist/_generated/accelerator_type.d.ts.map +1 -0
  4. package/dist/_generated/accelerator_type.js +10 -0
  5. package/dist/_generated/accelerator_type.js.map +1 -0
  6. package/dist/_generated/activation_policy.d.ts +7 -0
  7. package/dist/_generated/activation_policy.d.ts.map +1 -0
  8. package/dist/_generated/activation_policy.js +9 -0
  9. package/dist/_generated/activation_policy.js.map +1 -0
  10. package/dist/_generated/adapter_activation_state.d.ts +13 -0
  11. package/dist/_generated/adapter_activation_state.d.ts.map +1 -0
  12. package/dist/_generated/adapter_activation_state.js +15 -0
  13. package/dist/_generated/adapter_activation_state.js.map +1 -0
  14. package/dist/_generated/artifact_format.d.ts +11 -0
  15. package/dist/_generated/artifact_format.d.ts.map +1 -0
  16. package/dist/_generated/artifact_format.js +13 -0
  17. package/dist/_generated/artifact_format.js.map +1 -0
  18. package/dist/_generated/artifact_resource_kind.d.ts +16 -0
  19. package/dist/_generated/artifact_resource_kind.d.ts.map +1 -0
  20. package/dist/_generated/artifact_resource_kind.js +18 -0
  21. package/dist/_generated/artifact_resource_kind.js.map +1 -0
  22. package/dist/_generated/artifact_status.d.ts +21 -0
  23. package/dist/_generated/artifact_status.d.ts.map +1 -0
  24. package/dist/_generated/artifact_status.js +23 -0
  25. package/dist/_generated/artifact_status.js.map +1 -0
  26. package/dist/_generated/auth_method.d.ts +10 -0
  27. package/dist/_generated/auth_method.d.ts.map +1 -0
  28. package/dist/_generated/auth_method.js +12 -0
  29. package/dist/_generated/auth_method.js.map +1 -0
  30. package/dist/_generated/auth_type.d.ts +7 -0
  31. package/dist/_generated/auth_type.d.ts.map +1 -0
  32. package/dist/_generated/auth_type.js +9 -0
  33. package/dist/_generated/auth_type.js.map +1 -0
  34. package/dist/_generated/billing_interval.d.ts +5 -0
  35. package/dist/_generated/billing_interval.d.ts.map +1 -0
  36. package/dist/_generated/billing_interval.js +7 -0
  37. package/dist/_generated/billing_interval.js.map +1 -0
  38. package/dist/_generated/billing_plan.d.ts +47 -0
  39. package/dist/_generated/billing_plan.d.ts.map +1 -0
  40. package/dist/_generated/billing_plan.js +41 -0
  41. package/dist/_generated/billing_plan.js.map +1 -0
  42. package/dist/_generated/cloud_provider.d.ts +12 -0
  43. package/dist/_generated/cloud_provider.d.ts.map +1 -0
  44. package/dist/_generated/cloud_provider.js +14 -0
  45. package/dist/_generated/cloud_provider.js.map +1 -0
  46. package/dist/_generated/compatibility_level.d.ts +7 -0
  47. package/dist/_generated/compatibility_level.d.ts.map +1 -0
  48. package/dist/_generated/compatibility_level.js +9 -0
  49. package/dist/_generated/compatibility_level.js.map +1 -0
  50. package/dist/_generated/content_part_type.d.ts +7 -0
  51. package/dist/_generated/content_part_type.d.ts.map +1 -0
  52. package/dist/_generated/content_part_type.js +9 -0
  53. package/dist/_generated/content_part_type.js.map +1 -0
  54. package/dist/_generated/delivery_mode.d.ts +6 -0
  55. package/dist/_generated/delivery_mode.d.ts.map +1 -0
  56. package/dist/_generated/delivery_mode.js +8 -0
  57. package/dist/_generated/delivery_mode.js.map +1 -0
  58. package/dist/_generated/device_class.d.ts +7 -0
  59. package/dist/_generated/device_class.d.ts.map +1 -0
  60. package/dist/_generated/device_class.js +9 -0
  61. package/dist/_generated/device_class.js.map +1 -0
  62. package/dist/_generated/device_connectivity_status.d.ts +8 -0
  63. package/dist/_generated/device_connectivity_status.d.ts.map +1 -0
  64. package/dist/_generated/device_connectivity_status.js +10 -0
  65. package/dist/_generated/device_connectivity_status.js.map +1 -0
  66. package/dist/_generated/device_model_status.d.ts +14 -0
  67. package/dist/_generated/device_model_status.d.ts.map +1 -0
  68. package/dist/_generated/device_model_status.js +16 -0
  69. package/dist/_generated/device_model_status.js.map +1 -0
  70. package/dist/_generated/device_platform.d.ts +9 -0
  71. package/dist/_generated/device_platform.d.ts.map +1 -0
  72. package/dist/_generated/device_platform.js +11 -0
  73. package/dist/_generated/device_platform.js.map +1 -0
  74. package/dist/_generated/email_provider.d.ts +8 -0
  75. package/dist/_generated/email_provider.d.ts.map +1 -0
  76. package/dist/_generated/email_provider.js +10 -0
  77. package/dist/_generated/email_provider.js.map +1 -0
  78. package/dist/_generated/email_template.d.ts +11 -0
  79. package/dist/_generated/email_template.d.ts.map +1 -0
  80. package/dist/_generated/email_template.js +13 -0
  81. package/dist/_generated/email_template.js.map +1 -0
  82. package/dist/_generated/error_code.d.ts +52 -0
  83. package/dist/_generated/error_code.d.ts.map +1 -0
  84. package/dist/_generated/error_code.js +85 -0
  85. package/dist/_generated/error_code.js.map +1 -0
  86. package/dist/_generated/federated_participation_state.d.ts +25 -0
  87. package/dist/_generated/federated_participation_state.d.ts.map +1 -0
  88. package/dist/_generated/federated_participation_state.js +27 -0
  89. package/dist/_generated/federated_participation_state.js.map +1 -0
  90. package/dist/_generated/federated_round_state.d.ts +17 -0
  91. package/dist/_generated/federated_round_state.d.ts.map +1 -0
  92. package/dist/_generated/federated_round_state.js +19 -0
  93. package/dist/_generated/federated_round_state.js.map +1 -0
  94. package/dist/_generated/finish_reason.d.ts +7 -0
  95. package/dist/_generated/finish_reason.d.ts.map +1 -0
  96. package/dist/_generated/finish_reason.js +9 -0
  97. package/dist/_generated/finish_reason.js.map +1 -0
  98. package/dist/_generated/index.d.ts +17 -0
  99. package/dist/_generated/index.d.ts.map +1 -0
  100. package/dist/_generated/index.js +17 -0
  101. package/dist/_generated/index.js.map +1 -0
  102. package/dist/_generated/input_modality.d.ts +7 -0
  103. package/dist/_generated/input_modality.d.ts.map +1 -0
  104. package/dist/_generated/input_modality.js +9 -0
  105. package/dist/_generated/input_modality.js.map +1 -0
  106. package/dist/_generated/message_role.d.ts +7 -0
  107. package/dist/_generated/message_role.d.ts.map +1 -0
  108. package/dist/_generated/message_role.js +9 -0
  109. package/dist/_generated/message_role.js.map +1 -0
  110. package/dist/_generated/metric_views.d.ts +18 -0
  111. package/dist/_generated/metric_views.d.ts.map +1 -0
  112. package/dist/_generated/metric_views.js +22 -0
  113. package/dist/_generated/metric_views.js.map +1 -0
  114. package/dist/_generated/modality.d.ts +7 -0
  115. package/dist/_generated/modality.d.ts.map +1 -0
  116. package/dist/_generated/modality.js +9 -0
  117. package/dist/_generated/modality.js.map +1 -0
  118. package/dist/_generated/model_capability.d.ts +10 -0
  119. package/dist/_generated/model_capability.d.ts.map +1 -0
  120. package/dist/_generated/model_capability.js +12 -0
  121. package/dist/_generated/model_capability.js.map +1 -0
  122. package/dist/_generated/model_feature.d.ts +7 -0
  123. package/dist/_generated/model_feature.d.ts.map +1 -0
  124. package/dist/_generated/model_feature.js +9 -0
  125. package/dist/_generated/model_feature.js.map +1 -0
  126. package/dist/_generated/model_lifecycle.d.ts +7 -0
  127. package/dist/_generated/model_lifecycle.d.ts.map +1 -0
  128. package/dist/_generated/model_lifecycle.js +9 -0
  129. package/dist/_generated/model_lifecycle.js.map +1 -0
  130. package/dist/_generated/model_source_format.d.ts +9 -0
  131. package/dist/_generated/model_source_format.d.ts.map +1 -0
  132. package/dist/_generated/model_source_format.js +11 -0
  133. package/dist/_generated/model_source_format.js.map +1 -0
  134. package/dist/_generated/model_status.d.ts +7 -0
  135. package/dist/_generated/model_status.d.ts.map +1 -0
  136. package/dist/_generated/model_status.js +9 -0
  137. package/dist/_generated/model_status.js.map +1 -0
  138. package/dist/_generated/network_type.d.ts +7 -0
  139. package/dist/_generated/network_type.d.ts.map +1 -0
  140. package/dist/_generated/network_type.js +9 -0
  141. package/dist/_generated/network_type.js.map +1 -0
  142. package/dist/_generated/oauth_provider.d.ts +8 -0
  143. package/dist/_generated/oauth_provider.d.ts.map +1 -0
  144. package/dist/_generated/oauth_provider.js +10 -0
  145. package/dist/_generated/oauth_provider.js.map +1 -0
  146. package/dist/_generated/operation_state.d.ts +9 -0
  147. package/dist/_generated/operation_state.d.ts.map +1 -0
  148. package/dist/_generated/operation_state.js +11 -0
  149. package/dist/_generated/operation_state.js.map +1 -0
  150. package/dist/_generated/otlp_resource_attributes.d.ts +16 -0
  151. package/dist/_generated/otlp_resource_attributes.d.ts.map +1 -0
  152. package/dist/_generated/otlp_resource_attributes.js +17 -0
  153. package/dist/_generated/otlp_resource_attributes.js.map +1 -0
  154. package/dist/_generated/principal_type.d.ts +7 -0
  155. package/dist/_generated/principal_type.d.ts.map +1 -0
  156. package/dist/_generated/principal_type.js +9 -0
  157. package/dist/_generated/principal_type.js.map +1 -0
  158. package/dist/_generated/query_routing_tier.d.ts +6 -0
  159. package/dist/_generated/query_routing_tier.d.ts.map +1 -0
  160. package/dist/_generated/query_routing_tier.js +8 -0
  161. package/dist/_generated/query_routing_tier.js.map +1 -0
  162. package/dist/_generated/routing_policy.d.ts +7 -0
  163. package/dist/_generated/routing_policy.d.ts.map +1 -0
  164. package/dist/_generated/routing_policy.js +9 -0
  165. package/dist/_generated/routing_policy.js.map +1 -0
  166. package/dist/_generated/runtime_executor.d.ts +18 -0
  167. package/dist/_generated/runtime_executor.d.ts.map +1 -0
  168. package/dist/_generated/runtime_executor.js +20 -0
  169. package/dist/_generated/runtime_executor.js.map +1 -0
  170. package/dist/_generated/scope.d.ts +16 -0
  171. package/dist/_generated/scope.d.ts.map +1 -0
  172. package/dist/_generated/scope.js +18 -0
  173. package/dist/_generated/scope.js.map +1 -0
  174. package/dist/_generated/span_attributes.d.ts +25 -0
  175. package/dist/_generated/span_attributes.d.ts.map +1 -0
  176. package/dist/_generated/span_attributes.js +34 -0
  177. package/dist/_generated/span_attributes.js.map +1 -0
  178. package/dist/_generated/span_event_attributes.d.ts +23 -0
  179. package/dist/_generated/span_event_attributes.d.ts.map +1 -0
  180. package/dist/_generated/span_event_attributes.js +36 -0
  181. package/dist/_generated/span_event_attributes.js.map +1 -0
  182. package/dist/_generated/span_event_names.d.ts +42 -0
  183. package/dist/_generated/span_event_names.d.ts.map +1 -0
  184. package/dist/_generated/span_event_names.js +82 -0
  185. package/dist/_generated/span_event_names.js.map +1 -0
  186. package/dist/_generated/span_names.d.ts +17 -0
  187. package/dist/_generated/span_names.d.ts.map +1 -0
  188. package/dist/_generated/span_names.js +18 -0
  189. package/dist/_generated/span_names.js.map +1 -0
  190. package/dist/_generated/span_status_mapping.d.ts +8 -0
  191. package/dist/_generated/span_status_mapping.d.ts.map +1 -0
  192. package/dist/_generated/span_status_mapping.js +17 -0
  193. package/dist/_generated/span_status_mapping.js.map +1 -0
  194. package/dist/_generated/subscription_status.d.ts +11 -0
  195. package/dist/_generated/subscription_status.d.ts.map +1 -0
  196. package/dist/_generated/subscription_status.js +13 -0
  197. package/dist/_generated/subscription_status.js.map +1 -0
  198. package/dist/_generated/support_tier.d.ts +7 -0
  199. package/dist/_generated/support_tier.d.ts.map +1 -0
  200. package/dist/_generated/support_tier.js +9 -0
  201. package/dist/_generated/support_tier.js.map +1 -0
  202. package/dist/_generated/telemetry_class.d.ts +6 -0
  203. package/dist/_generated/telemetry_class.d.ts.map +1 -0
  204. package/dist/_generated/telemetry_class.js +8 -0
  205. package/dist/_generated/telemetry_class.js.map +1 -0
  206. package/dist/_generated/telemetry_events.d.ts +10 -0
  207. package/dist/_generated/telemetry_events.d.ts.map +1 -0
  208. package/dist/_generated/telemetry_events.js +18 -0
  209. package/dist/_generated/telemetry_events.js.map +1 -0
  210. package/dist/_generated/thermal_state.d.ts +7 -0
  211. package/dist/_generated/thermal_state.d.ts.map +1 -0
  212. package/dist/_generated/thermal_state.js +9 -0
  213. package/dist/_generated/thermal_state.js.map +1 -0
  214. package/dist/_generated/tool_call_tier.d.ts +7 -0
  215. package/dist/_generated/tool_call_tier.d.ts.map +1 -0
  216. package/dist/_generated/tool_call_tier.js +9 -0
  217. package/dist/_generated/tool_call_tier.js.map +1 -0
  218. package/dist/_generated/training_job_state.d.ts +23 -0
  219. package/dist/_generated/training_job_state.d.ts.map +1 -0
  220. package/dist/_generated/training_job_state.js +25 -0
  221. package/dist/_generated/training_job_state.js.map +1 -0
  222. package/dist/_generated/work_class.d.ts +6 -0
  223. package/dist/_generated/work_class.d.ts.map +1 -0
  224. package/dist/_generated/work_class.js +8 -0
  225. package/dist/_generated/work_class.js.map +1 -0
  226. package/dist/artifacts.d.ts +16 -0
  227. package/dist/artifacts.d.ts.map +1 -0
  228. package/dist/artifacts.js +16 -0
  229. package/dist/artifacts.js.map +1 -0
  230. package/dist/audio/audio-transcriptions.d.ts +31 -0
  231. package/dist/audio/audio-transcriptions.d.ts.map +1 -0
  232. package/dist/audio/audio-transcriptions.js +73 -0
  233. package/dist/audio/audio-transcriptions.js.map +1 -0
  234. package/dist/audio/index.d.ts +5 -0
  235. package/dist/audio/index.d.ts.map +1 -0
  236. package/dist/audio/index.js +3 -0
  237. package/dist/audio/index.js.map +1 -0
  238. package/dist/audio/octomil-audio.d.ts +9 -0
  239. package/dist/audio/octomil-audio.d.ts.map +1 -0
  240. package/dist/audio/octomil-audio.js +11 -0
  241. package/dist/audio/octomil-audio.js.map +1 -0
  242. package/dist/audio/transcription-types.d.ts +17 -0
  243. package/dist/audio/transcription-types.d.ts.map +1 -0
  244. package/dist/audio/transcription-types.js +6 -0
  245. package/dist/audio/transcription-types.js.map +1 -0
  246. package/dist/cache.js +1 -1
  247. package/dist/cache.js.map +1 -1
  248. package/dist/capabilities.d.ts +26 -0
  249. package/dist/capabilities.d.ts.map +1 -0
  250. package/dist/capabilities.js +68 -0
  251. package/dist/capabilities.js.map +1 -0
  252. package/dist/chat.d.ts +109 -0
  253. package/dist/chat.d.ts.map +1 -0
  254. package/dist/chat.js +258 -0
  255. package/dist/chat.js.map +1 -0
  256. package/dist/configure.d.ts +18 -0
  257. package/dist/configure.d.ts.map +1 -0
  258. package/dist/configure.js +136 -0
  259. package/dist/configure.js.map +1 -0
  260. package/dist/control.d.ts +171 -0
  261. package/dist/control.d.ts.map +1 -0
  262. package/dist/control.js +317 -0
  263. package/dist/control.js.map +1 -0
  264. package/dist/device-auth.d.ts +1 -1
  265. package/dist/device-auth.d.ts.map +1 -1
  266. package/dist/device-auth.js +7 -7
  267. package/dist/device-auth.js.map +1 -1
  268. package/dist/device-context.d.ts +48 -0
  269. package/dist/device-context.d.ts.map +1 -0
  270. package/dist/device-context.js +92 -0
  271. package/dist/device-context.js.map +1 -0
  272. package/dist/devices.d.ts +17 -0
  273. package/dist/devices.d.ts.map +1 -0
  274. package/dist/devices.js +16 -0
  275. package/dist/devices.js.map +1 -0
  276. package/dist/embeddings.d.ts +19 -0
  277. package/dist/embeddings.d.ts.map +1 -0
  278. package/dist/embeddings.js +54 -0
  279. package/dist/embeddings.js.map +1 -0
  280. package/dist/experiments.d.ts +4 -3
  281. package/dist/experiments.d.ts.map +1 -1
  282. package/dist/experiments.js +5 -10
  283. package/dist/experiments.js.map +1 -1
  284. package/dist/federated-analytics.d.ts +65 -0
  285. package/dist/federated-analytics.d.ts.map +1 -0
  286. package/dist/federated-analytics.js +128 -0
  287. package/dist/federated-analytics.js.map +1 -0
  288. package/dist/federated.d.ts +10 -3
  289. package/dist/federated.d.ts.map +1 -1
  290. package/dist/federated.js +68 -15
  291. package/dist/federated.js.map +1 -1
  292. package/dist/gradient-cache.d.ts +21 -0
  293. package/dist/gradient-cache.d.ts.map +1 -0
  294. package/dist/gradient-cache.js +70 -0
  295. package/dist/gradient-cache.js.map +1 -0
  296. package/dist/index.cjs +34626 -723
  297. package/dist/index.cjs.map +4 -4
  298. package/dist/index.d.ts +64 -13
  299. package/dist/index.d.ts.map +1 -1
  300. package/dist/index.js +55 -13
  301. package/dist/index.js.map +1 -1
  302. package/dist/install-id.d.ts +32 -0
  303. package/dist/install-id.d.ts.map +1 -0
  304. package/dist/install-id.js +61 -0
  305. package/dist/install-id.js.map +1 -0
  306. package/dist/{model-loader.d.ts → model-manager.d.ts} +4 -4
  307. package/dist/model-manager.d.ts.map +1 -0
  308. package/dist/{model-loader.js → model-manager.js} +18 -14
  309. package/dist/model-manager.js.map +1 -0
  310. package/dist/models.d.ts +74 -0
  311. package/dist/models.d.ts.map +1 -0
  312. package/dist/models.js +113 -0
  313. package/dist/models.js.map +1 -0
  314. package/dist/monitoring-config.d.ts +8 -0
  315. package/dist/monitoring-config.d.ts.map +1 -0
  316. package/dist/monitoring-config.js +5 -0
  317. package/dist/monitoring-config.js.map +1 -0
  318. package/dist/monitoring.d.ts +10 -0
  319. package/dist/monitoring.d.ts.map +1 -0
  320. package/dist/monitoring.js +19 -0
  321. package/dist/monitoring.js.map +1 -0
  322. package/dist/octomil.d.ts +151 -16
  323. package/dist/octomil.d.ts.map +1 -1
  324. package/dist/octomil.js +456 -125
  325. package/dist/octomil.js.map +1 -1
  326. package/dist/octomil.min.js +48 -2840
  327. package/dist/octomil.min.js.map +4 -4
  328. package/dist/responses-runtime.d.ts +13 -0
  329. package/dist/responses-runtime.d.ts.map +1 -0
  330. package/dist/responses-runtime.js +2 -0
  331. package/dist/responses-runtime.js.map +1 -0
  332. package/dist/responses-tools.d.ts +18 -0
  333. package/dist/responses-tools.d.ts.map +1 -0
  334. package/dist/responses-tools.js +71 -0
  335. package/dist/responses-tools.js.map +1 -0
  336. package/dist/responses.d.ts +142 -0
  337. package/dist/responses.d.ts.map +1 -0
  338. package/dist/responses.js +549 -0
  339. package/dist/responses.js.map +1 -0
  340. package/dist/routing.d.ts +49 -0
  341. package/dist/routing.d.ts.map +1 -0
  342. package/dist/routing.js +221 -0
  343. package/dist/routing.js.map +1 -0
  344. package/dist/runtime/core/model-runtime.d.ts +19 -0
  345. package/dist/runtime/core/model-runtime.d.ts.map +1 -0
  346. package/dist/runtime/core/model-runtime.js +9 -0
  347. package/dist/runtime/core/model-runtime.js.map +1 -0
  348. package/dist/{inference.d.ts → runtime/engines/onnx-web/engine.d.ts} +7 -3
  349. package/dist/runtime/engines/onnx-web/engine.d.ts.map +1 -0
  350. package/dist/{inference.js → runtime/engines/onnx-web/engine.js} +21 -7
  351. package/dist/runtime/engines/onnx-web/engine.js.map +1 -0
  352. package/dist/runtime/engines/registry/engine-plugin.d.ts +11 -0
  353. package/dist/runtime/engines/registry/engine-plugin.d.ts.map +1 -0
  354. package/dist/runtime/engines/registry/engine-plugin.js +2 -0
  355. package/dist/runtime/engines/registry/engine-plugin.js.map +1 -0
  356. package/dist/runtime/engines/registry/engine-registry.d.ts +35 -0
  357. package/dist/runtime/engines/registry/engine-registry.d.ts.map +1 -0
  358. package/dist/runtime/engines/registry/engine-registry.js +74 -0
  359. package/dist/runtime/engines/registry/engine-registry.js.map +1 -0
  360. package/dist/runtime/index.d.ts +4 -0
  361. package/dist/runtime/index.d.ts.map +1 -0
  362. package/dist/runtime/index.js +2 -0
  363. package/dist/runtime/index.js.map +1 -0
  364. package/dist/secure-aggregation.d.ts.map +1 -1
  365. package/dist/secure-aggregation.js +3 -2
  366. package/dist/secure-aggregation.js.map +1 -1
  367. package/dist/server-api.d.ts +17 -0
  368. package/dist/server-api.d.ts.map +1 -0
  369. package/dist/server-api.js +56 -0
  370. package/dist/server-api.js.map +1 -0
  371. package/dist/settings.d.ts +20 -0
  372. package/dist/settings.d.ts.map +1 -0
  373. package/dist/settings.js +49 -0
  374. package/dist/settings.js.map +1 -0
  375. package/dist/silent-auth-config.d.ts +33 -0
  376. package/dist/silent-auth-config.d.ts.map +1 -0
  377. package/dist/silent-auth-config.js +29 -0
  378. package/dist/silent-auth-config.js.map +1 -0
  379. package/dist/streaming.d.ts +4 -3
  380. package/dist/streaming.d.ts.map +1 -1
  381. package/dist/streaming.js +15 -25
  382. package/dist/streaming.js.map +1 -1
  383. package/dist/sync-manager.d.ts +103 -0
  384. package/dist/sync-manager.d.ts.map +1 -0
  385. package/dist/sync-manager.js +314 -0
  386. package/dist/sync-manager.js.map +1 -0
  387. package/dist/telemetry.d.ts +99 -4
  388. package/dist/telemetry.d.ts.map +1 -1
  389. package/dist/telemetry.js +251 -13
  390. package/dist/telemetry.js.map +1 -1
  391. package/dist/text/octomil-text.d.ts +18 -0
  392. package/dist/text/octomil-text.d.ts.map +1 -0
  393. package/dist/text/octomil-text.js +20 -0
  394. package/dist/text/octomil-text.js.map +1 -0
  395. package/dist/training.d.ts +15 -0
  396. package/dist/training.d.ts.map +1 -0
  397. package/dist/training.js +35 -0
  398. package/dist/training.js.map +1 -0
  399. package/dist/transformers-local-runtime.d.ts +17 -0
  400. package/dist/transformers-local-runtime.d.ts.map +1 -0
  401. package/dist/transformers-local-runtime.js +356 -0
  402. package/dist/transformers-local-runtime.js.map +1 -0
  403. package/dist/types.d.ts +353 -25
  404. package/dist/types.d.ts.map +1 -1
  405. package/dist/types.js +146 -0
  406. package/dist/types.js.map +1 -1
  407. package/package.json +7 -6
  408. package/dist/inference.d.ts.map +0 -1
  409. package/dist/inference.js.map +0 -1
  410. package/dist/model-loader.d.ts.map +0 -1
  411. package/dist/model-loader.js.map +0 -1
  412. package/dist/rollouts.d.ts +0 -43
  413. package/dist/rollouts.d.ts.map +0 -1
  414. package/dist/rollouts.js +0 -114
  415. package/dist/rollouts.js.map +0 -1
@@ -0,0 +1,314 @@
1
+ /**
2
+ * @octomil/browser — SyncManager
3
+ *
4
+ * Reconciles local model state against the server-authoritative desired state.
5
+ * Fetches desired state, compares against locally cached models, downloads
6
+ * missing or outdated artifacts, activates per activation_policy, and reports
7
+ * observed state back to the server.
8
+ *
9
+ * Opt-in: consumers create and start the SyncManager explicitly.
10
+ */
11
+ import { computeHash } from "./integrity.js";
12
+ import { OctomilError } from "./types.js";
13
+ // ---------------------------------------------------------------------------
14
+ // IndexedDB metadata store
15
+ // ---------------------------------------------------------------------------
16
+ const IDB_META_DB = "octomil-sync-meta";
17
+ const IDB_META_STORE = "models";
18
+ const IDB_META_VERSION = 1;
19
+ class MetadataStore {
20
+ dbPromise = null;
21
+ openDB() {
22
+ if (this.dbPromise)
23
+ return this.dbPromise;
24
+ this.dbPromise = new Promise((resolve, reject) => {
25
+ const request = indexedDB.open(IDB_META_DB, IDB_META_VERSION);
26
+ request.onupgradeneeded = () => {
27
+ const db = request.result;
28
+ if (!db.objectStoreNames.contains(IDB_META_STORE)) {
29
+ db.createObjectStore(IDB_META_STORE, { keyPath: "modelId" });
30
+ }
31
+ };
32
+ request.onsuccess = () => resolve(request.result);
33
+ request.onerror = () => reject(request.error);
34
+ });
35
+ return this.dbPromise;
36
+ }
37
+ async tx(mode) {
38
+ const db = await this.openDB();
39
+ return db.transaction(IDB_META_STORE, mode).objectStore(IDB_META_STORE);
40
+ }
41
+ async get(modelId) {
42
+ const store = await this.tx("readonly");
43
+ return new Promise((resolve, reject) => {
44
+ const req = store.get(modelId);
45
+ req.onsuccess = () => resolve(req.result ?? null);
46
+ req.onerror = () => reject(req.error);
47
+ });
48
+ }
49
+ async put(meta) {
50
+ const store = await this.tx("readwrite");
51
+ return new Promise((resolve, reject) => {
52
+ const req = store.put(meta);
53
+ req.onsuccess = () => resolve();
54
+ req.onerror = () => reject(req.error);
55
+ });
56
+ }
57
+ async getAll() {
58
+ const store = await this.tx("readonly");
59
+ return new Promise((resolve, reject) => {
60
+ const req = store.getAll();
61
+ req.onsuccess = () => resolve(req.result);
62
+ req.onerror = () => reject(req.error);
63
+ });
64
+ }
65
+ async remove(modelId) {
66
+ const store = await this.tx("readwrite");
67
+ return new Promise((resolve, reject) => {
68
+ const req = store.delete(modelId);
69
+ req.onsuccess = () => resolve();
70
+ req.onerror = () => reject(req.error);
71
+ });
72
+ }
73
+ }
74
+ // ---------------------------------------------------------------------------
75
+ // SyncManager
76
+ // ---------------------------------------------------------------------------
77
+ export class SyncManager {
78
+ control;
79
+ cache;
80
+ intervalMs;
81
+ onEvent;
82
+ meta;
83
+ timer = null;
84
+ syncing = false;
85
+ constructor(options) {
86
+ this.control = options.control;
87
+ this.cache = options.cache;
88
+ this.intervalMs = options.intervalMs ?? 300_000;
89
+ this.onEvent = options.onEvent;
90
+ this.meta = new MetadataStore();
91
+ }
92
+ /**
93
+ * Start periodic sync. Runs an initial sync immediately, then at the
94
+ * configured interval.
95
+ */
96
+ start() {
97
+ this.stop();
98
+ void this.sync();
99
+ if (this.intervalMs > 0) {
100
+ this.timer = setInterval(() => {
101
+ void this.sync();
102
+ }, this.intervalMs);
103
+ }
104
+ }
105
+ /** Stop periodic sync. */
106
+ stop() {
107
+ if (this.timer) {
108
+ clearInterval(this.timer);
109
+ this.timer = null;
110
+ }
111
+ }
112
+ /** Whether the sync loop is currently running. */
113
+ get isRunning() {
114
+ return this.timer !== null;
115
+ }
116
+ /**
117
+ * Run a single reconcile cycle. Can be called manually for on-demand sync
118
+ * (e.g. on page load or visibility change).
119
+ */
120
+ async sync() {
121
+ if (this.syncing)
122
+ return;
123
+ this.syncing = true;
124
+ let downloaded = 0;
125
+ let activated = 0;
126
+ let errors = 0;
127
+ try {
128
+ this.emit({ type: "sync_start" });
129
+ const desired = await this.control.fetchDesiredState();
130
+ const entries = this.parseDesiredEntries(desired);
131
+ for (const entry of entries) {
132
+ try {
133
+ const result = await this.reconcileEntry(entry);
134
+ if (result.downloaded)
135
+ downloaded++;
136
+ if (result.activated)
137
+ activated++;
138
+ }
139
+ catch (err) {
140
+ errors++;
141
+ this.emit({
142
+ type: "download_error",
143
+ modelId: entry.modelId,
144
+ error: String(err),
145
+ });
146
+ }
147
+ }
148
+ // GC: remove cached artifacts no longer in desired state
149
+ await this.garbageCollect(desired, entries);
150
+ // Report observed state
151
+ await this.reportState();
152
+ this.emit({ type: "sync_complete", downloaded, activated, errors });
153
+ }
154
+ catch (err) {
155
+ this.emit({ type: "error", error: String(err) });
156
+ }
157
+ finally {
158
+ this.syncing = false;
159
+ }
160
+ }
161
+ /** Get metadata for all locally tracked models. */
162
+ async getLocalModels() {
163
+ return this.meta.getAll();
164
+ }
165
+ /** Get metadata for a specific model. */
166
+ async getModelMeta(modelId) {
167
+ return this.meta.get(modelId);
168
+ }
169
+ /** Manually activate a staged model. */
170
+ async activate(modelId) {
171
+ const existing = await this.meta.get(modelId);
172
+ if (!existing) {
173
+ throw new OctomilError("MODEL_NOT_FOUND", `No local model found for ${modelId}`);
174
+ }
175
+ if (existing.status === "active")
176
+ return;
177
+ existing.status = "active";
178
+ await this.meta.put(existing);
179
+ this.emit({ type: "activate", modelId, version: existing.modelVersion });
180
+ }
181
+ // -----------------------------------------------------------------------
182
+ // Internal
183
+ // -----------------------------------------------------------------------
184
+ parseDesiredEntries(desired) {
185
+ return desired.models;
186
+ }
187
+ async reconcileEntry(entry) {
188
+ const existing = await this.meta.get(entry.modelId);
189
+ // Already at desired version and active
190
+ if (existing && existing.modelVersion === entry.desiredVersion && existing.status === "active") {
191
+ return { downloaded: false, activated: false };
192
+ }
193
+ // Already staged at desired version — just check activation policy
194
+ if (existing && existing.modelVersion === entry.desiredVersion && existing.status === "staged") {
195
+ const shouldActivate = this.shouldActivate(entry.activationPolicy);
196
+ if (shouldActivate) {
197
+ existing.status = "active";
198
+ await this.meta.put(existing);
199
+ this.emit({ type: "activate", modelId: entry.modelId, version: entry.desiredVersion });
200
+ return { downloaded: false, activated: true };
201
+ }
202
+ return { downloaded: false, activated: false };
203
+ }
204
+ // Need to download
205
+ if (!entry.artifactManifest?.downloadUrl) {
206
+ return { downloaded: false, activated: false };
207
+ }
208
+ this.emit({ type: "download_start", modelId: entry.modelId });
209
+ const data = await this.downloadArtifact(entry.artifactManifest.downloadUrl);
210
+ // Verify integrity if sha256 is provided
211
+ if (entry.artifactManifest.sha256) {
212
+ const hash = await computeHash(data);
213
+ if (hash !== entry.artifactManifest.sha256.toLowerCase()) {
214
+ throw new OctomilError("MODEL_LOAD_FAILED", `Integrity check failed for ${entry.modelId}: expected ${entry.artifactManifest.sha256}, got ${hash}`);
215
+ }
216
+ }
217
+ // Cache the artifact
218
+ const cacheKey = entry.artifactManifest.downloadUrl;
219
+ await this.cache.put(cacheKey, data);
220
+ this.emit({
221
+ type: "download_complete",
222
+ modelId: entry.modelId,
223
+ sizeBytes: data.byteLength,
224
+ });
225
+ const shouldActivate = this.shouldActivate(entry.activationPolicy);
226
+ const meta = {
227
+ modelId: entry.modelId,
228
+ modelVersion: entry.desiredVersion,
229
+ bindingKey: entry.bindingKey,
230
+ useCase: entry.useCase,
231
+ deploymentId: entry.deploymentId,
232
+ deploymentKey: entry.deploymentKey,
233
+ modelName: entry.modelName,
234
+ modelRef: entry.modelRef,
235
+ artifactUrl: cacheKey,
236
+ sha256: entry.artifactManifest.sha256,
237
+ installedAt: new Date().toISOString(),
238
+ status: shouldActivate ? "active" : "staged",
239
+ sizeBytes: data.byteLength,
240
+ };
241
+ await this.meta.put(meta);
242
+ if (shouldActivate) {
243
+ this.emit({ type: "activate", modelId: entry.modelId, version: entry.desiredVersion });
244
+ }
245
+ return { downloaded: true, activated: shouldActivate };
246
+ }
247
+ shouldActivate(policy) {
248
+ switch (policy) {
249
+ case "immediate":
250
+ case undefined:
251
+ return true;
252
+ case "manual":
253
+ return false;
254
+ case "next_launch":
255
+ // In a browser context, "next launch" = next page load.
256
+ // Stage now; activation happens on next sync after page reload.
257
+ return false;
258
+ case "when_idle":
259
+ // Activate immediately in browser context (no inference engine lock).
260
+ return true;
261
+ default:
262
+ return true;
263
+ }
264
+ }
265
+ async downloadArtifact(url) {
266
+ let response;
267
+ try {
268
+ response = await fetch(url);
269
+ }
270
+ catch (err) {
271
+ throw new OctomilError("NETWORK_UNAVAILABLE", `Failed to download artifact from ${url}: ${String(err)}`, err);
272
+ }
273
+ if (!response.ok) {
274
+ throw new OctomilError("MODEL_LOAD_FAILED", `Artifact download failed: HTTP ${response.status}`);
275
+ }
276
+ return response.arrayBuffer();
277
+ }
278
+ async garbageCollect(desired, entries) {
279
+ const gcIds = new Set(desired.gcEligibleArtifactIds ?? []);
280
+ const desiredModelIds = new Set(entries.map((e) => e.modelId));
281
+ const allLocal = await this.meta.getAll();
282
+ for (const local of allLocal) {
283
+ const shouldGc = gcIds.has(local.modelId) || !desiredModelIds.has(local.modelId);
284
+ if (shouldGc) {
285
+ await this.cache.remove(local.artifactUrl);
286
+ await this.meta.remove(local.modelId);
287
+ }
288
+ }
289
+ }
290
+ async reportState() {
291
+ const allLocal = await this.meta.getAll();
292
+ const models = allLocal.map((m) => ({
293
+ modelId: m.modelId,
294
+ status: m.status,
295
+ version: m.modelVersion,
296
+ bindingKey: m.bindingKey,
297
+ useCase: m.useCase,
298
+ deploymentId: m.deploymentId,
299
+ deploymentKey: m.deploymentKey,
300
+ modelName: m.modelName,
301
+ modelRef: m.modelRef,
302
+ }));
303
+ try {
304
+ await this.control.reportObservedState(models);
305
+ }
306
+ catch {
307
+ // best-effort — don't fail the sync cycle for report failures
308
+ }
309
+ }
310
+ emit(event) {
311
+ this.onEvent?.(event);
312
+ }
313
+ }
314
+ //# sourceMappingURL=sync-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-manager.js","sourceRoot":"","sources":["../src/sync-manager.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,65 @@
1
1
  /**
2
- * @octomil/browser — Telemetry reporter
2
+ * @octomil/browser — Telemetry reporter (v2 OTLP envelope)
3
3
  *
4
4
  * Opt-in, batched, non-blocking telemetry. Events are queued in memory
5
5
  * and flushed periodically using `navigator.sendBeacon` (preferred) or
6
6
  * `fetch` with `keepalive: true`.
7
+ *
8
+ * V2 sends to `POST /v2/telemetry/events` with an OTLP-style resource
9
+ * envelope wrapping each batch.
7
10
  */
8
11
  import type { TelemetryEvent } from "./types.js";
12
+ /** OTLP-style resource descriptor included in every telemetry batch. */
13
+ export interface TelemetryResource {
14
+ sdk: string;
15
+ sdk_version: string;
16
+ device_id: string;
17
+ platform: string;
18
+ org_id: string;
19
+ }
20
+ /** @deprecated Use ExportLogsServiceRequest instead. */
21
+ export interface TelemetryEnvelope {
22
+ resource: TelemetryResource;
23
+ events: TelemetryEvent[];
24
+ }
25
+ export interface OtlpKeyValue {
26
+ key: string;
27
+ value: {
28
+ stringValue?: string;
29
+ intValue?: string;
30
+ doubleValue?: number;
31
+ boolValue?: boolean;
32
+ };
33
+ }
34
+ export interface OtlpResource {
35
+ attributes: OtlpKeyValue[];
36
+ }
37
+ export interface OtlpInstrumentationScope {
38
+ name: string;
39
+ version?: string;
40
+ }
41
+ export interface OtlpLogRecord {
42
+ timeUnixNano: string;
43
+ severityNumber?: number;
44
+ severityText?: string;
45
+ body?: {
46
+ stringValue: string;
47
+ };
48
+ attributes?: OtlpKeyValue[];
49
+ traceId?: string;
50
+ spanId?: string;
51
+ }
52
+ export interface OtlpScopeLogs {
53
+ scope: OtlpInstrumentationScope;
54
+ logRecords: OtlpLogRecord[];
55
+ }
56
+ export interface OtlpResourceLogs {
57
+ resource: OtlpResource;
58
+ scopeLogs: OtlpScopeLogs[];
59
+ }
60
+ export interface ExportLogsServiceRequest {
61
+ resourceLogs: OtlpResourceLogs[];
62
+ }
9
63
  export interface TelemetryReporterOptions {
10
64
  /** Endpoint to POST batched events to. */
11
65
  url?: string;
@@ -15,27 +69,68 @@ export interface TelemetryReporterOptions {
15
69
  maxBatchSize?: number;
16
70
  /** API key included in the `Authorization` header. */
17
71
  apiKey?: string;
72
+ /** Optional auth header provider for device-token-authenticated browser clients. */
73
+ authHeadersProvider?: () => Record<string, string> | null;
74
+ /** Organisation identifier included in the resource envelope. */
75
+ orgId?: string;
76
+ /** Stable device identifier included in the resource envelope. */
77
+ deviceId?: string;
78
+ /** SDK version string. Defaults to the package version. */
79
+ sdkVersion?: string;
18
80
  }
19
81
  export declare class TelemetryReporter {
20
82
  private readonly url;
21
83
  private readonly flushIntervalMs;
22
84
  private readonly maxBatchSize;
23
85
  private readonly apiKey;
86
+ private readonly authHeadersProvider;
87
+ private readonly resource;
24
88
  private queue;
25
89
  private timerId;
26
90
  private disposed;
27
91
  constructor(options?: TelemetryReporterOptions);
92
+ /**
93
+ * Merge additional fields into the telemetry resource.
94
+ * Typically called with DeviceContext.telemetryResource() after
95
+ * silent registration completes.
96
+ */
97
+ updateResource(fields: Record<string, string>): void;
28
98
  /** Enqueue a telemetry event. Non-blocking, never throws. */
29
99
  track(event: TelemetryEvent): void;
30
100
  /** Flush all queued events immediately. */
31
101
  flush(): Promise<void>;
102
+ batch(events: TelemetryEvent[]): Promise<void>;
32
103
  /** Stop the flush timer and send remaining events. */
33
- dispose(): void;
104
+ close(): void;
105
+ reportInferenceStarted(modelId: string, attrs?: Record<string, string | number | boolean>): void;
106
+ reportInferenceCompleted(modelId: string, durationMs: number, attrs?: Record<string, string | number | boolean>): void;
107
+ reportInferenceFailed(modelId: string, errorType: string, errorMessage: string): void;
108
+ reportInferenceChunk(modelId: string, attrs?: Record<string, string | number | boolean>): void;
109
+ /**
110
+ * Report that a single chunk was produced during streaming inference.
111
+ *
112
+ * Emits `inference.chunk_produced` with the model ID and chunk index.
113
+ */
114
+ reportChunkProduced(modelId: string, chunkIndex: number, attrs?: Record<string, string | number | boolean>): void;
115
+ reportTrainingStarted(modelId: string, version: string): void;
116
+ reportTrainingCompleted(modelId: string, version: string, durationMs: number): void;
117
+ reportTrainingFailed(modelId: string, version: string, errorType: string): void;
118
+ reportWeightUpload(modelId: string, roundId: string, sampleCount: number): void;
119
+ reportDeployStarted(modelId: string, version: string): void;
120
+ reportDeployCompleted(modelId: string, version: string, durationMs: number): void;
121
+ reportDeployRollback(modelId: string, fromVersion: string, toVersion: string, reason: string): void;
122
+ reportExperimentAssigned(modelId: string, experimentId: string, variant: string): void;
123
+ reportExperimentMetric(experimentId: string, metricName: string, metricValue: number): void;
124
+ private makeEvent;
34
125
  private startAutoFlush;
126
+ private buildEnvelope;
127
+ private resourceToOtlpAttributes;
128
+ private eventToLogRecord;
129
+ private toOtlpValue;
35
130
  private send;
36
- private sendBeacon;
131
+ private sendBeaconPayload;
37
132
  }
38
133
  export declare function initTelemetry(options?: TelemetryReporterOptions): TelemetryReporter;
39
134
  export declare function getTelemetry(): TelemetryReporter | null;
40
- export declare function disposeTelemetry(): void;
135
+ export declare function closeTelemetry(): void;
41
136
  //# sourceMappingURL=telemetry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAcjD,MAAM,WAAW,wBAAwB;IACvC,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAE5C,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,OAAO,CAA+C;IAC9D,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,GAAE,wBAA6B;IAclD,6DAA6D;IAC7D,KAAK,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IASlC,2CAA2C;IACrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B,sDAAsD;IACtD,OAAO,IAAI,IAAI;IAmBf,OAAO,CAAC,cAAc;YAOR,IAAI;IA0BlB,OAAO,CAAC,UAAU;CAcnB;AAQD,wBAAgB,aAAa,CAC3B,OAAO,GAAE,wBAA6B,GACrC,iBAAiB,CAMnB;AAED,wBAAgB,YAAY,IAAI,iBAAiB,GAAG,IAAI,CAEvD;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC"}
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAmBjD,wEAAwE;AACxE,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wDAAwD;AACxD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B;AAMD,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE;QACL,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,YAAY,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,wBAAwB,CAAC;IAChC,UAAU,EAAE,aAAa,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,gBAAgB,EAAE,CAAC;CAClC;AAMD,MAAM,WAAW,wBAAwB;IACvC,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oFAAoF;IACpF,mBAAmB,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC1D,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAEtB;IACd,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAE7C,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,OAAO,CAA+C;IAC9D,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,GAAE,wBAA6B;IAsBlD;;;;OAIG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAYpD,6DAA6D;IAC7D,KAAK,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IASlC,2CAA2C;IACrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtB,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpD,sDAAsD;IACtD,KAAK,IAAI,IAAI;IAuBb,sBAAsB,CACpB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAChD,IAAI;IASP,wBAAwB,CACtB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAChD,IAAI;IAUP,qBAAqB,CACnB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,IAAI;IAUP,oBAAoB,CAClB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAChD,IAAI;IASP;;;;OAIG;IACH,mBAAmB,CACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAChD,IAAI;IAcP,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAI7D,uBAAuB,CACrB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,IAAI;IAMP,oBAAoB,CAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,IAAI;IAMP,kBAAkB,CAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,IAAI;IAcP,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3D,qBAAqB,CACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,IAAI;IAMP,oBAAoB,CAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,IAAI;IAeP,wBAAwB,CACtB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,GACd,IAAI;IAUP,sBAAsB,CACpB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,IAAI;IAcP,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,wBAAwB;IAkBhC,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,WAAW;YASL,IAAI;IA8BlB,OAAO,CAAC,iBAAiB;CAc1B;AAiCD,wBAAgB,aAAa,CAC3B,OAAO,GAAE,wBAA6B,GACrC,iBAAiB,CAMnB;AAED,wBAAgB,YAAY,IAAI,iBAAiB,GAAG,IAAI,CAEvD;AAED,wBAAgB,cAAc,IAAI,IAAI,CAGrC"}