@brokr/sdk 1.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (298) hide show
  1. package/dist/account.js +34 -0
  2. package/dist/account.mjs +7 -0
  3. package/dist/auth.js +628 -114
  4. package/dist/auth.mjs +611 -111
  5. package/dist/chat.js +34 -0
  6. package/dist/chat.mjs +7 -0
  7. package/dist/events.js +64 -0
  8. package/dist/events.mjs +37 -0
  9. package/dist/feature.js +6304 -0
  10. package/dist/feature.mjs +6278 -0
  11. package/dist/files.js +428 -0
  12. package/dist/files.mjs +408 -0
  13. package/dist/index.d.ts +18 -2
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +4069 -454
  16. package/dist/index.mjs +4040 -448
  17. package/dist/logs.js +148 -0
  18. package/dist/logs.mjs +124 -0
  19. package/dist/management.js +14 -13
  20. package/dist/management.mjs +14 -13
  21. package/dist/next.js +2725 -0
  22. package/dist/next.mjs +2710 -0
  23. package/dist/notifications.js +140 -0
  24. package/dist/notifications.mjs +110 -0
  25. package/dist/payments.js +32 -0
  26. package/dist/payments.mjs +7 -0
  27. package/dist/react-notifications.js +286 -0
  28. package/dist/react-notifications.mjs +254 -0
  29. package/dist/react-styles.js +2718 -0
  30. package/dist/react-styles.mjs +2682 -0
  31. package/dist/react-theme.js +4194 -0
  32. package/dist/react-theme.mjs +4170 -0
  33. package/dist/react.js +8512 -209
  34. package/dist/react.mjs +8488 -179
  35. package/dist/runtime.js +2113 -385
  36. package/dist/runtime.mjs +2085 -397
  37. package/dist/src/account/config.d.ts +42 -0
  38. package/dist/src/account/config.d.ts.map +1 -0
  39. package/dist/src/account/index.d.ts +3 -0
  40. package/dist/src/account/index.d.ts.map +1 -0
  41. package/dist/src/ai/client.d.ts +58 -0
  42. package/dist/src/ai/client.d.ts.map +1 -0
  43. package/dist/src/ai/conversation-title.d.ts +13 -0
  44. package/dist/src/ai/conversation-title.d.ts.map +1 -0
  45. package/dist/src/ai/types.d.ts +81 -0
  46. package/dist/src/ai/types.d.ts.map +1 -0
  47. package/dist/src/auth.d.ts +133 -20
  48. package/dist/src/auth.d.ts.map +1 -1
  49. package/dist/src/chat/config.d.ts +61 -0
  50. package/dist/src/chat/config.d.ts.map +1 -0
  51. package/dist/src/chat/index.d.ts +3 -0
  52. package/dist/src/chat/index.d.ts.map +1 -0
  53. package/dist/src/chat/sse-parser.d.ts +44 -0
  54. package/dist/src/chat/sse-parser.d.ts.map +1 -0
  55. package/dist/src/dev-console.d.ts +18 -0
  56. package/dist/src/dev-console.d.ts.map +1 -0
  57. package/dist/src/email/client.d.ts +33 -0
  58. package/dist/src/email/client.d.ts.map +1 -0
  59. package/dist/src/email/templates.d.ts +15 -0
  60. package/dist/src/email/templates.d.ts.map +1 -0
  61. package/dist/src/email/types.d.ts +35 -0
  62. package/dist/src/email/types.d.ts.map +1 -0
  63. package/dist/src/env-detect.d.ts +25 -0
  64. package/dist/src/env-detect.d.ts.map +1 -0
  65. package/dist/src/errors.d.ts +53 -0
  66. package/dist/src/errors.d.ts.map +1 -0
  67. package/dist/src/events/client.d.ts +25 -0
  68. package/dist/src/events/client.d.ts.map +1 -0
  69. package/dist/src/events/index.d.ts +9 -0
  70. package/dist/src/events/index.d.ts.map +1 -0
  71. package/dist/src/events/types.d.ts +10 -0
  72. package/dist/src/events/types.d.ts.map +1 -0
  73. package/dist/src/feature/canonical.d.ts +33 -0
  74. package/dist/src/feature/canonical.d.ts.map +1 -0
  75. package/dist/src/feature/create-feature.d.ts +33 -0
  76. package/dist/src/feature/create-feature.d.ts.map +1 -0
  77. package/dist/src/feature/db.d.ts +16 -0
  78. package/dist/src/feature/db.d.ts.map +1 -0
  79. package/dist/src/feature/handlers.d.ts +28 -0
  80. package/dist/src/feature/handlers.d.ts.map +1 -0
  81. package/dist/src/feature/index.d.ts +21 -0
  82. package/dist/src/feature/index.d.ts.map +1 -0
  83. package/dist/src/feature/manifest.d.ts +173 -0
  84. package/dist/src/feature/manifest.d.ts.map +1 -0
  85. package/dist/src/feature/mapping.d.ts +18 -0
  86. package/dist/src/feature/mapping.d.ts.map +1 -0
  87. package/dist/src/feature/runtime.d.ts +45 -0
  88. package/dist/src/feature/runtime.d.ts.map +1 -0
  89. package/dist/src/feature/types.d.ts +65 -0
  90. package/dist/src/feature/types.d.ts.map +1 -0
  91. package/dist/src/files/client.d.ts +28 -0
  92. package/dist/src/files/client.d.ts.map +1 -0
  93. package/dist/src/files/types.d.ts +28 -0
  94. package/dist/src/files/types.d.ts.map +1 -0
  95. package/dist/src/fix-registry.d.ts +8 -0
  96. package/dist/src/fix-registry.d.ts.map +1 -0
  97. package/dist/src/gateway.d.ts +32 -0
  98. package/dist/src/gateway.d.ts.map +1 -0
  99. package/dist/src/logs/capture.d.ts +56 -0
  100. package/dist/src/logs/capture.d.ts.map +1 -0
  101. package/dist/src/logs/index.d.ts +2 -0
  102. package/dist/src/logs/index.d.ts.map +1 -0
  103. package/dist/src/management.d.ts +1 -1
  104. package/dist/src/management.d.ts.map +1 -1
  105. package/dist/src/models.d.ts +32 -0
  106. package/dist/src/models.d.ts.map +1 -0
  107. package/dist/src/next/auth.d.ts +54 -0
  108. package/dist/src/next/auth.d.ts.map +1 -0
  109. package/dist/src/next/chat.d.ts +31 -0
  110. package/dist/src/next/chat.d.ts.map +1 -0
  111. package/dist/src/next/index.d.ts +14 -0
  112. package/dist/src/next/index.d.ts.map +1 -0
  113. package/dist/src/next/notifications.d.ts +67 -0
  114. package/dist/src/next/notifications.d.ts.map +1 -0
  115. package/dist/src/notifications/built-ins.d.ts +9 -0
  116. package/dist/src/notifications/built-ins.d.ts.map +1 -0
  117. package/dist/src/notifications/client.d.ts +38 -0
  118. package/dist/src/notifications/client.d.ts.map +1 -0
  119. package/dist/src/notifications/config.d.ts +71 -0
  120. package/dist/src/notifications/config.d.ts.map +1 -0
  121. package/dist/src/notifications/index.d.ts +6 -0
  122. package/dist/src/notifications/index.d.ts.map +1 -0
  123. package/dist/src/notifications/registry.d.ts +67 -0
  124. package/dist/src/notifications/registry.d.ts.map +1 -0
  125. package/dist/src/notifications/types.d.ts +48 -0
  126. package/dist/src/notifications/types.d.ts.map +1 -0
  127. package/dist/src/payments/client.d.ts +64 -0
  128. package/dist/src/payments/client.d.ts.map +1 -0
  129. package/dist/src/payments/config.d.ts +46 -0
  130. package/dist/src/payments/config.d.ts.map +1 -0
  131. package/dist/src/payments/entitlements.d.ts +48 -0
  132. package/dist/src/payments/entitlements.d.ts.map +1 -0
  133. package/dist/src/payments/types.d.ts +135 -0
  134. package/dist/src/payments/types.d.ts.map +1 -0
  135. package/dist/src/react/BrokrErrorBoundary.d.ts +23 -0
  136. package/dist/src/react/BrokrErrorBoundary.d.ts.map +1 -0
  137. package/dist/src/react/account/AccountPanel.d.ts +12 -0
  138. package/dist/src/react/account/AccountPanel.d.ts.map +1 -0
  139. package/dist/src/react/account/Avatar.d.ts +11 -0
  140. package/dist/src/react/account/Avatar.d.ts.map +1 -0
  141. package/dist/src/react/account/ProfilePhotoButton.d.ts +7 -0
  142. package/dist/src/react/account/ProfilePhotoButton.d.ts.map +1 -0
  143. package/dist/src/react/account/UserButton.d.ts +7 -0
  144. package/dist/src/react/account/UserButton.d.ts.map +1 -0
  145. package/dist/src/react/auth-pages/AuthPageShell.d.ts +9 -0
  146. package/dist/src/react/auth-pages/AuthPageShell.d.ts.map +1 -0
  147. package/dist/src/react/auth-pages/SignInPage.d.ts +9 -0
  148. package/dist/src/react/auth-pages/SignInPage.d.ts.map +1 -0
  149. package/dist/src/react/auth-pages/SignUpPage.d.ts +8 -0
  150. package/dist/src/react/auth-pages/SignUpPage.d.ts.map +1 -0
  151. package/dist/src/react/auth.d.ts +1 -49
  152. package/dist/src/react/auth.d.ts.map +1 -1
  153. package/dist/src/react/chat/AIChat.d.ts +4 -0
  154. package/dist/src/react/chat/AIChat.d.ts.map +1 -0
  155. package/dist/src/react/chat/ChatContext.d.ts +76 -0
  156. package/dist/src/react/chat/ChatContext.d.ts.map +1 -0
  157. package/dist/src/react/chat/ChatInput.d.ts +3 -0
  158. package/dist/src/react/chat/ChatInput.d.ts.map +1 -0
  159. package/dist/src/react/chat/MarkdownRenderer.d.ts +5 -0
  160. package/dist/src/react/chat/MarkdownRenderer.d.ts.map +1 -0
  161. package/dist/src/react/chat/MessageBubble.d.ts +14 -0
  162. package/dist/src/react/chat/MessageBubble.d.ts.map +1 -0
  163. package/dist/src/react/chat/MessagePane.d.ts +10 -0
  164. package/dist/src/react/chat/MessagePane.d.ts.map +1 -0
  165. package/dist/src/react/chat/ModelSelector.d.ts +13 -0
  166. package/dist/src/react/chat/ModelSelector.d.ts.map +1 -0
  167. package/dist/src/react/chat/ThreadSidebar.d.ts +3 -0
  168. package/dist/src/react/chat/ThreadSidebar.d.ts.map +1 -0
  169. package/dist/src/react/chat/index.d.ts +5 -0
  170. package/dist/src/react/chat/index.d.ts.map +1 -0
  171. package/dist/src/react/chat/token-limit.d.ts +14 -0
  172. package/dist/src/react/chat/token-limit.d.ts.map +1 -0
  173. package/dist/src/react/chat/types.d.ts +65 -0
  174. package/dist/src/react/chat/types.d.ts.map +1 -0
  175. package/dist/src/react/chat/useChat.d.ts +57 -0
  176. package/dist/src/react/chat/useChat.d.ts.map +1 -0
  177. package/dist/src/react/composites/FabAI.d.ts +15 -0
  178. package/dist/src/react/composites/FabAI.d.ts.map +1 -0
  179. package/dist/src/react/composites/FeedbackWidget.d.ts +10 -0
  180. package/dist/src/react/composites/FeedbackWidget.d.ts.map +1 -0
  181. package/dist/src/react/composites/SmartUpload.d.ts +12 -0
  182. package/dist/src/react/composites/SmartUpload.d.ts.map +1 -0
  183. package/dist/src/react/config.d.ts +23 -0
  184. package/dist/src/react/config.d.ts.map +1 -0
  185. package/dist/src/react/context.d.ts +4 -0
  186. package/dist/src/react/context.d.ts.map +1 -0
  187. package/dist/src/react/css/account.d.ts +2 -0
  188. package/dist/src/react/css/account.d.ts.map +1 -0
  189. package/dist/src/react/css/animations.d.ts +2 -0
  190. package/dist/src/react/css/animations.d.ts.map +1 -0
  191. package/dist/src/react/css/auth.d.ts +2 -0
  192. package/dist/src/react/css/auth.d.ts.map +1 -0
  193. package/dist/src/react/css/chat-extras.d.ts +2 -0
  194. package/dist/src/react/css/chat-extras.d.ts.map +1 -0
  195. package/dist/src/react/css/chat.d.ts +2 -0
  196. package/dist/src/react/css/chat.d.ts.map +1 -0
  197. package/dist/src/react/css/composites.d.ts +2 -0
  198. package/dist/src/react/css/composites.d.ts.map +1 -0
  199. package/dist/src/react/css/gates.d.ts +2 -0
  200. package/dist/src/react/css/gates.d.ts.map +1 -0
  201. package/dist/src/react/css/index.d.ts +3 -0
  202. package/dist/src/react/css/index.d.ts.map +1 -0
  203. package/dist/src/react/css/markdown.d.ts +2 -0
  204. package/dist/src/react/css/markdown.d.ts.map +1 -0
  205. package/dist/src/react/css/notifications.d.ts +2 -0
  206. package/dist/src/react/css/notifications.d.ts.map +1 -0
  207. package/dist/src/react/css/primitives.d.ts +2 -0
  208. package/dist/src/react/css/primitives.d.ts.map +1 -0
  209. package/dist/src/react/css/reset.d.ts +2 -0
  210. package/dist/src/react/css/reset.d.ts.map +1 -0
  211. package/dist/src/react/css/responsive.d.ts +2 -0
  212. package/dist/src/react/css/responsive.d.ts.map +1 -0
  213. package/dist/src/react/css/skeleton.d.ts +2 -0
  214. package/dist/src/react/css/skeleton.d.ts.map +1 -0
  215. package/dist/src/react/css/tokens.d.ts +2 -0
  216. package/dist/src/react/css/tokens.d.ts.map +1 -0
  217. package/dist/src/react/gates/AuthWall.d.ts +7 -0
  218. package/dist/src/react/gates/AuthWall.d.ts.map +1 -0
  219. package/dist/src/react/gates/BillingBoundary.d.ts +4 -0
  220. package/dist/src/react/gates/BillingBoundary.d.ts.map +1 -0
  221. package/dist/src/react/gates/Gate.d.ts +9 -0
  222. package/dist/src/react/gates/Gate.d.ts.map +1 -0
  223. package/dist/src/react/gates/RequirePlan.d.ts +4 -0
  224. package/dist/src/react/gates/RequirePlan.d.ts.map +1 -0
  225. package/dist/src/react/gates/RequireUser.d.ts +4 -0
  226. package/dist/src/react/gates/RequireUser.d.ts.map +1 -0
  227. package/dist/src/react/gates/UsageGate.d.ts +4 -0
  228. package/dist/src/react/gates/UsageGate.d.ts.map +1 -0
  229. package/dist/src/react/helpers.d.ts +7 -0
  230. package/dist/src/react/helpers.d.ts.map +1 -0
  231. package/dist/src/react/hooks/use-theme.d.ts +15 -0
  232. package/dist/src/react/hooks/use-theme.d.ts.map +1 -0
  233. package/dist/src/react/hooks/use-user.d.ts +12 -0
  234. package/dist/src/react/hooks/use-user.d.ts.map +1 -0
  235. package/dist/src/react/icons.d.ts +26 -0
  236. package/dist/src/react/icons.d.ts.map +1 -0
  237. package/dist/src/react/index.d.ts +48 -0
  238. package/dist/src/react/index.d.ts.map +1 -0
  239. package/dist/src/react/notifications/NotificationBell.d.ts +7 -0
  240. package/dist/src/react/notifications/NotificationBell.d.ts.map +1 -0
  241. package/dist/src/react/notifications/NotificationList.d.ts +7 -0
  242. package/dist/src/react/notifications/NotificationList.d.ts.map +1 -0
  243. package/dist/src/react/notifications/Toast.d.ts +13 -0
  244. package/dist/src/react/notifications/Toast.d.ts.map +1 -0
  245. package/dist/src/react/notifications/index.d.ts +8 -0
  246. package/dist/src/react/notifications/index.d.ts.map +1 -0
  247. package/dist/src/react/notifications/provider.d.ts +14 -0
  248. package/dist/src/react/notifications/provider.d.ts.map +1 -0
  249. package/dist/src/react/notifications/use-notifications.d.ts +24 -0
  250. package/dist/src/react/notifications/use-notifications.d.ts.map +1 -0
  251. package/dist/src/react/payments/AutoReloadToggle.d.ts +6 -0
  252. package/dist/src/react/payments/AutoReloadToggle.d.ts.map +1 -0
  253. package/dist/src/react/payments/Balance.d.ts +8 -0
  254. package/dist/src/react/payments/Balance.d.ts.map +1 -0
  255. package/dist/src/react/payments/CancelSubscription.d.ts +6 -0
  256. package/dist/src/react/payments/CancelSubscription.d.ts.map +1 -0
  257. package/dist/src/react/payments/CheckoutButton.d.ts +7 -0
  258. package/dist/src/react/payments/CheckoutButton.d.ts.map +1 -0
  259. package/dist/src/react/payments/CustomerPortalButton.d.ts +6 -0
  260. package/dist/src/react/payments/CustomerPortalButton.d.ts.map +1 -0
  261. package/dist/src/react/payments/FeatureMeter.d.ts +6 -0
  262. package/dist/src/react/payments/FeatureMeter.d.ts.map +1 -0
  263. package/dist/src/react/payments/Plans.d.ts +8 -0
  264. package/dist/src/react/payments/Plans.d.ts.map +1 -0
  265. package/dist/src/react/payments/TopUpButton.d.ts +8 -0
  266. package/dist/src/react/payments/TopUpButton.d.ts.map +1 -0
  267. package/dist/src/react/payments/UpdateBilling.d.ts +3 -0
  268. package/dist/src/react/payments/UpdateBilling.d.ts.map +1 -0
  269. package/dist/src/react/payments/UpgradePrompt.d.ts +8 -0
  270. package/dist/src/react/payments/UpgradePrompt.d.ts.map +1 -0
  271. package/dist/src/react/primitives/Skeleton.d.ts +15 -0
  272. package/dist/src/react/primitives/Skeleton.d.ts.map +1 -0
  273. package/dist/src/react/provider.d.ts +21 -0
  274. package/dist/src/react/provider.d.ts.map +1 -0
  275. package/dist/src/react/request.d.ts +2 -0
  276. package/dist/src/react/request.d.ts.map +1 -0
  277. package/dist/src/react/styles-entry.d.ts +4 -0
  278. package/dist/src/react/styles-entry.d.ts.map +1 -0
  279. package/dist/src/react/styles.d.ts +2 -0
  280. package/dist/src/react/styles.d.ts.map +1 -0
  281. package/dist/src/react/theme-entry.d.ts +3 -0
  282. package/dist/src/react/theme-entry.d.ts.map +1 -0
  283. package/dist/src/react/theme.d.ts +6 -0
  284. package/dist/src/react/theme.d.ts.map +1 -0
  285. package/dist/src/react/types.d.ts +191 -0
  286. package/dist/src/react/types.d.ts.map +1 -0
  287. package/dist/src/react/use-brokr-theme.d.ts +6 -0
  288. package/dist/src/react/use-brokr-theme.d.ts.map +1 -0
  289. package/dist/src/runtime.d.ts +69 -180
  290. package/dist/src/runtime.d.ts.map +1 -1
  291. package/dist/src/storage/client.d.ts +113 -0
  292. package/dist/src/storage/client.d.ts.map +1 -0
  293. package/dist/src/storage/types.d.ts +60 -0
  294. package/dist/src/storage/types.d.ts.map +1 -0
  295. package/dist/tsconfig.tsbuildinfo +1 -1
  296. package/dist/types.d.ts +2 -2
  297. package/dist/types.d.ts.map +1 -1
  298. package/package.json +70 -9
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Brokr Account — Per-feature config
3
+ *
4
+ * Type-checked factory for defining AccountPanel / UserButton defaults.
5
+ * Place in `brokr/account.ts` in your project root.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * // brokr/account.ts
10
+ * import { defineAccount } from '@brokr/sdk/account';
11
+ *
12
+ * export default defineAccount({
13
+ * showSessions: true,
14
+ * initialTab: 'general',
15
+ * userButtonDisplay: 'full',
16
+ * });
17
+ * ```
18
+ */
19
+ export interface AccountConfig {
20
+ /** Panel density. Default: 'default'. */
21
+ density?: 'compact' | 'default';
22
+ /** Tab shown when the panel opens. Default: 'general'. */
23
+ initialTab?: 'general' | 'security' | 'billing' | 'plan';
24
+ /** Show plan and billing tabs. Default: true. */
25
+ showPlan?: boolean;
26
+ /** Show active sessions list in the security tab. Default: false. */
27
+ showSessions?: boolean;
28
+ /** Which tabs to display (order preserved). Default: all four. */
29
+ tabs?: Array<'general' | 'security' | 'billing' | 'plan'>;
30
+ /** UserButton display mode. Default: 'avatar'. */
31
+ userButtonDisplay?: 'avatar' | 'full';
32
+ /** UserButton popover alignment. Default: 'end'. */
33
+ userButtonAlign?: 'end' | 'start';
34
+ }
35
+ /**
36
+ * Define account configuration for your app.
37
+ *
38
+ * The returned config is passed to `<BrokrProvider account={...}>`.
39
+ * Inline props always take precedence over config defaults.
40
+ */
41
+ export declare function defineAccount(config: AccountConfig): AccountConfig;
42
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/account/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC,0DAA0D;IAC1D,UAAU,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;IACzD,iDAAiD;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qEAAqE;IACrE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kEAAkE;IAClE,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC,CAAC;IAC1D,kDAAkD;IAClD,iBAAiB,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACtC,oDAAoD;IACpD,eAAe,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;CACnC;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CAElE"}
@@ -0,0 +1,3 @@
1
+ export { defineAccount } from './config';
2
+ export type { AccountConfig } from './config';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/account/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Brokr SDK — AI Client
3
+ *
4
+ * Extracted from runtime.ts. Provides chat, stream, and higher-level
5
+ * AI primitives (structured, extract, summarize, classify, embed, image).
6
+ */
7
+ import type { ChatOptions, ChatResponse, ChatInput, StructuredParams, EmbedResult, ClassifyResult, ClassifyOptions, ImageOptions, ImageResult, SummarizeOptions, SummarizeResult } from './types';
8
+ export declare class BrokrAIClient {
9
+ private readonly _token;
10
+ private readonly _gatewayUrl;
11
+ constructor(_token: string | undefined, _gatewayUrl: string);
12
+ /**
13
+ * Send a chat completion request.
14
+ * Accepts a string (auto-wrapped as user message) or a message array.
15
+ */
16
+ chat(input: ChatInput, options?: ChatOptions): Promise<ChatResponse>;
17
+ /**
18
+ * Stream a chat completion. Yields text strings directly.
19
+ * Accepts a string (auto-wrapped as user message) or a message array.
20
+ */
21
+ /**
22
+ * Stream a chat completion. Yields text strings directly.
23
+ * Tries streaming first — if the gateway or provider doesn't support it,
24
+ * falls back to a non-streaming call and yields the full response at once.
25
+ */
26
+ stream(input: ChatInput, options?: ChatOptions): AsyncGenerator<string>;
27
+ /**
28
+ * Extract structured data from a prompt using JSON mode.
29
+ * Returns a parsed object matching the provided schema shape.
30
+ */
31
+ structured<T = unknown>(params: StructuredParams<T>): Promise<T>;
32
+ /**
33
+ * Extract fields from unstructured text.
34
+ * Semantic alias for structured() — same behavior, clearer intent.
35
+ */
36
+ extract<T = unknown>(prompt: string, schema: Record<string, unknown>): Promise<T>;
37
+ /**
38
+ * Summarize text using AI.
39
+ */
40
+ summarize(text: string, options?: SummarizeOptions): Promise<SummarizeResult>;
41
+ /**
42
+ * Classify text into one of the provided labels.
43
+ */
44
+ classify(text: string, labels: string[], options?: ClassifyOptions): Promise<ClassifyResult>;
45
+ /**
46
+ * Generate an embedding vector for the given text.
47
+ */
48
+ embed(text: string): Promise<EmbedResult>;
49
+ /**
50
+ * Generate an image from a text prompt.
51
+ */
52
+ image(prompt: string, options?: ImageOptions): Promise<ImageResult>;
53
+ /** OpenAI-SDK compatible base URL. */
54
+ get baseURL(): string;
55
+ /** Use as `apiKey` with the official OpenAI SDK to route through Brokr's gateway. */
56
+ get apiKey(): string;
57
+ }
58
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/ai/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAEV,WAAW,EACX,YAAY,EACZ,SAAS,EAET,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,eAAe,EACf,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,eAAe,EAChB,MAAM,SAAS,CAAC;AAkBjB,qBAAa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBADX,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,WAAW,EAAE,MAAM;IAOtC;;;OAGG;IACG,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAgC1E;;;OAGG;IACH;;;;OAIG;IACI,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC;IAwF9E;;;OAGG;IACG,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAsCtE;;;OAGG;IACG,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIvF;;OAEG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAoBnF;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IAuBlG;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAmB/C;;OAEG;IACG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IA2BzE,sCAAsC;IACtC,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,qFAAqF;IACrF,IAAI,MAAM,IAAI,MAAM,CAGnB;CACF"}
@@ -0,0 +1,13 @@
1
+ import type { StructuredParams } from './types';
2
+ interface StructuredClient {
3
+ structured<T = unknown>(params: StructuredParams<T>): Promise<T>;
4
+ }
5
+ export interface ConversationTitleOptions {
6
+ fallback?: string;
7
+ model?: string;
8
+ }
9
+ export declare function buildFallbackConversationTitle(message: string): string;
10
+ export declare function sanitizeConversationTitle(input: string, fallback?: string): string;
11
+ export declare function generateConversationTitle(ai: StructuredClient, firstUserMessage: string, options?: ConversationTitleOptions): Promise<string>;
12
+ export {};
13
+ //# sourceMappingURL=conversation-title.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-title.d.ts","sourceRoot":"","sources":["../../../src/ai/conversation-title.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,UAAU,gBAAgB;IACxB,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAClE;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAQD,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,UAY7D;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAa,UAoB7E;AAED,wBAAsB,yBAAyB,CAC7C,EAAE,EAAE,gBAAgB,EACpB,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE,wBAA6B,mBA0CvC"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Brokr SDK — AI types
3
+ */
4
+ export interface ChatTextPart {
5
+ type: 'text';
6
+ text: string;
7
+ }
8
+ export interface ChatImagePart {
9
+ type: 'image_url';
10
+ image_url: {
11
+ url: string;
12
+ };
13
+ }
14
+ export type ChatContentPart = ChatTextPart | ChatImagePart;
15
+ export interface ChatMessage {
16
+ role: 'user' | 'assistant' | 'system';
17
+ content: string | ChatContentPart[];
18
+ }
19
+ /** Extract plain text from a ChatMessage content field. */
20
+ export declare function contentToText(content: string | ChatContentPart[]): string;
21
+ export interface ChatOptions {
22
+ model?: string;
23
+ maxTokens?: number;
24
+ temperature?: number;
25
+ }
26
+ export interface ChatResponse {
27
+ content: string;
28
+ model: string;
29
+ usage: {
30
+ promptTokens: number;
31
+ completionTokens: number;
32
+ };
33
+ }
34
+ export interface StructuredParams<T = unknown> {
35
+ /** The prompt to send to the model. */
36
+ prompt: string;
37
+ /** JSON schema describing the expected output shape. */
38
+ schema: Record<string, unknown>;
39
+ /** Optional model override. */
40
+ model?: string;
41
+ /** Optional temperature (lower = more deterministic). */
42
+ temperature?: number;
43
+ }
44
+ export interface EmbedResult {
45
+ /** The embedding vector. */
46
+ vector: number[];
47
+ }
48
+ export interface ClassifyResult {
49
+ /** The predicted label. */
50
+ label: string;
51
+ /** Confidence score (0-1). */
52
+ confidence: number;
53
+ }
54
+ export interface ImageOptions {
55
+ /** Image size. */
56
+ size?: '256x256' | '512x512' | '1024x1024';
57
+ /** Number of images to generate. */
58
+ n?: number;
59
+ /** Model to use. */
60
+ model?: string;
61
+ }
62
+ export interface ImageResult {
63
+ /** The URL of the generated image. */
64
+ url: string;
65
+ }
66
+ export interface SummarizeOptions {
67
+ /** Model override. */
68
+ model?: string;
69
+ /** Max length hint (e.g. "2 sentences", "100 words"). */
70
+ maxLength?: string;
71
+ }
72
+ export interface SummarizeResult {
73
+ summary: string;
74
+ }
75
+ export interface ClassifyOptions {
76
+ /** Model override. */
77
+ model?: string;
78
+ }
79
+ /** Input type that accepts a string (auto-wrapped) or message array. */
80
+ export type ChatInput = string | ChatMessage[];
81
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ai/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE;QACT,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,aAAa,CAAC;AAE3D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,CAAC;CACrC;AAED,2DAA2D;AAC3D,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,GAAG,MAAM,CAMzE;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,OAAO;IAC3C,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,4BAA4B;IAC5B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,kBAAkB;IAClB,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAC3C,oCAAoC;IACpC,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,sCAAsC;IACtC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wEAAwE;AACxE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,WAAW,EAAE,CAAC"}
@@ -2,16 +2,20 @@
2
2
  * Brokr Auth Client
3
3
  *
4
4
  * Server-side auth utilities for apps provisioned with `brokr add auth`.
5
- * Wraps Better Auth's server-side API with Brokr's zero-config DX.
5
+ * Wraps the auth server-side API with Brokr's zero-config DX.
6
6
  *
7
- * Gateway verify: cross-service token verification via api.brokr.sh
8
- * Local calls: session/user operations via the app's own Better Auth API
7
+ * Architecture:
8
+ * - Identity methods (user, session) call the app's own Better Auth API via cookies
9
+ * - Auth actions (signIn, signUp, etc.) call the app's own Better Auth API
10
+ * - Ownership checks go through the Brokr gateway → server → stack's Neon DB
11
+ * (the gateway tracks these calls; the server handles the DB query)
12
+ * - Session management calls the app's own Better Auth session endpoints
9
13
  */
10
14
  export interface AuthUser {
11
15
  id: string;
12
16
  email: string;
13
17
  name: string | null;
14
- avatarUrl: string | null;
18
+ image: string | null;
15
19
  emailVerified: Date | null;
16
20
  }
17
21
  export interface AuthSession {
@@ -19,14 +23,17 @@ export interface AuthSession {
19
23
  sessionId: string;
20
24
  expiresAt: Date;
21
25
  }
22
- export interface CreateUserInput {
23
- email: string;
24
- name?: string;
25
- password?: string;
26
+ export interface AuthSessionEntry {
27
+ id: string;
28
+ createdAt: Date;
29
+ expiresAt: Date;
30
+ userAgent?: string;
31
+ ipAddress?: string;
32
+ isCurrent: boolean;
26
33
  }
27
34
  export interface UpdateUserInput {
28
35
  name?: string;
29
- avatarUrl?: string;
36
+ image?: string;
30
37
  }
31
38
  export interface OAuthUrlOptions {
32
39
  redirectTo?: string;
@@ -34,31 +41,136 @@ export interface OAuthUrlOptions {
34
41
  export interface MagicLinkOptions {
35
42
  redirectTo?: string;
36
43
  }
44
+ export interface OwnershipOptions {
45
+ /** Override table name (default: pluralized resource name). */
46
+ table?: string;
47
+ /** Override owner column (default: 'user_id'). */
48
+ ownerColumn?: string;
49
+ }
37
50
  export declare class BrokrAuthClient {
38
- private readonly _token;
39
- private readonly _gatewayUrl;
40
51
  private readonly _appUrl;
41
- constructor(token: string | undefined, gatewayUrl: string, appUrl?: string);
52
+ private _sessions;
53
+ constructor(_token: string | undefined, _gatewayUrl: string, appUrl?: string);
42
54
  /**
43
- * Get current user from an incoming request's cookies.
44
- * Calls the local Better Auth API (runs inside your app).
55
+ * Get user from request headers. Returns null if not authenticated.
56
+ * Calls the app's own Better Auth API.
45
57
  */
46
- currentUser(request: Request): Promise<AuthUser | null>;
58
+ user(headers: Headers): Promise<AuthUser | null>;
47
59
  /**
48
- * Get the full session (user + metadata) from an incoming request.
49
- * Calls the local Better Auth API.
60
+ * Get user from request headers. Throws 401 if not authenticated.
50
61
  */
62
+ requireUser(headers: Headers): Promise<AuthUser>;
63
+ /**
64
+ * Get full session from request headers. Returns null if not authenticated.
65
+ */
66
+ session(headers: Headers): Promise<AuthSession | null>;
67
+ /**
68
+ * Get full session. Throws 401 if not authenticated.
69
+ */
70
+ requireSession(headers: Headers): Promise<AuthSession>;
71
+ /** @deprecated Use user(request.headers) instead. */
72
+ currentUser(request: Request): Promise<AuthUser | null>;
73
+ /** @deprecated Use session(request.headers) instead. */
51
74
  getSession(request: Request): Promise<AuthSession | null>;
52
75
  /**
53
- * Generate an OAuth authorization URL.
76
+ * Sign in with email and password.
54
77
  */
55
- getOAuthUrl(provider: string, options?: OAuthUrlOptions): Promise<{
78
+ signIn(params: {
79
+ email: string;
80
+ password: string;
81
+ }): Promise<AuthSession>;
82
+ /**
83
+ * Sign in with OAuth provider. Returns redirect URL.
84
+ */
85
+ signInWithProvider(provider: string, options?: OAuthUrlOptions): Promise<{
56
86
  redirectUrl: string;
57
87
  }>;
58
88
  /**
59
- * Send a magic link email (requires email capability).
89
+ * Sign up with email and password.
90
+ */
91
+ signUp(params: {
92
+ email: string;
93
+ password: string;
94
+ name?: string;
95
+ }): Promise<AuthSession>;
96
+ /**
97
+ * Sign out the current user.
98
+ */
99
+ signOut(headers?: Headers): Promise<void>;
100
+ /**
101
+ * Send a magic link email.
60
102
  */
61
103
  sendMagicLink(email: string, options?: MagicLinkOptions): Promise<void>;
104
+ /**
105
+ * Send a password reset email.
106
+ */
107
+ sendPasswordReset(params: {
108
+ email: string;
109
+ }): Promise<void>;
110
+ /**
111
+ * Reset password with token from email.
112
+ */
113
+ resetPassword(params: {
114
+ token: string;
115
+ password: string;
116
+ }): Promise<void>;
117
+ /**
118
+ * Verify email with token from email.
119
+ */
120
+ verifyEmail(params: {
121
+ token: string;
122
+ }): Promise<void>;
123
+ /**
124
+ * Update the current user's profile.
125
+ */
126
+ updateUser(params: UpdateUserInput, headers?: Headers): Promise<void>;
127
+ /** Session management sub-client. */
128
+ get sessions(): BrokrSessionsClient;
129
+ /**
130
+ * Check if the current user owns a resource. Throws 403 if not.
131
+ *
132
+ * Queries the developer's own database directly via DATABASE_URL.
133
+ * Convention: pluralizes resource name → table, assumes `id` PK + `user_id` owner column.
134
+ * Override with `opts.table` and `opts.ownerColumn` for non-standard schemas.
135
+ *
136
+ * @example
137
+ * ```ts
138
+ * await brokr.auth.requireOwner('conversation', conversationId, request.headers);
139
+ * // Under the hood: SELECT 1 FROM conversations WHERE id = $1 AND user_id = $2
140
+ * ```
141
+ */
142
+ requireOwner(resource: string, id: string, headers: Headers, opts?: OwnershipOptions): Promise<void>;
143
+ /**
144
+ * Check if the current user owns a resource. Returns boolean.
145
+ *
146
+ * Runs a direct query against the developer's database (DATABASE_URL).
147
+ * No gateway round-trip — this is a local DB operation.
148
+ */
149
+ isOwner(resource: string, id: string, headers: Headers, opts?: OwnershipOptions): Promise<boolean>;
150
+ /**
151
+ * Check if the current user matches a specific userId. Throws 403 if not.
152
+ */
153
+ requireCurrentUser(userId: string, headers: Headers): Promise<void>;
154
+ /** @deprecated Use signInWithProvider() instead. */
155
+ getOAuthUrl(provider: string, options?: OAuthUrlOptions): Promise<{
156
+ redirectUrl: string;
157
+ }>;
158
+ }
159
+ declare class BrokrSessionsClient {
160
+ private readonly _appUrl;
161
+ constructor(appUrl: string | undefined);
162
+ /**
163
+ * List all active sessions for the current user.
164
+ */
165
+ list(headers: Headers): Promise<AuthSessionEntry[]>;
166
+ /**
167
+ * Revoke a specific session by ID.
168
+ */
169
+ revoke(sessionId: string, headers: Headers): Promise<void>;
170
+ /**
171
+ * Revoke all sessions except the current one.
172
+ */
173
+ revokeOthers(headers: Headers): Promise<void>;
62
174
  }
63
175
  /**
64
176
  * Create auth middleware for Next.js route protection.
@@ -67,4 +179,5 @@ export declare function authMiddleware(options: {
67
179
  protectedRoutes?: string[];
68
180
  publicOnlyRoutes?: string[];
69
181
  }): (request: Request) => Promise<Response | undefined>;
182
+ export {};
70
183
  //# sourceMappingURL=auth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;gBAG3C,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM;IAOjB;;;OAGG;IACG,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAK7D;;;OAGG;IACG,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAwC/D;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAehG;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAqB9E;AAiBD;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE;IACtC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B,IAGkC,SAAS,OAAO,KAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAuBlF"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Brokr Chat — Per-feature config
3
+ *
4
+ * Type-checked factory for defining AIChat defaults.
5
+ * Place in `brokr/chat.ts` in your project root.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * // brokr/chat.ts
10
+ * import { defineChat } from '@brokr/sdk/chat';
11
+ *
12
+ * export default defineChat({
13
+ * persist: true,
14
+ * model: 'deepseek-chat',
15
+ * sidebar: true,
16
+ * autoTitle: true,
17
+ * });
18
+ * ```
19
+ */
20
+ export interface ChatConfig {
21
+ /** API endpoint for chat requests. Default: '/api/brokr/chat'. */
22
+ endpoint?: string;
23
+ /** System prompt injected into every request. */
24
+ prompt?: string;
25
+ /** Starter prompt suggestions shown in the empty state. */
26
+ starterPrompts?: string[];
27
+ /** Title shown in the empty state. Default: 'What can I help with?'. */
28
+ emptyTitle?: string;
29
+ /** Copy shown below the empty title. Default: 'Start a conversation below.'. */
30
+ emptyCopy?: string;
31
+ /** Header title. Default: 'New chat'. */
32
+ title?: string;
33
+ /** Header subtitle. */
34
+ subtitle?: string;
35
+ /** Gateway model string (e.g. 'deepseek-chat', 'gpt-5.4-mini'). */
36
+ model?: string;
37
+ /** Show the model selector dropdown. Default: true (unless model is set). */
38
+ modelSelector?: boolean;
39
+ /** Layout variant (1 = sidebar+header, 2 = header only, 3 = minimal). Default: 1. */
40
+ variant?: number;
41
+ /** Show the thread sidebar. Default: follows variant. */
42
+ sidebar?: boolean;
43
+ /** Show the thread context menu. Default: follows variant. */
44
+ threadMenu?: boolean;
45
+ /** Auto-generate thread titles from the first message. Default: true. */
46
+ autoTitle?: boolean;
47
+ /** Enable persistent thread storage. Requires DATABASE_URL. Default: false. */
48
+ persist?: boolean;
49
+ /** Namespace for thread isolation. Default: 'default'. */
50
+ surface?: string;
51
+ /** Subject filter for thread queries. */
52
+ subject?: string;
53
+ }
54
+ /**
55
+ * Define chat configuration for your app.
56
+ *
57
+ * The returned config is passed to `<BrokrProvider chat={...}>` or used directly
58
+ * as props on `<AIChat>`. Inline props always take precedence over config defaults.
59
+ */
60
+ export declare function defineChat(config: ChatConfig): ChatConfig;
61
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/chat/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,WAAW,UAAU;IACzB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yEAAyE;IACzE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAEzD"}
@@ -0,0 +1,3 @@
1
+ export { defineChat } from './config';
2
+ export type { ChatConfig } from './config';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/chat/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Shared SSE stream parser for AI chat responses.
3
+ *
4
+ * Extracts and yields typed events from a Server-Sent Events response body.
5
+ * Used by both memory-mode and persist-mode chat flows.
6
+ */
7
+ export type SSEEvent = {
8
+ type: 'conversation';
9
+ id: string;
10
+ assistantMessageId?: string;
11
+ isNewThread?: boolean;
12
+ pendingTitle?: boolean;
13
+ } | {
14
+ type: 'title';
15
+ title: string;
16
+ } | {
17
+ type: 'delta';
18
+ delta: string;
19
+ } | {
20
+ type: 'done';
21
+ } | {
22
+ type: 'error';
23
+ message: string;
24
+ };
25
+ /**
26
+ * Parse an SSE response body into a stream of typed events.
27
+ *
28
+ * @param response - The fetch Response with `Content-Type: text/event-stream`.
29
+ * @yields SSEEvent objects for each parsed SSE frame.
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * for await (const event of parseSSEStream(response)) {
34
+ * if (event.type === 'delta') appendDelta(event.delta);
35
+ * if (event.type === 'done') break;
36
+ * }
37
+ * ```
38
+ */
39
+ export declare function parseSSEStream(response: Response): AsyncGenerator<SSEEvent>;
40
+ /**
41
+ * Check if a response is an SSE stream.
42
+ */
43
+ export declare function isSSEResponse(response: Response): boolean;
44
+ //# sourceMappingURL=sse-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse-parser.d.ts","sourceRoot":"","sources":["../../../src/chat/sse-parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GAChH;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAMvC;;;;;;;;;;;;;GAaG;AACH,wBAAuB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,CAuElF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAGzD"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * BrokrDevConsole — automatic error diagnostics for development.
3
+ *
4
+ * Auto-installed by createBrokr() when running locally (detected via env-detect).
5
+ * Catches unhandled BrokrErrors and prints formatted diagnostic blocks.
6
+ *
7
+ * - dev: full fix blocks with commands + docs URLs
8
+ * - staging: condensed (message + hint only)
9
+ * - production: never fires
10
+ */
11
+ import { BrokrError } from './errors';
12
+ export declare class BrokrDevConsole {
13
+ private static installed;
14
+ private static env;
15
+ static install(): void;
16
+ static print(err: BrokrError): void;
17
+ }
18
+ //# sourceMappingURL=dev-console.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-console.d.ts","sourceRoot":"","sources":["../../src/dev-console.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,SAAS,CAAS;IACjC,OAAO,CAAC,MAAM,CAAC,GAAG,CAA0B;IAE5C,MAAM,CAAC,OAAO,IAAI,IAAI;IAsBtB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI;CA2BpC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Brokr SDK — Email Client
3
+ *
4
+ * Send transactional emails and use built-in templates.
5
+ */
6
+ import type { EmailParams, SendTemplateParams } from './types';
7
+ export declare class BrokrEmailClient {
8
+ private readonly _token;
9
+ private readonly _gatewayUrl;
10
+ constructor(_token: string | undefined, _gatewayUrl: string);
11
+ /**
12
+ * Send an email. The from address and API credentials are resolved server-side.
13
+ */
14
+ send(params: EmailParams): Promise<{
15
+ id: string;
16
+ }>;
17
+ /**
18
+ * Send an email using a built-in template.
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * await brokr.email.sendTemplate({
23
+ * template: 'welcome',
24
+ * to: 'user@example.com',
25
+ * variables: { appName: 'MyApp', actionUrl: 'https://myapp.com/dashboard' },
26
+ * });
27
+ * ```
28
+ */
29
+ sendTemplate(params: SendTemplateParams): Promise<{
30
+ id: string;
31
+ }>;
32
+ }
33
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/email/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAO/D,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBADX,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,WAAW,EAAE,MAAM;IAGtC;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAYxD;;;;;;;;;;;OAWG;IACG,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CAyBxE"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Brokr SDK — Starter email templates
3
+ *
4
+ * 5 built-in templates with Mustache-style {{variable}} interpolation.
5
+ * Uses monochrome defaults; falls back gracefully without theming.
6
+ */
7
+ import type { EmailTemplate } from './types';
8
+ export declare const welcomeTemplate: EmailTemplate;
9
+ export declare const magicLinkTemplate: EmailTemplate;
10
+ export declare const passwordResetTemplate: EmailTemplate;
11
+ export declare const invoiceTemplate: EmailTemplate;
12
+ export declare const notificationTemplate: EmailTemplate;
13
+ /** All built-in templates keyed by name. */
14
+ export declare const builtinTemplates: Record<string, EmailTemplate>;
15
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../src/email/templates.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAsC7C,eAAO,MAAM,eAAe,EAAE,aAU7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,aAa/B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,aAcnC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,aAa7B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,aASlC,CAAC;AAEF,4CAA4C;AAC5C,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAM1D,CAAC"}