@butterbase/shared 0.2.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 (73) hide show
  1. package/dist/ai-router/index.d.ts +2 -0
  2. package/dist/ai-router/index.d.ts.map +1 -0
  3. package/dist/ai-router/index.js +2 -0
  4. package/dist/ai-router/index.js.map +1 -0
  5. package/dist/ai-router/router-adapter.d.ts +33 -0
  6. package/dist/ai-router/router-adapter.d.ts.map +1 -0
  7. package/dist/ai-router/router-adapter.js +2 -0
  8. package/dist/ai-router/router-adapter.js.map +1 -0
  9. package/dist/billing/billing-provider.d.ts +30 -0
  10. package/dist/billing/billing-provider.d.ts.map +1 -0
  11. package/dist/billing/billing-provider.js +15 -0
  12. package/dist/billing/billing-provider.js.map +1 -0
  13. package/dist/billing/billing-provider.test.d.ts +2 -0
  14. package/dist/billing/billing-provider.test.d.ts.map +1 -0
  15. package/dist/billing/billing-provider.test.js +20 -0
  16. package/dist/billing/billing-provider.test.js.map +1 -0
  17. package/dist/billing/index.d.ts +2 -0
  18. package/dist/billing/index.d.ts.map +1 -0
  19. package/dist/billing/index.js +2 -0
  20. package/dist/billing/index.js.map +1 -0
  21. package/dist/constants.d.ts +16 -0
  22. package/dist/constants.d.ts.map +1 -0
  23. package/dist/constants.js +16 -0
  24. package/dist/constants.js.map +1 -0
  25. package/dist/error-types.d.ts +104 -0
  26. package/dist/error-types.d.ts.map +1 -0
  27. package/dist/error-types.js +113 -0
  28. package/dist/error-types.js.map +1 -0
  29. package/dist/errors.d.ts +13 -0
  30. package/dist/errors.d.ts.map +1 -0
  31. package/dist/errors.js +25 -0
  32. package/dist/errors.js.map +1 -0
  33. package/dist/index.d.ts +11 -0
  34. package/dist/index.d.ts.map +1 -0
  35. package/dist/index.js +11 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/index.test.d.ts +2 -0
  38. package/dist/index.test.d.ts.map +1 -0
  39. package/dist/index.test.js +19 -0
  40. package/dist/index.test.js.map +1 -0
  41. package/dist/quota/index.d.ts +2 -0
  42. package/dist/quota/index.d.ts.map +1 -0
  43. package/dist/quota/index.js +2 -0
  44. package/dist/quota/index.js.map +1 -0
  45. package/dist/quota/quota-enforcer.d.ts +26 -0
  46. package/dist/quota/quota-enforcer.d.ts.map +1 -0
  47. package/dist/quota/quota-enforcer.js +16 -0
  48. package/dist/quota/quota-enforcer.js.map +1 -0
  49. package/dist/quota/quota-enforcer.test.d.ts +2 -0
  50. package/dist/quota/quota-enforcer.test.d.ts.map +1 -0
  51. package/dist/quota/quota-enforcer.test.js +18 -0
  52. package/dist/quota/quota-enforcer.test.js.map +1 -0
  53. package/dist/regions.d.ts +21 -0
  54. package/dist/regions.d.ts.map +1 -0
  55. package/dist/regions.js +115 -0
  56. package/dist/regions.js.map +1 -0
  57. package/dist/regions.test.d.ts +2 -0
  58. package/dist/regions.test.d.ts.map +1 -0
  59. package/dist/regions.test.js +129 -0
  60. package/dist/regions.test.js.map +1 -0
  61. package/dist/response-types.d.ts +42 -0
  62. package/dist/response-types.d.ts.map +1 -0
  63. package/dist/response-types.js +3 -0
  64. package/dist/response-types.js.map +1 -0
  65. package/dist/schema-dsl.d.ts +28 -0
  66. package/dist/schema-dsl.d.ts.map +1 -0
  67. package/dist/schema-dsl.js +6 -0
  68. package/dist/schema-dsl.js.map +1 -0
  69. package/dist/types.d.ts +155 -0
  70. package/dist/types.d.ts.map +1 -0
  71. package/dist/types.js +3 -0
  72. package/dist/types.js.map +1 -0
  73. package/package.json +49 -0
