@vertesia/client 1.0.0-dev.20260227.112605Z → 1.0.0

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 (113) hide show
  1. package/lib/cjs/InteractionBase.js +3 -3
  2. package/lib/cjs/InteractionBase.js.map +1 -1
  3. package/lib/cjs/InteractionsApi.js.map +1 -1
  4. package/lib/cjs/MCPOAuthApi.js +14 -7
  5. package/lib/cjs/MCPOAuthApi.js.map +1 -1
  6. package/lib/cjs/OAuthAppsApi.js +72 -0
  7. package/lib/cjs/OAuthAppsApi.js.map +1 -0
  8. package/lib/cjs/PromptsApi.js +2 -0
  9. package/lib/cjs/PromptsApi.js.map +1 -1
  10. package/lib/cjs/RunsApi.js +15 -0
  11. package/lib/cjs/RunsApi.js.map +1 -1
  12. package/lib/cjs/client.js +10 -0
  13. package/lib/cjs/client.js.map +1 -1
  14. package/lib/cjs/execute.js +38 -36
  15. package/lib/cjs/execute.js.map +1 -1
  16. package/lib/cjs/store/AgentsApi.js +639 -0
  17. package/lib/cjs/store/AgentsApi.js.map +1 -0
  18. package/lib/cjs/store/FilesApi.js +49 -2
  19. package/lib/cjs/store/FilesApi.js.map +1 -1
  20. package/lib/cjs/store/IndexingApi.js +47 -10
  21. package/lib/cjs/store/IndexingApi.js.map +1 -1
  22. package/lib/cjs/store/ObjectsApi.js +28 -5
  23. package/lib/cjs/store/ObjectsApi.js.map +1 -1
  24. package/lib/cjs/store/WorkflowsApi.js +234 -263
  25. package/lib/cjs/store/WorkflowsApi.js.map +1 -1
  26. package/lib/cjs/store/client.js +2 -0
  27. package/lib/cjs/store/client.js.map +1 -1
  28. package/lib/cjs/store/index.js +1 -0
  29. package/lib/cjs/store/index.js.map +1 -1
  30. package/lib/cjs/store/version.js +1 -1
  31. package/lib/esm/InteractionBase.js +3 -3
  32. package/lib/esm/InteractionBase.js.map +1 -1
  33. package/lib/esm/InteractionsApi.js.map +1 -1
  34. package/lib/esm/MCPOAuthApi.js +14 -7
  35. package/lib/esm/MCPOAuthApi.js.map +1 -1
  36. package/lib/esm/OAuthAppsApi.js +69 -0
  37. package/lib/esm/OAuthAppsApi.js.map +1 -0
  38. package/lib/esm/PromptsApi.js +2 -0
  39. package/lib/esm/PromptsApi.js.map +1 -1
  40. package/lib/esm/RunsApi.js +15 -0
  41. package/lib/esm/RunsApi.js.map +1 -1
  42. package/lib/esm/client.js +10 -0
  43. package/lib/esm/client.js.map +1 -1
  44. package/lib/esm/execute.js +38 -36
  45. package/lib/esm/execute.js.map +1 -1
  46. package/lib/esm/store/AgentsApi.js +635 -0
  47. package/lib/esm/store/AgentsApi.js.map +1 -0
  48. package/lib/esm/store/FilesApi.js +49 -2
  49. package/lib/esm/store/FilesApi.js.map +1 -1
  50. package/lib/esm/store/IndexingApi.js +47 -10
  51. package/lib/esm/store/IndexingApi.js.map +1 -1
  52. package/lib/esm/store/ObjectsApi.js +28 -5
  53. package/lib/esm/store/ObjectsApi.js.map +1 -1
  54. package/lib/esm/store/WorkflowsApi.js +234 -263
  55. package/lib/esm/store/WorkflowsApi.js.map +1 -1
  56. package/lib/esm/store/client.js +2 -0
  57. package/lib/esm/store/client.js.map +1 -1
  58. package/lib/esm/store/index.js +1 -0
  59. package/lib/esm/store/index.js.map +1 -1
  60. package/lib/esm/store/version.js +1 -1
  61. package/lib/tsconfig.tsbuildinfo +1 -1
  62. package/lib/types/InteractionBase.d.ts +1 -1
  63. package/lib/types/InteractionBase.d.ts.map +1 -1
  64. package/lib/types/InteractionsApi.d.ts +1 -0
  65. package/lib/types/InteractionsApi.d.ts.map +1 -1
  66. package/lib/types/MCPOAuthApi.d.ts +10 -5
  67. package/lib/types/MCPOAuthApi.d.ts.map +1 -1
  68. package/lib/types/OAuthAppsApi.d.ts +51 -0
  69. package/lib/types/OAuthAppsApi.d.ts.map +1 -0
  70. package/lib/types/PromptsApi.d.ts +1 -1
  71. package/lib/types/PromptsApi.d.ts.map +1 -1
  72. package/lib/types/RunsApi.d.ts +17 -0
  73. package/lib/types/RunsApi.d.ts.map +1 -1
  74. package/lib/types/client.d.ts +6 -0
  75. package/lib/types/client.d.ts.map +1 -1
  76. package/lib/types/execute.d.ts +2 -4
  77. package/lib/types/execute.d.ts.map +1 -1
  78. package/lib/types/store/AgentsApi.d.ts +231 -0
  79. package/lib/types/store/AgentsApi.d.ts.map +1 -0
  80. package/lib/types/store/FilesApi.d.ts +20 -1
  81. package/lib/types/store/FilesApi.d.ts.map +1 -1
  82. package/lib/types/store/IndexingApi.d.ts +25 -4
  83. package/lib/types/store/IndexingApi.d.ts.map +1 -1
  84. package/lib/types/store/ObjectsApi.d.ts +14 -4
  85. package/lib/types/store/ObjectsApi.d.ts.map +1 -1
  86. package/lib/types/store/WorkflowsApi.d.ts +34 -84
  87. package/lib/types/store/WorkflowsApi.d.ts.map +1 -1
  88. package/lib/types/store/client.d.ts +2 -0
  89. package/lib/types/store/client.d.ts.map +1 -1
  90. package/lib/types/store/index.d.ts +1 -0
  91. package/lib/types/store/index.d.ts.map +1 -1
  92. package/lib/types/store/version.d.ts +1 -1
  93. package/lib/vertesia-client.js +1 -1
  94. package/lib/vertesia-client.js.map +1 -1
  95. package/package.json +8 -5
  96. package/src/InteractionBase.ts +3 -3
  97. package/src/InteractionsApi.ts +3 -1
  98. package/src/MCPOAuthApi.ts +14 -7
  99. package/src/OAuthAppsApi.ts +87 -0
  100. package/src/PromptsApi.ts +3 -1
  101. package/src/RunsApi.ts +17 -0
  102. package/src/client.test.ts +38 -0
  103. package/src/client.ts +11 -0
  104. package/src/execute.ts +37 -34
  105. package/src/store/AgentsApi.ts +765 -0
  106. package/src/store/FilesApi.ts +62 -2
  107. package/src/store/IndexingApi.ts +56 -12
  108. package/src/store/ObjectsApi.ts +45 -8
  109. package/src/store/WorkflowsApi.ts +250 -334
  110. package/src/store/client.ts +2 -0
  111. package/src/store/index.ts +1 -0
  112. package/src/store/version.ts +1 -1
  113. package/tsconfig.dist.json +1 -1
