ugly-app 0.1.869 → 0.1.871

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 (1463) hide show
  1. package/README.md +105 -60
  2. package/dist/agent/client/runAgent.d.ts.map +1 -1
  3. package/dist/agent/client/runAgent.js +41 -12
  4. package/dist/agent/client/runAgent.js.map +1 -1
  5. package/dist/agent/client/useAgent.js +4 -1
  6. package/dist/agent/client/useAgent.js.map +1 -1
  7. package/dist/agent/server/UglyBotTextStream.d.ts.map +1 -1
  8. package/dist/agent/server/UglyBotTextStream.js +12 -5
  9. package/dist/agent/server/UglyBotTextStream.js.map +1 -1
  10. package/dist/agent/server/registerAgentHandler.d.ts.map +1 -1
  11. package/dist/agent/server/registerAgentHandler.js +1 -1
  12. package/dist/agent/server/registerAgentHandler.js.map +1 -1
  13. package/dist/agent/server/streamAgentTurn.d.ts.map +1 -1
  14. package/dist/agent/server/streamAgentTurn.js.map +1 -1
  15. package/dist/agent/shared/AgentStream.d.ts.map +1 -1
  16. package/dist/agent/shared/AgentStream.js.map +1 -1
  17. package/dist/agent/shared/SessionStore.d.ts.map +1 -1
  18. package/dist/agent/shared/SessionStore.js +7 -1
  19. package/dist/agent/shared/SessionStore.js.map +1 -1
  20. package/dist/cli/auth/browser.d.ts.map +1 -1
  21. package/dist/cli/auth/browser.js +3 -1
  22. package/dist/cli/auth/browser.js.map +1 -1
  23. package/dist/cli/auth/callbackServer.d.ts.map +1 -1
  24. package/dist/cli/auth/callbackServer.js +24 -8
  25. package/dist/cli/auth/callbackServer.js.map +1 -1
  26. package/dist/cli/auth/cloudflareOauth.d.ts.map +1 -1
  27. package/dist/cli/auth/cloudflareOauth.js +5 -3
  28. package/dist/cli/auth/cloudflareOauth.js.map +1 -1
  29. package/dist/cli/auth/credentials.d.ts.map +1 -1
  30. package/dist/cli/auth/credentials.js.map +1 -1
  31. package/dist/cli/auth/neonOauth.d.ts.map +1 -1
  32. package/dist/cli/auth/neonOauth.js +5 -3
  33. package/dist/cli/auth/neonOauth.js.map +1 -1
  34. package/dist/cli/authCommands.d.ts.map +1 -1
  35. package/dist/cli/authCommands.js +6 -2
  36. package/dist/cli/authCommands.js.map +1 -1
  37. package/dist/cli/authStore.d.ts.map +1 -1
  38. package/dist/cli/authStore.js +11 -9
  39. package/dist/cli/authStore.js.map +1 -1
  40. package/dist/cli/bootstrapMigration.d.ts.map +1 -1
  41. package/dist/cli/bootstrapMigration.js.map +1 -1
  42. package/dist/cli/buildTasks.d.ts.map +1 -1
  43. package/dist/cli/buildTasks.js.map +1 -1
  44. package/dist/cli/buildWorkers.d.ts.map +1 -1
  45. package/dist/cli/buildWorkers.js +11 -5
  46. package/dist/cli/buildWorkers.js.map +1 -1
  47. package/dist/cli/cloudCleanup.d.ts.map +1 -1
  48. package/dist/cli/cloudCleanup.js +4 -4
  49. package/dist/cli/cloudCleanup.js.map +1 -1
  50. package/dist/cli/configure.d.ts.map +1 -1
  51. package/dist/cli/configure.js +1 -1
  52. package/dist/cli/configure.js.map +1 -1
  53. package/dist/cli/debugStream.d.ts.map +1 -1
  54. package/dist/cli/debugStream.js +14 -4
  55. package/dist/cli/debugStream.js.map +1 -1
  56. package/dist/cli/debugStreamSocket.d.ts.map +1 -1
  57. package/dist/cli/debugStreamSocket.js +8 -2
  58. package/dist/cli/debugStreamSocket.js.map +1 -1
  59. package/dist/cli/deployClient.d.ts.map +1 -1
  60. package/dist/cli/deployClient.js +4 -2
  61. package/dist/cli/deployClient.js.map +1 -1
  62. package/dist/cli/dev.d.ts.map +1 -1
  63. package/dist/cli/dev.js.map +1 -1
  64. package/dist/cli/doctor.d.ts.map +1 -1
  65. package/dist/cli/doctor.js +7 -2
  66. package/dist/cli/doctor.js.map +1 -1
  67. package/dist/cli/exportCollections.d.ts.map +1 -1
  68. package/dist/cli/exportCollections.js.map +1 -1
  69. package/dist/cli/feedbackResolve.d.ts.map +1 -1
  70. package/dist/cli/feedbackResolve.js +1 -1
  71. package/dist/cli/feedbackResolve.js.map +1 -1
  72. package/dist/cli/feedbackSubmit.js +1 -1
  73. package/dist/cli/feedbackSubmit.js.map +1 -1
  74. package/dist/cli/imageGen.d.ts.map +1 -1
  75. package/dist/cli/imageGen.js.map +1 -1
  76. package/dist/cli/index.js +40 -15
  77. package/dist/cli/index.js.map +1 -1
  78. package/dist/cli/inspectUx.d.ts.map +1 -1
  79. package/dist/cli/inspectUx.js +1 -1
  80. package/dist/cli/inspectUx.js.map +1 -1
  81. package/dist/cli/lint.d.ts.map +1 -1
  82. package/dist/cli/lint.js.map +1 -1
  83. package/dist/cli/loginCommands.d.ts.map +1 -1
  84. package/dist/cli/loginCommands.js +6 -2
  85. package/dist/cli/loginCommands.js.map +1 -1
  86. package/dist/cli/meshGen.d.ts.map +1 -1
  87. package/dist/cli/meshGen.js +7 -2
  88. package/dist/cli/meshGen.js.map +1 -1
  89. package/dist/cli/migrate.d.ts.map +1 -1
  90. package/dist/cli/migrate.js +1 -1
  91. package/dist/cli/migrate.js.map +1 -1
  92. package/dist/cli/migrateBackend.d.ts.map +1 -1
  93. package/dist/cli/migrateBackend.js +3 -5
  94. package/dist/cli/migrateBackend.js.map +1 -1
  95. package/dist/cli/probeAuth.d.ts.map +1 -1
  96. package/dist/cli/probeAuth.js +6 -2
  97. package/dist/cli/probeAuth.js.map +1 -1
  98. package/dist/cli/prodDb.d.ts.map +1 -1
  99. package/dist/cli/prodDb.js +11 -3
  100. package/dist/cli/prodDb.js.map +1 -1
  101. package/dist/cli/publish/appStore.d.ts.map +1 -1
  102. package/dist/cli/publish/appStore.js +6 -3
  103. package/dist/cli/publish/appStore.js.map +1 -1
  104. package/dist/cli/publish/orchestrator.d.ts.map +1 -1
  105. package/dist/cli/publish/orchestrator.js +106 -34
  106. package/dist/cli/publish/orchestrator.js.map +1 -1
  107. package/dist/cli/publish/packageManager.d.ts.map +1 -1
  108. package/dist/cli/publish/packageManager.js.map +1 -1
  109. package/dist/cli/publish/providers/cloudflare.d.ts.map +1 -1
  110. package/dist/cli/publish/providers/cloudflare.js +109 -49
  111. package/dist/cli/publish/providers/cloudflare.js.map +1 -1
  112. package/dist/cli/publish/providers/neon.d.ts.map +1 -1
  113. package/dist/cli/publish/providers/neon.js +16 -7
  114. package/dist/cli/publish/providers/neon.js.map +1 -1
  115. package/dist/cli/publish/providers/ugly-proxy.js +3 -3
  116. package/dist/cli/publish/providers/ugly-proxy.js.map +1 -1
  117. package/dist/cli/publish/recipe-pack.d.ts.map +1 -1
  118. package/dist/cli/publish/recipe-pack.js.map +1 -1
  119. package/dist/cli/publish/secret-storage.js +14 -4
  120. package/dist/cli/publish/secret-storage.js.map +1 -1
  121. package/dist/cli/publish/selector-pack.d.ts.map +1 -1
  122. package/dist/cli/publish/selector-pack.js +3 -6
  123. package/dist/cli/publish/selector-pack.js.map +1 -1
  124. package/dist/cli/publish/vectorizeStep.d.ts.map +1 -1
  125. package/dist/cli/publish/vectorizeStep.js +5 -1
  126. package/dist/cli/publish/vectorizeStep.js.map +1 -1
  127. package/dist/cli/publishCommand.d.ts.map +1 -1
  128. package/dist/cli/publishCommand.js +31 -8
  129. package/dist/cli/publishCommand.js.map +1 -1
  130. package/dist/cli/reconcileDerived.d.ts.map +1 -1
  131. package/dist/cli/reconcileDerived.js.map +1 -1
  132. package/dist/cli/reindexDerived.d.ts.map +1 -1
  133. package/dist/cli/reindexDerived.js +3 -1
  134. package/dist/cli/reindexDerived.js.map +1 -1
  135. package/dist/cli/resolveBin.d.ts.map +1 -1
  136. package/dist/cli/resolveBin.js +1 -3
  137. package/dist/cli/resolveBin.js.map +1 -1
  138. package/dist/cli/scaffold.d.ts.map +1 -1
  139. package/dist/cli/scaffold.js +19 -6
  140. package/dist/cli/scaffold.js.map +1 -1
  141. package/dist/cli/scaffoldFeatures.d.ts.map +1 -1
  142. package/dist/cli/scaffoldFeatures.js +99 -23
  143. package/dist/cli/scaffoldFeatures.js.map +1 -1
  144. package/dist/cli/schemaGen.d.ts.map +1 -1
  145. package/dist/cli/schemaGen.js +9 -4
  146. package/dist/cli/schemaGen.js.map +1 -1
  147. package/dist/cli/schemaStatus.d.ts.map +1 -1
  148. package/dist/cli/schemaStatus.js +2 -2
  149. package/dist/cli/schemaStatus.js.map +1 -1
  150. package/dist/cli/searchParity.d.ts.map +1 -1
  151. package/dist/cli/searchParity.js +10 -4
  152. package/dist/cli/searchParity.js.map +1 -1
  153. package/dist/cli/serverLogQueryApi.d.ts.map +1 -1
  154. package/dist/cli/serverLogQueryApi.js +26 -6
  155. package/dist/cli/serverLogQueryApi.js.map +1 -1
  156. package/dist/cli/tailCommand.d.ts.map +1 -1
  157. package/dist/cli/tailCommand.js +4 -2
  158. package/dist/cli/tailCommand.js.map +1 -1
  159. package/dist/cli/telemetryAuth.d.ts.map +1 -1
  160. package/dist/cli/telemetryAuth.js +4 -1
  161. package/dist/cli/telemetryAuth.js.map +1 -1
  162. package/dist/cli/testUserCommands.d.ts.map +1 -1
  163. package/dist/cli/testUserCommands.js +7 -2
  164. package/dist/cli/testUserCommands.js.map +1 -1
  165. package/dist/cli/uglyBotAuth.d.ts.map +1 -1
  166. package/dist/cli/uglyBotAuth.js +7 -5
  167. package/dist/cli/uglyBotAuth.js.map +1 -1
  168. package/dist/cli/uglyBotConfigDir.d.ts +14 -0
  169. package/dist/cli/uglyBotConfigDir.d.ts.map +1 -0
  170. package/dist/cli/uglyBotConfigDir.js +21 -0
  171. package/dist/cli/uglyBotConfigDir.js.map +1 -0
  172. package/dist/cli/uglyBotLogin.d.ts.map +1 -1
  173. package/dist/cli/uglyBotLogin.js.map +1 -1
  174. package/dist/cli/uglyappConfig.d.ts.map +1 -1
  175. package/dist/cli/uglyappConfig.js +22 -9
  176. package/dist/cli/uglyappConfig.js.map +1 -1
  177. package/dist/cli/upgrade.d.ts.map +1 -1
  178. package/dist/cli/upgrade.js +13 -3
  179. package/dist/cli/upgrade.js.map +1 -1
  180. package/dist/cli/version.d.ts +1 -1
  181. package/dist/cli/version.js +1 -1
  182. package/dist/client/AppApi.d.ts.map +1 -1
  183. package/dist/client/AppApi.js +3 -1
  184. package/dist/client/AppApi.js.map +1 -1
  185. package/dist/client/FeedbackContext.d.ts.map +1 -1
  186. package/dist/client/FeedbackContext.js.map +1 -1
  187. package/dist/client/Logger.d.ts.map +1 -1
  188. package/dist/client/Logger.js +2 -5
  189. package/dist/client/Logger.js.map +1 -1
  190. package/dist/client/LoginPopup.d.ts.map +1 -1
  191. package/dist/client/LoginPopup.js +3 -1
  192. package/dist/client/LoginPopup.js.map +1 -1
  193. package/dist/client/Router.d.ts +8 -8
  194. package/dist/client/Router.d.ts.map +1 -1
  195. package/dist/client/Router.js +3 -1
  196. package/dist/client/Router.js.map +1 -1
  197. package/dist/client/Screenshot.d.ts.map +1 -1
  198. package/dist/client/Screenshot.js +2 -1
  199. package/dist/client/Screenshot.js.map +1 -1
  200. package/dist/client/StringsProvider.d.ts.map +1 -1
  201. package/dist/client/StringsProvider.js +5 -2
  202. package/dist/client/StringsProvider.js.map +1 -1
  203. package/dist/client/ViewFlipper.js.map +1 -1
  204. package/dist/client/animation/Animated.d.ts.map +1 -1
  205. package/dist/client/animation/Animated.js +1 -4
  206. package/dist/client/animation/Animated.js.map +1 -1
  207. package/dist/client/animation/animatedValue.d.ts.map +1 -1
  208. package/dist/client/animation/animatedValue.js +1 -1
  209. package/dist/client/animation/animatedValue.js.map +1 -1
  210. package/dist/client/animation/useAnimatedTransition.d.ts.map +1 -1
  211. package/dist/client/animation/useAnimatedTransition.js.map +1 -1
  212. package/dist/client/appTree.d.ts.map +1 -1
  213. package/dist/client/appTree.js +2 -2
  214. package/dist/client/appTree.js.map +1 -1
  215. package/dist/client/audio/AudioRecorder.d.ts.map +1 -1
  216. package/dist/client/audio/AudioRecorder.js.map +1 -1
  217. package/dist/client/audio/BlobTypes.d.ts.map +1 -1
  218. package/dist/client/audio/BlobTypes.js.map +1 -1
  219. package/dist/client/audio/BlobVisualizer.d.ts.map +1 -1
  220. package/dist/client/audio/BlobVisualizer.js.map +1 -1
  221. package/dist/client/audio/audioPlayer.worklet.js.map +1 -1
  222. package/dist/client/audio/audioRecorder.worklet.js +3 -1
  223. package/dist/client/audio/audioRecorder.worklet.js.map +1 -1
  224. package/dist/client/audio/useSTT.d.ts.map +1 -1
  225. package/dist/client/audio/useSTT.js.map +1 -1
  226. package/dist/client/audio/useTTS.d.ts.map +1 -1
  227. package/dist/client/audio/useTTS.js +24 -3
  228. package/dist/client/audio/useTTS.js.map +1 -1
  229. package/dist/client/auth/AuthRoot.d.ts.map +1 -1
  230. package/dist/client/auth/AuthRoot.js +8 -1
  231. package/dist/client/auth/AuthRoot.js.map +1 -1
  232. package/dist/client/auth/startLogin.d.ts.map +1 -1
  233. package/dist/client/auth/startLogin.js.map +1 -1
  234. package/dist/client/bootstrapApp.d.ts.map +1 -1
  235. package/dist/client/bootstrapApp.js +32 -16
  236. package/dist/client/bootstrapApp.js.map +1 -1
  237. package/dist/client/buildInfo.d.ts.map +1 -1
  238. package/dist/client/buildInfo.js +2 -1
  239. package/dist/client/buildInfo.js.map +1 -1
  240. package/dist/client/cachedDoc.d.ts.map +1 -1
  241. package/dist/client/cachedDoc.js.map +1 -1
  242. package/dist/client/callAI.d.ts.map +1 -1
  243. package/dist/client/callAI.js +2 -1
  244. package/dist/client/callAI.js.map +1 -1
  245. package/dist/client/components/AnimatedInput.d.ts.map +1 -1
  246. package/dist/client/components/AnimatedInput.js +3 -1
  247. package/dist/client/components/AnimatedInput.js.map +1 -1
  248. package/dist/client/components/AnimatedList.d.ts.map +1 -1
  249. package/dist/client/components/AnimatedList.js +6 -2
  250. package/dist/client/components/AnimatedList.js.map +1 -1
  251. package/dist/client/components/Button.d.ts +14 -14
  252. package/dist/client/components/Button.d.ts.map +1 -1
  253. package/dist/client/components/Button.js +29 -5
  254. package/dist/client/components/Button.js.map +1 -1
  255. package/dist/client/components/Card.d.ts.map +1 -1
  256. package/dist/client/components/Card.js.map +1 -1
  257. package/dist/client/components/CardStack.d.ts.map +1 -1
  258. package/dist/client/components/CardStack.js +28 -5
  259. package/dist/client/components/CardStack.js.map +1 -1
  260. package/dist/client/components/DatePicker.d.ts.map +1 -1
  261. package/dist/client/components/DatePicker.js +10 -1
  262. package/dist/client/components/DatePicker.js.map +1 -1
  263. package/dist/client/components/DateRangePicker.d.ts.map +1 -1
  264. package/dist/client/components/DateRangePicker.js +2 -2
  265. package/dist/client/components/DateRangePicker.js.map +1 -1
  266. package/dist/client/components/DateTimePicker.d.ts.map +1 -1
  267. package/dist/client/components/DateTimePicker.js +11 -1
  268. package/dist/client/components/DateTimePicker.js.map +1 -1
  269. package/dist/client/components/DrawingCanvas.d.ts.map +1 -1
  270. package/dist/client/components/DrawingCanvas.js.map +1 -1
  271. package/dist/client/components/FlatList.d.ts +13 -13
  272. package/dist/client/components/FlatList.d.ts.map +1 -1
  273. package/dist/client/components/FlatList.js +12 -5
  274. package/dist/client/components/FlatList.js.map +1 -1
  275. package/dist/client/components/Image.test.js.map +1 -1
  276. package/dist/client/components/Input.d.ts +9 -9
  277. package/dist/client/components/Input.d.ts.map +1 -1
  278. package/dist/client/components/KeyboardProvider.d.ts +1 -1
  279. package/dist/client/components/KeyboardProvider.d.ts.map +1 -1
  280. package/dist/client/components/KeyboardProvider.js +1 -1
  281. package/dist/client/components/KeyboardProvider.js.map +1 -1
  282. package/dist/client/components/Modal.d.ts +4 -4
  283. package/dist/client/components/Modal.d.ts.map +1 -1
  284. package/dist/client/components/PageLayout.d.ts.map +1 -1
  285. package/dist/client/components/PageLayout.js +6 -1
  286. package/dist/client/components/PageLayout.js.map +1 -1
  287. package/dist/client/components/Pager.d.ts.map +1 -1
  288. package/dist/client/components/Pager.js +1 -1
  289. package/dist/client/components/Pager.js.map +1 -1
  290. package/dist/client/components/Panel.d.ts +1 -1
  291. package/dist/client/components/Panel.d.ts.map +1 -1
  292. package/dist/client/components/Panel.js +1 -1
  293. package/dist/client/components/Panel.js.map +1 -1
  294. package/dist/client/components/Pressable.d.ts +8 -8
  295. package/dist/client/components/Pressable.d.ts.map +1 -1
  296. package/dist/client/components/ResponsiveGrid.d.ts.map +1 -1
  297. package/dist/client/components/ResponsiveGrid.js.map +1 -1
  298. package/dist/client/components/ScrollDownArrow.d.ts +1 -1
  299. package/dist/client/components/ScrollDownArrow.d.ts.map +1 -1
  300. package/dist/client/components/ScrollDownArrow.js +4 -2
  301. package/dist/client/components/ScrollDownArrow.js.map +1 -1
  302. package/dist/client/components/ScrollView.d.ts +9 -9
  303. package/dist/client/components/ScrollView.d.ts.map +1 -1
  304. package/dist/client/components/ScrollView.js +7 -1
  305. package/dist/client/components/ScrollView.js.map +1 -1
  306. package/dist/client/components/SelectView.d.ts.map +1 -1
  307. package/dist/client/components/SelectView.js +4 -2
  308. package/dist/client/components/SelectView.js.map +1 -1
  309. package/dist/client/components/SettingGroup.d.ts.map +1 -1
  310. package/dist/client/components/SettingGroup.js +12 -1
  311. package/dist/client/components/SettingGroup.js.map +1 -1
  312. package/dist/client/components/TabPicker.d.ts.map +1 -1
  313. package/dist/client/components/TabPicker.js.map +1 -1
  314. package/dist/client/components/Text.js.map +1 -1
  315. package/dist/client/components/UserImage.d.ts.map +1 -1
  316. package/dist/client/components/UserImage.js.map +1 -1
  317. package/dist/client/components/UserName.d.ts.map +1 -1
  318. package/dist/client/components/UserName.js.map +1 -1
  319. package/dist/client/components/ValidatedTextInput.d.ts.map +1 -1
  320. package/dist/client/components/ValidatedTextInput.js +7 -1
  321. package/dist/client/components/ValidatedTextInput.js.map +1 -1
  322. package/dist/client/components/View.d.ts +6 -6
  323. package/dist/client/components/View.d.ts.map +1 -1
  324. package/dist/client/components/View.js +1 -1
  325. package/dist/client/components/View.js.map +1 -1
  326. package/dist/client/components/WizardView.js.map +1 -1
  327. package/dist/client/components/index.d.ts +14 -14
  328. package/dist/client/components/index.d.ts.map +1 -1
  329. package/dist/client/components/index.js +8 -8
  330. package/dist/client/components/index.js.map +1 -1
  331. package/dist/client/createSocket.d.ts.map +1 -1
  332. package/dist/client/createSocket.js +96 -23
  333. package/dist/client/createSocket.js.map +1 -1
  334. package/dist/client/debugStreamClient.d.ts.map +1 -1
  335. package/dist/client/debugStreamClient.js +6 -1
  336. package/dist/client/debugStreamClient.js.map +1 -1
  337. package/dist/client/feedbackBridge.js +13 -3
  338. package/dist/client/feedbackBridge.js.map +1 -1
  339. package/dist/client/index.d.ts +9 -9
  340. package/dist/client/index.d.ts.map +1 -1
  341. package/dist/client/index.js +4 -4
  342. package/dist/client/index.js.map +1 -1
  343. package/dist/client/inspect/keyboard.js.map +1 -1
  344. package/dist/client/inspect/report.d.ts.map +1 -1
  345. package/dist/client/inspect/report.js.map +1 -1
  346. package/dist/client/inspect/safearea.d.ts.map +1 -1
  347. package/dist/client/inspect/safearea.js.map +1 -1
  348. package/dist/client/refreshWebPush.d.ts.map +1 -1
  349. package/dist/client/refreshWebPush.js.map +1 -1
  350. package/dist/client/shareLinkClient.d.ts.map +1 -1
  351. package/dist/client/shareLinkClient.js +2 -2
  352. package/dist/client/shareLinkClient.js.map +1 -1
  353. package/dist/client/ssr.d.ts.map +1 -1
  354. package/dist/client/ssr.js.map +1 -1
  355. package/dist/client/uglyBotSocket.d.ts.map +1 -1
  356. package/dist/client/uglyBotSocket.js +6 -4
  357. package/dist/client/uglyBotSocket.js.map +1 -1
  358. package/dist/client/uglyStudioPreviewBridge.d.ts.map +1 -1
  359. package/dist/client/uglyStudioPreviewBridge.js +3 -1
  360. package/dist/client/uglyStudioPreviewBridge.js.map +1 -1
  361. package/dist/client/uploadBlob.d.ts.map +1 -1
  362. package/dist/client/uploadBlob.js +2 -1
  363. package/dist/client/uploadBlob.js.map +1 -1
  364. package/dist/client/webPush.d.ts.map +1 -1
  365. package/dist/client/webPush.js +22 -6
  366. package/dist/client/webPush.js.map +1 -1
  367. package/dist/collab/client/CollabProvider.d.ts.map +1 -1
  368. package/dist/collab/client/CollabProvider.js +9 -3
  369. package/dist/collab/client/CollabProvider.js.map +1 -1
  370. package/dist/collab/client/index.d.ts +1 -1
  371. package/dist/collab/client/index.d.ts.map +1 -1
  372. package/dist/collab/client/index.js +1 -1
  373. package/dist/collab/client/index.js.map +1 -1
  374. package/dist/collab/server/CollabServer.d.ts.map +1 -1
  375. package/dist/collab/server/CollabServer.js +15 -5
  376. package/dist/collab/server/CollabServer.js.map +1 -1
  377. package/dist/conversation/client/ChatContext.d.ts.map +1 -1
  378. package/dist/conversation/client/ChatContext.js.map +1 -1
  379. package/dist/conversation/client/ChatMarkdownInput.d.ts.map +1 -1
  380. package/dist/conversation/client/ChatMarkdownInput.js.map +1 -1
  381. package/dist/conversation/client/ChatMessageBubble.d.ts +1 -1
  382. package/dist/conversation/client/ChatMessageBubble.d.ts.map +1 -1
  383. package/dist/conversation/client/ChatMessageBubble.js +14 -6
  384. package/dist/conversation/client/ChatMessageBubble.js.map +1 -1
  385. package/dist/conversation/client/ChatScrollButton.d.ts.map +1 -1
  386. package/dist/conversation/client/ChatScrollButton.js +3 -1
  387. package/dist/conversation/client/ChatScrollButton.js.map +1 -1
  388. package/dist/conversation/client/ChatView.d.ts.map +1 -1
  389. package/dist/conversation/client/ChatView.js +19 -8
  390. package/dist/conversation/client/ChatView.js.map +1 -1
  391. package/dist/conversation/client/conversationStreamReducer.d.ts.map +1 -1
  392. package/dist/conversation/client/conversationStreamReducer.js +4 -1
  393. package/dist/conversation/client/conversationStreamReducer.js.map +1 -1
  394. package/dist/conversation/client/index.d.ts +1 -1
  395. package/dist/conversation/client/index.d.ts.map +1 -1
  396. package/dist/conversation/client/index.js +1 -1
  397. package/dist/conversation/client/index.js.map +1 -1
  398. package/dist/conversation/server/Conversation.d.ts.map +1 -1
  399. package/dist/conversation/server/Conversation.js +160 -55
  400. package/dist/conversation/server/Conversation.js.map +1 -1
  401. package/dist/conversation/server/ConversationDeps.d.ts.map +1 -1
  402. package/dist/conversation/server/ConversationServer.d.ts.map +1 -1
  403. package/dist/conversation/server/ConversationServer.js +39 -10
  404. package/dist/conversation/server/ConversationServer.js.map +1 -1
  405. package/dist/conversation/server/ConversationUser.d.ts.map +1 -1
  406. package/dist/conversation/server/ConversationUser.js +19 -7
  407. package/dist/conversation/server/ConversationUser.js.map +1 -1
  408. package/dist/conversation/server/SubscriptionRegistry.d.ts.map +1 -1
  409. package/dist/conversation/server/SubscriptionRegistry.js.map +1 -1
  410. package/dist/conversation/server/TokenCoalescer.d.ts.map +1 -1
  411. package/dist/conversation/server/TokenCoalescer.js.map +1 -1
  412. package/dist/conversation/server/conversationTtl.d.ts.map +1 -1
  413. package/dist/conversation/server/conversationTtl.js +3 -1
  414. package/dist/conversation/server/conversationTtl.js.map +1 -1
  415. package/dist/conversation/server/hubSink.d.ts.map +1 -1
  416. package/dist/conversation/server/hubSink.js.map +1 -1
  417. package/dist/conversation/server/index.d.ts +2 -2
  418. package/dist/conversation/server/index.d.ts.map +1 -1
  419. package/dist/conversation/server/index.js +2 -2
  420. package/dist/conversation/server/index.js.map +1 -1
  421. package/dist/conversation/server/runStreamedMessage.d.ts.map +1 -1
  422. package/dist/conversation/server/runStreamedMessage.js +3 -1
  423. package/dist/conversation/server/runStreamedMessage.js.map +1 -1
  424. package/dist/conversation/server/types.d.ts.map +1 -1
  425. package/dist/conversation/shared/types.d.ts.map +1 -1
  426. package/dist/conversation/shared/types.js.map +1 -1
  427. package/dist/devProxy/neonLocalProxy.d.ts.map +1 -1
  428. package/dist/devProxy/neonLocalProxy.js +1 -1
  429. package/dist/devProxy/neonLocalProxy.js.map +1 -1
  430. package/dist/inspect/agent/console.d.ts.map +1 -1
  431. package/dist/inspect/agent/console.js +23 -5
  432. package/dist/inspect/agent/console.js.map +1 -1
  433. package/dist/inspect/agent/dom.d.ts.map +1 -1
  434. package/dist/inspect/agent/dom.js +11 -3
  435. package/dist/inspect/agent/dom.js.map +1 -1
  436. package/dist/inspect/agent/element.d.ts.map +1 -1
  437. package/dist/inspect/agent/element.js.map +1 -1
  438. package/dist/inspect/agent/eval.d.ts.map +1 -1
  439. package/dist/inspect/agent/eval.js +8 -2
  440. package/dist/inspect/agent/eval.js.map +1 -1
  441. package/dist/inspect/agent/install.d.ts.map +1 -1
  442. package/dist/inspect/agent/install.js +18 -4
  443. package/dist/inspect/agent/install.js.map +1 -1
  444. package/dist/inspect/agent/network.d.ts.map +1 -1
  445. package/dist/inspect/agent/network.js +19 -5
  446. package/dist/inspect/agent/network.js.map +1 -1
  447. package/dist/inspect/agent/perfAgent.d.ts.map +1 -1
  448. package/dist/inspect/agent/perfAgent.js +38 -19
  449. package/dist/inspect/agent/perfAgent.js.map +1 -1
  450. package/dist/inspect/agent/picker.d.ts.map +1 -1
  451. package/dist/inspect/agent/picker.js +5 -1
  452. package/dist/inspect/agent/picker.js.map +1 -1
  453. package/dist/inspect/agent/profile.d.ts.map +1 -1
  454. package/dist/inspect/agent/profile.js +21 -3
  455. package/dist/inspect/agent/profile.js.map +1 -1
  456. package/dist/inspect/agent/serialize.d.ts.map +1 -1
  457. package/dist/inspect/agent/serialize.js +14 -3
  458. package/dist/inspect/agent/serialize.js.map +1 -1
  459. package/dist/inspect/agent/storage.d.ts.map +1 -1
  460. package/dist/inspect/agent/storage.js +8 -4
  461. package/dist/inspect/agent/storage.js.map +1 -1
  462. package/dist/inspect/agent/types.d.ts.map +1 -1
  463. package/dist/inspect/agent/vitals.d.ts.map +1 -1
  464. package/dist/inspect/agent/vitals.js +22 -6
  465. package/dist/inspect/agent/vitals.js.map +1 -1
  466. package/dist/inspect/client.d.ts.map +1 -1
  467. package/dist/inspect/client.js +35 -8
  468. package/dist/inspect/client.js.map +1 -1
  469. package/dist/inspect/dispatch.d.ts.map +1 -1
  470. package/dist/inspect/dispatch.js +14 -4
  471. package/dist/inspect/dispatch.js.map +1 -1
  472. package/dist/inspect/host-bundle-entry.js.map +1 -1
  473. package/dist/inspect/index.d.ts +1 -1
  474. package/dist/inspect/index.d.ts.map +1 -1
  475. package/dist/inspect/index.js +1 -1
  476. package/dist/inspect/index.js.map +1 -1
  477. package/dist/inspect/protocol.d.ts.map +1 -1
  478. package/dist/inspect/protocol.js +20 -5
  479. package/dist/inspect/protocol.js.map +1 -1
  480. package/dist/inspect/proxyHostBootstrap.d.ts.map +1 -1
  481. package/dist/inspect/proxyHostBootstrap.js +2 -1
  482. package/dist/inspect/proxyHostBootstrap.js.map +1 -1
  483. package/dist/inspect/selfHost.d.ts.map +1 -1
  484. package/dist/inspect/selfHost.js +7 -2
  485. package/dist/inspect/selfHost.js.map +1 -1
  486. package/dist/inspect/ui/InspectPanel.d.ts +1 -1
  487. package/dist/inspect/ui/InspectPanel.d.ts.map +1 -1
  488. package/dist/inspect/ui/InspectPanel.js +12 -8
  489. package/dist/inspect/ui/InspectPanel.js.map +1 -1
  490. package/dist/inspect/ui/InspectPanel.test.js +13 -3
  491. package/dist/inspect/ui/InspectPanel.test.js.map +1 -1
  492. package/dist/inspect/ui/RemoteValueView.d.ts +1 -1
  493. package/dist/inspect/ui/RemoteValueView.d.ts.map +1 -1
  494. package/dist/inspect/ui/RemoteValueView.js +11 -7
  495. package/dist/inspect/ui/RemoteValueView.js.map +1 -1
  496. package/dist/inspect/ui/index.d.ts +1 -1
  497. package/dist/inspect/ui/index.d.ts.map +1 -1
  498. package/dist/inspect/ui/index.js +1 -1
  499. package/dist/inspect/ui/index.js.map +1 -1
  500. package/dist/inspect/ui/panels/ConsolePanel.d.ts +1 -1
  501. package/dist/inspect/ui/panels/ConsolePanel.d.ts.map +1 -1
  502. package/dist/inspect/ui/panels/ConsolePanel.js +15 -4
  503. package/dist/inspect/ui/panels/ConsolePanel.js.map +1 -1
  504. package/dist/inspect/ui/panels/ElementsPanel.d.ts +1 -1
  505. package/dist/inspect/ui/panels/ElementsPanel.d.ts.map +1 -1
  506. package/dist/inspect/ui/panels/ElementsPanel.js +4 -3
  507. package/dist/inspect/ui/panels/ElementsPanel.js.map +1 -1
  508. package/dist/inspect/ui/panels/NetworkPanel.d.ts.map +1 -1
  509. package/dist/inspect/ui/panels/NetworkPanel.js +13 -6
  510. package/dist/inspect/ui/panels/NetworkPanel.js.map +1 -1
  511. package/dist/inspect/ui/panels/PerformancePanel.d.ts.map +1 -1
  512. package/dist/inspect/ui/panels/PerformancePanel.js +14 -4
  513. package/dist/inspect/ui/panels/PerformancePanel.js.map +1 -1
  514. package/dist/inspect/ui/panels/StoragePanel.d.ts +1 -1
  515. package/dist/inspect/ui/panels/StoragePanel.d.ts.map +1 -1
  516. package/dist/inspect/ui/panels/StoragePanel.js +6 -2
  517. package/dist/inspect/ui/panels/StoragePanel.js.map +1 -1
  518. package/dist/markdown/client/MarkdownEditor.d.ts.map +1 -1
  519. package/dist/markdown/client/MarkdownEditor.js.map +1 -1
  520. package/dist/markdown/client/MarkdownEditorInternal.d.ts.map +1 -1
  521. package/dist/markdown/client/MarkdownEditorInternal.js +39 -8
  522. package/dist/markdown/client/MarkdownEditorInternal.js.map +1 -1
  523. package/dist/markdown/client/MarkdownTheme.css +3 -2
  524. package/dist/markdown/client/MdastViewer.d.ts.map +1 -1
  525. package/dist/markdown/client/MdastViewer.js +10 -4
  526. package/dist/markdown/client/MdastViewer.js.map +1 -1
  527. package/dist/markdown/client/ProseMirrorEditor/EditorContextMenu.d.ts.map +1 -1
  528. package/dist/markdown/client/ProseMirrorEditor/EditorContextMenu.js +1 -1
  529. package/dist/markdown/client/ProseMirrorEditor/EditorContextMenu.js.map +1 -1
  530. package/dist/markdown/client/ProseMirrorEditor/FloatingToolbar.d.ts.map +1 -1
  531. package/dist/markdown/client/ProseMirrorEditor/FloatingToolbar.js +11 -1
  532. package/dist/markdown/client/ProseMirrorEditor/FloatingToolbar.js.map +1 -1
  533. package/dist/markdown/client/ProseMirrorEditor/SlashCommandMenu.d.ts.map +1 -1
  534. package/dist/markdown/client/ProseMirrorEditor/SlashCommandMenu.js.map +1 -1
  535. package/dist/markdown/client/ProseMirrorEditor/menuItems.d.ts.map +1 -1
  536. package/dist/markdown/client/ProseMirrorEditor/menuItems.js.map +1 -1
  537. package/dist/markdown/client/ProseMirrorEditor/nodeViews/VegaLiteNodeView.d.ts.map +1 -1
  538. package/dist/markdown/client/ProseMirrorEditor/nodeViews/VegaLiteNodeView.js +1 -3
  539. package/dist/markdown/client/ProseMirrorEditor/nodeViews/VegaLiteNodeView.js.map +1 -1
  540. package/dist/markdown/client/ProseMirrorEditor/plugins/collabCursor.d.ts.map +1 -1
  541. package/dist/markdown/client/ProseMirrorEditor/plugins/collabCursor.js.map +1 -1
  542. package/dist/markdown/client/ProseMirrorEditor/plugins/followPlugin.d.ts.map +1 -1
  543. package/dist/markdown/client/ProseMirrorEditor/plugins/followPlugin.js.map +1 -1
  544. package/dist/markdown/client/ProseMirrorEditor/plugins/mentionPlugin.d.ts.map +1 -1
  545. package/dist/markdown/client/ProseMirrorEditor/plugins/mentionPlugin.js.map +1 -1
  546. package/dist/markdown/client/ProseMirrorEditor/plugins/slashCommandPlugin.d.ts.map +1 -1
  547. package/dist/markdown/client/ProseMirrorEditor/plugins/slashCommandPlugin.js.map +1 -1
  548. package/dist/markdown/client/ProseMirrorEditor/plugins/ttsHighlightPlugin.d.ts.map +1 -1
  549. package/dist/markdown/client/ProseMirrorEditor/plugins/ttsHighlightPlugin.js.map +1 -1
  550. package/dist/markdown/client/ProseMirrorEditor/schema.js +2 -2
  551. package/dist/markdown/client/ProseMirrorEditor/schema.js.map +1 -1
  552. package/dist/markdown/client/markdownComponents.d.ts.map +1 -1
  553. package/dist/markdown/client/markdownComponents.js.map +1 -1
  554. package/dist/markdown/client/ui.module.css +6 -4
  555. package/dist/markdown/shared/MdastParser.d.ts.map +1 -1
  556. package/dist/markdown/shared/MdastParser.js +3 -9
  557. package/dist/markdown/shared/MdastParser.js.map +1 -1
  558. package/dist/markdown/shared/StreamingMarkdown.js.map +1 -1
  559. package/dist/native/bundledTools.d.ts.map +1 -1
  560. package/dist/native/bundledTools.js +119 -22
  561. package/dist/native/bundledTools.js.map +1 -1
  562. package/dist/native/conformance/harness.d.ts.map +1 -1
  563. package/dist/native/conformance/harness.js +106 -21
  564. package/dist/native/conformance/harness.js.map +1 -1
  565. package/dist/native/contract-meta.d.ts.map +1 -1
  566. package/dist/native/contract-meta.js +12 -2
  567. package/dist/native/contract-meta.js.map +1 -1
  568. package/dist/native/contract.d.ts.map +1 -1
  569. package/dist/native/contract.js.map +1 -1
  570. package/dist/native/contractSchemas.d.ts.map +1 -1
  571. package/dist/native/contractSchemas.js +3 -1
  572. package/dist/native/contractSchemas.js.map +1 -1
  573. package/dist/native/facades/browse.d.ts.map +1 -1
  574. package/dist/native/facades/browse.js.map +1 -1
  575. package/dist/native/facades/browser.d.ts.map +1 -1
  576. package/dist/native/facades/browser.js +8 -1
  577. package/dist/native/facades/browser.js.map +1 -1
  578. package/dist/native/facades/mcp.d.ts.map +1 -1
  579. package/dist/native/facades/mcp.js +4 -1
  580. package/dist/native/facades/mcp.js.map +1 -1
  581. package/dist/native/facades/net.d.ts.map +1 -1
  582. package/dist/native/facades/net.js.map +1 -1
  583. package/dist/native/facades/process.d.ts.map +1 -1
  584. package/dist/native/facades/process.js.map +1 -1
  585. package/dist/native/facades/sandbox.d.ts.map +1 -1
  586. package/dist/native/facades/sandbox.js +8 -2
  587. package/dist/native/facades/sandbox.js.map +1 -1
  588. package/dist/native/facades/task.d.ts.map +1 -1
  589. package/dist/native/facades/task.js +6 -2
  590. package/dist/native/facades/task.js.map +1 -1
  591. package/dist/native/facades/terminal.d.ts.map +1 -1
  592. package/dist/native/facades/terminal.js +5 -1
  593. package/dist/native/facades/terminal.js.map +1 -1
  594. package/dist/native/facades/uglybot.d.ts.map +1 -1
  595. package/dist/native/facades/uglybot.js.map +1 -1
  596. package/dist/native/index.d.ts +4 -4
  597. package/dist/native/index.d.ts.map +1 -1
  598. package/dist/native/index.js +4 -4
  599. package/dist/native/index.js.map +1 -1
  600. package/dist/native/install.d.ts.map +1 -1
  601. package/dist/native/install.js +3 -2
  602. package/dist/native/install.js.map +1 -1
  603. package/dist/native/mcp-catalog.d.ts.map +1 -1
  604. package/dist/native/mcp-catalog.js.map +1 -1
  605. package/dist/native/node.d.ts.map +1 -1
  606. package/dist/native/node.js +59 -17
  607. package/dist/native/node.js.map +1 -1
  608. package/dist/native/permissions.d.ts.map +1 -1
  609. package/dist/native/permissions.js +1 -1
  610. package/dist/native/permissions.js.map +1 -1
  611. package/dist/native/protocol.d.ts.map +1 -1
  612. package/dist/native/protocol.js.map +1 -1
  613. package/dist/native/proxy.d.ts.map +1 -1
  614. package/dist/native/proxy.js +49 -23
  615. package/dist/native/proxy.js.map +1 -1
  616. package/dist/native/proxyClient.d.ts.map +1 -1
  617. package/dist/native/proxyClient.js +76 -23
  618. package/dist/native/proxyClient.js.map +1 -1
  619. package/dist/native/proxyCrypto.d.ts.map +1 -1
  620. package/dist/native/proxyCrypto.js +6 -1
  621. package/dist/native/proxyCrypto.js.map +1 -1
  622. package/dist/native/proxyHost.d.ts.map +1 -1
  623. package/dist/native/proxyHost.js +20 -5
  624. package/dist/native/proxyHost.js.map +1 -1
  625. package/dist/native/server/binaries/catalog.d.ts.map +1 -1
  626. package/dist/native/server/binaries/catalog.js +5 -2
  627. package/dist/native/server/binaries/catalog.js.map +1 -1
  628. package/dist/native/server/binaries/ensure.js +3 -1
  629. package/dist/native/server/binaries/ensure.js.map +1 -1
  630. package/dist/native/server/binaries/index.d.ts +1 -1
  631. package/dist/native/server/binaries/index.d.ts.map +1 -1
  632. package/dist/native/server/binaries/index.js +1 -1
  633. package/dist/native/server/binaries/index.js.map +1 -1
  634. package/dist/native/server/binaries/installer.d.ts.map +1 -1
  635. package/dist/native/server/binaries/installer.js +4 -2
  636. package/dist/native/server/binaries/installer.js.map +1 -1
  637. package/dist/native/server/binaries/localInfra.d.ts.map +1 -1
  638. package/dist/native/server/binaries/localInfra.js.map +1 -1
  639. package/dist/native/server/binaries/netutil.d.ts.map +1 -1
  640. package/dist/native/server/binaries/netutil.js.map +1 -1
  641. package/dist/native/server/binaries/path.d.ts.map +1 -1
  642. package/dist/native/server/binaries/path.js.map +1 -1
  643. package/dist/native/server/binaries/postgres.d.ts.map +1 -1
  644. package/dist/native/server/binaries/postgres.js +50 -6
  645. package/dist/native/server/binaries/postgres.js.map +1 -1
  646. package/dist/native/server/binaries/resolver.d.ts.map +1 -1
  647. package/dist/native/server/binaries/resolver.js +5 -2
  648. package/dist/native/server/binaries/resolver.js.map +1 -1
  649. package/dist/native/server/binaries/storage.d.ts.map +1 -1
  650. package/dist/native/server/binaries/storage.js +17 -3
  651. package/dist/native/server/binaries/storage.js.map +1 -1
  652. package/dist/native/server/index.d.ts +2 -2
  653. package/dist/native/server/index.d.ts.map +1 -1
  654. package/dist/native/server/index.js +2 -2
  655. package/dist/native/server/index.js.map +1 -1
  656. package/dist/native/server/permissions/audit.d.ts.map +1 -1
  657. package/dist/native/server/permissions/audit.js +3 -1
  658. package/dist/native/server/permissions/audit.js.map +1 -1
  659. package/dist/native/server/permissions/gate.d.ts.map +1 -1
  660. package/dist/native/server/permissions/gate.js +3 -1
  661. package/dist/native/server/permissions/gate.js.map +1 -1
  662. package/dist/native/server/permissions/grants.d.ts.map +1 -1
  663. package/dist/native/server/permissions/grants.js +5 -1
  664. package/dist/native/server/permissions/grants.js.map +1 -1
  665. package/dist/native/server/permissions/scope.d.ts.map +1 -1
  666. package/dist/native/server/permissions/scope.js.map +1 -1
  667. package/dist/native/web-adapter.d.ts.map +1 -1
  668. package/dist/native/web-adapter.js +2 -1
  669. package/dist/native/web-adapter.js.map +1 -1
  670. package/dist/native/wrapper.d.ts.map +1 -1
  671. package/dist/native/wrapper.js +5 -1
  672. package/dist/native/wrapper.js.map +1 -1
  673. package/dist/playwright/dev-auth.d.ts.map +1 -1
  674. package/dist/playwright/dev-auth.js +16 -3
  675. package/dist/playwright/dev-auth.js.map +1 -1
  676. package/dist/playwright/native-mock.d.ts.map +1 -1
  677. package/dist/playwright/native-mock.js +5 -5
  678. package/dist/playwright/native-mock.js.map +1 -1
  679. package/dist/playwright/real-native.d.ts.map +1 -1
  680. package/dist/playwright/real-native.js +36 -9
  681. package/dist/playwright/real-native.js.map +1 -1
  682. package/dist/search/server/AnswerEngine.d.ts.map +1 -1
  683. package/dist/search/server/AnswerEngine.js +21 -10
  684. package/dist/search/server/AnswerEngine.js.map +1 -1
  685. package/dist/search/server/WebRetriever.d.ts.map +1 -1
  686. package/dist/search/server/WebRetriever.js.map +1 -1
  687. package/dist/search/server/index.d.ts +1 -1
  688. package/dist/search/server/index.d.ts.map +1 -1
  689. package/dist/search/server/index.js +1 -1
  690. package/dist/search/server/index.js.map +1 -1
  691. package/dist/server/AiImage.d.ts.map +1 -1
  692. package/dist/server/AiImage.js +10 -2
  693. package/dist/server/AiImage.js.map +1 -1
  694. package/dist/server/AiText.d.ts.map +1 -1
  695. package/dist/server/AiText.js +10 -2
  696. package/dist/server/AiText.js.map +1 -1
  697. package/dist/server/App.d.ts +18 -18
  698. package/dist/server/App.d.ts.map +1 -1
  699. package/dist/server/App.js +300 -300
  700. package/dist/server/App.js.map +1 -1
  701. package/dist/server/Auth.d.ts.map +1 -1
  702. package/dist/server/Auth.js +1 -1
  703. package/dist/server/Auth.js.map +1 -1
  704. package/dist/server/BuildInfo.d.ts.map +1 -1
  705. package/dist/server/BuildInfo.js.map +1 -1
  706. package/dist/server/DB.d.ts.map +1 -1
  707. package/dist/server/DB.js +32 -14
  708. package/dist/server/DB.js.map +1 -1
  709. package/dist/server/DocStore.d.ts.map +1 -1
  710. package/dist/server/DocStore.js +5 -1
  711. package/dist/server/DocStore.js.map +1 -1
  712. package/dist/server/Email.d.ts.map +1 -1
  713. package/dist/server/Email.js +3 -1
  714. package/dist/server/Email.js.map +1 -1
  715. package/dist/server/EventCounter.d.ts.map +1 -1
  716. package/dist/server/EventCounter.js.map +1 -1
  717. package/dist/server/EventLogAdmin.d.ts.map +1 -1
  718. package/dist/server/EventLogAdmin.js +97 -23
  719. package/dist/server/EventLogAdmin.js.map +1 -1
  720. package/dist/server/ExperimentAdmin.d.ts.map +1 -1
  721. package/dist/server/ExperimentAdmin.js +9 -2
  722. package/dist/server/ExperimentAdmin.js.map +1 -1
  723. package/dist/server/Logging.d.ts +9 -9
  724. package/dist/server/Logging.d.ts.map +1 -1
  725. package/dist/server/Logging.js +93 -93
  726. package/dist/server/Logging.js.map +1 -1
  727. package/dist/server/Nats.d.ts.map +1 -1
  728. package/dist/server/Nats.js.map +1 -1
  729. package/dist/server/NodePool.d.ts.map +1 -1
  730. package/dist/server/NodePool.js.map +1 -1
  731. package/dist/server/Pg.d.ts.map +1 -1
  732. package/dist/server/Pg.js +1 -1
  733. package/dist/server/Pg.js.map +1 -1
  734. package/dist/server/PostgresDoc.d.ts.map +1 -1
  735. package/dist/server/PostgresDoc.js +10 -7
  736. package/dist/server/PostgresDoc.js.map +1 -1
  737. package/dist/server/PostgresDocInternal.d.ts.map +1 -1
  738. package/dist/server/PostgresDocInternal.js +9 -3
  739. package/dist/server/PostgresDocInternal.js.map +1 -1
  740. package/dist/server/PostgresFilter.d.ts.map +1 -1
  741. package/dist/server/PostgresFilter.js.map +1 -1
  742. package/dist/server/PostgresIndexes.d.ts.map +1 -1
  743. package/dist/server/PostgresIndexes.js.map +1 -1
  744. package/dist/server/PostgresPipeline.d.ts.map +1 -1
  745. package/dist/server/PostgresPipeline.js.map +1 -1
  746. package/dist/server/PostgresSchema.d.ts.map +1 -1
  747. package/dist/server/PostgresSchema.js +14 -2
  748. package/dist/server/PostgresSchema.js.map +1 -1
  749. package/dist/server/Push.d.ts.map +1 -1
  750. package/dist/server/Push.js.map +1 -1
  751. package/dist/server/PushNotification.d.ts.map +1 -1
  752. package/dist/server/PushNotification.js.map +1 -1
  753. package/dist/server/PushSend.d.ts.map +1 -1
  754. package/dist/server/PushSend.js +1 -1
  755. package/dist/server/PushSend.js.map +1 -1
  756. package/dist/server/RateLimit.d.ts.map +1 -1
  757. package/dist/server/RateLimit.js +4 -1
  758. package/dist/server/RateLimit.js.map +1 -1
  759. package/dist/server/Router.d.ts.map +1 -1
  760. package/dist/server/Router.js.map +1 -1
  761. package/dist/server/SchemaCheck.d.ts.map +1 -1
  762. package/dist/server/SchemaCheck.js +17 -5
  763. package/dist/server/SchemaCheck.js.map +1 -1
  764. package/dist/server/ShareLink.d.ts.map +1 -1
  765. package/dist/server/ShareLink.js.map +1 -1
  766. package/dist/server/Socket.d.ts.map +1 -1
  767. package/dist/server/Socket.js +36 -7
  768. package/dist/server/Socket.js.map +1 -1
  769. package/dist/server/Storage.d.ts.map +1 -1
  770. package/dist/server/Storage.js.map +1 -1
  771. package/dist/server/StoreHandlers.d.ts.map +1 -1
  772. package/dist/server/StoreHandlers.js +52 -11
  773. package/dist/server/StoreHandlers.js.map +1 -1
  774. package/dist/server/TelemetryStore.d.ts +4 -4
  775. package/dist/server/TelemetryStore.js +29 -31
  776. package/dist/server/TelemetryStore.js.map +1 -1
  777. package/dist/server/adapter/index.d.ts.map +1 -1
  778. package/dist/server/adapter/index.js +1 -2
  779. package/dist/server/adapter/index.js.map +1 -1
  780. package/dist/server/adapter/node/index.d.ts.map +1 -1
  781. package/dist/server/adapter/node/index.js +1 -1
  782. package/dist/server/adapter/node/index.js.map +1 -1
  783. package/dist/server/adapter/prodBackend.d.ts.map +1 -1
  784. package/dist/server/adapter/prodBackend.js +1 -1
  785. package/dist/server/adapter/prodBackend.js.map +1 -1
  786. package/dist/server/adapter/publishFrame.d.ts.map +1 -1
  787. package/dist/server/adapter/publishFrame.js +5 -1
  788. package/dist/server/adapter/publishFrame.js.map +1 -1
  789. package/dist/server/adapter/types.d.ts.map +1 -1
  790. package/dist/server/adapter/workers/createSsrRender.d.ts.map +1 -1
  791. package/dist/server/adapter/workers/createSsrRender.js +6 -1
  792. package/dist/server/adapter/workers/createSsrRender.js.map +1 -1
  793. package/dist/server/adapter/workers/createWorkersApp.d.ts.map +1 -1
  794. package/dist/server/adapter/workers/createWorkersApp.js +129 -42
  795. package/dist/server/adapter/workers/createWorkersApp.js.map +1 -1
  796. package/dist/server/adapter/workers/do-collab.d.ts.map +1 -1
  797. package/dist/server/adapter/workers/do-collab.js +13 -3
  798. package/dist/server/adapter/workers/do-collab.js.map +1 -1
  799. package/dist/server/adapter/workers/do-collection.d.ts.map +1 -1
  800. package/dist/server/adapter/workers/do-collection.js +3 -7
  801. package/dist/server/adapter/workers/do-collection.js.map +1 -1
  802. package/dist/server/adapter/workers/edgeCache.d.ts.map +1 -1
  803. package/dist/server/adapter/workers/edgeCache.js +1 -1
  804. package/dist/server/adapter/workers/edgeCache.js.map +1 -1
  805. package/dist/server/adapter/workers/index.d.ts +2 -2
  806. package/dist/server/adapter/workers/index.d.ts.map +1 -1
  807. package/dist/server/adapter/workers/index.js +10 -5
  808. package/dist/server/adapter/workers/index.js.map +1 -1
  809. package/dist/server/adapter/workers/storage.d.ts.map +1 -1
  810. package/dist/server/adapter/workers/storage.js.map +1 -1
  811. package/dist/server/adapter/workers/wrapWithAssets.d.ts.map +1 -1
  812. package/dist/server/adapter/workers/wrapWithAssets.js +20 -8
  813. package/dist/server/adapter/workers/wrapWithAssets.js.map +1 -1
  814. package/dist/server/adminAllowlist.d.ts.map +1 -1
  815. package/dist/server/adminAllowlist.js.map +1 -1
  816. package/dist/server/ai/TextGenBase.d.ts.map +1 -1
  817. package/dist/server/ai/TextGenBase.js.map +1 -1
  818. package/dist/server/ai/TextGenClient.d.ts.map +1 -1
  819. package/dist/server/ai/TextGenClient.js.map +1 -1
  820. package/dist/server/ai/providers/UglyBotTextGenProvider.js +2 -2
  821. package/dist/server/ai/providers/UglyBotTextGenProvider.js.map +1 -1
  822. package/dist/server/ai/providers/UglyBotWebSearchProvider.d.ts.map +1 -1
  823. package/dist/server/ai/providers/UglyBotWebSearchProvider.js +4 -2
  824. package/dist/server/ai/providers/UglyBotWebSearchProvider.js.map +1 -1
  825. package/dist/server/auth/googleProvider.d.ts.map +1 -1
  826. package/dist/server/auth/googleProvider.js +3 -1
  827. package/dist/server/auth/googleProvider.js.map +1 -1
  828. package/dist/server/auth/magicLinkProvider.d.ts.map +1 -1
  829. package/dist/server/auth/magicLinkProvider.js.map +1 -1
  830. package/dist/server/auth/userUpsert.d.ts.map +1 -1
  831. package/dist/server/auth/userUpsert.js +5 -1
  832. package/dist/server/auth/userUpsert.js.map +1 -1
  833. package/dist/server/auth/workersMagicLink.d.ts.map +1 -1
  834. package/dist/server/auth/workersMagicLink.js.map +1 -1
  835. package/dist/server/billing/BillingGateway.d.ts.map +1 -1
  836. package/dist/server/billing/BillingGateway.js.map +1 -1
  837. package/dist/server/billing/types.d.ts.map +1 -1
  838. package/dist/server/billing/types.js.map +1 -1
  839. package/dist/server/errorAlertTemplate.d.ts +1 -1
  840. package/dist/server/errorAlertTemplate.js +3 -3
  841. package/dist/server/feedbackResolveTemplate.d.ts.map +1 -1
  842. package/dist/server/feedbackResolveTemplate.js +1 -4
  843. package/dist/server/feedbackResolveTemplate.js.map +1 -1
  844. package/dist/server/index.d.ts +9 -9
  845. package/dist/server/index.d.ts.map +1 -1
  846. package/dist/server/index.js +7 -7
  847. package/dist/server/index.js.map +1 -1
  848. package/dist/server/ownerDigestTemplate.d.ts +1 -1
  849. package/dist/server/ownerDigestTemplate.js +9 -9
  850. package/dist/server/ownerNotify.js +18 -18
  851. package/dist/server/reindexCollection.d.ts.map +1 -1
  852. package/dist/server/reindexCollection.js.map +1 -1
  853. package/dist/server/searchParity.d.ts.map +1 -1
  854. package/dist/server/searchParity.js +13 -3
  855. package/dist/server/searchParity.js.map +1 -1
  856. package/dist/server/sqlite/SqliteDoc.d.ts.map +1 -1
  857. package/dist/server/sqlite/SqliteDoc.js +3 -1
  858. package/dist/server/sqlite/SqliteDoc.js.map +1 -1
  859. package/dist/server/sqlite/SqliteFilter.d.ts.map +1 -1
  860. package/dist/server/sqlite/SqliteFilter.js.map +1 -1
  861. package/dist/server/sqlite/SqliteFts.d.ts.map +1 -1
  862. package/dist/server/sqlite/SqliteFts.js.map +1 -1
  863. package/dist/server/sqlite/SqlitePipeline.d.ts.map +1 -1
  864. package/dist/server/sqlite/SqlitePipeline.js +12 -4
  865. package/dist/server/sqlite/SqlitePipeline.js.map +1 -1
  866. package/dist/server/sqlite/sqliteUpdateOps.d.ts.map +1 -1
  867. package/dist/server/sqlite/sqliteUpdateOps.js.map +1 -1
  868. package/dist/server/testUsers.d.ts.map +1 -1
  869. package/dist/server/testUsers.js +6 -2
  870. package/dist/server/testUsers.js.map +1 -1
  871. package/dist/server/uglyBotProxy.d.ts.map +1 -1
  872. package/dist/server/uglyBotProxy.js +4 -2
  873. package/dist/server/uglyBotProxy.js.map +1 -1
  874. package/dist/server/userEmailLookup.d.ts.map +1 -1
  875. package/dist/server/userEmailLookup.js +4 -2
  876. package/dist/server/userEmailLookup.js.map +1 -1
  877. package/dist/server/userPublicCollection.d.ts.map +1 -1
  878. package/dist/server/userPublicCollection.js +3 -1
  879. package/dist/server/userPublicCollection.js.map +1 -1
  880. package/dist/server/vector.d.ts.map +1 -1
  881. package/dist/server/vector.js +6 -3
  882. package/dist/server/vector.js.map +1 -1
  883. package/dist/server/vectorize/HttpVectorize.d.ts.map +1 -1
  884. package/dist/server/vectorize/HttpVectorize.js +20 -5
  885. package/dist/server/vectorize/HttpVectorize.js.map +1 -1
  886. package/dist/server/vectorize/VectorStore.d.ts.map +1 -1
  887. package/dist/server/vectorize/VectorStore.js +3 -1
  888. package/dist/server/vectorize/VectorStore.js.map +1 -1
  889. package/dist/server/vectorize/vectorRouting.d.ts.map +1 -1
  890. package/dist/server/vectorize/vectorRouting.js +9 -1
  891. package/dist/server/vectorize/vectorRouting.js.map +1 -1
  892. package/dist/shared/Api.d.ts.map +1 -1
  893. package/dist/shared/Api.js.map +1 -1
  894. package/dist/shared/Audio.d.ts.map +1 -1
  895. package/dist/shared/Audio.js.map +1 -1
  896. package/dist/shared/DB.d.ts.map +1 -1
  897. package/dist/shared/DB.js +16 -10
  898. package/dist/shared/DB.js.map +1 -1
  899. package/dist/shared/FrameworkRequests.d.ts.map +1 -1
  900. package/dist/shared/FrameworkRequests.js +21 -17
  901. package/dist/shared/FrameworkRequests.js.map +1 -1
  902. package/dist/shared/Pricing.d.ts.map +1 -1
  903. package/dist/shared/Pricing.js.map +1 -1
  904. package/dist/shared/ProxyOps.d.ts.map +1 -1
  905. package/dist/shared/ProxyOps.js +91 -23
  906. package/dist/shared/ProxyOps.js.map +1 -1
  907. package/dist/shared/Router.d.ts.map +1 -1
  908. package/dist/shared/Router.js +3 -1
  909. package/dist/shared/Router.js.map +1 -1
  910. package/dist/shared/SchemaDiff.d.ts.map +1 -1
  911. package/dist/shared/SchemaDiff.js +8 -2
  912. package/dist/shared/SchemaDiff.js.map +1 -1
  913. package/dist/shared/SchemaSerializer.d.ts.map +1 -1
  914. package/dist/shared/SchemaSerializer.js +6 -1
  915. package/dist/shared/SchemaSerializer.js.map +1 -1
  916. package/dist/shared/Socket.d.ts.map +1 -1
  917. package/dist/shared/Strings.d.ts.map +1 -1
  918. package/dist/shared/Strings.js.map +1 -1
  919. package/dist/shared/TextGen.d.ts.map +1 -1
  920. package/dist/shared/TextGen.js +15 -11
  921. package/dist/shared/TextGen.js.map +1 -1
  922. package/dist/shared/TimingTrack.d.ts.map +1 -1
  923. package/dist/shared/TimingTrack.js +11 -1
  924. package/dist/shared/TimingTrack.js.map +1 -1
  925. package/dist/shared/dbIndexTypes.d.ts.map +1 -1
  926. package/dist/shared/ownerAlertConfig.js +9 -9
  927. package/dist/testing/fixture.d.ts.map +1 -1
  928. package/dist/testing/fixture.js +19 -4
  929. package/dist/testing/fixture.js.map +1 -1
  930. package/dist/testing/index.d.ts.map +1 -1
  931. package/dist/testing/index.js +3 -1
  932. package/dist/testing/index.js.map +1 -1
  933. package/dist/testing/overrides.d.ts.map +1 -1
  934. package/dist/testing/overrides.js +6 -2
  935. package/dist/testing/overrides.js.map +1 -1
  936. package/dist/testing/stubServer.d.ts.map +1 -1
  937. package/dist/testing/stubServer.js +20 -10
  938. package/dist/testing/stubServer.js.map +1 -1
  939. package/dist/testing/stubs.d.ts.map +1 -1
  940. package/dist/testing/stubs.js +18 -4
  941. package/dist/testing/stubs.js.map +1 -1
  942. package/dist/testing/testMode.d.ts.map +1 -1
  943. package/dist/testing/testMode.js +2 -1
  944. package/dist/testing/testMode.js.map +1 -1
  945. package/dist/three/client/TalkingAvatar.d.ts.map +1 -1
  946. package/dist/three/client/TalkingAvatar.js.map +1 -1
  947. package/dist/three/client/index.d.ts +1 -1
  948. package/dist/three/client/index.d.ts.map +1 -1
  949. package/dist/three/client/index.js.map +1 -1
  950. package/dist/three/server/VideoEncoder.d.ts.map +1 -1
  951. package/dist/three/server/VideoEncoder.js.map +1 -1
  952. package/dist/three/server/index.d.ts +3 -3
  953. package/dist/three/server/index.d.ts.map +1 -1
  954. package/dist/three/server/index.js +3 -3
  955. package/dist/three/server/index.js.map +1 -1
  956. package/dist/three/shared/CameraController.d.ts.map +1 -1
  957. package/dist/three/shared/CameraController.js +3 -1
  958. package/dist/three/shared/CameraController.js.map +1 -1
  959. package/dist/three/shared/avatar/AvatarAnimations.d.ts.map +1 -1
  960. package/dist/three/shared/avatar/AvatarAnimations.js.map +1 -1
  961. package/dist/three/shared/avatar/AvatarModel.d.ts.map +1 -1
  962. package/dist/three/shared/avatar/AvatarModel.js.map +1 -1
  963. package/dist/three/shared/avatar/AvatarParticleSystem.d.ts.map +1 -1
  964. package/dist/three/shared/avatar/AvatarParticleSystem.js +1 -3
  965. package/dist/three/shared/avatar/AvatarParticleSystem.js.map +1 -1
  966. package/dist/three/shared/avatar/AvatarScene.d.ts.map +1 -1
  967. package/dist/three/shared/avatar/AvatarScene.js +5 -4
  968. package/dist/three/shared/avatar/AvatarScene.js.map +1 -1
  969. package/dist/three/shared/avatar/GLTFLoader.js.map +1 -1
  970. package/dist/three/shared/avatar/ServerDRACOLoader.d.ts.map +1 -1
  971. package/dist/three/shared/avatar/ServerDRACOLoader.js +9 -3
  972. package/dist/three/shared/avatar/ServerDRACOLoader.js.map +1 -1
  973. package/dist/three/shared/avatar/_compat.d.ts.map +1 -1
  974. package/dist/vite/dataSourcePlugin.d.ts.map +1 -1
  975. package/dist/vite/dataSourcePlugin.js +3 -2
  976. package/dist/vite/dataSourcePlugin.js.map +1 -1
  977. package/dist/webrtc/server/VideoRoomServer.d.ts.map +1 -1
  978. package/dist/webrtc/server/VideoRoomServer.js +114 -23
  979. package/dist/webrtc/server/VideoRoomServer.js.map +1 -1
  980. package/dist/worker/TaskContext.d.ts.map +1 -1
  981. package/dist/worker/TaskHost.d.ts.map +1 -1
  982. package/dist/worker/TaskHost.js +27 -10
  983. package/dist/worker/TaskHost.js.map +1 -1
  984. package/dist/worker/index.d.ts +1 -1
  985. package/dist/worker/index.d.ts.map +1 -1
  986. package/dist/worker/index.js +1 -1
  987. package/dist/worker/index.js.map +1 -1
  988. package/package.json +4 -2
  989. package/src/agent/client/runAgent.test.ts +80 -16
  990. package/src/agent/client/runAgent.ts +57 -21
  991. package/src/agent/client/useAgent.ts +5 -5
  992. package/src/agent/server/UglyBotTextStream.ts +34 -12
  993. package/src/agent/server/registerAgentHandler.ts +9 -9
  994. package/src/agent/server/streamAgentTurn.ts +8 -2
  995. package/src/agent/shared/AgentStream.ts +1 -5
  996. package/src/agent/shared/SessionStore.ts +13 -2
  997. package/src/agent/shared/agent.test.ts +31 -6
  998. package/src/cli/auth/browser.ts +3 -1
  999. package/src/cli/auth/callbackServer.ts +51 -12
  1000. package/src/cli/auth/cloudflareOauth.ts +79 -60
  1001. package/src/cli/auth/credentials.ts +15 -5
  1002. package/src/cli/auth/neonOauth.ts +21 -7
  1003. package/src/cli/authCommands.ts +17 -5
  1004. package/src/cli/authStore.ts +21 -11
  1005. package/src/cli/bootstrapMigration.ts +7 -2
  1006. package/src/cli/buildTasks.test.ts +12 -3
  1007. package/src/cli/buildTasks.ts +6 -2
  1008. package/src/cli/buildWorkers.rewrite.test.ts +8 -6
  1009. package/src/cli/buildWorkers.ts +32 -6
  1010. package/src/cli/cloudCleanup.ts +19 -9
  1011. package/src/cli/configure.ts +1 -4
  1012. package/src/cli/debugStream.ts +28 -8
  1013. package/src/cli/debugStreamSocket.ts +13 -4
  1014. package/src/cli/deployClient.ts +9 -4
  1015. package/src/cli/dev.ts +11 -4
  1016. package/src/cli/doctor.ts +23 -10
  1017. package/src/cli/exportCollections.ts +7 -2
  1018. package/src/cli/feedbackResolve.test.ts +25 -7
  1019. package/src/cli/feedbackResolve.ts +12 -4
  1020. package/src/cli/feedbackSubmit.ts +1 -1
  1021. package/src/cli/imageGen.ts +1 -2
  1022. package/src/cli/index.ts +607 -318
  1023. package/src/cli/inspectUx.ts +9 -4
  1024. package/src/cli/lint.ts +4 -1
  1025. package/src/cli/loginCommands.ts +19 -6
  1026. package/src/cli/meshGen.ts +12 -4
  1027. package/src/cli/migrate.ts +18 -5
  1028. package/src/cli/migrateBackend.test.ts +8 -1
  1029. package/src/cli/migrateBackend.ts +20 -9
  1030. package/src/cli/probeAuth.ts +20 -9
  1031. package/src/cli/prodDb.ts +44 -12
  1032. package/src/cli/publish/appStore.ts +6 -3
  1033. package/src/cli/publish/orchestrator.ts +235 -124
  1034. package/src/cli/publish/packageManager.ts +5 -1
  1035. package/src/cli/publish/providers/cloudflare.ts +169 -119
  1036. package/src/cli/publish/providers/neon.ts +16 -7
  1037. package/src/cli/publish/providers/ugly-proxy.ts +3 -3
  1038. package/src/cli/publish/recipe-pack.ts +4 -6
  1039. package/src/cli/publish/secret-storage.ts +80 -25
  1040. package/src/cli/publish/selector-pack.ts +7 -6
  1041. package/src/cli/publish/vectorizeStep.test.ts +48 -10
  1042. package/src/cli/publish/vectorizeStep.ts +28 -8
  1043. package/src/cli/publishCommand.ts +84 -27
  1044. package/src/cli/reconcileDerived.ts +7 -3
  1045. package/src/cli/reindexDerived.ts +15 -6
  1046. package/src/cli/resolveBin.ts +1 -3
  1047. package/src/cli/scaffold.ts +52 -10
  1048. package/src/cli/scaffoldFeatures.test.ts +48 -13
  1049. package/src/cli/scaffoldFeatures.ts +142 -36
  1050. package/src/cli/schemaGen.ts +39 -11
  1051. package/src/cli/schemaStatus.ts +8 -3
  1052. package/src/cli/searchParity.ts +29 -15
  1053. package/src/cli/serverLogQueryApi.test.ts +6 -3
  1054. package/src/cli/serverLogQueryApi.ts +79 -31
  1055. package/src/cli/tailCommand.ts +4 -2
  1056. package/src/cli/telemetryAuth.ts +4 -1
  1057. package/src/cli/testUserCommands.ts +21 -5
  1058. package/src/cli/uglyBotAuth.ts +7 -5
  1059. package/src/cli/uglyBotConfigDir.ts +20 -0
  1060. package/src/cli/uglyBotLogin.ts +9 -6
  1061. package/src/cli/uglyappConfig.test.ts +25 -6
  1062. package/src/cli/uglyappConfig.ts +72 -26
  1063. package/src/cli/upgrade.ts +15 -6
  1064. package/src/cli/version.ts +1 -1
  1065. package/src/client/AppApi.ts +3 -1
  1066. package/src/client/FeedbackContext.ts +9 -3
  1067. package/src/client/Logger.ts +7 -9
  1068. package/src/client/LoginPopup.tsx +4 -2
  1069. package/src/client/Router.tsx +27 -24
  1070. package/src/client/Screenshot.ts +6 -2
  1071. package/src/client/StringsProvider.tsx +28 -10
  1072. package/src/client/ViewFlipper.tsx +2 -2
  1073. package/src/client/animation/Animated.tsx +5 -8
  1074. package/src/client/animation/animatedValue.ts +10 -8
  1075. package/src/client/animation/useAnimatedTransition.tsx +7 -6
  1076. package/src/client/appTree.tsx +9 -2
  1077. package/src/client/audio/AudioRecorder.ts +9 -3
  1078. package/src/client/audio/BlobTypes.ts +1 -6
  1079. package/src/client/audio/BlobVisualizer.tsx +8 -4
  1080. package/src/client/audio/audioPlayer.worklet.ts +5 -3
  1081. package/src/client/audio/audioRecorder.worklet.ts +3 -1
  1082. package/src/client/audio/useSTT.ts +15 -5
  1083. package/src/client/audio/useTTS.ts +26 -4
  1084. package/src/client/auth/AuthRoot.tsx +10 -2
  1085. package/src/client/auth/startLogin.test.ts +63 -18
  1086. package/src/client/auth/startLogin.ts +14 -6
  1087. package/src/client/bootstrapApp.tsx +67 -19
  1088. package/src/client/buildInfo.ts +2 -1
  1089. package/src/client/cachedDoc.ts +7 -2
  1090. package/src/client/callAI.test.ts +19 -6
  1091. package/src/client/callAI.ts +27 -12
  1092. package/src/client/components/AnimatedInput.tsx +20 -18
  1093. package/src/client/components/AnimatedList.tsx +10 -10
  1094. package/src/client/components/Button.tsx +48 -19
  1095. package/src/client/components/Card.tsx +2 -1
  1096. package/src/client/components/CardStack.tsx +90 -15
  1097. package/src/client/components/DatePicker.tsx +17 -2
  1098. package/src/client/components/DateRangePicker.tsx +35 -14
  1099. package/src/client/components/DateTimePicker.tsx +18 -2
  1100. package/src/client/components/DrawingCanvas.tsx +3 -6
  1101. package/src/client/components/FlatList.tsx +33 -27
  1102. package/src/client/components/Image.test.tsx +6 -2
  1103. package/src/client/components/Input.tsx +9 -9
  1104. package/src/client/components/KeyboardProvider.tsx +5 -1
  1105. package/src/client/components/Modal.tsx +4 -4
  1106. package/src/client/components/PageLayout.tsx +8 -1
  1107. package/src/client/components/Pager.tsx +21 -27
  1108. package/src/client/components/Panel.tsx +1 -4
  1109. package/src/client/components/Pressable.tsx +8 -8
  1110. package/src/client/components/ResponsiveGrid.tsx +1 -1
  1111. package/src/client/components/ScrollDownArrow.tsx +8 -2
  1112. package/src/client/components/ScrollView.tsx +24 -12
  1113. package/src/client/components/SelectView.tsx +21 -10
  1114. package/src/client/components/SettingGroup.tsx +17 -2
  1115. package/src/client/components/TabPicker.tsx +2 -7
  1116. package/src/client/components/Text.tsx +7 -7
  1117. package/src/client/components/UserImage.tsx +8 -3
  1118. package/src/client/components/UserName.tsx +9 -2
  1119. package/src/client/components/ValidatedTextInput.tsx +30 -27
  1120. package/src/client/components/View.tsx +12 -7
  1121. package/src/client/components/WizardView.tsx +2 -2
  1122. package/src/client/components/index.ts +84 -14
  1123. package/src/client/createSocket.test.ts +223 -53
  1124. package/src/client/createSocket.ts +230 -80
  1125. package/src/client/debugStreamClient.ts +6 -1
  1126. package/src/client/feedbackBridge.ts +23 -10
  1127. package/src/client/index.ts +47 -9
  1128. package/src/client/inspect/keyboard.ts +3 -1
  1129. package/src/client/inspect/report.ts +7 -3
  1130. package/src/client/inspect/safearea.ts +2 -1
  1131. package/src/client/refreshWebPush.test.ts +5 -1
  1132. package/src/client/refreshWebPush.ts +4 -2
  1133. package/src/client/shareLinkClient.ts +3 -5
  1134. package/src/client/ssr.ts +3 -1
  1135. package/src/client/uglyBotSocket.ts +23 -9
  1136. package/src/client/uglyStudioPreviewBridge.ts +3 -1
  1137. package/src/client/uploadBlob.ts +5 -2
  1138. package/src/client/webPush.ts +51 -14
  1139. package/src/collab/client/CollabProvider.ts +53 -12
  1140. package/src/collab/client/index.ts +5 -1
  1141. package/src/collab/server/CollabServer.ts +42 -17
  1142. package/src/conversation/client/ChatContext.ts +4 -2
  1143. package/src/conversation/client/ChatMarkdownInput.tsx +27 -4
  1144. package/src/conversation/client/ChatMessageBubble.tsx +28 -7
  1145. package/src/conversation/client/ChatScrollButton.tsx +3 -1
  1146. package/src/conversation/client/ChatView.tsx +45 -20
  1147. package/src/conversation/client/conversationStreamReducer.ts +9 -6
  1148. package/src/conversation/client/index.ts +1 -3
  1149. package/src/conversation/server/Conversation.ts +172 -70
  1150. package/src/conversation/server/ConversationDeps.ts +47 -14
  1151. package/src/conversation/server/ConversationServer.ts +105 -25
  1152. package/src/conversation/server/ConversationUser.ts +24 -9
  1153. package/src/conversation/server/SubscriptionRegistry.ts +5 -1
  1154. package/src/conversation/server/TokenCoalescer.ts +4 -1
  1155. package/src/conversation/server/conversationTtl.ts +7 -2
  1156. package/src/conversation/server/hubSink.ts +4 -1
  1157. package/src/conversation/server/index.ts +2 -8
  1158. package/src/conversation/server/runStreamedMessage.ts +3 -1
  1159. package/src/conversation/server/types.ts +26 -6
  1160. package/src/conversation/shared/types.ts +1 -8
  1161. package/src/devProxy/neonLocalProxy.ts +6 -10
  1162. package/src/inspect/agent/console.ts +55 -13
  1163. package/src/inspect/agent/dom.test.ts +7 -2
  1164. package/src/inspect/agent/dom.ts +30 -7
  1165. package/src/inspect/agent/element.ts +31 -8
  1166. package/src/inspect/agent/eval.ts +16 -4
  1167. package/src/inspect/agent/install.ts +33 -7
  1168. package/src/inspect/agent/network.ts +61 -18
  1169. package/src/inspect/agent/perfAgent.test.ts +31 -9
  1170. package/src/inspect/agent/perfAgent.ts +75 -34
  1171. package/src/inspect/agent/perfAgentThrottle.test.ts +19 -6
  1172. package/src/inspect/agent/picker.ts +5 -1
  1173. package/src/inspect/agent/profile.ts +32 -6
  1174. package/src/inspect/agent/serialize.test.ts +12 -2
  1175. package/src/inspect/agent/serialize.ts +44 -11
  1176. package/src/inspect/agent/storage.ts +25 -10
  1177. package/src/inspect/agent/types.ts +11 -2
  1178. package/src/inspect/agent/vitals.ts +70 -28
  1179. package/src/inspect/client.test.ts +39 -7
  1180. package/src/inspect/client.ts +59 -19
  1181. package/src/inspect/dispatch.ts +32 -8
  1182. package/src/inspect/host-bundle-entry.ts +3 -1
  1183. package/src/inspect/index.ts +5 -1
  1184. package/src/inspect/protocol.ts +62 -26
  1185. package/src/inspect/proxyHostBootstrap.test.ts +69 -14
  1186. package/src/inspect/proxyHostBootstrap.ts +20 -7
  1187. package/src/inspect/selfHost.test.ts +33 -9
  1188. package/src/inspect/selfHost.ts +27 -7
  1189. package/src/inspect/ui/InspectPanel.test.tsx +25 -5
  1190. package/src/inspect/ui/InspectPanel.tsx +99 -20
  1191. package/src/inspect/ui/RemoteValueView.tsx +37 -7
  1192. package/src/inspect/ui/index.ts +4 -1
  1193. package/src/inspect/ui/panels/ConsolePanel.tsx +42 -8
  1194. package/src/inspect/ui/panels/ElementsPanel.tsx +65 -28
  1195. package/src/inspect/ui/panels/NetworkPanel.tsx +83 -39
  1196. package/src/inspect/ui/panels/PerformancePanel.tsx +88 -18
  1197. package/src/inspect/ui/panels/StoragePanel.tsx +42 -7
  1198. package/src/markdown/client/MarkdownEditor.tsx +20 -4
  1199. package/src/markdown/client/MarkdownEditorInternal.tsx +81 -19
  1200. package/src/markdown/client/MarkdownTheme.css +3 -2
  1201. package/src/markdown/client/MdastViewer.tsx +28 -14
  1202. package/src/markdown/client/ProseMirrorEditor/EditorContextMenu.tsx +6 -1
  1203. package/src/markdown/client/ProseMirrorEditor/FloatingToolbar.tsx +20 -11
  1204. package/src/markdown/client/ProseMirrorEditor/SlashCommandMenu.tsx +5 -4
  1205. package/src/markdown/client/ProseMirrorEditor/menuItems.ts +2 -1
  1206. package/src/markdown/client/ProseMirrorEditor/nodeViews/VegaLiteNodeView.ts +1 -3
  1207. package/src/markdown/client/ProseMirrorEditor/plugins/collabCursor.ts +4 -1
  1208. package/src/markdown/client/ProseMirrorEditor/plugins/followPlugin.ts +1 -2
  1209. package/src/markdown/client/ProseMirrorEditor/plugins/mentionPlugin.ts +1 -2
  1210. package/src/markdown/client/ProseMirrorEditor/plugins/slashCommandPlugin.ts +1 -2
  1211. package/src/markdown/client/ProseMirrorEditor/plugins/ttsHighlightPlugin.ts +3 -1
  1212. package/src/markdown/client/ProseMirrorEditor/schema.ts +2 -2
  1213. package/src/markdown/client/markdownComponents.tsx +1 -2
  1214. package/src/markdown/client/ui.module.css +6 -4
  1215. package/src/markdown/shared/MdastParser.ts +6 -10
  1216. package/src/markdown/shared/StreamingMarkdown.test.ts +2 -4
  1217. package/src/markdown/shared/StreamingMarkdown.ts +3 -3
  1218. package/src/native/bundledTools.ts +125 -23
  1219. package/src/native/conformance/harness.ts +215 -51
  1220. package/src/native/contract-meta.test.ts +6 -2
  1221. package/src/native/contract-meta.ts +47 -33
  1222. package/src/native/contract.test.ts +22 -5
  1223. package/src/native/contract.ts +287 -67
  1224. package/src/native/contractSchemas.ts +3 -1
  1225. package/src/native/defineTask.test.ts +7 -1
  1226. package/src/native/facades/browse.test.ts +41 -8
  1227. package/src/native/facades/browse.ts +16 -4
  1228. package/src/native/facades/browser.ts +16 -4
  1229. package/src/native/facades/mcp.ts +37 -11
  1230. package/src/native/facades/net.ts +66 -23
  1231. package/src/native/facades/process.test.ts +8 -2
  1232. package/src/native/facades/process.ts +28 -8
  1233. package/src/native/facades/sandbox.ts +10 -3
  1234. package/src/native/facades/task.test.ts +102 -25
  1235. package/src/native/facades/task.ts +44 -12
  1236. package/src/native/facades/terminal.ts +10 -2
  1237. package/src/native/facades/uglybot.ts +9 -3
  1238. package/src/native/index.ts +26 -4
  1239. package/src/native/install.test.ts +44 -12
  1240. package/src/native/install.ts +24 -8
  1241. package/src/native/mcp-catalog.ts +8 -4
  1242. package/src/native/node.test.ts +46 -14
  1243. package/src/native/node.ts +129 -34
  1244. package/src/native/permissions.test.ts +10 -4
  1245. package/src/native/permissions.ts +17 -7
  1246. package/src/native/protocol.ts +24 -5
  1247. package/src/native/proxy.test.ts +99 -25
  1248. package/src/native/proxy.ts +98 -35
  1249. package/src/native/proxyBootstrap.test.ts +33 -9
  1250. package/src/native/proxyClient.test.ts +135 -36
  1251. package/src/native/proxyClient.ts +169 -50
  1252. package/src/native/proxyCrypto.test.ts +12 -3
  1253. package/src/native/proxyCrypto.ts +34 -7
  1254. package/src/native/proxyHost.test.ts +103 -22
  1255. package/src/native/proxyHost.ts +50 -14
  1256. package/src/native/server/binaries/catalog.ts +18 -6
  1257. package/src/native/server/binaries/ensure.ts +3 -1
  1258. package/src/native/server/binaries/index.ts +6 -1
  1259. package/src/native/server/binaries/installer.ts +15 -5
  1260. package/src/native/server/binaries/localInfra.ts +4 -2
  1261. package/src/native/server/binaries/netutil.ts +7 -2
  1262. package/src/native/server/binaries/path.ts +4 -1
  1263. package/src/native/server/binaries/postgres.ts +66 -10
  1264. package/src/native/server/binaries/resolver.ts +11 -3
  1265. package/src/native/server/binaries/storage.ts +33 -7
  1266. package/src/native/server/index.ts +11 -2
  1267. package/src/native/server/permissions/audit.ts +5 -2
  1268. package/src/native/server/permissions/gate.ts +6 -2
  1269. package/src/native/server/permissions/grants.test.ts +3 -1
  1270. package/src/native/server/permissions/grants.ts +12 -7
  1271. package/src/native/server/permissions/scope.ts +4 -1
  1272. package/src/native/web-adapter.test.ts +10 -3
  1273. package/src/native/web-adapter.ts +28 -6
  1274. package/src/native/wrapper.test.ts +28 -7
  1275. package/src/native/wrapper.ts +43 -17
  1276. package/src/playwright/dev-auth.ts +25 -6
  1277. package/src/playwright/native-mock.ts +30 -11
  1278. package/src/playwright/real-native.ts +114 -36
  1279. package/src/search/server/AnswerEngine.ts +24 -10
  1280. package/src/search/server/WebRetriever.ts +9 -2
  1281. package/src/search/server/index.ts +1 -3
  1282. package/src/server/AiImage.ts +18 -4
  1283. package/src/server/AiText.ts +24 -8
  1284. package/src/server/App.ts +393 -373
  1285. package/src/server/Auth.ts +20 -9
  1286. package/src/server/BuildInfo.ts +4 -1
  1287. package/src/server/DB.d1dispatch.test.ts +44 -9
  1288. package/src/server/DB.d1fts.test.ts +49 -10
  1289. package/src/server/DB.d1vector.test.ts +145 -23
  1290. package/src/server/DB.ts +209 -66
  1291. package/src/server/DocStore.test.ts +19 -5
  1292. package/src/server/DocStore.ts +37 -9
  1293. package/src/server/Email.ts +3 -1
  1294. package/src/server/EventCounter.ts +10 -5
  1295. package/src/server/EventLogAdmin.ts +161 -39
  1296. package/src/server/ExperimentAdmin.ts +43 -21
  1297. package/src/server/Logging.ts +110 -103
  1298. package/src/server/Nats.ts +4 -1
  1299. package/src/server/NodePool.ts +1 -2
  1300. package/src/server/Pg.ts +1 -4
  1301. package/src/server/PostgresDoc.ts +10 -7
  1302. package/src/server/PostgresDocInternal.ts +9 -12
  1303. package/src/server/PostgresFilter.test.ts +6 -2
  1304. package/src/server/PostgresFilter.ts +3 -1
  1305. package/src/server/PostgresIndexes.ts +4 -1
  1306. package/src/server/PostgresPipeline.ts +3 -1
  1307. package/src/server/PostgresSchema.ts +20 -4
  1308. package/src/server/Push.ts +13 -4
  1309. package/src/server/PushNotification.ts +9 -7
  1310. package/src/server/PushSend.test.ts +14 -4
  1311. package/src/server/PushSend.ts +1 -4
  1312. package/src/server/RateLimit.ts +11 -3
  1313. package/src/server/Router.ts +6 -11
  1314. package/src/server/SchemaCheck.ts +40 -16
  1315. package/src/server/ShareLink.test.ts +14 -4
  1316. package/src/server/ShareLink.ts +1 -4
  1317. package/src/server/Socket.ts +80 -21
  1318. package/src/server/Storage.ts +1 -2
  1319. package/src/server/StoreHandlers.ts +89 -23
  1320. package/src/server/TelemetryStore.test.ts +28 -9
  1321. package/src/server/TelemetryStore.ts +86 -88
  1322. package/src/server/adapter/index.ts +1 -2
  1323. package/src/server/adapter/node/index.ts +6 -9
  1324. package/src/server/adapter/prodBackend.test.ts +4 -1
  1325. package/src/server/adapter/prodBackend.ts +5 -2
  1326. package/src/server/adapter/publishFrame.ts +10 -2
  1327. package/src/server/adapter/types.ts +1 -4
  1328. package/src/server/adapter/workers/createSsrRender.tsx +15 -4
  1329. package/src/server/adapter/workers/createWorkersApp.ts +362 -188
  1330. package/src/server/adapter/workers/do-collab.ts +31 -7
  1331. package/src/server/adapter/workers/do-collection.ts +13 -16
  1332. package/src/server/adapter/workers/edgeCache.ts +3 -1
  1333. package/src/server/adapter/workers/index.ts +17 -13
  1334. package/src/server/adapter/workers/storage.ts +3 -1
  1335. package/src/server/adapter/workers/wrapWithAssets.ts +69 -30
  1336. package/src/server/adminAllowlist.ts +4 -1
  1337. package/src/server/ai/TextGenBase.ts +3 -8
  1338. package/src/server/ai/TextGenClient.ts +3 -1
  1339. package/src/server/ai/providers/UglyBotTextGenProvider.ts +2 -2
  1340. package/src/server/ai/providers/UglyBotWebSearchProvider.ts +4 -2
  1341. package/src/server/auth/buildAuth.integration.test.ts +7 -2
  1342. package/src/server/auth/googleProvider.test.ts +19 -10
  1343. package/src/server/auth/googleProvider.ts +5 -2
  1344. package/src/server/auth/hmac.test.ts +12 -4
  1345. package/src/server/auth/magicLinkProvider.test.ts +24 -11
  1346. package/src/server/auth/magicLinkProvider.ts +27 -29
  1347. package/src/server/auth/userUpsert.test.ts +43 -10
  1348. package/src/server/auth/userUpsert.ts +5 -1
  1349. package/src/server/auth/workersMagicLink.ts +15 -15
  1350. package/src/server/billing/BillingGateway.ts +3 -4
  1351. package/src/server/billing/types.ts +1 -6
  1352. package/src/server/errorAlertTemplate.ts +4 -4
  1353. package/src/server/errorDedup.test.ts +28 -28
  1354. package/src/server/feedbackNotify.test.ts +3 -1
  1355. package/src/server/feedbackResolveTemplate.ts +1 -4
  1356. package/src/server/index.ts +46 -15
  1357. package/src/server/migrateCollection.test.ts +6 -1
  1358. package/src/server/notifyBuffer.test.ts +24 -9
  1359. package/src/server/ownerDigestTemplate.ts +12 -12
  1360. package/src/server/ownerNotify.ts +19 -19
  1361. package/src/server/publishTransientDoc.test.ts +19 -5
  1362. package/src/server/reconcileCollection.test.ts +22 -4
  1363. package/src/server/reindexCollection.test.ts +22 -5
  1364. package/src/server/reindexCollection.ts +8 -2
  1365. package/src/server/schemaIndexes.test.ts +12 -4
  1366. package/src/server/searchParity.test.ts +51 -9
  1367. package/src/server/searchParity.ts +44 -13
  1368. package/src/server/sqlite/SqliteDoc.test.ts +49 -24
  1369. package/src/server/sqlite/SqliteDoc.ts +5 -2
  1370. package/src/server/sqlite/SqliteFilter.test.ts +11 -2
  1371. package/src/server/sqlite/SqliteFilter.ts +12 -4
  1372. package/src/server/sqlite/SqliteFts.ts +4 -1
  1373. package/src/server/sqlite/SqlitePipeline.test.ts +24 -10
  1374. package/src/server/sqlite/SqlitePipeline.ts +18 -6
  1375. package/src/server/sqlite/SqliteSchema.test.ts +11 -7
  1376. package/src/server/sqlite/assertIndexed.test.ts +16 -5
  1377. package/src/server/sqlite/sqliteUpdateOps.test.ts +16 -5
  1378. package/src/server/sqlite/sqliteUpdateOps.ts +9 -3
  1379. package/src/server/testUsers.ts +19 -11
  1380. package/src/server/uglyBotProxy.ts +17 -5
  1381. package/src/server/userEmailLookup.test.ts +20 -6
  1382. package/src/server/userEmailLookup.ts +4 -2
  1383. package/src/server/userPublicCollection.ts +3 -1
  1384. package/src/server/vector.ts +9 -4
  1385. package/src/server/vectorize/HttpVectorize.ts +24 -6
  1386. package/src/server/vectorize/VectorStore.ts +60 -29
  1387. package/src/server/vectorize/vectorRouting.ts +14 -2
  1388. package/src/shared/Api.ts +19 -26
  1389. package/src/shared/Audio.ts +5 -15
  1390. package/src/shared/DB.ts +126 -58
  1391. package/src/shared/FrameworkRequests.test.ts +18 -3
  1392. package/src/shared/FrameworkRequests.ts +30 -24
  1393. package/src/shared/Pricing.ts +6 -3
  1394. package/src/shared/ProxyOps.ts +96 -24
  1395. package/src/shared/Router.ts +6 -3
  1396. package/src/shared/SchemaDiff.ts +18 -5
  1397. package/src/shared/SchemaSerializer.ts +24 -11
  1398. package/src/shared/Socket.ts +1 -2
  1399. package/src/shared/Strings.ts +1 -3
  1400. package/src/shared/TextGen.ts +29 -30
  1401. package/src/shared/TimingTrack.test.ts +6 -2
  1402. package/src/shared/TimingTrack.ts +11 -1
  1403. package/src/shared/dbIndexTypes.ts +15 -10
  1404. package/src/shared/ownerAlertConfig.ts +9 -9
  1405. package/src/testing/fixture.ts +26 -6
  1406. package/src/testing/index.ts +3 -1
  1407. package/src/testing/overrides.ts +6 -2
  1408. package/src/testing/stubServer.ts +41 -11
  1409. package/src/testing/stubs.ts +32 -8
  1410. package/src/testing/testMode.ts +12 -4
  1411. package/src/three/client/TalkingAvatar.tsx +2 -1
  1412. package/src/three/client/index.ts +4 -1
  1413. package/src/three/server/VideoEncoder.ts +10 -10
  1414. package/src/three/server/index.ts +3 -10
  1415. package/src/three/shared/CameraController.ts +3 -1
  1416. package/src/three/shared/avatar/AvatarAnimations.ts +1 -5
  1417. package/src/three/shared/avatar/AvatarModel.ts +17 -22
  1418. package/src/three/shared/avatar/AvatarParticleSystem.ts +1 -3
  1419. package/src/three/shared/avatar/AvatarScene.ts +7 -10
  1420. package/src/three/shared/avatar/GLTFLoader.ts +7 -7
  1421. package/src/three/shared/avatar/ServerDRACOLoader.ts +9 -3
  1422. package/src/three/shared/avatar/_compat.ts +1 -8
  1423. package/src/vite/dataSourcePlugin.ts +7 -5
  1424. package/src/webrtc/server/VideoRoomServer.ts +296 -67
  1425. package/src/worker/TaskContext.ts +18 -4
  1426. package/src/worker/TaskHost.ts +58 -17
  1427. package/src/worker/index.ts +1 -5
  1428. package/templates/.prettierignore +28 -0
  1429. package/templates/.prettierrc +9 -0
  1430. package/templates/_features/chat/pages/ChatDemoPage.tsx +55 -34
  1431. package/templates/_features/chat/pages/ChatTestPage.tsx +131 -49
  1432. package/templates/_features/collab/pages/CollabTestPage.tsx +145 -48
  1433. package/templates/_features/tests/e2e/app.spec.ts +6 -2
  1434. package/templates/_features/tests/e2e/scroll.spec.ts +33 -15
  1435. package/templates/_features/tests/pages/AITestPage.tsx +12 -2
  1436. package/templates/_features/tests/pages/AudioTestPage.tsx +142 -45
  1437. package/templates/_features/tests/pages/AuthDemoPage.tsx +11 -4
  1438. package/templates/_features/tests/pages/EmailTestPage.tsx +104 -23
  1439. package/templates/_features/tests/pages/ErrorTestPage.tsx +30 -7
  1440. package/templates/_features/tests/pages/KagiTestPage.tsx +20 -14
  1441. package/templates/_features/tests/pages/PushTestPage.tsx +44 -9
  1442. package/templates/_features/tests/pages/SafeAreaTestPage.tsx +30 -8
  1443. package/templates/_features/tests/pages/StringsTestPage.tsx +60 -12
  1444. package/templates/_features/tests/pages/TestIndexPage.tsx +110 -20
  1445. package/templates/_features/tests/pages/ThreeTestPage.tsx +95 -21
  1446. package/templates/_features/tests/pages/UIComponentsPage.tsx +766 -184
  1447. package/templates/_features/tests/pages/UploadTestPage.tsx +49 -13
  1448. package/templates/_features/tests/pages/VideoRoomTestPage.tsx +67 -17
  1449. package/templates/_features/tests/pages/WorkerTestPage.tsx +34 -7
  1450. package/templates/_features/todo/pages/TodoDemoPage.tsx +51 -17
  1451. package/templates/bots/feedback/run-bot.mjs +27 -12
  1452. package/templates/client/main.tsx +3 -1
  1453. package/templates/client/pages/HomePage.tsx +5 -3
  1454. package/templates/client/push.ts +9 -3
  1455. package/templates/client/styles.css +4 -1
  1456. package/templates/package.json +3 -1
  1457. package/templates/server/index.ts +5 -1
  1458. package/templates/shared/api.ts +8 -1
  1459. package/templates/shared/experiments.ts +1 -1
  1460. package/templates/tests/e2e/example-interactive.spec.ts +12 -4
  1461. package/templates/tests/e2e/smoke.spec.ts +3 -1
  1462. package/templates/tests/unit/api.test.ts +4 -1
  1463. package/templates/tests/unit/collections.test.ts +6 -1
