@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
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brokr SDK — Email types
|
|
3
|
+
*/
|
|
4
|
+
export interface EmailParams {
|
|
5
|
+
to: string | string[];
|
|
6
|
+
subject: string;
|
|
7
|
+
html?: string;
|
|
8
|
+
text?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Override the from address. Must be on your stack's verified domain.
|
|
11
|
+
* Defaults to noreply@{your stack domain}.
|
|
12
|
+
*/
|
|
13
|
+
from?: string;
|
|
14
|
+
}
|
|
15
|
+
/** Built-in template names. */
|
|
16
|
+
export type BuiltinTemplateName = 'welcome' | 'magicLink' | 'passwordReset' | 'invoice' | 'notification';
|
|
17
|
+
export interface SendTemplateParams {
|
|
18
|
+
/** Template name — must be a built-in template or a custom one you've registered. */
|
|
19
|
+
template: BuiltinTemplateName | (string & {});
|
|
20
|
+
/** Recipient email(s). */
|
|
21
|
+
to: string | string[];
|
|
22
|
+
/** Variables to interpolate into the template. */
|
|
23
|
+
variables: Record<string, string>;
|
|
24
|
+
/** Override the from address. */
|
|
25
|
+
from?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface EmailTemplate {
|
|
28
|
+
/** Template identifier. */
|
|
29
|
+
name: string;
|
|
30
|
+
/** Subject line pattern with {{variable}} placeholders. */
|
|
31
|
+
subject: string;
|
|
32
|
+
/** HTML render function. */
|
|
33
|
+
html: (variables: Record<string, string>) => string;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/email/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,+BAA+B;AAC/B,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,WAAW,GAAG,eAAe,GAAG,SAAS,GAAG,cAAc,CAAC;AAEzG,MAAM,WAAW,kBAAkB;IACjC,qFAAqF;IACrF,QAAQ,EAAE,mBAAmB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAC9C,0BAA0B;IAC1B,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACtB,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC;CACrD"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brokr Environment Detection — zero-config, zero-setup.
|
|
3
|
+
*
|
|
4
|
+
* Determines dev/staging/production automatically from deployment signals.
|
|
5
|
+
* Developers never set this. It just works.
|
|
6
|
+
*
|
|
7
|
+
* Detection logic:
|
|
8
|
+
* - No VERCEL env var → dev (local machine, `next dev`, `node server.js`)
|
|
9
|
+
* - VERCEL + VERCEL_ENV=preview → staging (preview deployments, `brokr create --staging`)
|
|
10
|
+
* - VERCEL + VERCEL_ENV=production → production (live deployment)
|
|
11
|
+
* - Fallback: localhost hostname → dev, *.brokr.sh → production
|
|
12
|
+
*/
|
|
13
|
+
export type BrokrEnv = 'development' | 'staging' | 'production';
|
|
14
|
+
/**
|
|
15
|
+
* Detect the current Brokr environment. Result is cached after first call.
|
|
16
|
+
* Works server-side (Node.js) and client-side (browser).
|
|
17
|
+
*/
|
|
18
|
+
export declare function detectEnv(): BrokrEnv;
|
|
19
|
+
/** Check if we're in a development environment. */
|
|
20
|
+
export declare function isDev(): boolean;
|
|
21
|
+
/** Check if we're in a staging/preview environment. */
|
|
22
|
+
export declare function isStaging(): boolean;
|
|
23
|
+
/** Check if we're in production. */
|
|
24
|
+
export declare function isProd(): boolean;
|
|
25
|
+
//# sourceMappingURL=env-detect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-detect.d.ts","sourceRoot":"","sources":["../../src/env-detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,SAAS,GAAG,YAAY,CAAC;AAIhE;;;GAGG;AACH,wBAAgB,SAAS,IAAI,QAAQ,CAIpC;AAED,mDAAmD;AACnD,wBAAgB,KAAK,IAAI,OAAO,CAE/B;AAED,uDAAuD;AACvD,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED,oCAAoC;AACpC,wBAAgB,MAAM,IAAI,OAAO,CAEhC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brokr SDK — Error hierarchy
|
|
3
|
+
*
|
|
4
|
+
* All SDK errors extend BrokrError with structured codes, capability tags,
|
|
5
|
+
* and retryable hints so callers can programmatically handle failures.
|
|
6
|
+
*
|
|
7
|
+
* New in v2: errorCode, requestId, hint, component stamping, fix/docsUrl getters.
|
|
8
|
+
*/
|
|
9
|
+
export declare class BrokrError extends Error {
|
|
10
|
+
readonly code: string;
|
|
11
|
+
readonly capability?: string | undefined;
|
|
12
|
+
readonly retryable: boolean;
|
|
13
|
+
readonly errorCode?: string | undefined;
|
|
14
|
+
readonly requestId?: string | undefined;
|
|
15
|
+
readonly hint?: string | undefined;
|
|
16
|
+
/** Stamped by each SDK client method for "which component broke" attribution. */
|
|
17
|
+
component?: string;
|
|
18
|
+
constructor(message: string, code: string, capability?: string | undefined, retryable?: boolean, errorCode?: string | undefined, requestId?: string | undefined, hint?: string | undefined);
|
|
19
|
+
/** Multi-line terminal fix block — looked up from error code. */
|
|
20
|
+
get fix(): string | undefined;
|
|
21
|
+
/** Documentation URL for this error code. */
|
|
22
|
+
get docsUrl(): string | undefined;
|
|
23
|
+
/** Safe message for end users — zero technical language. */
|
|
24
|
+
toUserMessage(): string;
|
|
25
|
+
toString(): string;
|
|
26
|
+
toJSON(): object;
|
|
27
|
+
}
|
|
28
|
+
/** Thrown when BROKR_TOKEN is missing or invalid. */
|
|
29
|
+
export declare class BrokrAuthError extends BrokrError {
|
|
30
|
+
constructor(message: string, code: string);
|
|
31
|
+
}
|
|
32
|
+
/** Thrown on HTTP 429 — includes `retryAfter` seconds from the Retry-After header. */
|
|
33
|
+
export declare class BrokrRateLimitError extends BrokrError {
|
|
34
|
+
readonly retryAfter: number;
|
|
35
|
+
constructor(message: string, retryAfter: number, capability?: string);
|
|
36
|
+
}
|
|
37
|
+
/** Thrown when the Brokr gateway is unreachable. */
|
|
38
|
+
export declare class BrokrNetworkError extends BrokrError {
|
|
39
|
+
constructor(message: string, capability?: string);
|
|
40
|
+
}
|
|
41
|
+
/** Thrown when the request times out. */
|
|
42
|
+
export declare class BrokrTimeoutError extends BrokrError {
|
|
43
|
+
constructor(message: string, capability?: string);
|
|
44
|
+
}
|
|
45
|
+
/** Thrown when a requested resource does not exist (HTTP 404). */
|
|
46
|
+
export declare class BrokrNotFoundError extends BrokrError {
|
|
47
|
+
constructor(message: string, capability?: string);
|
|
48
|
+
}
|
|
49
|
+
/** Thrown when input validation fails. */
|
|
50
|
+
export declare class BrokrValidationError extends BrokrError {
|
|
51
|
+
constructor(message: string, capability?: string);
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,qBAAa,UAAW,SAAQ,KAAK;aAMjB,IAAI,EAAE,MAAM;aACZ,UAAU,CAAC,EAAE,MAAM;aACnB,SAAS;aACT,SAAS,CAAC,EAAE,MAAM;aAClB,SAAS,CAAC,EAAE,MAAM;aAClB,IAAI,CAAC,EAAE,MAAM;IAV/B,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;gBAGjB,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,SAAS,UAAQ,EACjB,SAAS,CAAC,EAAE,MAAM,YAAA,EAClB,SAAS,CAAC,EAAE,MAAM,YAAA,EAClB,IAAI,CAAC,EAAE,MAAM,YAAA;IAM/B,iEAAiE;IACjE,IAAI,GAAG,IAAI,MAAM,GAAG,SAAS,CAG5B;IAED,6CAA6C;IAC7C,IAAI,OAAO,IAAI,MAAM,GAAG,SAAS,CAGhC;IAED,4DAA4D;IAC5D,aAAa,IAAI,MAAM;IAuBvB,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI,MAAM;CAajB;AAED,qDAAqD;AACrD,qBAAa,cAAe,SAAQ,UAAU;gBAChC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAI1C;AAED,sFAAsF;AACtF,qBAAa,mBAAoB,SAAQ,UAAU;aAG/B,UAAU,EAAE,MAAM;gBADlC,OAAO,EAAE,MAAM,EACC,UAAU,EAAE,MAAM,EAClC,UAAU,CAAC,EAAE,MAAM;CAKtB;AAED,oDAAoD;AACpD,qBAAa,iBAAkB,SAAQ,UAAU;gBACnC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;CAIjD;AAED,yCAAyC;AACzC,qBAAa,iBAAkB,SAAQ,UAAU;gBACnC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;CAIjD;AAED,kEAAkE;AAClE,qBAAa,kBAAmB,SAAQ,UAAU;gBACpC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;CAIjD;AAED,0CAA0C;AAC1C,qBAAa,oBAAqB,SAAQ,UAAU;gBACtC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;CAIjD"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event Bus — Client
|
|
3
|
+
*
|
|
4
|
+
* v1: Local synchronous event dispatch within the same feature/request.
|
|
5
|
+
* v2 (future): Cross-feature events via gateway + CF Queues.
|
|
6
|
+
*/
|
|
7
|
+
import type { EmitResult } from './types';
|
|
8
|
+
import type { EventHandler } from './types';
|
|
9
|
+
/**
|
|
10
|
+
* Creates a scoped event bus for a single feature.
|
|
11
|
+
* Handlers registered with on() fire synchronously when emit() is called.
|
|
12
|
+
*/
|
|
13
|
+
export declare function createEventBus(featureSlug: string): {
|
|
14
|
+
/**
|
|
15
|
+
* Register a handler for an event.
|
|
16
|
+
* In v1, handlers fire synchronously within the same request.
|
|
17
|
+
*/
|
|
18
|
+
on<T = unknown>(event: string, handler: EventHandler<T>): void;
|
|
19
|
+
/**
|
|
20
|
+
* Emit an event. In v1, dispatches synchronously to all registered handlers.
|
|
21
|
+
* Returns a deliveryId for idempotency tracking.
|
|
22
|
+
*/
|
|
23
|
+
emit<T = unknown>(event: string, payload: T): Promise<EmitResult>;
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/events/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,SAAS,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM;IAI9C;;;OAGG;OACA,CAAC,mBAAmB,MAAM,WAAW,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;IAO9D;;;OAGG;SACQ,CAAC,mBAAmB,MAAM,WAAW,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;EAoB1E"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event Bus — Public API
|
|
3
|
+
*
|
|
4
|
+
* Re-exports the event bus factory and types for @brokr/sdk/events.
|
|
5
|
+
*/
|
|
6
|
+
export { createEventBus } from './client';
|
|
7
|
+
export type { FeatureEvent, EmitResult } from './types';
|
|
8
|
+
export type { EventHandler } from './types';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/events/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event Bus — Types
|
|
3
|
+
*
|
|
4
|
+
* Re-exports core event types from feature/types.ts.
|
|
5
|
+
* Separate file for the ./events export path.
|
|
6
|
+
*/
|
|
7
|
+
export type { EmitResult, FeatureEvent } from '../feature/types';
|
|
8
|
+
/** Event handler function signature. */
|
|
9
|
+
export type EventHandler<T = unknown> = (event: import('../feature/types').FeatureEvent<T>) => Promise<void>;
|
|
10
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/events/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEjE,wCAAwC;AACxC,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,KAAK,EAAE,OAAO,kBAAkB,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creator SDK — Canonical Entity Resolution
|
|
3
|
+
*
|
|
4
|
+
* Provides brokr.user(id) and brokr.users(ids) for feature creators.
|
|
5
|
+
* Resolves users from the vibe coder's own user table using convention-based
|
|
6
|
+
* or explicit mapping from brokr.config.ts.
|
|
7
|
+
*
|
|
8
|
+
* Uses request-scoped batching to prevent N+1 queries — multiple
|
|
9
|
+
* brokr.user(id) calls in the same microtask batch into a single SQL query.
|
|
10
|
+
*/
|
|
11
|
+
import type { CanonicalUser } from './types';
|
|
12
|
+
/** Known table names that typically hold user data. */
|
|
13
|
+
export declare const USER_TABLE_CONVENTIONS: string[];
|
|
14
|
+
/** Known column names by canonical field. */
|
|
15
|
+
export declare const COLUMN_CONVENTIONS: Record<string, string[]>;
|
|
16
|
+
/**
|
|
17
|
+
* Scan information_schema.columns and auto-detect user table mapping.
|
|
18
|
+
* Used by the install flow — NOT at runtime.
|
|
19
|
+
*/
|
|
20
|
+
export declare function detectUserMapping(sql: (strings: TemplateStringsArray, ...values: unknown[]) => Promise<Record<string, unknown>[]>): Promise<{
|
|
21
|
+
table: string;
|
|
22
|
+
columns: Record<string, string>;
|
|
23
|
+
} | null>;
|
|
24
|
+
/**
|
|
25
|
+
* Creates a user resolver with request-scoped batching.
|
|
26
|
+
* Multiple calls to resolveUser() in the same microtask get batched
|
|
27
|
+
* into a single SQL query.
|
|
28
|
+
*/
|
|
29
|
+
export declare function createUserResolver(): {
|
|
30
|
+
resolveUser: (id: string) => Promise<CanonicalUser | null>;
|
|
31
|
+
resolveUsers: (ids: string[]) => Promise<Map<string, CanonicalUser>>;
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=canonical.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonical.d.ts","sourceRoot":"","sources":["../../../src/feature/canonical.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAO7C,uDAAuD;AACvD,eAAO,MAAM,sBAAsB,UAAuD,CAAC;AAE3F,6CAA6C;AAC7C,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAKvD,CAAC;AAEF;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,GAC/F,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,IAAI,CAAC,CA0BpE;AAMD;;;;GAIG;AACH,wBAAgB,kBAAkB;sBAwEP,MAAM,KAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;wBAa9B,MAAM,EAAE,KAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;EAWhF"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creator SDK — createBrokrFeature
|
|
3
|
+
*
|
|
4
|
+
* The main entry point for feature creators. Provides a scoped FeatureRuntime
|
|
5
|
+
* with isolated database, canonical entity resolution, events, and all existing
|
|
6
|
+
* Brokr capabilities.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { createBrokrFeature } from '@brokr/sdk/feature'
|
|
11
|
+
*
|
|
12
|
+
* export const { LikeButton, handlers } = createBrokrFeature('tinder-likes', (brokr) => ({
|
|
13
|
+
* LikeButton: () => <button onClick={() => like()}>Like</button>,
|
|
14
|
+
* handlers: brokr.handlers({
|
|
15
|
+
* like: async (req) => {
|
|
16
|
+
* const { toUserId } = await req.json()
|
|
17
|
+
* await brokr.db.sql`INSERT INTO likes (from_user_id, to_user_id) VALUES (${userId}, ${toUserId})`
|
|
18
|
+
* return { ok: true }
|
|
19
|
+
* },
|
|
20
|
+
* }),
|
|
21
|
+
* }))
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
import { type FeatureRuntime } from './runtime';
|
|
25
|
+
/**
|
|
26
|
+
* Create a Brokr feature with a scoped runtime.
|
|
27
|
+
*
|
|
28
|
+
* @param slug - Feature slug (e.g., 'tinder-likes'). Must match the slug in feature.json.
|
|
29
|
+
* @param factory - Function that receives the scoped FeatureRuntime and returns named exports.
|
|
30
|
+
* @returns The plain object of named exports (components, hooks, handlers) from the factory.
|
|
31
|
+
*/
|
|
32
|
+
export declare function createBrokrFeature<T extends Record<string, unknown>>(slug: string, factory: (brokr: FeatureRuntime) => T): T;
|
|
33
|
+
//# sourceMappingURL=create-feature.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-feature.d.ts","sourceRoot":"","sources":["../../../src/feature/create-feature.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAErE;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,CAAC,GACpC,CAAC,CAWH"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creator SDK — Scoped Database Client
|
|
3
|
+
*
|
|
4
|
+
* Provides brokr.db.sql and brokr.db.query for feature creators.
|
|
5
|
+
* All queries execute against the feature's isolated Postgres schema.
|
|
6
|
+
*
|
|
7
|
+
* The SDK reads DATABASE_URL from env (injected by Brokr at provision time)
|
|
8
|
+
* and sets search_path = brokr_{slug}, public on the connection.
|
|
9
|
+
*/
|
|
10
|
+
import type { FeatureDb } from './types';
|
|
11
|
+
/**
|
|
12
|
+
* Creates a scoped database client for a feature.
|
|
13
|
+
* Sets search_path to the feature's schema so all queries are isolated.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createFeatureDb(schemaName: string): FeatureDb;
|
|
16
|
+
//# sourceMappingURL=db.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../../src/feature/db.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,SAAS,CAAC;AAmB3D;;;GAGG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAyD7D"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creator SDK — HTTP Handler Factory
|
|
3
|
+
*
|
|
4
|
+
* Creates GET/POST route handlers for feature API routes.
|
|
5
|
+
* Generalizes the createBrokrHandlers pattern from chat.ts.
|
|
6
|
+
*
|
|
7
|
+
* Usage by creator:
|
|
8
|
+
* handlers: brokr.handlers({
|
|
9
|
+
* like: async (req) => { ... return { ok: true } },
|
|
10
|
+
* unlike: async (req) => { ... return { ok: true } },
|
|
11
|
+
* })
|
|
12
|
+
*
|
|
13
|
+
* Wired by vibe coder:
|
|
14
|
+
* // app/api/brokr/tinder-likes/route.ts
|
|
15
|
+
* import { handlers } from '@/features/tinder-likes/server'
|
|
16
|
+
* export const { GET, POST } = handlers
|
|
17
|
+
*
|
|
18
|
+
* Routes dispatched via ?action=<name>:
|
|
19
|
+
* POST /api/brokr/tinder-likes?action=like
|
|
20
|
+
* GET /api/brokr/tinder-likes?action=list
|
|
21
|
+
*/
|
|
22
|
+
import type { HandlerFn, FeatureHandlers } from './types';
|
|
23
|
+
/**
|
|
24
|
+
* Creates feature HTTP handlers from a route map.
|
|
25
|
+
* Each handler receives the raw Request and returns a Response or plain object.
|
|
26
|
+
*/
|
|
27
|
+
export declare function createFeatureHandlers(featureSlug: string, routes: Record<string, HandlerFn>): FeatureHandlers;
|
|
28
|
+
//# sourceMappingURL=handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/feature/handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAChC,eAAe,CAkDjB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @brokr/sdk/feature — Creator SDK Entry Point
|
|
3
|
+
*
|
|
4
|
+
* The public API for feature creators building on the Brokr platform.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { createBrokrFeature } from '@brokr/sdk/feature'
|
|
9
|
+
*
|
|
10
|
+
* export const { MyComponent, handlers } = createBrokrFeature('my-feature', (brokr) => ({
|
|
11
|
+
* MyComponent: () => <div>Hello</div>,
|
|
12
|
+
* handlers: brokr.handlers({ action: async (req) => ({ ok: true }) }),
|
|
13
|
+
* }))
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export { createBrokrFeature } from './create-feature';
|
|
17
|
+
export { featureManifestSchema, parseFeatureManifest } from './manifest';
|
|
18
|
+
export type { FeatureRuntime } from './runtime';
|
|
19
|
+
export type { FeatureManifest } from './manifest';
|
|
20
|
+
export type { CanonicalUser, EmitResult, FeatureEvent, NotifyParams, FeatureDb, FeatureHandlers, HandlerFn, UserMapping, FeatureContext, } from './types';
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/feature/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACzE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,YAAY,EACV,aAAa,EACb,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,eAAe,EACf,SAAS,EACT,WAAW,EACX,cAAc,GACf,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const featureManifestSchema: z.ZodObject<{
|
|
3
|
+
$schema: z.ZodOptional<z.ZodString>;
|
|
4
|
+
name: z.ZodString;
|
|
5
|
+
version: z.ZodString;
|
|
6
|
+
description: z.ZodString;
|
|
7
|
+
author: z.ZodString;
|
|
8
|
+
requires: z.ZodDefault<z.ZodObject<{
|
|
9
|
+
capabilities: z.ZodDefault<z.ZodArray<z.ZodEnum<["database", "deployment", "email", "repo", "ai_provider", "kv_store", "storage", "auth", "payments", "notifications"]>, "many">>;
|
|
10
|
+
features: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
11
|
+
envVars: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
12
|
+
}, "strip", z.ZodTypeAny, {
|
|
13
|
+
capabilities: ("notifications" | "auth" | "database" | "deployment" | "email" | "repo" | "ai_provider" | "kv_store" | "storage" | "payments")[];
|
|
14
|
+
features: string[];
|
|
15
|
+
envVars: Record<string, unknown>;
|
|
16
|
+
}, {
|
|
17
|
+
capabilities?: ("notifications" | "auth" | "database" | "deployment" | "email" | "repo" | "ai_provider" | "kv_store" | "storage" | "payments")[] | undefined;
|
|
18
|
+
features?: string[] | undefined;
|
|
19
|
+
envVars?: Record<string, unknown> | undefined;
|
|
20
|
+
}>>;
|
|
21
|
+
schema: z.ZodObject<{
|
|
22
|
+
namespace: z.ZodString;
|
|
23
|
+
migrations: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
24
|
+
version: z.ZodString;
|
|
25
|
+
file: z.ZodString;
|
|
26
|
+
}, "strip", z.ZodTypeAny, {
|
|
27
|
+
version: string;
|
|
28
|
+
file: string;
|
|
29
|
+
}, {
|
|
30
|
+
version: string;
|
|
31
|
+
file: string;
|
|
32
|
+
}>, "many">>;
|
|
33
|
+
}, "strip", z.ZodTypeAny, {
|
|
34
|
+
namespace: string;
|
|
35
|
+
migrations: {
|
|
36
|
+
version: string;
|
|
37
|
+
file: string;
|
|
38
|
+
}[];
|
|
39
|
+
}, {
|
|
40
|
+
namespace: string;
|
|
41
|
+
migrations?: {
|
|
42
|
+
version: string;
|
|
43
|
+
file: string;
|
|
44
|
+
}[] | undefined;
|
|
45
|
+
}>;
|
|
46
|
+
scaffold: z.ZodDefault<z.ZodObject<{
|
|
47
|
+
creates: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
48
|
+
dependencies: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
49
|
+
devDependencies: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
50
|
+
}, "strip", z.ZodTypeAny, {
|
|
51
|
+
creates: string[];
|
|
52
|
+
dependencies: string[];
|
|
53
|
+
devDependencies: string[];
|
|
54
|
+
}, {
|
|
55
|
+
creates?: string[] | undefined;
|
|
56
|
+
dependencies?: string[] | undefined;
|
|
57
|
+
devDependencies?: string[] | undefined;
|
|
58
|
+
}>>;
|
|
59
|
+
insertion: z.ZodOptional<z.ZodObject<{
|
|
60
|
+
targets: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">>;
|
|
61
|
+
}, "strip", z.ZodTypeAny, {
|
|
62
|
+
targets: Record<string, unknown>[];
|
|
63
|
+
}, {
|
|
64
|
+
targets?: Record<string, unknown>[] | undefined;
|
|
65
|
+
}>>;
|
|
66
|
+
events: z.ZodOptional<z.ZodObject<{
|
|
67
|
+
emits: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
68
|
+
listens: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
69
|
+
}, "strip", z.ZodTypeAny, {
|
|
70
|
+
emits: string[];
|
|
71
|
+
listens: string[];
|
|
72
|
+
}, {
|
|
73
|
+
emits?: string[] | undefined;
|
|
74
|
+
listens?: string[] | undefined;
|
|
75
|
+
}>>;
|
|
76
|
+
expose: z.ZodOptional<z.ZodObject<{
|
|
77
|
+
components: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
78
|
+
handlers: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
79
|
+
}, "strip", z.ZodTypeAny, {
|
|
80
|
+
components: string[];
|
|
81
|
+
handlers: string[];
|
|
82
|
+
}, {
|
|
83
|
+
components?: string[] | undefined;
|
|
84
|
+
handlers?: string[] | undefined;
|
|
85
|
+
}>>;
|
|
86
|
+
dataContracts: z.ZodOptional<z.ZodObject<{
|
|
87
|
+
requires: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>>;
|
|
88
|
+
}, "strip", z.ZodTypeAny, {
|
|
89
|
+
requires?: Record<string, string[]> | undefined;
|
|
90
|
+
}, {
|
|
91
|
+
requires?: Record<string, string[]> | undefined;
|
|
92
|
+
}>>;
|
|
93
|
+
validates: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
94
|
+
}, "strict", z.ZodTypeAny, {
|
|
95
|
+
name: string;
|
|
96
|
+
version: string;
|
|
97
|
+
description: string;
|
|
98
|
+
author: string;
|
|
99
|
+
requires: {
|
|
100
|
+
capabilities: ("notifications" | "auth" | "database" | "deployment" | "email" | "repo" | "ai_provider" | "kv_store" | "storage" | "payments")[];
|
|
101
|
+
features: string[];
|
|
102
|
+
envVars: Record<string, unknown>;
|
|
103
|
+
};
|
|
104
|
+
schema: {
|
|
105
|
+
namespace: string;
|
|
106
|
+
migrations: {
|
|
107
|
+
version: string;
|
|
108
|
+
file: string;
|
|
109
|
+
}[];
|
|
110
|
+
};
|
|
111
|
+
scaffold: {
|
|
112
|
+
creates: string[];
|
|
113
|
+
dependencies: string[];
|
|
114
|
+
devDependencies: string[];
|
|
115
|
+
};
|
|
116
|
+
validates: string[];
|
|
117
|
+
$schema?: string | undefined;
|
|
118
|
+
insertion?: {
|
|
119
|
+
targets: Record<string, unknown>[];
|
|
120
|
+
} | undefined;
|
|
121
|
+
events?: {
|
|
122
|
+
emits: string[];
|
|
123
|
+
listens: string[];
|
|
124
|
+
} | undefined;
|
|
125
|
+
expose?: {
|
|
126
|
+
components: string[];
|
|
127
|
+
handlers: string[];
|
|
128
|
+
} | undefined;
|
|
129
|
+
dataContracts?: {
|
|
130
|
+
requires?: Record<string, string[]> | undefined;
|
|
131
|
+
} | undefined;
|
|
132
|
+
}, {
|
|
133
|
+
name: string;
|
|
134
|
+
version: string;
|
|
135
|
+
description: string;
|
|
136
|
+
author: string;
|
|
137
|
+
schema: {
|
|
138
|
+
namespace: string;
|
|
139
|
+
migrations?: {
|
|
140
|
+
version: string;
|
|
141
|
+
file: string;
|
|
142
|
+
}[] | undefined;
|
|
143
|
+
};
|
|
144
|
+
$schema?: string | undefined;
|
|
145
|
+
requires?: {
|
|
146
|
+
capabilities?: ("notifications" | "auth" | "database" | "deployment" | "email" | "repo" | "ai_provider" | "kv_store" | "storage" | "payments")[] | undefined;
|
|
147
|
+
features?: string[] | undefined;
|
|
148
|
+
envVars?: Record<string, unknown> | undefined;
|
|
149
|
+
} | undefined;
|
|
150
|
+
scaffold?: {
|
|
151
|
+
creates?: string[] | undefined;
|
|
152
|
+
dependencies?: string[] | undefined;
|
|
153
|
+
devDependencies?: string[] | undefined;
|
|
154
|
+
} | undefined;
|
|
155
|
+
insertion?: {
|
|
156
|
+
targets?: Record<string, unknown>[] | undefined;
|
|
157
|
+
} | undefined;
|
|
158
|
+
events?: {
|
|
159
|
+
emits?: string[] | undefined;
|
|
160
|
+
listens?: string[] | undefined;
|
|
161
|
+
} | undefined;
|
|
162
|
+
expose?: {
|
|
163
|
+
components?: string[] | undefined;
|
|
164
|
+
handlers?: string[] | undefined;
|
|
165
|
+
} | undefined;
|
|
166
|
+
dataContracts?: {
|
|
167
|
+
requires?: Record<string, string[]> | undefined;
|
|
168
|
+
} | undefined;
|
|
169
|
+
validates?: string[] | undefined;
|
|
170
|
+
}>;
|
|
171
|
+
export type FeatureManifest = z.infer<typeof featureManifestSchema>;
|
|
172
|
+
export declare function parseFeatureManifest(input: unknown): FeatureManifest;
|
|
173
|
+
//# sourceMappingURL=manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/feature/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmCxB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCvB,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAEpE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creator SDK — Field Mapping Loader
|
|
3
|
+
*
|
|
4
|
+
* Loads the user mapping from brokr.config.ts (auto-generated at install time).
|
|
5
|
+
* Falls back to sensible defaults if the config file doesn't exist.
|
|
6
|
+
*/
|
|
7
|
+
import type { UserMapping } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* Load the user mapping from brokr.config.ts.
|
|
10
|
+
* Cached after first load — zero overhead on subsequent calls.
|
|
11
|
+
*
|
|
12
|
+
* Falls back to default mapping if brokr.config.ts doesn't exist or
|
|
13
|
+
* doesn't export a user mapping.
|
|
14
|
+
*/
|
|
15
|
+
export declare function loadUserMapping(): UserMapping;
|
|
16
|
+
/** Reset the cached mapping (useful for testing). */
|
|
17
|
+
export declare function resetMappingCache(): void;
|
|
18
|
+
//# sourceMappingURL=mapping.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../../../src/feature/mapping.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAa3C;;;;;;GAMG;AACH,wBAAgB,eAAe,IAAI,WAAW,CA0B7C;AAED,qDAAqD;AACrD,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creator SDK — Feature Runtime
|
|
3
|
+
*
|
|
4
|
+
* The FeatureRuntime is the scoped `brokr` object passed to createBrokrFeature factories.
|
|
5
|
+
* It provides isolated database access, canonical entity resolution, events, notifications,
|
|
6
|
+
* and all existing Brokr capabilities (AI, storage, email).
|
|
7
|
+
*/
|
|
8
|
+
import type { CanonicalUser, FeatureContext, EmitResult, NotifyParams, FeatureDb, FeatureHandlers, HandlerFn } from './types';
|
|
9
|
+
import type { EventHandler } from '../events/types';
|
|
10
|
+
import { BrokrAIClient } from '../ai/client';
|
|
11
|
+
import { BrokrStorageClient } from '../storage/client';
|
|
12
|
+
import { BrokrEmailClient } from '../email/client';
|
|
13
|
+
import { BrokrPaymentsClient } from '../payments/client';
|
|
14
|
+
export interface FeatureRuntime {
|
|
15
|
+
/** Scoped DB client — queries execute against brokr_{slug} schema. */
|
|
16
|
+
readonly db: FeatureDb;
|
|
17
|
+
/** Resolve a canonical user from the vibe coder's user table. */
|
|
18
|
+
user: (id: string) => Promise<CanonicalUser | null>;
|
|
19
|
+
/** Batch resolve canonical users. */
|
|
20
|
+
users: (ids: string[]) => Promise<Map<string, CanonicalUser>>;
|
|
21
|
+
/** Emit an event (v1: local sync, v2: CF Queue). */
|
|
22
|
+
emit: <T = unknown>(event: string, payload: T) => Promise<EmitResult>;
|
|
23
|
+
/** Listen for events. */
|
|
24
|
+
on: <T = unknown>(event: string, handler: EventHandler<T>) => void;
|
|
25
|
+
/** Send a notification via gateway. */
|
|
26
|
+
notify: (userId: string, params: NotifyParams) => Promise<void>;
|
|
27
|
+
/** Existing Brokr AI client. */
|
|
28
|
+
readonly ai: BrokrAIClient;
|
|
29
|
+
/** Existing Brokr storage client. */
|
|
30
|
+
readonly storage: BrokrStorageClient;
|
|
31
|
+
/** Existing Brokr email client. */
|
|
32
|
+
readonly email: BrokrEmailClient;
|
|
33
|
+
/** Existing Brokr payments client. */
|
|
34
|
+
readonly payments: BrokrPaymentsClient;
|
|
35
|
+
/** Create HTTP handlers for feature API routes. */
|
|
36
|
+
handlers: (routes: Record<string, HandlerFn>) => FeatureHandlers;
|
|
37
|
+
/** Current context from BrokrProvider session. */
|
|
38
|
+
readonly context: FeatureContext;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Build a FeatureRuntime for a given feature slug.
|
|
42
|
+
* Called internally by createBrokrFeature — not exported to creators.
|
|
43
|
+
*/
|
|
44
|
+
export declare function buildFeatureRuntime(slug: string): FeatureRuntime;
|
|
45
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/feature/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,UAAU,EACV,YAAY,EACZ,SAAS,EACT,eAAe,EACf,SAAS,EACV,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAKpD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AASzD,MAAM,WAAW,cAAc;IAC7B,sEAAsE;IACtE,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;IAEvB,iEAAiE;IACjE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IACpD,qCAAqC;IACrC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IAE9D,oDAAoD;IACpD,IAAI,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IACtE,yBAAyB;IACzB,EAAE,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAEnE,uCAAuC;IACvC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE,gCAAgC;IAChC,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC;IAC3B,qCAAqC;IACrC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,mCAAmC;IACnC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,sCAAsC;IACtC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IAEvC,mDAAmD;IACnD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,eAAe,CAAC;IAEjE,kDAAkD;IAClD,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC;AAMD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAoGhE"}
|