@assistant-ui/core 0.1.1 → 0.1.3

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 (110) hide show
  1. package/dist/model-context/frame/provider.d.ts.map +1 -1
  2. package/dist/model-context/frame/provider.js +2 -4
  3. package/dist/model-context/frame/provider.js.map +1 -1
  4. package/dist/react/RuntimeAdapter.js +4 -1
  5. package/dist/react/RuntimeAdapter.js.map +1 -1
  6. package/dist/react/index.d.ts +2 -1
  7. package/dist/react/index.d.ts.map +1 -1
  8. package/dist/react/index.js +2 -1
  9. package/dist/react/index.js.map +1 -1
  10. package/dist/react/model-context/toolbox.d.ts +7 -1
  11. package/dist/react/model-context/toolbox.d.ts.map +1 -1
  12. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts +97 -0
  13. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -0
  14. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +111 -0
  15. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -0
  16. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +115 -0
  17. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -0
  18. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +444 -0
  19. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -0
  20. package/dist/react/runtimes/RuntimeAdapterProvider.d.ts +18 -0
  21. package/dist/react/runtimes/RuntimeAdapterProvider.d.ts.map +1 -0
  22. package/dist/react/runtimes/RuntimeAdapterProvider.js +14 -0
  23. package/dist/react/runtimes/RuntimeAdapterProvider.js.map +1 -0
  24. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts +5 -0
  25. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -0
  26. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +528 -0
  27. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -0
  28. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts +15 -0
  29. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts.map +1 -0
  30. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js +83 -0
  31. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js.map +1 -0
  32. package/dist/react/runtimes/cloud/auiV0.d.ts +62 -0
  33. package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -0
  34. package/dist/react/runtimes/cloud/auiV0.js +74 -0
  35. package/dist/react/runtimes/cloud/auiV0.js.map +1 -0
  36. package/dist/react/runtimes/cloud/index.d.ts +4 -0
  37. package/dist/react/runtimes/cloud/index.d.ts.map +1 -0
  38. package/dist/react/runtimes/cloud/index.js +4 -0
  39. package/dist/react/runtimes/cloud/index.js.map +1 -0
  40. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts +13 -0
  41. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts.map +1 -0
  42. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.js +102 -0
  43. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.js.map +1 -0
  44. package/dist/react/runtimes/createMessageConverter.d.ts +17 -0
  45. package/dist/react/runtimes/createMessageConverter.d.ts.map +1 -0
  46. package/dist/react/runtimes/createMessageConverter.js +50 -0
  47. package/dist/react/runtimes/createMessageConverter.js.map +1 -0
  48. package/dist/react/runtimes/external-message-converter.d.ts +34 -0
  49. package/dist/react/runtimes/external-message-converter.d.ts.map +1 -0
  50. package/dist/react/runtimes/external-message-converter.js +309 -0
  51. package/dist/react/runtimes/external-message-converter.js.map +1 -0
  52. package/dist/react/runtimes/index.d.ts +10 -0
  53. package/dist/react/runtimes/index.d.ts.map +1 -0
  54. package/dist/react/runtimes/index.js +10 -0
  55. package/dist/react/runtimes/index.js.map +1 -0
  56. package/dist/react/runtimes/useExternalStoreRuntime.d.ts +4 -0
  57. package/dist/react/runtimes/useExternalStoreRuntime.d.ts.map +1 -0
  58. package/dist/react/runtimes/useExternalStoreRuntime.js +19 -0
  59. package/dist/react/runtimes/useExternalStoreRuntime.js.map +1 -0
  60. package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts +4 -0
  61. package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -0
  62. package/dist/react/runtimes/useRemoteThreadListRuntime.js +48 -0
  63. package/dist/react/runtimes/useRemoteThreadListRuntime.js.map +1 -0
  64. package/dist/react/runtimes/useToolInvocations.d.ts +38 -0
  65. package/dist/react/runtimes/useToolInvocations.d.ts.map +1 -0
  66. package/dist/react/runtimes/useToolInvocations.js +411 -0
  67. package/dist/react/runtimes/useToolInvocations.js.map +1 -0
  68. package/dist/react/types/store-augmentation.d.ts +0 -1
  69. package/dist/react/types/store-augmentation.d.ts.map +1 -1
  70. package/dist/react/types/store-augmentation.js +1 -1
  71. package/dist/react/types/store-augmentation.js.map +1 -1
  72. package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
  73. package/dist/runtime/base/base-composer-runtime-core.js +2 -0
  74. package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
  75. package/dist/store/index.d.ts +1 -1
  76. package/dist/store/index.d.ts.map +1 -1
  77. package/dist/store/index.js +1 -2
  78. package/dist/store/index.js.map +1 -1
  79. package/dist/utils/json/is-json-equal.d.ts +2 -0
  80. package/dist/utils/json/is-json-equal.d.ts.map +1 -0
  81. package/dist/utils/json/is-json-equal.js +31 -0
  82. package/dist/utils/json/is-json-equal.js.map +1 -0
  83. package/dist/utils/json/is-json.d.ts +6 -0
  84. package/dist/utils/json/is-json.d.ts.map +1 -0
  85. package/dist/utils/json/is-json.js +33 -0
  86. package/dist/utils/json/is-json.js.map +1 -0
  87. package/package.json +10 -9
  88. package/src/model-context/frame/provider.ts +2 -6
  89. package/src/react/RuntimeAdapter.ts +5 -1
  90. package/src/react/index.ts +2 -1
  91. package/src/react/model-context/toolbox.ts +7 -3
  92. package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +176 -0
  93. package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +534 -0
  94. package/src/react/runtimes/RuntimeAdapterProvider.tsx +40 -0
  95. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +785 -0
  96. package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.ts +101 -0
  97. package/src/react/runtimes/cloud/auiV0.ts +160 -0
  98. package/src/react/runtimes/cloud/index.ts +3 -0
  99. package/src/react/runtimes/cloud/useCloudThreadListAdapter.tsx +152 -0
  100. package/src/react/runtimes/createMessageConverter.ts +77 -0
  101. package/src/react/runtimes/external-message-converter.ts +487 -0
  102. package/src/react/runtimes/index.ts +30 -0
  103. package/src/react/runtimes/useExternalStoreRuntime.ts +27 -0
  104. package/src/react/runtimes/useRemoteThreadListRuntime.ts +76 -0
  105. package/src/react/runtimes/useToolInvocations.ts +594 -0
  106. package/src/react/types/store-augmentation.ts +0 -2
  107. package/src/runtime/base/base-composer-runtime-core.ts +2 -0
  108. package/src/store/index.ts +1 -2
  109. package/src/utils/json/is-json-equal.ts +48 -0
  110. package/src/utils/json/is-json.ts +58 -0
