assistant-cloud 0.1.27 → 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 (56) hide show
  1. package/README.md +42 -0
  2. package/dist/AssistantCloud.d.ts +15 -11
  3. package/dist/AssistantCloud.d.ts.map +1 -1
  4. package/dist/AssistantCloud.js +24 -24
  5. package/dist/AssistantCloud.js.map +1 -1
  6. package/dist/AssistantCloudAPI.d.ts +46 -42
  7. package/dist/AssistantCloudAPI.d.ts.map +1 -1
  8. package/dist/AssistantCloudAPI.js +66 -79
  9. package/dist/AssistantCloudAPI.js.map +1 -1
  10. package/dist/AssistantCloudAuthStrategy.d.ts +28 -25
  11. package/dist/AssistantCloudAuthStrategy.d.ts.map +1 -1
  12. package/dist/AssistantCloudAuthStrategy.js +98 -135
  13. package/dist/AssistantCloudAuthStrategy.js.map +1 -1
  14. package/dist/AssistantCloudAuthTokens.d.ts +10 -7
  15. package/dist/AssistantCloudAuthTokens.d.ts.map +1 -1
  16. package/dist/AssistantCloudAuthTokens.js +13 -9
  17. package/dist/AssistantCloudAuthTokens.js.map +1 -1
  18. package/dist/AssistantCloudFiles.d.ts +20 -17
  19. package/dist/AssistantCloudFiles.d.ts.map +1 -1
  20. package/dist/AssistantCloudFiles.js +22 -18
  21. package/dist/AssistantCloudFiles.js.map +1 -1
  22. package/dist/AssistantCloudRuns.d.ts +53 -50
  23. package/dist/AssistantCloudRuns.d.ts.map +1 -1
  24. package/dist/AssistantCloudRuns.js +42 -38
  25. package/dist/AssistantCloudRuns.js.map +1 -1
  26. package/dist/AssistantCloudThreadMessages.d.ts +27 -24
  27. package/dist/AssistantCloudThreadMessages.d.ts.map +1 -1
  28. package/dist/AssistantCloudThreadMessages.js +25 -15
  29. package/dist/AssistantCloudThreadMessages.js.map +1 -1
  30. package/dist/AssistantCloudThreads.d.ts +37 -34
  31. package/dist/AssistantCloudThreads.d.ts.map +1 -1
  32. package/dist/AssistantCloudThreads.js +33 -28
  33. package/dist/AssistantCloudThreads.js.map +1 -1
  34. package/dist/CloudMessagePersistence.d.ts +49 -44
  35. package/dist/CloudMessagePersistence.d.ts.map +1 -1
  36. package/dist/CloudMessagePersistence.js +90 -101
  37. package/dist/CloudMessagePersistence.js.map +1 -1
  38. package/dist/FormattedCloudPersistence.d.ts +40 -36
  39. package/dist/FormattedCloudPersistence.d.ts.map +1 -1
  40. package/dist/FormattedCloudPersistence.js +32 -36
  41. package/dist/FormattedCloudPersistence.js.map +1 -1
  42. package/dist/index.d.ts +8 -8
  43. package/dist/index.js +5 -5
  44. package/dist/instrumentMcpSampling.d.ts +39 -36
  45. package/dist/instrumentMcpSampling.d.ts.map +1 -1
  46. package/dist/instrumentMcpSampling.js +61 -68
  47. package/dist/instrumentMcpSampling.js.map +1 -1
  48. package/dist/tests/setup.d.ts +1 -2
  49. package/dist/tests/setup.js +3 -4
  50. package/dist/tests/setup.js.map +1 -1
  51. package/package.json +5 -5
  52. package/src/AssistantCloudAPI.ts +4 -1
  53. package/src/tests/AssistantCloudAPI.test.ts +42 -0
  54. package/dist/index.d.ts.map +0 -1
  55. package/dist/index.js.map +0 -1
  56. package/dist/tests/setup.d.ts.map +0 -1
