@aerostack/sdk-node 0.8.8 → 0.8.9

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 (110) hide show
  1. package/package.json +9 -2
  2. package/FUNCTIONS.md +0 -95
  3. package/RUNTIMES.md +0 -48
  4. package/examples/aiAIChat.example.ts +0 -31
  5. package/examples/databaseDbQuery.example.ts +0 -34
  6. package/examples/e2e/__tests__/e2e.test.ts +0 -118
  7. package/examples/e2e/package.json +0 -15
  8. package/examples/e2e/vitest.config.ts +0 -8
  9. package/examples/express-integration.ts +0 -67
  10. package/examples/next-api-route.ts +0 -46
  11. package/examples/package.json +0 -18
  12. package/examples/standalone-auth.ts +0 -44
  13. package/jsr.json +0 -27
  14. package/src/__tests__/realtime.test.ts +0 -430
  15. package/src/__tests__/sdk.test.ts +0 -412
  16. package/src/_generated/apis/AIApi.ts +0 -477
  17. package/src/_generated/apis/AuthenticationApi.ts +0 -121
  18. package/src/_generated/apis/CacheApi.ts +0 -551
  19. package/src/_generated/apis/DatabaseApi.ts +0 -138
  20. package/src/_generated/apis/GatewayApi.ts +0 -204
  21. package/src/_generated/apis/QueueApi.ts +0 -218
  22. package/src/_generated/apis/ServicesApi.ts +0 -74
  23. package/src/_generated/apis/StorageApi.ts +0 -476
  24. package/src/_generated/apis/index.ts +0 -10
  25. package/src/_generated/index.ts +0 -5
  26. package/src/_generated/models/AuthResponse.ts +0 -88
  27. package/src/_generated/models/AuthSigninRequest.ts +0 -75
  28. package/src/_generated/models/AuthSignupRequest.ts +0 -91
  29. package/src/_generated/models/CacheDeleteMany200Response.ts +0 -81
  30. package/src/_generated/models/CacheDeleteManyRequest.ts +0 -66
  31. package/src/_generated/models/CacheExpireRequest.ts +0 -75
  32. package/src/_generated/models/CacheFlush200Response.ts +0 -73
  33. package/src/_generated/models/CacheFlushRequest.ts +0 -65
  34. package/src/_generated/models/CacheGet200Response.ts +0 -73
  35. package/src/_generated/models/CacheGetMany200Response.ts +0 -72
  36. package/src/_generated/models/CacheGetManyEntry.ts +0 -81
  37. package/src/_generated/models/CacheGetManyRequest.ts +0 -66
  38. package/src/_generated/models/CacheGetRequest.ts +0 -66
  39. package/src/_generated/models/CacheIncrement200Response.ts +0 -65
  40. package/src/_generated/models/CacheIncrementRequest.ts +0 -90
  41. package/src/_generated/models/CacheKeyEntry.ts +0 -73
  42. package/src/_generated/models/CacheKeys200Response.ts +0 -73
  43. package/src/_generated/models/CacheKeysRequest.ts +0 -65
  44. package/src/_generated/models/CacheListRequest.ts +0 -81
  45. package/src/_generated/models/CacheListResult.ts +0 -88
  46. package/src/_generated/models/CacheSet200Response.ts +0 -65
  47. package/src/_generated/models/CacheSetEntry.ts +0 -83
  48. package/src/_generated/models/CacheSetMany200Response.ts +0 -73
  49. package/src/_generated/models/CacheSetManyRequest.ts +0 -73
  50. package/src/_generated/models/CacheSetRequest.ts +0 -83
  51. package/src/_generated/models/ChatCompletionRequest.ts +0 -130
  52. package/src/_generated/models/ChatCompletionRequestStreamOptions.ts +0 -67
  53. package/src/_generated/models/ChatCompletionResponse.ts +0 -128
  54. package/src/_generated/models/ChatCompletionResponseChoicesInner.ts +0 -100
  55. package/src/_generated/models/ChatMessage.ts +0 -87
  56. package/src/_generated/models/ConfigureRequest.ts +0 -77
  57. package/src/_generated/models/DbBatchRequest.ts +0 -73
  58. package/src/_generated/models/DbBatchRequestQueriesInner.ts +0 -74
  59. package/src/_generated/models/DbBatchResult.ts +0 -80
  60. package/src/_generated/models/DbBatchResultResultsInner.ts +0 -81
  61. package/src/_generated/models/DbQueryRequest.ts +0 -74
  62. package/src/_generated/models/DbQueryResult.ts +0 -73
  63. package/src/_generated/models/DeleteByTypeRequest.ts +0 -66
  64. package/src/_generated/models/DeleteRequest.ts +0 -66
  65. package/src/_generated/models/ErrorResponse.ts +0 -99
  66. package/src/_generated/models/GatewayBillingLog200Response.ts +0 -73
  67. package/src/_generated/models/GatewayBillingLogRequest.ts +0 -92
  68. package/src/_generated/models/GatewayGetWallet200Response.ts +0 -72
  69. package/src/_generated/models/IngestRequest.ts +0 -91
  70. package/src/_generated/models/JobRecord.ts +0 -119
  71. package/src/_generated/models/ListTypes200Response.ts +0 -72
  72. package/src/_generated/models/Query200Response.ts +0 -72
  73. package/src/_generated/models/QueryRequest.ts +0 -90
  74. package/src/_generated/models/QueueCancelJob200Response.ts +0 -73
  75. package/src/_generated/models/QueueEnqueue201Response.ts +0 -73
  76. package/src/_generated/models/QueueEnqueueRequest.ts +0 -83
  77. package/src/_generated/models/QueueGetJob200Response.ts +0 -80
  78. package/src/_generated/models/QueueGetJobRequest.ts +0 -66
  79. package/src/_generated/models/QueueListJobs200Response.ts +0 -88
  80. package/src/_generated/models/QueueListJobsRequest.ts +0 -103
  81. package/src/_generated/models/SearchCount200Response.ts +0 -65
  82. package/src/_generated/models/SearchCountRequest.ts +0 -65
  83. package/src/_generated/models/SearchGet200Response.ts +0 -80
  84. package/src/_generated/models/SearchGetRequest.ts +0 -66
  85. package/src/_generated/models/SearchResult.ts +0 -97
  86. package/src/_generated/models/SearchUpdateRequest.ts +0 -91
  87. package/src/_generated/models/ServicesInvoke200Response.ts +0 -73
  88. package/src/_generated/models/ServicesInvokeRequest.ts +0 -75
  89. package/src/_generated/models/StorageCopy200Response.ts +0 -73
  90. package/src/_generated/models/StorageCopyRequest.ts +0 -75
  91. package/src/_generated/models/StorageExists200Response.ts +0 -65
  92. package/src/_generated/models/StorageGetRequest.ts +0 -66
  93. package/src/_generated/models/StorageListRequest.ts +0 -81
  94. package/src/_generated/models/StorageListResult.ts +0 -88
  95. package/src/_generated/models/StorageMetadata.ts +0 -97
  96. package/src/_generated/models/StorageMove200Response.ts +0 -73
  97. package/src/_generated/models/StorageMoveRequest.ts +0 -75
  98. package/src/_generated/models/StorageObject.ts +0 -97
  99. package/src/_generated/models/StorageUpload200Response.ts +0 -65
  100. package/src/_generated/models/TokenUsage.ts +0 -81
  101. package/src/_generated/models/TokenWallet.ts +0 -73
  102. package/src/_generated/models/TypeStats.ts +0 -73
  103. package/src/_generated/models/User.ts +0 -97
  104. package/src/_generated/models/index.ts +0 -80
  105. package/src/_generated/runtime.ts +0 -431
  106. package/src/index.ts +0 -3
  107. package/src/realtime.ts +0 -439
  108. package/src/sdk.ts +0 -317
  109. package/test_sdk.ts +0 -19
  110. package/tsconfig.json +0 -43
