@scalix-world/sdk 1.0.0 → 1.1.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 (56) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +94 -154
  3. package/dist/client.d.ts +28 -13
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/client.js +34 -17
  6. package/dist/client.js.map +1 -1
  7. package/dist/config.d.ts +3 -4
  8. package/dist/config.d.ts.map +1 -1
  9. package/dist/config.js +1 -21
  10. package/dist/config.js.map +1 -1
  11. package/dist/errors.d.ts +22 -2
  12. package/dist/errors.d.ts.map +1 -1
  13. package/dist/errors.js +42 -4
  14. package/dist/errors.js.map +1 -1
  15. package/dist/index.d.ts +17 -9
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +15 -8
  18. package/dist/index.js.map +1 -1
  19. package/dist/services/account.d.ts +22 -10
  20. package/dist/services/account.d.ts.map +1 -1
  21. package/dist/services/account.js +6 -20
  22. package/dist/services/account.js.map +1 -1
  23. package/dist/services/audio.d.ts.map +1 -1
  24. package/dist/services/audio.js +8 -3
  25. package/dist/services/audio.js.map +1 -1
  26. package/dist/services/base.d.ts +4 -2
  27. package/dist/services/base.d.ts.map +1 -1
  28. package/dist/services/base.js +130 -28
  29. package/dist/services/base.js.map +1 -1
  30. package/dist/services/docgen.d.ts +5 -0
  31. package/dist/services/docgen.d.ts.map +1 -1
  32. package/dist/services/docgen.js +5 -0
  33. package/dist/services/docgen.js.map +1 -1
  34. package/dist/services/index.d.ts +4 -5
  35. package/dist/services/index.d.ts.map +1 -1
  36. package/dist/services/index.js +1 -2
  37. package/dist/services/index.js.map +1 -1
  38. package/dist/services/models.d.ts +16 -0
  39. package/dist/services/models.d.ts.map +1 -0
  40. package/dist/services/models.js +12 -0
  41. package/dist/services/models.js.map +1 -0
  42. package/dist/services/research.js +4 -3
  43. package/dist/services/research.js.map +1 -1
  44. package/dist/services/text.d.ts +31 -0
  45. package/dist/services/text.d.ts.map +1 -1
  46. package/dist/services/text.js +15 -0
  47. package/dist/services/text.js.map +1 -1
  48. package/package.json +8 -4
  49. package/dist/services/chat.d.ts +0 -38
  50. package/dist/services/chat.d.ts.map +0 -1
  51. package/dist/services/chat.js +0 -53
  52. package/dist/services/chat.js.map +0 -1
  53. package/dist/services/database.d.ts +0 -245
  54. package/dist/services/database.d.ts.map +0 -1
  55. package/dist/services/database.js +0 -195
  56. package/dist/services/database.js.map +0 -1
package/dist/errors.js CHANGED
@@ -1,23 +1,61 @@
1
1
  export class ScalixError extends Error {
2
2
  code;
3
3
  status;
4
+ requestId;
4
5
  constructor(message, options) {
5
6
  super(message);
6
7
  this.name = 'ScalixError';
7
8
  this.code = options?.code;
8
9
  this.status = options?.status;
10
+ this.requestId = options?.requestId;
9
11
  }
10
12
  }