package/README.md CHANGED
@@ -2,18 +2,18 @@
2
2
 
3
3
  A full-stack TypeScript framework for shipping production web apps with one CLI. Scaffold with `npx ugly-app init my-app` and get an opinionated Express + React + PostgreSQL stack with built-in auth, type-safe RPC over WebSocket and HTTP, real-time document tracking, AI generation, storage, and a CLI for every workflow.
4
4
 
5
- ugly-app is designed to be deployed and operated through [ugly.bot](https://ugly.bot) — the platform handles auth, infra (PostgreSQL, Qdrant, NATS, S3-compatible object storage), AI provider keys, and deployment. Your app talks to all of this through the project's dev tunnel and the per-app `UGLY_BOT_TOKEN`.
5
+ ugly-app is designed to be deployed and operated through [ugly.bot](https://ugly.bot) — the platform handles auth, infra (PostgreSQL, Qdrant, NATS, S3-compatible object storage), AI provider keys, and deployment. Your app talks to all of it through the project's dev tunnel and the per-app `UGLY_BOT_TOKEN`.
6
6
 
7
7
  ## What's included
8
8
 
9
9
  - **Server**: Express + WebSocket with type-safe RPC and Zod validation
10
10
  - **Client**: React + Vite with typed routing, lazy pages, animated transitions, popup management
11
11
  - **Database**: PostgreSQL (JSONB) via the data proxy, with full-text search (`search`) and vector search (Qdrant `vector`)
12
- - **Auth**: HttpOnly cookies + JWT, ugly.bot OAuth out of the box, extensible via `AuthProvider`
12
+ - **Auth**: HttpOnly cookies + JWT, ugly.bot OAuth out of the box, magic-link + Google when self-hosting sessions
13
13
  - **AI**: Text, image, embeddings, web search — all proxied through ugly.bot (no per-provider keys in your app)
14
- - **Realtime**: NATS pub/sub and document change subscriptions (`trackDoc` / `trackDocs`)
14
+ - **Realtime**: NATS pub/sub and live document subscriptions (`trackDoc` / `trackDocs`)
15
15
  - **Storage**: S3-compatible buckets with presigned uploads
16
- - **Workers & cron**: `setWorkers()` registers named async tasks with optional Zod input schemas and cron schedules
16
+ - **Workers & cron**: `setWorkers()` registers named async tasks with optional Zod schemas and cron schedules
17
17
  - **Localization**: Strings tables with critical-string SSR injection
18
18
  - **Experiments**: Deterministic A/B bucketing tied to event logging
19
19
  - **CLI**: `ugly-app` commands for dev, build, deploy, migrations, logs, AI, and auth
@@ -26,7 +26,7 @@ cd my-app
26
26
  npm run dev
27
27
  ```
28
28
 
29
- The scaffold gives you a working app at `http://localhost:4321` with todo CRUD, AI chat, file upload, auth demo, collab editing, and ~20 other test pages wired up.
29
+ The scaffold gives you a working app at `http://localhost:4321` with todo CRUD, AI chat, file upload, auth demo, collab editing, and ~20 other test pages.
30
30
 
31
31
  ---
32
32
 
@@ -43,6 +43,7 @@ import {
43
43
  type RequestHandlers,
44
44
  } from 'ugly-app';
45
45
  import { dbDefaults } from 'ugly-app/shared';
46
+ import { nanoid } from 'nanoid';
46
47
  import { requests, messages } from '../shared/api';
47
48
  import { collections } from '../shared/collections';
48
49
  import { pages } from '../shared/pages';
@@ -51,7 +52,7 @@ const app = createApp(
51
52
  { requests, messages },
52
53
  {
53
54
  createTodo: async (userId, { text }) => {
54
- const _id = crypto.randomUUID();
55
+ const _id = nanoid();
55
56
  await app.db.setDoc(collections.todo, { _id, userId, text, done: false, ...dbDefaults() });
56
57
  return { id: _id };
57
58
  },
@@ -69,24 +70,24 @@ await app.start(parseInt(process.env['PORT'] ?? '4321'));
69
70
 
70
71
  ```typescript
71
72
  function createApp<R extends AppRegistryBase, Defs extends CollectionDefRegistry>(
72
- registry: R, // { requests, messages }
73
+ registry: R, // { requests, messages, pages? }
73
74
  requests: Partial<RequestHandlers<R['requests']>>, // handler implementations
74
75
  appDefs: Defs, // collections from defineCollections()
75
76
  configure?: (c: AppConfigurator) => void,
76
77
  deleteHandlers?: DeleteHandlers<Defs>, // per-collection onDelete hooks
77
- ): App<CollectionMap<typeof BUILTIN_DEFS & Defs>>;
78
+ ): App<CollectionMap<typeof BUILTIN_DEFS & Defs>, RegistryPages<R>>;
78
79
  ```
79
80
 
80
- The returned `App` object has:
81
+ The returned `App`:
81
82
  - `start(port?)` — start the server (default port 3000; templates use 4321)
82
83
  - `db` — the `TypedDB` instance
83
84
  - `httpServer` — the underlying Node `http.Server`
84
85
  - `wss` — the main `WebSocketServer` (path set by `setWsPath`, default `/rpc`)
85
86
  - `dispatch(name, input, userId)` — invoke an RPC handler programmatically
86
- - `registerRoutes(fn)` — mount more Express routes after creation
87
- - `pushSend({ userId, page, query, ...notification })` — send a push notification whose click-through target is a route from this app's `pages` table. `page` is type-checked against route keys (when `pages` is provided on the createApp registry), `query` against that route's params. The framework builds the absolute URL and stamps project identity so the client can open the dock app.
87
+ - `registerRoutes(fn)` — mount additional Express routes after creation
88
+ - `pushSend({ userId, page, query, ...notification })` — send a push notification whose click-through target is a route in this app's `pages` table. `page` is type-checked against route keys (when `pages` is on the createApp registry), `query` against that route's params.
88
89
 
89
- Framework-managed background services start automatically: schema drift check, NATS connection + KV buckets (`TTS`, `RATELIMIT`), data-proxy connection, event counter flush, TTL cleanup for log tables, console / error capture, and ugly.bot log forwarding.
90
+ Framework-managed background services start automatically: schema drift check, NATS connection + KV buckets (`TTS`, `RATELIMIT`), data-proxy connection, event counter flush, TTL cleanup for log tables, console/error capture, and ugly.bot log forwarding.
90
91
 
91
92
  ### `AppConfigurator`
92
93
 
@@ -94,23 +95,23 @@ Passed to the optional fourth argument of `createApp`. Every method is optional.
94
95
 
95
96
  | Method | Description |
96
97
  |--------|-------------|
97
- | `setPages({ pages, renderPage?, clientDistPath? })` | Mount the SPA. In dev, runs Vite in middleware mode; in prod, serves `dist/client`. Provide `renderPage` for SSR on pages with `ssr: true`. |
98
- | `setUserHelper(helper)` | Customize how the framework reads / writes the `user` collection during WebSocket auth (default looks up by id in a generic `user` collection). |
99
- | `setOnUserCreate(handler)` | Called on first login with `(userId, { email?, phone? }, db)` — your chance to create the user record. |
100
- | `setAuth(provider)` | Replace the default ugly.bot OAuth provider. Must implement `verify(code)` and `authUrl(origin)`. |
98
+ | `setPages({ pages, renderPage?, clientDistPath? })` | Mount the SPA. In dev runs Vite in middleware mode; in prod serves `dist/client`. Provide `renderPage` to SSR routes with `ssr: true`. |
99
+ | `setUserHelper(helper)` | Customize how the framework reads/writes the `user` collection during WebSocket auth. |
100
+ | `setOnUserCreate(handler)` | Called on first login with `(userId, { email?, phone? }, db)`. |
101
+ | `setAuth(provider)` | Replace the default auth provider (must implement `verify(code)` and `authUrl(origin)`). |
101
102
  | `setOnSocketMessage(handler)` | Single raw-WebSocket message handler. Return `true` to consume, `false` to fall through. |
102
103
  | `addSocketMessageHandler(handler)` | Append to the handler chain; first to return `true` wins. |
103
104
  | `setWsPath(path)` | Override the WebSocket path (default `/rpc`). |
104
105
  | `setOnWsAuth(handler)` | `(ws, userId, req) => void` — fires after a socket session authenticates. |
105
106
  | `setOnAfterStart(handler)` | `(db) => Promise<void>` — called once after data-proxy + NATS are ready. |
106
- | `setOnMinuteTick(fn)` / `setOnHourlyTick(fn)` | Framework-managed periodic callbacks. Only fire when `CLOCK_ENABLED=true`. |
107
+ | `setOnMinuteTick(fn)` / `setOnHourlyTick(fn)` | Periodic callbacks. Only fire when `CLOCK_ENABLED=true`. |
107
108
  | `setHealthHandler(fn)` | Override the default `GET /health` response. |
108
109
  | `setExperiments(experiments)` | Register `Experiment` definitions for `initSession` / `captureEvent` bucketing. |
109
- | `setIsAdmin(fn)` | `(userId, db) => boolean \| Promise<boolean>` — gate for admin-only framework requests (`adminCreateTestUser` / `list` / `delete`). Defaults to matching `MAINTAIN_BOT_USER_ID`. |
110
- | `setOnEmail(handler)` | Handle inbound emails routed to `{domain}@ugly.bot` (called via internal HTTP). |
110
+ | `setIsAdmin(fn)` | `(userId, db) => boolean \| Promise<boolean>` — gate for admin-only framework requests. Defaults to matching `MAINTAIN_BOT_USER_ID`. |
111
+ | `setOnEmail(handler)` | Handle inbound emails routed to `{domain}@ugly.bot`. |
111
112
  | `setCronTasks(tasks, handlers)` | Legacy cron-only registry. Prefer `setWorkers()`. |
112
113
  | `setWorkers(workers, handlers)` | Register named async tasks with optional Zod input schema and cron schedule. Powers `/_workers/manifest`, `POST /_workers/run`, and the cron orchestrator. |
113
- | `setStrings(config)` | Localization config — framework injects language + critical strings into SSR HTML and exposes `resolveLanguage` / `getCriticalStrings`. |
114
+ | `setStrings(config)` | Localization config — framework injects language + critical strings into SSR HTML. |
114
115
  | `registerRoutes(fn)` | Mount custom Express routes. |
115
116
  | `setWorkerQueue(queue)` | Register a `WorkerQueue` with `start()` / `stop()` for app lifecycle management. |
116
117
 
@@ -130,7 +131,7 @@ Inside a handler, access state via captured imports — `app.db`, `storage`, `pg
130
131
 
131
132
  ### Built-in framework requests
132
133
 
133
- `createApp` automatically registers several framework handlers, accessible from any client via the normal RPC pipeline:
134
+ `createApp` automatically registers several framework handlers, reachable from any client via the normal RPC pipeline:
134
135
 
135
136
  | Name | Purpose |
136
137
  |------|---------|
@@ -140,10 +141,10 @@ Inside a handler, access state via captured imports — `app.db`, `storage`, `pg
140
141
  | `textGen` / `imageGen` | AI proxies — server-validated, billed through ugly.bot. |
141
142
  | `kagiSearch` / `kagiSummarize` / `kagiEnrichWeb` / `kagiEnrichNews` | Web search via ugly.bot. |
142
143
  | `uploadUrl` | Issues a presigned PUT for the `temp` bucket. |
143
- | `shareLink` | Mint a `https://ugly.bot/l/<code>` short link with OG metadata (see the "sharing links" rule in `CLAUDE.md`). |
144
- | `feedbackReportCreateNoAuth` / `errorLogCaptureNoAuth` | Same-origin, public endpoints used by the built-in browser telemetry (feedback + client-side error capture) to write into the project's own Postgres. |
144
+ | `shareLink` | Mint a `https://ugly.bot/l/<code>` short link with OpenGraph metadata. |
145
+ | `feedbackReportCreateNoAuth` / `errorLogCaptureNoAuth` | Same-origin, public endpoints used by the built-in browser telemetry. |
145
146
  | `submitFeedbackBot` | Forwards `db.captureFeedback` writes for the maintain-bot persona. |
146
- | `feedbackReportResolve` | Admin-only — resolve or decline a feedback report (Workers-only via D1 telemetry). |
147
+ | `feedbackReportResolve` | Admin-only — resolve or decline a feedback report. |
147
148
  | `adminCreateTestUser` / `adminListTestUsers` / `adminDeleteTestUser` | Admin-only — synthetic-user management. Gated by `setIsAdmin()` (or `MAINTAIN_BOT_USER_ID`). |
148
149
 
149
150
  App-provided handlers with the same name override the framework's defaults.
@@ -160,7 +161,7 @@ App-provided handlers with the same name override the framework's defaults.
160
161
  import { authReq, defineRequests, req, z } from 'ugly-app/shared';
161
162
 
162
163
  export const requests = defineRequests({
163
- // Public — handler signature: (userId: string | null, input) => Promise<output>
164
+ // Public — handler: (userId: string | null, input) => Promise<output>
164
165
  getPublicData: req({
165
166
  input: z.object({ id: z.string() }),
166
167
  output: z.object({ data: z.string() }),
@@ -172,7 +173,7 @@ export const requests = defineRequests({
172
173
  output: z.object({ userId: z.string(), email: z.string().optional() }),
173
174
  }),
174
175
 
175
- // With per-endpoint rate limiting (enforced before handler runs)
176
+ // Per-endpoint rate limiting (enforced before handler runs)
176
177
  submitFeedback: authReq({
177
178
  input: z.object({ type: z.enum(['bug', 'design', 'feature']), message: z.string() }),
178
179
  output: z.object({ id: z.string() }),
@@ -213,9 +214,9 @@ export const collections = defineCollections({
213
214
  - `search?: { fields, language? }` — PostgreSQL full-text search columns.
214
215
  - `vector?: { dimensions, source }` — Qdrant vector index over the named JSONB path.
215
216
 
216
- All documents extend `DBObject`: `{ _id, version, created, updated }`. Use `dbDefaults()` to stamp the latter three on inserts.
217
+ All documents extend `DBObject`: `{ _id, version, created, updated }`. Use `dbDefaults()` to stamp `version`/`created`/`updated` on inserts, and `nanoid()` for `_id` — never `crypto.randomUUID()`, `Date.now()`, or a counter.
217
218
 
218
- After schema changes, run `npm run db:schema-gen` and then `npm run db:migrate`. The app refuses to start when drift is detected (set `SCHEMA_CHECK_SKIP=true` only as a last resort).
219
+ After schema changes, run `npm run db:schema-gen` then `npm run db:migrate`. The app refuses to start when drift is detected (set `SCHEMA_CHECK_SKIP=true` only as a last resort).
219
220
 
220
221
  ### Pages (`shared/pages.ts`)
221
222
 
@@ -232,8 +233,10 @@ export type AppPages = typeof pages;
232
233
  ```
233
234
 
234
235
  - `:param` matches a single path segment; `*param` is greedy (captures slashes).
235
- - The generic on `definePage<Params>()` is **phantom** — never set at runtime, used for client-side type inference.
236
- - `auth` defaults to `true`. `ssr` defaults to `false`.
236
+ - The generic on `definePage<Params>()` is **phantom** — never set at runtime, used purely for client-side type inference.
237
+ - `auth` defaults to `true`. `ssr` defaults to `false`. `{ auth: true, ssr: true }` is dropped to `ssr: false` with a warning — SSR output is served from a shared edge cache and must not depend on the viewer.
238
+ - `cacheQuery?: string[]` — query params that participate in the SSR edge-cache key. Unlisted params bypass the cache rather than poison it (e.g. `cacheQuery: ['q']` on a search page).
239
+ - `ssrCacheTimeout?: number` — override the default 1-year edge TTL for pages whose content drifts between deploys.
237
240
  - Query-string params are declared in `Params` but never appear in the path template.
238
241
 
239
242
  ---
@@ -267,12 +270,12 @@ bootstrapApp({
267
270
  | `messages?` | Your `MessageRegistry` (merged with framework messages). |
268
271
  | `RouterProvider` | The `RouterProvider` returned from `createRouter()`. |
269
272
  | `render` | Callback returning the app's UI tree (typically `<RouterView />`). |
270
- | `root?` | Root element / selector (default `'#root'`). |
271
- | `fallback?` | UI for unmatched routes (default: tiny "404"). |
273
+ | `root?` | Root element / CSS selector (default `'#root'`). |
274
+ | `fallback?` | UI for unmatched routes (default: a tiny 404). |
272
275
  | `socketUrl?` | Override the WebSocket path (default `/rpc`). |
273
- | `strings?` | Localization config — when present, wraps the tree with `<StringsProvider>`. |
276
+ | `strings?` | Localization config — wraps the tree with `<StringsProvider>` when present. |
274
277
  | `keyboard?: false` | Disable the framework `<KeyboardProvider>` wrapper. |
275
- | `silentSso?` | Apex-domain apps (ugly.chat, ugly.press, …) that use ugly.bot as their auth authority but don't share its cookie. When true, a logged-out boot attempts a non-blocking top-level SSO redirect to adopt an existing ugly.bot session. Leave unset for `*.ugly.bot` subdomains and Mode B (self-auth) apps. |
278
+ | `silentSso?` | Apex-domain apps (ugly.chat, ugly.press, …) that use ugly.bot as their auth authority but don't share its cookie. When true, a logged-out boot attempts a non-blocking top-level SSO redirect to adopt an existing ugly.bot session. Leave unset for `*.ugly.bot` subdomains and Mode B apps. |
276
279
 
277
280
  `bootstrapApp` reads `window.__AUTH_TOKEN__` (injected by the server after cookie verification). If absent, it renders unauthenticated immediately — the router's per-route auth guard surfaces the framework's `<AuthRoot>` (Mode A → `<LoginPopup>`; Mode B → magic-link form + optional Google button) when a user opens a protected route. If the token is present, it connects the socket, mounts `<AppProvider>`, and renders.
278
281
 
@@ -288,18 +291,36 @@ import { createRouter } from 'ugly-app/client';
288
291
  import { pages } from '../shared/pages';
289
292
  import { allPages } from './allPages';
290
293
 
291
- export const { RouterProvider, RouterView, useRouter } = createRouter({
294
+ export const { RouterProvider, RouterView, useRouter, Link, setAllPages } = createRouter({
292
295
  pages,
293
296
  allPages,
294
297
  });
295
298
  ```
296
299
 
300
+ Config: `pages` (required), `allPages?` (lazy route → element map; may be registered later via `setAllPages`), `ssrPages?` (a `Partial<{ [K]: ComponentType<Params> }>` of statically-imported components for `ssr: true` routes — used by both the Worker's `renderToString` and the client's first hydration render).
301
+
297
302
  `createRouter` returns:
298
303
 
299
- - **`RouterProvider`** — props: `children`, `fallback?`, `isAuthenticated?`. Manages route state, browser history, and the popup layer. When `isAuthenticated()` returns false and the current route declares `auth: true`, the framework's `<AuthRoot>` renders in place of the page synchronously — apps cannot override this fallback. (Silent SSO now happens in `bootstrapApp`, not in the router — the previous first-paint-blocking `<AutoLoginGate>` iframe was removed so logged-out landing pages paint immediately.)
304
+ - **`RouterProvider`** — props: `children`, `fallback?`, `isAuthenticated?`, `initialUrl?` (`{ pathname, search }`; required for SSR, used on the client during hydration so the first render matches the server's). Manages route state, browser history, and the popup layer. When `isAuthenticated()` returns false and the current route declares `auth: true`, the framework's `<AuthRoot>` renders synchronously in place of the page — apps cannot override this fallback.
300
305
  - **`RouterView`** — renders the active page with animated transitions. Props: `durationMs?`, `easing?`, `transitionComponent?` (replaces `ViewFlipper`), `renderPage?` (sync alternative to `allPages` loaders, called with `RouterStateRaw`).
301
306
  - **`useRouter()`** — returns the router context (see below).
302
307
  - **`Link`** — typed SPA link bound to this router's pages. Renders a real `<a>` (right-click / cmd-click / SEO keep working) but intercepts a plain left-click and routes through `push` / `replace`. Props: `to`, `params` (both type-checked against `pages`), `replace?`, `children`, plus the usual anchor attrs.
308
+ - **`setAllPages(map)`** — register the lazy `PageMap<Pages>` after construction (typically from the browser entry). Lets the Worker bundle skip every lazy page's import graph while the client still gets code-split routes.
309
+
310
+ ### `definePage` — page metadata
311
+
312
+ Re-exported from `ugly-app/shared`. Runtime shape:
313
+
314
+ ```typescript
315
+ interface PageMeta {
316
+ auth: boolean; // default: true
317
+ ssr: boolean; // default: false
318
+ cacheQuery?: string[]; // edge-cache key participants
319
+ ssrCacheTimeout?: number; // seconds; default 31_536_000 (1yr)
320
+ }
321
+ ```
322
+
323
+ The `<Params>` generic on `definePage<Params>()` is a phantom type — used only by TypeScript for route-param inference in `useRouter()`, `Link`, and `pushSend`.
303
324
 
304
325
  ### Page map — `lazyPage` / `lazyPageLoader`
305
326
 
@@ -319,6 +340,8 @@ export const allPages = {
319
340
  - **`lazyPage(factory)`** — lazy-imports a default-exported `React.ComponentType<Params>`. The page receives route params as props.
320
341
  - **`lazyPageLoader(factory)`** — lazy-imports an async loader `(params) => Promise<ReactElement>`. Use when a route needs data fetching before render. The loader file is the chunk boundary, so it can statically import its page component.
321
342
 
343
+ Both wrap the `import()` in a one-shot reload guard: on a stale-deploy chunk 404 the framework reloads the page once (guarded by sessionStorage) so cached `index.html` picks up the new chunk hashes instead of wedging the SPA.
344
+
322
345
  Example loader:
323
346
 
324
347
  ```typescript
@@ -352,11 +375,11 @@ current.routeName; // typed union of all route keys
352
375
  current.params; // typed params for the current route
353
376
  ```
354
377
 
355
- All route names and params are fully typed against `pages`. Internally `push` / `replace` are no-ops when `buildUrl()` produces a URL that doesn't match a registered route (and emit a `console.error`).
378
+ All route names and params are fully typed against `pages`. Internally `push` / `replace` log a `console.error` (no-op) when `buildUrl()` produces a URL that doesn't match a registered route.
356
379
 
357
380
  ### Popups — `openPopup()`
358
381
 
359
- Always use `useRouter().openPopup()` for modals, sheets, and menus. The router owns the popup layer, manages the spring animation, and stacks popups z-index-correctly.
382
+ Always use `useRouter().openPopup()` for modals, sheets, and menus. The router owns the popup layer, drives the spring animation, and stacks popups z-index-correctly.
360
383
 
361
384
  ```tsx
362
385
  const { openPopup } = useRouter();
@@ -368,7 +391,7 @@ const handle = openPopup(<MyContent />, {
368
391
  containerStyle: { /* CSS for the content wrapper */ },
369
392
  backgroundStyle: { /* CSS for the backdrop */ },
370
393
  animConfig: { duration: 300, easing: myEasingFn },
371
- renderLayer: (props) => <CustomLayer {...props} />, // fully replace the layer renderer
394
+ renderLayer: (props) => <CustomLayer {...props} />, // fully replace the layer
372
395
  });
373
396
 
374
397
  handle.hide(); // dismiss programmatically
@@ -383,7 +406,7 @@ Modes:
383
406
 
384
407
  ### `AppProvider` & `useApp()`
385
408
 
386
- `bootstrapApp` mounts `<AppProvider>` automatically after socket connect. Use `useApp()` inside any page to access the active user and socket.
409
+ `bootstrapApp` mounts `<AppProvider>` automatically after the socket connects. Use `useApp()` inside any page to reach the active user and socket:
387
410
 
388
411
  ```typescript
389
412
  const {
@@ -394,21 +417,20 @@ const {
394
417
  showPopup, // legacy popup API (prefer useRouter().openPopup)
395
418
  hidePopup,
396
419
  hideAllPopups,
397
- runAsync, // runAsync(label, async () => { ... }, options?) — shows loading overlay while pending
420
+ runAsync, // runAsync(label, async () => {...}, options?) — shows loading overlay while pending
398
421
  splashDone, // mark a splash-screen step complete
399
- localizer, // (key, params?) => string — alias for useLocalizer
422
+ localizer, // (key, params?) => string
400
423
  } = useApp();
401
424
  ```
402
425
 
403
- `useApp` is generic in `TAsyncOptions` so apps can pass an option type through to a custom `loadingOverlay` element. `useAppOptional()` returns `null` outside the provider; `useLocalizer()` returns a localizer that prefers `<StringsProvider>` data, falls back to the `AppProvider` localizer prop, and finally to identity.
426
+ `useApp` is generic in `TAsyncOptions` so apps can pass an option type through to a custom `loadingOverlay` element. `useAppOptional()` returns `null` outside the provider; `useLocalizer()` prefers `<StringsProvider>` data, falls back to the `AppProvider` localizer prop, and finally to identity.
404
427
 
405
428
  ### `Link` component
406
429
 
407
- Prefer the typed `Link` returned by `createRouter()` — no `router` prop, `to` / `params` are checked against your pages, and it uses the enclosing `<RouterProvider>` context automatically.
430
+ Prefer the typed `Link` returned by `createRouter()` — no `router` prop, `to` / `params` checked against your pages, uses the enclosing `<RouterProvider>` context automatically.
408
431
 
409
432
  ```tsx
410
433
  // Typed Link — from your `client/router.ts`
411
- const { Link } = createRouter({ pages, allPages });
412
434
  <Link to="user/:userId" params={{ userId: '123' }}>View profile</Link>
413
435
  ```
414
436
 
@@ -425,7 +447,7 @@ Never use a bare `<a href="/route">` for internal navigation — it triggers a f
425
447
  | `request(name, input)` | Invoke a typed RPC handler. |
426
448
  | `getDoc(collection, id)` | Server-mediated doc fetch. |
427
449
  | `getDocs(collection, filter?, opts?)` | Filtered query. |
428
- | `trackDoc(collection, id, cb)` | Live subscription — returns unsubscribe. |
450
+ | `trackDoc(collection, id, cb)` | Live subscription — returns unsubscribe. Sends an initial snapshot then relays mutations. |
429
451
  | `trackDocs(collection, params, cb)` | Live filtered subscription. |
430
452
  | `uploadFile(file, key)` | Presigned upload to the `temp` bucket. |
431
453
  | `connectionState` | `'connecting' \| 'connected' \| 'reconnecting' \| 'disconnected' \| 'idle-disconnected'`. |
@@ -444,22 +466,22 @@ Two modes, picked from the `auth` block in the project's `.uglyapp` config:
444
466
  - **Mode A — `mode: 'uglybot'`** (default when no `auth` block is present). Auth is delegated to ugly.bot OAuth. AI / email / push proxies bill the end user's ugly.bot credits.
445
467
  - **Mode B — `mode: 'self'`**. The app issues its own sessions via magic-link email and/or Google OAuth. AI / email / push proxies bill the developer's ugly.bot account using the project's `AI_PROXY_TOKEN`.
446
468
 
447
- `window.__UGLY_APP_AUTH_MODE__` is injected into every page so client code (incl. `<AuthRoot>` and the router's `<AutoLoginGate>`) can branch correctly.
469
+ `window.__UGLY_APP_AUTH_MODE__` is injected into every page so client code (`<AuthRoot>`, magic-link form, silent-SSO iframe) can branch correctly.
448
470
 
449
471
  ### Mode A — ugly.bot OAuth (default)
450
472
 
451
473
  1. Every page request: the server checks the `auth_token` cookie. If it verifies through `${UGLY_BOT_URL}/verify`, the server injects `window.__AUTH_TOKEN__` into the HTML.
452
474
  2. Client boot: if `__AUTH_TOKEN__` is present, `bootstrapApp` opens the WebSocket with the token. Otherwise it renders logged-out immediately (no first-paint block).
453
- 3. Background account-sync (always): `bootstrapApp` opens a hidden iframe to `${UGLY_BOT_URL}/oauth/silent` on every load. If it returns a one-time code, the client POSTs `/auth/verify` to refresh the cookie. If the refreshed account's `userId` differs from the current session, the client calls `/auth/logout` and reloads onto the live account (guarded once per from→to pair to prevent loops).
454
- 4. Apex apps (`silentSso: true` in `bootstrapApp`): if the hidden iframe can't read ugly.bot's cookie (Safari / 3p-cookie blocking), a **top-level** redirect to `/oauth/silent` (first-party, bypasses 3p blocking) runs instead — one-shot, marked done so it can't loop. Skipped for accounts already confirmed live.
455
- 5. Manual login: on protected routes, the per-route auth guard surfaces `<AuthRoot>` → `<LoginPopup>`, which opens `${UGLY_BOT_URL}/oauth` in a popup. On completion, the platform redirects back with either a `postMessage` code or `?ugly_oauth_code=…`; `bootstrapApp` redeems either at the top of boot.
475
+ 3. Background account-sync (always): `bootstrapApp` opens a hidden iframe to `${UGLY_BOT_URL}/oauth/silent`. If it returns a one-time code, the client POSTs `/auth/verify` to refresh the cookie. If the refreshed account's `userId` differs from the current session, the client calls `/auth/logout` and reloads onto the live account (guarded once per from→to pair to prevent loops).
476
+ 4. Apex apps (`silentSso: true`): if the hidden iframe can't read ugly.bot's cookie (Safari / third-party-cookie blocking), a **top-level** redirect to `/oauth/silent` (first-party, bypasses 3p blocking) runs instead — one-shot, marked done so it can't loop.
477
+ 5. Manual login: on protected routes, the per-route auth guard surfaces `<AuthRoot>` → `<LoginPopup>`, which opens `${UGLY_BOT_URL}/oauth` in a popup. On completion, the platform redirects back with either a `postMessage` code or `?ugly_oauth_code=…`.
456
478
 
457
479
  ### Mode B — Self-issued sessions
458
480
 
459
481
  When `.uglyapp` sets `auth.mode: 'self'`, `buildAuth()` wires the magic-link provider as primary; if `providers.google.clientId` is configured it adds Google as an extra provider on the same router.
460
482
 
461
483
  - `<AuthRoot>` renders `<MagicLinkForm>` (plus the Google button when configured) instead of `<LoginPopup>`.
462
- - Background ugly.bot silent SSO is a no-op — the ugly.bot iframe would either silently fail or set a cookie that won't verify against the local session.
484
+ - Background ugly.bot silent SSO is a no-op — the ugly.bot iframe would either silently fail or set a cookie that wouldn't verify against the local session.
463
485
  - `POST /auth/magic-link/request` accepts an email, mints a one-time token (default 15 min lifetime, configurable via `auth.magicLinkExpiresMin`), and emails a link.
464
486
  - `GET /auth/magic-link/verify?token=…` validates the token, calls `onUserCreate` on first login, sets the session cookie, and redirects.
465
487
  - Google login lives at `GET /auth/google/url` + `POST /auth/google/callback` when enabled.
@@ -501,7 +523,7 @@ configurator.setAuth({
501
523
 
502
524
  ## Database — `TypedDB`
503
525
 
504
- Access via `app.db` or via `import { app } from './your-app-module'`. All methods accept a `CollectionDef` (from `defineCollections`) or a plain collection name string.
526
+ Access via `app.db`. All methods accept a `CollectionDef` (from `defineCollections`) or a plain collection name string.
505
527
 
506
528
  ### Writing
507
529
 
@@ -572,9 +594,10 @@ const k = db.cacheKey('prefix', id);
572
594
 
573
595
  ```typescript
574
596
  import { createUserHelper, dbDefaults } from 'ugly-app';
597
+ import { nanoid } from 'nanoid';
575
598
 
576
- const newDoc = { _id: crypto.randomUUID(), ...dbDefaults(), title: 'Hi' };
577
- // ^^^^^^^^^^^^^^^ { version: 1, created, updated }
599
+ const newDoc = { _id: nanoid(), ...dbDefaults(), title: 'Hi' };
600
+ // ^^^^^^^^^^^^^^^ { version: 1, created, updated }
578
601
 
579
602
  const userHelper = createUserHelper<User>(collections.user);
580
603
  const user = await userHelper.get(db, userId);
@@ -594,7 +617,7 @@ Imports available from `ugly-app`:
594
617
 
595
618
  ## AI
596
619
 
597
- AI calls are proxied through ugly.bot — your app never holds an AI provider key. Pass `UGLY_BOT_TOKEN` in the environment and the framework handles routing, balance tracking, retries, and per-user billing.
620
+ AI calls are proxied through ugly.bot — your app never holds an AI provider key. Set `UGLY_BOT_TOKEN` in the environment and the framework handles routing, balance tracking, retries, and per-user billing.
598
621
 
599
622
  ### Server-side text generation
600
623
 
@@ -772,6 +795,28 @@ Bucketing is deterministic: `hash(experimentId + userId)` (or `sessionId` for un
772
795
 
773
796
  ---
774
797
 
798
+ ## Sharing links
799
+
800
+ Never hand-build outbound URLs. Mint through the central helper — the returned `https://ugly.bot/l/<code>` short link deep-links into native + dock apps, renders an OpenGraph card, and can optionally gate humans behind login:
801
+
802
+ ```typescript
803
+ import { shareLink } from 'ugly-app'; // server
804
+ const url = await shareLink({
805
+ target: `/article/${id}`,
806
+ og: { title, description, image },
807
+ requireAuth: false,
808
+ });
809
+ ```
810
+
811
+ ```typescript
812
+ import { shareLink } from 'ugly-app/client'; // client
813
+ const url = await shareLink({ target: location.pathname, og: { title } });
814
+ ```
815
+
816
+ Do **not** route unsubscribe or other single-use, token-bearing URLs through `shareLink()` — those must remain direct app URLs.
817
+
818
+ ---
819
+
775
820
  ## Built-in endpoints
776
821
 
777
822
  | Endpoint | Description |
@@ -798,14 +843,14 @@ Bucketing is deterministic: `hash(experimentId + userId)` (or `sessionId` for un
798
843
  |-------------|-------------|
799
844
  | `ugly-app` | Server: `createApp`, `TypedDB`, auth, AI clients, NATS, storage, email, push, workers. |
800
845
  | `ugly-app/shared` | Cross-tier: `defineRequests`, `defineCollections`, `definePage`, `defineWorkers`, Zod, experiments, time constants. |
801
- | `ugly-app/client` | React: `bootstrapApp`, `createRouter`, `lazyPage`, `AppProvider`, components, animations, audio, AI helpers. |
846
+ | `ugly-app/client` | React: `bootstrapApp`, `createRouter`, `lazyPage`, `lazyPageLoader`, `AppProvider`, components, animations, audio, AI helpers. |
802
847
  | `ugly-app/conversation/{shared,server,client}` | AI chat sessions with persisted history. |
803
848
  | `ugly-app/collab/{server,client}` | Yjs-based collaborative editing. |
804
849
  | `ugly-app/markdown/{shared,client}` | Markdown rendering + editor. |
805
850
  | `ugly-app/webrtc`, `ugly-app/webrtc/server` | WebRTC video rooms. |
806
851
  | `ugly-app/three/{server,client}` | Three.js scene helpers. |
807
852
  | `ugly-app/worker` | Worker queue runtime. |
808
- | `ugly-app/playwright` | Test utilities. |
853
+ | `ugly-app/playwright` | Test utilities (`inspectWindow`, `expectClean`, `simulateKeyboard`, `waitForApp`). |
809
854
  | `ugly-app/vite`, `ugly-app/eslint` | Build-tool plugins. |
810
855
 
811
856
  ---
@@ -825,7 +870,7 @@ Bucketing is deterministic: `hash(experimentId + userId)` (or `sessionId` for un
825
870
  | `NATS_PREFIX` / `COMPOSE_PROJECT_NAME` | NATS subject prefix for per-env isolation. |
826
871
  | `CLOCK_ENABLED` | `true` to enable `setOnMinuteTick` / `setOnHourlyTick`. |
827
872
  | `CRON_SECRET` | Bearer secret for `POST /api/_cron/:taskName` and prod `POST /_workers/run`. |
828
- | `MAINTAIN_BOT_USER_ID` | User id allowed to access admin-only handlers. |
873
+ | `MAINTAIN_BOT_USER_ID` | User id allowed to access admin-only handlers (fallback when `setIsAdmin` unset). |
829
874
  | `INTERNAL_EMAIL_SECRET` | Shared secret for `/internal/email-callback`. |
830
875
  | `JWT_SECRET` | Required when using `getRequestUser()` for the per-project session cookie. |
831
876
  | `APP_DOMAIN` | App domain; combined with `NATS_PREFIX` for `getRequestUser()` validation. |
@@ -856,9 +901,9 @@ Browser-visible variables must be prefixed `VITE_` and consumed via `import.meta
856
901
  | `ugly-app error:dev` / `error:prod` | Query error logs (your tunnel / production). |
857
902
  | `ugly-app perf:dev` / `perf:prod` | Query performance metrics. |
858
903
  | `ugly-app feedback:dev` / `feedback:prod` | Query user feedback. |
859
- | `ugly-app feedback:submit` / `feedback:resolve` | Manage feedback (run with `--help` for flags). |
904
+ | `ugly-app feedback:submit` / `feedback:resolve` | Manage feedback (`--help` for flags). |
860
905
 
861
- Inside a scaffolded project, the same commands are available via `npm run …` scripts — see `templates/CLAUDE.md` for the full list.
906
+ Inside a scaffolded project, the same commands are available via `npm run …` scripts.
862
907
 
863
908
  ---
864
909
 
@@ -1 +1 @@
1
- {"version":3,"file":"runAgent.d.ts","sourceRoot":"","sources":["../../../src/agent/client/runAgent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runAgent.d.ts","sourceRoot":"","sources":["../../../src/agent/client/runAgent.ts"],"names":[],"mappings":"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"}
@@ -44,8 +44,9 @@ export function runAgent(config) {
44
44
  try {
45
45
  unsub = config.socket.trackDocs(AGENT_STREAM_COLLECTION, { keys: { [AGENT_STREAM_KEY_FIELD]: streamId } }, () => { }, (raw) => {
46
46
  const env = raw;
47
- const frame = env.frame ?? env;
48
- if (!frame || typeof (frame).type !== 'string')
47
+ const frame = env.frame ??
48
+ env;
49
+ if (!frame || typeof frame.type !== 'string')
49
50
  return;
50
51
  config.onFrame?.(frame);
51
52
  if (frame.type === 'msg:delta')
@@ -118,7 +119,10 @@ export function runAgent(config) {
118
119
  }, { signal: aborter.signal }));
119
120
  return resp;
120
121
  }
121
- const resp = (await config.socket.request(requestName, turnInput, { timeoutMs: null, signal: aborter.signal }));
122
+ const resp = (await config.socket.request(requestName, turnInput, {
123
+ timeoutMs: null,
124
+ signal: aborter.signal,
125
+ }));
122
126
  return resp;
123
127
  }
124
128
  catch (err) {
@@ -129,7 +133,9 @@ export function runAgent(config) {
129
133
  await sleep(300 * 2 ** (attempt - 1));
130
134
  }
131
135
  }
132
- throw lastErr instanceof Error ? lastErr : new Error('agent turn request failed');
136
+ throw lastErr instanceof Error
137
+ ? lastErr
138
+ : new Error('agent turn request failed');
133
139
  }
134
140
  async function runTool(use) {
135
141
  try {
@@ -186,10 +192,16 @@ export function runAgent(config) {
186
192
  const prior = Array.isArray(last.content)
187
193
  ? last.content
188
194
  : [{ type: 'text', text: String(last.content) }];
189
- messages = [...messages.slice(0, -1), { role: 'user', content: [...prior, { type: 'text', text }] }];
195
+ messages = [
196
+ ...messages.slice(0, -1),
197
+ { role: 'user', content: [...prior, { type: 'text', text }] },
198
+ ];
190
199
  }
191
200
  else {
192
- messages = [...messages, { role: 'user', content: [{ type: 'text', text }] }];
201
+ messages = [
202
+ ...messages,
203
+ { role: 'user', content: [{ type: 'text', text }] },
204
+ ];
193
205
  }
194
206
  config.onEvent?.({ type: 'steer', text });
195
207
  return true;
@@ -217,7 +229,9 @@ export function runAgent(config) {
217
229
  const cont = await config.onSettle();
218
230
  if (cont && !aborter.signal.aborted) {
219
231
  verifyGrace += VERIFY_GRACE_STEP;
220
- const content = typeof cont === 'string' ? [{ type: 'text', text: cont }] : cont;
232
+ const content = typeof cont === 'string'
233
+ ? [{ type: 'text', text: cont }]
234
+ : cont;
221
235
  messages = [...messages, { role: 'user', content }];
222
236
  await persist('running');
223
237
  continue;
@@ -244,9 +258,16 @@ export function runAgent(config) {
244
258
  // the model reacts to it THIS turn instead of after the whole turn ends.
245
259
  drainSteers();
246
260
  const msgId = mintId();
247
- config.onEvent?.({ type: 'turn_start', msgId, turnIndex: totals.turns });
261
+ config.onEvent?.({
262
+ type: 'turn_start',
263
+ msgId,
264
+ turnIndex: totals.turns,
265
+ });
248
266
  const resp = await requestTurn(msgId);
249
- const assistantTurn = { role: 'assistant', content: resp.content };
267
+ const assistantTurn = {
268
+ role: 'assistant',
269
+ content: resp.content,
270
+ };
250
271
  messages = [...messages, assistantTurn];
251
272
  if (resp.telemetry) {
252
273
  totals = accrueTelemetry(totals, {
@@ -271,7 +292,10 @@ export function runAgent(config) {
271
292
  });
272
293
  await persist(resp.stopReason === 'tool_use' ? 'running' : 'idle');
273
294
  if (resp.stopReason === 'error') {
274
- config.onEvent?.({ type: 'error', message: resp.error ?? 'agent turn error' });
295
+ config.onEvent?.({
296
+ type: 'error',
297
+ message: resp.error ?? 'agent turn error',
298
+ });
275
299
  return;
276
300
  }
277
301
  if (resp.stopReason !== 'tool_use') {
@@ -287,7 +311,9 @@ export function runAgent(config) {
287
311
  if (config.onSettle && !aborter.signal.aborted) {
288
312
  const cont = await config.onSettle();
289
313
  if (cont && !aborter.signal.aborted) {
290
- const content = typeof cont === 'string' ? [{ type: 'text', text: cont }] : cont;
314
+ const content = typeof cont === 'string'
315
+ ? [{ type: 'text', text: cont }]
316
+ : cont;
291
317
  messages = [...messages, { role: 'user', content }];
292
318
  await persist('running');
293
319
  continue;
@@ -310,7 +336,10 @@ export function runAgent(config) {
310
336
  await persist('idle');
311
337
  return;
312
338
  }
313
- config.onEvent?.({ type: 'error', message: err instanceof Error ? err.message : String(err) });
339
+ config.onEvent?.({
340
+ type: 'error',
341
+ message: err instanceof Error ? err.message : String(err),
342
+ });
314
343
  await persist('error');
315
344
  }
316
345
  finally {