@@ -1,103 +1,92 @@
1
+ //#region src/CloudMessagePersistence.ts
1
2
  /**
2
- * Shared persistence logic for cloud message storage.
3
- *
4
- * Handles ID mapping (local → remote) and parent_id chaining for both:
5
- * - AssistantCloudThreadHistoryAdapter (assistant-ui runtime)
6
- * - useCloudChat (standalone AI SDK hook)
7
- *
8
- * The promise-based ID resolution handles concurrent appends — if message B's
9
- * parent is message A, and A is still being created, we await A's promise
10
- * to get its remote ID before creating B.
11
- */
12
- export class CloudMessagePersistence {
13
- cloud;
14
- idMapping = {};
15
- constructor(cloud) {
16
- this.cloud = cloud;
17
- }
18
- /**
19
- * Persist a message to the cloud.
20
- *
21
- * @param threadId - Remote thread ID
22
- * @param messageId - Local message ID (used for tracking)
23
- * @param parentId - Local parent message ID (or null for first message)
24
- * @param format - Message format (e.g., "aui/v0", "ai-sdk/v6")
25
- * @param content - Message content (format-specific)
26
- */
27
- async append(threadId, messageId, parentId, format, content) {
28
- // Resolve parent's remote ID if it exists (may be a promise if concurrent)
29
- const resolvedParentId = parentId
30
- ? ((await this.idMapping[parentId]) ?? parentId)
31
- : null;
32
- const task = this.cloud.threads.messages
33
- .create(threadId, {
34
- parent_id: resolvedParentId,
35
- format,
36
- content,
37
- })
38
- .then(({ message_id }) => {
39
- this.idMapping[messageId] = message_id;
40
- return message_id;
41
- })
42
- .catch((err) => {
43
- // Only delete if we're still the active task (avoids clobbering a retry)
44
- if (this.idMapping[messageId] === task) {
45
- delete this.idMapping[messageId];
46
- }
47
- throw err;
48
- });
49
- // Store the promise immediately so concurrent appends can await it
50
- this.idMapping[messageId] = task;
51
- return task.then(() => { });
52
- }
53
- /**
54
- * Update an already-persisted message in the cloud.
55
- */
56
- async update(threadId, messageId, _format, content) {
57
- const remoteId = await this.getRemoteId(messageId);
58
- if (!remoteId)
59
- return; // not persisted yet, skip
60
- await this.cloud.threads.messages.update(threadId, remoteId, { content });
61
- }
62
- /**
63
- * Check if a message has been persisted (or is currently being persisted).
64
- */
65
- isPersisted(messageId) {
66
- return messageId in this.idMapping;
67
- }
68
- /**
69
- * Get the remote ID for a local message ID (resolved).
70
- * Returns undefined if not persisted.
71
- */
72
- async getRemoteId(messageId) {
73
- const entry = this.idMapping[messageId];
74
- if (!entry)
75
- return undefined;
76
- return entry;
77
- }
78
- /**
79
- * Load messages from the cloud and populate the ID mapping.
80
- *
81
- * The ID mapping is populated so that `isPersisted()` returns true for
82
- * loaded messages, preventing re-persistence of already-stored messages.
83
- *
84
- * @param threadId - Remote thread ID
85
- * @param format - Optional format filter
86
- * @returns Array of cloud messages
87
- */
88
- async load(threadId, format) {
89
- const { messages } = await this.cloud.threads.messages.list(threadId, format ? { format } : undefined);
90
- // Populate ID mapping so isPersisted() recognizes loaded messages
91
- for (const m of messages) {
92
- this.idMapping[m.id] = m.id;
93
- }
94
- return messages;
95
- }
96
- /**
97
- * Reset the ID mapping (call when switching threads).
98
- */
99
- reset() {
100
- this.idMapping = {};
101
- }
102
- }
3
+ * Shared persistence logic for cloud message storage.
4
+ *
5
+ * Handles ID mapping (local → remote) and parent_id chaining for both:
6
+ * - AssistantCloudThreadHistoryAdapter (assistant-ui runtime)
7
+ * - useCloudChat (standalone AI SDK hook)
8
+ *
9
+ * The promise-based ID resolution handles concurrent appends — if message B's
10
+ * parent is message A, and A is still being created, we await A's promise
11
+ * to get its remote ID before creating B.
12
+ */
13
+ var CloudMessagePersistence = class {
14
+ cloud;
15
+ idMapping = {};
16
+ constructor(cloud) {
17
+ this.cloud = cloud;
18
+ }
19
+ /**
20
+ * Persist a message to the cloud.
21
+ *
22
+ * @param threadId - Remote thread ID
23
+ * @param messageId - Local message ID (used for tracking)
24
+ * @param parentId - Local parent message ID (or null for first message)
25
+ * @param format - Message format (e.g., "aui/v0", "ai-sdk/v6")
26
+ * @param content - Message content (format-specific)
27
+ */
28
+ async append(threadId, messageId, parentId, format, content) {
29
+ const resolvedParentId = parentId ? await this.idMapping[parentId] ?? parentId : null;
30
+ const task = this.cloud.threads.messages.create(threadId, {
31
+ parent_id: resolvedParentId,
32
+ format,
33
+ content
34
+ }).then(({ message_id }) => {
35
+ this.idMapping[messageId] = message_id;
36
+ return message_id;
37
+ }).catch((err) => {
38
+ if (this.idMapping[messageId] === task) delete this.idMapping[messageId];
39
+ throw err;
40
+ });
41
+ this.idMapping[messageId] = task;
42
+ return task.then(() => {});
43
+ }
44
+ /**
45
+ * Update an already-persisted message in the cloud.
46
+ */
47
+ async update(threadId, messageId, _format, content) {
48
+ const remoteId = await this.getRemoteId(messageId);
49
+ if (!remoteId) return;
50
+ await this.cloud.threads.messages.update(threadId, remoteId, { content });
51
+ }
52
+ /**
53
+ * Check if a message has been persisted (or is currently being persisted).
54
+ */
55
+ isPersisted(messageId) {
56
+ return messageId in this.idMapping;
57
+ }
58
+ /**
59
+ * Get the remote ID for a local message ID (resolved).
60
+ * Returns undefined if not persisted.
61
+ */
62
+ async getRemoteId(messageId) {
63
+ const entry = this.idMapping[messageId];
64
+ if (!entry) return void 0;
65
+ return entry;
66
+ }
67
+ /**
68
+ * Load messages from the cloud and populate the ID mapping.
69
+ *
70
+ * The ID mapping is populated so that `isPersisted()` returns true for
71
+ * loaded messages, preventing re-persistence of already-stored messages.
72
+ *
73
+ * @param threadId - Remote thread ID
74
+ * @param format - Optional format filter
75
+ * @returns Array of cloud messages
76
+ */
77
+ async load(threadId, format) {
78
+ const { messages } = await this.cloud.threads.messages.list(threadId, format ? { format } : void 0);
79
+ for (const m of messages) this.idMapping[m.id] = m.id;
80
+ return messages;
81
+ }
82
+ /**
83
+ * Reset the ID mapping (call when switching threads).
84
+ */
85
+ reset() {
86
+ this.idMapping = {};
87
+ }
88
+ };
89
+ //#endregion
90
+ export { CloudMessagePersistence };
91
+
103
92
  //# sourceMappingURL=CloudMessagePersistence.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CloudMessagePersistence.js","sourceRoot":"","sources":["../src/CloudMessagePersistence.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,MAAM,OAAO,uBAAuB;IAGd;IAFZ,SAAS,GAA6C,EAAE,CAAC;IAEjE,YAAoB,KAAqB;QAArB,UAAK,GAAL,KAAK,CAAgB;IAAG,CAAC;IAE7C;;;;;;;;OAQG;IACH,KAAK,CAAC,MAAM,CACV,QAAgB,EAChB,SAAiB,EACjB,QAAuB,EACvB,MAAc,EACd,OAA2B;QAE3B,2EAA2E;QAC3E,MAAM,gBAAgB,GAAG,QAAQ;YAC/B,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,QAAQ,CAAC;YAChD,CAAC,CAAC,IAAI,CAAC;QAET,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ;aACrC,MAAM,CAAC,QAAQ,EAAE;YAChB,SAAS,EAAE,gBAAgB;YAC3B,MAAM;YACN,OAAO;SACR,CAAC;aACD,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;YACvB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC;YACvC,OAAO,UAAU,CAAC;QACpB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,yEAAyE;YACzE,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvC,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACnC,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC,CAAC,CAAC;QAEL,mEAAmE;QACnE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,QAAgB,EAChB,SAAiB,EACjB,OAAe,EACf,OAA2B;QAE3B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ;YAAE,OAAO,CAAC,0BAA0B;QACjD,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,SAAiB;QAC3B,OAAO,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,SAAiB;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,IAAI,CAAC,QAAgB,EAAE,MAAe;QAC1C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CACzD,QAAQ,EACR,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAChC,CAAC;QACF,kEAAkE;QAClE,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC9B,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;CACF"}