@@ -0,0 +1,528 @@
1
+ import { useState } from "react";
2
+ import { CloudMessagePersistence, createFormattedPersistence, } from "assistant-cloud";
3
+ import { auiV0Decode, auiV0Encode } from "./auiV0.js";
4
+ import { useAui } from "@assistant-ui/store";
5
+ const globalPersistence = new WeakMap();
6
+ class AssistantCloudThreadHistoryAdapter {
7
+ cloudRef;
8
+ aui;
9
+ constructor(cloudRef, aui) {
10
+ this.cloudRef = cloudRef;
11
+ this.aui = aui;
12
+ }
13
+ get _persistence() {
14
+ const key = this.aui.threadListItem();
15
+ if (!globalPersistence.has(key)) {
16
+ globalPersistence.set(key, new CloudMessagePersistence(this.cloudRef.current));
17
+ }
18
+ return globalPersistence.get(key);
19
+ }
20
+ withFormat(formatAdapter) {
21
+ const adapter = this;
22
+ const formatted = createFormattedPersistence(this._persistence, formatAdapter);
23
+ return {
24
+ // Note: callers must also call reportTelemetry() for run tracking
25
+ async append(item) {
26
+ const { remoteId } = await adapter.aui.threadListItem().initialize();
27
+ await formatted.append(remoteId, item);
28
+ },
29
+ async update(item, localMessageId) {
30
+ const remoteId = adapter.aui.threadListItem().getState().remoteId;
31
+ if (!remoteId)
32
+ return;
33
+ await formatted.update?.(remoteId, item, localMessageId);
34
+ },
35
+ reportTelemetry(items, options) {
36
+ const encodedRunMessages = items.map((item) => formatAdapter.encode(item));
37
+ adapter._reportRunTelemetry(formatAdapter.format, encodedRunMessages, options);
38
+ },
39
+ async load() {
40
+ const remoteId = adapter.aui.threadListItem().getState().remoteId;
41
+ if (!remoteId)
42
+ return { messages: [] };
43
+ return formatted.load(remoteId);
44
+ },
45
+ };
46
+ }
47
+ async append({ parentId, message }) {
48
+ const { remoteId } = await this.aui.threadListItem().initialize();
49
+ const encoded = auiV0Encode(message);
50
+ await this._persistence.append(remoteId, message.id, parentId, "aui/v0", encoded);
51
+ if (this.cloudRef.current.telemetry.enabled) {
52
+ this._maybeReportRun(remoteId, "aui/v0", encoded);
53
+ }
54
+ }
55
+ async load() {
56
+ const remoteId = this.aui.threadListItem().getState().remoteId;
57
+ if (!remoteId)
58
+ return { messages: [] };
59
+ const messages = await this._persistence.load(remoteId, "aui/v0");
60
+ return {
61
+ messages: messages
62
+ .filter((m) => m.format === "aui/v0")
63
+ .map(auiV0Decode)
64
+ .reverse(),
65
+ };
66
+ }
67
+ _reportRunTelemetry(format, runMessages, options) {
68
+ if (!this.cloudRef.current.telemetry.enabled)
69
+ return;
70
+ const remoteId = this.aui.threadListItem().getState().remoteId;
71
+ if (!remoteId)
72
+ return;
73
+ const extracted = extractRunTelemetry(format, runMessages);
74
+ if (!extracted)
75
+ return;
76
+ this._sendReport(remoteId, extracted, options?.durationMs, options?.stepTimestamps);
77
+ }
78
+ _maybeReportRun(remoteId, format, content) {
79
+ const extracted = extractTelemetry(format, content);
80
+ if (!extracted)
81
+ return;
82
+ this._sendReport(remoteId, extracted);
83
+ }
84
+ _sendReport(remoteId, data, durationMs, stepTimestamps) {
85
+ const mergedSteps = mergeStepTimestamps(data.steps, stepTimestamps);
86
+ // Keep in sync with assistant-cloud createRunSchema
87
+ // (apps/aui-cloud-api/src/endpoints/runs/create.ts).
88
+ const initial = {
89
+ thread_id: remoteId,
90
+ status: data.status,
91
+ ...(data.totalSteps != null
92
+ ? { total_steps: data.totalSteps }
93
+ : undefined),
94
+ ...(data.toolCalls ? { tool_calls: data.toolCalls } : undefined),
95
+ ...(mergedSteps ? { steps: mergedSteps } : undefined),
96
+ ...(data.inputTokens != null
97
+ ? { input_tokens: data.inputTokens }
98
+ : undefined),
99
+ ...(data.outputTokens != null
100
+ ? { output_tokens: data.outputTokens }
101
+ : undefined),
102
+ ...(data.reasoningTokens != null
103
+ ? { reasoning_tokens: data.reasoningTokens }
104
+ : undefined),
105
+ ...(data.cachedInputTokens != null
106
+ ? { cached_input_tokens: data.cachedInputTokens }
107
+ : undefined),
108
+ ...(durationMs != null ? { duration_ms: durationMs } : undefined),
109
+ ...(data.outputText != null
110
+ ? { output_text: data.outputText }
111
+ : undefined),
112
+ ...(data.metadata ? { metadata: data.metadata } : undefined),
113
+ ...(data.modelId ? { model_id: data.modelId } : undefined),
114
+ };
115
+ const { beforeReport } = this.cloudRef.current.telemetry;
116
+ const report = beforeReport ? beforeReport(initial) : initial;
117
+ if (!report)
118
+ return;
119
+ this.cloudRef.current.runs.report(report).catch(() => { });
120
+ }
121
+ }
122
+ const MAX_SPAN_CONTENT = 50_000;
123
+ function truncateStr(value) {
124
+ if (value.length <= MAX_SPAN_CONTENT)
125
+ return value;
126
+ return value.slice(0, MAX_SPAN_CONTENT);
127
+ }
128
+ function safeStringify(value) {
129
+ if (value == null)
130
+ return undefined;
131
+ try {
132
+ return truncateStr(JSON.stringify(value));
133
+ }
134
+ catch {
135
+ return undefined;
136
+ }
137
+ }
138
+ const BASE64_PATTERN = /^[A-Za-z0-9+/]{100,}={0,2}$/;
139
+ function summarizeMcpResult(value) {
140
+ if (value == null)
141
+ return undefined;
142
+ try {
143
+ const parsed = typeof value === "string" ? JSON.parse(value) : value;
144
+ if (Array.isArray(parsed)) {
145
+ const summarized = parsed.map((item) => {
146
+ if (item && typeof item === "object" && item.type) {
147
+ if ((item.type === "image" || item.type === "audio") &&
148
+ typeof item.data === "string" &&
149
+ BASE64_PATTERN.test(item.data.slice(0, 200))) {
150
+ const sizeKB = ((item.data.length * 3) / 4 / 1024).toFixed(1);
151
+ return { ...item, data: `[${item.type}: ${sizeKB}KB]` };
152
+ }
153
+ }
154
+ return item;
155
+ });
156
+ return truncateStr(JSON.stringify(summarized));
157
+ }
158
+ }
159
+ catch {
160
+ // not JSON array, fall through
161
+ }
162
+ return safeStringify(value);
163
+ }
164
+ function buildToolCall(toolName, toolCallId, args, result, argsText, toolSource) {
165
+ const call = {
166
+ tool_name: toolName,
167
+ tool_call_id: toolCallId,
168
+ };
169
+ const toolArgs = argsText ?? safeStringify(args);
170
+ if (toolArgs !== undefined)
171
+ call.tool_args = toolArgs;
172
+ const toolResult = toolSource === "mcp" ? summarizeMcpResult(result) : safeStringify(result);
173
+ if (toolResult !== undefined)
174
+ call.tool_result = toolResult;
175
+ if (toolSource)
176
+ call.tool_source = toolSource;
177
+ return call;
178
+ }
179
+ function mergeStepTimestamps(steps, timestamps) {
180
+ if (!timestamps)
181
+ return steps;
182
+ if (!steps)
183
+ return timestamps.map((t) => ({ ...t }));
184
+ const len = Math.min(steps.length, timestamps.length);
185
+ return steps.map((s, i) => ({
186
+ ...s,
187
+ ...(i < len ? timestamps[i] : undefined),
188
+ }));
189
+ }
190
+ function extractTelemetry(format, content) {
191
+ switch (format) {
192
+ case "aui/v0":
193
+ return extractAuiV0(content);
194
+ case "ai-sdk/v6":
195
+ return extractAiSdkV6(content);
196
+ default:
197
+ return null;
198
+ }
199
+ }
200
+ function extractRunTelemetry(format, runMessages) {
201
+ if (format === "ai-sdk/v6") {
202
+ return aggregateAiSdkV6RunSteps(runMessages);
203
+ }
204
+ for (let i = runMessages.length - 1; i >= 0; i--) {
205
+ const result = extractTelemetry(format, runMessages[i]);
206
+ if (result)
207
+ return result;
208
+ }
209
+ return null;
210
+ }
211
+ const AUI_STATUS_MAP = {
212
+ error: "error",
213
+ incomplete: "incomplete",
214
+ };
215
+ function extractAuiV0(content) {
216
+ const msg = content;
217
+ if (msg.role !== "assistant")
218
+ return null;
219
+ const toolCalls = msg.content
220
+ ?.filter((p) => p.type === "tool-call" && p.toolName && p.toolCallId)
221
+ .map((p) => buildToolCall(p.toolName, p.toolCallId, p.args, p.result, p.argsText));
222
+ const textParts = msg.content?.filter((p) => p.type === "text" && p.text);
223
+ const outputText = textParts && textParts.length > 0
224
+ ? truncateStr(textParts.map((p) => p.text).join(""))
225
+ : undefined;
226
+ const steps = msg.metadata?.steps;
227
+ let inputTokens;
228
+ let outputTokens;
229
+ let reasoningTokens;
230
+ let cachedInputTokens;
231
+ if (steps && steps.length > 0) {
232
+ let totalInput = 0;
233
+ let totalOutput = 0;
234
+ let totalReasoning = 0;
235
+ let totalCachedInput = 0;
236
+ let hasInput = false;
237
+ let hasOutput = false;
238
+ let hasReasoning = false;
239
+ let hasCachedInput = false;
240
+ for (const step of steps) {
241
+ if (step.usage?.inputTokens != null) {
242
+ totalInput += step.usage.inputTokens;
243
+ hasInput = true;
244
+ }
245
+ if (step.usage?.outputTokens != null) {
246
+ totalOutput += step.usage.outputTokens;
247
+ hasOutput = true;
248
+ }
249
+ if (step.usage?.reasoningTokens != null) {
250
+ totalReasoning += step.usage.reasoningTokens;
251
+ hasReasoning = true;
252
+ }
253
+ if (step.usage?.cachedInputTokens != null) {
254
+ totalCachedInput += step.usage.cachedInputTokens;
255
+ hasCachedInput = true;
256
+ }
257
+ }
258
+ inputTokens = hasInput ? totalInput : undefined;
259
+ outputTokens = hasOutput ? totalOutput : undefined;
260
+ reasoningTokens = hasReasoning ? totalReasoning : undefined;
261
+ cachedInputTokens = hasCachedInput ? totalCachedInput : undefined;
262
+ }
263
+ const statusType = msg.status?.type;
264
+ const status = (statusType && AUI_STATUS_MAP[statusType]) || "completed";
265
+ const metadata = msg.metadata?.custom;
266
+ const modelId = msg.metadata?.modelId ??
267
+ (typeof msg.metadata?.custom?.modelId === "string"
268
+ ? msg.metadata.custom.modelId
269
+ : undefined);
270
+ const telemetrySteps = steps && steps.length > 1
271
+ ? steps.map((s) => ({
272
+ ...(s.usage?.inputTokens != null
273
+ ? { input_tokens: s.usage.inputTokens }
274
+ : undefined),
275
+ ...(s.usage?.outputTokens != null
276
+ ? { output_tokens: s.usage.outputTokens }
277
+ : undefined),
278
+ ...(s.usage?.reasoningTokens != null
279
+ ? { reasoning_tokens: s.usage.reasoningTokens }
280
+ : undefined),
281
+ ...(s.usage?.cachedInputTokens != null
282
+ ? { cached_input_tokens: s.usage.cachedInputTokens }
283
+ : undefined),
284
+ }))
285
+ : undefined;
286
+ return {
287
+ status,
288
+ ...(toolCalls && toolCalls.length > 0 ? { toolCalls } : undefined),
289
+ ...(steps?.length ? { totalSteps: steps.length } : undefined),
290
+ ...(inputTokens != null ? { inputTokens } : undefined),
291
+ ...(outputTokens != null ? { outputTokens } : undefined),
292
+ ...(reasoningTokens != null ? { reasoningTokens } : undefined),
293
+ ...(cachedInputTokens != null ? { cachedInputTokens } : undefined),
294
+ ...(outputText != null ? { outputText } : undefined),
295
+ ...(metadata ? { metadata } : undefined),
296
+ ...(telemetrySteps ? { steps: telemetrySteps } : undefined),
297
+ ...(modelId ? { modelId } : undefined),
298
+ };
299
+ }
300
+ function isToolCallPart(p) {
301
+ if (!p.toolCallId)
302
+ return false;
303
+ if (p.type === "tool-call" || p.type === "dynamic-tool")
304
+ return !!p.toolName;
305
+ return p.type.startsWith("tool-") || p.type.startsWith("dynamic-tool-");
306
+ }
307
+ function isDynamicToolPart(p) {
308
+ return p.type === "dynamic-tool" || p.type.startsWith("dynamic-tool-");
309
+ }
310
+ function partToToolCall(p) {
311
+ const toolSource = isDynamicToolPart(p)
312
+ ? "mcp"
313
+ : undefined;
314
+ return buildToolCall(p.toolName ?? p.type.slice(5), p.toolCallId, p.args ?? p.input, p.result ?? p.output, undefined, toolSource);
315
+ }
316
+ function collectAiSdkV6Parts(parts) {
317
+ const textParts = [];
318
+ const toolCalls = [];
319
+ const stepsData = [];
320
+ let currentStepToolCalls = null;
321
+ for (const p of parts) {
322
+ if (p.type === "step-start") {
323
+ if (currentStepToolCalls !== null) {
324
+ stepsData.push({ tool_calls: currentStepToolCalls });
325
+ }
326
+ currentStepToolCalls = [];
327
+ }
328
+ else if (p.type === "text" && p.text) {
329
+ textParts.push(p.text);
330
+ }
331
+ else if (isToolCallPart(p)) {
332
+ const tc = partToToolCall(p);
333
+ toolCalls.push(tc);
334
+ if (currentStepToolCalls !== null) {
335
+ currentStepToolCalls.push(tc);
336
+ }
337
+ }
338
+ }
339
+ if (currentStepToolCalls !== null) {
340
+ stepsData.push({ tool_calls: currentStepToolCalls });
341
+ }
342
+ return { textParts, toolCalls, stepsData };
343
+ }
344
+ function extractModelId(metadata) {
345
+ if (!metadata)
346
+ return undefined;
347
+ if (typeof metadata.modelId === "string")
348
+ return metadata.modelId;
349
+ const custom = metadata.custom;
350
+ if (typeof custom?.modelId === "string")
351
+ return custom.modelId;
352
+ return undefined;
353
+ }
354
+ function buildAiSdkV6Result(textParts, toolCalls, totalSteps, metadata, stepsData, usage) {
355
+ const hasText = textParts.length > 0;
356
+ const outputText = hasText ? truncateStr(textParts.join("")) : undefined;
357
+ const modelId = extractModelId(metadata);
358
+ const steps = stepsData && stepsData.length > 1
359
+ ? stepsData.map((s) => ({
360
+ ...(s.tool_calls.length > 0
361
+ ? { tool_calls: s.tool_calls }
362
+ : undefined),
363
+ }))
364
+ : undefined;
365
+ return {
366
+ status: hasText ? "completed" : "incomplete",
367
+ ...(toolCalls.length > 0 ? { toolCalls } : undefined),
368
+ ...(totalSteps > 0 ? { totalSteps } : undefined),
369
+ ...(usage?.inputTokens != null
370
+ ? { inputTokens: usage.inputTokens }
371
+ : undefined),
372
+ ...(usage?.outputTokens != null
373
+ ? { outputTokens: usage.outputTokens }
374
+ : undefined),
375
+ ...(usage?.reasoningTokens != null
376
+ ? { reasoningTokens: usage.reasoningTokens }
377
+ : undefined),
378
+ ...(usage?.cachedInputTokens != null
379
+ ? { cachedInputTokens: usage.cachedInputTokens }
380
+ : undefined),
381
+ ...(outputText != null ? { outputText } : undefined),
382
+ ...(metadata ? { metadata } : undefined),
383
+ ...(steps ? { steps } : undefined),
384
+ ...(modelId ? { modelId } : undefined),
385
+ };
386
+ }
387
+ function normalizeUsage(u) {
388
+ const input = u.inputTokens ?? u.promptTokens;
389
+ const output = u.outputTokens ?? u.completionTokens;
390
+ if (input == null &&
391
+ output == null &&
392
+ u.reasoningTokens == null &&
393
+ u.cachedInputTokens == null) {
394
+ return undefined;
395
+ }
396
+ return {
397
+ ...(input != null ? { inputTokens: input } : undefined),
398
+ ...(output != null ? { outputTokens: output } : undefined),
399
+ ...(u.reasoningTokens != null
400
+ ? { reasoningTokens: u.reasoningTokens }
401
+ : undefined),
402
+ ...(u.cachedInputTokens != null
403
+ ? { cachedInputTokens: u.cachedInputTokens }
404
+ : undefined),
405
+ };
406
+ }
407
+ function extractAiSdkV6Usage(metadata) {
408
+ // Try top-level metadata.usage
409
+ const usage = metadata?.usage;
410
+ if (usage) {
411
+ const normalized = normalizeUsage(usage);
412
+ if (normalized)
413
+ return normalized;
414
+ }
415
+ // Try aggregating from metadata.steps[].usage
416
+ const steps = metadata?.steps;
417
+ if (steps && steps.length > 0) {
418
+ let inputTokens = 0;
419
+ let outputTokens = 0;
420
+ let reasoningTokens = 0;
421
+ let cachedInputTokens = 0;
422
+ let hasInput = false;
423
+ let hasOutput = false;
424
+ let hasReasoning = false;
425
+ let hasCachedInput = false;
426
+ let hasAny = false;
427
+ for (const s of steps) {
428
+ if (!s.usage)
429
+ continue;
430
+ const n = normalizeUsage(s.usage);
431
+ if (n) {
432
+ if (n.inputTokens != null) {
433
+ inputTokens += n.inputTokens;
434
+ hasInput = true;
435
+ }
436
+ if (n.outputTokens != null) {
437
+ outputTokens += n.outputTokens;
438
+ hasOutput = true;
439
+ }
440
+ if (n.reasoningTokens != null) {
441
+ reasoningTokens += n.reasoningTokens;
442
+ hasReasoning = true;
443
+ }
444
+ if (n.cachedInputTokens != null) {
445
+ cachedInputTokens += n.cachedInputTokens;
446
+ hasCachedInput = true;
447
+ }
448
+ hasAny = true;
449
+ }
450
+ }
451
+ if (hasAny) {
452
+ return {
453
+ ...(hasInput ? { inputTokens } : undefined),
454
+ ...(hasOutput ? { outputTokens } : undefined),
455
+ ...(hasReasoning ? { reasoningTokens } : undefined),
456
+ ...(hasCachedInput ? { cachedInputTokens } : undefined),
457
+ };
458
+ }
459
+ }
460
+ return undefined;
461
+ }
462
+ function extractAiSdkV6(content) {
463
+ const msg = content;
464
+ if (msg.role !== "assistant")
465
+ return null;
466
+ const { textParts, toolCalls, stepsData } = collectAiSdkV6Parts(msg.parts ?? []);
467
+ return buildAiSdkV6Result(textParts, toolCalls, stepsData.length, msg.metadata, stepsData, extractAiSdkV6Usage(msg.metadata));
468
+ }
469
+ function aggregateAiSdkV6RunSteps(stepMessages) {
470
+ const allTextParts = [];
471
+ const allToolCalls = [];
472
+ const allStepsData = [];
473
+ let hasAssistant = false;
474
+ let metadata;
475
+ let inputTokens = 0;
476
+ let outputTokens = 0;
477
+ let reasoningTokens = 0;
478
+ let cachedInputTokens = 0;
479
+ let hasInput = false;
480
+ let hasOutput = false;
481
+ let hasReasoning = false;
482
+ let hasCachedInput = false;
483
+ for (const content of stepMessages) {
484
+ const msg = content;
485
+ if (msg.role !== "assistant")
486
+ continue;
487
+ hasAssistant = true;
488
+ const { textParts, toolCalls, stepsData } = collectAiSdkV6Parts(msg.parts ?? []);
489
+ allTextParts.push(...textParts);
490
+ allToolCalls.push(...toolCalls);
491
+ allStepsData.push(...stepsData);
492
+ if (msg.metadata)
493
+ metadata = msg.metadata;
494
+ const usage = extractAiSdkV6Usage(msg.metadata);
495
+ if (usage) {
496
+ if (usage.inputTokens != null) {
497
+ inputTokens += usage.inputTokens;
498
+ hasInput = true;
499
+ }
500
+ if (usage.outputTokens != null) {
501
+ outputTokens += usage.outputTokens;
502
+ hasOutput = true;
503
+ }
504
+ if (usage.reasoningTokens != null) {
505
+ reasoningTokens += usage.reasoningTokens;
506
+ hasReasoning = true;
507
+ }
508
+ if (usage.cachedInputTokens != null) {
509
+ cachedInputTokens += usage.cachedInputTokens;
510
+ hasCachedInput = true;
511
+ }
512
+ }
513
+ }
514
+ if (!hasAssistant)
515
+ return null;
516
+ return buildAiSdkV6Result(allTextParts, allToolCalls, allStepsData.length, metadata, allStepsData, {
517
+ ...(hasInput ? { inputTokens } : undefined),
518
+ ...(hasOutput ? { outputTokens } : undefined),
519
+ ...(hasReasoning ? { reasoningTokens } : undefined),
520
+ ...(hasCachedInput ? { cachedInputTokens } : undefined),
521
+ });
522
+ }
523
+ export function useAssistantCloudThreadHistoryAdapter(cloudRef) {
524
+ const aui = useAui();
525
+ const [adapter] = useState(() => new AssistantCloudThreadHistoryAdapter(cloudRef, aui));
526
+ return adapter;
527
+ }
528
+ //# sourceMappingURL=AssistantCloudThreadHistoryAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssistantCloudThreadHistoryAdapter.js","sourceRoot":"","sources":["../../../../src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { AssistantCloud } from "assistant-cloud";
2
+ import type { Attachment, PendingAttachment, CompleteAttachment } from "../../../types/index.js";
3
+ import type { AttachmentAdapter } from "../../../adapters/attachment.js";
4
+ export declare class CloudFileAttachmentAdapter implements AttachmentAdapter {
5
+ private cloud;
6
+ accept: string;
7
+ constructor(cloud: AssistantCloud);
8
+ private uploadedUrls;
9
+ add({ file, }: {
10
+ file: File;
11
+ }): AsyncGenerator<PendingAttachment, void>;
12
+ remove(attachment: Attachment): Promise<void>;
13
+ send(attachment: PendingAttachment): Promise<CompleteAttachment>;
14
+ }
15
+ //# sourceMappingURL=CloudFileAttachmentAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CloudFileAttachmentAdapter.d.ts","sourceRoot":"","sources":["../../../../src/react/runtimes/cloud/CloudFileAttachmentAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAEnB,gCAAuB;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,wCAAqC;AAUtE,qBAAa,0BAA2B,YAAW,iBAAiB;IAGtD,OAAO,CAAC,KAAK;IAFlB,MAAM,SAAO;gBAEA,KAAK,EAAE,cAAc;IAEzC,OAAO,CAAC,YAAY,CAA6B;IAEnC,GAAG,CAAC,EAChB,IAAI,GACL,EAAE;QACD,IAAI,EAAE,IAAI,CAAC;KACZ,GAAG,cAAc,CAAC,iBAAiB,EAAE,IAAI,CAAC;IAyC9B,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,IAAI,CACf,UAAU,EAAE,iBAAiB,GAC5B,OAAO,CAAC,kBAAkB,CAAC;CAyB/B"}
@@ -0,0 +1,83 @@
1
+ const guessAttachmentType = (contentType) => {
2
+ if (contentType.startsWith("image/"))
3
+ return "image";
4
+ if (contentType.startsWith("text/"))
5
+ return "document";
6
+ return "file";
7
+ };
8
+ export class CloudFileAttachmentAdapter {
9
+ cloud;
10
+ accept = "*";
11
+ constructor(cloud) {
12
+ this.cloud = cloud;
13
+ }
14
+ uploadedUrls = new Map();
15
+ async *add({ file, }) {
16
+ const id = crypto.randomUUID();
17
+ const type = guessAttachmentType(file.type);
18
+ let attachment = {
19
+ id,
20
+ type,
21
+ name: file.name,
22
+ contentType: file.type,
23
+ file,
24
+ status: { type: "running", reason: "uploading", progress: 0 },
25
+ };
26
+ yield attachment;
27
+ try {
28
+ const { signedUrl, publicUrl } = await this.cloud.files.generatePresignedUploadUrl({
29
+ filename: file.name,
30
+ });
31
+ await fetch(signedUrl, {
32
+ method: "PUT",
33
+ body: file,
34
+ headers: {
35
+ "Content-Type": file.type,
36
+ },
37
+ mode: "cors",
38
+ });
39
+ this.uploadedUrls.set(id, publicUrl);
40
+ attachment = {
41
+ ...attachment,
42
+ status: { type: "requires-action", reason: "composer-send" },
43
+ };
44
+ yield attachment;
45
+ }
46
+ catch {
47
+ attachment = {
48
+ ...attachment,
49
+ status: { type: "incomplete", reason: "error" },
50
+ };
51
+ yield attachment;
52
+ }
53
+ }
54
+ async remove(attachment) {
55
+ this.uploadedUrls.delete(attachment.id);
56
+ }
57
+ async send(attachment) {
58
+ const url = this.uploadedUrls.get(attachment.id);
59
+ if (!url)
60
+ throw new Error("Attachment not uploaded");
61
+ this.uploadedUrls.delete(attachment.id);
62
+ let content;
63
+ if (attachment.type === "image") {
64
+ content = [{ type: "image", image: url, filename: attachment.name }];
65
+ }
66
+ else {
67
+ content = [
68
+ {
69
+ type: "file",
70
+ data: url,
71
+ mimeType: attachment.contentType ?? "",
72
+ filename: attachment.name,
73
+ },
74
+ ];
75
+ }
76
+ return {
77
+ ...attachment,
78
+ status: { type: "complete" },
79
+ content,
80
+ };
81
+ }
82
+ }
83
+ //# sourceMappingURL=CloudFileAttachmentAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CloudFileAttachmentAdapter.js","sourceRoot":"","sources":["../../../../src/react/runtimes/cloud/CloudFileAttachmentAdapter.ts"],"names":[],"mappings":"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"}