@meshagent/meshagent 0.38.4 → 0.39.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 (44) hide show
  1. package/CHANGELOG.md +9 -2
  2. package/dist/browser/datasets-client.d.ts +415 -0
  3. package/dist/{node/database-client.js → browser/datasets-client.js} +480 -234
  4. package/dist/browser/entrypoint.js +9 -17
  5. package/dist/browser/index.d.ts +1 -2
  6. package/dist/browser/index.js +1 -2
  7. package/dist/browser/meshagent-client.d.ts +109 -1
  8. package/dist/browser/meshagent-client.js +269 -3
  9. package/dist/browser/participant-token.d.ts +5 -5
  10. package/dist/browser/participant-token.js +14 -13
  11. package/dist/browser/room-client.d.ts +5 -3
  12. package/dist/browser/room-client.js +70 -4
  13. package/dist/esm/datasets-client.d.ts +415 -0
  14. package/dist/esm/{database-client.js → datasets-client.js} +473 -227
  15. package/dist/esm/entrypoint.js +6 -12
  16. package/dist/esm/index.d.ts +1 -2
  17. package/dist/esm/index.js +1 -2
  18. package/dist/esm/meshagent-client.d.ts +109 -1
  19. package/dist/esm/meshagent-client.js +269 -3
  20. package/dist/esm/participant-token.d.ts +5 -5
  21. package/dist/esm/participant-token.js +12 -11
  22. package/dist/esm/room-client.d.ts +5 -3
  23. package/dist/esm/room-client.js +70 -4
  24. package/dist/node/datasets-client.d.ts +415 -0
  25. package/dist/{browser/database-client.js → node/datasets-client.js} +480 -234
  26. package/dist/node/entrypoint.js +6 -12
  27. package/dist/node/index.d.ts +1 -2
  28. package/dist/node/index.js +1 -2
  29. package/dist/node/meshagent-client.d.ts +109 -1
  30. package/dist/node/meshagent-client.js +269 -3
  31. package/dist/node/participant-token.d.ts +5 -5
  32. package/dist/node/participant-token.js +14 -13
  33. package/dist/node/room-client.d.ts +5 -3
  34. package/dist/node/room-client.js +70 -4
  35. package/package.json +3 -2
  36. package/dist/browser/data-types.d.ts +0 -67
  37. package/dist/browser/data-types.js +0 -192
  38. package/dist/browser/database-client.d.ts +0 -281
  39. package/dist/esm/data-types.d.ts +0 -67
  40. package/dist/esm/data-types.js +0 -179
  41. package/dist/esm/database-client.d.ts +0 -281
  42. package/dist/node/data-types.d.ts +0 -67
  43. package/dist/node/data-types.js +0 -192
  44. package/dist/node/database-client.d.ts +0 -281
@@ -1,4 +1,4 @@
1
- import { DatabaseClient } from "./database-client";
1
+ import { DatasetsClient } from "./datasets-client";
2
2
  import { DeveloperClient } from "./developer-client";
3
3
  import { type EventHandler, type EventName } from "./event-emitter";
4
4
  import { MessagingClient } from "./messaging-client";
