@prmichaelsen/agentbase-core 0.1.0 → 0.1.2

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 (91) hide show
  1. package/README.md +351 -0
  2. package/dist/client/api-types.generated.d.ts +4024 -0
  3. package/dist/client/api-types.generated.d.ts.map +1 -0
  4. package/dist/client/api-types.generated.js +6 -0
  5. package/dist/client/api-types.generated.js.map +1 -0
  6. package/dist/client/app.d.ts +126 -0
  7. package/dist/client/app.d.ts.map +1 -0
  8. package/dist/client/app.js +107 -0
  9. package/dist/client/app.js.map +1 -0
  10. package/dist/client/http-transport.d.ts +42 -0
  11. package/dist/client/http-transport.d.ts.map +1 -0
  12. package/dist/client/http-transport.js +113 -0
  13. package/dist/client/http-transport.js.map +1 -0
  14. package/dist/client/index.d.ts +6 -0
  15. package/dist/client/index.d.ts.map +1 -0
  16. package/dist/client/index.js +9 -0
  17. package/dist/client/index.js.map +1 -0
  18. package/dist/client/oauth.d.ts +86 -0
  19. package/dist/client/oauth.d.ts.map +1 -0
  20. package/dist/client/oauth.js +148 -0
  21. package/dist/client/oauth.js.map +1 -0
  22. package/dist/client/svc.d.ts +511 -0
  23. package/dist/client/svc.d.ts.map +1 -0
  24. package/dist/client/svc.js +409 -0
  25. package/dist/client/svc.js.map +1 -0
  26. package/dist/config/index.d.ts +34 -0
  27. package/dist/config/index.d.ts.map +1 -0
  28. package/dist/config/index.js +50 -0
  29. package/dist/config/index.js.map +1 -0
  30. package/dist/errors/app-errors.d.ts +34 -0
  31. package/dist/errors/app-errors.d.ts.map +1 -0
  32. package/dist/errors/app-errors.js +34 -0
  33. package/dist/errors/app-errors.js.map +1 -0
  34. package/dist/errors/base.error.d.ts +8 -0
  35. package/dist/errors/base.error.d.ts.map +1 -0
  36. package/dist/errors/base.error.js +9 -0
  37. package/dist/errors/base.error.js.map +1 -0
  38. package/dist/errors/index.d.ts +6 -0
  39. package/dist/errors/index.d.ts.map +1 -0
  40. package/dist/errors/index.js +12 -0
  41. package/dist/errors/index.js.map +1 -0
  42. package/dist/index.d.ts +6 -0
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +5 -0
  45. package/dist/index.js.map +1 -1
  46. package/dist/lib/auth/error-handler.d.ts +6 -0
  47. package/dist/lib/auth/error-handler.d.ts.map +1 -0
  48. package/dist/lib/auth/error-handler.js +18 -0
  49. package/dist/lib/auth/error-handler.js.map +1 -0
  50. package/dist/lib/auth/guards.d.ts +5 -6
  51. package/dist/lib/auth/guards.d.ts.map +1 -1
  52. package/dist/lib/auth/guards.js +7 -18
  53. package/dist/lib/auth/guards.js.map +1 -1
  54. package/dist/lib/auth/index.d.ts +1 -0
  55. package/dist/lib/auth/index.d.ts.map +1 -1
  56. package/dist/lib/auth/index.js +1 -0
  57. package/dist/lib/auth/index.js.map +1 -1
  58. package/dist/lib/auth/session.d.ts.map +1 -1
  59. package/dist/lib/auth/session.js +8 -7
  60. package/dist/lib/auth/session.js.map +1 -1
  61. package/dist/lib/rate-limiter.d.ts.map +1 -1
  62. package/dist/lib/rate-limiter.js +2 -1
  63. package/dist/lib/rate-limiter.js.map +1 -1
  64. package/dist/services/auth.interface.d.ts +15 -0
  65. package/dist/services/auth.interface.d.ts.map +1 -0
  66. package/dist/services/auth.interface.js +2 -0
  67. package/dist/services/auth.interface.js.map +1 -0
  68. package/dist/services/base.service.d.ts +17 -1
  69. package/dist/services/base.service.d.ts.map +1 -1
  70. package/dist/services/base.service.js +26 -3
  71. package/dist/services/base.service.js.map +1 -1
  72. package/dist/services/confirmation-token.service.d.ts +5 -1
  73. package/dist/services/confirmation-token.service.d.ts.map +1 -1
  74. package/dist/services/confirmation-token.service.js.map +1 -1
  75. package/dist/services/index.d.ts +3 -2
  76. package/dist/services/index.d.ts.map +1 -1
  77. package/dist/services/index.js +1 -1
  78. package/dist/services/index.js.map +1 -1
  79. package/dist/types/branded.d.ts +24 -0
  80. package/dist/types/branded.d.ts.map +1 -0
  81. package/dist/types/branded.js +9 -0
  82. package/dist/types/branded.js.map +1 -0
  83. package/dist/types/index.d.ts +4 -0
  84. package/dist/types/index.d.ts.map +1 -1
  85. package/dist/types/index.js +3 -1
  86. package/dist/types/index.js.map +1 -1
  87. package/dist/types/result.d.ts +20 -0
  88. package/dist/types/result.d.ts.map +1 -0
  89. package/dist/types/result.js +44 -0
  90. package/dist/types/result.js.map +1 -0
  91. package/package.json +22 -3