11
13
  export class AuthenticationError extends ScalixError {
12
- constructor(message) {
13
- super(message, { code: 'AUTHENTICATION_ERROR', status: 401 });
14
+ constructor(message, requestId) {
15
+ super(message, { code: 'AUTHENTICATION_ERROR', status: 401, requestId });
14
16
  this.name = 'AuthenticationError';
15
17
  }
16
18
  }
19
+ export class BadRequestError extends ScalixError {
20
+ constructor(message, requestId) {
21
+ super(message, { code: 'BAD_REQUEST', status: 400, requestId });
22
+ this.name = 'BadRequestError';
23
+ }
24
+ }
25
+ export class PermissionDeniedError extends ScalixError {
26
+ constructor(message, requestId) {
27
+ super(message, { code: 'PERMISSION_DENIED', status: 403, requestId });
28
+ this.name = 'PermissionDeniedError';
29
+ }
30
+ }
31
+ export class NotFoundError extends ScalixError {
32
+ constructor(message, requestId) {
33
+ super(message, { code: 'NOT_FOUND', status: 404, requestId });
34
+ this.name = 'NotFoundError';
35
+ }
36
+ }
37
+ export class ConflictError extends ScalixError {
38
+ constructor(message, requestId) {
39
+ super(message, { code: 'CONFLICT', status: 409, requestId });
40
+ this.name = 'ConflictError';
41
+ }
42
+ }
43
+ export class UnprocessableEntityError extends ScalixError {
44
+ constructor(message, requestId) {
45
+ super(message, { code: 'UNPROCESSABLE_ENTITY', status: 422, requestId });
46
+ this.name = 'UnprocessableEntityError';
47
+ }
48
+ }
17
49
  export class RateLimitError extends ScalixError {
18
- constructor(message) {
19
- super(message, { code: 'RATE_LIMIT_ERROR', status: 429 });
50
+ constructor(message, requestId) {
51
+ super(message, { code: 'RATE_LIMIT_ERROR', status: 429, requestId });
20
52
  this.name = 'RateLimitError';
21
53
  }
22
54
  }
55
+ export class InternalServerError extends ScalixError {
56
+ constructor(message, requestId) {
57
+ super(message, { code: 'INTERNAL_SERVER_ERROR', status: 500, requestId });
58
+ this.name = 'InternalServerError';
59
+ }
60
+ }
23
61
  //# sourceMappingURL=errors.js.map
@@ -1 +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"}
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;IAChB,SAAS,CAAU;IAEnB,YAAY,OAAe,EAAE,OAAgE;QAC3F,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;QAC9B,IAAI,CAAC,SAAS,GAAG,OAAO,EAAE,SAAS,CAAC;IACtC,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,WAAW;IAClD,YAAY,OAAe,EAAE,SAAkB;QAC7C,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAC9C,YAAY,OAAe,EAAE,SAAkB;QAC7C,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,WAAW;IACpD,YAAY,OAAe,EAAE,SAAkB;QAC7C,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,WAAW;IAC5C,YAAY,OAAe,EAAE,SAAkB;QAC7C,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,WAAW;IAC5C,YAAY,OAAe,EAAE,SAAkB;QAC7C,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,wBAAyB,SAAQ,WAAW;IACvD,YAAY,OAAe,EAAE,SAAkB;QAC7C,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,WAAW;IAC7C,YAAY,OAAe,EAAE,SAAkB;QAC7C,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,WAAW;IAClD,YAAY,OAAe,EAAE,SAAkB;QAC7C,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -1,23 +1,31 @@
1
1
  /**
2
- * Scalix SDK — TypeScript client for the Scalix API.
2
+ * Scalix SDK — unified client for the Scalix platform.
3
+ *
4
+ * Chat completions delegate to the OpenAI SDK (Scalix's API is OpenAI-compatible).
5
+ * Platform services (research, RAG, database, etc.) use a native HTTP client.
3
6
  *
4
7
  * @example
5
8
  * ```typescript
6
- * import { ScalixClient } from '@scalix-world/sdk';
9
+ * import { Scalix } from '@scalix-world/sdk';
10
+ *
11
+ * const scalix = new Scalix('sk_scalix_...');
7
12
  *
8
- * const scalix = new ScalixClient({ apiKey: 'sk_scalix_...' });
9
- * const reply = await scalix.chat.complete({
13
+ * // Chat — full OpenAI-compatible (tools, vision, streaming)
14
+ * const response = await scalix.completions.create({
10
15
  * model: 'scalix-world-ai',
11
16
  * messages: [{ role: 'user', content: 'Hello!' }],
12
17
  * });
18
+ *
19
+ * // Platform services
20
+ * const results = await scalix.research.search('AI trends');
13
21
  * ```
14
22
  *
15
23
  * @packageDocumentation
16
24
  */
17
- export { ScalixClient } from './client.js';
18
- export { configure, getConfig } from './config.js';
25
+ export { Scalix, ScalixClient } from './client.js';
26
+ export type { ScalixOptions } from './client.js';
19
27
  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';
28
+ export { ScalixError, AuthenticationError, BadRequestError, PermissionDeniedError, NotFoundError, ConflictError, UnprocessableEntityError, RateLimitError, InternalServerError, } from './errors.js';
29
+ export { AccountService, AudioService, DocGenService, ImagesService, ModelsService, RAGService, ResearchService, StorageService, TextService, } from './services/index.js';
30
+ export type { UserInfo, UserBudget, UserUsage, ScalixModel, DocFormat, DocStyle, DocGenOptions, DocGenResult, DocTemplate, DocFormatInfo, ImageGenerateOptions, ImageResult, ImageJobStatus, RAGDocument, RAGQueryResult, RAGUploadResult, SentimentResult, SummaryResult, TranslationResult, GrammarResult, AutocompleteResult, VectorSearchResult, UploadUrlResult, TranscriptionResult, SpeechOptions, SearchResult, ResearchResult, } from './services/index.js';
23
31
  //# sourceMappingURL=index.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,cAAc,EACd,YAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACV,eAAe,EACf,cAAc,EACd,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,QAAQ,EACR,UAAU,EACV,SAAS,EACT,WAAW,EACX,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,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,cAAc,GACf,MAAM,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -1,21 +1,28 @@
1
1
  /**
2
- * Scalix SDK — TypeScript client for the Scalix API.
2
+ * Scalix SDK — unified client for the Scalix platform.
3
+ *
4
+ * Chat completions delegate to the OpenAI SDK (Scalix's API is OpenAI-compatible).
5
+ * Platform services (research, RAG, database, etc.) use a native HTTP client.
3
6
  *
4
7
  * @example
5
8
  * ```typescript
6
- * import { ScalixClient } from '@scalix-world/sdk';
9
+ * import { Scalix } from '@scalix-world/sdk';
10
+ *
11
+ * const scalix = new Scalix('sk_scalix_...');
7
12
  *
8
- * const scalix = new ScalixClient({ apiKey: 'sk_scalix_...' });
9
- * const reply = await scalix.chat.complete({
13
+ * // Chat — full OpenAI-compatible (tools, vision, streaming)
14
+ * const response = await scalix.completions.create({
10
15
  * model: 'scalix-world-ai',
11
16
  * messages: [{ role: 'user', content: 'Hello!' }],
12
17
  * });
18
+ *
19
+ * // Platform services
20
+ * const results = await scalix.research.search('AI trends');
13
21
  * ```
14
22
  *
15
23
  * @packageDocumentation
16
24
  */
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';
25
+ export { Scalix, ScalixClient } from './client.js';
26
+ export { ScalixError, AuthenticationError, BadRequestError, PermissionDeniedError, NotFoundError, ConflictError, UnprocessableEntityError, RateLimitError, InternalServerError, } from './errors.js';
27
+ export { AccountService, AudioService, DocGenService, ImagesService, ModelsService, RAGService, ResearchService, StorageService, TextService, } from './services/index.js';
21
28
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,cAAc,EACd,YAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACV,eAAe,EACf,cAAc,EACd,WAAW,GACZ,MAAM,qBAAqB,CAAC"}
@@ -1,15 +1,27 @@
1
1
  import { BaseService } from './base.js';
2
+ export interface UserInfo {
3
+ id: string;
4
+ email: string;
5
+ name?: string;
6
+ plan: string;
7
+ createdAt?: string;
8
+ }
9
+ export interface UserBudget {
10
+ creditsUsed: number;
11
+ creditsLimit: number;
12
+ creditsRemaining: number;
13
+ resetDate?: string;
14
+ }
15
+ export interface UserUsage {
16
+ month: string;
17
+ totalRequests: number;
18
+ totalTokens: number;
19
+ breakdown: Record<string, unknown>;
20
+ }
2
21
  export declare class AccountService extends BaseService {
3
22
  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>>;
23
+ info(): Promise<UserInfo>;
24
+ budget(): Promise<UserBudget>;
25
+ usage(): Promise<UserUsage>;
14
26
  }
15
27
  //# sourceMappingURL=account.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/services/account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,qBAAa,cAAe,SAAQ,WAAW;IAEvC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAI1C,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC;IAIzB,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC;IAI7B,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC;CAGlC"}
@@ -3,28 +3,14 @@ export class AccountService extends BaseService {
3
3
  async health() {
4
4
  return this.request('GET', '/health');
5
5
  }
6
- // ── API Key Management ──
7
- async listApiKeys() {
8
- return this.request('GET', '/api/dashboard/api-keys');
6
+ async info() {
7
+ return this.request('GET', '/v1/user/info');
9
8
  }
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 });
9
+ async budget() {
10
+ return this.request('GET', '/v1/user/budget');
15
11
  }
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}` : ''}`);
12
+ async usage() {
13
+ return this.request('GET', '/v1/user/stats');
28
14
  }