@@ -0,0 +1,2 @@
1
+ export * from './router-adapter.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai-router/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './router-adapter.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai-router/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,33 @@
1
+ export interface RouterAdapter {
2
+ /** Stable adapter id used in catalog rows (e.g. "openrouter"). Must not leak internal codenames. */
3
+ readonly id: string;
4
+ /** Human-readable name shown in admin UIs. */
5
+ readonly displayName: string;
6
+ /** Returns the catalog of models this adapter can route to. */
7
+ listModels(): Promise<RouterModel[]>;
8
+ /** Forwards a chat completion request and returns a streaming response. */
9
+ chatCompletion(req: RouterRequest): Promise<RouterResponse>;
10
+ }
11
+ export interface RouterModel {
12
+ id: string;
13
+ contextWindow: number;
14
+ inputPricePerMtok: number;
15
+ outputPricePerMtok: number;
16
+ capabilities: ('vision' | 'tools' | 'json_mode')[];
17
+ }
18
+ export interface RouterRequest {
19
+ modelId: string;
20
+ messages: {
21
+ role: string;
22
+ content: string;
23
+ }[];
24
+ stream?: boolean;
25
+ temperature?: number;
26
+ maxTokens?: number;
27
+ }
28
+ export interface RouterResponse {
29
+ body: ReadableStream<Uint8Array>;
30
+ inputTokens?: number;
31
+ outputTokens?: number;
32
+ }
33
+ //# sourceMappingURL=router-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router-adapter.d.ts","sourceRoot":"","sources":["../../src/ai-router/router-adapter.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,oGAAoG;IACpG,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,8CAA8C;IAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,+DAA+D;IAC/D,UAAU,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAErC,2EAA2E;IAC3E,cAAc,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,CAAC,QAAQ,GAAG,OAAO,GAAG,WAAW,CAAC,EAAE,CAAC;CACpD;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=router-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router-adapter.js","sourceRoot":"","sources":["../../src/ai-router/router-adapter.ts"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ export type PlanTier = 'free' | 'pro' | 'enterprise';
2
+ export interface Plan {
3
+ tier: PlanTier;
4
+ features: string[];
5
+ }
6
+ export interface Subscription {
7
+ id: string;
8
+ userId: string;
9
+ planTier: PlanTier;
10
+ status: 'active' | 'past_due' | 'canceled';
11
+ currentPeriodEnd: Date;
12
+ }
13
+ export interface UsageEvent {
14
+ kind: 'ai_credits' | 'function_invocations' | 'storage_gb_hours' | 'bandwidth_gb';
15
+ amountUsd: number;
16
+ metadata?: Record<string, unknown>;
17
+ }
18
+ export interface BillingProvider {
19
+ getActiveSubscription(userId: string): Promise<Subscription | null>;
20
+ getPlanForUser(userId: string): Promise<Plan>;
21
+ recordUsage(userId: string, event: UsageEvent): Promise<void>;
22
+ isFeatureEnabled(userId: string, feature: string): Promise<boolean>;
23
+ }
24
+ export declare class NoopBillingProvider implements BillingProvider {
25
+ getActiveSubscription(_userId: string): Promise<Subscription | null>;
26
+ getPlanForUser(_userId: string): Promise<Plan>;
27
+ recordUsage(_userId: string, _event: UsageEvent): Promise<void>;
28
+ isFeatureEnabled(_userId: string, _feature: string): Promise<boolean>;
29
+ }
30
+ //# sourceMappingURL=billing-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing-provider.d.ts","sourceRoot":"","sources":["../../src/billing/billing-provider.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,YAAY,CAAC;AAErD,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;IAC3C,gBAAgB,EAAE,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,YAAY,GAAG,sBAAsB,GAAG,kBAAkB,GAAG,cAAc,CAAC;IAClF,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACpE,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACrE;AAED,qBAAa,mBAAoB,YAAW,eAAe;IACnD,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAGpE,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAG9C,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAG/D,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAG5E"}
@@ -0,0 +1,15 @@
1
+ export class NoopBillingProvider {
2
+ async getActiveSubscription(_userId) {
3
+ return null;
4
+ }
5
+ async getPlanForUser(_userId) {
6
+ return { tier: 'free', features: [] };
7
+ }
8
+ async recordUsage(_userId, _event) {
9
+ // self-hosters who don't wire a billing provider get no metering
10
+ }
11
+ async isFeatureEnabled(_userId, _feature) {
12
+ return false;
13
+ }
14
+ }
15
+ //# sourceMappingURL=billing-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing-provider.js","sourceRoot":"","sources":["../../src/billing/billing-provider.ts"],"names":[],"mappings":"AA4BA,MAAM,OAAO,mBAAmB;IAC9B,KAAK,CAAC,qBAAqB,CAAC,OAAe;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,CAAC,cAAc,CAAC,OAAe;QAClC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACxC,CAAC;IACD,KAAK,CAAC,WAAW,CAAC,OAAe,EAAE,MAAkB;QACnD,iEAAiE;IACnE,CAAC;IACD,KAAK,CAAC,gBAAgB,CAAC,OAAe,EAAE,QAAgB;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=billing-provider.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing-provider.test.d.ts","sourceRoot":"","sources":["../../src/billing/billing-provider.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { NoopBillingProvider } from './index.js';
3
+ describe('NoopBillingProvider', () => {
4
+ const provider = new NoopBillingProvider();
5
+ it('reports no active subscription for any user', async () => {
6
+ const sub = await provider.getActiveSubscription('user-123');
7
+ expect(sub).toBeNull();
8
+ });
9
+ it('returns "free" plan for any user', async () => {
10
+ const plan = await provider.getPlanForUser('user-123');
11
+ expect(plan).toEqual({ tier: 'free', features: [] });
12
+ });
13
+ it('recordUsage is a no-op (returns void, does not throw)', async () => {
14
+ await expect(provider.recordUsage('user-123', { kind: 'ai_credits', amountUsd: 0.05 })).resolves.toBeUndefined();
15
+ });
16
+ it('isFeatureEnabled returns false for any feature', async () => {
17
+ expect(await provider.isFeatureEnabled('user-123', 'enterprise')).toBe(false);
18
+ });
19
+ });
20
+ //# sourceMappingURL=billing-provider.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing-provider.test.js","sourceRoot":"","sources":["../../src/billing/billing-provider.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAwB,MAAM,YAAY,CAAC;AAEvE,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,MAAM,QAAQ,GAAoB,IAAI,mBAAmB,EAAE,CAAC;IAE5D,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,MAAM,CACV,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAC1E,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,CAAC,MAAM,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './billing-provider.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/billing/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './billing-provider.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/billing/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,16 @@
1
+ export declare const APP_ID_PREFIX = "app_";
2
+ export declare const APP_ID_LENGTH = 12;
3
+ export declare const APP_ID_ALPHABET = "0123456789abcdefghijklmnopqrstuvwxyz";
4
+ export declare const API_KEY_PREFIX = "bb_sk_";
5
+ export declare const API_KEY_RANDOM_LENGTH = 40;
6
+ export declare const API_KEY_DISPLAY_LENGTH = 12;
7
+ export declare const DEFAULT_CONTROL_API_PORT = 3000;
8
+ export declare const DEFAULT_PGBOUNCER_PORT = 6432;
9
+ export declare const AUTH_SERVICE_PORT = 4200;
10
+ export declare const ACCESS_TOKEN_TTL = "1h";
11
+ export declare const REFRESH_TOKEN_TTL_DAYS = 7;
12
+ export declare const BCRYPT_COST = 12;
13
+ export declare const JWT_ISSUER_PREFIX = "butterbase:app:";
14
+ export declare const DEFAULT_POOL_SIZE = 20;
15
+ export declare const ADMIN_POOL_SIZE = 3;
16
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,SAAS,CAAC;AACpC,eAAO,MAAM,aAAa,KAAK,CAAC;AAChC,eAAO,MAAM,eAAe,yCAAyC,CAAC;AAEtE,eAAO,MAAM,cAAc,WAAW,CAAC;AACvC,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAC7C,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,iBAAiB,oBAAoB,CAAC;AAEnD,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,eAAe,IAAI,CAAC"}
@@ -0,0 +1,16 @@
1
+ export const APP_ID_PREFIX = 'app_';
2
+ export const APP_ID_LENGTH = 12;
3
+ export const APP_ID_ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz';
4
+ export const API_KEY_PREFIX = 'bb_sk_';
5
+ export const API_KEY_RANDOM_LENGTH = 40;
6
+ export const API_KEY_DISPLAY_LENGTH = 12;
7
+ export const DEFAULT_CONTROL_API_PORT = 3000;
8
+ export const DEFAULT_PGBOUNCER_PORT = 6432;
9
+ export const AUTH_SERVICE_PORT = 4200;
10
+ export const ACCESS_TOKEN_TTL = '1h'; // Changed from 15m to 1 hour
11
+ export const REFRESH_TOKEN_TTL_DAYS = 7;
12
+ export const BCRYPT_COST = 12;
13
+ export const JWT_ISSUER_PREFIX = 'butterbase:app:';
14
+ export const DEFAULT_POOL_SIZE = 20;
15
+ export const ADMIN_POOL_SIZE = 3;
16
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;AACpC,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAChC,MAAM,CAAC,MAAM,eAAe,GAAG,sCAAsC,CAAC;AAEtE,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC;AACvC,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACxC,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAEzC,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAC7C,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAE3C,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AACtC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,CAAC,6BAA6B;AACnE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACxC,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAC9B,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAEnD,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Error codes for agent-friendly error responses
3
+ */
4
+ export declare const VALIDATION_INVALID_SCHEMA: "VALIDATION_INVALID_SCHEMA";
5
+ export declare const VALIDATION_MISSING_FIELD: "VALIDATION_MISSING_FIELD";
6
+ export declare const VALIDATION_INVALID_TYPE: "VALIDATION_INVALID_TYPE";
7
+ export declare const VALIDATION_COLUMN_NOT_FOUND: "VALIDATION_COLUMN_NOT_FOUND";
8
+ export declare const VALIDATION_TABLE_NOT_FOUND: "VALIDATION_TABLE_NOT_FOUND";
9
+ export declare const VALIDATION_INVALID_NAME: "VALIDATION_INVALID_NAME";
10
+ export declare const VALIDATION_UNIQUE_CONSTRAINT_VIOLATION: "VALIDATION_UNIQUE_CONSTRAINT_VIOLATION";
11
+ export declare const VALIDATION_FOREIGN_KEY_VIOLATION: "VALIDATION_FOREIGN_KEY_VIOLATION";
12
+ export declare const VALIDATION_CHECK_CONSTRAINT_VIOLATION: "VALIDATION_CHECK_CONSTRAINT_VIOLATION";
13
+ export declare const VALIDATION_NOT_NULL_VIOLATION: "VALIDATION_NOT_NULL_VIOLATION";
14
+ export declare const AUTH_INVALID_TOKEN: "AUTH_INVALID_TOKEN";
15
+ export declare const AUTH_INSUFFICIENT_PERMISSIONS: "AUTH_INSUFFICIENT_PERMISSIONS";
16
+ export declare const AUTH_INVALID_API_KEY: "AUTH_INVALID_API_KEY";
17
+ export declare const RESOURCE_NOT_FOUND: "RESOURCE_NOT_FOUND";
18
+ export declare const RESOURCE_ALREADY_EXISTS: "RESOURCE_ALREADY_EXISTS";
19
+ export declare const RESOURCE_CONFLICT: "RESOURCE_CONFLICT";
20
+ export declare const QUOTA_STORAGE_EXCEEDED: "QUOTA_STORAGE_EXCEEDED";
21
+ export declare const QUOTA_RATE_LIMIT: "QUOTA_RATE_LIMIT";
22
+ export declare const QUOTA_TABLE_LIMIT: "QUOTA_TABLE_LIMIT";
23
+ export declare const QUOTA_FILE_SIZE_EXCEEDED: "QUOTA_FILE_SIZE_EXCEEDED";
24
+ export declare const QUOTA_DEPLOYMENT_LIMIT: "QUOTA_DEPLOYMENT_LIMIT";
25
+ export declare const STATE_INVALID_TRANSITION: "STATE_INVALID_TRANSITION";
26
+ export declare const STATE_PREREQUISITE_MISSING: "STATE_PREREQUISITE_MISSING";
27
+ export declare const APP_PAUSED: "APP_PAUSED";
28
+ export declare const REALTIME_NOT_CONFIGURED: "REALTIME_NOT_CONFIGURED";
29
+ export declare const REALTIME_CONNECTION_LIMIT: "REALTIME_CONNECTION_LIMIT";
30
+ export declare const EXTERNAL_S3_ERROR: "EXTERNAL_S3_ERROR";
31
+ export declare const EXTERNAL_DB_ERROR: "EXTERNAL_DB_ERROR";
32
+ export declare const EXTERNAL_NETWORK_ERROR: "EXTERNAL_NETWORK_ERROR";
33
+ export declare const EXTERNAL_CLOUDFLARE_ERROR: "EXTERNAL_CLOUDFLARE_ERROR";
34
+ export declare const INTEGRATIONS_NOT_CONFIGURED: "INTEGRATIONS_NOT_CONFIGURED";
35
+ export declare const INTEGRATIONS_TOOLKIT_NOT_ENABLED: "INTEGRATIONS_TOOLKIT_NOT_ENABLED";
36
+ export declare const INTEGRATIONS_NOT_CONNECTED: "INTEGRATIONS_NOT_CONNECTED";
37
+ export declare const INTEGRATIONS_CONNECTION_EXPIRED: "INTEGRATIONS_CONNECTION_EXPIRED";
38
+ export declare const INTEGRATIONS_EXECUTION_FAILED: "INTEGRATIONS_EXECUTION_FAILED";
39
+ export declare const INTEGRATIONS_QUOTA_EXCEEDED: "INTEGRATIONS_QUOTA_EXCEEDED";
40
+ /**
41
+ * Union type of all error codes
42
+ */
43
+ export type ErrorCode = typeof VALIDATION_INVALID_SCHEMA | typeof VALIDATION_MISSING_FIELD | typeof VALIDATION_INVALID_TYPE | typeof VALIDATION_COLUMN_NOT_FOUND | typeof VALIDATION_TABLE_NOT_FOUND | typeof VALIDATION_INVALID_NAME | typeof VALIDATION_UNIQUE_CONSTRAINT_VIOLATION | typeof VALIDATION_FOREIGN_KEY_VIOLATION | typeof VALIDATION_CHECK_CONSTRAINT_VIOLATION | typeof VALIDATION_NOT_NULL_VIOLATION | typeof AUTH_INVALID_TOKEN | typeof AUTH_INSUFFICIENT_PERMISSIONS | typeof AUTH_INVALID_API_KEY | typeof RESOURCE_NOT_FOUND | typeof RESOURCE_ALREADY_EXISTS | typeof RESOURCE_CONFLICT | typeof QUOTA_STORAGE_EXCEEDED | typeof QUOTA_RATE_LIMIT | typeof QUOTA_TABLE_LIMIT | typeof QUOTA_FILE_SIZE_EXCEEDED | typeof QUOTA_DEPLOYMENT_LIMIT | typeof STATE_INVALID_TRANSITION | typeof STATE_PREREQUISITE_MISSING | typeof APP_PAUSED | typeof REALTIME_NOT_CONFIGURED | typeof REALTIME_CONNECTION_LIMIT | typeof EXTERNAL_S3_ERROR | typeof EXTERNAL_DB_ERROR | typeof EXTERNAL_NETWORK_ERROR | typeof EXTERNAL_CLOUDFLARE_ERROR | typeof INTEGRATIONS_NOT_CONFIGURED | typeof INTEGRATIONS_TOOLKIT_NOT_ENABLED | typeof INTEGRATIONS_NOT_CONNECTED | typeof INTEGRATIONS_CONNECTION_EXPIRED | typeof INTEGRATIONS_EXECUTION_FAILED | typeof INTEGRATIONS_QUOTA_EXCEEDED;
44
+ /**
45
+ * Agent-friendly error response structure
46
+ */
47
+ export interface AgentFriendlyError {
48
+ error: {
49
+ code: string;
50
+ message: string;
51
+ remediation: string;
52
+ documentation_url?: string;
53
+ details?: unknown;
54
+ };
55
+ }
56
+ /**
57
+ * Type guard for AgentFriendlyError
58
+ */
59
+ export declare function isAgentFriendlyError(obj: unknown): obj is AgentFriendlyError;
60
+ /**
61
+ * Convenience namespace object grouping every error code constant.
62
+ *
63
+ * Use `ErrorCodes.RESOURCE_NOT_FOUND` instead of importing the constant
64
+ * by name when you want IDE auto-complete on the full set.
65
+ */
66
+ export declare const ErrorCodes: {
67
+ readonly VALIDATION_INVALID_SCHEMA: "VALIDATION_INVALID_SCHEMA";
68
+ readonly VALIDATION_MISSING_FIELD: "VALIDATION_MISSING_FIELD";
69
+ readonly VALIDATION_INVALID_TYPE: "VALIDATION_INVALID_TYPE";
70
+ readonly VALIDATION_COLUMN_NOT_FOUND: "VALIDATION_COLUMN_NOT_FOUND";
71
+ readonly VALIDATION_TABLE_NOT_FOUND: "VALIDATION_TABLE_NOT_FOUND";
72
+ readonly VALIDATION_INVALID_NAME: "VALIDATION_INVALID_NAME";
73
+ readonly VALIDATION_UNIQUE_CONSTRAINT_VIOLATION: "VALIDATION_UNIQUE_CONSTRAINT_VIOLATION";
74
+ readonly VALIDATION_FOREIGN_KEY_VIOLATION: "VALIDATION_FOREIGN_KEY_VIOLATION";
75
+ readonly VALIDATION_CHECK_CONSTRAINT_VIOLATION: "VALIDATION_CHECK_CONSTRAINT_VIOLATION";
76
+ readonly VALIDATION_NOT_NULL_VIOLATION: "VALIDATION_NOT_NULL_VIOLATION";
77
+ readonly AUTH_INVALID_TOKEN: "AUTH_INVALID_TOKEN";
78
+ readonly AUTH_INSUFFICIENT_PERMISSIONS: "AUTH_INSUFFICIENT_PERMISSIONS";
79
+ readonly AUTH_INVALID_API_KEY: "AUTH_INVALID_API_KEY";
80
+ readonly RESOURCE_NOT_FOUND: "RESOURCE_NOT_FOUND";
81
+ readonly RESOURCE_ALREADY_EXISTS: "RESOURCE_ALREADY_EXISTS";
82
+ readonly RESOURCE_CONFLICT: "RESOURCE_CONFLICT";
83
+ readonly QUOTA_STORAGE_EXCEEDED: "QUOTA_STORAGE_EXCEEDED";
84
+ readonly QUOTA_RATE_LIMIT: "QUOTA_RATE_LIMIT";
85
+ readonly QUOTA_TABLE_LIMIT: "QUOTA_TABLE_LIMIT";
86
+ readonly QUOTA_FILE_SIZE_EXCEEDED: "QUOTA_FILE_SIZE_EXCEEDED";
87
+ readonly QUOTA_DEPLOYMENT_LIMIT: "QUOTA_DEPLOYMENT_LIMIT";
88
+ readonly STATE_INVALID_TRANSITION: "STATE_INVALID_TRANSITION";
89
+ readonly STATE_PREREQUISITE_MISSING: "STATE_PREREQUISITE_MISSING";
90
+ readonly APP_PAUSED: "APP_PAUSED";
91
+ readonly REALTIME_NOT_CONFIGURED: "REALTIME_NOT_CONFIGURED";
92
+ readonly REALTIME_CONNECTION_LIMIT: "REALTIME_CONNECTION_LIMIT";
93
+ readonly EXTERNAL_S3_ERROR: "EXTERNAL_S3_ERROR";
94
+ readonly EXTERNAL_DB_ERROR: "EXTERNAL_DB_ERROR";
95
+ readonly EXTERNAL_NETWORK_ERROR: "EXTERNAL_NETWORK_ERROR";
96
+ readonly EXTERNAL_CLOUDFLARE_ERROR: "EXTERNAL_CLOUDFLARE_ERROR";
97
+ readonly INTEGRATIONS_NOT_CONFIGURED: "INTEGRATIONS_NOT_CONFIGURED";
98
+ readonly INTEGRATIONS_TOOLKIT_NOT_ENABLED: "INTEGRATIONS_TOOLKIT_NOT_ENABLED";
99
+ readonly INTEGRATIONS_NOT_CONNECTED: "INTEGRATIONS_NOT_CONNECTED";
100
+ readonly INTEGRATIONS_CONNECTION_EXPIRED: "INTEGRATIONS_CONNECTION_EXPIRED";
101
+ readonly INTEGRATIONS_EXECUTION_FAILED: "INTEGRATIONS_EXECUTION_FAILED";
102
+ readonly INTEGRATIONS_QUOTA_EXCEEDED: "INTEGRATIONS_QUOTA_EXCEEDED";
103
+ };
104
+ //# sourceMappingURL=error-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-types.d.ts","sourceRoot":"","sources":["../src/error-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ // packages/shared/src/error-types.ts
2
+ /**
3
+ * Error codes for agent-friendly error responses
4
+ */
5
+ // Validation errors
6
+ export const VALIDATION_INVALID_SCHEMA = 'VALIDATION_INVALID_SCHEMA';
7
+ export const VALIDATION_MISSING_FIELD = 'VALIDATION_MISSING_FIELD';
8
+ export const VALIDATION_INVALID_TYPE = 'VALIDATION_INVALID_TYPE';
9
+ export const VALIDATION_COLUMN_NOT_FOUND = 'VALIDATION_COLUMN_NOT_FOUND';
10
+ export const VALIDATION_TABLE_NOT_FOUND = 'VALIDATION_TABLE_NOT_FOUND';
11
+ export const VALIDATION_INVALID_NAME = 'VALIDATION_INVALID_NAME';
12
+ export const VALIDATION_UNIQUE_CONSTRAINT_VIOLATION = 'VALIDATION_UNIQUE_CONSTRAINT_VIOLATION';
13
+ export const VALIDATION_FOREIGN_KEY_VIOLATION = 'VALIDATION_FOREIGN_KEY_VIOLATION';
14
+ export const VALIDATION_CHECK_CONSTRAINT_VIOLATION = 'VALIDATION_CHECK_CONSTRAINT_VIOLATION';
15
+ export const VALIDATION_NOT_NULL_VIOLATION = 'VALIDATION_NOT_NULL_VIOLATION';
16
+ // Authorization errors
17
+ export const AUTH_INVALID_TOKEN = 'AUTH_INVALID_TOKEN';
18
+ export const AUTH_INSUFFICIENT_PERMISSIONS = 'AUTH_INSUFFICIENT_PERMISSIONS';
19
+ export const AUTH_INVALID_API_KEY = 'AUTH_INVALID_API_KEY';
20
+ // Resource errors
21
+ export const RESOURCE_NOT_FOUND = 'RESOURCE_NOT_FOUND';
22
+ export const RESOURCE_ALREADY_EXISTS = 'RESOURCE_ALREADY_EXISTS';
23
+ export const RESOURCE_CONFLICT = 'RESOURCE_CONFLICT';
24
+ // Quota errors
25
+ export const QUOTA_STORAGE_EXCEEDED = 'QUOTA_STORAGE_EXCEEDED';
26
+ export const QUOTA_RATE_LIMIT = 'QUOTA_RATE_LIMIT';
27
+ export const QUOTA_TABLE_LIMIT = 'QUOTA_TABLE_LIMIT';
28
+ export const QUOTA_FILE_SIZE_EXCEEDED = 'QUOTA_FILE_SIZE_EXCEEDED';
29
+ export const QUOTA_DEPLOYMENT_LIMIT = 'QUOTA_DEPLOYMENT_LIMIT';
30
+ // State errors
31
+ export const STATE_INVALID_TRANSITION = 'STATE_INVALID_TRANSITION';
32
+ export const STATE_PREREQUISITE_MISSING = 'STATE_PREREQUISITE_MISSING';
33
+ export const APP_PAUSED = 'APP_PAUSED';
34
+ // Realtime errors
35
+ export const REALTIME_NOT_CONFIGURED = 'REALTIME_NOT_CONFIGURED';
36
+ export const REALTIME_CONNECTION_LIMIT = 'REALTIME_CONNECTION_LIMIT';
37
+ // External errors
38
+ export const EXTERNAL_S3_ERROR = 'EXTERNAL_S3_ERROR';
39
+ export const EXTERNAL_DB_ERROR = 'EXTERNAL_DB_ERROR';
40
+ export const EXTERNAL_NETWORK_ERROR = 'EXTERNAL_NETWORK_ERROR';
41
+ export const EXTERNAL_CLOUDFLARE_ERROR = 'EXTERNAL_CLOUDFLARE_ERROR';
42
+ // Integration errors
43
+ export const INTEGRATIONS_NOT_CONFIGURED = 'INTEGRATIONS_NOT_CONFIGURED';
44
+ export const INTEGRATIONS_TOOLKIT_NOT_ENABLED = 'INTEGRATIONS_TOOLKIT_NOT_ENABLED';
45
+ export const INTEGRATIONS_NOT_CONNECTED = 'INTEGRATIONS_NOT_CONNECTED';
46
+ export const INTEGRATIONS_CONNECTION_EXPIRED = 'INTEGRATIONS_CONNECTION_EXPIRED';
47
+ export const INTEGRATIONS_EXECUTION_FAILED = 'INTEGRATIONS_EXECUTION_FAILED';
48
+ export const INTEGRATIONS_QUOTA_EXCEEDED = 'INTEGRATIONS_QUOTA_EXCEEDED';
49
+ /**
50
+ * Type guard for AgentFriendlyError
51
+ */
52
+ export function isAgentFriendlyError(obj) {
53
+ return (typeof obj === 'object' &&
54
+ obj !== null &&
55
+ 'error' in obj &&
56
+ typeof obj.error === 'object' &&
57
+ 'code' in obj.error &&
58
+ 'message' in obj.error &&
59
+ 'remediation' in obj.error);
60
+ }
61
+ /**
62
+ * Convenience namespace object grouping every error code constant.
63
+ *
64
+ * Use `ErrorCodes.RESOURCE_NOT_FOUND` instead of importing the constant
65
+ * by name when you want IDE auto-complete on the full set.
66
+ */
67
+ export const ErrorCodes = {
68
+ // Validation
69
+ VALIDATION_INVALID_SCHEMA,
70
+ VALIDATION_MISSING_FIELD,
71
+ VALIDATION_INVALID_TYPE,
72
+ VALIDATION_COLUMN_NOT_FOUND,
73
+ VALIDATION_TABLE_NOT_FOUND,
74
+ VALIDATION_INVALID_NAME,
75
+ VALIDATION_UNIQUE_CONSTRAINT_VIOLATION,
76
+ VALIDATION_FOREIGN_KEY_VIOLATION,
77
+ VALIDATION_CHECK_CONSTRAINT_VIOLATION,
78
+ VALIDATION_NOT_NULL_VIOLATION,
79
+ // Authorization
80
+ AUTH_INVALID_TOKEN,
81
+ AUTH_INSUFFICIENT_PERMISSIONS,
82
+ AUTH_INVALID_API_KEY,
83
+ // Resource
84
+ RESOURCE_NOT_FOUND,
85
+ RESOURCE_ALREADY_EXISTS,
86
+ RESOURCE_CONFLICT,
87
+ // Quota
88
+ QUOTA_STORAGE_EXCEEDED,
89
+ QUOTA_RATE_LIMIT,
90
+ QUOTA_TABLE_LIMIT,
91
+ QUOTA_FILE_SIZE_EXCEEDED,
92
+ QUOTA_DEPLOYMENT_LIMIT,
93
+ // State
94
+ STATE_INVALID_TRANSITION,
95
+ STATE_PREREQUISITE_MISSING,
96
+ APP_PAUSED,
97
+ // Realtime
98
+ REALTIME_NOT_CONFIGURED,
99
+ REALTIME_CONNECTION_LIMIT,
100
+ // External
101
+ EXTERNAL_S3_ERROR,
102
+ EXTERNAL_DB_ERROR,
103
+ EXTERNAL_NETWORK_ERROR,
104
+ EXTERNAL_CLOUDFLARE_ERROR,
105
+ // Integration
106
+ INTEGRATIONS_NOT_CONFIGURED,
107
+ INTEGRATIONS_TOOLKIT_NOT_ENABLED,
108
+ INTEGRATIONS_NOT_CONNECTED,
109
+ INTEGRATIONS_CONNECTION_EXPIRED,
110
+ INTEGRATIONS_EXECUTION_FAILED,
111
+ INTEGRATIONS_QUOTA_EXCEEDED,
112
+ };
113
+ //# sourceMappingURL=error-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-types.js","sourceRoot":"","sources":["../src/error-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export declare class AppProvisioningError extends Error {
2
+ readonly appId?: string | undefined;
3
+ constructor(message: string, appId?: string | undefined);
4
+ }
5
+ export declare class DatabaseConnectionError extends Error {
6
+ readonly host?: string | undefined;
7
+ constructor(message: string, host?: string | undefined);
8
+ }
9
+ export declare class MigrationError extends Error {
10
+ readonly filename?: string | undefined;
11
+ constructor(message: string, filename?: string | undefined);
12
+ }
13
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,oBAAqB,SAAQ,KAAK;aACA,KAAK,CAAC,EAAE,MAAM;gBAA/C,OAAO,EAAE,MAAM,EAAkB,KAAK,CAAC,EAAE,MAAM,YAAA;CAI5D;AAED,qBAAa,uBAAwB,SAAQ,KAAK;aACH,IAAI,CAAC,EAAE,MAAM;gBAA9C,OAAO,EAAE,MAAM,EAAkB,IAAI,CAAC,EAAE,MAAM,YAAA;CAI3D;AAED,qBAAa,cAAe,SAAQ,KAAK;aACM,QAAQ,CAAC,EAAE,MAAM;gBAAlD,OAAO,EAAE,MAAM,EAAkB,QAAQ,CAAC,EAAE,MAAM,YAAA;CAI/D"}
package/dist/errors.js ADDED
@@ -0,0 +1,25 @@
1
+ export class AppProvisioningError extends Error {
2
+ appId;
3
+ constructor(message, appId) {
4
+ super(message);
5
+ this.appId = appId;
6
+ this.name = 'AppProvisioningError';
7
+ }
8
+ }
9
+ export class DatabaseConnectionError extends Error {
10
+ host;
11
+ constructor(message, host) {
12
+ super(message);
13
+ this.host = host;
14
+ this.name = 'DatabaseConnectionError';
15
+ }
16
+ }
17
+ export class MigrationError extends Error {
18
+ filename;
19
+ constructor(message, filename) {
20
+ super(message);
21
+ this.filename = filename;
22
+ this.name = 'MigrationError';
23
+ }
24
+ }
25
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACA;IAA7C,YAAY,OAAe,EAAkB,KAAc;QACzD,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,UAAK,GAAL,KAAK,CAAS;QAEzD,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IACH;IAA7C,YAAY,OAAe,EAAkB,IAAa;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,SAAI,GAAJ,IAAI,CAAS;QAExD,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,KAAK;IACM;IAA7C,YAAY,OAAe,EAAkB,QAAiB;QAC5D,KAAK,CAAC,OAAO,CAAC,CAAC;QAD4B,aAAQ,GAAR,QAAQ,CAAS;QAE5D,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ export * from './types.js';
2
+ export * from './constants.js';
3
+ export * from './errors.js';
4
+ export * from './schema-dsl.js';
5
+ export * from './regions.js';
6
+ export * from './error-types.js';
7
+ export * from './response-types.js';
8
+ export * from './billing/index.js';
9
+ export * from './quota/index.js';
10
+ export * from './ai-router/index.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,11 @@
1
+ export * from './types.js';
2
+ export * from './constants.js';
3
+ export * from './errors.js';
4
+ export * from './schema-dsl.js';
5
+ export * from './regions.js';
6
+ export * from './error-types.js';
7
+ export * from './response-types.js';
8
+ export * from './billing/index.js';
9
+ export * from './quota/index.js';
10
+ export * from './ai-router/index.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import * as shared from './index.js';
3
+ describe('shared package surface', () => {
4
+ it('exports error code constants', () => {
5
+ expect(shared.ErrorCodes.VALIDATION_INVALID_SCHEMA).toBe('VALIDATION_INVALID_SCHEMA');
6
+ expect(shared.ErrorCodes.RESOURCE_NOT_FOUND).toBe('RESOURCE_NOT_FOUND');
7
+ expect(shared.ErrorCodes.QUOTA_FILE_SIZE_EXCEEDED).toBe('QUOTA_FILE_SIZE_EXCEEDED');
8
+ });
9
+ it('exports region utilities', () => {
10
+ expect(typeof shared.parseRegions).toBe('function');
11
+ });
12
+ it('isAgentFriendlyError detects backend error shape', () => {
13
+ expect(shared.isAgentFriendlyError({ error: { code: 'X', message: 'y', remediation: 'z' } })).toBe(true);
14
+ expect(shared.isAgentFriendlyError({ error: { code: 'X' } })).toBe(false);
15
+ expect(shared.isAgentFriendlyError(null)).toBe(false);
16
+ expect(shared.isAgentFriendlyError({})).toBe(false);
17
+ });
18
+ });
19
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,YAAY,CAAC;AAErC,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACtF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACxE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,CAAC,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzG,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1E,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './quota-enforcer.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/quota/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './quota-enforcer.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/quota/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,26 @@
1
+ export type QuotaKind = 'ai_credits' | 'function_invocations' | 'storage_gb_hours' | 'bandwidth_gb';
2
+ export interface LeaseRequest {
3
+ kind: QuotaKind;
4
+ estimatedUsdCost?: number;
5
+ }
6
+ export interface Lease {
7
+ granted: boolean;
8
+ leaseId: string;
9
+ budgetUsd: number;
10
+ expiresAt: Date;
11
+ reason?: string;
12
+ }
13
+ export interface SettleParams {
14
+ actualUsdSpent: number;
15
+ }
16
+ export interface QuotaEnforcer {
17
+ acquireLease(userId: string, req: LeaseRequest): Promise<Lease>;
18
+ settleLease(leaseId: string, params: SettleParams): Promise<void>;
19
+ getRemaining(userId: string, kind: QuotaKind): Promise<number>;
20
+ }
21
+ export declare class UnlimitedQuotaEnforcer implements QuotaEnforcer {
22
+ acquireLease(_userId: string, _req: LeaseRequest): Promise<Lease>;
23
+ settleLease(_leaseId: string, _params: SettleParams): Promise<void>;
24
+ getRemaining(_userId: string, _kind: QuotaKind): Promise<number>;
25
+ }
26
+ //# sourceMappingURL=quota-enforcer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quota-enforcer.d.ts","sourceRoot":"","sources":["../../src/quota/quota-enforcer.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,sBAAsB,GAAG,kBAAkB,GAAG,cAAc,CAAC;AAEpG,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAChE,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAChE;AAED,qBAAa,sBAAuB,YAAW,aAAa;IACpD,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;IAQjE,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IACnE,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;CAGvE"}