@@ -0,0 +1,409 @@
1
+ // ─── Auth ───────────────────────────────────────────
2
+ export class AuthSvc {
3
+ http;
4
+ constructor(http) {
5
+ this.http = http;
6
+ }
7
+ login(body) {
8
+ return this.http.post('/api/auth/login', body);
9
+ }
10
+ logout() {
11
+ return this.http.post('/api/auth/logout');
12
+ }
13
+ getSession() {
14
+ return this.http.get('/api/auth/session');
15
+ }
16
+ connectAcp() {
17
+ return this.http.post('/api/auth/acp/connect');
18
+ }
19
+ disconnectAcp() {
20
+ return this.http.post('/api/auth/acp/disconnect');
21
+ }
22
+ githubCallback(body) {
23
+ return this.http.post('/api/auth/github/callback', body);
24
+ }
25
+ instagramCallback(body) {
26
+ return this.http.post('/api/auth/instagram/callback', body);
27
+ }
28
+ youtubeCallback(body) {
29
+ return this.http.post('/api/auth/youtube/callback', body);
30
+ }
31
+ eventbriteConnect() {
32
+ return this.http.post('/api/auth/eventbrite/connect');
33
+ }
34
+ eventbriteCallback(body) {
35
+ return this.http.post('/api/auth/eventbrite/callback', body);
36
+ }
37
+ googleCalendarConnect() {
38
+ return this.http.post('/api/auth/google-calendar/connect');
39
+ }
40
+ }
41
+ // ─── OAuth ──────────────────────────────────────────
42
+ export class OAuthSvc {
43
+ http;
44
+ constructor(http) {
45
+ this.http = http;
46
+ }
47
+ getMetadata() {
48
+ return this.http.get('/.well-known/oauth-authorization-server');
49
+ }
50
+ authorize(body) {
51
+ return this.http.post('/oauth/authorize', body);
52
+ }
53
+ token(body) {
54
+ return this.http.post('/api/oauth/token', body);
55
+ }
56
+ }
57
+ // ─── Memories ───────────────────────────────────────
58
+ export class MemoriesSvc {
59
+ http;
60
+ constructor(http) {
61
+ this.http = http;
62
+ }
63
+ feed(params) {
64
+ return this.http.get('/api/memories/feed', params);
65
+ }
66
+ search(body) {
67
+ return this.http.post('/api/memories/search', body);
68
+ }
69
+ get(memoryId) {
70
+ return this.http.get(`/api/memories/${memoryId}`);
71
+ }
72
+ getSimilar(memoryId, params) {
73
+ return this.http.get(`/api/memories/${memoryId}/similar`, params);
74
+ }
75
+ batch(ids) {
76
+ return this.http.post('/api/memories/batch', { ids });
77
+ }
78
+ addComment(memoryId, body) {
79
+ return this.http.post(`/api/memories/${memoryId}/comments`, body);
80
+ }
81
+ rate(memoryId, rating) {
82
+ return this.http.post(`/api/memories/${memoryId}/rate`, { rating });
83
+ }
84
+ publish(memoryId) {
85
+ return this.http.post(`/api/memories/${memoryId}/publish`);
86
+ }
87
+ retract(memoryId) {
88
+ return this.http.post(`/api/memories/${memoryId}/retract`);
89
+ }
90
+ delete(memoryId) {
91
+ return this.http.post(`/api/memories/${memoryId}/delete`);
92
+ }
93
+ restore(memoryId) {
94
+ return this.http.post(`/api/memories/${memoryId}/restore`);
95
+ }
96
+ organize(memoryId, body) {
97
+ return this.http.post(`/api/memories/${memoryId}/organize`, body);
98
+ }
99
+ confirm(memoryId) {
100
+ return this.http.post(`/api/memories/${memoryId}/confirm`);
101
+ }
102
+ getConversations(memoryId) {
103
+ return this.http.get(`/api/memory-conversations/${memoryId}`);
104
+ }
105
+ }
106
+ // ─── Conversations ──────────────────────────────────
107
+ export class ConversationsSvc {
108
+ http;
109
+ constructor(http) {
110
+ this.http = http;
111
+ }
112
+ list() {
113
+ return this.http.get('/api/conversations');
114
+ }
115
+ create(body) {
116
+ return this.http.post('/api/conversations/create', body);
117
+ }
118
+ get(conversationId) {
119
+ return this.http.get(`/api/conversations/${conversationId}`);
120
+ }
121
+ addMessage(conversationId, body) {
122
+ return this.http.post(`/api/conversations/${conversationId}/messages`, body);
123
+ }
124
+ bulkImport(conversationId, messages) {
125
+ return this.http.post(`/api/conversations/${conversationId}/bulk-import`, { messages });
126
+ }
127
+ }
128
+ // ─── Profiles ───────────────────────────────────────
129
+ export class ProfilesSvc {
130
+ http;
131
+ constructor(http) {
132
+ this.http = http;
133
+ }
134
+ get(userId) {
135
+ return this.http.get(`/api/profile/${userId}`);
136
+ }
137
+ feed(userId, params) {
138
+ return this.http.get(`/api/profile/${userId}/feed`, params);
139
+ }
140
+ memoriesCount(userId) {
141
+ return this.http.get(`/api/profile/${userId}/memories/count`);
142
+ }
143
+ checkUsername(username) {
144
+ return this.http.post('/api/profile/username-check', { username });
145
+ }
146
+ list() {
147
+ return this.http.get('/api/profiles');
148
+ }
149
+ }
150
+ // ─── Groups ─────────────────────────────────────────
151
+ export class GroupsSvc {
152
+ http;
153
+ constructor(http) {
154
+ this.http = http;
155
+ }
156
+ list() {
157
+ return this.http.get('/api/groups');
158
+ }
159
+ create(body) {
160
+ return this.http.post('/api/groups/create', body);
161
+ }
162
+ batch(ids) {
163
+ return this.http.post('/api/groups/batch', { ids });
164
+ }
165
+ get(groupId) {
166
+ return this.http.get(`/api/groups/${groupId}`);
167
+ }
168
+ update(groupId, body) {
169
+ return this.http.patch(`/api/groups/${groupId}`, body);
170
+ }
171
+ delete(groupId) {
172
+ return this.http.delete(`/api/groups/${groupId}`);
173
+ }
174
+ listMembers(groupId) {
175
+ return this.http.get(`/api/groups/${groupId}/members`);
176
+ }
177
+ addMember(groupId, userId) {
178
+ return this.http.post(`/api/groups/${groupId}/members/${userId}`);
179
+ }
180
+ removeMember(groupId, userId) {
181
+ return this.http.delete(`/api/groups/${groupId}/members/${userId}`);
182
+ }
183
+ ban(groupId, userId) {
184
+ return this.http.post(`/api/groups/${groupId}/ban`, { userId });
185
+ }
186
+ unban(groupId, userId) {
187
+ return this.http.post(`/api/groups/${groupId}/unban`, { userId });
188
+ }
189
+ mute(groupId, userId) {
190
+ return this.http.post(`/api/groups/${groupId}/mute`, { userId });
191
+ }
192
+ unmute(groupId, userId) {
193
+ return this.http.post(`/api/groups/${groupId}/unmute`, { userId });
194
+ }
195
+ getLinks(groupId) {
196
+ return this.http.post(`/api/groups/${groupId}/links`);
197
+ }
198
+ redeemLink(code) {
199
+ return this.http.post(`/api/group-links/${code}/redeem`);
200
+ }
201
+ }
202
+ // ─── DMs ────────────────────────────────────────────
203
+ export class DmsSvc {
204
+ http;
205
+ constructor(http) {
206
+ this.http = http;
207
+ }
208
+ list() {
209
+ return this.http.get('/api/dm');
210
+ }
211
+ create(participantId) {
212
+ return this.http.post('/api/dm/create', { participantId });
213
+ }
214
+ get(conversationId) {
215
+ return this.http.get(`/api/dm/${conversationId}`);
216
+ }
217
+ createLink() {
218
+ return this.http.post('/api/dm-links');
219
+ }
220
+ redeemLink(code) {
221
+ return this.http.post(`/api/dm-links/${code}/redeem`);
222
+ }
223
+ }
224
+ // ─── Search ─────────────────────────────────────────
225
+ export class SearchSvc {
226
+ http;
227
+ constructor(http) {
228
+ this.http = http;
229
+ }
230
+ users(query) {
231
+ return this.http.post('/api/search/users', { query });
232
+ }
233
+ conversations(query) {
234
+ return this.http.post('/api/search/conversations', { query });
235
+ }
236
+ groups(query) {
237
+ return this.http.post('/api/search/groups', { query });
238
+ }
239
+ messages(query) {
240
+ return this.http.post('/api/search/messages', { query });
241
+ }
242
+ }
243
+ // ─── Notifications ──────────────────────────────────
244
+ export class NotificationsSvc {
245
+ http;
246
+ constructor(http) {
247
+ this.http = http;
248
+ }
249
+ list() {
250
+ return this.http.get('/api/notifications');
251
+ }
252
+ get(notificationId) {
253
+ return this.http.get(`/api/notifications/${notificationId}`);
254
+ }
255
+ delete(notificationId) {
256
+ return this.http.delete(`/api/notifications/${notificationId}`);
257
+ }
258
+ markAllRead() {
259
+ return this.http.post('/api/notifications', { action: 'mark_all_read' });
260
+ }
261
+ unreadCount() {
262
+ return this.http.get('/api/notifications/unread-count');
263
+ }
264
+ registerFcmToken(token) {
265
+ return this.http.post('/api/notifications/fcm-token', { token });
266
+ }
267
+ }
268
+ // ─── Relationships ──────────────────────────────────
269
+ export class RelationshipsSvc {
270
+ http;
271
+ constructor(http) {
272
+ this.http = http;
273
+ }
274
+ list() {
275
+ return this.http.get('/api/relationships');
276
+ }
277
+ create(relatedUserId) {
278
+ return this.http.post('/api/relationships', { relatedUserId });
279
+ }
280
+ }
281
+ // ─── Boards ─────────────────────────────────────────
282
+ export class BoardsSvc {
283
+ http;
284
+ constructor(http) {
285
+ this.http = http;
286
+ }
287
+ list() {
288
+ return this.http.get('/api/boards');
289
+ }
290
+ create(name) {
291
+ return this.http.post('/api/boards', { name });
292
+ }
293
+ get(boardId) {
294
+ return this.http.get(`/api/boards/${boardId}`);
295
+ }
296
+ update(boardId, body) {
297
+ return this.http.patch(`/api/boards/${boardId}`, body);
298
+ }
299
+ delete(boardId) {
300
+ return this.http.delete(`/api/boards/${boardId}`);
301
+ }
302
+ listWidgets(boardId) {
303
+ return this.http.get(`/api/boards/${boardId}/widgets`);
304
+ }
305
+ addWidget(boardId, body) {
306
+ return this.http.post(`/api/boards/${boardId}/widgets`, body);
307
+ }
308
+ }
309
+ // ─── Tokens ─────────────────────────────────────────
310
+ export class TokensSvc {
311
+ http;
312
+ constructor(http) {
313
+ this.http = http;
314
+ }
315
+ list() {
316
+ return this.http.get('/api/tokens');
317
+ }
318
+ create(name) {
319
+ return this.http.post('/api/tokens', { name });
320
+ }
321
+ update(tokenId, body) {
322
+ return this.http.patch(`/api/tokens/${tokenId}`, body);
323
+ }
324
+ delete(tokenId) {
325
+ return this.http.delete(`/api/tokens/${tokenId}`);
326
+ }
327
+ }
328
+ // ─── Integrations ───────────────────────────────────
329
+ export class IntegrationsSvc {
330
+ http;
331
+ constructor(http) {
332
+ this.http = http;
333
+ }
334
+ list() {
335
+ return this.http.get('/api/integrations');
336
+ }
337
+ disconnect(provider) {
338
+ return this.http.post(`/api/integrations/${provider}/disconnect`);
339
+ }
340
+ }
341
+ // ─── Settings ───────────────────────────────────────
342
+ export class SettingsSvc {
343
+ http;
344
+ constructor(http) {
345
+ this.http = http;
346
+ }
347
+ deleteAccount() {
348
+ return this.http.post('/api/settings/delete-account');
349
+ }
350
+ toggleGhost() {
351
+ return this.http.post('/api/settings/ghost');
352
+ }
353
+ updateVisibility(visibility) {
354
+ return this.http.post('/api/settings/visibility', { visibility });
355
+ }
356
+ acceptAiConsent() {
357
+ return this.http.post('/api/consent/ai');
358
+ }
359
+ acceptTos() {
360
+ return this.http.post('/api/consent/tos');
361
+ }
362
+ }
363
+ // ─── Payments ───────────────────────────────────────
364
+ export class PaymentsSvc {
365
+ http;
366
+ constructor(http) {
367
+ this.http = http;
368
+ }
369
+ createCheckout() {
370
+ return this.http.post('/api/stripe/checkout');
371
+ }
372
+ getBillingPortal() {
373
+ return this.http.post('/api/stripe/portal');
374
+ }
375
+ syncSubscription() {
376
+ return this.http.post('/api/stripe/sync');
377
+ }
378
+ getSubscription() {
379
+ return this.http.get('/api/subscription');
380
+ }
381
+ }
382
+ // ─── Usage ──────────────────────────────────────────
383
+ export class UsageSvc {
384
+ http;
385
+ constructor(http) {
386
+ this.http = http;
387
+ }
388
+ get() {
389
+ return this.http.get('/api/usage');
390
+ }
391
+ }
392
+ // ─── Storage ────────────────────────────────────────
393
+ // NOTE: File uploads use a WebSocket-based signed URL flow (GET /api/storage/ws),
394
+ // not a simple REST POST. This is out of scope for the REST client SDK.
395
+ // Implement upload flows directly using the WebSocket endpoint in your application.
396
+ // ─── Jobs ───────────────────────────────────────────
397
+ export class JobsSvc {
398
+ http;
399
+ constructor(http) {
400
+ this.http = http;
401
+ }
402
+ get(jobId) {
403
+ return this.http.get(`/api/jobs/${jobId}`);
404
+ }
405
+ cancel(jobId) {
406
+ return this.http.post(`/api/jobs/${jobId}/cancel`);
407
+ }
408
+ }
409
+ //# sourceMappingURL=svc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svc.js","sourceRoot":"","sources":["../../src/client/svc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ export interface FirebaseAdminConfig {
2
+ serviceAccountKey?: string;
3
+ projectId?: string;
4
+ }
5
+ export interface FirebaseClientConfig {
6
+ apiKey?: string;
7
+ authDomain?: string;
8
+ projectId?: string;
9
+ storageBucket?: string;
10
+ messagingSenderId?: string;
11
+ appId?: string;
12
+ measurementId?: string;
13
+ }
14
+ export interface AuthConfig {
15
+ ownerEmails: string[];
16
+ }
17
+ export interface AgentbaseConfig {
18
+ firebaseAdmin: FirebaseAdminConfig;
19
+ firebaseClient: FirebaseClientConfig;
20
+ auth: AuthConfig;
21
+ }
22
+ /**
23
+ * Load config from environment variables (or a passed env object).
24
+ */
25
+ export declare function loadConfig(env?: Record<string, string | undefined>): AgentbaseConfig;
26
+ /**
27
+ * Validate that required config fields are present.
28
+ * Throws ValidationError listing all missing fields.
29
+ */
30
+ export declare function validateConfig(config: AgentbaseConfig, options?: {
31
+ requireFirebaseAdmin?: boolean;
32
+ requireFirebaseClient?: boolean;
33
+ }): void;
34
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,mBAAmB;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,mBAAmB,CAAA;IAClC,cAAc,EAAE,oBAAoB,CAAA;IACpC,IAAI,EAAE,UAAU,CAAA;CACjB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GAAG,eAAe,CAmBjG;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE;IAAE,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAAC,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5E,IAAI,CAmBN"}
@@ -0,0 +1,50 @@
1
+ // src/config/index.ts
2
+ // Pattern: Config Environment (core-sdk.config-environment.md)
3
+ // Ported from remember-core
4
+ import { ValidationError } from '../errors/index.js';
5
+ /**
6
+ * Load config from environment variables (or a passed env object).
7
+ */
8
+ export function loadConfig(env = process.env) {
9
+ return {
10
+ firebaseAdmin: {
11
+ serviceAccountKey: env.FIREBASE_ADMIN_SERVICE_ACCOUNT_KEY,
12
+ projectId: env.FIREBASE_PROJECT_ID,
13
+ },
14
+ firebaseClient: {
15
+ apiKey: env.VITE_FIREBASE_API_KEY ?? env.FIREBASE_API_KEY,
16
+ authDomain: env.VITE_FIREBASE_AUTH_DOMAIN ?? env.FIREBASE_AUTH_DOMAIN,
17
+ projectId: env.VITE_FIREBASE_PROJECT_ID ?? env.FIREBASE_PROJECT_ID,
18
+ storageBucket: env.VITE_FIREBASE_STORAGE_BUCKET ?? env.FIREBASE_STORAGE_BUCKET,
19
+ messagingSenderId: env.VITE_FIREBASE_MESSAGING_SENDER_ID ?? env.FIREBASE_MESSAGING_SENDER_ID,
20
+ appId: env.VITE_FIREBASE_APP_ID ?? env.FIREBASE_APP_ID,
21
+ measurementId: env.VITE_FIREBASE_MEASUREMENT_ID ?? env.FIREBASE_MEASUREMENT_ID,
22
+ },
23
+ auth: {
24
+ ownerEmails: (env.OWNER_EMAILS ?? '').split(',').map(e => e.trim()).filter(Boolean),
25
+ },
26
+ };
27
+ }
28
+ /**
29
+ * Validate that required config fields are present.
30
+ * Throws ValidationError listing all missing fields.
31
+ */
32
+ export function validateConfig(config, options) {
33
+ const missing = [];
34
+ if (options?.requireFirebaseAdmin) {
35
+ if (!config.firebaseAdmin.serviceAccountKey)
36
+ missing.push('FIREBASE_ADMIN_SERVICE_ACCOUNT_KEY');
37
+ if (!config.firebaseAdmin.projectId)
38
+ missing.push('FIREBASE_PROJECT_ID');
39
+ }
40
+ if (options?.requireFirebaseClient) {
41
+ if (!config.firebaseClient.apiKey)
42
+ missing.push('FIREBASE_API_KEY');
43
+ if (!config.firebaseClient.projectId)
44
+ missing.push('FIREBASE_PROJECT_ID');
45
+ }
46
+ if (missing.length > 0) {
47
+ throw new ValidationError(`Missing required config: ${missing.join(', ')}`, { missing });
48
+ }
49
+ }
50
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,+DAA+D;AAC/D,4BAA4B;AAE5B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AA2BpD;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,MAA0C,OAAO,CAAC,GAAG;IAC9E,OAAO;QACL,aAAa,EAAE;YACb,iBAAiB,EAAE,GAAG,CAAC,kCAAkC;YACzD,SAAS,EAAE,GAAG,CAAC,mBAAmB;SACnC;QACD,cAAc,EAAE;YACd,MAAM,EAAE,GAAG,CAAC,qBAAqB,IAAI,GAAG,CAAC,gBAAgB;YACzD,UAAU,EAAE,GAAG,CAAC,yBAAyB,IAAI,GAAG,CAAC,oBAAoB;YACrE,SAAS,EAAE,GAAG,CAAC,wBAAwB,IAAI,GAAG,CAAC,mBAAmB;YAClE,aAAa,EAAE,GAAG,CAAC,4BAA4B,IAAI,GAAG,CAAC,uBAAuB;YAC9E,iBAAiB,EAAE,GAAG,CAAC,iCAAiC,IAAI,GAAG,CAAC,4BAA4B;YAC5F,KAAK,EAAE,GAAG,CAAC,oBAAoB,IAAI,GAAG,CAAC,eAAe;YACtD,aAAa,EAAE,GAAG,CAAC,4BAA4B,IAAI,GAAG,CAAC,uBAAuB;SAC/E;QACD,IAAI,EAAE;YACJ,WAAW,EAAE,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;SACpF;KACF,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAuB,EACvB,OAA6E;IAE7E,MAAM,OAAO,GAAa,EAAE,CAAA;IAE5B,IAAI,OAAO,EAAE,oBAAoB,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,iBAAiB;YAAE,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;QAC/F,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IAC1E,CAAC;IAED,IAAI,OAAO,EAAE,qBAAqB,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QACnE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IAC3E,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,eAAe,CACvB,4BAA4B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAChD,EAAE,OAAO,EAAE,CACZ,CAAA;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { AppError, type ErrorKind } from './base.error.js';
2
+ export declare class ValidationError extends AppError {
3
+ readonly kind: ErrorKind;
4
+ readonly statusCode = 400;
5
+ }
6
+ export declare class NotFoundError extends AppError {
7
+ readonly kind: ErrorKind;
8
+ readonly statusCode = 404;
9
+ }
10
+ export declare class UnauthorizedError extends AppError {
11
+ readonly kind: ErrorKind;
12
+ readonly statusCode = 401;
13
+ }
14
+ export declare class ForbiddenError extends AppError {
15
+ readonly kind: ErrorKind;
16
+ readonly statusCode = 403;
17
+ }
18
+ export declare class ConflictError extends AppError {
19
+ readonly kind: ErrorKind;
20
+ readonly statusCode = 409;
21
+ }
22
+ export declare class RateLimitError extends AppError {
23
+ readonly kind: ErrorKind;
24
+ readonly statusCode = 429;
25
+ }
26
+ export declare class ExternalError extends AppError {
27
+ readonly kind: ErrorKind;
28
+ readonly statusCode = 502;
29
+ }
30
+ export declare class InternalError extends AppError {
31
+ readonly kind: ErrorKind;
32
+ readonly statusCode = 500;
33
+ }
34
+ //# sourceMappingURL=app-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-errors.d.ts","sourceRoot":"","sources":["../../src/errors/app-errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE1D,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAe;IACvC,QAAQ,CAAC,UAAU,OAAM;CAC1B;AAED,qBAAa,aAAc,SAAQ,QAAQ;IACzC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAc;IACtC,QAAQ,CAAC,UAAU,OAAM;CAC1B;AAED,qBAAa,iBAAkB,SAAQ,QAAQ;IAC7C,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAiB;IACzC,QAAQ,CAAC,UAAU,OAAM;CAC1B;AAED,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAc;IACtC,QAAQ,CAAC,UAAU,OAAM;CAC1B;AAED,qBAAa,aAAc,SAAQ,QAAQ;IACzC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAa;IACrC,QAAQ,CAAC,UAAU,OAAM;CAC1B;AAED,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAe;IACvC,QAAQ,CAAC,UAAU,OAAM;CAC1B;AAED,qBAAa,aAAc,SAAQ,QAAQ;IACzC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAa;IACrC,QAAQ,CAAC,UAAU,OAAM;CAC1B;AAED,qBAAa,aAAc,SAAQ,QAAQ;IACzC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAa;IACrC,QAAQ,CAAC,UAAU,OAAM;CAC1B"}
@@ -0,0 +1,34 @@
1
+ import { AppError } from './base.error.js';
2
+ export class ValidationError extends AppError {
3
+ kind = 'VALIDATION';
4
+ statusCode = 400;
5
+ }
6
+ export class NotFoundError extends AppError {
7
+ kind = 'NOT_FOUND';
8
+ statusCode = 404;
9
+ }
10
+ export class UnauthorizedError extends AppError {
11
+ kind = 'UNAUTHORIZED';
12
+ statusCode = 401;
13
+ }
14
+ export class ForbiddenError extends AppError {
15
+ kind = 'FORBIDDEN';
16
+ statusCode = 403;
17
+ }
18
+ export class ConflictError extends AppError {
19
+ kind = 'CONFLICT';
20
+ statusCode = 409;
21
+ }
22
+ export class RateLimitError extends AppError {
23
+ kind = 'RATE_LIMIT';
24
+ statusCode = 429;
25
+ }
26
+ export class ExternalError extends AppError {
27
+ kind = 'EXTERNAL';
28
+ statusCode = 502;
29
+ }
30
+ export class InternalError extends AppError {
31
+ kind = 'INTERNAL';
32
+ statusCode = 500;
33
+ }
34
+ //# sourceMappingURL=app-errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-errors.js","sourceRoot":"","sources":["../../src/errors/app-errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,iBAAiB,CAAA;AAE1D,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAClC,IAAI,GAAc,YAAY,CAAA;IAC9B,UAAU,GAAG,GAAG,CAAA;CAC1B;AAED,MAAM,OAAO,aAAc,SAAQ,QAAQ;IAChC,IAAI,GAAc,WAAW,CAAA;IAC7B,UAAU,GAAG,GAAG,CAAA;CAC1B;AAED,MAAM,OAAO,iBAAkB,SAAQ,QAAQ;IACpC,IAAI,GAAc,cAAc,CAAA;IAChC,UAAU,GAAG,GAAG,CAAA;CAC1B;AAED,MAAM,OAAO,cAAe,SAAQ,QAAQ;IACjC,IAAI,GAAc,WAAW,CAAA;IAC7B,UAAU,GAAG,GAAG,CAAA;CAC1B;AAED,MAAM,OAAO,aAAc,SAAQ,QAAQ;IAChC,IAAI,GAAc,UAAU,CAAA;IAC5B,UAAU,GAAG,GAAG,CAAA;CAC1B;AAED,MAAM,OAAO,cAAe,SAAQ,QAAQ;IACjC,IAAI,GAAc,YAAY,CAAA;IAC9B,UAAU,GAAG,GAAG,CAAA;CAC1B;AAED,MAAM,OAAO,aAAc,SAAQ,QAAQ;IAChC,IAAI,GAAc,UAAU,CAAA;IAC5B,UAAU,GAAG,GAAG,CAAA;CAC1B;AAED,MAAM,OAAO,aAAc,SAAQ,QAAQ;IAChC,IAAI,GAAc,UAAU,CAAA;IAC5B,UAAU,GAAG,GAAG,CAAA;CAC1B"}
@@ -0,0 +1,8 @@
1
+ export type ErrorKind = 'VALIDATION' | 'NOT_FOUND' | 'UNAUTHORIZED' | 'FORBIDDEN' | 'CONFLICT' | 'RATE_LIMIT' | 'EXTERNAL' | 'INTERNAL';
2
+ export declare abstract class AppError extends Error {
3
+ abstract readonly kind: ErrorKind;
4
+ abstract readonly statusCode: number;
5
+ readonly context?: Record<string, unknown>;
6
+ constructor(message: string, context?: Record<string, unknown>);
7
+ }
8
+ //# sourceMappingURL=base.error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.error.d.ts","sourceRoot":"","sources":["../../src/errors/base.error.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,YAAY,GACZ,WAAW,GACX,cAAc,GACd,WAAW,GACX,UAAU,GACV,YAAY,GACZ,UAAU,GACV,UAAU,CAAA;AAEd,8BAAsB,QAAS,SAAQ,KAAK;IAC1C,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACjC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;gBAE9B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAK/D"}
@@ -0,0 +1,9 @@
1
+ export class AppError extends Error {
2
+ context;
3
+ constructor(message, context) {
4
+ super(message);
5
+ this.name = this.constructor.name;
6
+ this.context = context;
7
+ }
8
+ }
9
+ //# sourceMappingURL=base.error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.error.js","sourceRoot":"","sources":["../../src/errors/base.error.ts"],"names":[],"mappings":"AAUA,MAAM,OAAgB,QAAS,SAAQ,KAAK;IAGjC,OAAO,CAA0B;IAE1C,YAAY,OAAe,EAAE,OAAiC;QAC5D,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ export { AppError, type ErrorKind } from './base.error.js';
2
+ export { ValidationError, NotFoundError, UnauthorizedError, ForbiddenError, ConflictError, RateLimitError, ExternalError, InternalError, } from './app-errors.js';
3
+ import { AppError } from './base.error.js';
4
+ export declare function isAppError(err: unknown): err is AppError;
5
+ export declare function errorToStatusCode(err: unknown): number;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EACL,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACb,aAAa,GACd,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE1C,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,QAAQ,CAExD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAGtD"}
@@ -0,0 +1,12 @@
1
+ export { AppError } from './base.error.js';
2
+ export { ValidationError, NotFoundError, UnauthorizedError, ForbiddenError, ConflictError, RateLimitError, ExternalError, InternalError, } from './app-errors.js';
3
+ import { AppError } from './base.error.js';
4
+ export function isAppError(err) {
5
+ return err instanceof AppError;
6
+ }
7
+ export function errorToStatusCode(err) {
8
+ if (err instanceof AppError)
9
+ return err.statusCode;
10
+ return 500;
11
+ }
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EACL,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACb,aAAa,GACd,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE1C,MAAM,UAAU,UAAU,CAAC,GAAY;IACrC,OAAO,GAAG,YAAY,QAAQ,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,IAAI,GAAG,YAAY,QAAQ;QAAE,OAAO,GAAG,CAAC,UAAU,CAAA;IAClD,OAAO,GAAG,CAAA;AACZ,CAAC"}