29
15
  }
30
16
  //# sourceMappingURL=account.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/services/account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAwBxC,MAAM,OAAO,cAAe,SAAQ,WAAW;IAE7C,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,CAAC,OAAO,CAAW,KAAK,EAAE,eAAe,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,OAAO,CAAa,KAAK,EAAE,iBAAiB,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,OAAO,CAAY,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAC1D,CAAC;CACF"}
@@ -1 +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"}
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;IAQ/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"}
@@ -8,9 +8,14 @@ export class AudioService extends BaseService {
8
8
  return this.requestMultipart('/v1/audio/transcribe', formData);
9
9
  }
10
10
  async speak(text, options) {
11
- return this.requestRaw('POST', '/v1/audio/speak/kokoro', {
12
- body: { text, ...options },
13
- });
11
+ const params = new URLSearchParams({ text });
12
+ if (options?.voice)
13
+ params.set('voice', options.voice);
14
+ if (options?.format)
15
+ params.set('format', options.format);
16
+ if (options?.speed != null)
17
+ params.set('speed', String(options.speed));
18
+ return this.requestRaw('POST', `/v1/audio/speak/kokoro?${params}`);
14
19
  }
15
20
  async voices() {
16
21
  return this.request('GET', '/v1/audio/kokoro/voices');
@@ -1 +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"}
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,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,IAAI,OAAO,EAAE,KAAK;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,OAAO,EAAE,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,OAAO,EAAE,KAAK,IAAI,IAAI;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,0BAA0B,MAAM,EAAE,CAAC,CAAC;IACrE,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"}
@@ -1,7 +1,9 @@
1
- import { type ScalixConfig } from '../config.js';
1
+ import type { ScalixConfig } from '../config.js';
2
2
  export declare class BaseService {
3
3
  protected config: ScalixConfig;
4
- constructor(config?: ScalixConfig);
4
+ constructor(config: ScalixConfig);
5
+ private get maxRetries();
6
+ private get timeout();
5
7
  protected request<T>(method: string, path: string, options?: {
6
8
  body?: unknown;
7
9
  headers?: Record<string, string>;
@@ -1 +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"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/services/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AA4CjD,qBAAa,WAAW;IACtB,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC;gBAEnB,MAAM,EAAE,YAAY;IAIhC,OAAO,KAAK,UAAU,GAErB;IAED,OAAO,KAAK,OAAO,GAElB;cAEe,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;cAsDG,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;cAmDJ,gBAAgB,CAAC,CAAC,EAChC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,CAAC,CAAC;CA8Cd"}
@@ -1,13 +1,43 @@
1
- import { getConfig } from '../config.js';
2
- import { AuthenticationError, ScalixError } from '../errors.js';
1
+ import { AuthenticationError, BadRequestError, ConflictError, InternalServerError, NotFoundError, PermissionDeniedError, RateLimitError, ScalixError, UnprocessableEntityError, } from '../errors.js';
2
+ const RETRYABLE_STATUS_CODES = new Set([408, 409, 429, 500, 502, 503, 504]);
3
+ function sleep(ms) {
4
+ return new Promise(resolve => setTimeout(resolve, ms));
5
+ }
6
+ function backoffDelay(attempt, retryAfter) {
7
+ if (retryAfter !== undefined)
8
+ return retryAfter * 1000;
9
+ const base = Math.min(0.5 * Math.pow(2, attempt), 8);
10
+ return base * (0.5 + Math.random() * 0.5) * 1000;
11
+ }
12
+ function throwForStatus(status, message, requestId) {
13
+ switch (status) {
14
+ case 400: throw new BadRequestError(message, requestId);
15
+ case 401: throw new AuthenticationError(message, requestId);
16
+ case 403: throw new PermissionDeniedError(message, requestId);
17
+ case 404: throw new NotFoundError(message, requestId);
18
+ case 409: throw new ConflictError(message, requestId);
19
+ case 422: throw new UnprocessableEntityError(message, requestId);
20
+ case 429: throw new RateLimitError(message, requestId);
21
+ default:
22
+ if (status >= 500)
23
+ throw new InternalServerError(message, requestId);
24
+ throw new ScalixError(message, { status, requestId });
25
+ }
26
+ }
3
27
  export class BaseService {
4
28
  config;
5
29
  constructor(config) {
6
- this.config = config ?? getConfig();
30
+ this.config = config;
31
+ }
32
+ get maxRetries() {
33
+ return this.config.maxRetries ?? 2;
34
+ }
35
+ get timeout() {
36
+ return this.config.timeout ?? 60000;
7
37
  }
8
38
  async request(method, path, options) {
9
39
  if (!this.config.apiKey) {
10
- throw new AuthenticationError('API key required. Call configure({ apiKey: "..." }) first.');
40
+ throw new AuthenticationError('API key required. Pass apiKey to new Scalix("sk_scalix_...").');
11
41
  }
12
42
  const url = `${this.config.baseUrl}${path}`;
13
43
  const headers = {
@@ -15,16 +45,41 @@ export class BaseService {
15
45
  'Content-Type': 'application/json',
16
46
  ...options?.headers,
17
47
  };
18
- const resp = await fetch(url, {
19
- method,
20
- headers,
21
- ...(options?.body ? { body: JSON.stringify(options.body) } : {}),
22
- });
23
- if (!resp.ok) {
48
+ let lastError;
49
+ for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
50
+ if (attempt > 0) {
51
+ await sleep(backoffDelay(attempt - 1, lastError instanceof RateLimitError ? undefined : undefined));
52
+ }
53
+ let resp;
54
+ try {
55
+ resp = await fetch(url, {
56
+ method,
57
+ headers,
58
+ ...(options?.body ? { body: JSON.stringify(options.body) } : {}),
59
+ signal: AbortSignal.timeout(this.timeout),
60
+ });
61
+ }
62
+ catch (err) {
63
+ lastError = err instanceof Error ? err : new Error(String(err));
64
+ if (attempt < this.maxRetries)
65
+ continue;
66
+ throw new ScalixError(`Connection failed: ${lastError.message}`);
67
+ }
68
+ if (resp.ok) {
69
+ return resp.json();
70
+ }
71
+ const requestId = resp.headers.get('x-request-id') ?? undefined;
24
72
  const body = await resp.json().catch(() => ({}));
25
- throw new ScalixError(body?.error?.message ?? `Request failed: ${resp.status}`, { code: body?.error?.code });
73
+ const message = body?.error?.message ?? `Request failed: ${resp.status}`;
74
+ if (attempt < this.maxRetries && RETRYABLE_STATUS_CODES.has(resp.status)) {
75
+ const retryAfter = resp.headers.get('retry-after');
76
+ lastError = new ScalixError(message, { status: resp.status, requestId });
77
+ await sleep(backoffDelay(attempt, retryAfter ? parseFloat(retryAfter) : undefined));
78
+ continue;
79
+ }
80
+ throwForStatus(resp.status, message, requestId);
26
81
  }
27
- return resp.json();
82
+ throw lastError ?? new ScalixError('Request failed after retries');
28
83
  }
29
84
  async requestRaw(method, path, options) {
30
85
  if (!this.config.apiKey) {
@@ -36,32 +91,79 @@ export class BaseService {
36
91
  'Content-Type': 'application/json',
37
92
  ...options?.headers,
38
93
  };
39
- const resp = await fetch(url, {
40
- method,
41
- headers,
42
- ...(options?.body ? { body: JSON.stringify(options.body) } : {}),
43
- });
44
- if (!resp.ok) {
94
+ let lastError;
95
+ for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
96
+ let resp;
97
+ try {
98
+ resp = await fetch(url, {
99
+ method,
100
+ headers,
101
+ ...(options?.body ? { body: JSON.stringify(options.body) } : {}),
102
+ signal: AbortSignal.timeout(this.timeout),
103
+ });
104
+ }
105
+ catch (err) {
106
+ lastError = err instanceof Error ? err : new Error(String(err));
107
+ if (attempt < this.maxRetries) {
108
+ await sleep(backoffDelay(attempt));
109
+ continue;
110
+ }
111
+ throw new ScalixError(`Connection failed: ${lastError.message}`);
112
+ }
113
+ if (resp.ok)
114
+ return resp;
115
+ const requestId = resp.headers.get('x-request-id') ?? undefined;
45
116
  const body = await resp.json().catch(() => ({}));
46
- throw new ScalixError(body?.error?.message ?? `Request failed: ${resp.status}`, { code: body?.error?.code });
117
+ const message = body?.error?.message ?? `Request failed: ${resp.status}`;
118
+ if (attempt < this.maxRetries && RETRYABLE_STATUS_CODES.has(resp.status)) {
119
+ const retryAfter = resp.headers.get('retry-after');
120
+ lastError = new ScalixError(message, { status: resp.status, requestId });
121
+ await sleep(backoffDelay(attempt, retryAfter ? parseFloat(retryAfter) : undefined));
122
+ continue;
123
+ }
124
+ throwForStatus(resp.status, message, requestId);
47
125
  }
48
- return resp;
126
+ throw lastError ?? new ScalixError('Request failed after retries');
49
127
  }
50
128
  async requestMultipart(path, formData) {
51
129
  if (!this.config.apiKey) {
52
130
  throw new AuthenticationError('API key required.');
53
131
  }
54
132
  const url = `${this.config.baseUrl}${path}`;
55
- const resp = await fetch(url, {
56
- method: 'POST',
57
- headers: { Authorization: `Bearer ${this.config.apiKey}` },
58
- body: formData,
59
- });
60
- if (!resp.ok) {
133
+ let lastError;
134
+ for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
135
+ let resp;
136
+ try {
137
+ resp = await fetch(url, {
138
+ method: 'POST',
139
+ headers: { Authorization: `Bearer ${this.config.apiKey}` },
140
+ body: formData,
141
+ signal: AbortSignal.timeout(this.timeout),
142
+ });
143
+ }
144
+ catch (err) {
145
+ lastError = err instanceof Error ? err : new Error(String(err));
146
+ if (attempt < this.maxRetries) {
147
+ await sleep(backoffDelay(attempt));
148
+ continue;
149
+ }
150
+ throw new ScalixError(`Connection failed: ${lastError.message}`);
151
+ }
152
+ if (resp.ok) {
153
+ return resp.json();
154
+ }
155
+ const requestId = resp.headers.get('x-request-id') ?? undefined;
61
156
  const body = await resp.json().catch(() => ({}));
62
- throw new ScalixError(body?.error?.message ?? `Upload failed: ${resp.status}`, { code: body?.error?.code });
157
+ const message = body?.error?.message ?? `Upload failed: ${resp.status}`;
158
+ if (attempt < this.maxRetries && RETRYABLE_STATUS_CODES.has(resp.status)) {
159
+ const retryAfter = resp.headers.get('retry-after');
160
+ lastError = new ScalixError(message, { status: resp.status, requestId });
161
+ await sleep(backoffDelay(attempt, retryAfter ? parseFloat(retryAfter) : undefined));
162
+ continue;
163
+ }
164
+ throwForStatus(resp.status, message, requestId);
63
165
  }
64
- return resp.json();
166
+ throw lastError ?? new ScalixError('Request failed after retries');
65
167
  }
66
168
  }
67
169
  //# sourceMappingURL=base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/services/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/services/base.ts"],"names":[],"mappings":"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"}
@@ -46,6 +46,11 @@ export declare class DocGenService extends BaseService {
46
46
  total: number;
47
47
  }>;
48
48
  download(docId: string): Promise<Response>;
49
+ share(docId: string, targetEmail: string): Promise<{
50
+ success: boolean;
51
+ message: string;
52
+ shared_with_uid: string;
53
+ }>;
49
54
  revise(docId: string, prompt: string): Promise<DocGenResult>;
50
55
  versions(docId: string): Promise<{
51
56
  versions: Array<{
@@ -1 +1 @@
1
- {"version":3,"file":"docgen.d.ts","sourceRoot":"","sources":["../../src/services/docgen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;AACjE,MAAM,MAAM,QAAQ,GAAG,cAAc,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE9D,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,qBAAa,aAAc,SAAQ,WAAW;IACtC,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAMrD,OAAO,CACX,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,GAC1D,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAI9B,OAAO,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAInC,SAAS,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAInC,OAAO,CACX,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5C,OAAO,CAAC;QAAE,SAAS,EAAE,YAAY,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAQlD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAI1C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAM5D,QAAQ,CACZ,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,QAAQ,EAAE,KAAK,CAAC;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;CAG5E"}
1
+ {"version":3,"file":"docgen.d.ts","sourceRoot":"","sources":["../../src/services/docgen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;AACjE,MAAM,MAAM,QAAQ,GAAG,cAAc,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE9D,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,qBAAa,aAAc,SAAQ,WAAW;IACtC,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAMrD,OAAO,CACX,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,GAC1D,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAI9B,OAAO,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAInC,SAAS,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAInC,OAAO,CACX,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5C,OAAO,CAAC;QAAE,SAAS,EAAE,YAAY,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAQlD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAI1C,KAAK,CACT,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;IAMpE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAM5D,QAAQ,CACZ,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,QAAQ,EAAE,KAAK,CAAC;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;CAG5E"}
@@ -26,6 +26,11 @@ export class DocGenService extends BaseService {
26
26
  async download(docId) {
27
27
  return this.requestRaw('GET', `/v1/docgen/download/${docId}`);
28
28
  }
29
+ async share(docId, targetEmail) {
30
+ return this.request('POST', '/v1/docgen/share', {
31
+ body: { doc_id: docId, target_email: targetEmail },
32
+ });
33
+ }
29
34
  async revise(docId, prompt) {
30
35
  return this.request('POST', '/v1/docgen/revise', {
31
36
  body: { doc_id: docId, prompt },
@@ -1 +1 @@
1
- {"version":3,"file":"docgen.js","sourceRoot":"","sources":["../../src/services/docgen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAuCxC,MAAM,OAAO,aAAc,SAAQ,WAAW;IAC5C,KAAK,CAAC,MAAM,CAAC,OAAsB;QACjC,OAAO,IAAI,CAAC,OAAO,CAAe,MAAM,EAAE,mBAAmB,EAAE;YAC7D,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CACX,OAA2D;QAE3D,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,oBAAoB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,OAAO,CACX,OAA6C;QAE7C,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,OAAO,EAAE,KAAK,IAAI,IAAI;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACvE,IAAI,OAAO,EAAE,MAAM,IAAI,IAAI;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1E,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;IAED,KAAK,CAAC,QAAQ,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,uBAAuB,KAAK,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,MAAc;QACxC,OAAO,IAAI,CAAC,OAAO,CAAe,MAAM,EAAE,mBAAmB,EAAE;YAC7D,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;SAChC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,KAAa;QAEb,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,uBAAuB,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC;CACF"}
1
+ {"version":3,"file":"docgen.js","sourceRoot":"","sources":["../../src/services/docgen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAuCxC,MAAM,OAAO,aAAc,SAAQ,WAAW;IAC5C,KAAK,CAAC,MAAM,CAAC,OAAsB;QACjC,OAAO,IAAI,CAAC,OAAO,CAAe,MAAM,EAAE,mBAAmB,EAAE;YAC7D,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CACX,OAA2D;QAE3D,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,oBAAoB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,OAAO,CACX,OAA6C;QAE7C,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,OAAO,EAAE,KAAK,IAAI,IAAI;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACvE,IAAI,OAAO,EAAE,MAAM,IAAI,IAAI;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1E,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;IAED,KAAK,CAAC,QAAQ,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,uBAAuB,KAAK,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,KAAK,CACT,KAAa,EACb,WAAmB;QAEnB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,kBAAkB,EAAE;YAC9C,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE;SACnD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,MAAc;QACxC,OAAO,IAAI,CAAC,OAAO,CAAe,MAAM,EAAE,mBAAmB,EAAE;YAC7D,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;SAChC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,KAAa;QAEb,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,uBAAuB,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC;CACF"}
@@ -1,15 +1,14 @@
1
1
  export { BaseService } from './base.js';
2
2
  export { AccountService } from './account.js';
3
+ export type { UserInfo, UserBudget, UserUsage } from './account.js';
3
4
  export { AudioService } from './audio.js';
4
5
  export type { TranscriptionResult, SpeechOptions } from './audio.js';
5
- export { ChatService } from './chat.js';
6
- export type { ChatMessage, ChatCompletionOptions, ChatCompletionResult } from './chat.js';
7
- export { DatabaseService } from './database.js';
8
- export type { Database as ScalixDatabase, CreateDatabaseOptions, Branch, Backup, DatabaseMetrics, PoolingStatus, EncryptionStatus, HAStatus, QueryResult, TableInfo, ColumnInfo, } from './database.js';
9
6
  export { DocGenService } from './docgen.js';
10
7
  export type { DocFormat, DocStyle, DocGenOptions, DocGenResult, DocTemplate, DocFormatInfo } from './docgen.js';
11
8
  export { ImagesService } from './images.js';
12
9
  export type { ImageGenerateOptions, ImageResult, ImageJobStatus } from './images.js';
10
+ export { ModelsService } from './models.js';
11
+ export type { ScalixModel } from './models.js';
13
12
  export { RAGService } from './rag.js';
14
13
  export type { RAGDocument, RAGQueryResult, RAGUploadResult } from './rag.js';
15
14
  export { ResearchService } from './research.js';
@@ -17,5 +16,5 @@ export type { SearchResult, ResearchResult } from './research.js';
17
16
  export { StorageService } from './storage.js';
18
17
  export type { UploadUrlResult } from './storage.js';
19
18
  export { TextService } from './text.js';
20
- export type { SentimentResult, SummaryResult, TranslationResult } from './text.js';
19
+ export type { SentimentResult, SummaryResult, TranslationResult, GrammarResult, AutocompleteResult, VectorSearchContext, VectorSearchResult } from './text.js';
21
20
  //# sourceMappingURL=index.d.ts.map