@agentuity/stream 3.0.11 → 3.1.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.
@@ -0,0 +1,630 @@
1
+ import { StructuredError, safeStringify } from '@agentuity/adapter';
2
+ import { buildUrl, toServiceException } from '@agentuity/adapter';
3
+ import { ListParamsSchema } from '@agentuity/client';
4
+ import { z } from 'zod';
5
+ /**
6
+ * Minimum TTL value in seconds (1 minute)
7
+ */
8
+ export const STREAM_MIN_TTL_SECONDS = 60;
9
+ /**
10
+ * Maximum TTL value in seconds (90 days)
11
+ */
12
+ export const STREAM_MAX_TTL_SECONDS = 7776000;
13
+ /**
14
+ * Default TTL value in seconds (30 days) - used when no TTL is specified
15
+ */
16
+ export const STREAM_DEFAULT_TTL_SECONDS = 2592000;
17
+ // Web Streams API (ReadableStream, WritableStream, CompressionStream) are globally
18
+ // available in all modern runtimes: Node.js 18+, Bun, Deno, and browsers.
19
+ const NativeWritableStream = globalThis.WritableStream;
20
+ const NativeReadableStream = globalThis.ReadableStream;
21
+ const NativeCompressionStream = globalThis.CompressionStream;
22
+ /**
23
+ * Properties for creating a stream
24
+ */
25
+ export const CreateStreamPropsSchema = z.object({
26
+ /**
27
+ * optional metadata for the stream
28
+ */
29
+ metadata: z
30
+ .record(z.string(), z.string())
31
+ .optional()
32
+ .describe('optional metadata for the stream'),
33
+ /**
34
+ * optional contentType for the stream data. If not set, defaults to application/octet-stream
35
+ */
36
+ contentType: z
37
+ .string()
38
+ .optional()
39
+ .describe('optional contentType for the stream data. If not set, defaults to application/octet-stream'),
40
+ /**
41
+ * optional flag to enable gzip compression of stream data during upload. if true, will also
42
+ * add Content-Encoding: gzip header to responses. The client MUST be able to accept gzip
43
+ * compression for this to work or must be able to uncompress the raw data it receives.
44
+ */
45
+ compress: z
46
+ .literal(true)
47
+ .optional()
48
+ .describe('optional flag to enable gzip compression of stream data during upload. if true, will also add Content-Encoding: gzip header to responses.'),
49
+ /**
50
+ * optional time-to-live in seconds for the stream. Controls when the stream expires and is automatically deleted.
51
+ * - `undefined` (not provided): Stream expires after 30 days (default)
52
+ * - `null` or `0`: Stream never expires
53
+ * - positive number (≥60): Stream expires after the specified number of seconds (max 90 days)
54
+ *
55
+ * @remarks
56
+ * TTL values below 60 seconds are clamped to 60 seconds by the server.
57
+ * TTL values above 7,776,000 seconds (90 days) are clamped to 90 days.
58
+ *
59
+ * @default 2592000 (30 days)
60
+ */
61
+ ttl: z
62
+ .number()
63
+ .nullable()
64
+ .optional()
65
+ .describe('optional time-to-live in seconds for the stream. Controls when the stream expires and is automatically deleted.'),
66
+ });
67
+ export const StreamSortFieldSchema = z.enum([
68
+ 'name',
69
+ 'created',
70
+ 'updated',
71
+ 'size',
72
+ 'count',
73
+ 'lastUsed',
74
+ ]);
75
+ /**
76
+ * Parameters for listing streams.
77
+ *
78
+ * Note: If both `namespace` and `name` are provided, `namespace` takes precedence
79
+ * and `name` is ignored in the API request body.
80
+ */
81
+ export const ListStreamsParamsSchema = ListParamsSchema(StreamSortFieldSchema).extend({
82
+ /**
83
+ * optional namespace filter to search for streams
84
+ */
85
+ namespace: z.string().optional().describe('optional namespace filter to search for streams'),
86
+ /**
87
+ * optional name filter to search for streams
88
+ */
89
+ name: z.string().optional().describe('optional name filter to search for streams'),
90
+ /**
91
+ * optional metadata filters to match streams
92
+ */
93
+ metadata: z
94
+ .record(z.string(), z.string())
95
+ .optional()
96
+ .describe('optional metadata filters to match streams'),
97
+ });
98
+ /**
99
+ * Stream information returned by list operation
100
+ */
101
+ export const StreamInfoSchema = z.object({
102
+ /**
103
+ * unique stream identifier
104
+ */
105
+ id: z.string().describe('unique stream identifier'),
106
+ /**
107
+ * the namespace of the stream
108
+ */
109
+ namespace: z.string().describe('the namespace of the stream'),
110
+ /**
111
+ * the stream metadata
112
+ */
113
+ metadata: z.record(z.string(), z.string()).describe('the stream metadata'),
114
+ /**
115
+ * the public URL to access the stream
116
+ */
117
+ url: z.string().describe('the public URL to access the stream'),
118
+ /**
119
+ * the size of the stream in bytes
120
+ */
121
+ sizeBytes: z.number().describe('the size of the stream in bytes'),
122
+ /**
123
+ * ISO 8601 timestamp when stream expires, or null if stream never expires
124
+ */
125
+ expiresAt: z
126
+ .string()
127
+ .nullable()
128
+ .describe('ISO 8601 timestamp when stream expires, or null if stream never expires'),
129
+ });
130
+ /**
131
+ * Response from listing streams
132
+ */
133
+ export const ListStreamsResponseSchema = z.object({
134
+ /**
135
+ * whether the request was successful
136
+ */
137
+ success: z.boolean().describe('whether the request was successful'),
138
+ /**
139
+ * optional error message if not successful
140
+ */
141
+ message: z.string().optional().describe('optional error message if not successful'),
142
+ /**
143
+ * array of streams matching the filter criteria
144
+ */
145
+ streams: z.array(StreamInfoSchema).describe('array of streams matching the filter criteria'),
146
+ /**
147
+ * total count of streams matching the filter (useful for pagination)
148
+ */
149
+ total: z.number().describe('total count of streams matching the filter (useful for pagination)'),
150
+ });
151
+ const encoder = new TextEncoder();
152
+ const ReadStreamFailedError = StructuredError('ReadStreamFailedError')();
153
+ /**
154
+ * A writable stream implementation using composition (browser-compatible)
155
+ * This approach works across all environments since native WritableStream can't be properly extended
156
+ */
157
+ class StreamImpl {
158
+ id;
159
+ url;
160
+ #writable;
161
+ #compressed;
162
+ #adapter;
163
+ #sink;
164
+ #closed = false;
165
+ constructor(id, url, compressed, sink, writable, adapter) {
166
+ this.id = id;
167
+ this.url = url;
168
+ this.#compressed = compressed;
169
+ this.#adapter = adapter;
170
+ this.#sink = sink;
171
+ this.#writable = writable;
172
+ }
173
+ get bytesWritten() {
174
+ return this.#sink.total;
175
+ }
176
+ get compressed() {
177
+ return this.#compressed;
178
+ }
179
+ // WritableStream interface properties
180
+ get locked() {
181
+ return this.#writable.locked;
182
+ }
183
+ /**
184
+ * Write data to the stream
185
+ */
186
+ async write(chunk) {
187
+ let binaryChunk;
188
+ if (chunk instanceof Uint8Array) {
189
+ binaryChunk = chunk;
190
+ }
191
+ else if (typeof chunk === 'string') {
192
+ binaryChunk = encoder.encode(chunk);
193
+ }
194
+ else if (chunk instanceof ArrayBuffer) {
195
+ binaryChunk = new Uint8Array(chunk);
196
+ }
197
+ else if (typeof chunk === 'object' && chunk !== null) {
198
+ binaryChunk = encoder.encode(safeStringify(chunk));
199
+ }
200
+ else {
201
+ binaryChunk = encoder.encode(String(chunk));
202
+ }
203
+ // Delegate to the underlying sink's write method
204
+ await this.#sink.write(binaryChunk);
205
+ }
206
+ /**
207
+ * Close the stream gracefully, handling already closed streams without error
208
+ */
209
+ async close() {
210
+ if (this.#closed) {
211
+ return;
212
+ }
213
+ this.#closed = true;
214
+ try {
215
+ await this.#sink.close();
216
+ }
217
+ catch (error) {
218
+ // If we get a TypeError about the stream being closed, locked, or errored,
219
+ // that means pipeTo() or another operation already closed it or it's in use
220
+ if (error instanceof TypeError &&
221
+ (error.message.includes('closed') ||
222
+ error.message.includes('errored') ||
223
+ error.message.includes('Cannot close'))) {
224
+ // Silently return - this is the desired behavior
225
+ return;
226
+ }
227
+ // If the stream is locked, try to close the underlying writer
228
+ if (error instanceof TypeError && error.message.includes('locked')) {
229
+ // Best-effort closure for locked streams
230
+ return;
231
+ }
232
+ // Re-throw any other errors
233
+ throw error;
234
+ }
235
+ }
236
+ /**
237
+ * Abort the stream with an optional reason
238
+ */
239
+ abort(reason) {
240
+ return this.#writable.abort(reason);
241
+ }
242
+ /**
243
+ * Get a writer for the underlying stream
244
+ */
245
+ getWriter() {
246
+ return this.#writable.getWriter();
247
+ }
248
+ /**
249
+ * Get a ReadableStream that streams from the internal URL
250
+ *
251
+ * Note: This method will block waiting for data until writes start to the Stream.
252
+ * The returned ReadableStream will remain open until the Stream is closed or an error occurs.
253
+ *
254
+ * @returns a ReadableStream that can be passed to response.stream()
255
+ */
256
+ getReader() {
257
+ const url = this.url;
258
+ const adapter = this.#adapter;
259
+ let ac = null;
260
+ // Use native ReadableStream to avoid polyfill interference
261
+ return new NativeReadableStream({
262
+ async start(controller) {
263
+ try {
264
+ ac = new AbortController();
265
+ const res = await adapter.invoke(url, {
266
+ method: 'GET',
267
+ signal: ac.signal,
268
+ binary: true,
269
+ });
270
+ const response = res.response;
271
+ if (!res.ok) {
272
+ controller.error(new ReadStreamFailedError({
273
+ status: response.status,
274
+ message: `Failed to read stream: ${response.status} ${response.statusText}`,
275
+ }));
276
+ return;
277
+ }
278
+ if (!response.body) {
279
+ controller.error(new ReadStreamFailedError({
280
+ status: response.status,
281
+ message: 'Response body was null',
282
+ }));
283
+ return;
284
+ }
285
+ const reader = response.body.getReader();
286
+ try {
287
+ // Iterative read to avoid recursive promise chains
288
+ while (true) {
289
+ const { done, value } = await reader.read();
290
+ if (done)
291
+ break;
292
+ if (value)
293
+ controller.enqueue(value);
294
+ }
295
+ controller.close();
296
+ }
297
+ catch (error) {
298
+ controller.error(error);
299
+ }
300
+ }
301
+ catch (error) {
302
+ controller.error(error);
303
+ }
304
+ },
305
+ cancel(reason) {
306
+ if (ac) {
307
+ ac.abort(reason);
308
+ ac = null;
309
+ }
310
+ },
311
+ });
312
+ }
313
+ }
314
+ const StreamAPIError = StructuredError('StreamAPIError')();
315
+ /**
316
+ * Check if compression is available in the current environment.
317
+ * CompressionStream is available in:
318
+ * - Node.js 18+ (via stream/web)
319
+ * - Chrome 80+
320
+ * - Safari 16.4+
321
+ * - Firefox 113+
322
+ */
323
+ function isCompressionAvailable() {
324
+ return typeof NativeCompressionStream !== 'undefined' && NativeCompressionStream !== null;
325
+ }
326
+ /**
327
+ * State object that handles streaming to the backend using the append API.
328
+ * Each write() call sends data immediately via a separate HTTP POST request,
329
+ * enabling real-time streaming without buffering issues.
330
+ */
331
+ class UnderlyingSinkState {
332
+ adapter;
333
+ total = 0;
334
+ closed = false;
335
+ url;
336
+ props;
337
+ compressionEnabled = false;
338
+ writable = null;
339
+ constructor(url, adapter, props) {
340
+ this.url = url;
341
+ this.adapter = adapter;
342
+ this.props = props;
343
+ }
344
+ async start() {
345
+ // Check if compression is enabled and available
346
+ this.compressionEnabled = !!(this.props?.compress && isCompressionAvailable());
347
+ // Create a WritableStream that wraps our append-based write
348
+ this.writable = new NativeWritableStream({
349
+ write: async (chunk) => {
350
+ await this.write(chunk);
351
+ },
352
+ close: async () => {
353
+ await this.close();
354
+ },
355
+ abort: async (reason) => {
356
+ await this.abort(reason);
357
+ },
358
+ });
359
+ return this.writable;
360
+ }
361
+ async write(chunk) {
362
+ if (this.closed) {
363
+ return;
364
+ }
365
+ // Note: For append-based streaming, we don't compress individual chunks
366
+ // because each would become a separate gzip stream that can't be concatenated.
367
+ // Instead, compression is handled server-side during the complete phase.
368
+ this.total += chunk.length;
369
+ // Send the chunk immediately via POST to /append endpoint
370
+ const appendUrl = `${this.url}/append`;
371
+ const signal = AbortSignal.timeout(30_000);
372
+ const res = await this.adapter.invoke(appendUrl, {
373
+ method: 'POST',
374
+ headers: {
375
+ 'Content-Type': 'application/octet-stream',
376
+ },
377
+ body: chunk,
378
+ signal,
379
+ });
380
+ if (!res.ok) {
381
+ throw new StreamAPIError({
382
+ status: res.response.status,
383
+ message: `Append request failed: ${res.response.status} ${res.response.statusText}`,
384
+ });
385
+ }
386
+ }
387
+ async close() {
388
+ if (this.closed) {
389
+ return;
390
+ }
391
+ this.closed = true;
392
+ // Call the complete endpoint to finalize the stream
393
+ // Pass compress flag to request server-side compression
394
+ const completeUrl = `${this.url}/complete`;
395
+ const signal = AbortSignal.timeout(60_000); // Longer timeout for compression
396
+ const headers = {};
397
+ if (this.compressionEnabled) {
398
+ headers['X-Compress'] = 'gzip';
399
+ }
400
+ const res = await this.adapter.invoke(completeUrl, {
401
+ method: 'POST',
402
+ headers,
403
+ signal,
404
+ });
405
+ if (!res.ok) {
406
+ throw new StreamAPIError({
407
+ status: res.response.status,
408
+ message: `Complete request failed: ${res.response.status} ${res.response.statusText}`,
409
+ });
410
+ }
411
+ }
412
+ async abort(_reason) {
413
+ this.closed = true;
414
+ // For append-based streaming, abort is a no-op since each request is independent
415
+ // The stream will simply be incomplete if not all chunks were sent
416
+ }
417
+ }
418
+ const StreamNamespaceInvalidError = StructuredError('StreamNamespaceInvalidError', 'Stream namespace must be between 1 and 254 characters');
419
+ const StreamLimitInvalidError = StructuredError('StreamLimitInvalidError', 'Stream limit must be greater than 0 and less than or equal to 1000');
420
+ const StreamIDRequiredError = StructuredError('StreamIDRequiredError', 'Stream id is required and must be a non-empty string');
421
+ export class StreamStorageService {
422
+ #adapter;
423
+ #baseUrl;
424
+ constructor(baseUrl, adapter) {
425
+ this.#adapter = adapter;
426
+ this.#baseUrl = baseUrl;
427
+ }
428
+ async create(namespace, props) {
429
+ if (!namespace || namespace.length < 1 || namespace.length > 254) {
430
+ throw new StreamNamespaceInvalidError();
431
+ }
432
+ const url = this.#baseUrl;
433
+ const signal = AbortSignal.timeout(30_000); // 30s timeout for Neon cold starts;
434
+ const attributes = {
435
+ namespace,
436
+ };
437
+ if (!props?.contentType) {
438
+ props = props ?? {};
439
+ props.contentType = 'application/octet-stream';
440
+ }
441
+ if (props?.metadata) {
442
+ attributes['metadata'] = JSON.stringify(props.metadata);
443
+ }
444
+ if (props?.contentType) {
445
+ attributes['stream.content_type'] = props.contentType;
446
+ }
447
+ // Map namespace to name for the API (backend still uses 'name')
448
+ // Note: Pulse expects content-type in the headers object, not as a separate contentType field
449
+ const headers = {};
450
+ if (props?.contentType) {
451
+ headers['content-type'] = props.contentType;
452
+ }
453
+ const body = JSON.stringify({
454
+ name: namespace,
455
+ ...(props?.metadata && { metadata: props.metadata }),
456
+ ...(Object.keys(headers).length > 0 && { headers }),
457
+ // TTL handling: only include if explicitly provided
458
+ // null or 0 = no expiration, positive = TTL in seconds
459
+ // undefined = not sent, server uses default (30 days)
460
+ ...(props?.ttl !== undefined && { ttl: props.ttl === null ? 0 : props.ttl }),
461
+ });
462
+ const res = await this.#adapter.invoke(url, {
463
+ method: 'POST',
464
+ body,
465
+ contentType: 'application/json',
466
+ signal,
467
+ telemetry: {
468
+ name: 'agentuity.stream.create',
469
+ attributes,
470
+ },
471
+ });
472
+ if (res.ok) {
473
+ const streamUrl = buildUrl(this.#baseUrl, res.data.id);
474
+ const sink = new UnderlyingSinkState(streamUrl, this.#adapter, props);
475
+ // Initialize the sink (start the PUT request) and get the writable stream
476
+ const writable = await sink.start();
477
+ const stream = new StreamImpl(res.data.id, streamUrl, sink.compressionEnabled, sink, writable, this.#adapter);
478
+ return stream;
479
+ }
480
+ throw await toServiceException('POST', url, res.response);
481
+ }
482
+ async list(params) {
483
+ const attributes = {};
484
+ if (params?.limit !== undefined) {
485
+ if (params.limit <= 0 || params.limit > 1000) {
486
+ throw new StreamLimitInvalidError();
487
+ }
488
+ attributes['limit'] = String(params.limit);
489
+ }
490
+ if (params?.offset !== undefined) {
491
+ attributes['offset'] = String(params.offset);
492
+ }
493
+ if (params?.namespace) {
494
+ attributes['namespace'] = params.namespace;
495
+ }
496
+ if (params?.name) {
497
+ attributes['name'] = params.name;
498
+ }
499
+ if (params?.metadata) {
500
+ attributes['metadata'] = JSON.stringify(params.metadata);
501
+ }
502
+ // Map namespace to name for the API (backend still uses 'name')
503
+ const requestBody = {};
504
+ if (params?.namespace) {
505
+ requestBody.name = params.namespace;
506
+ }
507
+ else if (params?.name) {
508
+ requestBody.name = params.name;
509
+ }
510
+ if (params?.metadata) {
511
+ requestBody.metadata = params.metadata;
512
+ }
513
+ if (params?.limit) {
514
+ requestBody.limit = params.limit;
515
+ }
516
+ if (params?.offset) {
517
+ requestBody.offset = params.offset;
518
+ }
519
+ if (params?.sort) {
520
+ requestBody.sort = params.sort;
521
+ }
522
+ if (params?.direction) {
523
+ requestBody.direction = params.direction;
524
+ }
525
+ const signal = AbortSignal.timeout(30_000);
526
+ const url = buildUrl(this.#baseUrl, 'list');
527
+ const res = await this.#adapter.invoke(url, {
528
+ method: 'POST',
529
+ signal,
530
+ body: JSON.stringify(requestBody),
531
+ contentType: 'application/json',
532
+ telemetry: {
533
+ name: 'agentuity.stream.list',
534
+ attributes,
535
+ },
536
+ });
537
+ if (res.ok) {
538
+ // Transform snake_case to camelCase and map name to namespace
539
+ return {
540
+ success: res.data.success,
541
+ message: res.data.message,
542
+ streams: res.data.streams.map((s) => ({
543
+ id: s.id,
544
+ namespace: s.name,
545
+ metadata: s.metadata ?? {},
546
+ url: s.url,
547
+ sizeBytes: s.size_bytes,
548
+ expiresAt: s.expires_at ?? null,
549
+ })),
550
+ total: res.data.total,
551
+ };
552
+ }
553
+ throw await toServiceException('POST', url, res.response);
554
+ }
555
+ async get(id) {
556
+ if (!id || typeof id !== 'string' || id.trim().length === 0) {
557
+ throw new StreamIDRequiredError();
558
+ }
559
+ const signal = AbortSignal.timeout(30_000);
560
+ const url = buildUrl(this.#baseUrl, id, 'info');
561
+ const res = await this.#adapter.invoke(url, {
562
+ method: 'POST',
563
+ signal,
564
+ body: '{}',
565
+ contentType: 'application/json',
566
+ telemetry: {
567
+ name: 'agentuity.stream.get',
568
+ attributes: {
569
+ 'stream.id': id,
570
+ },
571
+ },
572
+ });
573
+ if (res.ok) {
574
+ // Map name to namespace for the SDK interface
575
+ return {
576
+ id: res.data.id,
577
+ namespace: res.data.name,
578
+ metadata: res.data.metadata ?? {},
579
+ url: res.data.url,
580
+ sizeBytes: res.data.size_bytes,
581
+ expiresAt: res.data.expires_at ?? null,
582
+ };
583
+ }
584
+ throw await toServiceException('POST', url, res.response);
585
+ }
586
+ async download(id) {
587
+ if (!id || typeof id !== 'string' || id.trim().length === 0) {
588
+ throw new StreamIDRequiredError();
589
+ }
590
+ const signal = AbortSignal.timeout(300_000); // 5 minutes for download
591
+ const url = buildUrl(this.#baseUrl, id);
592
+ const res = await this.#adapter.invoke(url, {
593
+ method: 'GET',
594
+ signal,
595
+ binary: true,
596
+ telemetry: {
597
+ name: 'agentuity.stream.download',
598
+ attributes: {
599
+ 'stream.id': id,
600
+ },
601
+ },
602
+ });
603
+ if (res.ok && res.response.body) {
604
+ return res.response.body;
605
+ }
606
+ throw await toServiceException('GET', url, res.response);
607
+ }
608
+ async delete(id) {
609
+ if (!id || typeof id !== 'string' || id.trim().length === 0) {
610
+ throw new StreamIDRequiredError();
611
+ }
612
+ const signal = AbortSignal.timeout(30_000);
613
+ const url = buildUrl(this.#baseUrl, id);
614
+ const res = await this.#adapter.invoke(url, {
615
+ method: 'DELETE',
616
+ signal,
617
+ telemetry: {
618
+ name: 'agentuity.stream.delete',
619
+ attributes: {
620
+ 'stream.id': id,
621
+ },
622
+ },
623
+ });
624
+ if (res.ok) {
625
+ return;
626
+ }
627
+ throw await toServiceException('DELETE', url, res.response);
628
+ }
629
+ }
630
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentuity/stream",
3
- "version": "3.0.11",
3
+ "version": "3.1.0",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Agentuity employees and contributors",
6
6
  "type": "module",
@@ -25,8 +25,9 @@
25
25
  "prepublishOnly": "bun run clean && bun run build"
26
26
  },
27
27
  "dependencies": {
28
- "@agentuity/core": "3.0.11",
29
- "@agentuity/adapter": "3.0.11",
28
+ "@agentuity/adapter": "3.1.0",
29
+ "@agentuity/config": "3.1.0",
30
+ "@agentuity/client": "3.1.0",
30
31
  "zod": "^4.3.5"
31
32
  },
32
33
  "devDependencies": {