@aether-baas/core 3.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.
Files changed (49) hide show
  1. package/dist/adapters/storage.d.ts +126 -0
  2. package/dist/adapters/storage.d.ts.map +1 -0
  3. package/dist/adapters/storage.js +299 -0
  4. package/dist/adapters/storage.js.map +1 -0
  5. package/dist/client/index.d.ts +172 -0
  6. package/dist/client/index.d.ts.map +1 -0
  7. package/dist/client/index.js +409 -0
  8. package/dist/client/index.js.map +1 -0
  9. package/dist/errors/index.d.ts +251 -0
  10. package/dist/errors/index.d.ts.map +1 -0
  11. package/dist/errors/index.js +542 -0
  12. package/dist/errors/index.js.map +1 -0
  13. package/dist/http/client.d.ts +40 -0
  14. package/dist/http/client.d.ts.map +1 -0
  15. package/dist/http/client.js +247 -0
  16. package/dist/http/client.js.map +1 -0
  17. package/dist/index.d.ts +21 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +44 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/modules/ai.d.ts +165 -0
  22. package/dist/modules/ai.d.ts.map +1 -0
  23. package/dist/modules/ai.js +330 -0
  24. package/dist/modules/ai.js.map +1 -0
  25. package/dist/modules/database.d.ts +187 -0
  26. package/dist/modules/database.d.ts.map +1 -0
  27. package/dist/modules/database.js +428 -0
  28. package/dist/modules/database.js.map +1 -0
  29. package/dist/modules/functions.d.ts +48 -0
  30. package/dist/modules/functions.d.ts.map +1 -0
  31. package/dist/modules/functions.js +83 -0
  32. package/dist/modules/functions.js.map +1 -0
  33. package/dist/modules/push.d.ts +174 -0
  34. package/dist/modules/push.d.ts.map +1 -0
  35. package/dist/modules/push.js +181 -0
  36. package/dist/modules/push.js.map +1 -0
  37. package/dist/modules/storage.d.ts +69 -0
  38. package/dist/modules/storage.d.ts.map +1 -0
  39. package/dist/modules/storage.js +151 -0
  40. package/dist/modules/storage.js.map +1 -0
  41. package/dist/modules/tenant-auth.d.ts +167 -0
  42. package/dist/modules/tenant-auth.d.ts.map +1 -0
  43. package/dist/modules/tenant-auth.js +341 -0
  44. package/dist/modules/tenant-auth.js.map +1 -0
  45. package/dist/types/index.d.ts +470 -0
  46. package/dist/types/index.d.ts.map +1 -0
  47. package/dist/types/index.js +19 -0
  48. package/dist/types/index.js.map +1 -0
  49. package/package.json +80 -0