1
+ {"version":3,"file":"CloudMessagePersistence.js","names":[],"sources":["../src/CloudMessagePersistence.ts"],"sourcesContent":["import type { ReadonlyJSONObject } from \"assistant-stream/utils\";\nimport type { AssistantCloud } from \"./AssistantCloud\";\n\n/**\n * Shared persistence logic for cloud message storage.\n *\n * Handles ID mapping (local → remote) and parent_id chaining for both:\n * - AssistantCloudThreadHistoryAdapter (assistant-ui runtime)\n * - useCloudChat (standalone AI SDK hook)\n *\n * The promise-based ID resolution handles concurrent appends — if message B's\n * parent is message A, and A is still being created, we await A's promise\n * to get its remote ID before creating B.\n */\nexport class CloudMessagePersistence {\n private idMapping: Record<string, string | Promise<string>> = {};\n\n constructor(private cloud: AssistantCloud) {}\n\n /**\n * Persist a message to the cloud.\n *\n * @param threadId - Remote thread ID\n * @param messageId - Local message ID (used for tracking)\n * @param parentId - Local parent message ID (or null for first message)\n * @param format - Message format (e.g., \"aui/v0\", \"ai-sdk/v6\")\n * @param content - Message content (format-specific)\n */\n async append(\n threadId: string,\n messageId: string,\n parentId: string | null,\n format: string,\n content: ReadonlyJSONObject,\n ): Promise<void> {\n // Resolve parent's remote ID if it exists (may be a promise if concurrent)\n const resolvedParentId = parentId\n ? ((await this.idMapping[parentId]) ?? parentId)\n : null;\n\n const task = this.cloud.threads.messages\n .create(threadId, {\n parent_id: resolvedParentId,\n format,\n content,\n })\n .then(({ message_id }) => {\n this.idMapping[messageId] = message_id;\n return message_id;\n })\n .catch((err) => {\n // Only delete if we're still the active task (avoids clobbering a retry)\n if (this.idMapping[messageId] === task) {\n delete this.idMapping[messageId];\n }\n throw err;\n });\n\n // Store the promise immediately so concurrent appends can await it\n this.idMapping[messageId] = task;\n return task.then(() => {});\n }\n\n /**\n * Update an already-persisted message in the cloud.\n */\n async update(\n threadId: string,\n messageId: string,\n _format: string,\n content: ReadonlyJSONObject,\n ): Promise<void> {\n const remoteId = await this.getRemoteId(messageId);\n if (!remoteId) return; // not persisted yet, skip\n await this.cloud.threads.messages.update(threadId, remoteId, { content });\n }\n\n /**\n * Check if a message has been persisted (or is currently being persisted).\n */\n isPersisted(messageId: string): boolean {\n return messageId in this.idMapping;\n }\n\n /**\n * Get the remote ID for a local message ID (resolved).\n * Returns undefined if not persisted.\n */\n async getRemoteId(messageId: string): Promise<string | undefined> {\n const entry = this.idMapping[messageId];\n if (!entry) return undefined;\n return entry;\n }\n\n /**\n * Load messages from the cloud and populate the ID mapping.\n *\n * The ID mapping is populated so that `isPersisted()` returns true for\n * loaded messages, preventing re-persistence of already-stored messages.\n *\n * @param threadId - Remote thread ID\n * @param format - Optional format filter\n * @returns Array of cloud messages\n */\n async load(threadId: string, format?: string) {\n const { messages } = await this.cloud.threads.messages.list(\n threadId,\n format ? { format } : undefined,\n );\n // Populate ID mapping so isPersisted() recognizes loaded messages\n for (const m of messages) {\n this.idMapping[m.id] = m.id;\n }\n return messages;\n }\n\n /**\n * Reset the ID mapping (call when switching threads).\n */\n reset() {\n this.idMapping = {};\n }\n}\n"],"mappings":";;;;;;;;;;;;AAcA,IAAa,0BAAb,MAAqC;CAGf;CAFpB,YAA8D,CAAC;CAE/D,YAAY,OAA+B;EAAvB,KAAA,QAAA;CAAwB;;;;;;;;;;CAW5C,MAAM,OACJ,UACA,WACA,UACA,QACA,SACe;EAEf,MAAM,mBAAmB,WACnB,MAAM,KAAK,UAAU,aAAc,WACrC;EAEJ,MAAM,OAAO,KAAK,MAAM,QAAQ,SAC7B,OAAO,UAAU;GAChB,WAAW;GACX;GACA;EACF,CAAC,EACA,MAAM,EAAE,iBAAiB;GACxB,KAAK,UAAU,aAAa;GAC5B,OAAO;EACT,CAAC,EACA,OAAO,QAAQ;GAEd,IAAI,KAAK,UAAU,eAAe,MAChC,OAAO,KAAK,UAAU;GAExB,MAAM;EACR,CAAC;EAGH,KAAK,UAAU,aAAa;EAC5B,OAAO,KAAK,WAAW,CAAC,CAAC;CAC3B;;;;CAKA,MAAM,OACJ,UACA,WACA,SACA,SACe;EACf,MAAM,WAAW,MAAM,KAAK,YAAY,SAAS;EACjD,IAAI,CAAC,UAAU;EACf,MAAM,KAAK,MAAM,QAAQ,SAAS,OAAO,UAAU,UAAU,EAAE,QAAQ,CAAC;CAC1E;;;;CAKA,YAAY,WAA4B;EACtC,OAAO,aAAa,KAAK;CAC3B;;;;;CAMA,MAAM,YAAY,WAAgD;EAChE,MAAM,QAAQ,KAAK,UAAU;EAC7B,IAAI,CAAC,OAAO,OAAO,KAAA;EACnB,OAAO;CACT;;;;;;;;;;;CAYA,MAAM,KAAK,UAAkB,QAAiB;EAC5C,MAAM,EAAE,aAAa,MAAM,KAAK,MAAM,QAAQ,SAAS,KACrD,UACA,SAAS,EAAE,OAAO,IAAI,KAAA,CACxB;EAEA,KAAK,MAAM,KAAK,UACd,KAAK,UAAU,EAAE,MAAM,EAAE;EAE3B,OAAO;CACT;;;;CAKA,QAAQ;EACN,KAAK,YAAY,CAAC;CACpB;AACF"}
@@ -1,25 +1,27 @@
1
- import type { ReadonlyJSONObject } from "assistant-stream/utils";
1
+ import { ReadonlyJSONObject } from "assistant-stream/utils";
2
+
3
+ //#region src/FormattedCloudPersistence.d.ts
2
4
  /**
3
5
  * Format adapter shape — structurally identical to the MessageFormatAdapter
4
6
  * in @assistant-ui/react, but defined here to avoid cross-package type moves.
5
7
  * TypeScript's structural typing ensures these are interchangeable.
6
8
  */
