assistant-cloud 0.1.28 → 0.1.29

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 (53) hide show
  1. package/dist/AssistantCloud.d.ts +15 -11
  2. package/dist/AssistantCloud.d.ts.map +1 -1
  3. package/dist/AssistantCloud.js +24 -24
  4. package/dist/AssistantCloud.js.map +1 -1
  5. package/dist/AssistantCloudAPI.d.ts +46 -43
  6. package/dist/AssistantCloudAPI.d.ts.map +1 -1
  7. package/dist/AssistantCloudAPI.js +66 -79
  8. package/dist/AssistantCloudAPI.js.map +1 -1
  9. package/dist/AssistantCloudAuthStrategy.d.ts +28 -25
  10. package/dist/AssistantCloudAuthStrategy.d.ts.map +1 -1
  11. package/dist/AssistantCloudAuthStrategy.js +98 -135
  12. package/dist/AssistantCloudAuthStrategy.js.map +1 -1
  13. package/dist/AssistantCloudAuthTokens.d.ts +10 -7
  14. package/dist/AssistantCloudAuthTokens.d.ts.map +1 -1
  15. package/dist/AssistantCloudAuthTokens.js +13 -9
  16. package/dist/AssistantCloudAuthTokens.js.map +1 -1
  17. package/dist/AssistantCloudFiles.d.ts +20 -17
  18. package/dist/AssistantCloudFiles.d.ts.map +1 -1
  19. package/dist/AssistantCloudFiles.js +22 -18
  20. package/dist/AssistantCloudFiles.js.map +1 -1
  21. package/dist/AssistantCloudRuns.d.ts +53 -50
  22. package/dist/AssistantCloudRuns.d.ts.map +1 -1
  23. package/dist/AssistantCloudRuns.js +42 -38
  24. package/dist/AssistantCloudRuns.js.map +1 -1
  25. package/dist/AssistantCloudThreadMessages.d.ts +27 -24
  26. package/dist/AssistantCloudThreadMessages.d.ts.map +1 -1
  27. package/dist/AssistantCloudThreadMessages.js +25 -15
  28. package/dist/AssistantCloudThreadMessages.js.map +1 -1
  29. package/dist/AssistantCloudThreads.d.ts +37 -34
  30. package/dist/AssistantCloudThreads.d.ts.map +1 -1
  31. package/dist/AssistantCloudThreads.js +33 -28
  32. package/dist/AssistantCloudThreads.js.map +1 -1
  33. package/dist/CloudMessagePersistence.d.ts +49 -44
  34. package/dist/CloudMessagePersistence.d.ts.map +1 -1
  35. package/dist/CloudMessagePersistence.js +90 -101
  36. package/dist/CloudMessagePersistence.js.map +1 -1
  37. package/dist/FormattedCloudPersistence.d.ts +40 -36
  38. package/dist/FormattedCloudPersistence.d.ts.map +1 -1
  39. package/dist/FormattedCloudPersistence.js +32 -36
  40. package/dist/FormattedCloudPersistence.js.map +1 -1
  41. package/dist/index.d.ts +8 -8
  42. package/dist/index.js +5 -5
  43. package/dist/instrumentMcpSampling.d.ts +39 -36
  44. package/dist/instrumentMcpSampling.d.ts.map +1 -1
  45. package/dist/instrumentMcpSampling.js +61 -68
  46. package/dist/instrumentMcpSampling.js.map +1 -1
  47. package/dist/tests/setup.d.ts +1 -2
  48. package/dist/tests/setup.js +3 -4
  49. package/dist/tests/setup.js.map +1 -1
  50. package/package.json +5 -5
  51. package/dist/index.d.ts.map +0 -1
  52. package/dist/index.js.map +0 -1
  53. package/dist/tests/setup.d.ts.map +0 -1
@@ -1,16 +1,20 @@
1
- import { type AssistantCloudConfig, type AssistantCloudTelemetryConfig } from "./AssistantCloudAPI.js";
2
- import { AssistantCloudAuthTokens } from "./AssistantCloudAuthTokens.js";
3
1
  import { AssistantCloudRuns } from "./AssistantCloudRuns.js";
2
+ import { AssistantCloudConfig, AssistantCloudTelemetryConfig } from "./AssistantCloudAPI.js";
3
+ import { AssistantCloudAuthTokens } from "./AssistantCloudAuthTokens.js";
4
4
  import { AssistantCloudThreads } from "./AssistantCloudThreads.js";
5
5
  import { AssistantCloudFiles } from "./AssistantCloudFiles.js";