@@ -52,7 +52,7 @@ export declare class RoomClient {
52
52
  readonly developer: DeveloperClient;
53
53
  readonly messaging: MessagingClient;
54
54
  readonly queues: QueuesClient;
55
- readonly database: DatabaseClient;
55
+ readonly datasets: DatasetsClient;
56
56
  readonly agents: AgentsClient;
57
57
  readonly secrets: SecretsClient;
58
58
  readonly containers: ContainersClient;
@@ -111,7 +111,9 @@ export declare class RoomClient {
111
111
  on(eventName: EventName, callback: EventHandler<RoomEvent>): void;
112
112
  off(eventName: EventName, callback: EventHandler<RoomEvent>): void;
113
113
  emit(event: RoomEvent): void;
114
- listen(): AsyncIterable<RoomEvent>;
114
+ listen({ abortSignal }?: {
115
+ abortSignal?: AbortSignal;
116
+ }): AsyncIterable<RoomEvent>;
115
117
  waitForClose(): Promise<void>;
116
118
  waitUntilConnected(): Promise<void>;
117
119
  _waitUntilConnectedForMessages(): Promise<void>;
@@ -1,5 +1,5 @@
1
1
  import { Completer } from "./completer";
2
- import { DatabaseClient } from "./database-client";
2
+ import { DatasetsClient } from "./datasets-client";
3
3
  import { DeveloperClient } from "./developer-client";
4
4
  import { EventEmitter } from "./event-emitter";
5
5
  import { MessagingClient } from "./messaging-client";
@@ -244,7 +244,7 @@ export class RoomClient {
244
244
  this.developer = new DeveloperClient({ room: this });
245
245
  this.messaging = new MessagingClient({ room: this });
246
246
  this.queues = new QueuesClient({ room: this });
247
- this.database = new DatabaseClient({ room: this });
247
+ this.datasets = new DatasetsClient({ room: this });
248
248
  this.agents = new AgentsClient({ room: this });
249
249
  this.secrets = new SecretsClient({
250
250
  room: this,
@@ -298,8 +298,74 @@ export class RoomClient {
298
298
  this._eventsController.add(event);
299
299
  this._eventEmitter.emit(event.name, event);
300
300
  }
301
- listen() {
302
- return this._eventsController.stream;
301
+ listen({ abortSignal } = {}) {
302
+ if (abortSignal === undefined || abortSignal === null) {
303
+ return this._eventsController.stream;
304
+ }
305
+ const source = this._eventsController.stream;
306
+ return {
307
+ [Symbol.asyncIterator]() {
308
+ const eventIterator = source[Symbol.asyncIterator]();
309
+ let abortReject = null;
310
+ let cleanedUp = false;
311
+ const abortError = () => {
312
+ if (abortSignal.reason != null) {
313
+ return abortSignal.reason;
314
+ }
315
+ const error = new Error("Aborted");
316
+ error.name = "AbortError";
317
+ return error;
318
+ };
319
+ const cleanup = async () => {
320
+ if (cleanedUp) {
321
+ return;
322
+ }
323
+ cleanedUp = true;
324
+ abortSignal.removeEventListener("abort", onAbort);
325
+ await eventIterator.return?.();
326
+ };
327
+ const onAbort = () => {
328
+ const reject = abortReject;
329
+ abortReject = null;
330
+ reject?.(abortError());
331
+ void cleanup();
332
+ };
333
+ abortSignal.addEventListener("abort", onAbort, { once: true });
334
+ return {
335
+ async next() {
336
+ if (abortSignal.aborted) {
337
+ await cleanup();
338
+ return Promise.reject(abortError());
339
+ }
340
+ const abortPromise = new Promise((_, reject) => {
341
+ abortReject = reject;
342
+ });
343
+ try {
344
+ const result = await Promise.race([eventIterator.next(), abortPromise]);
345
+ if (result.done) {
346
+ await cleanup();
347
+ }
348
+ return result;
349
+ }
350
+ catch (error) {
351
+ await cleanup();
352
+ throw error;
353
+ }
354
+ finally {
355
+ abortReject = null;
356
+ }
357
+ },
358
+ async return() {
359
+ await cleanup();
360
+ return { done: true, value: undefined };
361
+ },
362
+ async throw(e) {
363
+ await cleanup();
364
+ return Promise.reject(e);
365
+ },
366
+ };
367
+ },
368
+ };
303
369
  }
304
370
  async waitForClose() {
305
371
  await this._roomClosed.fut;
@@ -0,0 +1,415 @@
1
+ import { Schema, Table } from "apache-arrow";
2
+ import { RoomClient } from "./room-client";
3
+ export type CreateMode = "create" | "overwrite" | "create_if_not_exists";
4
+ export interface TableRef {
5
+ name: string;
6
+ namespace?: string[];
7
+ alias?: string;
8
+ branch?: string;
9
+ version?: number;
10
+ }
11
+ export interface TableVersion {
12
+ version: number;
13
+ timestamp: Date;
14
+ metadata: Record<string, unknown>;
15
+ }
16
+ export interface TableIndex {
17
+ name: string;
18
+ columns: string[];
19
+ type: string;
20
+ fields: number[];
21
+ typeUrl: string | null;
22
+ numRowsIndexed: number | null;
23
+ numSegments: number | null;
24
+ totalSizeBytes: number | null;
25
+ details: Record<string, unknown>;
26
+ statistics: Record<string, unknown>;
27
+ }
28
+ export type DatasetVectorIndexType = "IVF_PQ" | "IVF_HNSW_PQ" | "IVF_HNSW_SQ" | "IVF_RQ";
29
+ export type DatasetScalarIndexType = "BTREE" | "BITMAP" | "LABEL_LIST" | "NGRAM" | "ZONEMAP" | "INVERTED" | "FTS" | "BLOOMFILTER" | "RTREE";
30
+ export type DatasetIndexType = DatasetVectorIndexType | DatasetScalarIndexType;
31
+ export interface DatasetIndexConfig {
32
+ column: string | string[];
33
+ index_type: DatasetIndexType;
34
+ name?: string;
35
+ metric?: string;
36
+ replace?: boolean;
37
+ num_partitions?: number;
38
+ ivf_centroids?: number[][];
39
+ pq_codebook?: number[][];
40
+ num_sub_vectors?: number;
41
+ accelerator?: string;
42
+ index_cache_size?: number;
43
+ shuffle_partition_batches?: number;
44
+ shuffle_partition_concurrency?: number;
45
+ ivf_centroids_file?: string;
46
+ precomputed_partition_dataset?: string;
47
+ filter_nan?: boolean;
48
+ train?: boolean;
49
+ fragment_ids?: number[];
50
+ index_uuid?: string;
51
+ target_partition_size?: number;
52
+ skip_transpose?: boolean;
53
+ num_bits?: number;
54
+ index_file_version?: string;
55
+ max_level?: number;
56
+ m?: number;
57
+ ef_construction?: number;
58
+ with_position?: boolean;
59
+ memory_limit?: number;
60
+ num_workers?: number;
61
+ skip_merge?: boolean;
62
+ base_tokenizer?: string;
63
+ language?: string;
64
+ max_token_length?: number;
65
+ lower_case?: boolean;
66
+ stem?: boolean;
67
+ remove_stop_words?: boolean;
68
+ custom_stop_words?: string[];
69
+ ascii_folding?: boolean;
70
+ }
71
+ export interface DatasetOptimizeConfig {
72
+ compact_files?: boolean;
73
+ optimize_indices?: boolean;
74
+ cleanup_old_versions?: boolean;
75
+ target_rows_per_fragment?: number;
76
+ max_rows_per_group?: number;
77
+ max_bytes_per_file?: number;
78
+ materialize_deletions?: boolean;
79
+ materialize_deletions_threshold?: number;
80
+ defer_index_remap?: boolean;
81
+ num_threads?: number;
82
+ batch_size?: number;
83
+ compaction_mode?: "reencode" | "try_binary_copy" | "force_binary_copy";
84
+ binary_copy_read_batch_bytes?: number;
85
+ num_indices_to_merge?: number;
86
+ index_names?: string[];
87
+ retrain?: boolean;
88
+ older_than_seconds?: number;
89
+ retain_versions?: number;
90
+ delete_unverified?: boolean;
91
+ error_if_tagged_old_versions?: boolean;
92
+ delete_rate_limit?: number;
93
+ }
94
+ export interface DatasetOptimizeResult {
95
+ compaction: Record<string, unknown> | null;
96
+ optimizedIndices: boolean;
97
+ cleanup: Record<string, unknown> | null;
98
+ }
99
+ export interface DatasetTableStats {
100
+ dataset: Record<string, unknown>;
101
+ data: Record<string, unknown>;
102
+ }
103
+ export interface TableBranch {
104
+ name: string;
105
+ parentBranch: string | null;
106
+ parentVersion: number | null;
107
+ createdAt: Date | null;
108
+ manifestSize: number | null;
109
+ }
110
+ export interface DatasetSqlQuery {
111
+ kind: "query";
112
+ schema: Schema;
113
+ queryId: string;
114
+ }
115
+ export interface DatasetSqlStatement {
116
+ kind: "statement";
117
+ rowsAffected: number;
118
+ }
119
+ export type DatasetSqlExecution = DatasetSqlQuery | DatasetSqlStatement;
120
+ export type DatasetSqlCancelStatus = "cancelled" | "cancelling" | "not_cancellable";
121
+ export interface DatasetSqlCancelResult {
122
+ status: DatasetSqlCancelStatus;
123
+ }
124
+ export declare abstract class DatasetValueEncoder {
125
+ abstract encodeDatasetValue(): unknown;
126
+ }
127
+ export declare class DatasetExpression extends DatasetValueEncoder {
128
+ readonly expression: string;
129
+ constructor(expression: string);
130
+ encodeDatasetValue(): Record<string, string>;
131
+ toString(): string;
132
+ }
133
+ export declare class DatasetDate extends DatasetValueEncoder {
134
+ readonly value: string;
135
+ constructor(value: string);
136
+ encodeDatasetValue(): Record<string, string>;
137
+ toString(): string;
138
+ }
139
+ export type DatasetJsonScalarValue = null | boolean | number | string;
140
+ export type DatasetJsonValue = DatasetJsonScalarValue | DatasetJsonValue[] | {
141
+ [key: string]: DatasetJsonValue;
142
+ };
143
+ export declare class DatasetStruct extends DatasetValueEncoder {
144
+ readonly fields: Record<string, DatasetValue>;
145
+ constructor(fields: Record<string, DatasetValue>);
146
+ toJson(): Record<string, unknown>;
147
+ encodeDatasetValue(): Record<string, Record<string, unknown>>;
148
+ }
149
+ export declare class DatasetJson extends DatasetValueEncoder {
150
+ readonly value: DatasetJsonValue;
151
+ constructor(value: DatasetJsonValue);
152
+ toJson(): DatasetJsonValue;
153
+ encodeDatasetValue(): Record<string, DatasetJsonValue>;
154
+ }
155
+ export type DatasetScalarValue = null | boolean | number | string | Uint8Array | DatasetUuid | Date;
156
+ export type DatasetValue = DatasetScalarValue | DatasetValueEncoder | DatasetValue[];
157
+ export type DatasetRecord = Record<string, DatasetValue>;
158
+ export type DatasetRows = DatasetRecord[];
159
+ export type DatasetRowChunks = AsyncIterable<DatasetRows> | Iterable<DatasetRows>;
160
+ export type DatasetWhere = string | Record<string, DatasetValue>;
161
+ type DatasetRoomInvoker = Pick<RoomClient, "invoke" | "invokeStream">;
162
+ export declare class DatasetUuid {
163
+ readonly value: string;
164
+ constructor(value: string);
165
+ toString(): string;
166
+ }
167
+ type ArrowTableChunks = Iterable<Table> | AsyncIterable<Table>;
168
+ export declare class DatasetsClient {
169
+ private room;
170
+ constructor({ room }: {
171
+ room: DatasetRoomInvoker;
172
+ });
173
+ private _unexpectedResponseError;
174
+ private invoke;
175
+ private invokeContent;
176
+ private invokeStream;
177
+ private drainWriteStream;
178
+ private streamRows;
179
+ private streamArrow;
180
+ listTables({ namespace, branch }?: {
181
+ namespace?: string[];
182
+ branch?: string;
183
+ }): Promise<string[]>;
184
+ private createTable;
185
+ createTableWithSchema({ name, schema, data, mode, namespace, branch, metadata }: {
186
+ name: string;
187
+ schema?: Schema;
188
+ data?: Iterable<Table> | Table;
189
+ mode?: CreateMode;
190
+ namespace?: string[];
191
+ branch?: string;
192
+ metadata?: Record<string, unknown>;
193
+ }): Promise<void>;
194
+ createTableFromData({ name, data, mode, namespace, branch, metadata }: {
195
+ name: string;
196
+ data?: Iterable<Table> | Table;
197
+ mode?: CreateMode;
198
+ namespace?: string[];
199
+ branch?: string;
200
+ metadata?: Record<string, unknown>;
201
+ }): Promise<void>;
202
+ createTableFromDataStream({ name, chunks, schema, mode, namespace, branch, metadata }: {
203
+ name: string;
204
+ chunks: ArrowTableChunks;
205
+ schema?: Schema;
206
+ mode?: CreateMode;
207
+ namespace?: string[];
208
+ branch?: string;
209
+ metadata?: Record<string, unknown>;
210
+ }): Promise<void>;
211
+ createTableFromJsonData({ name, data, mode, namespace, branch, metadata }: {
212
+ name: string;
213
+ data?: DatasetRows;
214
+ mode?: CreateMode;
215
+ namespace?: string[];
216
+ branch?: string;
217
+ metadata?: Record<string, unknown>;
218
+ }): Promise<void>;
219
+ dropTable({ name, ignoreMissing, namespace, branch }: {
220
+ name: string;
221
+ ignoreMissing?: boolean;
222
+ namespace?: string[];
223
+ branch?: string;
224
+ }): Promise<void>;
225
+ dropIndex({ table, name, namespace, branch }: {
226
+ table: string;
227
+ name: string;
228
+ namespace?: string[];
229
+ branch?: string;
230
+ }): Promise<void>;
231
+ addColumns({ table, newColumns, namespace, branch }: {
232
+ table: string;
233
+ newColumns: Record<string, string> | Schema;
234
+ namespace?: string[];
235
+ branch?: string;
236
+ }): Promise<void>;
237
+ dropColumns({ table, columns, namespace, branch }: {
238
+ table: string;
239
+ columns: string[];
240
+ namespace?: string[];
241
+ branch?: string;
242
+ }): Promise<void>;
243
+ insert({ table, records, namespace, branch }: {
244
+ table: string;
245
+ records: Table;
246
+ namespace?: string[];
247
+ branch?: string;
248
+ }): Promise<void>;
249
+ insertStream({ table, chunks, namespace, branch }: {
250
+ table: string;
251
+ chunks: ArrowTableChunks;
252
+ namespace?: string[];
253
+ branch?: string;
254
+ }): Promise<void>;
255
+ update({ table, where, values, namespace, branch }: {
256
+ table: string;
257
+ where: string;
258
+ values: DatasetRecord;
259
+ namespace?: string[];
260
+ branch?: string;
261
+ }): Promise<void>;
262
+ delete({ table, where, namespace, branch }: {
263
+ table: string;
264
+ where: string;
265
+ namespace?: string[];
266
+ branch?: string;
267
+ }): Promise<void>;
268
+ merge({ table, on, records, namespace, branch }: {
269
+ table: string;
270
+ on: string;
271
+ records: Table;
272
+ namespace?: string[];
273
+ branch?: string;
274
+ }): Promise<void>;
275
+ mergeStream({ table, on, chunks, namespace, branch }: {
276
+ table: string;
277
+ on: string;
278
+ chunks: ArrowTableChunks;
279
+ namespace?: string[];
280
+ branch?: string;
281
+ }): Promise<void>;
282
+ sql({ query, tables, params, namespace, branch }: {
283
+ query: string;
284
+ tables?: Array<TableRef | string>;
285
+ params?: Table;
286
+ namespace?: string[];
287
+ branch?: string;
288
+ }): Promise<Table[]>;
289
+ openSqlQuery({ query, tables, params, namespace, branch }: {
290
+ query: string;
291
+ tables?: Array<TableRef | string>;
292
+ params?: Table;
293
+ namespace?: string[];
294
+ branch?: string;
295
+ }): Promise<DatasetSqlQuery>;
296
+ executeSql({ query, tables, params, namespace, branch }: {
297
+ query: string;
298
+ tables?: Array<TableRef | string>;
299
+ params?: Table;
300
+ namespace?: string[];
301
+ branch?: string;
302
+ }): Promise<DatasetSqlExecution>;
303
+ sqlStream({ query, tables, params, namespace, branch }: {
304
+ query: string;
305
+ tables?: Array<TableRef | string>;
306
+ params?: Table;
307
+ namespace?: string[];
308
+ branch?: string;
309
+ }): AsyncIterable<Table>;
310
+ readSqlQuery({ queryId }: {
311
+ queryId: string;
312
+ }): AsyncIterable<Table>;
313
+ closeSqlQuery({ queryId }: {
314
+ queryId: string;
315
+ }): Promise<void>;
316
+ cancelSqlQuery({ queryId }: {
317
+ queryId: string;
318
+ }): Promise<DatasetSqlCancelResult>;
319
+ executeSqlStatement({ query, tables, params, namespace, branch }: {
320
+ query: string;
321
+ tables?: Array<TableRef | string>;
322
+ params?: Table;
323
+ namespace?: string[];
324
+ branch?: string;
325
+ }): Promise<number>;
326
+ search({ table, text, vector, where, offset, limit, select, namespace, branch, version }: {
327
+ table: string;
328
+ text?: string;
329
+ vector?: number[];
330
+ where?: DatasetWhere;
331
+ offset?: number;
332
+ limit?: number;
333
+ select?: string[];
334
+ namespace?: string[];
335
+ branch?: string;
336
+ version?: number;
337
+ }): Promise<Table[]>;
338
+ searchStream({ table, text, vector, where, offset, limit, select, namespace, branch, version }: {
339
+ table: string;
340
+ text?: string;
341
+ vector?: number[];
342
+ where?: DatasetWhere;
343
+ offset?: number;
344
+ limit?: number;
345
+ select?: string[];
346
+ namespace?: string[];
347
+ branch?: string;
348
+ version?: number;
349
+ }): AsyncIterable<Table>;
350
+ count({ table, text, vector, where, namespace, branch, version }: {
351
+ table: string;
352
+ text?: string;
353
+ vector?: number[];
354
+ where?: DatasetWhere;
355
+ namespace?: string[];
356
+ branch?: string;
357
+ version?: number;
358
+ }): Promise<number>;
359
+ inspect({ table, namespace, branch, version }: {
360
+ table: string;
361
+ namespace?: string[];
362
+ branch?: string;
363
+ version?: number;
364
+ }): Promise<Schema>;
365
+ optimize(table: string): Promise<DatasetOptimizeResult>;
366
+ optimize(params: {
367
+ table: string;
368
+ namespace?: string[];
369
+ branch?: string;
370
+ config?: DatasetOptimizeConfig;
371
+ }): Promise<DatasetOptimizeResult>;
372
+ stats({ table, namespace, branch, version, maxRowsPerGroup }: {
373
+ table: string;
374
+ namespace?: string[];
375
+ branch?: string;
376
+ version?: number;
377
+ maxRowsPerGroup?: number;
378
+ }): Promise<DatasetTableStats>;
379
+ restore({ table, version, namespace, branch }: {
380
+ table: string;
381
+ version: number;
382
+ namespace?: string[];
383
+ branch?: string;
384
+ }): Promise<void>;
385
+ listVersions({ table, namespace, branch }: {
386
+ table: string;
387
+ namespace?: string[];
388
+ branch?: string;
389
+ }): Promise<TableVersion[]>;
390
+ createIndex({ table, config, namespace, branch }: {
391
+ table: string;
392
+ config: DatasetIndexConfig;
393
+ namespace?: string[];
394
+ branch?: string;
395
+ }): Promise<void>;
396
+ listIndexes({ table, namespace, branch, version }: {
397
+ table: string;
398
+ namespace?: string[];
399
+ branch?: string;
400
+ version?: number;
401
+ }): Promise<TableIndex[]>;
402
+ listBranches({ namespace }?: {
403
+ namespace?: string[];
404
+ }): Promise<TableBranch[]>;
405
+ createBranch({ branch, fromBranch, namespace }: {
406
+ branch: string;
407
+ fromBranch?: string;
408
+ namespace?: string[];
409
+ }): Promise<void>;
410
+ deleteBranch({ branch, namespace }: {
411
+ branch: string;
412
+ namespace?: string[];
413
+ }): Promise<void>;
414
+ }
415
+ export {};