7
- export type MessageFormatAdapter<TMessage, TStorageFormat> = {
9
+ type MessageFormatAdapter<TMessage, TStorageFormat> = {
10
+ format: string;
11
+ encode(item: {
12
+ parentId: string | null;
13
+ message: TMessage;
14
+ }): TStorageFormat;
15
+ decode(stored: {
16
+ id: string;
17
+ parent_id: string | null;
8
18
  format: string;
9
- encode(item: {
10
- parentId: string | null;
11
- message: TMessage;
12
- }): TStorageFormat;
13
- decode(stored: {
14
- id: string;
15
- parent_id: string | null;
16
- format: string;
17
- content: TStorageFormat;
18
- }): {
19
- parentId: string | null;
20
- message: TMessage;
21
- };
22
- getId(message: TMessage): string;
19
+ content: TStorageFormat;
20
+ }): {
21
+ parentId: string | null;
22
+ message: TMessage;
23
+ };
24
+ getId(message: TMessage): string;
23
25
  };
24
26
  /**
25
27
  * Wraps a CloudMessagePersistence instance with format-aware encode/decode.
@@ -31,26 +33,28 @@ export type MessageFormatAdapter<TMessage, TStorageFormat> = {
31
33
  * The persistence parameter is typed structurally (not by class) so callers
32
34
  * don't need to import CloudMessagePersistence directly.
33
35
  */
34
- export declare const createFormattedPersistence: <TMessage, TStorageFormat>(persistence: {
35
- append: (threadId: string, messageId: string, parentId: string | null, format: string, content: ReadonlyJSONObject) => Promise<void>;
36
- load: (threadId: string, format?: string) => Promise<any[]>;
37
- isPersisted: (messageId: string) => boolean;
38
- update?: (threadId: string, messageId: string, format: string, content: ReadonlyJSONObject) => Promise<void>;
36
+ declare const createFormattedPersistence: <TMessage, TStorageFormat>(persistence: {
37
+ append: (threadId: string, messageId: string, parentId: string | null, format: string, content: ReadonlyJSONObject) => Promise<void>;
38
+ load: (threadId: string, format?: string) => Promise<any[]>;
39
+ isPersisted: (messageId: string) => boolean;
40
+ update?: (threadId: string, messageId: string, format: string, content: ReadonlyJSONObject) => Promise<void>;
39
41
  }, adapter: MessageFormatAdapter<TMessage, TStorageFormat>) => {
40
- append: (threadId: string, item: {
41
- parentId: string | null;
42
- message: TMessage;
43
- }) => Promise<void>;
44
- update: ((threadId: string, item: {
45
- parentId: string | null;
46
- message: TMessage;
47
- }, messageId: string) => Promise<void>) | undefined;
48
- load: (threadId: string) => Promise<{
49
- messages: {
50
- parentId: string | null;
51
- message: TMessage;
52
- }[];
53
- }>;
54
- isPersisted: (messageId: string) => boolean;
42
+ append: (threadId: string, item: {
43
+ parentId: string | null;
44
+ message: TMessage;
45
+ }) => Promise<void>;
46
+ update: ((threadId: string, item: {
47
+ parentId: string | null;
48
+ message: TMessage;
49
+ }, messageId: string) => Promise<void>) | undefined;
50
+ load: (threadId: string) => Promise<{
51
+ messages: {
52
+ parentId: string | null;
53
+ message: TMessage;
54
+ }[];
55
+ }>;
56
+ isPersisted: (messageId: string) => boolean;
55
57
  };
58
+ //#endregion
59
+ export { MessageFormatAdapter, createFormattedPersistence };
56
60
  //# sourceMappingURL=FormattedCloudPersistence.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormattedCloudPersistence.d.ts","sourceRoot":"","sources":["../src/FormattedCloudPersistence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,CAAC,QAAQ,EAAE,cAAc,IAAI;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,QAAQ,CAAA;KAAE,GAAG,cAAc,CAAC;IAC7E,MAAM,CAAC,MAAM,EAAE;QACb,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,cAAc,CAAC;KACzB,GAAG;QAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,QAAQ,CAAA;KAAE,CAAC;IACnD,KAAK,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC;CAClC,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B,GAAI,QAAQ,EAAE,cAAc,EACjE,aAAa;IACX,MAAM,EAAE,CACN,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,kBAAkB,KACxB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5D,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5C,MAAM,CAAC,EAAE,CACP,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,kBAAkB,KACxB,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB,EACD,SAAS,oBAAoB,CAAC,QAAQ,EAAE,cAAc,CAAC;uBAG3C,MAAM,QACV;QAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,QAAQ,CAAA;KAAE,KACnD,OAAO,CAAC,IAAI,CAAC;wBAaA,MAAM,QACV;QAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,QAAQ,CAAA;KAAE,aACzC,MAAM,KAChB,OAAO,CAAC,IAAI,CAAC;qBAUG,MAAM;;sBA/Db,MAAM,GAAG,IAAI;;;;6BA+EJ,MAAM;CAC/B,CAAC"}
1
+ {"version":3,"file":"FormattedCloudPersistence.d.ts","names":[],"sources":["../src/FormattedCloudPersistence.ts"],"mappings":";;;;;AAOA;;;KAAY,oBAAA;EACV,MAAA;EACA,MAAA,CAAO,IAAA;IAAQ,QAAA;IAAyB,OAAA,EAAS,QAAA;EAAA,IAAa,cAAA;EAC9D,MAAA,CAAO,MAAA;IACL,EAAA;IACA,SAAA;IACA,MAAA;IACA,OAAA,EAAS,cAAA;EAAA;IACL,QAAA;IAAyB,OAAA,EAAS,QAAA;EAAA;EACxC,KAAA,CAAM,OAAA,EAAS,QAAA;AAAA;;;;;;;;;;;cAaJ,0BAAA,6BACX,WAAA;EACE,MAAA,GACE,QAAA,UACA,SAAA,UACA,QAAA,iBACA,MAAA,UACA,OAAA,EAAS,kBAAA,KACN,OAAA;EACL,IAAA,GAAO,QAAA,UAAkB,MAAA,cAAoB,OAAA;EAC7C,WAAA,GAAc,SAAA;EACd,MAAA,IACE,QAAA,UACA,SAAA,UACA,MAAA,UACA,OAAA,EAAS,kBAAA,KACN,OAAA;AAAA,GAEP,OAAA,EAAS,oBAAA,CAAqB,QAAA,EAAU,cAAA;6BAGtB,IAAA;IACR,QAAA;IAAyB,OAAA,EAAS,QAAA;EAAA,MACzC,OAAA;8BAamB,IAAA;IACR,QAAA;IAAyB,OAAA,EAAS,QAAA;EAAA,GAAU,SAAA,aAEnD,OAAA;8BAUsB,OAAA"}
@@ -1,39 +1,35 @@
1
+ //#region src/FormattedCloudPersistence.ts
1
2
  /**
2
- * Wraps a CloudMessagePersistence instance with format-aware encode/decode.
3
- *
4
- * This centralizes the pattern used by both:
5
- * - useCloudChat (standalone AI SDK hook)
6
- * - AssistantCloudThreadHistoryAdapter.withFormat() (assistant-ui runtime)
7
- *
8
- * The persistence parameter is typed structurally (not by class) so callers
9
- * don't need to import CloudMessagePersistence directly.
10
- */
11
- export const createFormattedPersistence = (persistence, adapter) => ({
12
- append: async (threadId, item) => {
13
- const messageId = adapter.getId(item.message);
14
- const encoded = adapter.encode(item);
15
- return persistence.append(threadId, messageId, item.parentId, adapter.format, encoded);
16
- },
17
- update: persistence.update
18
- ? async (threadId, item, messageId) => {
19
- const encoded = adapter.encode(item);
20
- return persistence.update(threadId, messageId, adapter.format, encoded);
21
- }
22
- : undefined,
23
- load: async (threadId) => {
24
- const messages = await persistence.load(threadId, adapter.format);
25
- return {
26
- messages: messages
27
- .filter((m) => m.format === adapter.format)
28
- .map((m) => adapter.decode({
29
- id: m.id,
30
- parent_id: m.parent_id,
31
- format: m.format,
32
- content: m.content,
33
- }))
34
- .reverse(),
35
- };
36
- },
37
- isPersisted: (messageId) => persistence.isPersisted(messageId),
3
+ * Wraps a CloudMessagePersistence instance with format-aware encode/decode.
4
+ *
5
+ * This centralizes the pattern used by both:
6
+ * - useCloudChat (standalone AI SDK hook)
7
+ * - AssistantCloudThreadHistoryAdapter.withFormat() (assistant-ui runtime)
8
+ *
9
+ * The persistence parameter is typed structurally (not by class) so callers
10
+ * don't need to import CloudMessagePersistence directly.
11
+ */
12
+ const createFormattedPersistence = (persistence, adapter) => ({
13
+ append: async (threadId, item) => {
14
+ const messageId = adapter.getId(item.message);
15
+ const encoded = adapter.encode(item);
16
+ return persistence.append(threadId, messageId, item.parentId, adapter.format, encoded);
17
+ },
18
+ update: persistence.update ? async (threadId, item, messageId) => {
19
+ const encoded = adapter.encode(item);
20
+ return persistence.update(threadId, messageId, adapter.format, encoded);
21
+ } : void 0,
22
+ load: async (threadId) => {
23
+ return { messages: (await persistence.load(threadId, adapter.format)).filter((m) => m.format === adapter.format).map((m) => adapter.decode({
24
+ id: m.id,
25
+ parent_id: m.parent_id,
26
+ format: m.format,
27
+ content: m.content
28
+ })).reverse() };
29
+ },
30
+ isPersisted: (messageId) => persistence.isPersisted(messageId)
38
31
  });
32
+ //#endregion
33
+ export { createFormattedPersistence };
34
+
39
35
  //# sourceMappingURL=FormattedCloudPersistence.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormattedCloudPersistence.js","sourceRoot":"","sources":["../src/FormattedCloudPersistence.ts"],"names":[],"mappings":"AAmBA;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,WAgBC,EACD,OAAuD,EACvD,EAAE,CAAC,CAAC;IACJ,MAAM,EAAE,KAAK,EACX,QAAgB,EAChB,IAAoD,EACrC,EAAE;QACjB,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,WAAW,CAAC,MAAM,CACvB,QAAQ,EACR,SAAS,EACT,IAAI,CAAC,QAAQ,EACb,OAAO,CAAC,MAAM,EACd,OAA6B,CAC9B,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,WAAW,CAAC,MAAM;QACxB,CAAC,CAAC,KAAK,EACH,QAAgB,EAChB,IAAoD,EACpD,SAAiB,EACF,EAAE;YACjB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACrC,OAAO,WAAW,CAAC,MAAO,CACxB,QAAQ,EACR,SAAS,EACT,OAAO,CAAC,MAAM,EACd,OAA6B,CAC9B,CAAC;QACJ,CAAC;QACH,CAAC,CAAC,SAAS;IACb,IAAI,EAAE,KAAK,EAAE,QAAgB,EAAE,EAAE;QAC/B,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAClE,OAAO;YACL,QAAQ,EAAE,QAAQ;iBACf,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC;iBAC1C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACT,OAAO,CAAC,MAAM,CAAC;gBACb,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,OAAO,EAAE,CAAC,CAAC,OAAyB;aACrC,CAAC,CACH;iBACA,OAAO,EAAE;SACb,CAAC;IACJ,CAAC;IACD,WAAW,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC;CACvE,CAAC,CAAC"}
1
+ {"version":3,"file":"FormattedCloudPersistence.js","names":[],"sources":["../src/FormattedCloudPersistence.ts"],"sourcesContent":["import type { ReadonlyJSONObject } from \"assistant-stream/utils\";\n\n/**\n * Format adapter shape — structurally identical to the MessageFormatAdapter\n * in @assistant-ui/react, but defined here to avoid cross-package type moves.\n * TypeScript's structural typing ensures these are interchangeable.\n */\nexport type MessageFormatAdapter<TMessage, TStorageFormat> = {\n format: string;\n encode(item: { parentId: string | null; message: TMessage }): TStorageFormat;\n decode(stored: {\n id: string;\n parent_id: string | null;\n format: string;\n content: TStorageFormat;\n }): { parentId: string | null; message: TMessage };\n getId(message: TMessage): string;\n};\n\n/**\n * Wraps a CloudMessagePersistence instance with format-aware encode/decode.\n *\n * This centralizes the pattern used by both:\n * - useCloudChat (standalone AI SDK hook)\n * - AssistantCloudThreadHistoryAdapter.withFormat() (assistant-ui runtime)\n *\n * The persistence parameter is typed structurally (not by class) so callers\n * don't need to import CloudMessagePersistence directly.\n */\nexport const createFormattedPersistence = <TMessage, TStorageFormat>(\n persistence: {\n append: (\n threadId: string,\n messageId: string,\n parentId: string | null,\n format: string,\n content: ReadonlyJSONObject,\n ) => Promise<void>;\n load: (threadId: string, format?: string) => Promise<any[]>;\n isPersisted: (messageId: string) => boolean;\n update?: (\n threadId: string,\n messageId: string,\n format: string,\n content: ReadonlyJSONObject,\n ) => Promise<void>;\n },\n adapter: MessageFormatAdapter<TMessage, TStorageFormat>,\n) => ({\n append: async (\n threadId: string,\n item: { parentId: string | null; message: TMessage },\n ): Promise<void> => {\n const messageId = adapter.getId(item.message);\n const encoded = adapter.encode(item);\n return persistence.append(\n threadId,\n messageId,\n item.parentId,\n adapter.format,\n encoded as ReadonlyJSONObject,\n );\n },\n update: persistence.update\n ? async (\n threadId: string,\n item: { parentId: string | null; message: TMessage },\n messageId: string,\n ): Promise<void> => {\n const encoded = adapter.encode(item);\n return persistence.update!(\n threadId,\n messageId,\n adapter.format,\n encoded as ReadonlyJSONObject,\n );\n }\n : undefined,\n load: async (threadId: string) => {\n const messages = await persistence.load(threadId, adapter.format);\n return {\n messages: messages\n .filter((m) => m.format === adapter.format)\n .map((m) =>\n adapter.decode({\n id: m.id,\n parent_id: m.parent_id,\n format: m.format,\n content: m.content as TStorageFormat,\n }),\n )\n .reverse(),\n };\n },\n isPersisted: (messageId: string) => persistence.isPersisted(messageId),\n});\n"],"mappings":";;;;;;;;;;;AA6BA,MAAa,8BACX,aAiBA,aACI;CACJ,QAAQ,OACN,UACA,SACkB;EAClB,MAAM,YAAY,QAAQ,MAAM,KAAK,OAAO;EAC5C,MAAM,UAAU,QAAQ,OAAO,IAAI;EACnC,OAAO,YAAY,OACjB,UACA,WACA,KAAK,UACL,QAAQ,QACR,OACF;CACF;CACA,QAAQ,YAAY,SAChB,OACE,UACA,MACA,cACkB;EAClB,MAAM,UAAU,QAAQ,OAAO,IAAI;EACnC,OAAO,YAAY,OACjB,UACA,WACA,QAAQ,QACR,OACF;CACF,IACA,KAAA;CACJ,MAAM,OAAO,aAAqB;EAEhC,OAAO,EACL,WAAU,MAFW,YAAY,KAAK,UAAU,QAAQ,MAAM,GAG3D,QAAQ,MAAM,EAAE,WAAW,QAAQ,MAAM,EACzC,KAAK,MACJ,QAAQ,OAAO;GACb,IAAI,EAAE;GACN,WAAW,EAAE;GACb,QAAQ,EAAE;GACV,SAAS,EAAE;EACb,CAAC,CACH,EACC,QAAQ,EACb;CACF;CACA,cAAc,cAAsB,YAAY,YAAY,SAAS;AACvE"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- export type { CloudMessage } from "./AssistantCloudThreadMessages.js";
2
- export type { AssistantCloudTelemetryConfig } from "./AssistantCloudAPI.js";
3
- export type { AssistantCloudRunReport } from "./AssistantCloudRuns.js";
4
- export { AssistantCloud } from "./AssistantCloud.js";
5
- export { CloudMessagePersistence } from "./CloudMessagePersistence.js";
6
- export { createFormattedPersistence, type MessageFormatAdapter, } from "./FormattedCloudPersistence.js";
7
- export { wrapSamplingHandler, createSamplingCollector, type SamplingCallData, type McpSamplingHandler, } from "./instrumentMcpSampling.js";
8
- //# sourceMappingURL=index.d.ts.map
1
+ import { McpSamplingHandler, SamplingCallData, createSamplingCollector, wrapSamplingHandler } from "./instrumentMcpSampling.js";
2
+ import { AssistantCloudRunReport } from "./AssistantCloudRuns.js";
3
+ import { AssistantCloudTelemetryConfig } from "./AssistantCloudAPI.js";
4
+ import { CloudMessage } from "./AssistantCloudThreadMessages.js";
5
+ import { AssistantCloud } from "./AssistantCloud.js";
6
+ import { CloudMessagePersistence } from "./CloudMessagePersistence.js";
7
+ import { MessageFormatAdapter, createFormattedPersistence } from "./FormattedCloudPersistence.js";
8
+ export { AssistantCloud, type AssistantCloudRunReport, type AssistantCloudTelemetryConfig, type CloudMessage, CloudMessagePersistence, type McpSamplingHandler, type MessageFormatAdapter, type SamplingCallData, createFormattedPersistence, createSamplingCollector, wrapSamplingHandler };
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- export { AssistantCloud } from "./AssistantCloud.js";
2
- export { CloudMessagePersistence } from "./CloudMessagePersistence.js";
3
- export { createFormattedPersistence, } from "./FormattedCloudPersistence.js";
4
- export { wrapSamplingHandler, createSamplingCollector, } from "./instrumentMcpSampling.js";
5
- //# sourceMappingURL=index.js.map
1
+ import { AssistantCloud } from "./AssistantCloud.js";
2
+ import { CloudMessagePersistence } from "./CloudMessagePersistence.js";
3
+ import { createFormattedPersistence } from "./FormattedCloudPersistence.js";
4
+ import { createSamplingCollector, wrapSamplingHandler } from "./instrumentMcpSampling.js";
5
+ export { AssistantCloud, CloudMessagePersistence, createFormattedPersistence, createSamplingCollector, wrapSamplingHandler };
@@ -1,3 +1,4 @@
1
+ //#region src/instrumentMcpSampling.d.ts
1
2
  /**
2
3
  * MCP sampling instrumentation utility.
3
4
  *
@@ -5,40 +6,40 @@
5
6
  * (sampling/createMessage requests) made during tool execution.
6
7
  * The captured data can be reported as child generation spans.
7
8
  */
8
- export type SamplingCallData = {
9
- model_id?: string;
10
- input_tokens?: number;
11
- output_tokens?: number;
12
- reasoning_tokens?: number;
13
- cached_input_tokens?: number;
14
- duration_ms?: number;
9
+ type SamplingCallData = {
10
+ model_id?: string;
11
+ input_tokens?: number;
12
+ output_tokens?: number;
13
+ reasoning_tokens?: number;
14
+ cached_input_tokens?: number;
15
+ duration_ms?: number;
15
16
  };
16
- export type McpSamplingHandler = (request: McpSamplingRequest) => Promise<McpSamplingResponse>;
17
- export type McpSamplingRequest = {
18
- method: "sampling/createMessage";
19
- params: {
20
- messages: unknown[];
21
- modelPreferences?: {
22
- hints?: {
23
- name?: string;
24
- }[];
25
- };
26
- maxTokens?: number;
27
- [key: string]: unknown;
28
- };
29
- };
30
- export type McpSamplingResponse = {
31
- model?: string;
32
- content: unknown;
33
- usage?: {
34
- inputTokens?: number;
35
- outputTokens?: number;
36
- promptTokens?: number;
37
- completionTokens?: number;
38
- reasoningTokens?: number;
39
- cachedInputTokens?: number;
17
+ type McpSamplingHandler = (request: McpSamplingRequest) => Promise<McpSamplingResponse>;
18
+ type McpSamplingRequest = {
19
+ method: "sampling/createMessage";
20
+ params: {
21
+ messages: unknown[];
22
+ modelPreferences?: {
23
+ hints?: {
24
+ name?: string;
25
+ }[];
40
26
  };
27
+ maxTokens?: number;
41
28
  [key: string]: unknown;
29
+ };
30
+ };
31
+ type McpSamplingResponse = {
32
+ model?: string;
33
+ content: unknown;
34
+ usage?: {
35
+ inputTokens?: number;
36
+ outputTokens?: number;
37
+ promptTokens?: number;
38
+ completionTokens?: number;
39
+ reasoningTokens?: number;
40
+ cachedInputTokens?: number;
41
+ };
42
+ [key: string]: unknown;
42
43
  };
43
44
  /**
44
45
  * Wraps an MCP sampling handler to intercept and measure sampling calls.
@@ -58,7 +59,7 @@ export type McpSamplingResponse = {
58
59
  * // After tool execution, `samplingCalls` contains metrics for all nested LLM calls
59
60
  * ```
60
61
  */
61
- export declare function wrapSamplingHandler(handler: McpSamplingHandler, onSamplingCall: (data: SamplingCallData) => void): McpSamplingHandler;
62
+ declare function wrapSamplingHandler(handler: McpSamplingHandler, onSamplingCall: (data: SamplingCallData) => void): McpSamplingHandler;
62
63
  /**
63
64
  * Creates a collector that accumulates sampling call data during tool execution.
64
65
  * Use with `wrapSamplingHandler` to capture all sampling calls for a tool invocation.
@@ -71,9 +72,11 @@ export declare function wrapSamplingHandler(handler: McpSamplingHandler, onSampl
71
72
  * const calls = collector.getCalls(); // SamplingCallData[]
72
73
  * ```
73
74
  */
74
- export declare function createSamplingCollector(): {
75
- collect: (data: SamplingCallData) => number;
76
- getCalls: () => SamplingCallData[];
77
- reset: () => void;
75
+ declare function createSamplingCollector(): {
76
+ collect: (data: SamplingCallData) => number;
77
+ getCalls: () => SamplingCallData[];
78
+ reset: () => void;
78
79
  };
80
+ //#endregion
81
+ export { McpSamplingHandler, McpSamplingRequest, McpSamplingResponse, SamplingCallData, createSamplingCollector, wrapSamplingHandler };
79
82
  //# sourceMappingURL=instrumentMcpSampling.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentMcpSampling.d.ts","sourceRoot":"","sources":["../src/instrumentMcpSampling.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAC/B,OAAO,EAAE,kBAAkB,KACxB,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAElC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,wBAAwB,CAAC;IACjC,MAAM,EAAE;QACN,QAAQ,EAAE,OAAO,EAAE,CAAC;QACpB,gBAAgB,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE;gBAAE,IAAI,CAAC,EAAE,MAAM,CAAA;aAAE,EAAE,CAAA;SAAE,CAAC;QACnD,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,kBAAkB,EAC3B,cAAc,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,GAC/C,kBAAkB,CA+BpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB;oBAGnB,gBAAgB;;;EAMnC"}
1
+ {"version":3,"file":"instrumentMcpSampling.d.ts","names":[],"sources":["../src/instrumentMcpSampling.ts"],"mappings":";;AAQA;;;;;;KAAY,gBAAA;EACV,QAAA;EACA,YAAA;EACA,aAAA;EACA,gBAAA;EACA,mBAAA;EACA,WAAA;AAAA;AAAA,KAGU,kBAAA,IACV,OAAA,EAAS,kBAAA,KACN,OAAA,CAAQ,mBAAA;AAAA,KAED,kBAAA;EACV,MAAA;EACA,MAAA;IACE,QAAA;IACA,gBAAA;MAAqB,KAAA;QAAU,IAAA;MAAA;IAAA;IAC/B,SAAA;IAAA,CACC,GAAA;EAAA;AAAA;AAAA,KAIO,mBAAA;EACV,KAAA;EACA,OAAA;EACA,KAAA;IACE,WAAA;IACA,YAAA;IACA,YAAA;IACA,gBAAA;IACA,eAAA;IACA,iBAAA;EAAA;EAAA,CAED,GAAA;AAAA;;;;;;;;;;;;;;;AAAW;AAqBd;;;iBAAgB,mBAAA,CACd,OAAA,EAAS,kBAAA,EACT,cAAA,GAAiB,IAAA,EAAM,gBAAA,YACtB,kBAAA;;;;;;;;;;;;AAAkB;iBA6CL,uBAAA,CAAA;kBAGI,gBAAA;kBAAA,gBAAA"}