assistant-cloud 0.2.1 → 0.2.2

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 (63) hide show
  1. package/README.md +23 -7
  2. package/dist/AssistantCloud.d.ts +1 -2
  3. package/dist/AssistantCloud.d.ts.map +1 -1
  4. package/dist/AssistantCloudAPI.d.ts +5 -6
  5. package/dist/AssistantCloudAPI.d.ts.map +1 -1
  6. package/dist/AssistantCloudAuthStrategy.d.ts +6 -7
  7. package/dist/AssistantCloudAuthStrategy.d.ts.map +1 -1
  8. package/dist/AssistantCloudAuthTokens.d.ts +1 -2
  9. package/dist/AssistantCloudAuthTokens.d.ts.map +1 -1
  10. package/dist/AssistantCloudEvents.d.ts +3 -4
  11. package/dist/AssistantCloudEvents.d.ts.map +1 -1
  12. package/dist/AssistantCloudEvents.js +1 -1
  13. package/dist/AssistantCloudEvents.js.map +1 -1
  14. package/dist/AssistantCloudFiles.d.ts +2 -3
  15. package/dist/AssistantCloudFiles.d.ts.map +1 -1
  16. package/dist/AssistantCloudProjectThreadMessages.d.ts +1 -2
  17. package/dist/AssistantCloudProjectThreadMessages.d.ts.map +1 -1
  18. package/dist/AssistantCloudProjectThreads.d.ts +1 -2
  19. package/dist/AssistantCloudProjectThreads.d.ts.map +1 -1
  20. package/dist/AssistantCloudProjects.d.ts +1 -2
  21. package/dist/AssistantCloudProjects.d.ts.map +1 -1
  22. package/dist/AssistantCloudRuns.d.ts +2 -3
  23. package/dist/AssistantCloudRuns.d.ts.map +1 -1
  24. package/dist/AssistantCloudScores.d.ts +3 -4
  25. package/dist/AssistantCloudScores.d.ts.map +1 -1
  26. package/dist/AssistantCloudThreadMessages.d.ts +7 -6
  27. package/dist/AssistantCloudThreadMessages.d.ts.map +1 -1
  28. package/dist/AssistantCloudThreadMessages.js +7 -2
  29. package/dist/AssistantCloudThreadMessages.js.map +1 -1
  30. package/dist/AssistantCloudThreads.d.ts +3 -4
  31. package/dist/AssistantCloudThreads.d.ts.map +1 -1
  32. package/dist/CloudEngagementReporter.d.ts +3 -4
  33. package/dist/CloudEngagementReporter.d.ts.map +1 -1
  34. package/dist/CloudMessagePersistence.d.ts +1 -2
  35. package/dist/CloudMessagePersistence.d.ts.map +1 -1
  36. package/dist/CloudRunReporter.d.ts +4 -5
  37. package/dist/CloudRunReporter.d.ts.map +1 -1
  38. package/dist/CloudRunReporter.js +13 -4
  39. package/dist/CloudRunReporter.js.map +1 -1
  40. package/dist/FormattedCloudPersistence.d.ts +2 -3
  41. package/dist/FormattedCloudPersistence.d.ts.map +1 -1
  42. package/dist/ai-sdk/index.d.ts +4 -5
  43. package/dist/ai-sdk/index.d.ts.map +1 -1
  44. package/dist/cloudResponse.d.ts +12 -13
  45. package/dist/cloudResponse.d.ts.map +1 -1
  46. package/dist/generateThreadTitle.d.ts +1 -2
  47. package/dist/generateThreadTitle.d.ts.map +1 -1
  48. package/dist/instrumentMcpSampling.d.ts +6 -7
  49. package/dist/instrumentMcpSampling.d.ts.map +1 -1
  50. package/dist/runTelemetry.d.ts +15 -16
  51. package/dist/runTelemetry.d.ts.map +1 -1
  52. package/dist/telemetry/index.d.ts +8 -9
  53. package/dist/telemetry/index.d.ts.map +1 -1
  54. package/dist/version.d.ts +1 -2
  55. package/dist/version.d.ts.map +1 -1
  56. package/dist/version.js +1 -1
  57. package/package.json +10 -9
  58. package/src/AssistantCloudEvents.test.ts +41 -0
  59. package/src/AssistantCloudEvents.ts +1 -0
  60. package/src/AssistantCloudThreadMessages.test.ts +53 -2
  61. package/src/AssistantCloudThreadMessages.ts +13 -1
  62. package/src/CloudRunReporter.ts +16 -4
  63. package/src/tests/CloudRunReporter.test.ts +35 -0
package/README.md CHANGED
@@ -37,7 +37,7 @@ The pieces every client integration needs live in the package, so a runtime bind
37
37
 
38
38
  Every API request carries `Aui-Sdk` with the client's own version and the identities integrations pass to `registerSdk` (the anonymous token bootstrap requests do not), so the cloud can tell which packages talk to a project.
39
39
 
40
- - `CloudRunReporter` sends run reports: nothing while telemetry is off, the cloud's environment, release and tags on every report, the `beforeReport` hook applied last, and a failed send that never surfaces. A report given a key is sent once per key, so the key has to name one run; without a key every call reports.
40
+ - `CloudRunReporter` sends run reports: nothing while telemetry is off, the cloud's environment, release and tags on every report, the `beforeReport` hook applied last, and a failed send that never surfaces. Keyed reports are deduplicated while in flight and after an attempt, while rate limiting releases the key for a later attempt; without a key every call reports.
41
41
  - `CloudEngagementReporter` derives engagement events (`message_sent`, `run_stopped`, `error_shown`, `suggestions_shown` and the rest) from what a chat integration observes and keeps the per thread state they need, such as a run's start for the stop duration. An id resolver turns the integration's own thread and message ids into the ids the cloud stores.
42
42
  - `assistant-cloud/ai-sdk` holds the AI SDK specifics: `aiSDKV6FormatAdapter`, the stored form of a `UIMessage`, and `extractAISDKRunTelemetry`, which reads the run report fields out of one run's assistant messages. The entry types its messages with `ai` and needs no runtime from it.
43
43
 
