@scalix-world/sdk 0.0.1 → 1.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 (67) hide show
  1. package/README.md +215 -1
  2. package/dist/client.d.ts +41 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +54 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/config.d.ts +8 -0
  7. package/dist/config.d.ts.map +1 -0
  8. package/dist/config.js +22 -0
  9. package/dist/config.js.map +1 -0
  10. package/dist/errors.d.ts +15 -0
  11. package/dist/errors.d.ts.map +1 -0
  12. package/dist/errors.js +23 -0
  13. package/dist/errors.js.map +1 -0
  14. package/dist/index.d.ts +23 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +21 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/services/account.d.ts +15 -0
  19. package/dist/services/account.d.ts.map +1 -0
  20. package/dist/services/account.js +30 -0
  21. package/dist/services/account.js.map +1 -0
  22. package/dist/services/audio.d.ts +27 -0
  23. package/dist/services/audio.d.ts.map +1 -0
  24. package/dist/services/audio.js +22 -0
  25. package/dist/services/audio.js.map +1 -0
  26. package/dist/services/base.d.ts +15 -0
  27. package/dist/services/base.d.ts.map +1 -0
  28. package/dist/services/base.js +67 -0
  29. package/dist/services/base.js.map +1 -0
  30. package/dist/services/chat.d.ts +38 -0
  31. package/dist/services/chat.d.ts.map +1 -0
  32. package/dist/services/chat.js +53 -0
  33. package/dist/services/chat.js.map +1 -0
  34. package/dist/services/database.d.ts +245 -0
  35. package/dist/services/database.d.ts.map +1 -0
  36. package/dist/services/database.js +195 -0
  37. package/dist/services/database.js.map +1 -0
  38. package/dist/services/docgen.d.ts +57 -0
  39. package/dist/services/docgen.d.ts.map +1 -0
  40. package/dist/services/docgen.js +38 -0
  41. package/dist/services/docgen.js.map +1 -0
  42. package/dist/services/images.d.ts +34 -0
  43. package/dist/services/images.d.ts.map +1 -0
  44. package/dist/services/images.js +23 -0
  45. package/dist/services/images.js.map +1 -0
  46. package/dist/services/index.d.ts +21 -0
  47. package/dist/services/index.d.ts.map +1 -0
  48. package/dist/services/index.js +12 -0
  49. package/dist/services/index.js.map +1 -0
  50. package/dist/services/rag.d.ts +43 -0
  51. package/dist/services/rag.d.ts.map +1 -0
  52. package/dist/services/rag.js +20 -0
  53. package/dist/services/rag.js.map +1 -0
  54. package/dist/services/research.d.ts +23 -0
  55. package/dist/services/research.d.ts.map +1 -0
  56. package/dist/services/research.js +15 -0
  57. package/dist/services/research.js.map +1 -0
  58. package/dist/services/storage.d.ts +9 -0
  59. package/dist/services/storage.d.ts.map +1 -0
  60. package/dist/services/storage.js +9 -0
  61. package/dist/services/storage.js.map +1 -0
  62. package/dist/services/text.d.ts +30 -0
  63. package/dist/services/text.d.ts.map +1 -0
  64. package/dist/services/text.js +23 -0
  65. package/dist/services/text.js.map +1 -0
  66. package/package.json +51 -5
  67. package/index.js +0 -1
