@brokr/sdk 1.0.0 → 2.1.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 +299 -0
  28. package/dist/react-notifications.mjs +267 -0
  29. package/dist/react-styles.js +2756 -0
  30. package/dist/react-styles.mjs +2720 -0
  31. package/dist/react-theme.js +4196 -0
  32. package/dist/react-theme.mjs +4172 -0
  33. package/dist/react.js +8591 -209
  34. package/dist/react.mjs +8571 -183
  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
package/dist/logs.js ADDED
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/logs/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ capture: () => capture,
24
+ captureRequest: () => captureRequest,
25
+ captureRequestError: () => captureRequestError,
26
+ flush: () => flush,
27
+ initCapture: () => initCapture
28
+ });
29
+ module.exports = __toCommonJS(index_exports);
30
+
31
+ // src/logs/capture.ts
32
+ var DEFAULT_BATCH_SIZE = 20;
33
+ var DEFAULT_FLUSH_INTERVAL_MS = 5e3;
34
+ var buffer = [];
35
+ var flushTimer = null;
36
+ var config = null;
37
+ var intercepted = false;
38
+ function initCapture(opts = {}) {
39
+ if (config) return;
40
+ const token = opts.token ?? (typeof process !== "undefined" ? process.env.BROKR_TOKEN : void 0);
41
+ const stackId = opts.stackId ?? resolveStackId();
42
+ if (!token || !stackId) {
43
+ if (typeof process !== "undefined") {
44
+ console.log(`[brokr] Log capture skipped: token=${token ? "present" : "MISSING"} stackId=${stackId ?? "MISSING"}`);
45
+ }
46
+ return;
47
+ }
48
+ const apiUrl = opts.apiUrl ?? opts.gatewayUrl ?? (typeof process !== "undefined" ? process.env.BROKR_GATEWAY_URL : void 0) ?? "https://api.brokr.sh";
49
+ config = {
50
+ token,
51
+ stackId,
52
+ apiUrl: apiUrl.replace(/\/+$/, ""),
53
+ batchSize: opts.batchSize ?? DEFAULT_BATCH_SIZE,
54
+ flushIntervalMs: opts.flushIntervalMs ?? DEFAULT_FLUSH_INTERVAL_MS
55
+ };
56
+ if (typeof process !== "undefined") {
57
+ console.log(`[brokr] Log capture initialized \u2192 ${apiUrl}/v1/logs/ingest (stack: ${stackId.slice(0, 8)}...)`);
58
+ }
59
+ if (flushTimer) clearInterval(flushTimer);
60
+ flushTimer = setInterval(() => flush(), config.flushIntervalMs);
61
+ if (typeof process !== "undefined" && process.on) {
62
+ process.on("beforeExit", () => flush());
63
+ }
64
+ if (typeof process !== "undefined" && !intercepted) {
65
+ intercepted = true;
66
+ const origError = console.error;
67
+ const origWarn = console.warn;
68
+ console.error = (...args) => {
69
+ origError.apply(console, args);
70
+ try {
71
+ const msg = args.map((a) => typeof a === "string" ? a : JSON.stringify(a)).join(" ");
72
+ if (!msg.startsWith("[brokr]")) capture("error", msg, "console.error");
73
+ } catch {
74
+ }
75
+ };
76
+ console.warn = (...args) => {
77
+ origWarn.apply(console, args);
78
+ try {
79
+ const msg = args.map((a) => typeof a === "string" ? a : JSON.stringify(a)).join(" ");
80
+ if (!msg.startsWith("[brokr]")) capture("warn", msg, "console.warn");
81
+ } catch {
82
+ }
83
+ };
84
+ }
85
+ }
86
+ function capture(level, message, source, stackTrace) {
87
+ if (!config) return;
88
+ buffer.push({
89
+ level,
90
+ message: message.slice(0, 1e4),
91
+ source: source ?? "app",
92
+ stackTrace: stackTrace?.slice(0, 5e4),
93
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
94
+ });
95
+ if (buffer.length >= (config.batchSize ?? DEFAULT_BATCH_SIZE)) {
96
+ flush();
97
+ }
98
+ }
99
+ function captureRequestError(err, request) {
100
+ const source = request.path ?? "unknown";
101
+ capture("error", err.message, source, err.stack);
102
+ }
103
+ function captureRequest(method, path, statusCode, durationMs) {
104
+ const level = statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "info";
105
+ const dur = durationMs != null ? ` ${durationMs}ms` : "";
106
+ capture(level, `${method} ${path} ${statusCode}${dur}`, path);
107
+ }
108
+ function flush() {
109
+ if (!config || buffer.length === 0) return;
110
+ const entries = buffer.splice(0);
111
+ const { token, stackId, apiUrl } = config;
112
+ fetch(`${apiUrl}/v1/logs/ingest`, {
113
+ method: "POST",
114
+ headers: {
115
+ "Content-Type": "application/json",
116
+ Authorization: `Bearer ${token}`
117
+ },
118
+ body: JSON.stringify({ stackId, entries })
119
+ }).catch((err) => {
120
+ if (typeof console !== "undefined") {
121
+ console.warn("[brokr] Log flush failed:", err instanceof Error ? err.message : err);
122
+ }
123
+ });
124
+ }
125
+ function resolveStackId() {
126
+ if (typeof process === "undefined") return void 0;
127
+ if (process.env.BROKR_STACK_ID) return process.env.BROKR_STACK_ID;
128
+ try {
129
+ const fs = require("fs");
130
+ const path = require("path");
131
+ const brokrFile = path.join(process.cwd(), ".brokr");
132
+ if (fs.existsSync(brokrFile)) {
133
+ const content = fs.readFileSync(brokrFile, "utf8");
134
+ const match = content.match(/BROKR_STACK_ID=(.+)/);
135
+ if (match) return match[1].trim();
136
+ }
137
+ } catch {
138
+ }
139
+ return void 0;
140
+ }
141
+ // Annotate the CommonJS export names for ESM import in node:
142
+ 0 && (module.exports = {
143
+ capture,
144
+ captureRequest,
145
+ captureRequestError,
146
+ flush,
147
+ initCapture
148
+ });
package/dist/logs.mjs ADDED
@@ -0,0 +1,124 @@
1
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
2
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
3
+ }) : x)(function(x) {
4
+ if (typeof require !== "undefined") return require.apply(this, arguments);
5
+ throw Error('Dynamic require of "' + x + '" is not supported');
6
+ });
7
+
8
+ // src/logs/capture.ts
9
+ var DEFAULT_BATCH_SIZE = 20;
10
+ var DEFAULT_FLUSH_INTERVAL_MS = 5e3;
11
+ var buffer = [];
12
+ var flushTimer = null;
13
+ var config = null;
14
+ var intercepted = false;
15
+ function initCapture(opts = {}) {
16
+ if (config) return;
17
+ const token = opts.token ?? (typeof process !== "undefined" ? process.env.BROKR_TOKEN : void 0);
18
+ const stackId = opts.stackId ?? resolveStackId();
19
+ if (!token || !stackId) {
20
+ if (typeof process !== "undefined") {
21
+ console.log(`[brokr] Log capture skipped: token=${token ? "present" : "MISSING"} stackId=${stackId ?? "MISSING"}`);
22
+ }
23
+ return;
24
+ }
25
+ const apiUrl = opts.apiUrl ?? opts.gatewayUrl ?? (typeof process !== "undefined" ? process.env.BROKR_GATEWAY_URL : void 0) ?? "https://api.brokr.sh";
26
+ config = {
27
+ token,
28
+ stackId,
29
+ apiUrl: apiUrl.replace(/\/+$/, ""),
30
+ batchSize: opts.batchSize ?? DEFAULT_BATCH_SIZE,
31
+ flushIntervalMs: opts.flushIntervalMs ?? DEFAULT_FLUSH_INTERVAL_MS
32
+ };
33
+ if (typeof process !== "undefined") {
34
+ console.log(`[brokr] Log capture initialized \u2192 ${apiUrl}/v1/logs/ingest (stack: ${stackId.slice(0, 8)}...)`);
35
+ }
36
+ if (flushTimer) clearInterval(flushTimer);
37
+ flushTimer = setInterval(() => flush(), config.flushIntervalMs);
38
+ if (typeof process !== "undefined" && process.on) {
39
+ process.on("beforeExit", () => flush());
40
+ }
41
+ if (typeof process !== "undefined" && !intercepted) {
42
+ intercepted = true;
43
+ const origError = console.error;
44
+ const origWarn = console.warn;
45
+ console.error = (...args) => {
46
+ origError.apply(console, args);
47
+ try {
48
+ const msg = args.map((a) => typeof a === "string" ? a : JSON.stringify(a)).join(" ");
49
+ if (!msg.startsWith("[brokr]")) capture("error", msg, "console.error");
50
+ } catch {
51
+ }
52
+ };
53
+ console.warn = (...args) => {
54
+ origWarn.apply(console, args);
55
+ try {
56
+ const msg = args.map((a) => typeof a === "string" ? a : JSON.stringify(a)).join(" ");
57
+ if (!msg.startsWith("[brokr]")) capture("warn", msg, "console.warn");
58
+ } catch {
59
+ }
60
+ };
61
+ }
62
+ }
63
+ function capture(level, message, source, stackTrace) {
64
+ if (!config) return;
65
+ buffer.push({
66
+ level,
67
+ message: message.slice(0, 1e4),
68
+ source: source ?? "app",
69
+ stackTrace: stackTrace?.slice(0, 5e4),
70
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
71
+ });
72
+ if (buffer.length >= (config.batchSize ?? DEFAULT_BATCH_SIZE)) {
73
+ flush();
74
+ }
75
+ }
76
+ function captureRequestError(err, request) {
77
+ const source = request.path ?? "unknown";
78
+ capture("error", err.message, source, err.stack);
79
+ }
80
+ function captureRequest(method, path, statusCode, durationMs) {
81
+ const level = statusCode >= 500 ? "error" : statusCode >= 400 ? "warn" : "info";
82
+ const dur = durationMs != null ? ` ${durationMs}ms` : "";
83
+ capture(level, `${method} ${path} ${statusCode}${dur}`, path);
84
+ }
85
+ function flush() {
86
+ if (!config || buffer.length === 0) return;
87
+ const entries = buffer.splice(0);
88
+ const { token, stackId, apiUrl } = config;
89
+ fetch(`${apiUrl}/v1/logs/ingest`, {
90
+ method: "POST",
91
+ headers: {
92
+ "Content-Type": "application/json",
93
+ Authorization: `Bearer ${token}`
94
+ },
95
+ body: JSON.stringify({ stackId, entries })
96
+ }).catch((err) => {
97
+ if (typeof console !== "undefined") {
98
+ console.warn("[brokr] Log flush failed:", err instanceof Error ? err.message : err);
99
+ }
100
+ });
101
+ }
102
+ function resolveStackId() {
103
+ if (typeof process === "undefined") return void 0;
104
+ if (process.env.BROKR_STACK_ID) return process.env.BROKR_STACK_ID;
105
+ try {
106
+ const fs = __require("fs");
107
+ const path = __require("path");
108
+ const brokrFile = path.join(process.cwd(), ".brokr");
109
+ if (fs.existsSync(brokrFile)) {
110
+ const content = fs.readFileSync(brokrFile, "utf8");
111
+ const match = content.match(/BROKR_STACK_ID=(.+)/);
112
+ if (match) return match[1].trim();
113
+ }
114
+ } catch {
115
+ }
116
+ return void 0;
117
+ }
118
+ export {
119
+ capture,
120
+ captureRequest,
121
+ captureRequestError,
122
+ flush,
123
+ initCapture
124
+ };
@@ -25,8 +25,9 @@ __export(management_exports, {
25
25
  default: () => createBrokrClient
26
26
  });