@@ -0,0 +1,330 @@
1
+ // =============================================================================
2
+ // @aether/core - AI Module
3
+ // =============================================================================
4
+ // Módulo de Inteligência Artificial do Aether.
5
+ // Oferece chat, busca semântica, geração de conteúdo e análise.
6
+ // =============================================================================
7
+ // =============================================================================
8
+ // SUB-MÓDULOS
9
+ // =============================================================================
10
+ /**
11
+ * API de conversas.
12
+ */
13
+ class ConversationsAPI {
14
+ client;
15
+ http;
16
+ constructor(client, http) {
17
+ this.client = client;
18
+ this.http = http;
19
+ }
20
+ async list() {
21
+ const { data } = await this.http.get('/ai/conversations', { params: { projectId: this.client.projectId } });
22
+ return data.data;
23
+ }
24
+ async get(conversationId) {
25
+ const { data } = await this.http.get(`/ai/conversations/${conversationId}`, { params: { projectId: this.client.projectId } });
26
+ return data.data;
27
+ }
28
+ async getMessages(conversationId) {
29
+ const { data } = await this.http.get(`/ai/conversations/${conversationId}/messages`, { params: { projectId: this.client.projectId } });
30
+ return data.data;
31
+ }
32
+ async rename(conversationId, title) {
33
+ const { data } = await this.http.put(`/ai/conversations/${conversationId}`, { title, projectId: this.client.projectId });
34
+ return data.data;
35
+ }
36
+ async delete(conversationId) {
37
+ await this.http.delete(`/ai/conversations/${conversationId}`, {
38
+ params: { projectId: this.client.projectId },
39
+ });
40
+ }
41
+ }
42
+ /**
43
+ * API de memória de usuário.
44
+ */
45
+ class MemoryAPI {
46
+ client;
47
+ http;
48
+ constructor(client, http) {
49
+ this.client = client;
50
+ this.http = http;
51
+ }
52
+ async get(userId, key) {
53
+ const { data } = await this.http.get(`/ai/memory/${userId}/${key}`, { params: { projectId: this.client.projectId } });
54
+ return data.data;
55
+ }
56
+ async set(userId, key, value) {
57
+ await this.http.post('/ai/memory', {
58
+ projectId: this.client.projectId,
59
+ userId,
60
+ key,
61
+ value,
62
+ });
63
+ }
64
+ async delete(userId, key) {
65
+ await this.http.delete(`/ai/memory/${userId}/${key}`, {
66
+ params: { projectId: this.client.projectId },
67
+ });
68
+ }
69
+ async listKeys(userId) {
70
+ const { data } = await this.http.get(`/ai/memory/${userId}`, { params: { projectId: this.client.projectId } });
71
+ return data.data;
72
+ }
73
+ }
74
+ /**
75
+ * API administrativa de IA.
76
+ */
77
+ class AIAdminAPI {
78
+ client;
79
+ http;
80
+ constructor(client, http) {
81
+ this.client = client;
82
+ this.http = http;
83
+ }
84
+ async stats() {
85
+ const { data } = await this.http.get('/ai/admin/stats', {
86
+ params: { projectId: this.client.projectId },
87
+ });
88
+ return data;
89
+ }
90
+ async reindex() {
91
+ const { data } = await this.http.post('/ai/admin/reindex', {
92
+ projectId: this.client.projectId,
93
+ });
94
+ return data;
95
+ }
96
+ async setIndexedCollections(collections) {
97
+ await this.http.post('/ai/admin/indexed-collections', {
98
+ projectId: this.client.projectId,
99
+ collections,
100
+ });
101
+ }
102
+ async clear() {
103
+ await this.http.post('/ai/admin/clear', {
104
+ projectId: this.client.projectId,
105
+ });
106
+ }
107
+ async setPersona(config) {
108
+ await this.http.post('/ai/persona', {
109
+ projectId: this.client.projectId,
110
+ ...config,
111
+ });
112
+ }
113
+ async getPersona() {
114
+ const { data } = await this.http.get('/ai/persona', {
115
+ params: { projectId: this.client.projectId },
116
+ });
117
+ return data.persona || null;
118
+ }
119
+ }
120
+ // =============================================================================
121
+ // AI MODULE
122
+ // =============================================================================
123
+ /**
124
+ * Módulo de IA do Aether.
125
+ *
126
+ * @example
127
+ * ```typescript
128
+ * // Pergunta simples
129
+ * const { text } = await aether.ai.ask("Quais produtos estão em promoção?");
130
+ *
131
+ * // Chat com streaming
132
+ * await aether.ai.chat("Explique o sistema", {
133
+ * onChunk: (chunk) => console.log(chunk),
134
+ * onComplete: (full, meta) => console.log("Conversa:", meta.conversationId)
135
+ * });
136
+ * ```
137
+ */
138
+ export class AIModule {
139
+ client;
140
+ http;
141
+ /** API de conversas */
142
+ conversations;
143
+ /** API de memória */
144
+ memory;
145
+ /** API administrativa */
146
+ admin;
147
+ constructor(client, http) {
148
+ this.client = client;
149
+ this.http = http;
150
+ this.conversations = new ConversationsAPI(client, http);
151
+ this.memory = new MemoryAPI(client, http);
152
+ this.admin = new AIAdminAPI(client, http);
153
+ }
154
+ // ===========================================================================
155
+ // MÉTODOS PRINCIPAIS
156
+ // ===========================================================================
157
+ /**
158
+ * Faz uma pergunta simples e aguarda resposta completa.
159
+ */
160
+ async ask(message, conversationId) {
161
+ return new Promise((resolve, reject) => {
162
+ let fullText = '';
163
+ let _metadata = { conversationId: conversationId || '' };
164
+ this.chat(message, {
165
+ conversationId,
166
+ onChunk: (chunk) => {
167
+ fullText += chunk;
168
+ },
169
+ onComplete: (_response, meta) => {
170
+ _metadata = meta;
171
+ resolve({
172
+ text: fullText,
173
+ conversationId: meta.conversationId,
174
+ sources: meta.sources,
175
+ });
176
+ },
177
+ onError: reject,
178
+ }).catch(reject);
179
+ });
180
+ }
181
+ /**
182
+ * Chat com streaming de resposta.
183
+ */
184
+ async chat(message, options = {}) {
185
+ const projectId = this.client.projectId;
186
+ const token = this.client.getToken();
187
+ if (!token) {
188
+ const error = new Error('Usuário não autenticado. Faça login primeiro.');
189
+ if (options.onError) {
190
+ options.onError(error);
191
+ return;
192
+ }
193
+ throw error;
194
+ }
195
+ const timeout = options.timeout || 30000;
196
+ const controller = new AbortController();
197
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
198
+ try {
199
+ const response = await fetch(`${this.client.apiUrl}/v1/ai/chat`, {
200
+ method: 'POST',
201
+ headers: {
202
+ 'Content-Type': 'application/json',
203
+ Authorization: `Bearer ${token}`,
204
+ 'X-Project-ID': projectId,
205
+ },
206
+ body: JSON.stringify({
207
+ message,
208
+ projectId,
209
+ conversationId: options.conversationId,
210
+ context: options.context || 'general',
211
+ }),
212
+ signal: controller.signal,
213
+ });
214
+ clearTimeout(timeoutId);
215
+ if (!response.ok) {
216
+ const errorText = await response.text();
217
+ throw new Error(`Erro na API: ${response.status} - ${errorText}`);
218
+ }
219
+ const convIdFromHeader = response.headers.get('X-Conversation-ID');
220
+ const reader = response.body?.getReader();
221
+ if (!reader) {
222
+ throw new Error('Resposta sem corpo');
223
+ }
224
+ const decoder = new TextDecoder();
225
+ let fullText = '';
226
+ while (true) {
227
+ const { done, value } = await reader.read();
228
+ if (done)
229
+ break;
230
+ const chunk = decoder.decode(value, { stream: true });
231
+ fullText += chunk;
232
+ if (options.onChunk) {
233
+ options.onChunk(chunk);
234
+ }
235
+ }
236
+ if (options.onComplete) {
237
+ options.onComplete(fullText, {
238
+ conversationId: convIdFromHeader || options.conversationId || '',
239
+ });
240
+ }
241
+ }
242
+ catch (error) {
243
+ if (options.onError) {
244
+ options.onError(error);
245
+ }
246
+ else {
247
+ throw error;
248
+ }
249
+ }
250
+ }
251
+ // ===========================================================================
252
+ // BUSCA SEMÂNTICA
253
+ // ===========================================================================
254
+ /**
255
+ * Busca semântica usando embeddings.
256
+ */
257
+ async search(query, options) {
258
+ const { data } = await this.http.post('/ai/search', {
259
+ projectId: this.client.projectId,
260
+ query,
261
+ limit: options?.limit ?? 10,
262
+ minScore: options?.minScore ?? 0.5,
263
+ collection: options?.collection,
264
+ });
265
+ return data.data;
266
+ }
267
+ // ===========================================================================
268
+ // GERAÇÃO DE CONTEÚDO
269
+ // ===========================================================================
270
+ /**
271
+ * Gera texto baseado em prompt e dados.
272
+ */
273
+ async generate(prompt, data, options) {
274
+ const { data: response } = await this.http.post('/ai/generate', {
275
+ projectId: this.client.projectId,
276
+ prompt,
277
+ data,
278
+ ...options,
279
+ });
280
+ return response.text;
281
+ }
282
+ // ===========================================================================
283
+ // ANÁLISE
284
+ // ===========================================================================
285
+ /**
286
+ * Analisa dados de uma collection.
287
+ */
288
+ async analyze(collection, options) {
289
+ const { data } = await this.http.post('/ai/analyze', {
290
+ projectId: this.client.projectId,
291
+ collection,
292
+ ...options,
293
+ });
294
+ return data;
295
+ }
296
+ /**
297
+ * Converte linguagem natural em query estruturada.
298
+ */
299
+ async parseQuery(text) {
300
+ const { data } = await this.http.post('/ai/parse-query', {
301
+ projectId: this.client.projectId,
302
+ text,
303
+ });
304
+ return data;
305
+ }
306
+ // ===========================================================================
307
+ // FEEDBACK E USAGE
308
+ // ===========================================================================
309
+ /**
310
+ * Envia feedback sobre uma resposta.
311
+ */
312
+ async feedback(messageId, type, comment) {
313
+ await this.http.post('/ai/feedback', {
314
+ projectId: this.client.projectId,
315
+ messageId,
316
+ type,
317
+ comment,
318
+ });
319
+ }
320
+ /**
321
+ * Retorna informações de uso/quota.
322
+ */
323
+ async getUsage() {
324
+ const { data } = await this.http.get('/ai/usage', {
325
+ params: { projectId: this.client.projectId },
326
+ });
327
+ return data;
328
+ }
329
+ }
330
+ //# sourceMappingURL=ai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/modules/ai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,187 @@
1
+ import type { AxiosInstance } from 'axios';
2
+ import type { PlataformaClient } from '../client/index.js';
3
+ import type { ListOptions, BatchOperation } from '../types/index.js';
4
+ /**
5
+ * Builder para construção fluente de queries.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const adults = await aether.db.collection('users')
10
+ * .query()
11
+ * .eq('status', 'active')
12
+ * .gt('age', 18)
13
+ * .order('name', 'ASC')
14
+ * .limit(50)
15
+ * .get();
16
+ * ```
17
+ */
18
+ export declare class QueryBuilder<T> {
19
+ private collectionRef;
20
+ private filter;
21
+ private sort?;
22
+ private limitVal?;
23
+ private offsetVal?;
24
+ constructor(collectionRef: CollectionReference<T>);
25
+ /** Igual a */
26
+ eq(column: keyof T & string, value: unknown): this;
27
+ /** Diferente de */
28
+ neq(column: keyof T & string, value: unknown): this;
29
+ /** Maior que */
30
+ gt(column: keyof T & string, value: number | string): this;
31
+ /** Maior ou igual */
32
+ gte(column: keyof T & string, value: number | string): this;
33
+ /** Menor que */
34
+ lt(column: keyof T & string, value: number | string): this;
35
+ /** Menor ou igual */
36
+ lte(column: keyof T & string, value: number | string): this;
37
+ /** Contém (LIKE %value%) */
38
+ like(column: keyof T & string, value: string): this;
39
+ /** Contém case-insensitive (ILIKE) */
40
+ ilike(column: keyof T & string, value: string): this;
41
+ /** Está na lista */
42
+ in(column: keyof T & string, values: unknown[]): this;
43
+ /** Não está na lista */
44
+ notIn(column: keyof T & string, values: unknown[]): this;
45
+ /** É nulo */
46
+ isNull(column: keyof T & string): this;
47
+ /** Não é nulo */
48
+ isNotNull(column: keyof T & string): this;
49
+ /** Ordenação */
50
+ order(column: keyof T & string, direction?: 'ASC' | 'DESC'): this;
51
+ /** Limite de resultados */
52
+ limit(count: number): this;
53
+ /** Offset para paginação */
54
+ offset(count: number): this;
55
+ /** Executa a query e retorna resultados */
56
+ get(): Promise<T[]>;
57
+ /** Executa e retorna primeiro resultado ou null */
58
+ first(): Promise<T | null>;
59
+ /** Conta resultados */
60
+ count(): Promise<number>;
61
+ }
62
+ /**
63
+ * Referência a uma coleção específica.
64
+ */
65
+ export declare class CollectionReference<T> {
66
+ private client;
67
+ private http;
68
+ private collectionName;
69
+ private wsUrl;
70
+ constructor(client: PlataformaClient, http: AxiosInstance, name: string);
71
+ /** Atalho para query().eq() */
72
+ eq(column: keyof T & string, value: unknown): QueryBuilder<T>;
73
+ /** Atalho para query().gt() */
74
+ gt(column: keyof T & string, value: number | string): QueryBuilder<T>;
75
+ /** Inicia uma nova query */
76
+ query(): QueryBuilder<T>;
77
+ /**
78
+ * Lista documentos da collection.
79
+ */
80
+ list(options?: ListOptions<T>): Promise<T[]>;
81
+ /**
82
+ * Busca um documento por ID.
83
+ */
84
+ get(id: string): Promise<T>;
85
+ /**
86
+ * Cria um novo documento.
87
+ */
88
+ create(newData: Partial<T>): Promise<T>;
89
+ /**
90
+ * Atualiza um documento existente.
91
+ */
92
+ update(id: string, updates: Partial<T>): Promise<T>;
93
+ /**
94
+ * Remove um documento.
95
+ */
96
+ delete(id: string): Promise<boolean>;
97
+ /**
98
+ * Cria ou atualiza documento (upsert).
99
+ */
100
+ upsert(data: Partial<T> & {
101
+ id?: string;
102
+ }): Promise<T>;
103
+ /**
104
+ * Inscreve para receber atualizações em tempo real.
105
+ *
106
+ * @param callback Função chamada quando há mudanças
107
+ * @returns Função para cancelar inscrição
108
+ *
109
+ * @example
110
+ * ```typescript
111
+ * const unsubscribe = aether.db.collection('messages').subscribe((action, data) => {
112
+ * if (action === 'create') {
113
+ * console.log('Nova mensagem:', data);
114
+ * }
115
+ * });
116
+ *
117
+ * // Para cancelar:
118
+ * unsubscribe();
119
+ * ```
120
+ */
121
+ subscribe(callback: (action: 'create' | 'update' | 'delete', data: T) => void): () => void;
122
+ }
123
+ /**
124
+ * Módulo de banco de dados do Aether.
125
+ */
126
+ export declare class DatabaseModule {
127
+ private client;
128
+ private http;
129
+ constructor(client: PlataformaClient, http: AxiosInstance);
130
+ /**
131
+ * Seleciona uma coleção de dados.
132
+ *
133
+ * @example
134
+ * ```typescript
135
+ * interface Product {
136
+ * id: string;
137
+ * name: string;
138
+ * price: number;
139
+ * }
140
+ *
141
+ * const products = aether.db.collection<Product>('products');
142
+ * ```
143
+ */
144
+ collection<T = Record<string, unknown>>(collectionName: string): CollectionReference<T>;
145
+ /**
146
+ * Método compatível com estilo Supabase/Drizzle.
147
+ *
148
+ * @example
149
+ * ```typescript
150
+ * const { data, error } = await aether.db.from('posts').select('*');
151
+ * ```
152
+ */
153
+ from<T = Record<string, unknown>>(tableName: string): {
154
+ select: (_columns?: string) => Promise<{
155
+ data: T[];
156
+ error: null;
157
+ } | {
158
+ data: null;
159
+ error: {} | undefined;
160
+ }>;
161
+ insert: (data: T) => Promise<{
162
+ data: Awaited<T>;
163
+ error: null;
164
+ } | {
165
+ data: null;
166
+ error: {} | undefined;
167
+ }>;
168
+ update: (data: Partial<T> & {
169
+ id?: string;
170
+ }) => Promise<{
171
+ data: Awaited<T>;
172
+ error: null;
173
+ } | {
174
+ data: null;
175
+ error: {} | undefined;
176
+ }>;
177
+ delete: () => Promise<{
178
+ data: null;
179
+ error: string;
180
+ }>;
181
+ };
182
+ /**
183
+ * Executa múltiplas operações em uma única transação.
184
+ */
185
+ batch(operations: BatchOperation[]): Promise<unknown[]>;
186
+ }
187
+ //# sourceMappingURL=database.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/modules/database.ts"],"names":[],"mappings":"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"}