@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.
- package/dist/account.js +34 -0
- package/dist/account.mjs +7 -0
- package/dist/auth.js +628 -114
- package/dist/auth.mjs +611 -111
- package/dist/chat.js +34 -0
- package/dist/chat.mjs +7 -0
- package/dist/events.js +64 -0
- package/dist/events.mjs +37 -0
- package/dist/feature.js +6304 -0
- package/dist/feature.mjs +6278 -0
- package/dist/files.js +428 -0
- package/dist/files.mjs +408 -0
- package/dist/index.d.ts +18 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4069 -454
- package/dist/index.mjs +4040 -448
- package/dist/logs.js +148 -0
- package/dist/logs.mjs +124 -0
- package/dist/management.js +14 -13
- package/dist/management.mjs +14 -13
- package/dist/next.js +2725 -0
- package/dist/next.mjs +2710 -0
- package/dist/notifications.js +140 -0
- package/dist/notifications.mjs +110 -0
- package/dist/payments.js +32 -0
- package/dist/payments.mjs +7 -0
- package/dist/react-notifications.js +286 -0
- package/dist/react-notifications.mjs +254 -0
- package/dist/react-styles.js +2718 -0
- package/dist/react-styles.mjs +2682 -0
- package/dist/react-theme.js +4194 -0
- package/dist/react-theme.mjs +4170 -0
- package/dist/react.js +8512 -209
- package/dist/react.mjs +8488 -179
- package/dist/runtime.js +2113 -385
- package/dist/runtime.mjs +2085 -397
- package/dist/src/account/config.d.ts +42 -0
- package/dist/src/account/config.d.ts.map +1 -0
- package/dist/src/account/index.d.ts +3 -0
- package/dist/src/account/index.d.ts.map +1 -0
- package/dist/src/ai/client.d.ts +58 -0
- package/dist/src/ai/client.d.ts.map +1 -0
- package/dist/src/ai/conversation-title.d.ts +13 -0
- package/dist/src/ai/conversation-title.d.ts.map +1 -0
- package/dist/src/ai/types.d.ts +81 -0
- package/dist/src/ai/types.d.ts.map +1 -0
- package/dist/src/auth.d.ts +133 -20
- package/dist/src/auth.d.ts.map +1 -1
- package/dist/src/chat/config.d.ts +61 -0
- package/dist/src/chat/config.d.ts.map +1 -0
- package/dist/src/chat/index.d.ts +3 -0
- package/dist/src/chat/index.d.ts.map +1 -0
- package/dist/src/chat/sse-parser.d.ts +44 -0
- package/dist/src/chat/sse-parser.d.ts.map +1 -0
- package/dist/src/dev-console.d.ts +18 -0
- package/dist/src/dev-console.d.ts.map +1 -0
- package/dist/src/email/client.d.ts +33 -0
- package/dist/src/email/client.d.ts.map +1 -0
- package/dist/src/email/templates.d.ts +15 -0
- package/dist/src/email/templates.d.ts.map +1 -0
- package/dist/src/email/types.d.ts +35 -0
- package/dist/src/email/types.d.ts.map +1 -0
- package/dist/src/env-detect.d.ts +25 -0
- package/dist/src/env-detect.d.ts.map +1 -0
- package/dist/src/errors.d.ts +53 -0
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/src/events/client.d.ts +25 -0
- package/dist/src/events/client.d.ts.map +1 -0
- package/dist/src/events/index.d.ts +9 -0
- package/dist/src/events/index.d.ts.map +1 -0
- package/dist/src/events/types.d.ts +10 -0
- package/dist/src/events/types.d.ts.map +1 -0
- package/dist/src/feature/canonical.d.ts +33 -0
- package/dist/src/feature/canonical.d.ts.map +1 -0
- package/dist/src/feature/create-feature.d.ts +33 -0
- package/dist/src/feature/create-feature.d.ts.map +1 -0
- package/dist/src/feature/db.d.ts +16 -0
- package/dist/src/feature/db.d.ts.map +1 -0
- package/dist/src/feature/handlers.d.ts +28 -0
- package/dist/src/feature/handlers.d.ts.map +1 -0
- package/dist/src/feature/index.d.ts +21 -0
- package/dist/src/feature/index.d.ts.map +1 -0
- package/dist/src/feature/manifest.d.ts +173 -0
- package/dist/src/feature/manifest.d.ts.map +1 -0
- package/dist/src/feature/mapping.d.ts +18 -0
- package/dist/src/feature/mapping.d.ts.map +1 -0
- package/dist/src/feature/runtime.d.ts +45 -0
- package/dist/src/feature/runtime.d.ts.map +1 -0
- package/dist/src/feature/types.d.ts +65 -0
- package/dist/src/feature/types.d.ts.map +1 -0
- package/dist/src/files/client.d.ts +28 -0
- package/dist/src/files/client.d.ts.map +1 -0
- package/dist/src/files/types.d.ts +28 -0
- package/dist/src/files/types.d.ts.map +1 -0
- package/dist/src/fix-registry.d.ts +8 -0
- package/dist/src/fix-registry.d.ts.map +1 -0
- package/dist/src/gateway.d.ts +32 -0
- package/dist/src/gateway.d.ts.map +1 -0
- package/dist/src/logs/capture.d.ts +56 -0
- package/dist/src/logs/capture.d.ts.map +1 -0
- package/dist/src/logs/index.d.ts +2 -0
- package/dist/src/logs/index.d.ts.map +1 -0
- package/dist/src/management.d.ts +1 -1
- package/dist/src/management.d.ts.map +1 -1
- package/dist/src/models.d.ts +32 -0
- package/dist/src/models.d.ts.map +1 -0
- package/dist/src/next/auth.d.ts +54 -0
- package/dist/src/next/auth.d.ts.map +1 -0
- package/dist/src/next/chat.d.ts +31 -0
- package/dist/src/next/chat.d.ts.map +1 -0
- package/dist/src/next/index.d.ts +14 -0
- package/dist/src/next/index.d.ts.map +1 -0
- package/dist/src/next/notifications.d.ts +67 -0
- package/dist/src/next/notifications.d.ts.map +1 -0
- package/dist/src/notifications/built-ins.d.ts +9 -0
- package/dist/src/notifications/built-ins.d.ts.map +1 -0
- package/dist/src/notifications/client.d.ts +38 -0
- package/dist/src/notifications/client.d.ts.map +1 -0
- package/dist/src/notifications/config.d.ts +71 -0
- package/dist/src/notifications/config.d.ts.map +1 -0
- package/dist/src/notifications/index.d.ts +6 -0
- package/dist/src/notifications/index.d.ts.map +1 -0
- package/dist/src/notifications/registry.d.ts +67 -0
- package/dist/src/notifications/registry.d.ts.map +1 -0
- package/dist/src/notifications/types.d.ts +48 -0
- package/dist/src/notifications/types.d.ts.map +1 -0
- package/dist/src/payments/client.d.ts +64 -0
- package/dist/src/payments/client.d.ts.map +1 -0
- package/dist/src/payments/config.d.ts +46 -0
- package/dist/src/payments/config.d.ts.map +1 -0
- package/dist/src/payments/entitlements.d.ts +48 -0
- package/dist/src/payments/entitlements.d.ts.map +1 -0
- package/dist/src/payments/types.d.ts +135 -0
- package/dist/src/payments/types.d.ts.map +1 -0
- package/dist/src/react/BrokrErrorBoundary.d.ts +23 -0
- package/dist/src/react/BrokrErrorBoundary.d.ts.map +1 -0
- package/dist/src/react/account/AccountPanel.d.ts +12 -0
- package/dist/src/react/account/AccountPanel.d.ts.map +1 -0
- package/dist/src/react/account/Avatar.d.ts +11 -0
- package/dist/src/react/account/Avatar.d.ts.map +1 -0
- package/dist/src/react/account/ProfilePhotoButton.d.ts +7 -0
- package/dist/src/react/account/ProfilePhotoButton.d.ts.map +1 -0
- package/dist/src/react/account/UserButton.d.ts +7 -0
- package/dist/src/react/account/UserButton.d.ts.map +1 -0
- package/dist/src/react/auth-pages/AuthPageShell.d.ts +9 -0
- package/dist/src/react/auth-pages/AuthPageShell.d.ts.map +1 -0
- package/dist/src/react/auth-pages/SignInPage.d.ts +9 -0
- package/dist/src/react/auth-pages/SignInPage.d.ts.map +1 -0
- package/dist/src/react/auth-pages/SignUpPage.d.ts +8 -0
- package/dist/src/react/auth-pages/SignUpPage.d.ts.map +1 -0
- package/dist/src/react/auth.d.ts +1 -49
- package/dist/src/react/auth.d.ts.map +1 -1
- package/dist/src/react/chat/AIChat.d.ts +4 -0
- package/dist/src/react/chat/AIChat.d.ts.map +1 -0
- package/dist/src/react/chat/ChatContext.d.ts +76 -0
- package/dist/src/react/chat/ChatContext.d.ts.map +1 -0
- package/dist/src/react/chat/ChatInput.d.ts +3 -0
- package/dist/src/react/chat/ChatInput.d.ts.map +1 -0
- package/dist/src/react/chat/MarkdownRenderer.d.ts +5 -0
- package/dist/src/react/chat/MarkdownRenderer.d.ts.map +1 -0
- package/dist/src/react/chat/MessageBubble.d.ts +14 -0
- package/dist/src/react/chat/MessageBubble.d.ts.map +1 -0
- package/dist/src/react/chat/MessagePane.d.ts +10 -0
- package/dist/src/react/chat/MessagePane.d.ts.map +1 -0
- package/dist/src/react/chat/ModelSelector.d.ts +13 -0
- package/dist/src/react/chat/ModelSelector.d.ts.map +1 -0
- package/dist/src/react/chat/ThreadSidebar.d.ts +3 -0
- package/dist/src/react/chat/ThreadSidebar.d.ts.map +1 -0
- package/dist/src/react/chat/index.d.ts +5 -0
- package/dist/src/react/chat/index.d.ts.map +1 -0
- package/dist/src/react/chat/token-limit.d.ts +14 -0
- package/dist/src/react/chat/token-limit.d.ts.map +1 -0
- package/dist/src/react/chat/types.d.ts +65 -0
- package/dist/src/react/chat/types.d.ts.map +1 -0
- package/dist/src/react/chat/useChat.d.ts +57 -0
- package/dist/src/react/chat/useChat.d.ts.map +1 -0
- package/dist/src/react/composites/FabAI.d.ts +15 -0
- package/dist/src/react/composites/FabAI.d.ts.map +1 -0
- package/dist/src/react/composites/FeedbackWidget.d.ts +10 -0
- package/dist/src/react/composites/FeedbackWidget.d.ts.map +1 -0
- package/dist/src/react/composites/SmartUpload.d.ts +12 -0
- package/dist/src/react/composites/SmartUpload.d.ts.map +1 -0
- package/dist/src/react/config.d.ts +23 -0
- package/dist/src/react/config.d.ts.map +1 -0
- package/dist/src/react/context.d.ts +4 -0
- package/dist/src/react/context.d.ts.map +1 -0
- package/dist/src/react/css/account.d.ts +2 -0
- package/dist/src/react/css/account.d.ts.map +1 -0
- package/dist/src/react/css/animations.d.ts +2 -0
- package/dist/src/react/css/animations.d.ts.map +1 -0
- package/dist/src/react/css/auth.d.ts +2 -0
- package/dist/src/react/css/auth.d.ts.map +1 -0
- package/dist/src/react/css/chat-extras.d.ts +2 -0
- package/dist/src/react/css/chat-extras.d.ts.map +1 -0
- package/dist/src/react/css/chat.d.ts +2 -0
- package/dist/src/react/css/chat.d.ts.map +1 -0
- package/dist/src/react/css/composites.d.ts +2 -0
- package/dist/src/react/css/composites.d.ts.map +1 -0
- package/dist/src/react/css/gates.d.ts +2 -0
- package/dist/src/react/css/gates.d.ts.map +1 -0
- package/dist/src/react/css/index.d.ts +3 -0
- package/dist/src/react/css/index.d.ts.map +1 -0
- package/dist/src/react/css/markdown.d.ts +2 -0
- package/dist/src/react/css/markdown.d.ts.map +1 -0
- package/dist/src/react/css/notifications.d.ts +2 -0
- package/dist/src/react/css/notifications.d.ts.map +1 -0
- package/dist/src/react/css/primitives.d.ts +2 -0
- package/dist/src/react/css/primitives.d.ts.map +1 -0
- package/dist/src/react/css/reset.d.ts +2 -0
- package/dist/src/react/css/reset.d.ts.map +1 -0
- package/dist/src/react/css/responsive.d.ts +2 -0
- package/dist/src/react/css/responsive.d.ts.map +1 -0
- package/dist/src/react/css/skeleton.d.ts +2 -0
- package/dist/src/react/css/skeleton.d.ts.map +1 -0
- package/dist/src/react/css/tokens.d.ts +2 -0
- package/dist/src/react/css/tokens.d.ts.map +1 -0
- package/dist/src/react/gates/AuthWall.d.ts +7 -0
- package/dist/src/react/gates/AuthWall.d.ts.map +1 -0
- package/dist/src/react/gates/BillingBoundary.d.ts +4 -0
- package/dist/src/react/gates/BillingBoundary.d.ts.map +1 -0
- package/dist/src/react/gates/Gate.d.ts +9 -0
- package/dist/src/react/gates/Gate.d.ts.map +1 -0
- package/dist/src/react/gates/RequirePlan.d.ts +4 -0
- package/dist/src/react/gates/RequirePlan.d.ts.map +1 -0
- package/dist/src/react/gates/RequireUser.d.ts +4 -0
- package/dist/src/react/gates/RequireUser.d.ts.map +1 -0
- package/dist/src/react/gates/UsageGate.d.ts +4 -0
- package/dist/src/react/gates/UsageGate.d.ts.map +1 -0
- package/dist/src/react/helpers.d.ts +7 -0
- package/dist/src/react/helpers.d.ts.map +1 -0
- package/dist/src/react/hooks/use-theme.d.ts +15 -0
- package/dist/src/react/hooks/use-theme.d.ts.map +1 -0
- package/dist/src/react/hooks/use-user.d.ts +12 -0
- package/dist/src/react/hooks/use-user.d.ts.map +1 -0
- package/dist/src/react/icons.d.ts +26 -0
- package/dist/src/react/icons.d.ts.map +1 -0
- package/dist/src/react/index.d.ts +48 -0
- package/dist/src/react/index.d.ts.map +1 -0
- package/dist/src/react/notifications/NotificationBell.d.ts +7 -0
- package/dist/src/react/notifications/NotificationBell.d.ts.map +1 -0
- package/dist/src/react/notifications/NotificationList.d.ts +7 -0
- package/dist/src/react/notifications/NotificationList.d.ts.map +1 -0
- package/dist/src/react/notifications/Toast.d.ts +13 -0
- package/dist/src/react/notifications/Toast.d.ts.map +1 -0
- package/dist/src/react/notifications/index.d.ts +8 -0
- package/dist/src/react/notifications/index.d.ts.map +1 -0
- package/dist/src/react/notifications/provider.d.ts +14 -0
- package/dist/src/react/notifications/provider.d.ts.map +1 -0
- package/dist/src/react/notifications/use-notifications.d.ts +24 -0
- package/dist/src/react/notifications/use-notifications.d.ts.map +1 -0
- package/dist/src/react/payments/AutoReloadToggle.d.ts +6 -0
- package/dist/src/react/payments/AutoReloadToggle.d.ts.map +1 -0
- package/dist/src/react/payments/Balance.d.ts +8 -0
- package/dist/src/react/payments/Balance.d.ts.map +1 -0
- package/dist/src/react/payments/CancelSubscription.d.ts +6 -0
- package/dist/src/react/payments/CancelSubscription.d.ts.map +1 -0
- package/dist/src/react/payments/CheckoutButton.d.ts +7 -0
- package/dist/src/react/payments/CheckoutButton.d.ts.map +1 -0
- package/dist/src/react/payments/CustomerPortalButton.d.ts +6 -0
- package/dist/src/react/payments/CustomerPortalButton.d.ts.map +1 -0
- package/dist/src/react/payments/FeatureMeter.d.ts +6 -0
- package/dist/src/react/payments/FeatureMeter.d.ts.map +1 -0
- package/dist/src/react/payments/Plans.d.ts +8 -0
- package/dist/src/react/payments/Plans.d.ts.map +1 -0
- package/dist/src/react/payments/TopUpButton.d.ts +8 -0
- package/dist/src/react/payments/TopUpButton.d.ts.map +1 -0
- package/dist/src/react/payments/UpdateBilling.d.ts +3 -0
- package/dist/src/react/payments/UpdateBilling.d.ts.map +1 -0
- package/dist/src/react/payments/UpgradePrompt.d.ts +8 -0
- package/dist/src/react/payments/UpgradePrompt.d.ts.map +1 -0
- package/dist/src/react/primitives/Skeleton.d.ts +15 -0
- package/dist/src/react/primitives/Skeleton.d.ts.map +1 -0
- package/dist/src/react/provider.d.ts +21 -0
- package/dist/src/react/provider.d.ts.map +1 -0
- package/dist/src/react/request.d.ts +2 -0
- package/dist/src/react/request.d.ts.map +1 -0
- package/dist/src/react/styles-entry.d.ts +4 -0
- package/dist/src/react/styles-entry.d.ts.map +1 -0
- package/dist/src/react/styles.d.ts +2 -0
- package/dist/src/react/styles.d.ts.map +1 -0
- package/dist/src/react/theme-entry.d.ts +3 -0
- package/dist/src/react/theme-entry.d.ts.map +1 -0
- package/dist/src/react/theme.d.ts +6 -0
- package/dist/src/react/theme.d.ts.map +1 -0
- package/dist/src/react/types.d.ts +191 -0
- package/dist/src/react/types.d.ts.map +1 -0
- package/dist/src/react/use-brokr-theme.d.ts +6 -0
- package/dist/src/react/use-brokr-theme.d.ts.map +1 -0
- package/dist/src/runtime.d.ts +69 -180
- package/dist/src/runtime.d.ts.map +1 -1
- package/dist/src/storage/client.d.ts +113 -0
- package/dist/src/storage/client.d.ts.map +1 -0
- package/dist/src/storage/types.d.ts +60 -0
- package/dist/src/storage/types.d.ts.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/types.d.ts.map +1 -1
- 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
|
+
};
|
package/dist/management.js
CHANGED
|
@@ -25,8 +25,9 @@ __export(management_exports, {
|
|
|
25
25
|
default: () => createBrokrClient
|
|
26
26
|
});
|
|
27
27
|
module.exports = __toCommonJS(management_exports);
|
|
28
|
-
async function
|
|
29
|
-
const
|
|
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
|
|
43
|
+
throw new Error(error?.json?.message || error?.message || `HTTP ${response.status}`);
|
|
43
44
|
}
|
|
44
|
-
const
|
|
45
|
-
return
|
|
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
|
|
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
|
|
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
|
|
62
|
+
return orpcRequest(this.config, "v1.stack.get", { id });
|
|
62
63
|
}
|
|
63
64
|
/** Update a stack. */
|
|
64
65
|
async updateStack(id, input) {
|
|
65
|
-
return
|
|
66
|
+
return orpcRequest(this.config, "v1.stack.update", { id, ...input });
|
|
66
67
|
}
|
|
67
68
|
/** Delete a stack. */
|
|
68
69
|
async deleteStack(id) {
|
|
69
|
-
return
|
|
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
|
|
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
|
|
78
|
+
return orpcRequest(this.config, "v1.auth.refresh", { refreshToken });
|
|
78
79
|
}
|
|
79
80
|
/** Update the access token. */
|
|
80
81
|
setAccessToken(accessToken) {
|
package/dist/management.mjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// src/management.ts
|
|
2
|
-
async function
|
|
3
|
-
const
|
|
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
|
|
17
|
+
throw new Error(error?.json?.message || error?.message || `HTTP ${response.status}`);
|
|
17
18
|
}
|
|
18
|
-
const
|
|
19
|
-
return
|
|
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
|
|
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
|
|
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
|
|
36
|
+
return orpcRequest(this.config, "v1.stack.get", { id });
|
|
36
37
|
}
|
|
37
38
|
/** Update a stack. */
|
|
38
39
|
async updateStack(id, input) {
|
|
39
|
-
return
|
|
40
|
+
return orpcRequest(this.config, "v1.stack.update", { id, ...input });
|
|
40
41
|
}
|
|
41
42
|
/** Delete a stack. */
|
|
42
43
|
async deleteStack(id) {
|
|
43
|
-
return
|
|
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
|
|
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
|
|
52
|
+
return orpcRequest(this.config, "v1.auth.refresh", { refreshToken });
|
|
52
53
|
}
|
|
53
54
|
/** Update the access token. */
|
|
54
55
|
setAccessToken(accessToken) {
|