27
27
  module.exports = __toCommonJS(management_exports);
28
- async function trpcRequest(config, procedure, input) {
29
- const url = new URL(`${config.apiUrl}/api/trpc/${procedure}`);
28
+ async function orpcRequest(config, procedure, input) {
29
+ const path = procedure.replace(/^v1\./, "").replace(/\./g, "/");
30
+ const url = new URL(`${config.apiUrl}/api/orpc/${path}`);
30
31
  const response = await fetch(url.toString(), {
31
32
  method: "POST",
32
33
  headers: {
@@ -34,15 +35,15 @@ async function trpcRequest(config, procedure, input) {
34
35
  "Authorization": `Bearer ${config.accessToken}`,
35
36
  ...config.headers
36
37
  },
37
- body: JSON.stringify(input),
38
+ body: JSON.stringify({ json: input }),
38
39
  signal: config.timeout ? AbortSignal.timeout(config.timeout) : void 0
39
40
  });
40
41
  if (!response.ok) {
41
42
  const error = await response.json().catch(() => ({ message: "Request failed" }));
42
- throw new Error(error.message || `HTTP ${response.status}`);
43
+ throw new Error(error?.json?.message || error?.message || `HTTP ${response.status}`);
43
44
  }
44
- const result = await response.json();
45
- return result.data;
45
+ const envelope = await response.json();
46
+ return envelope.json;
46
47
  }
47
48
  var BrokrClient = class {
48
49
  constructor(config) {
@@ -50,31 +51,31 @@ var BrokrClient = class {
50
51
  }
51
52
  /** Create a new stack with default providers. */
52
53
  async create(input) {
53
- return trpcRequest(this.config, "v1.stack.create", input);
54
+ return orpcRequest(this.config, "v1.stack.create", input);
54
55
  }
55
56
  /** List all stacks for the current user. */
56
57
  async listStacks() {
57
- return trpcRequest(this.config, "v1.stack.list", {});
58
+ return orpcRequest(this.config, "v1.stack.list", {});
58
59
  }
59
60
  /** Get a specific stack by ID. */
60
61
  async getStack(id) {
61
- return trpcRequest(this.config, "v1.stack.get", { id });
62
+ return orpcRequest(this.config, "v1.stack.get", { id });
62
63
  }
63
64
  /** Update a stack. */
64
65
  async updateStack(id, input) {
65
- return trpcRequest(this.config, "v1.stack.update", { id, ...input });
66
+ return orpcRequest(this.config, "v1.stack.update", { id, ...input });
66
67
  }
67
68
  /** Delete a stack. */
68
69
  async deleteStack(id) {
69
- return trpcRequest(this.config, "v1.stack.delete", { id });
70
+ return orpcRequest(this.config, "v1.stack.delete", { id });
70
71
  }
71
72
  /** Add a provider to a stack. */
72
73
  async add(provider, input) {
73
- return trpcRequest(this.config, "v1.provider.add", { provider, ...input });
74
+ return orpcRequest(this.config, "v1.provider.add", { provider, ...input });
74
75
  }
75
76
  /** Refresh the access token. */
76
77
  async refreshToken(refreshToken) {
77
- return trpcRequest(this.config, "v1.auth.refresh", { refreshToken });
78
+ return orpcRequest(this.config, "v1.auth.refresh", { refreshToken });
78
79
  }
79
80
  /** Update the access token. */
80
81
  setAccessToken(accessToken) {
@@ -1,6 +1,7 @@
1
1
  // src/management.ts
2
- async function trpcRequest(config, procedure, input) {
3
- const url = new URL(`${config.apiUrl}/api/trpc/${procedure}`);
2
+ async function orpcRequest(config, procedure, input) {
3
+ const path = procedure.replace(/^v1\./, "").replace(/\./g, "/");
4
+ const url = new URL(`${config.apiUrl}/api/orpc/${path}`);
4
5
  const response = await fetch(url.toString(), {
5
6
  method: "POST",
6
7
  headers: {
@@ -8,15 +9,15 @@ async function trpcRequest(config, procedure, input) {
8
9
  "Authorization": `Bearer ${config.accessToken}`,
9
10
  ...config.headers
10
11
  },
11
- body: JSON.stringify(input),
12
+ body: JSON.stringify({ json: input }),
12
13
  signal: config.timeout ? AbortSignal.timeout(config.timeout) : void 0
13
14
  });
14
15
  if (!response.ok) {
15
16
  const error = await response.json().catch(() => ({ message: "Request failed" }));
16
- throw new Error(error.message || `HTTP ${response.status}`);
17
+ throw new Error(error?.json?.message || error?.message || `HTTP ${response.status}`);
17
18
  }
18
- const result = await response.json();
19
- return result.data;
19
+ const envelope = await response.json();
20
+ return envelope.json;
20
21
  }
21
22
  var BrokrClient = class {
22
23
  constructor(config) {
@@ -24,31 +25,31 @@ var BrokrClient = class {
24
25
  }
25
26
  /** Create a new stack with default providers. */
26
27
  async create(input) {
27
- return trpcRequest(this.config, "v1.stack.create", input);
28
+ return orpcRequest(this.config, "v1.stack.create", input);
28
29
  }
29
30
  /** List all stacks for the current user. */
30
31
  async listStacks() {
31
- return trpcRequest(this.config, "v1.stack.list", {});
32
+ return orpcRequest(this.config, "v1.stack.list", {});
32
33
  }
33
34
  /** Get a specific stack by ID. */
34
35
  async getStack(id) {
35
- return trpcRequest(this.config, "v1.stack.get", { id });
36
+ return orpcRequest(this.config, "v1.stack.get", { id });
36
37
  }
37
38
  /** Update a stack. */
38
39
  async updateStack(id, input) {
39
- return trpcRequest(this.config, "v1.stack.update", { id, ...input });
40
+ return orpcRequest(this.config, "v1.stack.update", { id, ...input });
40
41
  }
41
42
  /** Delete a stack. */
42
43
  async deleteStack(id) {
43
- return trpcRequest(this.config, "v1.stack.delete", { id });
44
+ return orpcRequest(this.config, "v1.stack.delete", { id });
44
45
  }
45
46
  /** Add a provider to a stack. */
46
47
  async add(provider, input) {
47
- return trpcRequest(this.config, "v1.provider.add", { provider, ...input });
48
+ return orpcRequest(this.config, "v1.provider.add", { provider, ...input });
48
49
  }
49
50
  /** Refresh the access token. */
50
51
  async refreshToken(refreshToken) {
51
- return trpcRequest(this.config, "v1.auth.refresh", { refreshToken });
52
+ return orpcRequest(this.config, "v1.auth.refresh", { refreshToken });
52
53
  }
53
54
  /** Update the access token. */
54
55
  setAccessToken(accessToken) {