@@ -0,0 +1,639 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AgentsApi = void 0;
4
+ const api_fetch_client_1 = require("@vertesia/api-fetch-client");
5
+ const common_1 = require("@vertesia/common");
6
+ const execute_js_1 = require("../execute.js");
7
+ class AgentsApi extends api_fetch_client_1.ApiTopic {
8
+ constructor(parent) {
9
+ super(parent, '/api/v1/agents');
10
+ }
11
+ // ========================================================================
12
+ // Lifecycle
13
+ // ========================================================================
14
+ /**
15
+ * Create and start a new agent run.
16
+ * Returns the created AgentRun with its stable id.
17
+ */
18
+ start(payload) {
19
+ return this.post('/', { payload });
20
+ }
21
+ /**
22
+ * Record an AgentRun for an already-running workflow (e.g. schedule-triggered).
23
+ * Only creates the MongoDB document — the workflow passes its own Temporal IDs.
24
+ */
25
+ createRecord(payload) {
26
+ return this.post('/record', { payload });
27
+ }
28
+ /**
29
+ * Get agent run by id.
30
+ */
31
+ retrieve(id) {
32
+ return this.get(`/${id}`);
33
+ }
34
+ /**
35
+ * List agent runs with optional filters.
36
+ */
37
+ list(query) {
38
+ const params = {};
39
+ if (query?.id)
40
+ params.id = query.id;
41
+ if (query?.status) {
42
+ params.status = Array.isArray(query.status) ? query.status.join(',') : query.status;
43
+ }
44
+ if (query?.interaction)
45
+ params.interaction = query.interaction;
46
+ if (query?.started_by)
47
+ params.started_by = query.started_by;
48
+ if (query?.since)
49
+ params.since = query.since.toISOString();
50
+ if (query?.schedule_id)
51
+ params.schedule_id = query.schedule_id;
52
+ if (query?.type)
53
+ params.type = query.type;
54
+ if (query?.limit)
55
+ params.limit = String(query.limit);
56
+ if (query?.offset)
57
+ params.offset = String(query.offset);
58
+ if (query?.sort)
59
+ params.sort = query.sort;
60
+ if (query?.order)
61
+ params.order = query.order;
62
+ return this.get('/', { query: params });
63
+ }
64
+ /**
65
+ * Search agent runs via Elasticsearch (full-text + filters).
66
+ */
67
+ search(query) {
68
+ const params = {};
69
+ if (query?.query)
70
+ params.query = query.query;
71
+ if (query?.status) {
72
+ params.status = Array.isArray(query.status) ? query.status.join(',') : query.status;
73
+ }
74
+ if (query?.interaction)
75
+ params.interaction = query.interaction;
76
+ if (query?.started_by)
77
+ params.started_by = query.started_by;
78
+ if (query?.categories?.length)
79
+ params.categories = query.categories.join(',');
80
+ if (query?.tags?.length)
81
+ params.tags = query.tags.join(',');
82
+ if (query?.content_type_name)
83
+ params.content_type_name = query.content_type_name;
84
+ if (query?.since)
85
+ params.since = query.since.toISOString();
86
+ if (query?.limit)
87
+ params.limit = String(query.limit);
88
+ if (query?.offset)
89
+ params.offset = String(query.offset);
90
+ return this.get('/search', { query: params });
91
+ }
92
+ /**
93
+ * Cancel/terminate an agent run.
94
+ */
95
+ terminate(id, reason) {
96
+ const query = reason ? { reason } : undefined;
97
+ return this.del(`/${id}`, { query });
98
+ }
99
+ /**
100
+ * Restart a completed/failed/cancelled agent run.
101
+ * Continues the SAME AgentRun — starts a new workflow that loads
102
+ * the conversation history from where it left off.
103
+ * Returns the updated AgentRun (same id, status back to running).
104
+ */
105
+ restart(id) {
106
+ return this.post(`/${id}/restart`, {});
107
+ }
108
+ /**
109
+ * Fork a conversation into a new agent run.
110
+ */
111
+ fork(id) {
112
+ return this.post(`/${id}/fork`, {});
113
+ }
114
+ /**
115
+ * Update agent run status/metadata.
116
+ * Called by workflow activities to sync lifecycle state.
117
+ */
118
+ updateStatus(id, update) {
119
+ return this.post(`/${id}/status`, { payload: update });
120
+ }
121
+ // ========================================================================
122
+ // Communication
123
+ // ========================================================================
124
+ /**
125
+ * Send a signal to a running agent.
126
+ * Signals: "UserInput", "Stop", "FileUploaded"
127
+ */
128
+ sendSignal(id, signalName, payload) {
129
+ return this.post(`/${id}/signal/${signalName}`, { payload });
130
+ }
131
+ /**
132
+ * Query a running agent's state.
133
+ * Queries: "ActiveWorkstreams", "AgentPlan", "AvailableTools"
134
+ */
135
+ query(id, queryName) {
136
+ return this.get(`/${id}/query/${queryName}`);
137
+ }
138
+ /**
139
+ * Get active workstreams (convenience wrapper).
140
+ */
141
+ getActiveWorkstreams(id) {
142
+ return this.query(id, 'ActiveWorkstreams');
143
+ }
144
+ // ========================================================================
145
+ // Messages
146
+ // ========================================================================
147
+ /**
148
+ * Retrieve stored messages for an agent run.
149
+ * Returns gzip-compressed responses for large payloads.
150
+ */
151
+ async retrieveMessages(id, since) {
152
+ const query = since ? { since } : undefined;
153
+ const response = (await this.get(`/${id}/updates`, { query }));
154
+ return response.messages.map((m) => (0, common_1.toAgentMessage)(m, id));
155
+ }
156
+ /**
157
+ * Post a message/update to an agent run.
158
+ */
159
+ postMessage(id, msg) {
160
+ return this.post(`/${id}/updates`, { payload: msg });
161
+ }
162
+ // ========================================================================
163
+ // Streaming
164
+ // ========================================================================
165
+ /**
166
+ * Stream messages via SSE. Returns a promise that resolves on stream end.
167
+ *
168
+ * Fetches historical messages via GET /updates (gzip-compressed),
169
+ * then connects to SSE for real-time updates only.
170
+ */
171
+ async streamMessages(id, onMessage, since, signal) {
172
+ let resolveFn = () => { };
173
+ let rejectFn = () => { };
174
+ const promise = new Promise((resolve, reject) => {
175
+ resolveFn = resolve;
176
+ rejectFn = reject;
177
+ });
178
+ let reconnectAttempts = 0;
179
+ let lastMessageTimestamp = since || 0;
180
+ let isClosed = false;
181
+ let currentSse = null;
182
+ let interval = null;
183
+ let reconnectTimer = null;
184
+ let abortHandler = null;
185
+ const maxReconnectAttempts = 10;
186
+ const baseDelay = 1000;
187
+ const maxDelay = 30000;
188
+ const calculateBackoffDelay = (attempts) => {
189
+ const exponentialDelay = Math.min(baseDelay * Math.pow(2, attempts), maxDelay);
190
+ const jitter = Math.random() * 0.1 * exponentialDelay;
191
+ return exponentialDelay + jitter;
192
+ };
193
+ const cleanup = () => {
194
+ if (reconnectTimer) {
195
+ clearTimeout(reconnectTimer);
196
+ reconnectTimer = null;
197
+ }
198
+ if (interval) {
199
+ clearInterval(interval);
200
+ interval = null;
201
+ }
202
+ if (currentSse) {
203
+ currentSse.close();
204
+ currentSse = null;
205
+ }
206
+ if (signal && abortHandler) {
207
+ signal.removeEventListener('abort', abortHandler);
208
+ abortHandler = null;
209
+ }
210
+ };
211
+ const exit = (payload) => {
212
+ if (!isClosed) {
213
+ isClosed = true;
214
+ cleanup();
215
+ resolveFn(payload);
216
+ }
217
+ };
218
+ if (signal) {
219
+ if (signal.aborted) {
220
+ isClosed = true;
221
+ cleanup();
222
+ resolveFn(null);
223
+ return promise;
224
+ }
225
+ abortHandler = () => { exit(null); };
226
+ signal.addEventListener('abort', abortHandler, { once: true });
227
+ }
228
+ // 1. Fetch historical messages via GET /updates (gzip-compressed)
229
+ try {
230
+ if (!isClosed) {
231
+ const historical = await this.retrieveMessages(id, since);
232
+ for (const msg of historical) {
233
+ if (isClosed)
234
+ break;
235
+ lastMessageTimestamp = Math.max(lastMessageTimestamp, msg.timestamp || 0);
236
+ if (onMessage)
237
+ onMessage(msg, exit);
238
+ if (isClosed)
239
+ break;
240
+ const workstreamId = msg.workstream_id || 'main';
241
+ const streamIsOver = msg.type === common_1.AgentMessageType.TERMINATED ||
242
+ (msg.type === common_1.AgentMessageType.COMPLETE && workstreamId === 'main');
243
+ if (streamIsOver) {
244
+ exit(null);
245
+ return promise;
246
+ }
247
+ }
248
+ }
249
+ }
250
+ catch (err) {
251
+ if (!isClosed) {
252
+ console.warn('Failed to fetch historical messages, continuing with SSE:', err);
253
+ }
254
+ }
255
+ // 2. Connect to SSE for real-time updates
256
+ const setupStream = async (isReconnect = false) => {
257
+ if (isClosed)
258
+ return;
259
+ try {
260
+ const EventSourceImpl = await (0, execute_js_1.EventSourceProvider)();
261
+ if (isClosed)
262
+ return;
263
+ const client = this.client;
264
+ const streamUrl = new URL(client.agents.baseUrl + `/${id}/stream`);
265
+ if (lastMessageTimestamp > 0) {
266
+ streamUrl.searchParams.set('since', lastMessageTimestamp.toString());
267
+ }
268
+ streamUrl.searchParams.set('skipHistory', 'true');
269
+ const bearerToken = client._auth ? await client._auth() : undefined;
270
+ if (isClosed)
271
+ return;
272
+ if (!bearerToken) {
273
+ isClosed = true;
274
+ cleanup();
275
+ rejectFn(new Error('No auth token available'));
276
+ return;
277
+ }
278
+ const token = bearerToken.split(' ')[1];
279
+ streamUrl.searchParams.set('access_token', token);
280
+ if (isReconnect) {
281
+ console.log(`Reconnecting to agent stream ${id} (attempt ${reconnectAttempts + 1}/${maxReconnectAttempts})`);
282
+ }
283
+ if (isClosed)
284
+ return;
285
+ const sse = new EventSourceImpl(streamUrl.href);
286
+ currentSse = sse;
287
+ interval = setInterval(() => { }, 1000);
288
+ let connectionOpenedAt = 0;
289
+ sse.onopen = () => {
290
+ if (isReconnect)
291
+ console.log(`Reconnected to agent stream ${id}`);
292
+ connectionOpenedAt = Date.now();
293
+ };
294
+ sse.onmessage = (ev) => {
295
+ if (isClosed)
296
+ return;
297
+ if (!ev.data || ev.data.startsWith(':'))
298
+ return;
299
+ try {
300
+ const compactMessage = (0, common_1.parseMessage)(ev.data);
301
+ if (compactMessage.ts) {
302
+ lastMessageTimestamp = Math.max(lastMessageTimestamp, compactMessage.ts);
303
+ }
304
+ else {
305
+ lastMessageTimestamp = Date.now();
306
+ }
307
+ if (onMessage) {
308
+ const agentMessage = (0, common_1.toAgentMessage)(compactMessage, id);
309
+ onMessage(agentMessage, exit);
310
+ }
311
+ const workstreamId = compactMessage.w || 'main';
312
+ const streamIsOver = compactMessage.t === common_1.AgentMessageType.TERMINATED ||
313
+ (compactMessage.t === common_1.AgentMessageType.COMPLETE && workstreamId === 'main');
314
+ if (streamIsOver) {
315
+ exit(null);
316
+ }
317
+ }
318
+ catch (err) {
319
+ console.error('Failed to parse SSE message:', err, ev.data);
320
+ }
321
+ };
322
+ sse.onerror = (_err) => {
323
+ if (isClosed)
324
+ return;
325
+ cleanup();
326
+ // Only reset reconnect attempts if the connection was stable
327
+ // for at least 5 seconds. This prevents infinite rapid polling
328
+ // when the connection opens (200) but drops immediately (e.g.
329
+ // proxy/load-balancer timeout).
330
+ const connectionDuration = connectionOpenedAt ? Date.now() - connectionOpenedAt : 0;
331
+ if (connectionDuration > 5000) {
332
+ reconnectAttempts = 0;
333
+ }
334
+ if (reconnectAttempts < maxReconnectAttempts) {
335
+ const delay = calculateBackoffDelay(reconnectAttempts);
336
+ reconnectAttempts++;
337
+ reconnectTimer = setTimeout(() => {
338
+ reconnectTimer = null;
339
+ if (!isClosed)
340
+ setupStream(true);
341
+ }, delay);
342
+ }
343
+ else {
344
+ isClosed = true;
345
+ cleanup();
346
+ rejectFn(new Error(`SSE connection failed after ${maxReconnectAttempts} reconnection attempts`));
347
+ }
348
+ };
349
+ }
350
+ catch (err) {
351
+ if (isClosed)
352
+ return;
353
+ if (reconnectAttempts < maxReconnectAttempts) {
354
+ const delay = calculateBackoffDelay(reconnectAttempts);
355
+ reconnectAttempts++;
356
+ reconnectTimer = setTimeout(() => {
357
+ reconnectTimer = null;
358
+ if (!isClosed)
359
+ setupStream(true);
360
+ }, delay);
361
+ }
362
+ else {
363
+ isClosed = true;
364
+ cleanup();
365
+ rejectFn(err);
366
+ }
367
+ }
368
+ };
369
+ setupStream(false);
370
+ return promise;
371
+ }
372
+ // ========================================================================
373
+ // Observability
374
+ // ========================================================================
375
+ /**
376
+ * Get internal/Temporal details for an agent run.
377
+ * Returns fields normally stripped from client responses (workflow IDs, artifacts path).
378
+ */
379
+ getInternals(id) {
380
+ return this.get(`/${id}/internals`);
381
+ }
382
+ /**
383
+ * Get detailed workflow run information for an agent run.
384
+ * The server resolves Temporal IDs internally.
385
+ */
386
+ getRunDetails(id, options) {
387
+ const query = {};
388
+ if (options?.includeHistory)
389
+ query.include_history = 'true';
390
+ return this.get(`/${id}/details`, { query });
391
+ }
392
+ /**
393
+ * Stream Temporal history events via SSE (handles continueAsNew).
394
+ * Returns an EventSource that emits 'history' and 'control' events.
395
+ */
396
+ async streamRunDetails(id, onEvent, signal) {
397
+ const EventSourceImpl = await (0, execute_js_1.EventSourceProvider)();
398
+ const client = this.client;
399
+ const streamUrl = new URL(client.agents.baseUrl + `/${id}/details/stream`);
400
+ const bearerToken = client._auth ? await client._auth() : undefined;
401
+ if (!bearerToken) {
402
+ throw new Error('No auth token available');
403
+ }
404
+ const token = bearerToken.split(' ')[1];
405
+ streamUrl.searchParams.set('access_token', token);
406
+ return new Promise((resolve, reject) => {
407
+ const sse = new EventSourceImpl(streamUrl.href);
408
+ let abortHandler = null;
409
+ const cleanup = () => {
410
+ sse.close();
411
+ if (signal && abortHandler) {
412
+ signal.removeEventListener('abort', abortHandler);
413
+ abortHandler = null;
414
+ }
415
+ };
416
+ if (signal) {
417
+ if (signal.aborted) {
418
+ cleanup();
419
+ resolve();
420
+ return;
421
+ }
422
+ abortHandler = () => { cleanup(); resolve(); };
423
+ signal.addEventListener('abort', abortHandler, { once: true });
424
+ }
425
+ sse.addEventListener('history', (ev) => {
426
+ try {
427
+ const data = JSON.parse(ev.data);
428
+ if (onEvent)
429
+ onEvent({ type: 'history', data });
430
+ }
431
+ catch (_err) { /* ignore parse errors */ }
432
+ });
433
+ sse.addEventListener('control', (ev) => {
434
+ try {
435
+ const data = JSON.parse(ev.data);
436
+ if (onEvent)
437
+ onEvent({ type: 'control', data });
438
+ if (data.type === 'done') {
439
+ cleanup();
440
+ resolve();
441
+ }
442
+ }
443
+ catch (_err) { /* ignore parse errors */ }
444
+ });
445
+ sse.addEventListener('error', (ev) => {
446
+ try {
447
+ const data = JSON.parse(ev.data);
448
+ if (onEvent)
449
+ onEvent({ type: 'error', data });
450
+ }
451
+ catch (_err) { /* ignore parse errors */ }
452
+ });
453
+ sse.onerror = (_err) => {
454
+ cleanup();
455
+ reject(new Error('SSE connection failed for details stream'));
456
+ };
457
+ });
458
+ }
459
+ /**
460
+ * List child workflows (sub-agents) for an agent run.
461
+ */
462
+ listChildren(id) {
463
+ return this.get(`/${id}/children`);
464
+ }
465
+ // ========================================================================
466
+ // Artifacts
467
+ // ========================================================================
468
+ /**
469
+ * List artifacts for an agent run.
470
+ */
471
+ listArtifacts(id) {
472
+ return this.get(`/${id}/artifacts`);
473
+ }
474
+ /**
475
+ * Get a signed download URL for an artifact.
476
+ */
477
+ getArtifactUrl(id, path, disposition) {
478
+ const query = { url: '1' };
479
+ if (disposition)
480
+ query.disposition = disposition;
481
+ return this.get(`/${id}/artifacts/${path}`, { query });
482
+ }
483
+ /**
484
+ * Upload an artifact to an agent run.
485
+ * Works even before the workflow has started (pre-upload).
486
+ *
487
+ * 1. Gets a signed upload URL from the server
488
+ * 2. Uploads the content directly to cloud storage
489
+ *
490
+ * @returns The full storage path of the uploaded artifact.
491
+ */
492
+ async uploadArtifact(id, path, content, contentType) {
493
+ const mimeType = contentType || 'application/octet-stream';
494
+ // 1. Get signed upload URL from the agents API
495
+ const result = await this.put(`/${id}/artifacts/${path}`, {
496
+ headers: { 'Content-Type': mimeType },
497
+ });
498
+ // 2. Upload directly to cloud storage
499
+ const res = await fetch(result.url, {
500
+ method: 'PUT',
501
+ body: content,
502
+ headers: { 'Content-Type': mimeType },
503
+ });
504
+ if (!res.ok) {
505
+ throw new Error(`Failed to upload artifact: ${res.statusText}`);
506
+ }
507
+ return result;
508
+ }
509
+ /**
510
+ * Download an artifact from an agent run.
511
+ */
512
+ async downloadArtifact(id, path) {
513
+ const { url } = await this.getArtifactUrl(id, path, 'attachment');
514
+ const res = await fetch(url);
515
+ if (!res.ok) {
516
+ throw new Error(`Failed to download artifact: ${res.statusText}`);
517
+ }
518
+ if (!res.body) {
519
+ throw new Error('No body in artifact download response');
520
+ }
521
+ return res.body;
522
+ }
523
+ // ========================================================================
524
+ // Telemetry ingestion
525
+ // ========================================================================
526
+ /**
527
+ * Ingest telemetry events for an agent run.
528
+ * Workers use this to send telemetry to zeno-server for BigQuery storage.
529
+ */
530
+ ingestEvents(agentRunId, events) {
531
+ return this.post(`/${agentRunId}/events`, { payload: { events } });
532
+ }
533
+ // ========================================================================
534
+ // Analytics
535
+ // ========================================================================
536
+ /**
537
+ * Get analytics summary.
538
+ * Returns overall metrics including token usage, success rates, and run counts.
539
+ */
540
+ getAnalyticsSummary(query = {}) {
541
+ return this.post('/analytics/summary', { payload: query });
542
+ }
543
+ /**
544
+ * Get token usage analytics.
545
+ * Returns token consumption metrics by model, agent, tool, or over time.
546
+ */
547
+ getTokenUsageAnalytics(query = {}) {
548
+ return this.post('/analytics/tokens', { payload: query });
549
+ }
550
+ /**
551
+ * Get LLM latency analytics.
552
+ * Returns duration/latency metrics for LLM calls.
553
+ */
554
+ getLlmLatencyAnalytics(query = {}) {
555
+ return this.post('/analytics/latency/llm', { payload: query });
556
+ }
557
+ /**
558
+ * Get tool latency analytics.
559
+ * Returns duration/latency metrics for tool calls.
560
+ */
561
+ getToolLatencyAnalytics(query = {}) {
562
+ return this.post('/analytics/latency/tools', { payload: query });
563
+ }
564
+ /**
565
+ * Get agent latency analytics.
566
+ * Returns duration metrics for complete agent runs.
567
+ */
568
+ getAgentLatencyAnalytics(query = {}) {
569
+ return this.post('/analytics/latency/agents', { payload: query });
570
+ }
571
+ /**
572
+ * Get error analytics.
573
+ * Returns error rates, types, and trends.
574
+ */
575
+ getErrorAnalytics(query = {}) {
576
+ return this.post('/analytics/errors', { payload: query });
577
+ }
578
+ /**
579
+ * Get tool usage analytics.
580
+ * Returns tool invocation counts, success rates, and performance metrics.
581
+ */
582
+ getToolAnalytics(query = {}) {
583
+ return this.post('/analytics/tools', { payload: query });
584
+ }
585
+ /**
586
+ * Get tool parameter analytics.
587
+ * Returns parameter value distributions for a specific tool.
588
+ */
589
+ getToolParameterAnalytics(query) {
590
+ return this.post('/analytics/tools/parameters', { payload: query });
591
+ }
592
+ /**
593
+ * Get available filter options for analytics.
594
+ * Returns unique agents, environments, and models from telemetry data.
595
+ */
596
+ getAnalyticsFilterOptions(query = {}) {
597
+ return this.post('/analytics/filter-options', { payload: query });
598
+ }
599
+ /**
600
+ * Get average prompt size (input tokens) by agent for startConversation calls.
601
+ * This represents the initial prompt + tools size.
602
+ */
603
+ getPromptSizeAnalytics(query = {}) {
604
+ return this.post('/analytics/prompt-size', { payload: query });
605
+ }
606
+ /**
607
+ * Get top principals (users/API keys) who started the most agent runs.
608
+ * Returns the top N principals sorted by run count descending.
609
+ */
610
+ getTopPrincipalsAnalytics(query = {}) {
611
+ return this.post('/analytics/top-principals', { payload: query });
612
+ }
613
+ /**
614
+ * Get agent run distribution - how many runs per agent/interaction type.
615
+ * Returns the top N agents sorted by run count descending.
616
+ */
617
+ getRunsByAgentAnalytics(query = {}) {
618
+ return this.post('/analytics/runs-by-agent', { payload: query });
619
+ }
620
+ /**
621
+ * Get time to first response analytics.
622
+ * Measures the time from agent start to the completion of the first LLM call.
623
+ * Returns average, min, max, median, p95, and p99 metrics.
624
+ */
625
+ getTimeToFirstResponseAnalytics(query = {}) {
626
+ return this.post('/analytics/time-to-first-response', { payload: query });
627
+ }
628
+ /**
629
+ * Get first response behavior analytics.
630
+ * Analyzes the agent's first LLM response behavior:
631
+ * - Percentage of agents that start by making a plan
632
+ * - Percentage of agents that return no tool calls at start
633
+ */
634
+ getFirstResponseBehaviorAnalytics(query = {}) {
635
+ return this.post('/analytics/first-response-behavior', { payload: query });
636
+ }
637
+ }
638
+ exports.AgentsApi = AgentsApi;
639
+ //# sourceMappingURL=AgentsApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentsApi.js","sourceRoot":"","sources":["../../../src/store/AgentsApi.ts"],"names":[],"mappings":"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"}