package/src/sdk.ts DELETED
@@ -1,317 +0,0 @@
1
- import * as gen from './_generated/index.js';
2
- import { NodeRealtimeClient } from './realtime.js';
3
- import { AerostackClient } from '@aerostack/core';
4
-
5
- export interface SDKOptions {
6
- /**
7
- * Aerostack API Key.
8
- * Use a Secret Key for server-side environments.
9
- */
10
- apiKey?: string;
11
- /** Alias for apiKey for backward compatibility */
12
- apiKeyAuth?: string;
13
- serverUrl?: string;
14
- /** Alias for serverUrl for backward compatibility */
15
- serverURL?: string;
16
- maxReconnectAttempts?: number;
17
- projectId?: string;
18
- }
19
-
20
- /**
21
- * Ergonomic wrapper for Cache API — exposes clean method names
22
- * (get/set/delete) instead of the verbose OpenAPI names (cacheGet/cacheSet).
23
- * Covers all 11 cache operations supported by the Aerostack RPC API.
24
- */
25
- class CacheFacade {
26
- constructor(private api: gen.CacheApi) { }
27
-
28
- /** Get a cached value by key. Returns null if not found. */
29
- async get<T = any>(key: string): Promise<T | null> {
30
- const res = await this.api.cacheGet({ cacheGetRequest: { key } });
31
- // _exists is the TS property name for the JSON `exists` field (codegen convention).
32
- // Fall back to value presence in case the API omits the exists field on a hit.
33
- const hit = res._exists ?? (res.value !== null && res.value !== undefined);
34
- return hit ? (res.value as T) : null;
35
- }
36
-
37
- /** Set a cached value. Optional ttl in seconds. */
38
- async set(key: string, value: any, ttl?: number): Promise<void> {
39
- await this.api.cacheSet({ cacheSetRequest: { key, value, ...(ttl !== undefined && { ttl }) } });
40
- }
41
-
42
- /** Delete a cached key. */
43
- async delete(key: string): Promise<void> {
44
- await this.api.cacheDelete({ cacheGetRequest: { key } });
45
- }
46
-
47
- /** Check if a key exists without fetching its value. */
48
- async exists(key: string): Promise<boolean> {
49
- const res = await this.api.cacheGet({ cacheGetRequest: { key } });
50
- // Explicit false wins. If _exists is undefined, fall back to value presence.
51
- if (res._exists === false) return false;
52
- if (res._exists === true) return true;
53
- return res.value !== null && res.value !== undefined;
54
- }
55
-
56
- /** List cache keys with optional prefix (paginated). */
57
- async list(prefix?: string, limit?: number, cursor?: string) {
58
- return this.api.cacheList({ cacheListRequest: { prefix, limit, cursor } });
59
- }
60
-
61
- /** Get all keys matching prefix (auto-paginates, hard cap 10k). */
62
- async keys(prefix?: string): Promise<string[]> {
63
- const res = await this.api.cacheKeys({ cacheKeysRequest: { prefix } });
64
- return res.keys ?? [];
65
- }
66
-
67
- /** Fetch up to 100 keys in a single call. */
68
- async getMany(keys: string[]) {
69
- const res = await this.api.cacheGetMany({ cacheGetManyRequest: { keys } });
70
- return res.results ?? [];
71
- }
72
-
73
- /** Store up to 100 key-value pairs in a single call. */
74
- async setMany(entries: Array<{ key: string; value: any; ttl?: number }>) {
75
- return this.api.cacheSetMany({ cacheSetManyRequest: { entries } });
76
- }
77
-
78
- /** Delete up to 500 keys in a single call. */
79
- async deleteMany(keys: string[]) {
80
- return this.api.cacheDeleteMany({ cacheDeleteManyRequest: { keys } });
81
- }
82
-
83
- /** Delete all keys matching prefix (or all project keys). Hard cap 10k. */
84
- async flush(prefix?: string) {
85
- return this.api.cacheFlush({ cacheFlushRequest: { prefix } });
86
- }
87
-
88
- /** Update TTL of an existing key (get-then-put, not atomic). */
89
- async expire(key: string, ttl: number) {
90
- return this.api.cacheExpire({ cacheExpireRequest: { key, ttl } });
91
- }
92
-
93
- /** Increment a numeric counter. Initializes to initialValue (default 0) if key doesn't exist. */
94
- async increment(key: string, amount?: number, initialValue?: number, ttl?: number): Promise<number | undefined> {
95
- const res = await this.api.cacheIncrement({ cacheIncrementRequest: { key, amount, initialValue, ttl } });
96
- return res.value;
97
- }
98
- }
99
-
100
- /**
101
- * Compatibility wrapper for Database API.
102
- *
103
- * IMPORTANT: DDL statements (CREATE TABLE, ALTER TABLE, DROP TABLE, etc.)
104
- * are NOT supported via the SDK — the RPC API blocks all DDL for security.
105
- * Use Wrangler migrations for schema changes:
106
- * wrangler d1 migrations apply <db-name> [--local]
107
- */
108
- class DatabaseFacade {
109
- constructor(private api: gen.DatabaseApi) { }
110
-
111
- /**
112
- * Run a SQL query against your project database
113
- */
114
- async dbQuery(params: {
115
- dbQueryRequest?: gen.DbQueryRequest,
116
- requestBody?: gen.DbQueryRequest,
117
- xSDKVersion?: string,
118
- xRequestID?: string
119
- }) {
120
- return this.api.dbQuery({
121
- dbQueryRequest: params.dbQueryRequest || params.requestBody!,
122
- xSDKVersion: params.xSDKVersion,
123
- xRequestID: params.xRequestID
124
- });
125
- }
126
- }
127
-
128
- /**
129
- * Aerostack SDK Facade for Node.js.
130
- * Provides a clean, ergonomic API for all Aerostack services.
131
- *
132
- * `sdk.cache` exposes all 11 cache operations with clean names (get/set/delete/etc).
133
- * `sdk.rpc` exposes the full enterprise client for db.batch, queue.getJob, ai.search.update, etc.
134
- */
135
- export class SDK {
136
- public readonly database: DatabaseFacade;
137
- public readonly auth: gen.AuthenticationApi;
138
- public readonly cache: CacheFacade;
139
- public readonly queue: gen.QueueApi;
140
- public readonly storage: gen.StorageApi;
141
- public readonly ai: gen.AIApi;
142
- public readonly services: gen.ServicesApi;
143
- public readonly gateway: gen.GatewayApi;
144
- public readonly realtime: NodeRealtimeClient;
145
- /**
146
- * Full enterprise RPC client — exposes all new methods:
147
- * cache.list/keys/getMany/setMany/deleteMany/flush/expire/increment
148
- * storage.get/getUrl/list/delete/exists/getMetadata/copy/move
149
- * db.batch, queue.getJob/listJobs/cancelJob
150
- * ai.search.update/get/count
151
- */
152
- public readonly rpc: AerostackClient;
153
-
154
- private config: gen.Configuration;
155
-
156
- constructor(options: SDKOptions = {}) {
157
- const serverUrl = options.serverUrl || options.serverURL || 'https://api.aerostack.dev/v1';
158
- const apiKey = options.apiKey || options.apiKeyAuth;
159
-
160
- this.config = new gen.Configuration({
161
- basePath: serverUrl,
162
- headers: apiKey ? { 'X-Aerostack-Key': apiKey } : {},
163
- apiKey: apiKey,
164
- });
165
-
166
- this.database = new DatabaseFacade(new gen.DatabaseApi(this.config));
167
- this.auth = new gen.AuthenticationApi(this.config);
168
- this.cache = new CacheFacade(new gen.CacheApi(this.config));
169
- this.queue = new gen.QueueApi(this.config);
170
- this.storage = new gen.StorageApi(this.config);
171
- this.ai = new gen.AIApi(this.config);
172
- this.services = new gen.ServicesApi(this.config);
173
- this.gateway = new gen.GatewayApi(this.config);
174
-
175
- // Enterprise client — full API surface
176
- this.rpc = new AerostackClient({
177
- baseUrl: serverUrl,
178
- apiKey,
179
- projectId: options.projectId,
180
- });
181
-
182
- this.realtime = new NodeRealtimeClient({
183
- serverUrl,
184
- apiKey: apiKey,
185
- projectId: options.projectId,
186
- maxReconnectAttempts: options.maxReconnectAttempts
187
- });
188
- }
189
-
190
- /**
191
- * Stream a gateway chat completion with token-by-token callbacks.
192
- *
193
- * @example
194
- * await sdk.streamGateway({
195
- * apiSlug: 'my-chatbot',
196
- * messages: [{ role: 'user', content: 'Hello' }],
197
- * consumerKey: 'ask_live_...',
198
- * onToken: (delta) => process.stdout.write(delta),
199
- * });
200
- */
201
- async streamGateway(opts: {
202
- apiSlug: string;
203
- messages: Array<{ role: 'user' | 'assistant' | 'system'; content: string }>;
204
- consumerKey?: string;
205
- token?: string;
206
- systemPrompt?: string;
207
- onToken?: (delta: string) => void;
208
- onDone?: (usage: { tokensUsed: number }) => void;
209
- onError?: (error: Error) => void;
210
- signal?: AbortSignal;
211
- }): Promise<{ text: string; tokensUsed: number }> {
212
- const baseUrl = this.config.basePath.replace(/\/v1\/?$/, '');
213
- const endpoint = `${baseUrl}/api/gateway/${opts.apiSlug}/v1/chat/completions`;
214
-
215
- const headers: Record<string, string> = { 'Content-Type': 'application/json' };
216
- if (opts.consumerKey) {
217
- headers['Authorization'] = `Bearer ${opts.consumerKey}`;
218
- } else if (opts.token) {
219
- headers['Authorization'] = `Bearer ${opts.token}`;
220
- }
221
-
222
- const messages = opts.systemPrompt
223
- ? [{ role: 'system' as const, content: opts.systemPrompt }, ...opts.messages]
224
- : opts.messages;
225
-
226
- let text = '';
227
- let totalTokens = 0;
228
- let estimatedTokens = 0;
229
-
230
- try {
231
- const response = await fetch(endpoint, {
232
- method: 'POST',
233
- headers,
234
- body: JSON.stringify({ messages, stream: true, stream_options: { include_usage: true } }),
235
- signal: opts.signal,
236
- });
237
-
238
- if (!response.ok) {
239
- const err = await response.json().catch(() => ({ error: 'Request failed' }));
240
- throw new Error((err as any).error || `HTTP ${response.status}`);
241
- }
242
- if (!response.body) throw new Error('No response body');
243
-
244
- const reader = response.body.getReader();
245
- const decoder = new TextDecoder();
246
- let buffer = '';
247
-
248
- while (true) {
249
- const { done, value } = await reader.read();
250
- if (done) break;
251
- buffer += decoder.decode(value, { stream: true });
252
- const lines = buffer.split('\n');
253
- buffer = lines.pop() || '';
254
-
255
- for (const line of lines) {
256
- if (!line.startsWith('data: ')) continue;
257
- const payload = line.slice(6).trim();
258
- if (payload === '[DONE]') {
259
- reader.cancel();
260
- const result = { text, tokensUsed: totalTokens || estimatedTokens };
261
- opts.onDone?.(result);
262
- return result;
263
- }
264
- try {
265
- const parsed = JSON.parse(payload);
266
- const delta = parsed.choices?.[0]?.delta?.content;
267
- if (delta) {
268
- text += delta;
269
- opts.onToken?.(delta);
270
- estimatedTokens += Math.ceil(delta.length / 4);
271
- }
272
- if (parsed.usage?.total_tokens) totalTokens = parsed.usage.total_tokens;
273
- else if (parsed.usage?.completion_tokens) totalTokens = parsed.usage.completion_tokens;
274
- } catch { /* skip malformed frames */ }
275
- }
276
- }
277
-
278
- const result = { text, tokensUsed: totalTokens || estimatedTokens };
279
- opts.onDone?.(result);
280
- return result;
281
- } catch (err: any) {
282
- if (err.name === 'AbortError') return { text, tokensUsed: totalTokens || estimatedTokens };
283
- const error = err instanceof Error ? err : new Error(String(err));
284
- opts.onError?.(error);
285
- throw error;
286
- }
287
- }
288
-
289
- /**
290
- * Update the API key for subsequent requests.
291
- */
292
- setApiKey(apiKey: string): void {
293
- this.config = new gen.Configuration({
294
- ...this.config,
295
- headers: { ...this.config.headers, 'X-Aerostack-Key': apiKey },
296
- apiKey,
297
- });
298
- (this as any).database = new DatabaseFacade(new gen.DatabaseApi(this.config));
299
- (this as any).auth = new gen.AuthenticationApi(this.config);
300
- (this as any).cache = new CacheFacade(new gen.CacheApi(this.config));
301
- (this as any).queue = new gen.QueueApi(this.config);
302
- (this as any).storage = new gen.StorageApi(this.config);
303
- (this as any).ai = new gen.AIApi(this.config);
304
- (this as any).services = new gen.ServicesApi(this.config);
305
- (this as any).gateway = new gen.GatewayApi(this.config);
306
- (this as any).rpc = new AerostackClient({
307
- baseUrl: this.config.basePath,
308
- apiKey,
309
- });
310
- }
311
- }
312
-
313
- /** @deprecated Use SDK instead */
314
- export const Aerostack = SDK;
315
-
316
- // Export a default instance factory or just the class
317
- export const createClient = (options: SDKOptions) => new SDK(options);
package/test_sdk.ts DELETED
@@ -1,19 +0,0 @@
1
- import { SDK } from "./src/sdk/sdk";
2
-
3
- async function main() {
4
- const sdk = new SDK({
5
- bearerAuth: "test-token"
6
- });
7
-
8
- console.log("SDK.ai methods:", Object.keys(Object.getPrototypeOf(sdk.ai)));
9
- console.log("SDK.ai.search methods:", Object.keys(Object.getPrototypeOf(sdk.ai.search)));
10
-
11
- // Check if ingest exists
12
- if (typeof sdk.ai.search.ingest === 'function') {
13
- console.log("✅ search.ingest found");
14
- } else {
15
- console.log("❌ search.ingest NOT found");
16
- }
17
- }
18
-
19
- main().catch(console.error);
package/tsconfig.json DELETED
@@ -1,43 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "incremental": false,
4
- "target": "ES2020",
5
- "lib": [
6
- "ES2022",
7
- "DOM",
8
- "DOM.Iterable"
9
- ],
10
- "jsx": "react-jsx",
11
- "module": "Node16",
12
- "moduleResolution": "Node16",
13
- "allowJs": true,
14
- "declaration": true,
15
- "declarationMap": true,
16
- "sourceMap": true,
17
- "outDir": ".",
18
- // https://github.com/tsconfig/bases/blob/a1bf7c0fa2e094b068ca3e1448ca2ece4157977e/bases/strictest.json
19
- "strict": true,
20
- "allowUnusedLabels": false,
21
- "allowUnreachableCode": false,
22
- "exactOptionalPropertyTypes": false,
23
- "useUnknownInCatchVariables": true,
24
- "noFallthroughCasesInSwitch": true,
25
- "noImplicitOverride": false,
26
- "noImplicitReturns": true,
27
- "noPropertyAccessFromIndexSignature": true,
28
- "noUncheckedIndexedAccess": true,
29
- "noUnusedLocals": false,
30
- "noUnusedParameters": false,
31
- "isolatedModules": true,
32
- "checkJs": true,
33
- "esModuleInterop": true,
34
- "skipLibCheck": true,
35
- "forceConsistentCasingInFileNames": true
36
- },
37
- "include": [
38
- "src"
39
- ],
40
- "exclude": [
41
- "node_modules"
42
- ]
43
- }