6
- export declare class AssistantCloud {
7
- readonly threads: AssistantCloudThreads;
8
- readonly auth: {
9
- tokens: AssistantCloudAuthTokens;
10
- };
11
- readonly runs: AssistantCloudRuns;
12
- readonly files: AssistantCloudFiles;
13
- readonly telemetry: AssistantCloudTelemetryConfig;
14
- constructor(config: AssistantCloudConfig);
6
+
7
+ //#region src/AssistantCloud.d.ts
8
+ declare class AssistantCloud {
9
+ readonly threads: AssistantCloudThreads;
10
+ readonly auth: {
11
+ tokens: AssistantCloudAuthTokens;
12
+ };
13
+ readonly runs: AssistantCloudRuns;
14
+ readonly files: AssistantCloudFiles;
15
+ readonly telemetry: AssistantCloudTelemetryConfig;
16
+ constructor(config: AssistantCloudConfig);
15
17
  }
18
+ //#endregion
19
+ export { AssistantCloud };
16
20
  //# sourceMappingURL=AssistantCloud.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantCloud.d.ts","sourceRoot":"","sources":["../src/AssistantCloud.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,6BAA6B,EACnC,+BAA4B;AAC7B,OAAO,EAAE,wBAAwB,EAAE,sCAAmC;AACtE,OAAO,EAAE,kBAAkB,EAAE,gCAA6B;AAC1D,OAAO,EAAE,qBAAqB,EAAE,mCAAgC;AAChE,OAAO,EAAE,mBAAmB,EAAE,iCAA8B;AAE5D,qBAAa,cAAc;IACzB,SAAgB,OAAO,wBAAC;IACxB,SAAgB,IAAI;;MAAC;IACrB,SAAgB,IAAI,qBAAC;IACrB,SAAgB,KAAK,sBAAC;IACtB,SAAgB,SAAS,EAAE,6BAA6B,CAAC;gBAE7C,MAAM,EAAE,oBAAoB;CAiBzC"}
1
+ {"version":3,"file":"AssistantCloud.d.ts","names":[],"sources":["../src/AssistantCloud.ts"],"mappings":";;;;;;;cAUa,cAAA;EAAA,SACK,OAAA,EAAO,qBAAA;EAAA,SACP,IAAA;;;WACA,IAAA,EAAI,kBAAA;EAAA,SACJ,KAAA,EAAK,mBAAA;EAAA,SACL,SAAA,EAAW,6BAAA;cAEf,MAAA,EAAQ,oBAAA;AAAA"}
@@ -1,29 +1,29 @@
1
- import { AssistantCloudAPI, } from "./AssistantCloudAPI.js";
1
+ import { AssistantCloudAPI } from "./AssistantCloudAPI.js";
2
2
  import { AssistantCloudAuthTokens } from "./AssistantCloudAuthTokens.js";
3
3
  import { AssistantCloudRuns } from "./AssistantCloudRuns.js";
4
4
  import { AssistantCloudThreads } from "./AssistantCloudThreads.js";
5
5
  import { AssistantCloudFiles } from "./AssistantCloudFiles.js";
6
- export class AssistantCloud {
7
- threads;
8
- auth;
9
- runs;
10
- files;
11
- telemetry;
12
- constructor(config) {
13
- const api = new AssistantCloudAPI(config);
14
- this.threads = new AssistantCloudThreads(api);
15
- this.auth = {
16
- tokens: new AssistantCloudAuthTokens(api),
17
- };
18
- this.runs = new AssistantCloudRuns(api);
19
- this.files = new AssistantCloudFiles(api);
20
- const t = config.telemetry;
21
- this.telemetry =
22
- t === false
23
- ? { enabled: false }
24
- : t === true || t === undefined
25
- ? { enabled: true }
26
- : { enabled: t.enabled !== false, ...t };
27
- }
28
- }
6
+ //#region src/AssistantCloud.ts
7
+ var AssistantCloud = class {
8
+ threads;
9
+ auth;
10
+ runs;
11
+ files;
12
+ telemetry;
13
+ constructor(config) {
14
+ const api = new AssistantCloudAPI(config);
15
+ this.threads = new AssistantCloudThreads(api);
16
+ this.auth = { tokens: new AssistantCloudAuthTokens(api) };
17
+ this.runs = new AssistantCloudRuns(api);
18
+ this.files = new AssistantCloudFiles(api);
19
+ const t = config.telemetry;
20
+ this.telemetry = t === false ? { enabled: false } : t === true || t === void 0 ? { enabled: true } : {
21
+ enabled: t.enabled !== false,
22
+ ...t
23
+ };
24
+ }
25
+ };
26
+ //#endregion
27
+ export { AssistantCloud };
28
+
29
29
  //# sourceMappingURL=AssistantCloud.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantCloud.js","sourceRoot":"","sources":["../src/AssistantCloud.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,GAGlB,+BAA4B;AAC7B,OAAO,EAAE,wBAAwB,EAAE,sCAAmC;AACtE,OAAO,EAAE,kBAAkB,EAAE,gCAA6B;AAC1D,OAAO,EAAE,qBAAqB,EAAE,mCAAgC;AAChE,OAAO,EAAE,mBAAmB,EAAE,iCAA8B;AAE5D,MAAM,OAAO,cAAc;IACT,OAAO,CAAC;IACR,IAAI,CAAC;IACL,IAAI,CAAC;IACL,KAAK,CAAC;IACN,SAAS,CAAgC;IAEzD,YAAY,MAA4B;QACtC,MAAM,GAAG,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,IAAI,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,GAAG;YACV,MAAM,EAAE,IAAI,wBAAwB,CAAC,GAAG,CAAC;SAC1C,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAE1C,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS;YACZ,CAAC,KAAK,KAAK;gBACT,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE;gBACpB,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;oBAC7B,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;oBACnB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;IACjD,CAAC;CACF"}
1
+ {"version":3,"file":"AssistantCloud.js","names":[],"sources":["../src/AssistantCloud.ts"],"sourcesContent":["import {\n AssistantCloudAPI,\n type AssistantCloudConfig,\n type AssistantCloudTelemetryConfig,\n} from \"./AssistantCloudAPI\";\nimport { AssistantCloudAuthTokens } from \"./AssistantCloudAuthTokens\";\nimport { AssistantCloudRuns } from \"./AssistantCloudRuns\";\nimport { AssistantCloudThreads } from \"./AssistantCloudThreads\";\nimport { AssistantCloudFiles } from \"./AssistantCloudFiles\";\n\nexport class AssistantCloud {\n public readonly threads;\n public readonly auth;\n public readonly runs;\n public readonly files;\n public readonly telemetry: AssistantCloudTelemetryConfig;\n\n constructor(config: AssistantCloudConfig) {\n const api = new AssistantCloudAPI(config);\n this.threads = new AssistantCloudThreads(api);\n this.auth = {\n tokens: new AssistantCloudAuthTokens(api),\n };\n this.runs = new AssistantCloudRuns(api);\n this.files = new AssistantCloudFiles(api);\n\n const t = config.telemetry;\n this.telemetry =\n t === false\n ? { enabled: false }\n : t === true || t === undefined\n ? { enabled: true }\n : { enabled: t.enabled !== false, ...t };\n }\n}\n"],"mappings":";;;;;;AAUA,IAAa,iBAAb,MAA4B;CAC1B;CACA;CACA;CACA;CACA;CAEA,YAAY,QAA8B;EACxC,MAAM,MAAM,IAAI,kBAAkB,MAAM;EACxC,KAAK,UAAU,IAAI,sBAAsB,GAAG;EAC5C,KAAK,OAAO,EACV,QAAQ,IAAI,yBAAyB,GAAG,EAC1C;EACA,KAAK,OAAO,IAAI,mBAAmB,GAAG;EACtC,KAAK,QAAQ,IAAI,oBAAoB,GAAG;EAExC,MAAM,IAAI,OAAO;EACjB,KAAK,YACH,MAAM,QACF,EAAE,SAAS,MAAM,IACjB,MAAM,QAAQ,MAAM,KAAA,IAClB,EAAE,SAAS,KAAK,IAChB;GAAE,SAAS,EAAE,YAAY;GAAO,GAAG;EAAE;CAC/C;AACF"}
@@ -1,52 +1,55 @@
1
- import { type AssistantCloudAuthStrategy } from "./AssistantCloudAuthStrategy.js";
2
- import type { AssistantCloudRunReport } from "./AssistantCloudRuns.js";
3
- export type AssistantCloudTelemetryConfig = {
4
- enabled?: boolean;
5
- /**
6
- * Called before each telemetry report is sent.
7
- * Return a modified report to enrich it (e.g. add `model_id`),
8
- * or return `null` to skip the report.
9
- */
10
- beforeReport?: (report: AssistantCloudRunReport) => AssistantCloudRunReport | null;
1
+ import { AssistantCloudAuthStrategy } from "./AssistantCloudAuthStrategy.js";
2
+ import { AssistantCloudRunReport } from "./AssistantCloudRuns.js";
3
+
4
+ //#region src/AssistantCloudAPI.d.ts
5
+ type AssistantCloudTelemetryConfig = {
6
+ enabled?: boolean;
7
+ /**
8
+ * Called before each telemetry report is sent.
9
+ * Return a modified report to enrich it (e.g. add `model_id`),
10
+ * or return `null` to skip the report.
11
+ */
12
+ beforeReport?: (report: AssistantCloudRunReport) => AssistantCloudRunReport | null;
11
13
  };
12
- export type AssistantCloudConfig = ({
13
- baseUrl: string;
14
- authToken: () => Promise<string | null>;
14
+ type AssistantCloudConfig = ({
15
+ baseUrl: string;
16
+ authToken: () => Promise<string | null>;
15
17
  } | {
16
- baseUrl?: string;
17
- apiKey: string;
18
- userId: string;
19
- workspaceId: string;
18
+ baseUrl?: string;
19
+ apiKey: string;
20
+ userId: string;
21
+ workspaceId: string;
20
22
  } | {
21
- baseUrl: string;
22
- anonymous: true;
23
+ baseUrl: string;
24
+ anonymous: true;
23
25
  }) & {
24
- /**
25
- * Client-side run telemetry reporting. Default: `true`.
26
- *
27
- * When enabled, the SDK automatically reports run metadata (status, step
28
- * count, tool calls, and token usage) to Assistant Cloud after each
29
- * assistant message is saved. No message content is sent.
30
- *
31
- * - `true` / `undefined` — enabled with defaults
32
- * - `false` — disabled
33
- * - `{ beforeReport }` — enabled with a hook to enrich or filter reports
34
- */
35
- telemetry?: boolean | AssistantCloudTelemetryConfig;
26
+ /**
27
+ * Client-side run telemetry reporting. Default: `true`.
28
+ *
29
+ * When enabled, the SDK automatically reports run metadata (status, step
30
+ * count, tool calls, and token usage) to Assistant Cloud after each
31
+ * assistant message is saved. No message content is sent.
32
+ *
33
+ * - `true` / `undefined` — enabled with defaults
34
+ * - `false` — disabled
35
+ * - `{ beforeReport }` — enabled with a hook to enrich or filter reports
36
+ */
37
+ telemetry?: boolean | AssistantCloudTelemetryConfig;
36
38
  };
37
39
  type MakeRequestOptions = {
38
- method?: "POST" | "PUT" | "DELETE" | undefined;
39
- headers?: Record<string, string> | undefined;
40
- query?: Record<string, string | number | boolean> | undefined;
41
- body?: object | undefined;
40
+ method?: "POST" | "PUT" | "DELETE" | undefined;
41
+ headers?: Record<string, string> | undefined;
42
+ query?: Record<string, string | number | boolean> | undefined;
43
+ body?: object | undefined;
42
44
  };
43
- export declare class AssistantCloudAPI {
44
- _auth: AssistantCloudAuthStrategy;
45
- _baseUrl: string;
46
- constructor(config: AssistantCloudConfig);
47
- initializeAuth(): Promise<boolean>;
48
- makeRawRequest(endpoint: string, options?: MakeRequestOptions): Promise<Response>;
49
- makeRequest(endpoint: string, options?: MakeRequestOptions): Promise<any>;
45
+ declare class AssistantCloudAPI {
46
+ _auth: AssistantCloudAuthStrategy;
47
+ _baseUrl: string;
48
+ constructor(config: AssistantCloudConfig);
49
+ initializeAuth(): Promise<boolean>;
50
+ makeRawRequest(endpoint: string, options?: MakeRequestOptions): Promise<Response>;
51
+ makeRequest(endpoint: string, options?: MakeRequestOptions): Promise<any>;
50
52
  }
51
- export {};
53
+ //#endregion
54
+ export { AssistantCloudAPI, AssistantCloudConfig, AssistantCloudTelemetryConfig };
52
55
  //# sourceMappingURL=AssistantCloudAPI.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantCloudAPI.d.ts","sourceRoot":"","sources":["../src/AssistantCloudAPI.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,0BAA0B,EAIhC,wCAAqC;AACtC,OAAO,KAAK,EAAE,uBAAuB,EAAE,gCAA6B;AAEpE,MAAM,MAAM,6BAA6B,GAAG;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,YAAY,CAAC,EAAE,CACb,MAAM,EAAE,uBAAuB,KAC5B,uBAAuB,GAAG,IAAI,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,CAC/B;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACzC,GACD;IACE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB,GACD;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB,CACJ,GAAG;IACF;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,6BAA6B,CAAC;CACrD,CAAC;AASF,KAAK,kBAAkB,GAAG;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,SAAS,CAAC;IAC9D,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B,CAAC;AAEF,qBAAa,iBAAiB;IACrB,KAAK,EAAE,0BAA0B,CAAC;IAClC,QAAQ,SAAC;gBAEJ,MAAM,EAAE,oBAAoB;IAuB3B,cAAc;IAId,cAAc,CACzB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,kBAAuB;IAkDrB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB;CAI5E"}
1
+ {"version":3,"file":"AssistantCloudAPI.d.ts","names":[],"sources":["../src/AssistantCloudAPI.ts"],"mappings":";;;;KAQY,6BAAA;EACV,OAAA;EADU;;;;;EAOV,YAAA,IACE,MAAA,EAAQ,uBAAA,KACL,uBAAuB;AAAA;AAAA,KAGlB,oBAAA;EAEN,OAAA;EACA,SAAA,QAAiB,OAAA;AAAA;EAGjB,OAAA;EACA,MAAA;EACA,MAAA;EACA,WAAA;AAAA;EAGA,OAAA;EACA,SAAA;AAAA;EANA;;;;;;;;AAoB+C;AACnD;;EADA,SAAA,aAAsB,6BAA6B;AAAA;AAAA,KAUhD,kBAAA;EACH,MAAA;EACA,OAAA,GAAU,MAAA;EACV,KAAA,GAAQ,MAAM;EACd,IAAA;AAAA;AAAA,cAGW,iBAAA;EACJ,KAAA,EAAO,0BAAA;EACP,QAAA;cAEK,MAAA,EAAQ,oBAAA;EAuBP,cAAA,CAAA,GAAc,OAAA;EAId,cAAA,CACX,QAAA,UACA,OAAA,GAAS,kBAAA,GAAuB,OAAA,CAAA,QAAA;EAkDrB,WAAA,CAAY,QAAA,UAAkB,OAAA,GAAS,kBAAA,GAAuB,OAAA;AAAA"}
@@ -1,80 +1,67 @@
1
- import { AssistantCloudJWTAuthStrategy, AssistantCloudAPIKeyAuthStrategy, AssistantCloudAnonymousAuthStrategy, } from "./AssistantCloudAuthStrategy.js";
2
- class CloudAPIError extends Error {
3
- constructor(message) {
4
- super(message);
5
- this.name = "APIError";
6
- }
7
- }
8
- export class AssistantCloudAPI {
9
- _auth;
10
- _baseUrl;
11
- constructor(config) {
12
- if ("authToken" in config) {
13
- this._baseUrl = config.baseUrl;
14
- this._auth = new AssistantCloudJWTAuthStrategy(config.authToken);
15
- }
16
- else if ("apiKey" in config) {
17
- this._baseUrl = (config.baseUrl ?? "https://backend.assistant-api.com").replace(/\/$/, "");
18
- this._auth = new AssistantCloudAPIKeyAuthStrategy(config.apiKey, config.userId, config.workspaceId);
19
- }
20
- else if ("anonymous" in config) {
21
- this._baseUrl = config.baseUrl;
22
- this._auth = new AssistantCloudAnonymousAuthStrategy(config.baseUrl);
23
- }
24
- else {
25
- throw new Error("Invalid configuration: Must provide authToken, apiKey, or anonymous configuration");
26
- }
27
- }
28
- async initializeAuth() {
29
- return !!this._auth.getAuthHeaders();
30
- }
31
- async makeRawRequest(endpoint, options = {}) {
32
- const authHeaders = await this._auth.getAuthHeaders();
33
- if (!authHeaders)
34
- throw new Error("Authorization failed");
35
- const headers = {
36
- ...authHeaders,
37
- ...options.headers,
38
- "Content-Type": "application/json",
39
- };
40
- const queryParams = new URLSearchParams();
41
- if (options.query) {
42
- for (const [key, value] of Object.entries(options.query)) {
43
- if (value === false)
44
- continue;
45
- if (value === true) {
46
- queryParams.set(key, "true");
47
- }
48
- else {
49
- queryParams.set(key, value.toString());
50
- }
51
- }
52
- }
53
- const url = new URL(`${this._baseUrl}/v1${endpoint}`);
54
- url.search = queryParams.toString();
55
- const response = await fetch(url, {
56
- method: options.method ?? "GET",
57
- headers,
58
- body: options.body ? JSON.stringify(options.body) : null,
59
- });
60
- this._auth.readAuthHeaders(response.headers);
61
- if (!response.ok) {
62
- const text = await response.text();
63
- try {
64
- const body = JSON.parse(text);
65
- throw new CloudAPIError(body.message);
66
- }
67
- catch (error) {
68
- if (error instanceof CloudAPIError)
69
- throw error;
70
- throw new Error(`Request failed with status ${response.status}, ${text}`);
71
- }
72
- }
73
- return response;
74
- }
75
- async makeRequest(endpoint, options = {}) {
76
- const response = await this.makeRawRequest(endpoint, options);
77
- return response.json();
78
- }
79
- }
1
+ import { AssistantCloudAPIKeyAuthStrategy, AssistantCloudAnonymousAuthStrategy, AssistantCloudJWTAuthStrategy } from "./AssistantCloudAuthStrategy.js";
2
+ //#region src/AssistantCloudAPI.ts
3
+ var CloudAPIError = class extends Error {
4
+ constructor(message) {
5
+ super(message);
6
+ this.name = "APIError";
7
+ }
8
+ };
9
+ var AssistantCloudAPI = class {
10
+ _auth;
11
+ _baseUrl;
12
+ constructor(config) {
13
+ if ("authToken" in config) {
14
+ this._baseUrl = config.baseUrl;
15
+ this._auth = new AssistantCloudJWTAuthStrategy(config.authToken);
16
+ } else if ("apiKey" in config) {
17
+ this._baseUrl = (config.baseUrl ?? "https://backend.assistant-api.com").replace(/\/$/, "");
18
+ this._auth = new AssistantCloudAPIKeyAuthStrategy(config.apiKey, config.userId, config.workspaceId);
19
+ } else if ("anonymous" in config) {
20
+ this._baseUrl = config.baseUrl;
21
+ this._auth = new AssistantCloudAnonymousAuthStrategy(config.baseUrl);
22
+ } else throw new Error("Invalid configuration: Must provide authToken, apiKey, or anonymous configuration");
23
+ }
24
+ async initializeAuth() {
25
+ return !!this._auth.getAuthHeaders();
26
+ }
27
+ async makeRawRequest(endpoint, options = {}) {
28
+ const authHeaders = await this._auth.getAuthHeaders();
29
+ if (!authHeaders) throw new Error("Authorization failed");
30
+ const headers = {
31
+ ...authHeaders,
32
+ ...options.headers,
33
+ "Content-Type": "application/json"
34
+ };
35
+ const queryParams = new URLSearchParams();
36
+ if (options.query) for (const [key, value] of Object.entries(options.query)) {
37
+ if (value === false) continue;
38
+ if (value === true) queryParams.set(key, "true");
39
+ else queryParams.set(key, value.toString());
40
+ }
41
+ const url = new URL(`${this._baseUrl}/v1${endpoint}`);
42
+ url.search = queryParams.toString();
43
+ const response = await fetch(url, {
44
+ method: options.method ?? "GET",
45
+ headers,
46
+ body: options.body ? JSON.stringify(options.body) : null
47
+ });
48
+ this._auth.readAuthHeaders(response.headers);
49
+ if (!response.ok) {
50
+ const text = await response.text();
51
+ try {
52
+ throw new CloudAPIError(JSON.parse(text).message);
53
+ } catch (error) {
54
+ if (error instanceof CloudAPIError) throw error;
55
+ throw new Error(`Request failed with status ${response.status}, ${text}`);
56
+ }
57
+ }
58
+ return response;
59
+ }
60
+ async makeRequest(endpoint, options = {}) {
61
+ return (await this.makeRawRequest(endpoint, options)).json();
62
+ }
63
+ };
64
+ //#endregion
65
+ export { AssistantCloudAPI };
66
+
80
67
  //# sourceMappingURL=AssistantCloudAPI.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantCloudAPI.js","sourceRoot":"","sources":["../src/AssistantCloudAPI.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AssistantCloudAPI.js","names":[],"sources":["../src/AssistantCloudAPI.ts"],"sourcesContent":["import {\n type AssistantCloudAuthStrategy,\n AssistantCloudJWTAuthStrategy,\n AssistantCloudAPIKeyAuthStrategy,\n AssistantCloudAnonymousAuthStrategy,\n} from \"./AssistantCloudAuthStrategy\";\nimport type { AssistantCloudRunReport } from \"./AssistantCloudRuns\";\n\nexport type AssistantCloudTelemetryConfig = {\n enabled?: boolean;\n /**\n * Called before each telemetry report is sent.\n * Return a modified report to enrich it (e.g. add `model_id`),\n * or return `null` to skip the report.\n */\n beforeReport?: (\n report: AssistantCloudRunReport,\n ) => AssistantCloudRunReport | null;\n};\n\nexport type AssistantCloudConfig = (\n | {\n baseUrl: string;\n authToken: () => Promise<string | null>;\n }\n | {\n baseUrl?: string;\n apiKey: string;\n userId: string;\n workspaceId: string;\n }\n | {\n baseUrl: string;\n anonymous: true;\n }\n) & {\n /**\n * Client-side run telemetry reporting. Default: `true`.\n *\n * When enabled, the SDK automatically reports run metadata (status, step\n * count, tool calls, and token usage) to Assistant Cloud after each\n * assistant message is saved. No message content is sent.\n *\n * - `true` / `undefined` — enabled with defaults\n * - `false` — disabled\n * - `{ beforeReport }` — enabled with a hook to enrich or filter reports\n */\n telemetry?: boolean | AssistantCloudTelemetryConfig;\n};\n\nclass CloudAPIError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"APIError\";\n }\n}\n\ntype MakeRequestOptions = {\n method?: \"POST\" | \"PUT\" | \"DELETE\" | undefined;\n headers?: Record<string, string> | undefined;\n query?: Record<string, string | number | boolean> | undefined;\n body?: object | undefined;\n};\n\nexport class AssistantCloudAPI {\n public _auth: AssistantCloudAuthStrategy;\n public _baseUrl;\n\n constructor(config: AssistantCloudConfig) {\n if (\"authToken\" in config) {\n this._baseUrl = config.baseUrl;\n this._auth = new AssistantCloudJWTAuthStrategy(config.authToken);\n } else if (\"apiKey\" in config) {\n this._baseUrl = (\n config.baseUrl ?? \"https://backend.assistant-api.com\"\n ).replace(/\\/$/, \"\");\n this._auth = new AssistantCloudAPIKeyAuthStrategy(\n config.apiKey,\n config.userId,\n config.workspaceId,\n );\n } else if (\"anonymous\" in config) {\n this._baseUrl = config.baseUrl;\n this._auth = new AssistantCloudAnonymousAuthStrategy(config.baseUrl);\n } else {\n throw new Error(\n \"Invalid configuration: Must provide authToken, apiKey, or anonymous configuration\",\n );\n }\n }\n\n public async initializeAuth() {\n return !!this._auth.getAuthHeaders();\n }\n\n public async makeRawRequest(\n endpoint: string,\n options: MakeRequestOptions = {},\n ) {\n const authHeaders = await this._auth.getAuthHeaders();\n if (!authHeaders) throw new Error(\"Authorization failed\");\n\n const headers = {\n ...authHeaders,\n ...options.headers,\n \"Content-Type\": \"application/json\",\n };\n\n const queryParams = new URLSearchParams();\n if (options.query) {\n for (const [key, value] of Object.entries(options.query)) {\n if (value === false) continue;\n if (value === true) {\n queryParams.set(key, \"true\");\n } else {\n queryParams.set(key, value.toString());\n }\n }\n }\n\n const url = new URL(`${this._baseUrl}/v1${endpoint}`);\n url.search = queryParams.toString();\n\n const response = await fetch(url, {\n method: options.method ?? \"GET\",\n headers,\n body: options.body ? JSON.stringify(options.body) : null,\n });\n\n this._auth.readAuthHeaders(response.headers);\n\n if (!response.ok) {\n const text = await response.text();\n try {\n const body = JSON.parse(text);\n throw new CloudAPIError(body.message);\n } catch (error) {\n if (error instanceof CloudAPIError) throw error;\n throw new Error(\n `Request failed with status ${response.status}, ${text}`,\n );\n }\n }\n\n return response;\n }\n\n public async makeRequest(endpoint: string, options: MakeRequestOptions = {}) {\n const response = await this.makeRawRequest(endpoint, options);\n return response.json();\n }\n}\n"],"mappings":";;AAkDA,IAAM,gBAAN,cAA4B,MAAM;CAChC,YAAY,SAAiB;EAC3B,MAAM,OAAO;EACb,KAAK,OAAO;CACd;AACF;AASA,IAAa,oBAAb,MAA+B;CAC7B;CACA;CAEA,YAAY,QAA8B;EACxC,IAAI,eAAe,QAAQ;GACzB,KAAK,WAAW,OAAO;GACvB,KAAK,QAAQ,IAAI,8BAA8B,OAAO,SAAS;EACjE,OAAO,IAAI,YAAY,QAAQ;GAC7B,KAAK,YACH,OAAO,WAAW,qCAClB,QAAQ,OAAO,EAAE;GACnB,KAAK,QAAQ,IAAI,iCACf,OAAO,QACP,OAAO,QACP,OAAO,WACT;EACF,OAAO,IAAI,eAAe,QAAQ;GAChC,KAAK,WAAW,OAAO;GACvB,KAAK,QAAQ,IAAI,oCAAoC,OAAO,OAAO;EACrE,OACE,MAAM,IAAI,MACR,mFACF;CAEJ;CAEA,MAAa,iBAAiB;EAC5B,OAAO,CAAC,CAAC,KAAK,MAAM,eAAe;CACrC;CAEA,MAAa,eACX,UACA,UAA8B,CAAC,GAC/B;EACA,MAAM,cAAc,MAAM,KAAK,MAAM,eAAe;EACpD,IAAI,CAAC,aAAa,MAAM,IAAI,MAAM,sBAAsB;EAExD,MAAM,UAAU;GACd,GAAG;GACH,GAAG,QAAQ;GACX,gBAAgB;EAClB;EAEA,MAAM,cAAc,IAAI,gBAAgB;EACxC,IAAI,QAAQ,OACV,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,QAAQ,KAAK,GAAG;GACxD,IAAI,UAAU,OAAO;GACrB,IAAI,UAAU,MACZ,YAAY,IAAI,KAAK,MAAM;QAE3B,YAAY,IAAI,KAAK,MAAM,SAAS,CAAC;EAEzC;EAGF,MAAM,MAAM,IAAI,IAAI,GAAG,KAAK,SAAS,KAAK,UAAU;EACpD,IAAI,SAAS,YAAY,SAAS;EAElC,MAAM,WAAW,MAAM,MAAM,KAAK;GAChC,QAAQ,QAAQ,UAAU;GAC1B;GACA,MAAM,QAAQ,OAAO,KAAK,UAAU,QAAQ,IAAI,IAAI;EACtD,CAAC;EAED,KAAK,MAAM,gBAAgB,SAAS,OAAO;EAE3C,IAAI,CAAC,SAAS,IAAI;GAChB,MAAM,OAAO,MAAM,SAAS,KAAK;GACjC,IAAI;IAEF,MAAM,IAAI,cADG,KAAK,MAAM,IACG,EAAE,OAAO;GACtC,SAAS,OAAO;IACd,IAAI,iBAAiB,eAAe,MAAM;IAC1C,MAAM,IAAI,MACR,8BAA8B,SAAS,OAAO,IAAI,MACpD;GACF;EACF;EAEA,OAAO;CACT;CAEA,MAAa,YAAY,UAAkB,UAA8B,CAAC,GAAG;EAE3E,QAAO,MADgB,KAAK,eAAe,UAAU,OAAO,GAC5C,KAAK;CACvB;AACF"}
@@ -1,30 +1,33 @@
1
- export type AssistantCloudAuthStrategy = {
2
- readonly strategy: "anon" | "jwt" | "api-key";
3
- getAuthHeaders(): Promise<Record<string, string> | false>;
4
- readAuthHeaders(headers: Headers): void;
1
+ //#region src/AssistantCloudAuthStrategy.d.ts
2
+ type AssistantCloudAuthStrategy = {
3
+ readonly strategy: "anon" | "jwt" | "api-key";
4
+ getAuthHeaders(): Promise<Record<string, string> | false>;
5
+ readAuthHeaders(headers: Headers): void;
5
6
  };
6
- export declare class AssistantCloudJWTAuthStrategy implements AssistantCloudAuthStrategy {
7
- #private;
8
- readonly strategy = "jwt";
9
- private cachedToken;
10
- private tokenExpiry;
11
- constructor(authTokenCallback: () => Promise<string | null>);
12
- getAuthHeaders(): Promise<Record<string, string> | false>;
13
- readAuthHeaders(headers: Headers): void;
7
+ declare class AssistantCloudJWTAuthStrategy implements AssistantCloudAuthStrategy {
8
+ #private;
9
+ readonly strategy = "jwt";
10
+ private cachedToken;
11
+ private tokenExpiry;
12
+ constructor(authTokenCallback: () => Promise<string | null>);
13
+ getAuthHeaders(): Promise<Record<string, string> | false>;
14
+ readAuthHeaders(headers: Headers): void;
14
15
  }
15
- export declare class AssistantCloudAPIKeyAuthStrategy implements AssistantCloudAuthStrategy {
16
- #private;
17
- readonly strategy = "api-key";
18
- constructor(apiKey: string, userId: string, workspaceId: string);
19
- getAuthHeaders(): Promise<Record<string, string>>;
20
- readAuthHeaders(): void;
16
+ declare class AssistantCloudAPIKeyAuthStrategy implements AssistantCloudAuthStrategy {
17
+ #private;
18
+ readonly strategy = "api-key";
19
+ constructor(apiKey: string, userId: string, workspaceId: string);
20
+ getAuthHeaders(): Promise<Record<string, string>>;
21
+ readAuthHeaders(): void;
21
22
  }
22
- export declare class AssistantCloudAnonymousAuthStrategy implements AssistantCloudAuthStrategy {
23
- readonly strategy = "anon";
24
- private baseUrl;
25
- private jwtStrategy;
26
- constructor(baseUrl: string);
27
- getAuthHeaders(): Promise<Record<string, string> | false>;
28
- readAuthHeaders(headers: Headers): void;
23
+ declare class AssistantCloudAnonymousAuthStrategy implements AssistantCloudAuthStrategy {
24
+ readonly strategy = "anon";
25
+ private baseUrl;
26
+ private jwtStrategy;
27
+ constructor(baseUrl: string);
28
+ getAuthHeaders(): Promise<Record<string, string> | false>;
29
+ readAuthHeaders(headers: Headers): void;
29
30
  }
31
+ //#endregion
32
+ export { AssistantCloudAPIKeyAuthStrategy, AssistantCloudAnonymousAuthStrategy, AssistantCloudAuthStrategy, AssistantCloudJWTAuthStrategy };
30
33
  //# sourceMappingURL=AssistantCloudAuthStrategy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantCloudAuthStrategy.d.ts","sourceRoot":"","sources":["../src/AssistantCloudAuthStrategy.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;IAC9C,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC;IAC1D,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACzC,CAAC;AAgCF,qBAAa,6BACX,YAAW,0BAA0B;;IAErC,SAAgB,QAAQ,SAAS;IAEjC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,WAAW,CAAuB;gBAG9B,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI9C,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;IAsB/D,eAAe,CAAC,OAAO,EAAE,OAAO;CAYxC;AAED,qBAAa,gCACX,YAAW,0BAA0B;;IAErC,SAAgB,QAAQ,aAAa;gBAMzB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAMlD,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAQvD,eAAe;CAGvB;AAID,qBAAa,mCACX,YAAW,0BAA0B;IAErC,SAAgB,QAAQ,UAAU;IAElC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAgC;gBAEvC,OAAO,EAAE,MAAM;IA8Dd,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;IAI/D,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAG/C"}
1
+ {"version":3,"file":"AssistantCloudAuthStrategy.d.ts","names":[],"sources":["../src/AssistantCloudAuthStrategy.ts"],"mappings":";KAAY,0BAAA;EAAA,SACD,QAAA;EACT,cAAA,IAAkB,OAAA,CAAQ,MAAA;EAC1B,eAAA,CAAgB,OAAA,EAAS,OAAA;AAAA;AAAA,cAiCd,6BAAA,YACA,0BAAA;EAAA;WAEK,QAAA;EAAA,QAER,WAAA;EAAA,QACA,WAAA;cAGI,iBAAA,QAAyB,OAAA;EAIxB,cAAA,CAAA,GAAkB,OAAA,CAAQ,MAAA;EAsBhC,eAAA,CAAgB,OAAA,EAAS,OAAA;AAAA;AAAA,cAcrB,gCAAA,YACA,0BAAA;EAAA;WAEK,QAAA;cAMJ,MAAA,UAAgB,MAAA,UAAgB,WAAA;EAM/B,cAAA,CAAA,GAAkB,OAAA,CAAQ,MAAA;EAQhC,eAAA,CAAA;AAAA;AAAA,cAOI,mCAAA,YACA,0BAAA;EAAA,SAEK,QAAA;EAAA,QAER,OAAA;EAAA,QACA,WAAA;cAEI,OAAA;EA8DC,cAAA,CAAA,GAAkB,OAAA,CAAQ,MAAA;EAIhC,eAAA,CAAgB,OAAA,EAAS,OAAA;AAAA"}