package/README.md CHANGED
@@ -1 +1,215 @@
1
- # @scalix-world/sdk
1
+ # Scalix SDK — TypeScript
2
+
3
+ TypeScript client for the Scalix API. Provides typed access to chat, research, audio, images, text, RAG, document generation, database, storage, and account management.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @scalix-world/sdk
9
+ ```
10
+
11
+ ## Quick Start
12
+
13
+ ```typescript
14
+ import { ScalixClient } from '@scalix-world/sdk';
15
+
16
+ const scalix = new ScalixClient({ apiKey: 'sk_scalix_...' });
17
+
18
+ // Chat completion (OpenAI-compatible)
19
+ const reply = await scalix.chat.complete({
20
+ model: 'scalix-world-ai',
21
+ messages: [{ role: 'user', content: 'Hello!' }],
22
+ });
23
+
24
+ // Streaming chat
25
+ for await (const chunk of scalix.chat.stream({
26
+ model: 'scalix-world-ai',
27
+ messages: [{ role: 'user', content: 'Tell me a story' }],
28
+ })) {
29
+ process.stdout.write(chunk);
30
+ }
31
+
32
+ // Web search
33
+ const results = await scalix.research.search('quantum computing');
34
+
35
+ // Audio transcription
36
+ const transcript = await scalix.audio.transcribe(audioBlob);
37
+
38
+ // Text-to-speech
39
+ const audio = await scalix.audio.speak('Hello world');
40
+
41
+ // Image generation
42
+ const image = await scalix.images.generate('A sunset over mountains');
43
+ const job = await scalix.images.generateAsync('A detailed cityscape');
44
+
45
+ // Text utilities
46
+ const sentiment = await scalix.text.sentiment('I love this product!');
47
+ const summary = await scalix.text.summarize(longArticle);
48
+ const translated = await scalix.text.translate('Hello', 'es');
49
+
50
+ // RAG — upload and query documents
51
+ const doc = await scalix.rag.upload(pdfBlob, { filename: 'report.pdf' });
52
+ const hits = await scalix.rag.query('revenue growth');
53
+
54
+ // Document generation
55
+ const report = await scalix.docgen.create({ prompt: 'Q1 report', format: 'pdf' });
56
+
57
+ // ScalixDB
58
+ const dbs = await scalix.database.list();
59
+ const db = await scalix.database.create({ name: 'my-app-db' });
60
+ const result = await scalix.database.query(db.database.id, 'SELECT * FROM users');
61
+
62
+ // Storage — presigned upload URL
63
+ const { uploadUrl } = await scalix.storage.getUploadUrl('application/pdf');
64
+
65
+ // Account — manage API keys
66
+ const keys = await scalix.account.listApiKeys();
67
+ const newKey = await scalix.account.createApiKey({ name: 'production-key' });
68
+
69
+ // Usage tracking
70
+ const usage = await scalix.account.usage({ startDate: '2026-04-01' });
71
+ ```
72
+
73
+ ## Configuration
74
+
75
+ ```typescript
76
+ import { ScalixClient } from '@scalix-world/sdk';
77
+
78
+ const scalix = new ScalixClient({
79
+ apiKey: 'sk_scalix_...',
80
+ baseUrl: 'https://api.scalix.world', // default
81
+ });
82
+ ```
83
+
84
+ ### Environment Variables
85
+
86
+ | Variable | Description |
87
+ |----------|-------------|
88
+ | `SCALIX_API_KEY` | Scalix API key |
89
+ | `SCALIX_BASE_URL` | Override API base URL (default: `https://api.scalix.world`) |
90
+
91
+ ## API Reference
92
+
93
+ ### Chat
94
+
95
+ | Method | Endpoint | SDK Method |
96
+ |--------|----------|------------|
97
+ | POST | `/v1/chat/completions` | `scalix.chat.complete(options)` |
98
+ | POST | `/v1/chat/completions` | `scalix.chat.stream(options)` (streaming) |
99
+ | GET | `/v1/models` | `scalix.chat.models()` |
100
+
101
+ ### Research
102
+
103
+ | Method | Endpoint | SDK Method |
104
+ |--------|----------|------------|
105
+ | POST | `/v1/research/search` | `scalix.research.search(query)` |
106
+ | POST | `/v1/research` | `scalix.research.research(query)` |
107
+ | POST | `/v1/research/deep` | `scalix.research.deep(query)` |
108
+
109
+ ### Audio
110
+
111
+ | Method | Endpoint | SDK Method |
112
+ |--------|----------|------------|
113
+ | POST | `/v1/audio/transcribe` | `scalix.audio.transcribe(file)` (multipart) |
114
+ | POST | `/v1/audio/speak/kokoro` | `scalix.audio.speak(text)` |
115
+ | GET | `/v1/audio/kokoro/voices` | `scalix.audio.voices()` |
116
+ | GET | `/v1/audio/kokoro/languages` | `scalix.audio.languages()` |
117
+
118
+ ### Images
119
+
120
+ | Method | Endpoint | SDK Method |
121
+ |--------|----------|------------|
122
+ | POST | `/v1/images/generate` | `scalix.images.generate(prompt)` |
123
+ | POST | `/v1/images/generate/queue` | `scalix.images.generateAsync(prompt)` |
124
+ | GET | `/v1/images/jobs/{jobId}` | `scalix.images.getJob(jobId)` |
125
+ | GET | `/v1/images/jobs/{jobId}/result` | `scalix.images.getJobResult(jobId)` |
126
+ | GET | `/v1/images/models` | `scalix.images.models()` |
127
+
128
+ ### Text
129
+
130
+ | Method | Endpoint | SDK Method |
131
+ |--------|----------|------------|
132
+ | POST | `/v1/text/sentiment` | `scalix.text.sentiment(text)` |
133
+ | POST | `/v1/text/summarize` | `scalix.text.summarize(text)` |
134
+ | POST | `/v1/text/translate` | `scalix.text.translate(text, targetLang)` |
135
+
136
+ ### RAG
137
+
138
+ | Method | Endpoint | SDK Method |
139
+ |--------|----------|------------|
140
+ | POST | `/v1/rag/upload` | `scalix.rag.upload(file)` (multipart) |
141
+ | POST | `/v1/rag/query` | `scalix.rag.query(query)` |
142
+ | GET | `/v1/rag/documents` | `scalix.rag.documents()` |
143
+ | DELETE | `/v1/rag/documents/{docId}` | `scalix.rag.deleteDocument(docId)` |
144
+
145
+ ### Document Generation
146
+
147
+ | Method | Endpoint | SDK Method |
148
+ |--------|----------|------------|
149
+ | POST | `/v1/docgen/create` | `scalix.docgen.create(options)` |
150
+ | POST | `/v1/docgen/preview` | `scalix.docgen.preview(options)` |
151
+ | GET | `/v1/docgen/formats` | `scalix.docgen.formats()` |
152
+ | GET | `/v1/docgen/templates` | `scalix.docgen.templates()` |
153
+ | GET | `/v1/docgen/history` | `scalix.docgen.history()` |
154
+ | POST | `/v1/docgen/revise` | `scalix.docgen.revise(docId, prompt)` |
155
+ | GET | `/v1/docgen/versions/{docId}` | `scalix.docgen.versions(docId)` |
156
+
157
+ ### Storage
158
+
159
+ | Method | Endpoint | SDK Method |
160
+ |--------|----------|------------|
161
+ | POST | `/v1/storage/upload-url` | `scalix.storage.getUploadUrl(mimeType)` |
162
+
163
+ ### ScalixDB
164
+
165
+ | Method | Endpoint | SDK Method |
166
+ |--------|----------|------------|
167
+ | GET | `/api/scalixdb/databases` | `scalix.database.list()` |
168
+ | POST | `/api/scalixdb/databases` | `scalix.database.create(options)` |
169
+ | GET | `/api/scalixdb/databases/{id}` | `scalix.database.get(id)` |
170
+ | DELETE | `/api/scalixdb/databases/{id}` | `scalix.database.delete(id)` |
171
+ | POST | `/api/scalixdb/databases/{id}/query` | `scalix.database.query(id, sql)` |
172
+ | GET | `/api/scalixdb/databases/{id}/tables` | `scalix.database.listTables(id)` |
173
+ | GET | `/api/scalixdb/databases/{id}/metrics` | `scalix.database.getMetrics(id)` |
174
+
175
+ ### Account
176
+
177
+ | Method | Endpoint | SDK Method |
178
+ |--------|----------|------------|
179
+ | GET | `/health` | `scalix.account.health()` |
180
+ | GET | `/api/dashboard/api-keys` | `scalix.account.listApiKeys()` |
181
+ | POST | `/api/dashboard/api-keys` | `scalix.account.createApiKey({ name })` |
182
+ | DELETE | `/api/dashboard/api-keys/{id}` | `scalix.account.deleteApiKey(keyId)` |
183
+ | GET | `/api/billing/usage` | `scalix.account.usage()` |
184
+
185
+ ## Error Handling
186
+
187
+ ```typescript
188
+ import { ScalixClient, ScalixError, AuthenticationError } from '@scalix-world/sdk';
189
+
190
+ const scalix = new ScalixClient({ apiKey: 'sk_scalix_...' });
191
+
192
+ try {
193
+ const result = await scalix.chat.complete({
194
+ model: 'scalix-world-ai',
195
+ messages: [{ role: 'user', content: 'Hello!' }],
196
+ });
197
+ } catch (error) {
198
+ if (error instanceof AuthenticationError) {
199
+ console.error('Invalid API key');
200
+ } else if (error instanceof ScalixError) {
201
+ console.error('API error:', error.message);
202
+ }
203
+ }
204
+ ```
205
+
206
+ ## Available Models
207
+
208
+ | Model | Description | Best For |
209
+ |-------|-------------|----------|
210
+ | `scalix-world-ai` | Default model — fast, balanced | General use, chat, quick tasks |
211
+ | `scalix-advanced` | Most capable model — deep reasoning | Complex analysis, coding, agents |
212
+
213
+ ## License
214
+
215
+ See [LICENSE](../../LICENSE) for details.
@@ -0,0 +1,41 @@
1
+ /**
2
+ * ScalixClient — unified access to all Scalix API services.
3
+ *
4
+ * @example
5
+ * ```typescript
6
+ * import { ScalixClient } from '@scalix-world/sdk';
7
+ *
8
+ * const scalix = new ScalixClient({ apiKey: 'sk_scalix_...' });
9
+ * const reply = await scalix.chat.complete({
10
+ * model: 'scalix-world-ai',
11
+ * messages: [{ role: 'user', content: 'Hello!' }],
12
+ * });
13
+ * ```
14
+ */
15
+ import { type ScalixConfig } from './config.js';
16
+ import { AccountService } from './services/account.js';
17
+ import { AudioService } from './services/audio.js';
18
+ import { ChatService } from './services/chat.js';
19
+ import { DatabaseService } from './services/database.js';
20
+ import { DocGenService } from './services/docgen.js';
21
+ import { ImagesService } from './services/images.js';
22
+ import { RAGService } from './services/rag.js';
23
+ import { ResearchService } from './services/research.js';
24
+ import { StorageService } from './services/storage.js';
25
+ import { TextService } from './services/text.js';
26
+ export declare class ScalixClient {
27
+ readonly account: AccountService;
28
+ readonly audio: AudioService;
29
+ readonly chat: ChatService;
30
+ readonly database: DatabaseService;
31
+ readonly docgen: DocGenService;
32
+ readonly images: ImagesService;
33
+ readonly rag: RAGService;
34
+ readonly research: ResearchService;
35
+ readonly storage: StorageService;
36
+ readonly text: TextService;
37
+ constructor(options?: {
38
+ apiKey?: string;
39
+ } & Partial<ScalixConfig>);
40
+ }
41
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAwB,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,qBAAa,YAAY;IACvB,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;gBAEf,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;CAgBlE"}
package/dist/client.js ADDED
@@ -0,0 +1,54 @@
1
+ /**
2
+ * ScalixClient — unified access to all Scalix API services.
3
+ *
4
+ * @example
5
+ * ```typescript
6
+ * import { ScalixClient } from '@scalix-world/sdk';
7
+ *
8
+ * const scalix = new ScalixClient({ apiKey: 'sk_scalix_...' });
9
+ * const reply = await scalix.chat.complete({
10
+ * model: 'scalix-world-ai',
11
+ * messages: [{ role: 'user', content: 'Hello!' }],
12
+ * });
13
+ * ```
14
+ */
15
+ import { configure, getConfig } from './config.js';
16
+ import { AccountService } from './services/account.js';
17
+ import { AudioService } from './services/audio.js';
18
+ import { ChatService } from './services/chat.js';
19
+ import { DatabaseService } from './services/database.js';
20
+ import { DocGenService } from './services/docgen.js';
21
+ import { ImagesService } from './services/images.js';
22
+ import { RAGService } from './services/rag.js';
23
+ import { ResearchService } from './services/research.js';
24
+ import { StorageService } from './services/storage.js';
25
+ import { TextService } from './services/text.js';
26
+ export class ScalixClient {
27
+ account;
28
+ audio;
29
+ chat;
30
+ database;
31
+ docgen;
32
+ images;
33
+ rag;
34
+ research;
35
+ storage;
36
+ text;
37
+ constructor(options) {
38
+ if (options) {
39
+ configure(options);
40
+ }
41
+ const config = getConfig();
42
+ this.account = new AccountService(config);
43
+ this.audio = new AudioService(config);
44
+ this.chat = new ChatService(config);
45
+ this.database = new DatabaseService(config);
46
+ this.docgen = new DocGenService(config);
47
+ this.images = new ImagesService(config);
48
+ this.rag = new RAGService(config);
49
+ this.research = new ResearchService(config);
50
+ this.storage = new StorageService(config);
51
+ this.text = new TextService(config);
52
+ }
53
+ }
54
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAqB,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,OAAO,YAAY;IACd,OAAO,CAAiB;IACxB,KAAK,CAAe;IACpB,IAAI,CAAc;IAClB,QAAQ,CAAkB;IAC1B,MAAM,CAAgB;IACtB,MAAM,CAAgB;IACtB,GAAG,CAAa;IAChB,QAAQ,CAAkB;IAC1B,OAAO,CAAiB;IACxB,IAAI,CAAc;IAE3B,YAAY,OAAqD;QAC/D,IAAI,OAAO,EAAE,CAAC;YACZ,SAAS,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC;QACD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ export interface ScalixConfig {
2
+ apiKey?: string;
3
+ baseUrl: string;
4
+ defaultModel: string;
5
+ }
6
+ export declare function configure(options: Partial<ScalixConfig>): ScalixConfig;
7
+ export declare function getConfig(): ScalixConfig;
8
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AASD,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CAStE;AAED,wBAAgB,SAAS,IAAI,YAAY,CAKxC"}
package/dist/config.js ADDED
@@ -0,0 +1,22 @@
1
+ const DEFAULT_CONFIG = {
2
+ baseUrl: 'https://api.scalix.world',
3
+ defaultModel: 'scalix-world-ai',
4
+ };
5
+ let _config = null;
6
+ export function configure(options) {
7
+ const env = typeof process !== 'undefined' ? process.env : {};
8
+ _config = {
9
+ ...DEFAULT_CONFIG,
10
+ ...(env.SCALIX_API_KEY && { apiKey: env.SCALIX_API_KEY }),
11
+ ...(env.SCALIX_BASE_URL && { baseUrl: env.SCALIX_BASE_URL }),
12
+ ...options,
13
+ };
14
+ return _config;
15
+ }
16
+ export function getConfig() {
17
+ if (!_config) {
18
+ _config = configure({});
19
+ }
20
+ return _config;
21
+ }
22
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,MAAM,cAAc,GAAiB;IACnC,OAAO,EAAE,0BAA0B;IACnC,YAAY,EAAE,iBAAiB;CAChC,CAAC;AAEF,IAAI,OAAO,GAAwB,IAAI,CAAC;AAExC,MAAM,UAAU,SAAS,CAAC,OAA8B;IACtD,MAAM,GAAG,GAAG,OAAO,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,OAAO,GAAG;QACR,GAAG,cAAc;QACjB,GAAG,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC;QACzD,GAAG,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,eAAe,EAAE,CAAC;QAC5D,GAAG,OAAO;KACX,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,15 @@
1
+ export declare class ScalixError extends Error {
2
+ code?: string;
3
+ status?: number;
4
+ constructor(message: string, options?: {
5
+ code?: string;
6
+ status?: number;
7
+ });
8
+ }
9
+ export declare class AuthenticationError extends ScalixError {
10
+ constructor(message: string);
11
+ }
12
+ export declare class RateLimitError extends ScalixError {
13
+ constructor(message: string);
14
+ }
15
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAY,SAAQ,KAAK;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;gBAEJ,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;CAM1E;AAED,qBAAa,mBAAoB,SAAQ,WAAW;gBACtC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,cAAe,SAAQ,WAAW;gBACjC,OAAO,EAAE,MAAM;CAI5B"}
package/dist/errors.js ADDED
@@ -0,0 +1,23 @@
1
+ export class ScalixError extends Error {
2
+ code;
3
+ status;
4
+ constructor(message, options) {
5
+ super(message);
6
+ this.name = 'ScalixError';
7
+ this.code = options?.code;
8
+ this.status = options?.status;
9
+ }
10
+ }
11
+ export class AuthenticationError extends ScalixError {
12
+ constructor(message) {
13
+ super(message, { code: 'AUTHENTICATION_ERROR', status: 401 });
14
+ this.name = 'AuthenticationError';
15
+ }
16
+ }
17
+ export class RateLimitError extends ScalixError {
18
+ constructor(message) {
19
+ super(message, { code: 'RATE_LIMIT_ERROR', status: 429 });
20
+ this.name = 'RateLimitError';
21
+ }
22
+ }
23
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC,IAAI,CAAU;IACd,MAAM,CAAU;IAEhB,YAAY,OAAe,EAAE,OAA4C;QACvE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,WAAW;IAClD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,WAAW;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Scalix SDK — TypeScript client for the Scalix API.
3
+ *
4
+ * @example
5
+ * ```typescript
6
+ * import { ScalixClient } from '@scalix-world/sdk';
7
+ *
8
+ * const scalix = new ScalixClient({ apiKey: 'sk_scalix_...' });
9
+ * const reply = await scalix.chat.complete({
10
+ * model: 'scalix-world-ai',
11
+ * messages: [{ role: 'user', content: 'Hello!' }],
12
+ * });
13
+ * ```
14
+ *
15
+ * @packageDocumentation
16
+ */
17
+ export { ScalixClient } from './client.js';
18
+ export { configure, getConfig } from './config.js';
19
+ export type { ScalixConfig } from './config.js';
20
+ export { ScalixError, AuthenticationError, } from './errors.js';
21
+ export { AccountService, AudioService, ChatService, DatabaseService, DocGenService, ImagesService, RAGService, ResearchService, StorageService, TextService, } from './services/index.js';
22
+ export type { ChatMessage, ChatCompletionOptions, ChatCompletionResult, ScalixDatabase, CreateDatabaseOptions, Branch, Backup, DatabaseMetrics, PoolingStatus, EncryptionStatus, HAStatus, QueryResult, TableInfo, ColumnInfo, DocFormat, DocStyle, DocGenOptions, DocGenResult, DocTemplate, DocFormatInfo, ImageGenerateOptions, ImageResult, ImageJobStatus, RAGDocument, RAGQueryResult, RAGUploadResult, SentimentResult, SummaryResult, TranslationResult, UploadUrlResult, TranscriptionResult, SpeechOptions, SearchResult, ResearchResult, } from './services/index.js';
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,WAAW,EACX,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,cAAc,EACd,YAAY,EACZ,WAAW,EACX,eAAe,EACf,aAAa,EACb,aAAa,EACb,UAAU,EACV,eAAe,EACf,cAAc,EACd,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,WAAW,EACX,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,MAAM,EACN,MAAM,EACN,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,SAAS,EACT,UAAU,EACV,SAAS,EACT,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,WAAW,EACX,cAAc,EACd,eAAe,EACf,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,cAAc,GACf,MAAM,qBAAqB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Scalix SDK — TypeScript client for the Scalix API.
3
+ *
4
+ * @example
5
+ * ```typescript
6
+ * import { ScalixClient } from '@scalix-world/sdk';
7
+ *
8
+ * const scalix = new ScalixClient({ apiKey: 'sk_scalix_...' });
9
+ * const reply = await scalix.chat.complete({
10
+ * model: 'scalix-world-ai',
11
+ * messages: [{ role: 'user', content: 'Hello!' }],
12
+ * });
13
+ * ```
14
+ *
15
+ * @packageDocumentation
16
+ */
17
+ export { ScalixClient } from './client.js';
18
+ export { configure, getConfig } from './config.js';
19
+ export { ScalixError, AuthenticationError, } from './errors.js';
20
+ export { AccountService, AudioService, ChatService, DatabaseService, DocGenService, ImagesService, RAGService, ResearchService, StorageService, TextService, } from './services/index.js';
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EACL,WAAW,EACX,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,cAAc,EACd,YAAY,EACZ,WAAW,EACX,eAAe,EACf,aAAa,EACb,aAAa,EACb,UAAU,EACV,eAAe,EACf,cAAc,EACd,WAAW,GACZ,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { BaseService } from './base.js';
2
+ export declare class AccountService extends BaseService {
3
+ health(): Promise<Record<string, unknown>>;
4
+ listApiKeys(): Promise<Record<string, unknown>>;
5
+ createApiKey(options: {
6
+ name: string;
7
+ expiresAt?: string;
8
+ }): Promise<Record<string, unknown>>;
9
+ deleteApiKey(keyId: string): Promise<Record<string, unknown>>;
10
+ usage(options?: {
11
+ startDate?: string;
12
+ endDate?: string;
13
+ }): Promise<Record<string, unknown>>;
14
+ }
15
+ //# sourceMappingURL=account.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/services/account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,qBAAa,cAAe,SAAQ,WAAW;IAEvC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAM1C,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAI/C,YAAY,CAAC,OAAO,EAAE;QAC1B,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAM9B,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAM7D,KAAK,CAAC,OAAO,CAAC,EAAE;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAOrC"}
@@ -0,0 +1,30 @@
1
+ import { BaseService } from './base.js';
2
+ export class AccountService extends BaseService {
3
+ async health() {
4
+ return this.request('GET', '/health');
5
+ }
6
+ // ── API Key Management ──
7
+ async listApiKeys() {
8
+ return this.request('GET', '/api/dashboard/api-keys');
9
+ }
10
+ async createApiKey(options) {
11
+ const body = { name: options.name };
12
+ if (options.expiresAt)
13
+ body.expires_at = options.expiresAt;
14
+ return this.request('POST', '/api/dashboard/api-keys', { body });
15
+ }
16
+ async deleteApiKey(keyId) {
17
+ return this.request('DELETE', `/api/dashboard/api-keys/${keyId}`);
18
+ }
19
+ // ── Usage & Billing ──
20
+ async usage(options) {
21
+ const params = new URLSearchParams();
22
+ if (options?.startDate)
23
+ params.set('start_date', options.startDate);
24
+ if (options?.endDate)
25
+ params.set('end_date', options.endDate);
26
+ const qs = params.toString();
27
+ return this.request('GET', `/api/billing/usage${qs ? `?${qs}` : ''}`);
28
+ }
29
+ }
30
+ //# sourceMappingURL=account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/services/account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,OAAO,cAAe,SAAQ,WAAW;IAE7C,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,2BAA2B;IAE3B,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAGlB;QACC,MAAM,IAAI,GAA4B,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QAC7D,IAAI,OAAO,CAAC,SAAS;YAAE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;QAC3D,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,yBAAyB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAa;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,2BAA2B,KAAK,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,wBAAwB;IAExB,KAAK,CAAC,KAAK,CAAC,OAGX;QACC,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,OAAO,EAAE,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACpE,IAAI,OAAO,EAAE,OAAO;YAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxE,CAAC;CACF"}
@@ -0,0 +1,27 @@
1
+ import { BaseService } from './base.js';
2
+ export interface TranscriptionResult {
3
+ text: string;
4
+ language?: string;
5
+ duration?: number;
6
+ }
7
+ export interface SpeechOptions {
8
+ voice?: string;
9
+ format?: string;
10
+ speed?: number;
11
+ }
12
+ export declare class AudioService extends BaseService {
13
+ transcribe(file: Blob, options?: {
14
+ language?: string;
15
+ }): Promise<TranscriptionResult>;
16
+ speak(text: string, options?: SpeechOptions): Promise<Response>;
17
+ voices(): Promise<{
18
+ voices: Array<{
19
+ id: string;
20
+ name: string;
21
+ }>;
22
+ }>;
23
+ languages(): Promise<{
24
+ languages: string[];
25
+ }>;
26
+ }
27
+ //# sourceMappingURL=audio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../../src/services/audio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,YAAa,SAAQ,WAAW;IACrC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAOrF,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC;IAM/D,MAAM,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IAIlE,SAAS,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAGpD"}
@@ -0,0 +1,22 @@
1
+ import { BaseService } from './base.js';
2
+ export class AudioService extends BaseService {
3
+ async transcribe(file, options) {
4
+ const formData = new FormData();
5
+ formData.append('file', file);
6
+ if (options?.language)
7
+ formData.append('language', options.language);
8
+ return this.requestMultipart('/v1/audio/transcribe', formData);
9
+ }
10
+ async speak(text, options) {
11
+ return this.requestRaw('POST', '/v1/audio/speak/kokoro', {
12
+ body: { text, ...options },
13
+ });
14
+ }
15
+ async voices() {
16
+ return this.request('GET', '/v1/audio/kokoro/voices');
17
+ }
18
+ async languages() {
19
+ return this.request('GET', '/v1/audio/kokoro/languages');
20
+ }
21
+ }
22
+ //# sourceMappingURL=audio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio.js","sourceRoot":"","sources":["../../src/services/audio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAcxC,MAAM,OAAO,YAAa,SAAQ,WAAW;IAC3C,KAAK,CAAC,UAAU,CAAC,IAAU,EAAE,OAA+B;QAC1D,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9B,IAAI,OAAO,EAAE,QAAQ;YAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,gBAAgB,CAAsB,sBAAsB,EAAE,QAAQ,CAAC,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,OAAuB;QAC/C,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,wBAAwB,EAAE;YACvD,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,4BAA4B,CAAC,CAAC;IAC3D,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ import { type ScalixConfig } from '../config.js';
2
+ export declare class BaseService {
3
+ protected config: ScalixConfig;
4
+ constructor(config?: ScalixConfig);
5
+ protected request<T>(method: string, path: string, options?: {
6
+ body?: unknown;
7
+ headers?: Record<string, string>;
8
+ }): Promise<T>;
9
+ protected requestRaw(method: string, path: string, options?: {
10
+ body?: unknown;
11
+ headers?: Record<string, string>;
12
+ }): Promise<Response>;
13
+ protected requestMultipart<T>(path: string, formData: FormData): Promise<T>;
14
+ }
15
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/services/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5D,qBAAa,WAAW;IACtB,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC;gBAEnB,MAAM,CAAC,EAAE,YAAY;cAIjB,OAAO,CAAC,CAAC,EACvB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAC7D,OAAO,CAAC,CAAC,CAAC;cA6BG,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAC7D,OAAO,CAAC,QAAQ,CAAC;cA6BJ,gBAAgB,CAAC,CAAC,EAChC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,CAAC,CAAC;CAsBd"}