@@ -59,12 +59,14 @@ if (run) {
59
59
 
60
60
  ## Server telemetry
61
61
 
62
- Send AI SDK 7 GenAI spans to Assistant Cloud from a Next.js `instrumentation.ts` file. The `assistant-cloud/telemetry` entry needs the OpenTelemetry packages installed next to it:
62
+ Send AI SDK 7 GenAI spans to Assistant Cloud from a Next.js app. The AI SDK emits spans through `@ai-sdk/otel`, and the `assistant-cloud/telemetry` entry needs the OpenTelemetry packages installed next to it:
63
63
 
64
64
  ```sh
65
- npm i @vercel/otel @opentelemetry/api @opentelemetry/sdk-trace-base @opentelemetry/exporter-trace-otlp-http
65
+ npm i @vercel/otel @ai-sdk/otel @opentelemetry/api @opentelemetry/sdk-trace-base @opentelemetry/exporter-trace-otlp-http
66
66
  ```
67
67
 
68
+ Register the span processor in `instrumentation.ts` so it starts once per server process:
69
+
68
70
  ```ts
69
71
  import { registerOTel } from "@vercel/otel";
70
72
  import {
@@ -87,16 +89,30 @@ export function register() {
87
89
  }
88
90
  ```
89
91
 
90
- Pass the active server trace ID to the browser with `messageMetadata` in the route that calls `streamText`:
92
+ In the route that calls `streamText`, enable the OpenTelemetry integration and pass the active trace ID to the browser with `messageMetadata`:
91
93
 
92
94
  ```ts
95
+ import { OpenTelemetry } from "@ai-sdk/otel";
96
+ import { openai } from "@ai-sdk/openai";
97
+ import { convertToModelMessages, streamText } from "ai";
93
98
  import { withAssistantCloudTraceMetadata } from "assistant-cloud/telemetry";
94
99
 
95
- return result.toUIMessageStreamResponse({
96
- messageMetadata: withAssistantCloudTraceMetadata(),
97
- });
100
+ export async function POST(request: Request) {
101
+ const { messages } = await request.json();
102
+ const result = streamText({
103
+ model: openai("gpt-5.6-luna"),
104
+ messages: await convertToModelMessages(messages),
105
+ telemetry: { integrations: [new OpenTelemetry()] },
106
+ });
107
+
108
+ return result.toUIMessageStreamResponse({
109
+ messageMetadata: withAssistantCloudTraceMetadata(),
110
+ });
111
+ }
98
112
  ```
99
113
 
114
+ [Traces](https://www.assistant-ui.com/docs/cloud/traces) covers the exporter options, the span filter, and how Assistant Cloud merges a trace with the browser's run report.
115
+
100
116
  ## Authentication
101
117
 
102
118
  | Mode | Required fields | Use case |
@@ -7,7 +7,7 @@ import { AssistantCloudFiles } from "./AssistantCloudFiles.js";
7
7
  import { AssistantCloudEvents } from "./AssistantCloudEvents.js";
8
8
  import { AssistantCloudScores } from "./AssistantCloudScores.js";
9
9
  //#region src/AssistantCloud.d.ts
10
- declare class AssistantCloud {
10
+ export declare class AssistantCloud {
11
11
  readonly threads: AssistantCloudThreads;
12
12
  readonly projects: AssistantCloudProjects;
13
13
  readonly auth: {
@@ -22,5 +22,4 @@ declare class AssistantCloud {
22
22
  constructor(config: AssistantCloudConfig);
23
23
  }
24
24
  //#endregion
25
- export { AssistantCloud };
26
25
  //# sourceMappingURL=AssistantCloud.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantCloud.d.ts","names":[],"sources":["../src/AssistantCloud.ts"],"mappings":";;;;;;;;;cAca;WACK,SAAO;WACP,UAAQ;WACR;;;WACA,MAAI;WACJ,OAAK;WACL,QAAM;WACN,QAAM;WACN,WAAW;WACX,cAAc,KAAK;EAEvB,YAAA,QAAQ"}
1
+ {"version":3,"file":"AssistantCloud.d.ts","names":[],"sources":["../src/AssistantCloud.ts"],"mappings":";;;;;;;;;qBAca;WACK,SAAO;WACP,UAAQ;WACR;;;WACA,MAAI;WACJ,OAAK;WACL,QAAM;WACN,QAAM;WACN,WAAW;WACX,cAAc,KAAK;EAEvB,YAAA,QAAQ"}
@@ -1,11 +1,11 @@
1
1
  import { AssistantCloudAuthStrategy } from "./AssistantCloudAuthStrategy.js";
2
2
  import { AssistantCloudRunReport } from "./AssistantCloudRuns.js";
3
3
  //#region src/AssistantCloudAPI.d.ts
4
- type SdkIdentity = {
4
+ export type SdkIdentity = {
5
5
  name: string;
6
6
  version: string;
7
7
  };
8
- type AssistantCloudTelemetryConfig = {
8
+ export type AssistantCloudTelemetryConfig = {
9
9
  /**
10
10
  * Enables Assistant Cloud telemetry. Defaults to `true`. Set to `false` to
11
11
  * disable both run reports and engagement events.
@@ -27,7 +27,7 @@ type AssistantCloudTelemetryConfig = {
27
27
  */
28
28
  beforeReport?: (report: AssistantCloudRunReport) => AssistantCloudRunReport | null;
29
29
  };
30
- type AssistantCloudConfig = ({
30
+ export type AssistantCloudConfig = ({
31
31
  baseUrl: string;
32
32
  authToken: () => Promise<string | null>;
33
33
  } | {
@@ -55,7 +55,7 @@ type AssistantCloudConfig = ({
55
55
  */
56
56
  telemetry?: boolean | AssistantCloudTelemetryConfig;
57
57
  };
58
- declare class CloudAPIError extends Error {
58
+ export declare class CloudAPIError extends Error {
59
59
  readonly status: number;
60
60
  readonly code?: string;
61
61
  readonly details?: Record<string, unknown>;
@@ -68,7 +68,7 @@ type MakeRequestOptions = {
68
68
  body?: object | undefined;
69
69
  keepalive?: boolean | undefined;
70
70
  };
71
- declare class AssistantCloudAPI {
71
+ export declare class AssistantCloudAPI {
72
72
  _auth: AssistantCloudAuthStrategy;
73
73
  _baseUrl: string;
74
74
  readonly registerSdk: (sdk: SdkIdentity) => void;
@@ -79,5 +79,4 @@ declare class AssistantCloudAPI {
79
79
  makeRequest(endpoint: string, options?: MakeRequestOptions): Promise<any>;
80
80
  }
81
81
  //#endregion
82
- export { AssistantCloudAPI, AssistantCloudConfig, AssistantCloudTelemetryConfig, CloudAPIError, SdkIdentity };
83
82
  //# sourceMappingURL=AssistantCloudAPI.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantCloudAPI.d.ts","names":[],"sources":["../src/AssistantCloudAPI.ts"],"mappings":";;;KAUY;EACV;EACA;;KAGU;;;;;EAKV;;;;;;EAMA;EACA;EACA;EACA;;;;;;EAMA,gBACE,QAAQ,4BACL;;KAGK;EAEN;EACA,iBAAiB;;EAGjB;EACA;EACA;EACA;;EAGA;EACA;;;;;;;;;;;;;;;;EAiBJ,sBAAsB;;cAGX,sBAAsB;WACjB;WACA;WACA,UAAU;EAGxB,YAAA,iBACA,gBACA,eACA,UAAU;;KAUT;EACH;EACA,UAAU;EACV,QAAQ;EACR;EACA;;cAKW;EACJ,OAAO;EACP;WACS,cAAc,KAAK;WACnB;EAEJ,YAAA,QAAQ;EAuCP,kBAAc;EAId,eACX,kBACA,UAAS,qBAAuB,QAAA;EAkErB,YAAY,kBAAkB,UAAS,qBAAuB"}
1
+ {"version":3,"file":"AssistantCloudAPI.d.ts","names":[],"sources":["../src/AssistantCloudAPI.ts"],"mappings":";;;YAUY;EACV;EACA;;YAGU;;;;;EAKV;;;;;;EAMA;EACA;EACA;EACA;;;;;;EAMA,gBACE,QAAQ,4BACL;;YAGK;EAEN;EACA,iBAAiB;;EAGjB;EACA;EACA;EACA;;EAGA;EACA;;;;;;;;;;;;;;;;EAiBJ,sBAAsB;;qBAGX,sBAAsB;WACjB;WACA;WACA,UAAU;EAGxB,YAAA,iBACA,gBACA,eACA,UAAU;;KAUT;EACH;EACA,UAAU;EACV,QAAQ;EACR;EACA;;qBAKW;EACJ,OAAO;EACP;WACS,cAAc,KAAK;WACnB;EAEJ,YAAA,QAAQ;EAuCP,kBAAc;EAId,eACX,kBACA,UAAS,qBAAuB,QAAA;EAkErB,YAAY,kBAAkB,UAAS,qBAAuB"}
@@ -1,10 +1,10 @@
1
1
  //#region src/AssistantCloudAuthStrategy.d.ts
2
- type AssistantCloudAuthStrategy = {
2
+ export type AssistantCloudAuthStrategy = {
3
3
  readonly strategy: "anon" | "jwt" | "api-key";
4
4
  getAuthHeaders(): Promise<Record<string, string> | false>;
5
5
  readAuthHeaders(headers: Headers): void;
6
6
  };
7
- declare class AssistantCloudJWTAuthStrategy implements AssistantCloudAuthStrategy {
7
+ export declare class AssistantCloudJWTAuthStrategy implements AssistantCloudAuthStrategy {
8
8
  #private;
9
9
  readonly strategy = "jwt";
10
10
  private cachedToken;
@@ -15,17 +15,17 @@ declare class AssistantCloudJWTAuthStrategy implements AssistantCloudAuthStrateg
15
15
  private fetchAuthHeaders;
16
16
  readAuthHeaders(headers: Headers): void;
17
17
  }
18
- declare class AssistantCloudAPIKeyAuthStrategy implements AssistantCloudAuthStrategy {
18
+ export declare class AssistantCloudAPIKeyAuthStrategy implements AssistantCloudAuthStrategy {
19
19
  #private;
20
20
  readonly strategy = "api-key";
21
21
  constructor(apiKey: string, userId: string, workspaceId: string);
22
22
  getAuthHeaders(): Promise<Record<string, string>>;
23
23
  readAuthHeaders(): void;
24
24
  }
25
- declare const normalizeBaseUrl: (baseUrl: string) => string;
25
+ export declare const normalizeBaseUrl: (baseUrl: string) => string;
26
26
  /** The refresh token of the anonymous identity this browser holds for `baseUrl`, or null when it has none. */
27
- declare const readAnonymousRefreshToken: (baseUrl: string) => string | null;
28
- declare class AssistantCloudAnonymousAuthStrategy implements AssistantCloudAuthStrategy {
27
+ export declare const readAnonymousRefreshToken: (baseUrl: string) => string | null;
28
+ export declare class AssistantCloudAnonymousAuthStrategy implements AssistantCloudAuthStrategy {
29
29
  readonly strategy = "anon";
30
30
  private baseUrl;
31
31
  private jwtStrategy;
@@ -34,5 +34,4 @@ declare class AssistantCloudAnonymousAuthStrategy implements AssistantCloudAuthS
34
34
  readAuthHeaders(headers: Headers): void;
35
35
  }
36
36
  //#endregion
37
- export { AssistantCloudAPIKeyAuthStrategy, AssistantCloudAnonymousAuthStrategy, AssistantCloudAuthStrategy, AssistantCloudJWTAuthStrategy, normalizeBaseUrl, readAnonymousRefreshToken };
38
37
  //# sourceMappingURL=AssistantCloudAuthStrategy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantCloudAuthStrategy.d.ts","names":[],"sources":["../src/AssistantCloudAuthStrategy.ts"],"mappings":";KAkCY;WACD;EACT,kBAAkB,QAAQ;EAC1B,gBAAgB,SAAS;;cAmFd,yCAAyC;;WACpC;UAER;UACA;UACA;EAGI,YAAA,yBAAyB;EAIxB,kBAAkB,QAAQ;UA0BzB;EAWP,gBAAgB,SAAS;;cAerB,4CAA4C;;WACvC;EAMJ,YAAA,gBAAgB,gBAAgB;EAM/B,kBAAkB,QAAQ;EAQhC;;cAuDI,mBAAoB;;cAMpB,4BAA6B;cAwE7B,+CAA+C;WAC1C;UAER;UACA;EAEI,YAAA;EAwFC,kBAAkB,QAAQ;EAIhC,gBAAgB,SAAS"}
1
+ {"version":3,"file":"AssistantCloudAuthStrategy.d.ts","names":[],"sources":["../src/AssistantCloudAuthStrategy.ts"],"mappings":";YAkCY;WACD;EACT,kBAAkB,QAAQ;EAC1B,gBAAgB,SAAS;;qBAmFd,yCAAyC;;WACpC;UAER;UACA;UACA;EAGI,YAAA,yBAAyB;EAIxB,kBAAkB,QAAQ;UA0BzB;EAWP,gBAAgB,SAAS;;qBAerB,4CAA4C;;WACvC;EAMJ,YAAA,gBAAgB,gBAAgB;EAM/B,kBAAkB,QAAQ;EAQhC;;qBAuDI,mBAAoB;;qBAMpB,4BAA6B;qBAwE7B,+CAA+C;WAC1C;UAER;UACA;EAEI,YAAA;EAwFC,kBAAkB,QAAQ;EAIhC,gBAAgB,SAAS"}
@@ -3,11 +3,10 @@ import { AssistantCloudAPI } from "./AssistantCloudAPI.js";
3
3
  type AssistantCloudAuthTokensCreateResponse = {
4
4
  token: string;
5
5
  };
6
- declare class AssistantCloudAuthTokens {
6
+ export declare class AssistantCloudAuthTokens {
7
7
  private cloud;
8
8
  constructor(cloud: AssistantCloudAPI);
9
9
  create(): Promise<AssistantCloudAuthTokensCreateResponse>;
10
10
  }
11
11
  //#endregion
12
- export { AssistantCloudAuthTokens };
13
12
  //# sourceMappingURL=AssistantCloudAuthTokens.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantCloudAuthTokens.d.ts","names":[],"sources":["../src/AssistantCloudAuthTokens.ts"],"mappings":";;KAGK;EACH;;cAGW;UACH;EAEI,YAAA,OAAO;EAIN,UAAU,QAAQ"}
1
+ {"version":3,"file":"AssistantCloudAuthTokens.d.ts","names":[],"sources":["../src/AssistantCloudAuthTokens.ts"],"mappings":";;KAGK;EACH;;qBAGW;UACH;EAEI,YAAA,OAAO;EAIN,UAAU,QAAQ"}
@@ -1,7 +1,7 @@
1
1
  import { AssistantCloudAPI } from "./AssistantCloudAPI.js";
2
2
  //#region src/AssistantCloudEvents.d.ts
3
- type AssistantCloudEventKind = "message_sent" | "message_edited" | "run_stopped" | "message_regenerated" | "message_copied" | "branch_switched" | "suggestions_shown" | "suggestion_clicked" | "attachment_added" | "attachment_failed" | "thread_switched" | "tool_approved" | "tool_rejected" | "speech_started" | "voice_started" | "error_shown";
4
- type AssistantCloudEvent = {
3
+ export type AssistantCloudEventKind = "message_sent" | "message_edited" | "run_stopped" | "message_regenerated" | "message_copied" | "branch_switched" | "suggestions_shown" | "suggestion_clicked" | "attachment_added" | "attachment_failed" | "thread_switched" | "tool_approved" | "tool_rejected" | "speech_started" | "voice_started" | "error_shown";
4
+ export type AssistantCloudEvent = {
5
5
  kind: AssistantCloudEventKind;
6
6
  thread_id?: string | undefined;
7
7
  message_id?: string | undefined;
@@ -9,7 +9,7 @@ type AssistantCloudEvent = {
9
9
  value?: number | undefined;
10
10
  props?: Readonly<Record<string, string | number | boolean>> | undefined;
11
11
  };
12
- declare class AssistantCloudEvents {
12
+ export declare class AssistantCloudEvents {
13
13
  private buffer;
14
14
  private timer;
15
15
  private flushing;
@@ -28,5 +28,4 @@ declare class AssistantCloudEvents {
28
28
  private clearFlushTimer;
29
29
  }
30
30
  //#endregion
31
- export { AssistantCloudEvent, AssistantCloudEventKind, AssistantCloudEvents };
32
31
  //# sourceMappingURL=AssistantCloudEvents.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantCloudEvents.d.ts","names":[],"sources":["../src/AssistantCloudEvents.ts"],"mappings":";;KAEY;KAkBA;EACV,MAAM;EACN;EACA;EACA;EACA;EACA,QAAQ,SAAS;;cAON;UACH;UACA;UACA;mBAES;mBACA;UAET;EAEI,YAAA,OAAO,mBAAmB;EAK/B,MAAM,OAAO;UAaZ;UAaA;EAOD;UAMC;UAMA;UAyBM;UAkBN;UAQA"}
1
+ {"version":3,"file":"AssistantCloudEvents.d.ts","names":[],"sources":["../src/AssistantCloudEvents.ts"],"mappings":";;YAEY;YAkBA;EACV,MAAM;EACN;EACA;EACA;EACA;EACA,QAAQ,SAAS;;qBAON;UACH;UACA;UACA;mBAES;mBACA;UAET;EAEI,YAAA,OAAO,mBAAmB;EAK/B,MAAM,OAAO;UAaZ;UAaA;EAOD;UAMC;UAMA;UAyBM;UAkBN;UAQA"}
@@ -109,7 +109,7 @@ const isNonNegativeInteger = (value) => value !== void 0 && Number.isInteger(val
109
109
  const normalizeProps = (props) => {
110
110
  if (!props) return void 0;
111
111
  const entries = Object.entries(props);
112
- if (entries.some(([, value]) => typeof value === "string" && value.length > 256 || typeof value !== "string" && typeof value !== "number" && typeof value !== "boolean")) return;
112
+ if (entries.some(([, value]) => typeof value === "string" && value.length > 256 || typeof value === "number" && !Number.isFinite(value) || typeof value !== "string" && typeof value !== "number" && typeof value !== "boolean")) return;
113
113
  const value = Object.fromEntries(entries);
114
114
  return new TextEncoder().encode(JSON.stringify(value)).byteLength <= 1024 ? value : void 0;
115
115
  };
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantCloudEvents.js","names":[],"sources":["../src/AssistantCloudEvents.ts"],"sourcesContent":["import type { AssistantCloudAPI } from \"./AssistantCloudAPI\";\n\nexport type AssistantCloudEventKind =\n | \"message_sent\"\n | \"message_edited\"\n | \"run_stopped\"\n | \"message_regenerated\"\n | \"message_copied\"\n | \"branch_switched\"\n | \"suggestions_shown\"\n | \"suggestion_clicked\"\n | \"attachment_added\"\n | \"attachment_failed\"\n | \"thread_switched\"\n | \"tool_approved\"\n | \"tool_rejected\"\n | \"speech_started\"\n | \"voice_started\"\n | \"error_shown\";\n\nexport type AssistantCloudEvent = {\n kind: AssistantCloudEventKind;\n thread_id?: string | undefined;\n message_id?: string | undefined;\n run_id?: string | undefined;\n value?: number | undefined;\n props?: Readonly<Record<string, string | number | boolean>> | undefined;\n};\n\nconst FLUSH_SIZE = 20;\nconst MAX_BATCH_SIZE = 50;\nconst FLUSH_DELAY_MS = 2_000;\n\nexport class AssistantCloudEvents {\n private buffer: AssistantCloudEvent[] = [];\n private timer: ReturnType<typeof setTimeout> | undefined;\n private flushing: Promise<void> | undefined;\n\n private readonly cloud: AssistantCloudAPI;\n private readonly isEnabled: () => boolean;\n\n private listening = false;\n\n constructor(cloud: AssistantCloudAPI, isEnabled: () => boolean) {\n this.cloud = cloud;\n this.isEnabled = isEnabled;\n }\n\n public track(event: AssistantCloudEvent): void {\n if (!this.isEnabled()) return;\n\n this.listen();\n this.buffer.push(normalizeEvent(event));\n if (this.buffer.length >= FLUSH_SIZE) {\n void this.flush();\n return;\n }\n\n this.scheduleFlush();\n }\n\n private listen(): void {\n if (\n this.listening ||\n typeof window === \"undefined\" ||\n typeof document === \"undefined\"\n ) {\n return;\n }\n this.listening = true;\n window.addEventListener(\"pagehide\", this.flush);\n document.addEventListener(\"visibilitychange\", this.onVisibilityChange);\n }\n\n private unlisten(): void {\n if (!this.listening) return;\n this.listening = false;\n window.removeEventListener(\"pagehide\", this.flush);\n document.removeEventListener(\"visibilitychange\", this.onVisibilityChange);\n }\n\n public dispose(): void {\n this.unlisten();\n this.clearFlushTimer();\n void this.flush();\n }\n\n private onVisibilityChange = () => {\n if (document.visibilityState === \"hidden\") {\n void this.flush();\n }\n };\n\n private flush = async (): Promise<void> => {\n if (!this.isEnabled()) {\n this.buffer = [];\n this.clearFlushTimer();\n this.unlisten();\n return;\n }\n if (this.flushing) return this.flushing;\n\n this.clearFlushTimer();\n const task = this.flushPending();\n this.flushing = task;\n void task.then(() => {\n if (this.flushing !== task) return;\n this.flushing = undefined;\n if (this.buffer.length === 0) {\n this.clearFlushTimer();\n this.unlisten();\n } else {\n void this.flush();\n }\n });\n return task;\n };\n\n private async flushPending(): Promise<void> {\n while (this.buffer.length > 0) {\n if (!this.isEnabled()) {\n this.buffer = [];\n return;\n }\n\n const events = this.buffer.splice(0, MAX_BATCH_SIZE);\n try {\n await this.cloud.makeRequest(\"/events\", {\n method: \"POST\",\n body: { events },\n keepalive: true,\n });\n } catch {}\n }\n }\n\n private scheduleFlush() {\n if (this.timer !== undefined) return;\n this.timer = setTimeout(() => {\n this.timer = undefined;\n void this.flush();\n }, FLUSH_DELAY_MS);\n }\n\n private clearFlushTimer() {\n if (this.timer === undefined) return;\n clearTimeout(this.timer);\n this.timer = undefined;\n }\n}\n\nconst normalizeEvent = (event: AssistantCloudEvent): AssistantCloudEvent => {\n const props = normalizeProps(event.props);\n return {\n kind: event.kind,\n ...(normalizeId(event.thread_id) ? { thread_id: event.thread_id } : {}),\n ...(normalizeId(event.message_id) ? { message_id: event.message_id } : {}),\n ...(normalizeId(event.run_id) ? { run_id: event.run_id } : {}),\n ...(isNonNegativeInteger(event.value) ? { value: event.value } : {}),\n ...(props ? { props } : {}),\n };\n};\n\nconst normalizeId = (value: string | undefined): string | undefined =>\n value && value.length <= 48 ? value : undefined;\n\nconst isNonNegativeInteger = (value: number | undefined): value is number =>\n value !== undefined && Number.isInteger(value) && value >= 0;\n\nconst normalizeProps = (\n props: AssistantCloudEvent[\"props\"],\n): AssistantCloudEvent[\"props\"] => {\n if (!props) return undefined;\n const entries = Object.entries(props);\n if (\n entries.some(\n ([, value]) =>\n (typeof value === \"string\" && value.length > 256) ||\n (typeof value !== \"string\" &&\n typeof value !== \"number\" &&\n typeof value !== \"boolean\"),\n )\n ) {\n return undefined;\n }\n const value = Object.fromEntries(entries);\n return new TextEncoder().encode(JSON.stringify(value)).byteLength <= 1024\n ? value\n : undefined;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"AssistantCloudEvents.js","names":[],"sources":["../src/AssistantCloudEvents.ts"],"sourcesContent":["import type { AssistantCloudAPI } from \"./AssistantCloudAPI\";\n\nexport type AssistantCloudEventKind =\n | \"message_sent\"\n | \"message_edited\"\n | \"run_stopped\"\n | \"message_regenerated\"\n | \"message_copied\"\n | \"branch_switched\"\n | \"suggestions_shown\"\n | \"suggestion_clicked\"\n | \"attachment_added\"\n | \"attachment_failed\"\n | \"thread_switched\"\n | \"tool_approved\"\n | \"tool_rejected\"\n | \"speech_started\"\n | \"voice_started\"\n | \"error_shown\";\n\nexport type AssistantCloudEvent = {\n kind: AssistantCloudEventKind;\n thread_id?: string | undefined;\n message_id?: string | undefined;\n run_id?: string | undefined;\n value?: number | undefined;\n props?: Readonly<Record<string, string | number | boolean>> | undefined;\n};\n\nconst FLUSH_SIZE = 20;\nconst MAX_BATCH_SIZE = 50;\nconst FLUSH_DELAY_MS = 2_000;\n\nexport class AssistantCloudEvents {\n private buffer: AssistantCloudEvent[] = [];\n private timer: ReturnType<typeof setTimeout> | undefined;\n private flushing: Promise<void> | undefined;\n\n private readonly cloud: AssistantCloudAPI;\n private readonly isEnabled: () => boolean;\n\n private listening = false;\n\n constructor(cloud: AssistantCloudAPI, isEnabled: () => boolean) {\n this.cloud = cloud;\n this.isEnabled = isEnabled;\n }\n\n public track(event: AssistantCloudEvent): void {\n if (!this.isEnabled()) return;\n\n this.listen();\n this.buffer.push(normalizeEvent(event));\n if (this.buffer.length >= FLUSH_SIZE) {\n void this.flush();\n return;\n }\n\n this.scheduleFlush();\n }\n\n private listen(): void {\n if (\n this.listening ||\n typeof window === \"undefined\" ||\n typeof document === \"undefined\"\n ) {\n return;\n }\n this.listening = true;\n window.addEventListener(\"pagehide\", this.flush);\n document.addEventListener(\"visibilitychange\", this.onVisibilityChange);\n }\n\n private unlisten(): void {\n if (!this.listening) return;\n this.listening = false;\n window.removeEventListener(\"pagehide\", this.flush);\n document.removeEventListener(\"visibilitychange\", this.onVisibilityChange);\n }\n\n public dispose(): void {\n this.unlisten();\n this.clearFlushTimer();\n void this.flush();\n }\n\n private onVisibilityChange = () => {\n if (document.visibilityState === \"hidden\") {\n void this.flush();\n }\n };\n\n private flush = async (): Promise<void> => {\n if (!this.isEnabled()) {\n this.buffer = [];\n this.clearFlushTimer();\n this.unlisten();\n return;\n }\n if (this.flushing) return this.flushing;\n\n this.clearFlushTimer();\n const task = this.flushPending();\n this.flushing = task;\n void task.then(() => {\n if (this.flushing !== task) return;\n this.flushing = undefined;\n if (this.buffer.length === 0) {\n this.clearFlushTimer();\n this.unlisten();\n } else {\n void this.flush();\n }\n });\n return task;\n };\n\n private async flushPending(): Promise<void> {\n while (this.buffer.length > 0) {\n if (!this.isEnabled()) {\n this.buffer = [];\n return;\n }\n\n const events = this.buffer.splice(0, MAX_BATCH_SIZE);\n try {\n await this.cloud.makeRequest(\"/events\", {\n method: \"POST\",\n body: { events },\n keepalive: true,\n });\n } catch {}\n }\n }\n\n private scheduleFlush() {\n if (this.timer !== undefined) return;\n this.timer = setTimeout(() => {\n this.timer = undefined;\n void this.flush();\n }, FLUSH_DELAY_MS);\n }\n\n private clearFlushTimer() {\n if (this.timer === undefined) return;\n clearTimeout(this.timer);\n this.timer = undefined;\n }\n}\n\nconst normalizeEvent = (event: AssistantCloudEvent): AssistantCloudEvent => {\n const props = normalizeProps(event.props);\n return {\n kind: event.kind,\n ...(normalizeId(event.thread_id) ? { thread_id: event.thread_id } : {}),\n ...(normalizeId(event.message_id) ? { message_id: event.message_id } : {}),\n ...(normalizeId(event.run_id) ? { run_id: event.run_id } : {}),\n ...(isNonNegativeInteger(event.value) ? { value: event.value } : {}),\n ...(props ? { props } : {}),\n };\n};\n\nconst normalizeId = (value: string | undefined): string | undefined =>\n value && value.length <= 48 ? value : undefined;\n\nconst isNonNegativeInteger = (value: number | undefined): value is number =>\n value !== undefined && Number.isInteger(value) && value >= 0;\n\nconst normalizeProps = (\n props: AssistantCloudEvent[\"props\"],\n): AssistantCloudEvent[\"props\"] => {\n if (!props) return undefined;\n const entries = Object.entries(props);\n if (\n entries.some(\n ([, value]) =>\n (typeof value === \"string\" && value.length > 256) ||\n (typeof value === \"number\" && !Number.isFinite(value)) ||\n (typeof value !== \"string\" &&\n typeof value !== \"number\" &&\n typeof value !== \"boolean\"),\n )\n ) {\n return undefined;\n }\n const value = Object.fromEntries(entries);\n return new TextEncoder().encode(JSON.stringify(value)).byteLength <= 1024\n ? value\n : undefined;\n};\n"],"mappings":"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"}
@@ -19,12 +19,12 @@ type GeneratePresignedUploadUrlResponse = {
19
19
  publicUrl: string;
20
20
  key?: string;
21
21
  };
22
- type GeneratePresignedDownloadUrlResponse = {
22
+ export type GeneratePresignedDownloadUrlResponse = {
23
23
  signedUrl: string;
24
24
  expiresAt: string;
25
25
  key: string;
26
26
  };
27
- declare class AssistantCloudFiles {
27
+ export declare class AssistantCloudFiles {
28
28
  private cloud;
29
29
  constructor(cloud: AssistantCloudAPI);
30
30
  pdfToImages(body: PdfToImagesRequestBody): Promise<PdfToImagesResponse>;
@@ -36,5 +36,4 @@ declare class AssistantCloudFiles {
36
36
  }): Promise<GeneratePresignedDownloadUrlResponse>;
37
37
  }
38
38
  //#endregion
39
- export { AssistantCloudFiles, GeneratePresignedDownloadUrlResponse };
40
39
  //# sourceMappingURL=AssistantCloudFiles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantCloudFiles.d.ts","names":[],"sources":["../src/AssistantCloudFiles.ts"],"mappings":";;KAQK;EACH;EACA;;KAGG;EACH;EACA;EACA;;KAGG;EACH;;KAGG;EACH;EACA;EACA;EACA;EACA;;KAGU;EACV;EACA;EACA;;cAGW;UACH;EAEI,YAAA,OAAO;EAIN,YACX,MAAM,yBACL,QAAQ;EAyBE,2BACX,MAAM,wCACL,QAAQ;EAqCE,6BACX;IAAQ;;IAAkB;MACzB,QAAQ"}
1
+ {"version":3,"file":"AssistantCloudFiles.d.ts","names":[],"sources":["../src/AssistantCloudFiles.ts"],"mappings":";;KAQK;EACH;EACA;;KAGG;EACH;EACA;EACA;;KAGG;EACH;;KAGG;EACH;EACA;EACA;EACA;EACA;;YAGU;EACV;EACA;EACA;;qBAGW;UACH;EAEI,YAAA,OAAO;EAIN,YACX,MAAM,yBACL,QAAQ;EAyBE,2BACX,MAAM,wCACL,QAAQ;EAqCE,6BACX;IAAQ;;IAAkB;MACzB,QAAQ"}
@@ -9,11 +9,10 @@ type AssistantCloudProjectThreadMessageListQuery = {
9
9
  type AssistantCloudProjectThreadMessageListResponse = {
10
10
  messages: CloudMessage[];
11
11
  };
12
- declare class AssistantCloudProjectThreadMessages {
12
+ export declare class AssistantCloudProjectThreadMessages {
13
13
  private cloud;
14
14
  constructor(cloud: AssistantCloudAPI);
15
15
  list(threadId: string, query?: AssistantCloudProjectThreadMessageListQuery): Promise<AssistantCloudProjectThreadMessageListResponse>;
16
16
  }
17
17
  //#endregion
18
- export { AssistantCloudProjectThreadMessages };
19
18
  //# sourceMappingURL=AssistantCloudProjectThreadMessages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantCloudProjectThreadMessages.d.ts","names":[],"sources":["../src/AssistantCloudProjectThreadMessages.ts"],"mappings":";;;KAOK;EACH;EACA;EACA;;KAGG;EACH,UAAU;;cAGC;UACH;EAEI,YAAA,OAAO;EAIN,KACX,kBACA,QAAQ,8CACP,QAAQ"}
1
+ {"version":3,"file":"AssistantCloudProjectThreadMessages.d.ts","names":[],"sources":["../src/AssistantCloudProjectThreadMessages.ts"],"mappings":";;;KAOK;EACH;EACA;EACA;;KAGG;EACH,UAAU;;qBAGC;UACH;EAEI,YAAA,OAAO;EAIN,KACX,kBACA,QAAQ,8CACP,QAAQ"}
@@ -10,12 +10,11 @@ type AssistantCloudProjectThreadsListQuery = {
10
10
  type AssistantCloudProjectThreadsListResponse = {
11
11
  threads: CloudThread[];
12
12
  };
13
- declare class AssistantCloudProjectThreads {
13
+ export declare class AssistantCloudProjectThreads {
14
14
  readonly messages: AssistantCloudProjectThreadMessages;
15
15
  private cloud;
16
16
  constructor(cloud: AssistantCloudAPI);
17
17
  list(query?: AssistantCloudProjectThreadsListQuery): Promise<AssistantCloudProjectThreadsListResponse>;
18
18
  }
19
19
  //#endregion
20
- export { AssistantCloudProjectThreads };
21
20
  //# sourceMappingURL=AssistantCloudProjectThreads.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantCloudProjectThreads.d.ts","names":[],"sources":["../src/AssistantCloudProjectThreads.ts"],"mappings":";;;;KAKK;EACH;EACA;EACA;;KAGG;EACH,SAAS;;cAGE;WACK,UAAU;UAElB;EAEI,YAAA,OAAO;EAKN,KACX,QAAQ,wCACP,QAAQ"}
1
+ {"version":3,"file":"AssistantCloudProjectThreads.d.ts","names":[],"sources":["../src/AssistantCloudProjectThreads.ts"],"mappings":";;;;KAKK;EACH;EACA;EACA;;KAGG;EACH,SAAS;;qBAGE;WACK,UAAU;UAElB;EAEI,YAAA,OAAO;EAKN,KACX,QAAQ,wCACP,QAAQ"}
@@ -1,10 +1,9 @@
1
1
  import { AssistantCloudAPI } from "./AssistantCloudAPI.js";
2
2
  import { AssistantCloudProjectThreads } from "./AssistantCloudProjectThreads.js";
3
3
  //#region src/AssistantCloudProjects.d.ts
4
- declare class AssistantCloudProjects {
4
+ export declare class AssistantCloudProjects {
5
5
  readonly threads: AssistantCloudProjectThreads;
6
6
  constructor(cloud: AssistantCloudAPI);
7
7
  }
8
8
  //#endregion
9
- export { AssistantCloudProjects };
10
9
  //# sourceMappingURL=AssistantCloudProjects.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantCloudProjects.d.ts","names":[],"sources":["../src/AssistantCloudProjects.ts"],"mappings":";;;cAGa;WACK,SAAS;EAEb,YAAA,OAAO"}
1
+ {"version":3,"file":"AssistantCloudProjects.d.ts","names":[],"sources":["../src/AssistantCloudProjects.ts"],"mappings":";;;qBAGa;WACK,SAAS;EAEb,YAAA,OAAO"}
@@ -7,7 +7,7 @@ type AssistantCloudRunsStreamBody = {
7
7
  assistant_id: "system/thread_title";
8
8
  messages: readonly unknown[];
9
9
  };
10
- type AssistantCloudRunReport = {
10
+ export type AssistantCloudRunReport = {
11
11
  thread_id: string;
12
12
  status: "completed" | "incomplete" | "error";
13
13
  outcome_type?: "aborted" | "disconnected" | "length" | "content_filter";
@@ -42,7 +42,7 @@ type AssistantCloudRunReport = {
42
42
  output_text?: string;
43
43
  metadata?: Record<string, unknown>;
44
44
  };
45
- declare class AssistantCloudRuns {
45
+ export declare class AssistantCloudRuns {
46
46
  private cloud;
47
47
  constructor(cloud: AssistantCloudAPI);
48
48
  __internal_getAssistantOptions(assistantId: string): {
@@ -63,5 +63,4 @@ declare class AssistantCloudRuns {
63
63
  }>;
64
64
  }
65
65
  //#endregion
66
- export { AssistantCloudRunReport, AssistantCloudRuns };
67
66
  //# sourceMappingURL=AssistantCloudRuns.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantCloudRuns.d.ts","names":[],"sources":["../src/AssistantCloudRuns.ts"],"mappings":";;;;KASK;EACH;EACA;EACA;;KAMU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,aAAa;EACb;IACE;IACA;IACA;IACA;IACA,aAAa;IACb;IACA;IACA;;EAEF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WAAW;;cAGA;UACH;EAEI,YAAA,OAAO;EAIZ,+BAA+B;;;;;;;;;;;;EAoBzB,OACX,MAAM,+BACL,QAAQ;EAkCE,OACX,MAAM,0BACL;IAAU"}
1
+ {"version":3,"file":"AssistantCloudRuns.d.ts","names":[],"sources":["../src/AssistantCloudRuns.ts"],"mappings":";;;;KASK;EACH;EACA;EACA;;YAMU;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,aAAa;EACb;IACE;IACA;IACA;IACA;IACA,aAAa;IACb;IACA;IACA;;EAEF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WAAW;;qBAGA;UACH;EAEI,YAAA,OAAO;EAIZ,+BAA+B;;;;;;;;;;;;EAoBzB,OACX,MAAM,+BACL,QAAQ;EAkCE,OACX,MAAM,0BACL;IAAU"}
@@ -1,6 +1,6 @@
1
1
  import { AssistantCloudAPI } from "./AssistantCloudAPI.js";
2
2
  //#region src/AssistantCloudScores.d.ts
3
- type AssistantCloudScoreBody = {
3
+ export type AssistantCloudScoreBody = {
4
4
  name: string;
5
5
  data_type: "numeric" | "categorical" | "boolean";
6
6
  value?: number | boolean;
@@ -10,18 +10,17 @@ type AssistantCloudScoreBody = {
10
10
  message_id?: string;
11
11
  run_id?: string;
12
12
  };
13
- type AssistantCloudScoreResponse = {
13
+ export type AssistantCloudScoreResponse = {
14
14
  score_id: string;
15
15
  name: string;
16
16
  data_type: "numeric" | "categorical" | "boolean";
17
17
  value: number | null;
18
18
  string_value: string | null;
19
19
  };
20
- declare class AssistantCloudScores {
20
+ export declare class AssistantCloudScores {
21
21
  private cloud;
22
22
  constructor(cloud: AssistantCloudAPI);
23
23
  create(body: AssistantCloudScoreBody): Promise<AssistantCloudScoreResponse>;
24
24
  }
25
25
  //#endregion
26
- export { AssistantCloudScoreBody, AssistantCloudScoreResponse, AssistantCloudScores };
27
26
  //# sourceMappingURL=AssistantCloudScores.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantCloudScores.d.ts","names":[],"sources":["../src/AssistantCloudScores.ts"],"mappings":";;KAWY;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;KAGU;EACV;EACA;EACA;EACA;EACA;;cAGW;UACH;EAEI,YAAA,OAAO;EAIN,OACX,MAAM,0BACL,QAAQ"}
1
+ {"version":3,"file":"AssistantCloudScores.d.ts","names":[],"sources":["../src/AssistantCloudScores.ts"],"mappings":";;YAWY;EACV;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;YAGU;EACV;EACA;EACA;EACA;EACA;;qBAGW;UACH;EAEI,YAAA,OAAO;EAIN,OACX,MAAM,0BACL,QAAQ"}
@@ -1,7 +1,7 @@
1
1
  import { AssistantCloudAPI } from "./AssistantCloudAPI.js";
2
2
  import { ReadonlyJSONObject } from "assistant-stream/utils";
3
3
  //#region src/AssistantCloudThreadMessages.d.ts
4
- type CloudMessage = {
4
+ export type CloudMessage = {
5
5
  id: string;
6
6
  parent_id: string | null;
7
7
  height: number;
@@ -29,15 +29,17 @@ type AssistantCloudMessageCreateResponse = {
29
29
  type AssistantCloudThreadMessageUpdateBody = {
30
30
  content: ReadonlyJSONObject;
31
31
  };
32
- type AssistantCloudThreadMessageFeedbackBody = {
32
+ export type AssistantCloudThreadMessageFeedbackBody = {
33
33
  type: "positive" | "negative";
34
+ comment?: string;
34
35
  };
35
- type AssistantCloudThreadMessageFeedbackResponse = {
36
+ export type AssistantCloudThreadMessageFeedbackResponse = {
36
37
  feedback_id: string;
37
38
  type: "positive" | "negative";
39
+ comment?: string | null;
38
40
  };
39
- declare const decodeCloudMessage: (value: unknown, field: string) => CloudMessage;
40
- declare class AssistantCloudThreadMessages {
41
+ export declare const decodeCloudMessage: (value: unknown, field: string) => CloudMessage;
42
+ export declare class AssistantCloudThreadMessages {
41
43
  private cloud;
42
44
  constructor(cloud: AssistantCloudAPI);
43
45
  list(threadId: string, query?: AssistantCloudThreadMessageListQuery): Promise<AssistantCloudThreadMessageListResponse>;
@@ -46,5 +48,4 @@ declare class AssistantCloudThreadMessages {
46
48
  feedback(threadId: string, messageId: string, body: AssistantCloudThreadMessageFeedbackBody): Promise<AssistantCloudThreadMessageFeedbackResponse>;
47
49
  }
48
50
  //#endregion
49
- export { AssistantCloudThreadMessageFeedbackBody, AssistantCloudThreadMessageFeedbackResponse, AssistantCloudThreadMessages, CloudMessage, decodeCloudMessage };
50
51
  //# sourceMappingURL=AssistantCloudThreadMessages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantCloudThreadMessages.d.ts","names":[],"sources":["../src/AssistantCloudThreadMessages.ts"],"mappings":";;;KAaY;EACV;EACA;EACA;EACA,YAAY;EACZ,YAAY;EACZ;EACA,SAAS;;KAGN;EACH;EACA;EACA;;KAGG;EACH,UAAU;;KAGP;EACH;EACA;EACA,SAAS;;KAGN;EACH;;KAGG;EACH,SAAS;;KAKC;EACV;;KAGU;EACV;EACA;;cAGW,qBACX,gBACA,kBACC;cAaU;UACH;EAEI,YAAA,OAAO;EAIN,KACX,kBACA,QAAQ,uCACP,QAAQ;EAiBE,OACX,kBACA,MAAM,wCACL,QAAQ;EAcE,OACX,kBACA,mBACA,MAAM,wCACL;EAOU,SACX,kBACA,mBACA,MAAM,0CACL,QAAQ"}
1
+ {"version":3,"file":"AssistantCloudThreadMessages.d.ts","names":[],"sources":["../src/AssistantCloudThreadMessages.ts"],"mappings":";;;YAaY;EACV;EACA;EACA;EACA,YAAY;EACZ,YAAY;EACZ;EACA,SAAS;;KAGN;EACH;EACA;EACA;;KAGG;EACH,UAAU;;KAGP;EACH;EACA;EACA,SAAS;;KAGN;EACH;;KAGG;EACH,SAAS;;YAKC;EACV;EACA;;YAGU;EACV;EACA;EACA;;qBAGW,qBACX,gBACA,kBACC;qBAaU;UACH;EAEI,YAAA,OAAO;EAIN,KACX,kBACA,QAAQ,uCACP,QAAQ;EAiBE,OACX,kBACA,MAAM,wCACL,QAAQ;EAcE,OACX,kBACA,mBACA,MAAM,wCACL;EAOU,SACX,kBACA,mBACA,MAAM,0CACL,QAAQ"}
@@ -36,13 +36,18 @@ var AssistantCloudThreadMessages = class {
36
36
  });
37
37
  }
38
38
  async feedback(threadId, messageId, body) {
39
+ const comment = body.comment?.trim();
39
40
  const response = readCloudRecord(await this.cloud.makeRequest(`/threads/${encodeURIComponent(threadId)}/messages/${encodeURIComponent(messageId)}/feedback`, {
40
41
  method: "POST",
41
- body
42
+ body: {
43
+ type: body.type,
44
+ ...comment ? { comment } : void 0
45
+ }
42
46
  }), "thread message feedback response");
43
47
  return {
44
48
  feedback_id: readCloudString(response.feedback_id, "feedback_id"),
45
- type: readCloudEnum(response.type, "type", MESSAGE_FEEDBACK_TYPES)
49
+ type: readCloudEnum(response.type, "type", MESSAGE_FEEDBACK_TYPES),
50
+ ..."comment" in response ? { comment: readCloudNullableString(response.comment, "comment") } : void 0
46
51
  };
47
52
  }
48
53
  };
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantCloudThreadMessages.js","names":[],"sources":["../src/AssistantCloudThreadMessages.ts"],"sourcesContent":["import type { ReadonlyJSONObject } from \"assistant-stream/utils\";\nimport type { AssistantCloudAPI } from \"./AssistantCloudAPI\";\nimport {\n readCloudArray,\n readCloudEnum,\n readCloudInteger,\n readCloudJSONObject,\n readCloudNullableString,\n readCloudRecord,\n readCloudString,\n readCloudTimestamp,\n} from \"./cloudResponse\";\n\nexport type CloudMessage = {\n id: string;\n parent_id: string | null;\n height: number;\n created_at: Date;\n updated_at: Date;\n format: \"aui/v0\" | string;\n content: ReadonlyJSONObject;\n};\n\ntype AssistantCloudThreadMessageListQuery = {\n format?: string;\n limit?: number;\n after?: string;\n};\n\ntype AssistantCloudThreadMessageListResponse = {\n messages: CloudMessage[];\n};\n\ntype AssistantCloudThreadMessageCreateBody = {\n parent_id: string | null;\n format: \"aui/v0\" | string;\n content: ReadonlyJSONObject;\n};\n\ntype AssistantCloudMessageCreateResponse = {\n message_id: string;\n};\n\ntype AssistantCloudThreadMessageUpdateBody = {\n content: ReadonlyJSONObject;\n};\n\nconst MESSAGE_FEEDBACK_TYPES = [\"positive\", \"negative\"] as const;\n\nexport type AssistantCloudThreadMessageFeedbackBody = {\n type: \"positive\" | \"negative\";\n};\n\nexport type AssistantCloudThreadMessageFeedbackResponse = {\n feedback_id: string;\n type: \"positive\" | \"negative\";\n};\n\nexport const decodeCloudMessage = (\n value: unknown,\n field: string,\n): CloudMessage => {\n const message = readCloudRecord(value, field);\n return {\n id: readCloudString(message.id, `${field}.id`),\n parent_id: readCloudNullableString(message.parent_id, `${field}.parent_id`),\n height: readCloudInteger(message.height, `${field}.height`),\n created_at: readCloudTimestamp(message.created_at, `${field}.created_at`),\n updated_at: readCloudTimestamp(message.updated_at, `${field}.updated_at`),\n format: readCloudString(message.format, `${field}.format`),\n content: readCloudJSONObject(message.content, `${field}.content`),\n };\n};\n\nexport class AssistantCloudThreadMessages {\n private cloud: AssistantCloudAPI;\n\n constructor(cloud: AssistantCloudAPI) {\n this.cloud = cloud;\n }\n\n public async list(\n threadId: string,\n query?: AssistantCloudThreadMessageListQuery,\n ): Promise<AssistantCloudThreadMessageListResponse> {\n const response = readCloudRecord(\n await this.cloud.makeRequest(\n `/threads/${encodeURIComponent(threadId)}/messages`,\n { query },\n ),\n \"thread message list response\",\n );\n const messages = readCloudArray(response.messages, \"messages\");\n\n return {\n messages: messages.map((message, index) =>\n decodeCloudMessage(message, `messages[${index}]`),\n ),\n };\n }\n\n public async create(\n threadId: string,\n body: AssistantCloudThreadMessageCreateBody,\n ): Promise<AssistantCloudMessageCreateResponse> {\n const response = readCloudRecord(\n await this.cloud.makeRequest(\n `/threads/${encodeURIComponent(threadId)}/messages`,\n { method: \"POST\", body },\n ),\n \"thread message create response\",\n );\n\n return {\n message_id: readCloudString(response.message_id, \"message_id\"),\n };\n }\n\n public async update(\n threadId: string,\n messageId: string,\n body: AssistantCloudThreadMessageUpdateBody,\n ): Promise<void> {\n return this.cloud.makeRequest(\n `/threads/${encodeURIComponent(threadId)}/messages/${encodeURIComponent(messageId)}`,\n { method: \"PUT\", body },\n );\n }\n\n public async feedback(\n threadId: string,\n messageId: string,\n body: AssistantCloudThreadMessageFeedbackBody,\n ): Promise<AssistantCloudThreadMessageFeedbackResponse> {\n const response = readCloudRecord(\n await this.cloud.makeRequest(\n `/threads/${encodeURIComponent(threadId)}/messages/${encodeURIComponent(messageId)}/feedback`,\n { method: \"POST\", body },\n ),\n \"thread message feedback response\",\n );\n\n return {\n feedback_id: readCloudString(response.feedback_id, \"feedback_id\"),\n type: readCloudEnum(response.type, \"type\", MESSAGE_FEEDBACK_TYPES),\n };\n }\n}\n"],"mappings":";;AA+CA,MAAM,yBAAyB,CAAC,YAAY,UAAU;AAWtD,MAAa,sBACX,OACA,UACiB;CACjB,MAAM,UAAU,gBAAgB,OAAO,KAAK;CAC5C,OAAO;EACL,IAAI,gBAAgB,QAAQ,IAAI,GAAG,MAAM,IAAI;EAC7C,WAAW,wBAAwB,QAAQ,WAAW,GAAG,MAAM,WAAW;EAC1E,QAAQ,iBAAiB,QAAQ,QAAQ,GAAG,MAAM,QAAQ;EAC1D,YAAY,mBAAmB,QAAQ,YAAY,GAAG,MAAM,YAAY;EACxE,YAAY,mBAAmB,QAAQ,YAAY,GAAG,MAAM,YAAY;EACxE,QAAQ,gBAAgB,QAAQ,QAAQ,GAAG,MAAM,QAAQ;EACzD,SAAS,oBAAoB,QAAQ,SAAS,GAAG,MAAM,SAAS;CAClE;AACF;AAEA,IAAa,+BAAb,MAA0C;CACxC;CAEA,YAAY,OAA0B;EACpC,KAAK,QAAQ;CACf;CAEA,MAAa,KACX,UACA,OACkD;EAClD,MAAM,WAAW,gBACf,MAAM,KAAK,MAAM,YACf,YAAY,mBAAmB,QAAQ,EAAE,YACzC,EAAE,MAAM,CACV,GACA,8BACF;EAGA,OAAO,EACL,UAHe,eAAe,SAAS,UAAU,UAGhC,CAAC,CAAC,KAAK,SAAS,UAC/B,mBAAmB,SAAS,YAAY,MAAM,EAAE,CAClD,EACF;CACF;CAEA,MAAa,OACX,UACA,MAC8C;EAC9C,MAAM,WAAW,gBACf,MAAM,KAAK,MAAM,YACf,YAAY,mBAAmB,QAAQ,EAAE,YACzC;GAAE,QAAQ;GAAQ;EAAK,CACzB,GACA,gCACF;EAEA,OAAO,EACL,YAAY,gBAAgB,SAAS,YAAY,YAAY,EAC/D;CACF;CAEA,MAAa,OACX,UACA,WACA,MACe;EACf,OAAO,KAAK,MAAM,YAChB,YAAY,mBAAmB,QAAQ,EAAE,YAAY,mBAAmB,SAAS,KACjF;GAAE,QAAQ;GAAO;EAAK,CACxB;CACF;CAEA,MAAa,SACX,UACA,WACA,MACsD;EACtD,MAAM,WAAW,gBACf,MAAM,KAAK,MAAM,YACf,YAAY,mBAAmB,QAAQ,EAAE,YAAY,mBAAmB,SAAS,EAAE,YACnF;GAAE,QAAQ;GAAQ;EAAK,CACzB,GACA,kCACF;EAEA,OAAO;GACL,aAAa,gBAAgB,SAAS,aAAa,aAAa;GAChE,MAAM,cAAc,SAAS,MAAM,QAAQ,sBAAsB;EACnE;CACF;AACF"}
1
+ {"version":3,"file":"AssistantCloudThreadMessages.js","names":[],"sources":["../src/AssistantCloudThreadMessages.ts"],"sourcesContent":["import type { ReadonlyJSONObject } from \"assistant-stream/utils\";\nimport type { AssistantCloudAPI } from \"./AssistantCloudAPI\";\nimport {\n readCloudArray,\n readCloudEnum,\n readCloudInteger,\n readCloudJSONObject,\n readCloudNullableString,\n readCloudRecord,\n readCloudString,\n readCloudTimestamp,\n} from \"./cloudResponse\";\n\nexport type CloudMessage = {\n id: string;\n parent_id: string | null;\n height: number;\n created_at: Date;\n updated_at: Date;\n format: \"aui/v0\" | string;\n content: ReadonlyJSONObject;\n};\n\ntype AssistantCloudThreadMessageListQuery = {\n format?: string;\n limit?: number;\n after?: string;\n};\n\ntype AssistantCloudThreadMessageListResponse = {\n messages: CloudMessage[];\n};\n\ntype AssistantCloudThreadMessageCreateBody = {\n parent_id: string | null;\n format: \"aui/v0\" | string;\n content: ReadonlyJSONObject;\n};\n\ntype AssistantCloudMessageCreateResponse = {\n message_id: string;\n};\n\ntype AssistantCloudThreadMessageUpdateBody = {\n content: ReadonlyJSONObject;\n};\n\nconst MESSAGE_FEEDBACK_TYPES = [\"positive\", \"negative\"] as const;\n\nexport type AssistantCloudThreadMessageFeedbackBody = {\n type: \"positive\" | \"negative\";\n comment?: string;\n};\n\nexport type AssistantCloudThreadMessageFeedbackResponse = {\n feedback_id: string;\n type: \"positive\" | \"negative\";\n comment?: string | null;\n};\n\nexport const decodeCloudMessage = (\n value: unknown,\n field: string,\n): CloudMessage => {\n const message = readCloudRecord(value, field);\n return {\n id: readCloudString(message.id, `${field}.id`),\n parent_id: readCloudNullableString(message.parent_id, `${field}.parent_id`),\n height: readCloudInteger(message.height, `${field}.height`),\n created_at: readCloudTimestamp(message.created_at, `${field}.created_at`),\n updated_at: readCloudTimestamp(message.updated_at, `${field}.updated_at`),\n format: readCloudString(message.format, `${field}.format`),\n content: readCloudJSONObject(message.content, `${field}.content`),\n };\n};\n\nexport class AssistantCloudThreadMessages {\n private cloud: AssistantCloudAPI;\n\n constructor(cloud: AssistantCloudAPI) {\n this.cloud = cloud;\n }\n\n public async list(\n threadId: string,\n query?: AssistantCloudThreadMessageListQuery,\n ): Promise<AssistantCloudThreadMessageListResponse> {\n const response = readCloudRecord(\n await this.cloud.makeRequest(\n `/threads/${encodeURIComponent(threadId)}/messages`,\n { query },\n ),\n \"thread message list response\",\n );\n const messages = readCloudArray(response.messages, \"messages\");\n\n return {\n messages: messages.map((message, index) =>\n decodeCloudMessage(message, `messages[${index}]`),\n ),\n };\n }\n\n public async create(\n threadId: string,\n body: AssistantCloudThreadMessageCreateBody,\n ): Promise<AssistantCloudMessageCreateResponse> {\n const response = readCloudRecord(\n await this.cloud.makeRequest(\n `/threads/${encodeURIComponent(threadId)}/messages`,\n { method: \"POST\", body },\n ),\n \"thread message create response\",\n );\n\n return {\n message_id: readCloudString(response.message_id, \"message_id\"),\n };\n }\n\n public async update(\n threadId: string,\n messageId: string,\n body: AssistantCloudThreadMessageUpdateBody,\n ): Promise<void> {\n return this.cloud.makeRequest(\n `/threads/${encodeURIComponent(threadId)}/messages/${encodeURIComponent(messageId)}`,\n { method: \"PUT\", body },\n );\n }\n\n public async feedback(\n threadId: string,\n messageId: string,\n body: AssistantCloudThreadMessageFeedbackBody,\n ): Promise<AssistantCloudThreadMessageFeedbackResponse> {\n const comment = body.comment?.trim();\n const response = readCloudRecord(\n await this.cloud.makeRequest(\n `/threads/${encodeURIComponent(threadId)}/messages/${encodeURIComponent(messageId)}/feedback`,\n {\n method: \"POST\",\n body: {\n type: body.type,\n ...(comment ? { comment } : undefined),\n },\n },\n ),\n \"thread message feedback response\",\n );\n\n return {\n feedback_id: readCloudString(response.feedback_id, \"feedback_id\"),\n type: readCloudEnum(response.type, \"type\", MESSAGE_FEEDBACK_TYPES),\n ...(\"comment\" in response\n ? { comment: readCloudNullableString(response.comment, \"comment\") }\n : undefined),\n };\n }\n}\n"],"mappings":";;AA+CA,MAAM,yBAAyB,CAAC,YAAY,UAAU;AAatD,MAAa,sBACX,OACA,UACiB;CACjB,MAAM,UAAU,gBAAgB,OAAO,KAAK;CAC5C,OAAO;EACL,IAAI,gBAAgB,QAAQ,IAAI,GAAG,MAAM,IAAI;EAC7C,WAAW,wBAAwB,QAAQ,WAAW,GAAG,MAAM,WAAW;EAC1E,QAAQ,iBAAiB,QAAQ,QAAQ,GAAG,MAAM,QAAQ;EAC1D,YAAY,mBAAmB,QAAQ,YAAY,GAAG,MAAM,YAAY;EACxE,YAAY,mBAAmB,QAAQ,YAAY,GAAG,MAAM,YAAY;EACxE,QAAQ,gBAAgB,QAAQ,QAAQ,GAAG,MAAM,QAAQ;EACzD,SAAS,oBAAoB,QAAQ,SAAS,GAAG,MAAM,SAAS;CAClE;AACF;AAEA,IAAa,+BAAb,MAA0C;CACxC;CAEA,YAAY,OAA0B;EACpC,KAAK,QAAQ;CACf;CAEA,MAAa,KACX,UACA,OACkD;EAClD,MAAM,WAAW,gBACf,MAAM,KAAK,MAAM,YACf,YAAY,mBAAmB,QAAQ,EAAE,YACzC,EAAE,MAAM,CACV,GACA,8BACF;EAGA,OAAO,EACL,UAHe,eAAe,SAAS,UAAU,UAGhC,CAAC,CAAC,KAAK,SAAS,UAC/B,mBAAmB,SAAS,YAAY,MAAM,EAAE,CAClD,EACF;CACF;CAEA,MAAa,OACX,UACA,MAC8C;EAC9C,MAAM,WAAW,gBACf,MAAM,KAAK,MAAM,YACf,YAAY,mBAAmB,QAAQ,EAAE,YACzC;GAAE,QAAQ;GAAQ;EAAK,CACzB,GACA,gCACF;EAEA,OAAO,EACL,YAAY,gBAAgB,SAAS,YAAY,YAAY,EAC/D;CACF;CAEA,MAAa,OACX,UACA,WACA,MACe;EACf,OAAO,KAAK,MAAM,YAChB,YAAY,mBAAmB,QAAQ,EAAE,YAAY,mBAAmB,SAAS,KACjF;GAAE,QAAQ;GAAO;EAAK,CACxB;CACF;CAEA,MAAa,SACX,UACA,WACA,MACsD;EACtD,MAAM,UAAU,KAAK,SAAS,KAAK;EACnC,MAAM,WAAW,gBACf,MAAM,KAAK,MAAM,YACf,YAAY,mBAAmB,QAAQ,EAAE,YAAY,mBAAmB,SAAS,EAAE,YACnF;GACE,QAAQ;GACR,MAAM;IACJ,MAAM,KAAK;IACX,GAAI,UAAU,EAAE,QAAQ,IAAI,KAAA;GAC9B;EACF,CACF,GACA,kCACF;EAEA,OAAO;GACL,aAAa,gBAAgB,SAAS,aAAa,aAAa;GAChE,MAAM,cAAc,SAAS,MAAM,QAAQ,sBAAsB;GACjE,GAAI,aAAa,WACb,EAAE,SAAS,wBAAwB,SAAS,SAAS,SAAS,EAAE,IAChE,KAAA;EACN;CACF;AACF"}
@@ -6,7 +6,7 @@ type AssistantCloudThreadsListQuery = {
6
6
  limit?: number;
7
7
  after?: string;
8
8
  };
9
- type CloudThread = {
9
+ export type CloudThread = {
10
10
  title: string;
11
11
  last_message_at: Date;
12
12
  metadata: unknown;
@@ -42,8 +42,8 @@ type AssistantCloudThreadsUpdateBody = {
42
42
  metadata?: unknown | undefined;
43
43
  is_archived?: boolean | undefined;
44
44
  };
45
- declare const decodeCloudThread: (value: unknown, field: string) => CloudThread;
46
- declare class AssistantCloudThreads {
45
+ export declare const decodeCloudThread: (value: unknown, field: string) => CloudThread;
46
+ export declare class AssistantCloudThreads {
47
47
  readonly messages: AssistantCloudThreadMessages;
48
48
  private cloud;
49
49
  constructor(cloud: AssistantCloudAPI);
@@ -56,5 +56,4 @@ declare class AssistantCloudThreads {
56
56
  delete(threadId: string): Promise<void>;
57
57
  }
58
58
  //#endregion
59
- export { AssistantCloudThreads, CloudThread, decodeCloudThread };
60
59
  //# sourceMappingURL=AssistantCloudThreads.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantCloudThreads.d.ts","names":[],"sources":["../src/AssistantCloudThreads.ts"],"mappings":";;;KAYK;EACH;EACA;EACA;;KAGU;EACV;EACA,iBAAiB;EACjB;EACA;EACA;EACA;EACA,YAAY;EACZ,YAAY;EACZ;EACA;;KAGG;EACH,SAAS;;KAGN;EACH;EACA,iBAAiB;EACjB;EACA;;KAGG;EACH;;KAGG;EACH;;KAGG;EACH;;KAGG;EACH;EACA,kBAAkB;EAClB;EACA;;cAGW,oBACX,gBACA,kBACC;cAsBU;WACK,UAAU;UAElB;EAEI,YAAA,OAAO;EAKN,KACX,QAAQ,iCACP,QAAQ;EAkBE,IAAI,mBAAmB,QAAQ;EAS/B,OACX,MAAM,kCACL,QAAQ;EASE,OACX,kBACA,MAAM,kCACL;;EAQU,MACX,MAAM,iCACL,QAAQ;EASE,OAAO,mBAAmB"}
1
+ {"version":3,"file":"AssistantCloudThreads.d.ts","names":[],"sources":["../src/AssistantCloudThreads.ts"],"mappings":";;;KAYK;EACH;EACA;EACA;;YAGU;EACV;EACA,iBAAiB;EACjB;EACA;EACA;EACA;EACA,YAAY;EACZ,YAAY;EACZ;EACA;;KAGG;EACH,SAAS;;KAGN;EACH;EACA,iBAAiB;EACjB;EACA;;KAGG;EACH;;KAGG;EACH;;KAGG;EACH;;KAGG;EACH;EACA,kBAAkB;EAClB;EACA;;qBAGW,oBACX,gBACA,kBACC;qBAsBU;WACK,UAAU;UAElB;EAEI,YAAA,OAAO;EAKN,KACX,QAAQ,iCACP,QAAQ;EAkBE,IAAI,mBAAmB,QAAQ;EAS/B,OACX,MAAM,kCACL,QAAQ;EASE,OACX,kBACA,MAAM,kCACL;;EAQU,MACX,MAAM,iCACL,QAAQ;EASE,OAAO,mBAAmB"}
@@ -1,14 +1,14 @@
1
1
  import { AssistantCloudEvent } from "./AssistantCloudEvents.js";
2
2
  import { AssistantCloud } from "./AssistantCloud.js";
3
3
  //#region src/CloudEngagementReporter.d.ts
4
- type EngagementEventIds = Pick<AssistantCloudEvent, "thread_id" | "message_id" | "run_id">;
4
+ export type EngagementEventIds = Pick<AssistantCloudEvent, "thread_id" | "message_id" | "run_id">;
5
5
  /**
6
6
  * Turns the ids an integration knows (its own thread and message ids) into the
7
7
  * ids the cloud stores. A send is the one event that may create the remote
8
8
  * thread, so it asks for `awaitThread`; every other event reads the ids that
9
9
  * already exist.
10
10
  */
11
- type EngagementIdResolver = (threadId: string, messageId: string | undefined, options: {
11
+ export type EngagementIdResolver = (threadId: string, messageId: string | undefined, options: {
12
12
  awaitThread: boolean;
13
13
  }) => EngagementEventIds | Promise<EngagementEventIds>;
14
14
  /**
@@ -20,7 +20,7 @@ type EngagementIdResolver = (threadId: string, messageId: string | undefined, op
20
20
  * does not grow it without bound. Delivery goes through the cloud's event
21
21
  * buffer, so a disabled telemetry setting drops everything here as well.
22
22
  */
23
- declare class CloudEngagementReporter {
23
+ export declare class CloudEngagementReporter {
24
24
  private readonly runStartedAt;
25
25
  private readonly runEndedAt;
26
26
  private readonly shownErrors;
@@ -70,5 +70,4 @@ declare class CloudEngagementReporter {
70
70
  private track;
71
71
  }
72
72
  //#endregion
73
- export { CloudEngagementReporter, EngagementEventIds, EngagementIdResolver };
74
73
  //# sourceMappingURL=CloudEngagementReporter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CloudEngagementReporter.d.ts","names":[],"sources":["../src/CloudEngagementReporter.ts"],"mappings":";;;KAMY,qBAAqB,KAC/B;;;;;;;KAUU,wBACV,kBACA,+BACA;EAAW;MACR,qBAAqB,QAAQ;;;;;;;;;;cAoCrB;mBACM;mBACA;mBACA;mBACA;mBAEA;mBACA;EAGf,YAAA,OAAO,wBAAwB,iBAC/B,aAAY;EAMP,WAAW;EAKX,SAAS;;EAMT,WAAW;;EAUX,YACL,kBACA;IACE;IACA;IACA;;EAkBG,cACL,kBACA;IAAQ;IAAmB;;EAOtB,mBAAmB,kBAAkB;;EAKrC,WACL,kBACA;IAAQ;IAAgC;;;EAUnC,iBAAiB,kBAAkB;EAMnC,kBAAkB;EAIlB,gBACL,kBACA;IAAQ;IAAgC;;EAOnC,iBACL,kBACA;IAAQ;IAAgC;;EAOnC,aAAa;EAIb,cAAc,kBAAkB;EAIhC,eAAe,kBAAkB;EAIjC,cAAc,kBAAkB;EAIhC,aACL,kBACA,mBACA,oBACA;EAOK,aACL,kBACA,mBACA,oBACA;;EAQK,eAAe;UAId"}
1
+ {"version":3,"file":"CloudEngagementReporter.d.ts","names":[],"sources":["../src/CloudEngagementReporter.ts"],"mappings":";;;YAMY,qBAAqB,KAC/B;;;;;;;YAUU,wBACV,kBACA,+BACA;EAAW;MACR,qBAAqB,QAAQ;;;;;;;;;;qBAoCrB;mBACM;mBACA;mBACA;mBACA;mBAEA;mBACA;EAGf,YAAA,OAAO,wBAAwB,iBAC/B,aAAY;EAMP,WAAW;EAKX,SAAS;;EAMT,WAAW;;EAUX,YACL,kBACA;IACE;IACA;IACA;;EAkBG,cACL,kBACA;IAAQ;IAAmB;;EAOtB,mBAAmB,kBAAkB;;EAKrC,WACL,kBACA;IAAQ;IAAgC;;;EAUnC,iBAAiB,kBAAkB;EAMnC,kBAAkB;EAIlB,gBACL,kBACA;IAAQ;IAAgC;;EAOnC,iBACL,kBACA;IAAQ;IAAgC;;EAOnC,aAAa;EAIb,cAAc,kBAAkB;EAIhC,eAAe,kBAAkB;EAIjC,cAAc,kBAAkB;EAIhC,aACL,kBACA,mBACA,oBACA;EAOK,aACL,kBACA,mBACA,oBACA;;EAQK,eAAe;UAId"}
@@ -7,7 +7,7 @@ import { ReadonlyJSONObject } from "assistant-stream/utils";
7
7
  * ids and chaining parent_id. A parent that is still being created is awaited,
8
8
  * so concurrent appends land under the right parent.
9
9
  */
10
- declare class CloudMessagePersistence {
10
+ export declare class CloudMessagePersistence {
11
11
  private idMapping;
12
12
  private getCloud;
13
13
  constructor(cloud: AssistantCloud);
@@ -61,5 +61,4 @@ declare class CloudMessagePersistence {
61
61
  reset(): void;
62
62
  }
63
63
  //#endregion
64
- export { CloudMessagePersistence };
65
64
  //# sourceMappingURL=CloudMessagePersistence.d.ts.map