assistant-cloud 0.2.1 → 0.2.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.
- package/README.md +24 -8
- package/dist/AssistantCloud.d.ts +16 -19
- package/dist/AssistantCloud.d.ts.map +1 -1
- package/dist/AssistantCloud.js +7 -2
- package/dist/AssistantCloud.js.map +1 -1
- package/dist/AssistantCloudAPI.d.ts +74 -72
- package/dist/AssistantCloudAPI.d.ts.map +1 -1
- package/dist/AssistantCloudAPI.js.map +1 -1
- package/dist/AssistantCloudAuthStrategy.d.ts +29 -32
- package/dist/AssistantCloudAuthStrategy.d.ts.map +1 -1
- package/dist/AssistantCloudAuthTokens.d.ts +7 -9
- package/dist/AssistantCloudAuthTokens.d.ts.map +1 -1
- package/dist/AssistantCloudEvents.d.ts +35 -29
- package/dist/AssistantCloudEvents.d.ts.map +1 -1
- package/dist/AssistantCloudEvents.js +66 -17
- package/dist/AssistantCloudEvents.js.map +1 -1
- package/dist/AssistantCloudFiles.d.ts +27 -29
- package/dist/AssistantCloudFiles.d.ts.map +1 -1
- package/dist/AssistantCloudProjectThreadMessages.d.ts +11 -13
- package/dist/AssistantCloudProjectThreadMessages.d.ts.map +1 -1
- package/dist/AssistantCloudProjectThreads.d.ts +12 -14
- package/dist/AssistantCloudProjectThreads.d.ts.map +1 -1
- package/dist/AssistantCloudProjects.d.ts +4 -7
- package/dist/AssistantCloudProjects.d.ts.map +1 -1
- package/dist/AssistantCloudRuns.d.ts +67 -56
- package/dist/AssistantCloudRuns.d.ts.map +1 -1
- package/dist/AssistantCloudRuns.js +9 -4
- package/dist/AssistantCloudRuns.js.map +1 -1
- package/dist/AssistantCloudScores.d.ts +20 -23
- package/dist/AssistantCloudScores.d.ts.map +1 -1
- package/dist/AssistantCloudThreadMessages.d.ts +41 -38
- package/dist/AssistantCloudThreadMessages.d.ts.map +1 -1
- package/dist/AssistantCloudThreadMessages.js +16 -4
- package/dist/AssistantCloudThreadMessages.js.map +1 -1
- package/dist/AssistantCloudThreads.d.ts +42 -44
- package/dist/AssistantCloudThreads.d.ts.map +1 -1
- package/dist/CloudEngagementReporter.d.ts +56 -58
- package/dist/CloudEngagementReporter.d.ts.map +1 -1
- package/dist/CloudEngagementReporter.js +4 -1
- package/dist/CloudEngagementReporter.js.map +1 -1
- package/dist/CloudMessagePersistence.d.ts +56 -58
- package/dist/CloudMessagePersistence.d.ts.map +1 -1
- package/dist/CloudMessagePersistence.js +3 -0
- package/dist/CloudMessagePersistence.js.map +1 -1
- package/dist/CloudRunReporter.d.ts +10 -13
- package/dist/CloudRunReporter.d.ts.map +1 -1
- package/dist/CloudRunReporter.js +13 -4
- package/dist/CloudRunReporter.js.map +1 -1
- package/dist/FormattedCloudPersistence.d.ts +36 -39
- package/dist/FormattedCloudPersistence.d.ts.map +1 -1
- package/dist/ai-sdk/index.d.ts +14 -17
- package/dist/ai-sdk/index.d.ts.map +1 -1
- package/dist/cloudResponse.d.ts +14 -17
- package/dist/cloudResponse.d.ts.map +1 -1
- package/dist/generateThreadTitle.d.ts +9 -12
- package/dist/generateThreadTitle.d.ts.map +1 -1
- package/dist/index.d.ts +18 -17
- package/dist/index.d.ts.map +1 -0
- package/dist/instrumentMcpSampling.d.ts +36 -39
- package/dist/instrumentMcpSampling.d.ts.map +1 -1
- package/dist/runTelemetry.d.ts +101 -94
- package/dist/runTelemetry.d.ts.map +1 -1
- package/dist/runTelemetry.js +57 -15
- package/dist/runTelemetry.js.map +1 -1
- package/dist/telemetry/index.d.ts +20 -23
- package/dist/telemetry/index.d.ts.map +1 -1
- package/dist/version.d.ts +1 -4
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +10 -9
- package/src/AssistantCloud.ts +17 -2
- package/src/AssistantCloudAPI.ts +4 -0
- package/src/AssistantCloudEvents.test.ts +157 -0
- package/src/AssistantCloudEvents.ts +82 -20
- package/src/AssistantCloudRuns.ts +35 -5
- package/src/AssistantCloudThreadMessages.test.ts +53 -2
- package/src/AssistantCloudThreadMessages.ts +34 -2
- package/src/BackendTranscriptCopy.test.ts +79 -0
- package/src/CloudEngagementReporter.ts +9 -3
- package/src/CloudMessagePersistence.ts +4 -0
- package/src/CloudRunReporter.ts +16 -4
- package/src/ai-sdk/index.test.ts +2 -2
- package/src/runTelemetry.test.ts +226 -2
- package/src/runTelemetry.ts +121 -17
- package/src/tests/AssistantCloud.test.ts +22 -0
- package/src/tests/AssistantCloudRuns.test.ts +28 -0
- package/src/tests/CloudEngagementReporter.test.ts +45 -0
- package/src/tests/CloudRunReporter.test.ts +49 -2
- package/dist/tests/setup.d.ts +0 -1
- package/dist/tests/setup.js +0 -7
- package/dist/tests/setup.js.map +0 -1
|
@@ -2,23 +2,33 @@
|
|
|
2
2
|
const FLUSH_SIZE = 20;
|
|
3
3
|
const MAX_BATCH_SIZE = 50;
|
|
4
4
|
const FLUSH_DELAY_MS = 2e3;
|
|
5
|
+
const RETRY_DELAYS_MS = [250, 1e3];
|
|
6
|
+
const pendingClearers = /* @__PURE__ */ new WeakMap();
|
|
7
|
+
const clearPendingAssistantCloudEvents = (events) => {
|
|
8
|
+
pendingClearers.get(events)?.();
|
|
9
|
+
};
|
|
5
10
|
var AssistantCloudEvents = class {
|
|
6
11
|
buffer = [];
|
|
7
12
|
timer;
|
|
8
13
|
flushing;
|
|
14
|
+
retryTimer;
|
|
15
|
+
resolveRetryDelay;
|
|
16
|
+
bestEffortRequested = false;
|
|
17
|
+
generation = 0;
|
|
9
18
|
cloud;
|
|
10
19
|
isEnabled;
|
|
11
20
|
listening = false;
|
|
12
21
|
constructor(cloud, isEnabled) {
|
|
13
22
|
this.cloud = cloud;
|
|
14
23
|
this.isEnabled = isEnabled;
|
|
24
|
+
pendingClearers.set(this, () => this.clearPending());
|
|
15
25
|
}
|
|
16
26
|
track(event) {
|
|
17
27
|
if (!this.isEnabled()) return;
|
|
18
28
|
this.listen();
|
|
19
29
|
this.buffer.push(normalizeEvent(event));
|
|
20
30
|
if (this.buffer.length >= FLUSH_SIZE) {
|
|
21
|
-
this.flush();
|
|
31
|
+
this.flush(true);
|
|
22
32
|
return;
|
|
23
33
|
}
|
|
24
34
|
this.scheduleFlush();
|
|
@@ -26,65 +36,104 @@ var AssistantCloudEvents = class {
|
|
|
26
36
|
listen() {
|
|
27
37
|
if (this.listening || typeof window === "undefined" || typeof document === "undefined") return;
|
|
28
38
|
this.listening = true;
|
|
29
|
-
window.addEventListener("pagehide", this.
|
|
39
|
+
window.addEventListener("pagehide", this.flushBestEffort);
|
|
30
40
|
document.addEventListener("visibilitychange", this.onVisibilityChange);
|
|
31
41
|
}
|
|
32
42
|
unlisten() {
|
|
33
43
|
if (!this.listening) return;
|
|
34
44
|
this.listening = false;
|
|
35
|
-
window.removeEventListener("pagehide", this.
|
|
45
|
+
window.removeEventListener("pagehide", this.flushBestEffort);
|
|
36
46
|
document.removeEventListener("visibilitychange", this.onVisibilityChange);
|
|
37
47
|
}
|
|
38
48
|
dispose() {
|
|
39
49
|
this.unlisten();
|
|
40
50
|
this.clearFlushTimer();
|
|
41
|
-
this.
|
|
51
|
+
this.flushBestEffort();
|
|
52
|
+
}
|
|
53
|
+
clearPending() {
|
|
54
|
+
this.generation++;
|
|
55
|
+
this.buffer = [];
|
|
56
|
+
this.clearFlushTimer();
|
|
57
|
+
this.interruptRetryDelay();
|
|
58
|
+
this.unlisten();
|
|
42
59
|
}
|
|
43
60
|
onVisibilityChange = () => {
|
|
44
|
-
if (document.visibilityState === "hidden") this.
|
|
61
|
+
if (document.visibilityState === "hidden") this.flushBestEffort();
|
|
62
|
+
};
|
|
63
|
+
flushBestEffort = () => {
|
|
64
|
+
if (this.flushing) {
|
|
65
|
+
this.bestEffortRequested = true;
|
|
66
|
+
this.interruptRetryDelay();
|
|
67
|
+
}
|
|
68
|
+
return this.flush(false);
|
|
45
69
|
};
|
|
46
|
-
flush = async () => {
|
|
70
|
+
flush = async (retryFailures) => {
|
|
47
71
|
if (!this.isEnabled()) {
|
|
48
|
-
this.
|
|
49
|
-
this.clearFlushTimer();
|
|
50
|
-
this.unlisten();
|
|
72
|
+
this.clearPending();
|
|
51
73
|
return;
|
|
52
74
|
}
|
|
53
75
|
if (this.flushing) return this.flushing;
|
|
54
76
|
this.clearFlushTimer();
|
|
55
|
-
const task = this.flushPending();
|
|
77
|
+
const task = this.flushPending(retryFailures);
|
|
56
78
|
this.flushing = task;
|
|
57
79
|
task.then(() => {
|
|
58
80
|
if (this.flushing !== task) return;
|
|
59
81
|
this.flushing = void 0;
|
|
82
|
+
this.bestEffortRequested = false;
|
|
60
83
|
if (this.buffer.length === 0) {
|
|
61
84
|
this.clearFlushTimer();
|
|
62
85
|
this.unlisten();
|
|
63
|
-
} else this.flush();
|
|
86
|
+
} else this.flush(true);
|
|
64
87
|
});
|
|
65
88
|
return task;
|
|
66
89
|
};
|
|
67
|
-
async flushPending() {
|
|
90
|
+
async flushPending(retryFailures) {
|
|
68
91
|
while (this.buffer.length > 0) {
|
|
69
92
|
if (!this.isEnabled()) {
|
|
70
93
|
this.buffer = [];
|
|
71
94
|
return;
|
|
72
95
|
}
|
|
73
96
|
const events = this.buffer.splice(0, MAX_BATCH_SIZE);
|
|
74
|
-
|
|
97
|
+
const generation = this.generation;
|
|
98
|
+
for (let attempt = 0;; attempt++) try {
|
|
75
99
|
await this.cloud.makeRequest("/events", {
|
|
76
100
|
method: "POST",
|
|
77
101
|
body: { events },
|
|
78
102
|
keepalive: true
|
|
79
103
|
});
|
|
80
|
-
|
|
104
|
+
if (generation !== this.generation) return;
|
|
105
|
+
break;
|
|
106
|
+
} catch {
|
|
107
|
+
if (generation !== this.generation) return;
|
|
108
|
+
const delay = retryFailures && !this.bestEffortRequested ? RETRY_DELAYS_MS[attempt] : void 0;
|
|
109
|
+
if (delay === void 0) break;
|
|
110
|
+
await this.waitForRetry(delay);
|
|
111
|
+
if (generation !== this.generation) return;
|
|
112
|
+
if (!this.isEnabled()) return this.clearPending();
|
|
113
|
+
if (this.bestEffortRequested) break;
|
|
114
|
+
}
|
|
81
115
|
}
|
|
82
116
|
}
|
|
117
|
+
waitForRetry(delay) {
|
|
118
|
+
return new Promise((resolve) => {
|
|
119
|
+
const finish = () => {
|
|
120
|
+
this.retryTimer = void 0;
|
|
121
|
+
this.resolveRetryDelay = void 0;
|
|
122
|
+
resolve();
|
|
123
|
+
};
|
|
124
|
+
this.resolveRetryDelay = finish;
|
|
125
|
+
this.retryTimer = setTimeout(finish, delay);
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
interruptRetryDelay() {
|
|
129
|
+
if (this.retryTimer !== void 0) clearTimeout(this.retryTimer);
|
|
130
|
+
this.resolveRetryDelay?.();
|
|
131
|
+
}
|
|
83
132
|
scheduleFlush() {
|
|
84
133
|
if (this.timer !== void 0) return;
|
|
85
134
|
this.timer = setTimeout(() => {
|
|
86
135
|
this.timer = void 0;
|
|
87
|
-
this.flush();
|
|
136
|
+
this.flush(true);
|
|
88
137
|
}, FLUSH_DELAY_MS);
|
|
89
138
|
}
|
|
90
139
|
clearFlushTimer() {
|
|
@@ -109,11 +158,11 @@ const isNonNegativeInteger = (value) => value !== void 0 && Number.isInteger(val
|
|
|
109
158
|
const normalizeProps = (props) => {
|
|
110
159
|
if (!props) return void 0;
|
|
111
160
|
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;
|
|
161
|
+
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
162
|
const value = Object.fromEntries(entries);
|
|
114
163
|
return new TextEncoder().encode(JSON.stringify(value)).byteLength <= 1024 ? value : void 0;
|
|
115
164
|
};
|
|
116
165
|
//#endregion
|
|
117
|
-
export { AssistantCloudEvents };
|
|
166
|
+
export { AssistantCloudEvents, clearPendingAssistantCloudEvents };
|
|
118
167
|
|
|
119
168
|
//# sourceMappingURL=AssistantCloudEvents.js.map
|
|
@@ -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;\nconst RETRY_DELAYS_MS = [250, 1_000] as const;\nconst pendingClearers = new WeakMap<AssistantCloudEvents, () => void>();\n\nexport const clearPendingAssistantCloudEvents = (\n events: AssistantCloudEvents,\n): void => {\n pendingClearers.get(events)?.();\n};\n\nexport class AssistantCloudEvents {\n private buffer: AssistantCloudEvent[] = [];\n private timer: ReturnType<typeof setTimeout> | undefined;\n private flushing: Promise<void> | undefined;\n private retryTimer: ReturnType<typeof setTimeout> | undefined;\n private resolveRetryDelay: (() => void) | undefined;\n private bestEffortRequested = false;\n private generation = 0;\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 pendingClearers.set(this, () => this.clearPending());\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(true);\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.flushBestEffort);\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.flushBestEffort);\n document.removeEventListener(\"visibilitychange\", this.onVisibilityChange);\n }\n\n public dispose(): void {\n this.unlisten();\n this.clearFlushTimer();\n void this.flushBestEffort();\n }\n\n private clearPending(): void {\n this.generation++;\n this.buffer = [];\n this.clearFlushTimer();\n this.interruptRetryDelay();\n this.unlisten();\n }\n\n private onVisibilityChange = () => {\n if (document.visibilityState === \"hidden\") {\n void this.flushBestEffort();\n }\n };\n\n private flushBestEffort = () => {\n if (this.flushing) {\n this.bestEffortRequested = true;\n this.interruptRetryDelay();\n }\n return this.flush(false);\n };\n\n private flush = async (retryFailures: boolean): Promise<void> => {\n if (!this.isEnabled()) {\n this.clearPending();\n return;\n }\n if (this.flushing) return this.flushing;\n\n this.clearFlushTimer();\n const task = this.flushPending(retryFailures);\n this.flushing = task;\n void task.then(() => {\n if (this.flushing !== task) return;\n this.flushing = undefined;\n this.bestEffortRequested = false;\n if (this.buffer.length === 0) {\n this.clearFlushTimer();\n this.unlisten();\n } else {\n void this.flush(true);\n }\n });\n return task;\n };\n\n private async flushPending(retryFailures: boolean): 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 const generation = this.generation;\n for (let attempt = 0; ; attempt++) {\n try {\n await this.cloud.makeRequest(\"/events\", {\n method: \"POST\",\n body: { events },\n keepalive: true,\n });\n if (generation !== this.generation) return;\n break;\n } catch {\n if (generation !== this.generation) return;\n const delay =\n retryFailures && !this.bestEffortRequested\n ? RETRY_DELAYS_MS[attempt]\n : undefined;\n if (delay === undefined) break;\n await this.waitForRetry(delay);\n if (generation !== this.generation) return;\n if (!this.isEnabled()) return this.clearPending();\n if (this.bestEffortRequested) break;\n }\n }\n }\n }\n\n private waitForRetry(delay: number): Promise<void> {\n return new Promise((resolve) => {\n const finish = () => {\n this.retryTimer = undefined;\n this.resolveRetryDelay = undefined;\n resolve();\n };\n this.resolveRetryDelay = finish;\n this.retryTimer = setTimeout(finish, delay);\n });\n }\n\n private interruptRetryDelay(): void {\n if (this.retryTimer !== undefined) clearTimeout(this.retryTimer);\n this.resolveRetryDelay?.();\n }\n\n private scheduleFlush() {\n if (this.timer !== undefined) return;\n this.timer = setTimeout(() => {\n this.timer = undefined;\n void this.flush(true);\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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"}
|
|
@@ -1,40 +1,38 @@
|
|
|
1
|
-
import { AssistantCloudAPI } from "./AssistantCloudAPI.js";
|
|
2
|
-
//#region src/AssistantCloudFiles.d.ts
|
|
1
|
+
import type { AssistantCloudAPI } from "./AssistantCloudAPI.js";
|
|
3
2
|
type PdfToImagesRequestBody = {
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
file_blob?: string | undefined;
|
|
4
|
+
file_url?: string | undefined;
|
|
6
5
|
};
|
|
7
6
|
type PdfToImagesResponse = {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
success: boolean;
|
|
8
|
+
urls: string[];
|
|
9
|
+
message: string;
|
|
11
10
|
};
|
|
12
11
|
type GeneratePresignedUploadUrlRequestBody = {
|
|
13
|
-
|
|
12
|
+
filename: string;
|
|
14
13
|
};
|
|
15
14
|
type GeneratePresignedUploadUrlResponse = {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
success: boolean;
|
|
16
|
+
signedUrl: string;
|
|
17
|
+
expiresAt: string;
|
|
18
|
+
publicUrl: string;
|
|
19
|
+
key?: string;
|
|
21
20
|
};
|
|
22
|
-
type GeneratePresignedDownloadUrlResponse = {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
key: string;
|
|
26
|
-
};
|
|
27
|
-
declare class AssistantCloudFiles {
|
|
28
|
-
private cloud;
|
|
29
|
-
constructor(cloud: AssistantCloudAPI);
|
|
30
|
-
pdfToImages(body: PdfToImagesRequestBody): Promise<PdfToImagesResponse>;
|
|
31
|
-
generatePresignedUploadUrl(body: GeneratePresignedUploadUrlRequestBody): Promise<GeneratePresignedUploadUrlResponse>;
|
|
32
|
-
generatePresignedDownloadUrl(body: {
|
|
21
|
+
export type GeneratePresignedDownloadUrlResponse = {
|
|
22
|
+
signedUrl: string;
|
|
23
|
+
expiresAt: string;
|
|
33
24
|
key: string;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
25
|
+
};
|
|
26
|
+
export declare class AssistantCloudFiles {
|
|
27
|
+
private cloud;
|
|
28
|
+
constructor(cloud: AssistantCloudAPI);
|
|
29
|
+
pdfToImages(body: PdfToImagesRequestBody): Promise<PdfToImagesResponse>;
|
|
30
|
+
generatePresignedUploadUrl(body: GeneratePresignedUploadUrlRequestBody): Promise<GeneratePresignedUploadUrlResponse>;
|
|
31
|
+
generatePresignedDownloadUrl(body: {
|
|
32
|
+
key: string;
|
|
33
|
+
} | {
|
|
34
|
+
url: string;
|
|
35
|
+
}): Promise<GeneratePresignedDownloadUrlResponse>;
|
|
37
36
|
}
|
|
38
|
-
|
|
39
|
-
export { AssistantCloudFiles, GeneratePresignedDownloadUrlResponse };
|
|
37
|
+
export {};
|
|
40
38
|
//# sourceMappingURL=AssistantCloudFiles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantCloudFiles.d.ts","
|
|
1
|
+
{"version":3,"file":"AssistantCloudFiles.d.ts","sourceRoot":"","sources":["../src/AssistantCloudFiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,+BAA4B;AAQ7D,KAAK,sBAAsB,GAAG;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,qCAAqC,GAAG;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,KAAK,kCAAkC,GAAG;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,oCAAoC,GAAG;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,KAAK,CAAoB;gBAErB,KAAK,EAAE,iBAAiB;IAIvB,WAAW,CACtB,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,mBAAmB,CAAC;IAyBlB,0BAA0B,CACrC,IAAI,EAAE,qCAAqC,GAC1C,OAAO,CAAC,kCAAkC,CAAC;IAqCjC,4BAA4B,CACvC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GACtC,OAAO,CAAC,oCAAoC,CAAC;CAwBjD"}
|
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
import { AssistantCloudAPI } from "./AssistantCloudAPI.js";
|
|
2
|
-
import { CloudMessage } from "./AssistantCloudThreadMessages.js";
|
|
3
|
-
//#region src/AssistantCloudProjectThreadMessages.d.ts
|
|
1
|
+
import type { AssistantCloudAPI } from "./AssistantCloudAPI.js";
|
|
2
|
+
import { type CloudMessage } from "./AssistantCloudThreadMessages.js";
|
|
4
3
|
type AssistantCloudProjectThreadMessageListQuery = {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
format?: string;
|
|
5
|
+
limit?: number;
|
|
6
|
+
after?: string;
|
|
8
7
|
};
|
|
9
8
|
type AssistantCloudProjectThreadMessageListResponse = {
|
|
10
|
-
|
|
9
|
+
messages: CloudMessage[];
|
|
11
10
|
};
|
|
12
|
-
declare class AssistantCloudProjectThreadMessages {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
export declare class AssistantCloudProjectThreadMessages {
|
|
12
|
+
private cloud;
|
|
13
|
+
constructor(cloud: AssistantCloudAPI);
|
|
14
|
+
list(threadId: string, query?: AssistantCloudProjectThreadMessageListQuery): Promise<AssistantCloudProjectThreadMessageListResponse>;
|
|
16
15
|
}
|
|
17
|
-
|
|
18
|
-
export { AssistantCloudProjectThreadMessages };
|
|
16
|
+
export {};
|
|
19
17
|
//# sourceMappingURL=AssistantCloudProjectThreadMessages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantCloudProjectThreadMessages.d.ts","
|
|
1
|
+
{"version":3,"file":"AssistantCloudProjectThreadMessages.d.ts","sourceRoot":"","sources":["../src/AssistantCloudProjectThreadMessages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,+BAA4B;AAC7D,OAAO,EAEL,KAAK,YAAY,EAClB,0CAAuC;AAGxC,KAAK,2CAA2C,GAAG;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,8CAA8C,GAAG;IACpD,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B,CAAC;AAEF,qBAAa,mCAAmC;IAC9C,OAAO,CAAC,KAAK,CAAoB;gBAErB,KAAK,EAAE,iBAAiB;IAIvB,IAAI,CACf,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,2CAA2C,GAClD,OAAO,CAAC,8CAA8C,CAAC;CAgB3D"}
|
|
@@ -1,21 +1,19 @@
|
|
|
1
|
-
import { AssistantCloudAPI } from "./AssistantCloudAPI.js";
|
|
1
|
+
import type { AssistantCloudAPI } from "./AssistantCloudAPI.js";
|
|
2
2
|
import { AssistantCloudProjectThreadMessages } from "./AssistantCloudProjectThreadMessages.js";
|
|
3
|
-
import { CloudThread } from "./AssistantCloudThreads.js";
|
|
4
|
-
//#region src/AssistantCloudProjectThreads.d.ts
|
|
3
|
+
import { type CloudThread } from "./AssistantCloudThreads.js";
|
|
5
4
|
type AssistantCloudProjectThreadsListQuery = {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
is_archived?: boolean;
|
|
6
|
+
limit?: number;
|
|
7
|
+
after?: string;
|
|
9
8
|
};
|
|
10
9
|
type AssistantCloudProjectThreadsListResponse = {
|
|
11
|
-
|
|
10
|
+
threads: CloudThread[];
|
|
12
11
|
};
|
|
13
|
-
declare class AssistantCloudProjectThreads {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
export declare class AssistantCloudProjectThreads {
|
|
13
|
+
readonly messages: AssistantCloudProjectThreadMessages;
|
|
14
|
+
private cloud;
|
|
15
|
+
constructor(cloud: AssistantCloudAPI);
|
|
16
|
+
list(query?: AssistantCloudProjectThreadsListQuery): Promise<AssistantCloudProjectThreadsListResponse>;
|
|
18
17
|
}
|
|
19
|
-
|
|
20
|
-
export { AssistantCloudProjectThreads };
|
|
18
|
+
export {};
|
|
21
19
|
//# sourceMappingURL=AssistantCloudProjectThreads.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantCloudProjectThreads.d.ts","
|
|
1
|
+
{"version":3,"file":"AssistantCloudProjectThreads.d.ts","sourceRoot":"","sources":["../src/AssistantCloudProjectThreads.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,+BAA4B;AAC7D,OAAO,EAAE,mCAAmC,EAAE,iDAA8C;AAC5F,OAAO,EAAqB,KAAK,WAAW,EAAE,mCAAgC;AAG9E,KAAK,qCAAqC,GAAG;IAC3C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,wCAAwC,GAAG;IAC9C,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB,CAAC;AAEF,qBAAa,4BAA4B;IACvC,SAAgB,QAAQ,EAAE,mCAAmC,CAAC;IAE9D,OAAO,CAAC,KAAK,CAAoB;gBAErB,KAAK,EAAE,iBAAiB;IAKvB,IAAI,CACf,KAAK,CAAC,EAAE,qCAAqC,GAC5C,OAAO,CAAC,wCAAwC,CAAC;CAsBrD"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import { AssistantCloudAPI } from "./AssistantCloudAPI.js";
|
|
1
|
+
import type { AssistantCloudAPI } from "./AssistantCloudAPI.js";
|
|
2
2
|
import { AssistantCloudProjectThreads } from "./AssistantCloudProjectThreads.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
constructor(cloud: AssistantCloudAPI);
|
|
3
|
+
export declare class AssistantCloudProjects {
|
|
4
|
+
readonly threads: AssistantCloudProjectThreads;
|
|
5
|
+
constructor(cloud: AssistantCloudAPI);
|
|
7
6
|
}
|
|
8
|
-
//#endregion
|
|
9
|
-
export { AssistantCloudProjects };
|
|
10
7
|
//# sourceMappingURL=AssistantCloudProjects.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantCloudProjects.d.ts","
|
|
1
|
+
{"version":3,"file":"AssistantCloudProjects.d.ts","sourceRoot":"","sources":["../src/AssistantCloudProjects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,+BAA4B;AAC7D,OAAO,EAAE,4BAA4B,EAAE,0CAAuC;AAE9E,qBAAa,sBAAsB;IACjC,SAAgB,OAAO,EAAE,4BAA4B,CAAC;gBAE1C,KAAK,EAAE,iBAAiB;CAGrC"}
|
|
@@ -1,67 +1,78 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { AssistantCloudAPI } from "./AssistantCloudAPI.js";
|
|
2
|
+
import type { AssistantCloudRunReportToolCall } from "./runTelemetry.js";
|
|
3
3
|
import { AssistantStream } from "assistant-stream";
|
|
4
|
-
//#region src/AssistantCloudRuns.d.ts
|
|
5
4
|
type AssistantCloudRunsStreamBody = {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
thread_id: string;
|
|
6
|
+
assistant_id: "system/thread_title";
|
|
7
|
+
messages: readonly unknown[];
|
|
9
8
|
};
|
|
10
|
-
type AssistantCloudRunReport = {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
9
|
+
export type AssistantCloudRunReport = {
|
|
10
|
+
thread_id: string;
|
|
11
|
+
status: "completed" | "incomplete" | "error";
|
|
12
|
+
outcome_type?: "rate_limited" | "validation_failed" | "provider_error" | "server_error" | "budget_denied" | "persistence_error" | "aborted" | "timeout" | "disconnected" | "length" | "content_filter";
|
|
13
|
+
message_id?: string;
|
|
14
|
+
first_token_ms?: number;
|
|
15
|
+
release?: string;
|
|
16
|
+
environment?: string;
|
|
17
|
+
tags?: string[];
|
|
18
|
+
provider?: string;
|
|
19
|
+
trace_id?: string;
|
|
20
|
+
root_span_id?: string;
|
|
21
|
+
error_code?: string;
|
|
22
|
+
error?: string;
|
|
23
|
+
total_steps?: number;
|
|
24
|
+
tool_calls?: AssistantCloudRunReportToolCall[];
|
|
25
|
+
steps?: {
|
|
26
|
+
input_tokens?: number;
|
|
27
|
+
output_tokens?: number;
|
|
28
|
+
reasoning_tokens?: number;
|
|
29
|
+
cached_input_tokens?: number;
|
|
30
|
+
tool_calls?: AssistantCloudRunReportToolCall[];
|
|
31
|
+
start_ms?: number;
|
|
32
|
+
end_ms?: number;
|
|
33
|
+
finish_reason?: string;
|
|
34
|
+
input?: string;
|
|
35
|
+
}[];
|
|
26
36
|
input_tokens?: number;
|
|
27
37
|
output_tokens?: number;
|
|
28
38
|
reasoning_tokens?: number;
|
|
29
39
|
cached_input_tokens?: number;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
metadata?: Record<string, unknown>;
|
|
40
|
+
cost_usd?: number;
|
|
41
|
+
cost_details?: {
|
|
42
|
+
input?: number;
|
|
43
|
+
input_cached_tokens?: number;
|
|
44
|
+
output?: number;
|
|
45
|
+
total?: number;
|
|
46
|
+
};
|
|
47
|
+
model_id?: string;
|
|
48
|
+
provider_type?: string;
|
|
49
|
+
duration_ms?: number;
|
|
50
|
+
output_text?: string;
|
|
51
|
+
attributes?: Record<string, unknown>;
|
|
52
|
+
metadata?: Record<string, unknown>;
|
|
44
53
|
};
|
|
45
|
-
declare class AssistantCloudRuns {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
export declare class AssistantCloudRuns {
|
|
55
|
+
private cloud;
|
|
56
|
+
constructor(cloud: AssistantCloudAPI);
|
|
57
|
+
__internal_getAssistantOptions(assistantId: string): {
|
|
58
|
+
api: string;
|
|
59
|
+
protocol: "ui-message-stream";
|
|
60
|
+
headers: () => Promise<{
|
|
61
|
+
Accept: string;
|
|
62
|
+
"Aui-Sdk": string;
|
|
63
|
+
}>;
|
|
64
|
+
body: (options?: {
|
|
65
|
+
threadId?: string;
|
|
66
|
+
}) => Promise<{
|
|
67
|
+
assistant_id: string;
|
|
68
|
+
response_format: string;
|
|
69
|
+
thread_id: string;
|
|
70
|
+
}>;
|
|
58
71
|
};
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}>;
|
|
72
|
+
stream(body: AssistantCloudRunsStreamBody): Promise<AssistantStream>;
|
|
73
|
+
report(body: AssistantCloudRunReport): Promise<{
|
|
74
|
+
run_id: string;
|
|
75
|
+
}>;
|
|
64
76
|
}
|
|
65
|
-
|
|
66
|
-
export { AssistantCloudRunReport, AssistantCloudRuns };
|
|
77
|
+
export {};
|
|
67
78
|
//# sourceMappingURL=AssistantCloudRuns.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantCloudRuns.d.ts","
|
|
1
|
+
{"version":3,"file":"AssistantCloudRuns.d.ts","sourceRoot":"","sources":["../src/AssistantCloudRuns.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ var AssistantCloudRuns = class {
|
|
|
9
9
|
__internal_getAssistantOptions(assistantId) {
|
|
10
10
|
return {
|
|
11
11
|
api: `${this.cloud._baseUrl}/v1/runs/stream`,
|
|
12
|
+
protocol: "ui-message-stream",
|
|
12
13
|
headers: async () => {
|
|
13
14
|
const headers = await this.cloud._auth.getAuthHeaders();
|
|
14
15
|
if (!headers) throw new Error("Authorization failed");
|
|
@@ -18,10 +19,14 @@ var AssistantCloudRuns = class {
|
|
|
18
19
|
"Aui-Sdk": this.cloud.sdkHeader()
|
|
19
20
|
};
|
|
20
21
|
},
|
|
21
|
-
body: {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
body: async (options) => {
|
|
23
|
+
const threadId = options?.threadId;
|
|
24
|
+
if (threadId === void 0) throw new Error("Assistant Cloud runs need a thread; the thread list adapter has not assigned a remote id to this thread yet.");
|
|
25
|
+
return {
|
|
26
|
+
assistant_id: assistantId,
|
|
27
|
+
response_format: "vercel-ai-data-stream/v1",
|
|
28
|
+
thread_id: threadId
|
|
29
|
+
};
|
|
25
30
|
}
|
|
26
31
|
};
|
|
27
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantCloudRuns.js","names":[],"sources":["../src/AssistantCloudRuns.ts"],"sourcesContent":["import type { AssistantCloudAPI } from \"./AssistantCloudAPI\";\nimport type { AssistantCloudRunReportToolCall } from \"./runTelemetry\";\nimport { AssistantStream, PlainTextDecoder } from \"assistant-stream\";\nimport {\n CloudResponseError,\n readCloudRecord,\n readCloudString,\n} from \"./cloudResponse\";\n\ntype AssistantCloudRunsStreamBody = {\n thread_id: string;\n assistant_id: \"system/thread_title\";\n messages: readonly unknown[]; // TODO type\n};\n\n// NOTE: Keep this payload shape aligned with the strict runtime validator in\n// assistant-cloud: apps/api/src/endpoints/runs/create.ts\n// (createRunSchema). New telemetry fields must be added in both repos together.\nexport type AssistantCloudRunReport = {\n thread_id: string;\n status: \"completed\" | \"incomplete\" | \"error\";\n outcome_type
|
|
1
|
+
{"version":3,"file":"AssistantCloudRuns.js","names":[],"sources":["../src/AssistantCloudRuns.ts"],"sourcesContent":["import type { AssistantCloudAPI } from \"./AssistantCloudAPI\";\nimport type { AssistantCloudRunReportToolCall } from \"./runTelemetry\";\nimport { AssistantStream, PlainTextDecoder } from \"assistant-stream\";\nimport {\n CloudResponseError,\n readCloudRecord,\n readCloudString,\n} from \"./cloudResponse\";\n\ntype AssistantCloudRunsStreamBody = {\n thread_id: string;\n assistant_id: \"system/thread_title\";\n messages: readonly unknown[]; // TODO type\n};\n\n// NOTE: Keep this payload shape aligned with the strict runtime validator in\n// assistant-cloud: apps/api/src/endpoints/runs/create.ts\n// (createRunSchema). New telemetry fields must be added in both repos together.\nexport type AssistantCloudRunReport = {\n thread_id: string;\n status: \"completed\" | \"incomplete\" | \"error\";\n outcome_type?:\n | \"rate_limited\"\n | \"validation_failed\"\n | \"provider_error\"\n | \"server_error\"\n | \"budget_denied\"\n | \"persistence_error\"\n | \"aborted\"\n | \"timeout\"\n | \"disconnected\"\n | \"length\"\n | \"content_filter\";\n message_id?: string;\n first_token_ms?: number;\n release?: string;\n environment?: string;\n tags?: string[];\n provider?: string;\n trace_id?: string;\n root_span_id?: string;\n error_code?: string;\n error?: string;\n total_steps?: number;\n tool_calls?: AssistantCloudRunReportToolCall[];\n steps?: {\n input_tokens?: number;\n output_tokens?: number;\n reasoning_tokens?: number;\n cached_input_tokens?: number;\n tool_calls?: AssistantCloudRunReportToolCall[];\n start_ms?: number;\n end_ms?: number;\n finish_reason?: string;\n input?: string;\n }[];\n input_tokens?: number;\n output_tokens?: number;\n reasoning_tokens?: number;\n cached_input_tokens?: number;\n cost_usd?: number;\n cost_details?: {\n input?: number;\n input_cached_tokens?: number;\n output?: number;\n total?: number;\n };\n model_id?: string;\n provider_type?: string;\n duration_ms?: number;\n output_text?: string;\n attributes?: Record<string, unknown>;\n metadata?: Record<string, unknown>;\n};\n\nexport class AssistantCloudRuns {\n private cloud: AssistantCloudAPI;\n\n constructor(cloud: AssistantCloudAPI) {\n this.cloud = cloud;\n }\n\n public __internal_getAssistantOptions(assistantId: string) {\n return {\n api: `${this.cloud._baseUrl}/v1/runs/stream`,\n protocol: \"ui-message-stream\" as const,\n headers: async () => {\n const headers = await this.cloud._auth.getAuthHeaders();\n if (!headers) throw new Error(\"Authorization failed\");\n return {\n ...headers,\n Accept: \"text/plain\",\n \"Aui-Sdk\": this.cloud.sdkHeader(),\n };\n },\n body: async (options?: { threadId?: string }) => {\n const threadId = options?.threadId;\n if (threadId === undefined) {\n throw new Error(\n \"Assistant Cloud runs need a thread; the thread list adapter has not assigned a remote id to this thread yet.\",\n );\n }\n return {\n assistant_id: assistantId,\n response_format: \"vercel-ai-data-stream/v1\",\n thread_id: threadId,\n };\n },\n };\n }\n\n public async stream(\n body: AssistantCloudRunsStreamBody,\n ): Promise<AssistantStream> {\n const response = await this.cloud.makeRawRequest(\"/runs/stream\", {\n method: \"POST\",\n headers: {\n Accept: \"text/plain\",\n },\n body,\n });\n\n if (!response.body) {\n throw new CloudResponseError(\n 'Invalid Assistant Cloud response for \"run stream\": expected a response body',\n );\n }\n\n const receivedContentType = response.headers.get(\"content-type\");\n const contentType = receivedContentType\n ?.split(\";\", 1)[0]\n ?.trim()\n .toLowerCase();\n if (contentType !== \"text/plain\") {\n await response.body.cancel().catch(() => undefined);\n throw new CloudResponseError(\n `Invalid Assistant Cloud response for \"run stream\": expected a \"text/plain\" content type, received ${\n receivedContentType\n ? `\"${receivedContentType}\"`\n : \"no Content-Type header\"\n }`,\n );\n }\n\n return AssistantStream.fromResponse(response, new PlainTextDecoder());\n }\n\n public async report(\n body: AssistantCloudRunReport,\n ): Promise<{ run_id: string }> {\n const response = readCloudRecord(\n await this.cloud.makeRequest(\"/runs\", { method: \"POST\", body }),\n \"run report response\",\n );\n\n return { run_id: readCloudString(response.run_id, \"run_id\") };\n }\n}\n"],"mappings":";;;AA2EA,IAAa,qBAAb,MAAgC;CAC9B;CAEA,YAAY,OAA0B;EACpC,KAAK,QAAQ;CACf;CAEA,+BAAsC,aAAqB;EACzD,OAAO;GACL,KAAK,GAAG,KAAK,MAAM,SAAS;GAC5B,UAAU;GACV,SAAS,YAAY;IACnB,MAAM,UAAU,MAAM,KAAK,MAAM,MAAM,eAAe;IACtD,IAAI,CAAC,SAAS,MAAM,IAAI,MAAM,sBAAsB;IACpD,OAAO;KACL,GAAG;KACH,QAAQ;KACR,WAAW,KAAK,MAAM,UAAU;IAClC;GACF;GACA,MAAM,OAAO,YAAoC;IAC/C,MAAM,WAAW,SAAS;IAC1B,IAAI,aAAa,KAAA,GACf,MAAM,IAAI,MACR,8GACF;IAEF,OAAO;KACL,cAAc;KACd,iBAAiB;KACjB,WAAW;IACb;GACF;EACF;CACF;CAEA,MAAa,OACX,MAC0B;EAC1B,MAAM,WAAW,MAAM,KAAK,MAAM,eAAe,gBAAgB;GAC/D,QAAQ;GACR,SAAS,EACP,QAAQ,aACV;GACA;EACF,CAAC;EAED,IAAI,CAAC,SAAS,MACZ,MAAM,IAAI,mBACR,+EACF;EAGF,MAAM,sBAAsB,SAAS,QAAQ,IAAI,cAAc;EAK/D,IAJoB,qBAChB,MAAM,KAAK,CAAC,CAAC,CAAC,EAAE,EAChB,KAAK,CAAC,CACP,YAAY,MACK,cAAc;GAChC,MAAM,SAAS,KAAK,OAAO,CAAC,CAAC,YAAY,KAAA,CAAS;GAClD,MAAM,IAAI,mBACR,qGACE,sBACI,IAAI,oBAAoB,KACxB,0BAER;EACF;EAEA,OAAO,gBAAgB,aAAa,UAAU,IAAI,iBAAiB,CAAC;CACtE;CAEA,MAAa,OACX,MAC6B;EAC7B,MAAM,WAAW,gBACf,MAAM,KAAK,MAAM,YAAY,SAAS;GAAE,QAAQ;GAAQ;EAAK,CAAC,GAC9D,qBACF;EAEA,OAAO,EAAE,QAAQ,gBAAgB,SAAS,QAAQ,QAAQ,EAAE;CAC9D;AACF"}
|