@meshagent/meshagent 0.29.2 → 0.30.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.
- package/CHANGELOG.md +12 -0
- package/dist/browser/agent-client.js +3 -28
- package/dist/browser/agent.js +6 -6
- package/dist/browser/containers-client.d.ts +125 -0
- package/dist/browser/containers-client.js +458 -0
- package/dist/browser/database-client.d.ts +42 -6
- package/dist/browser/database-client.js +610 -77
- package/dist/browser/developer-client.d.ts +2 -2
- package/dist/browser/developer-client.js +60 -15
- package/dist/browser/helpers.js +4 -3
- package/dist/browser/index.d.ts +1 -0
- package/dist/browser/index.js +1 -0
- package/dist/browser/lk-client.js +12 -3
- package/dist/browser/meshagent-client.d.ts +5 -0
- package/dist/browser/messaging-client.d.ts +1 -0
- package/dist/browser/messaging-client.js +52 -8
- package/dist/browser/queues-client.d.ts +2 -0
- package/dist/browser/queues-client.js +34 -7
- package/dist/browser/response.d.ts +28 -0
- package/dist/browser/response.js +76 -1
- package/dist/browser/room-client.d.ts +43 -1
- package/dist/browser/room-client.js +204 -0
- package/dist/browser/secrets-client.d.ts +1 -0
- package/dist/browser/secrets-client.js +32 -27
- package/dist/browser/storage-client.d.ts +22 -7
- package/dist/browser/storage-client.js +353 -15
- package/dist/browser/sync-client.d.ts +12 -13
- package/dist/browser/sync-client.js +263 -65
- package/dist/esm/agent-client.js +3 -28
- package/dist/esm/agent.js +6 -6
- package/dist/esm/containers-client.d.ts +125 -0
- package/dist/esm/containers-client.js +453 -0
- package/dist/esm/database-client.d.ts +42 -6
- package/dist/esm/database-client.js +611 -78
- package/dist/esm/developer-client.d.ts +2 -2
- package/dist/esm/developer-client.js +61 -16
- package/dist/esm/helpers.js +4 -3
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/lk-client.js +12 -3
- package/dist/esm/meshagent-client.d.ts +5 -0
- package/dist/esm/messaging-client.d.ts +1 -0
- package/dist/esm/messaging-client.js +52 -8
- package/dist/esm/queues-client.d.ts +2 -0
- package/dist/esm/queues-client.js +35 -8
- package/dist/esm/response.d.ts +28 -0
- package/dist/esm/response.js +73 -0
- package/dist/esm/room-client.d.ts +43 -1
- package/dist/esm/room-client.js +207 -3
- package/dist/esm/secrets-client.d.ts +1 -0
- package/dist/esm/secrets-client.js +33 -28
- package/dist/esm/storage-client.d.ts +22 -7
- package/dist/esm/storage-client.js +353 -15
- package/dist/esm/sync-client.d.ts +12 -13
- package/dist/esm/sync-client.js +263 -64
- package/dist/node/agent-client.js +3 -28
- package/dist/node/agent.js +6 -6
- package/dist/node/containers-client.d.ts +125 -0
- package/dist/node/containers-client.js +458 -0
- package/dist/node/database-client.d.ts +42 -6
- package/dist/node/database-client.js +610 -77
- package/dist/node/developer-client.d.ts +2 -2
- package/dist/node/developer-client.js +60 -15
- package/dist/node/helpers.js +4 -3
- package/dist/node/index.d.ts +1 -0
- package/dist/node/index.js +1 -0
- package/dist/node/lk-client.js +12 -3
- package/dist/node/meshagent-client.d.ts +5 -0
- package/dist/node/messaging-client.d.ts +1 -0
- package/dist/node/messaging-client.js +52 -8
- package/dist/node/queues-client.d.ts +2 -0
- package/dist/node/queues-client.js +34 -7
- package/dist/node/response.d.ts +28 -0
- package/dist/node/response.js +76 -1
- package/dist/node/room-client.d.ts +43 -1
- package/dist/node/room-client.js +204 -0
- package/dist/node/secrets-client.d.ts +1 -0
- package/dist/node/secrets-client.js +32 -27
- package/dist/node/storage-client.d.ts +22 -7
- package/dist/node/storage-client.js +353 -15
- package/dist/node/sync-client.d.ts +12 -13
- package/dist/node/sync-client.js +263 -65
- package/package.json +1 -1
|
@@ -6,8 +6,8 @@ export declare class DeveloperClient extends EventEmitter<RoomLogEvent> {
|
|
|
6
6
|
constructor({ room }: {
|
|
7
7
|
room: RoomClient;
|
|
8
8
|
});
|
|
9
|
+
private _emitDeveloperLog;
|
|
9
10
|
private _handleDeveloperLog;
|
|
10
11
|
log(type: string, data: Record<string, any>): Promise<void>;
|
|
11
|
-
|
|
12
|
-
disable(): Promise<void>;
|
|
12
|
+
logs(): AsyncIterable<RoomLogEvent>;
|
|
13
13
|
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DeveloperClient = void 0;
|
|
4
4
|
const event_emitter_1 = require("./event-emitter");
|
|
5
|
+
const response_1 = require("./response");
|
|
5
6
|
const utils_1 = require("./utils");
|
|
6
7
|
const room_event_1 = require("./room-event");
|
|
7
8
|
class DeveloperClient extends event_emitter_1.EventEmitter {
|
|
@@ -10,26 +11,70 @@ class DeveloperClient extends event_emitter_1.EventEmitter {
|
|
|
10
11
|
this.client = room;
|
|
11
12
|
this.client.protocol.addHandler("developer.log", this._handleDeveloperLog.bind(this));
|
|
12
13
|
}
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
const event = new room_event_1.RoomLogEvent({
|
|
16
|
-
type: rawJson["type"],
|
|
17
|
-
data: rawJson["data"],
|
|
18
|
-
});
|
|
14
|
+
_emitDeveloperLog(type, data) {
|
|
15
|
+
const event = new room_event_1.RoomLogEvent({ type, data });
|
|
19
16
|
this.client.emit(event);
|
|
20
17
|
this.emit("log", event);
|
|
21
18
|
}
|
|
22
|
-
async
|
|
23
|
-
const
|
|
24
|
-
|
|
19
|
+
async _handleDeveloperLog(protocol, messageId, type, bytes) {
|
|
20
|
+
const [rawJson, _] = (0, utils_1.unpackMessage)(bytes || new Uint8Array());
|
|
21
|
+
this._emitDeveloperLog(rawJson["type"], rawJson["data"]);
|
|
25
22
|
}
|
|
26
|
-
async
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
async log(type, data) {
|
|
24
|
+
await this.client.invoke({
|
|
25
|
+
toolkit: "developer",
|
|
26
|
+
tool: "log",
|
|
27
|
+
input: { type, data },
|
|
28
|
+
});
|
|
29
29
|
}
|
|
30
|
-
async
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
async *logs() {
|
|
31
|
+
let resolveClosed;
|
|
32
|
+
const closed = new Promise((resolve) => {
|
|
33
|
+
resolveClosed = resolve;
|
|
34
|
+
});
|
|
35
|
+
const input = (async function* () {
|
|
36
|
+
await closed;
|
|
37
|
+
})();
|
|
38
|
+
const stream = await this.client.invokeStream({
|
|
39
|
+
toolkit: "developer",
|
|
40
|
+
tool: "logs",
|
|
41
|
+
input,
|
|
42
|
+
});
|
|
43
|
+
try {
|
|
44
|
+
for await (const chunk of stream) {
|
|
45
|
+
if (chunk instanceof response_1.ErrorContent) {
|
|
46
|
+
throw new Error(chunk.text);
|
|
47
|
+
}
|
|
48
|
+
if (chunk instanceof response_1.ControlContent) {
|
|
49
|
+
if (chunk.method === "close") {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
throw new Error("unexpected return type from developer.logs");
|
|
53
|
+
}
|
|
54
|
+
if (!(chunk instanceof response_1.BinaryContent)) {
|
|
55
|
+
throw new Error("unexpected return type from developer.logs");
|
|
56
|
+
}
|
|
57
|
+
const logType = chunk.headers["type"];
|
|
58
|
+
if (typeof logType !== "string" || logType.length === 0) {
|
|
59
|
+
throw new Error("developer.logs returned a chunk without a valid type");
|
|
60
|
+
}
|
|
61
|
+
const decoded = chunk.data.length === 0
|
|
62
|
+
? {}
|
|
63
|
+
: JSON.parse(new TextDecoder().decode(chunk.data));
|
|
64
|
+
if (typeof decoded !== "object" || decoded === null || Array.isArray(decoded)) {
|
|
65
|
+
throw new Error("developer.logs returned invalid JSON data");
|
|
66
|
+
}
|
|
67
|
+
const event = new room_event_1.RoomLogEvent({ type: logType, data: decoded });
|
|
68
|
+
this.client.emit(event);
|
|
69
|
+
this.emit("log", event);
|
|
70
|
+
yield event;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
finally {
|
|
74
|
+
if (resolveClosed) {
|
|
75
|
+
resolveClosed();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
33
78
|
}
|
|
34
79
|
}
|
|
35
80
|
exports.DeveloperClient = DeveloperClient;
|
package/dist/node/helpers.js
CHANGED
|
@@ -17,10 +17,11 @@ function validateSchemaName(name) {
|
|
|
17
17
|
}
|
|
18
18
|
async function deploySchema({ room, schema, name, overwrite = true }) {
|
|
19
19
|
validateSchemaName(name);
|
|
20
|
-
const handle = await room.storage.open(`.schemas/${name}.json`, { overwrite });
|
|
21
20
|
const data = Buffer.from(JSON.stringify(schema.toJson()), 'utf-8');
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
async function* singleChunk() {
|
|
22
|
+
yield data;
|
|
23
|
+
}
|
|
24
|
+
await room.storage.uploadStream(`.schemas/${name}.json`, singleChunk(), { overwrite, size: data.length });
|
|
24
25
|
}
|
|
25
26
|
function meshagentBaseUrl(baseUrl) {
|
|
26
27
|
if (baseUrl) {
|
package/dist/node/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export * from './agent-client';
|
|
|
3
3
|
export * from './event-emitter';
|
|
4
4
|
export * from './client';
|
|
5
5
|
export * from './completer';
|
|
6
|
+
export * from './containers-client';
|
|
6
7
|
export * from './data-types';
|
|
7
8
|
export * from './database-client';
|
|
8
9
|
export * from './developer-client';
|
package/dist/node/index.js
CHANGED
|
@@ -19,6 +19,7 @@ __exportStar(require("./agent-client"), exports);
|
|
|
19
19
|
__exportStar(require("./event-emitter"), exports);
|
|
20
20
|
__exportStar(require("./client"), exports);
|
|
21
21
|
__exportStar(require("./completer"), exports);
|
|
22
|
+
__exportStar(require("./containers-client"), exports);
|
|
22
23
|
__exportStar(require("./data-types"), exports);
|
|
23
24
|
__exportStar(require("./database-client"), exports);
|
|
24
25
|
__exportStar(require("./developer-client"), exports);
|
package/dist/node/lk-client.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.LivekitClient = exports.LivekitConnectionInfo = void 0;
|
|
4
|
+
const response_1 = require("./response");
|
|
5
|
+
const room_server_client_1 = require("./room-server-client");
|
|
4
6
|
class LivekitConnectionInfo {
|
|
5
7
|
constructor({ url, token }) {
|
|
6
8
|
this.url = url;
|
|
@@ -13,11 +15,18 @@ class LivekitClient {
|
|
|
13
15
|
this.room = room;
|
|
14
16
|
}
|
|
15
17
|
async getConnectionInfo({ breakoutRoom }) {
|
|
16
|
-
const response =
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
const response = await this.room.invoke({
|
|
19
|
+
toolkit: 'livekit',
|
|
20
|
+
tool: 'connect',
|
|
21
|
+
input: { breakout_room: breakoutRoom ?? null },
|
|
22
|
+
});
|
|
23
|
+
if (!(response instanceof response_1.JsonContent)) {
|
|
24
|
+
throw new room_server_client_1.RoomServerException('unexpected return type from livekit.connect');
|
|
19
25
|
}
|
|
20
26
|
const { url, token } = response.json;
|
|
27
|
+
if (typeof url !== 'string' || typeof token !== 'string') {
|
|
28
|
+
throw new room_server_client_1.RoomServerException('unexpected return type from livekit.connect');
|
|
29
|
+
}
|
|
21
30
|
return new LivekitConnectionInfo({ url, token });
|
|
22
31
|
}
|
|
23
32
|
}
|
|
@@ -62,9 +62,14 @@ export interface ProjectStorageMountSpec {
|
|
|
62
62
|
subpath?: string | null;
|
|
63
63
|
read_only?: boolean;
|
|
64
64
|
}
|
|
65
|
+
export interface EmptyDirMountSpec {
|
|
66
|
+
path: string;
|
|
67
|
+
read_only?: boolean;
|
|
68
|
+
}
|
|
65
69
|
export interface ContainerMountSpec {
|
|
66
70
|
room?: RoomStorageMountSpec[];
|
|
67
71
|
project?: ProjectStorageMountSpec[];
|
|
72
|
+
empty_dirs?: EmptyDirMountSpec[];
|
|
68
73
|
}
|
|
69
74
|
export interface ServiceApiKeySpec {
|
|
70
75
|
role: "admin";
|
|
@@ -8,6 +8,20 @@ const room_event_1 = require("./room-event");
|
|
|
8
8
|
const utils_1 = require("./utils");
|
|
9
9
|
const stream_controller_1 = require("./stream-controller");
|
|
10
10
|
const completer_1 = require("./completer");
|
|
11
|
+
const globalScope = globalThis;
|
|
12
|
+
function bytesToBase64(bytes) {
|
|
13
|
+
if (globalScope.Buffer) {
|
|
14
|
+
return globalScope.Buffer.from(bytes).toString("base64");
|
|
15
|
+
}
|
|
16
|
+
if (!globalScope.btoa) {
|
|
17
|
+
throw new Error("base64 encoding is not available in this runtime");
|
|
18
|
+
}
|
|
19
|
+
let binary = "";
|
|
20
|
+
for (const byte of bytes) {
|
|
21
|
+
binary += String.fromCharCode(byte);
|
|
22
|
+
}
|
|
23
|
+
return globalScope.btoa(binary);
|
|
24
|
+
}
|
|
11
25
|
class MessageStreamChunk {
|
|
12
26
|
constructor({ header, data }) {
|
|
13
27
|
this.header = header;
|
|
@@ -24,6 +38,19 @@ class MessagingClient extends event_emitter_1.EventEmitter {
|
|
|
24
38
|
this.client = room;
|
|
25
39
|
this.client.protocol.addHandler("messaging.send", this._handleMessageSend.bind(this));
|
|
26
40
|
}
|
|
41
|
+
_messageInput(params) {
|
|
42
|
+
const input = {
|
|
43
|
+
type: params.type,
|
|
44
|
+
message_json: JSON.stringify(params.message),
|
|
45
|
+
};
|
|
46
|
+
if (params.attachment !== undefined) {
|
|
47
|
+
input["attachment_base64"] = bytesToBase64(params.attachment);
|
|
48
|
+
}
|
|
49
|
+
if (params.toParticipantId !== undefined) {
|
|
50
|
+
input["to_participant_id"] = params.toParticipantId;
|
|
51
|
+
}
|
|
52
|
+
return input;
|
|
53
|
+
}
|
|
27
54
|
async createStream({ to, header }) {
|
|
28
55
|
const streamId = (0, uuid_1.v4)();
|
|
29
56
|
const completer = new completer_1.Completer();
|
|
@@ -36,21 +63,38 @@ class MessagingClient extends event_emitter_1.EventEmitter {
|
|
|
36
63
|
return completer.fut;
|
|
37
64
|
}
|
|
38
65
|
async sendMessage({ to, type, message, attachment }) {
|
|
39
|
-
await this.client.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
66
|
+
await this.client.invoke({
|
|
67
|
+
toolkit: "messaging",
|
|
68
|
+
tool: "send",
|
|
69
|
+
input: this._messageInput({
|
|
70
|
+
toParticipantId: to.id,
|
|
71
|
+
type,
|
|
72
|
+
message,
|
|
73
|
+
attachment,
|
|
74
|
+
}),
|
|
75
|
+
});
|
|
44
76
|
}
|
|
45
77
|
async enable(onStreamAccept) {
|
|
46
|
-
await this.client.
|
|
78
|
+
await this.client.invoke({
|
|
79
|
+
toolkit: "messaging",
|
|
80
|
+
tool: "enable",
|
|
81
|
+
input: {},
|
|
82
|
+
});
|
|
47
83
|
this._onStreamAcceptCallback = onStreamAccept;
|
|
48
84
|
}
|
|
49
85
|
async disable() {
|
|
50
|
-
await this.client.
|
|
86
|
+
await this.client.invoke({
|
|
87
|
+
toolkit: "messaging",
|
|
88
|
+
tool: "disable",
|
|
89
|
+
input: {},
|
|
90
|
+
});
|
|
51
91
|
}
|
|
52
92
|
async broadcastMessage({ type, message, attachment }) {
|
|
53
|
-
await this.client.
|
|
93
|
+
await this.client.invoke({
|
|
94
|
+
toolkit: "messaging",
|
|
95
|
+
tool: "broadcast",
|
|
96
|
+
input: this._messageInput({ type, message, attachment }),
|
|
97
|
+
});
|
|
54
98
|
}
|
|
55
99
|
get remoteParticipants() {
|
|
56
100
|
return Object.values(this._participants);
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.QueuesClient = exports.Queue = void 0;
|
|
4
4
|
const response_1 = require("./response");
|
|
5
|
+
const room_server_client_1 = require("./room-server-client");
|
|
5
6
|
class Queue {
|
|
6
7
|
constructor({ name, size }) {
|
|
7
8
|
this.name = name;
|
|
@@ -13,25 +14,50 @@ class QueuesClient {
|
|
|
13
14
|
constructor({ room }) {
|
|
14
15
|
this.client = room;
|
|
15
16
|
}
|
|
17
|
+
_unexpectedResponseError(operation) {
|
|
18
|
+
return new room_server_client_1.RoomServerException(`unexpected return type from queues.${operation}`);
|
|
19
|
+
}
|
|
20
|
+
async _invoke(operation, arguments_) {
|
|
21
|
+
return await this.client.invoke({
|
|
22
|
+
toolkit: "queues",
|
|
23
|
+
tool: operation,
|
|
24
|
+
arguments: arguments_,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
16
27
|
async list() {
|
|
17
|
-
const response =
|
|
28
|
+
const response = await this._invoke("list", {});
|
|
29
|
+
if (!(response instanceof response_1.JsonContent)) {
|
|
30
|
+
throw this._unexpectedResponseError("list");
|
|
31
|
+
}
|
|
18
32
|
const queues = response.json["queues"];
|
|
19
33
|
return queues.map((q) => new Queue({ name: q["name"], size: q["size"] }));
|
|
20
34
|
}
|
|
21
35
|
async open(name) {
|
|
22
|
-
await this.
|
|
36
|
+
const response = await this._invoke("open", { name });
|
|
37
|
+
if (!(response instanceof response_1.EmptyContent)) {
|
|
38
|
+
throw this._unexpectedResponseError("open");
|
|
39
|
+
}
|
|
23
40
|
}
|
|
24
41
|
async drain(name) {
|
|
25
|
-
await this.
|
|
42
|
+
const response = await this._invoke("drain", { name });
|
|
43
|
+
if (!(response instanceof response_1.EmptyContent)) {
|
|
44
|
+
throw this._unexpectedResponseError("drain");
|
|
45
|
+
}
|
|
26
46
|
}
|
|
27
47
|
async close(name) {
|
|
28
|
-
await this.
|
|
48
|
+
const response = await this._invoke("close", { name });
|
|
49
|
+
if (!(response instanceof response_1.EmptyContent)) {
|
|
50
|
+
throw this._unexpectedResponseError("close");
|
|
51
|
+
}
|
|
29
52
|
}
|
|
30
53
|
async send(name, message, { create = true }) {
|
|
31
|
-
await this.
|
|
54
|
+
const response = await this._invoke("send", { name, create, message });
|
|
55
|
+
if (!(response instanceof response_1.EmptyContent)) {
|
|
56
|
+
throw this._unexpectedResponseError("send");
|
|
57
|
+
}
|
|
32
58
|
}
|
|
33
59
|
async receive(name, { create = true, wait = true }) {
|
|
34
|
-
const response = await this.
|
|
60
|
+
const response = await this._invoke("receive", {
|
|
35
61
|
name,
|
|
36
62
|
create,
|
|
37
63
|
wait,
|
|
@@ -39,9 +65,10 @@ class QueuesClient {
|
|
|
39
65
|
if (response instanceof response_1.EmptyContent) {
|
|
40
66
|
return null;
|
|
41
67
|
}
|
|
42
|
-
|
|
68
|
+
if (response instanceof response_1.JsonContent) {
|
|
43
69
|
return response.json;
|
|
44
70
|
}
|
|
71
|
+
throw this._unexpectedResponseError("receive");
|
|
45
72
|
}
|
|
46
73
|
}
|
|
47
74
|
exports.QueuesClient = QueuesClient;
|
package/dist/node/response.d.ts
CHANGED
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
export interface Content {
|
|
2
2
|
pack(): Uint8Array;
|
|
3
3
|
}
|
|
4
|
+
export declare class BinaryContent implements Content {
|
|
5
|
+
data: Uint8Array;
|
|
6
|
+
headers: Record<string, any>;
|
|
7
|
+
constructor({ data, headers }: {
|
|
8
|
+
data: Uint8Array;
|
|
9
|
+
headers?: Record<string, any>;
|
|
10
|
+
});
|
|
11
|
+
static unpack(header: Record<string, any>, payload: Uint8Array): BinaryContent;
|
|
12
|
+
pack(): Uint8Array;
|
|
13
|
+
toString(): string;
|
|
14
|
+
}
|
|
4
15
|
export declare class LinkContent implements Content {
|
|
5
16
|
url: string;
|
|
6
17
|
name: string;
|
|
@@ -59,4 +70,21 @@ export declare class EmptyContent implements Content {
|
|
|
59
70
|
pack(): Uint8Array;
|
|
60
71
|
toString(): string;
|
|
61
72
|
}
|
|
73
|
+
export declare enum ControlCloseStatus {
|
|
74
|
+
NORMAL = 1000,
|
|
75
|
+
INVALID_DATA = 1007
|
|
76
|
+
}
|
|
77
|
+
export declare class ControlContent implements Content {
|
|
78
|
+
method: "open" | "close";
|
|
79
|
+
statusCode?: number;
|
|
80
|
+
message?: string;
|
|
81
|
+
constructor({ method, statusCode, message, }: {
|
|
82
|
+
method: "open" | "close";
|
|
83
|
+
statusCode?: number;
|
|
84
|
+
message?: string;
|
|
85
|
+
});
|
|
86
|
+
static unpack(header: Record<string, any>, _payload: Uint8Array): ControlContent;
|
|
87
|
+
pack(): Uint8Array;
|
|
88
|
+
toString(): string;
|
|
89
|
+
}
|
|
62
90
|
export declare function unpackContent(data: Uint8Array): Content;
|
package/dist/node/response.js
CHANGED
|
@@ -1,8 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EmptyContent = exports.ErrorContent = exports.JsonContent = exports.TextContent = exports.FileContent = exports.LinkContent = void 0;
|
|
3
|
+
exports.ControlContent = exports.ControlCloseStatus = exports.EmptyContent = exports.ErrorContent = exports.JsonContent = exports.TextContent = exports.FileContent = exports.LinkContent = exports.BinaryContent = void 0;
|
|
4
4
|
exports.unpackContent = unpackContent;
|
|
5
5
|
const utils_1 = require("./utils");
|
|
6
|
+
class BinaryContent {
|
|
7
|
+
constructor({ data, headers = {} }) {
|
|
8
|
+
this.data = data;
|
|
9
|
+
this.headers = headers;
|
|
10
|
+
}
|
|
11
|
+
static unpack(header, payload) {
|
|
12
|
+
return new BinaryContent({
|
|
13
|
+
data: payload,
|
|
14
|
+
headers: typeof header["headers"] === "object" && header["headers"] != null ? header["headers"] : {},
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
pack() {
|
|
18
|
+
return (0, utils_1.packMessage)({
|
|
19
|
+
type: "binary",
|
|
20
|
+
headers: this.headers,
|
|
21
|
+
}, this.data);
|
|
22
|
+
}
|
|
23
|
+
toString() {
|
|
24
|
+
return `BinaryContent: headers=${JSON.stringify(this.headers)} length=${this.data.length}`;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.BinaryContent = BinaryContent;
|
|
6
28
|
class LinkContent {
|
|
7
29
|
constructor({ url, name }) {
|
|
8
30
|
this.url = url;
|
|
@@ -137,7 +159,60 @@ class EmptyContent {
|
|
|
137
159
|
}
|
|
138
160
|
}
|
|
139
161
|
exports.EmptyContent = EmptyContent;
|
|
162
|
+
var ControlCloseStatus;
|
|
163
|
+
(function (ControlCloseStatus) {
|
|
164
|
+
ControlCloseStatus[ControlCloseStatus["NORMAL"] = 1000] = "NORMAL";
|
|
165
|
+
ControlCloseStatus[ControlCloseStatus["INVALID_DATA"] = 1007] = "INVALID_DATA";
|
|
166
|
+
})(ControlCloseStatus || (exports.ControlCloseStatus = ControlCloseStatus = {}));
|
|
167
|
+
class ControlContent {
|
|
168
|
+
constructor({ method, statusCode, message, }) {
|
|
169
|
+
this.method = method;
|
|
170
|
+
this.statusCode = method === "close" ? statusCode ?? ControlCloseStatus.NORMAL : statusCode;
|
|
171
|
+
this.message = message;
|
|
172
|
+
}
|
|
173
|
+
static unpack(header, _payload) {
|
|
174
|
+
const method = header["method"];
|
|
175
|
+
if (method !== "open" && method !== "close") {
|
|
176
|
+
throw new Error(`Invalid control method: ${method}`);
|
|
177
|
+
}
|
|
178
|
+
const rawStatusCode = header["status_code"];
|
|
179
|
+
let statusCode;
|
|
180
|
+
if (typeof rawStatusCode === "number" && Number.isInteger(rawStatusCode)) {
|
|
181
|
+
statusCode = rawStatusCode;
|
|
182
|
+
}
|
|
183
|
+
else if (typeof rawStatusCode === "string") {
|
|
184
|
+
const parsed = Number.parseInt(rawStatusCode, 10);
|
|
185
|
+
if (!Number.isNaN(parsed)) {
|
|
186
|
+
statusCode = parsed;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return new ControlContent({
|
|
190
|
+
method,
|
|
191
|
+
statusCode,
|
|
192
|
+
message: typeof header["message"] === "string" ? header["message"] : undefined,
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
pack() {
|
|
196
|
+
const header = {
|
|
197
|
+
type: "control",
|
|
198
|
+
method: this.method,
|
|
199
|
+
};
|
|
200
|
+
if (this.method === "close") {
|
|
201
|
+
header["status_code"] = this.statusCode ?? ControlCloseStatus.NORMAL;
|
|
202
|
+
if (this.message !== undefined) {
|
|
203
|
+
header["message"] = this.message;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return (0, utils_1.packMessage)(header);
|
|
207
|
+
}
|
|
208
|
+
toString() {
|
|
209
|
+
return `ControlContent: ${this.method}`;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
exports.ControlContent = ControlContent;
|
|
140
213
|
const _contentTypes = {
|
|
214
|
+
binary: BinaryContent.unpack,
|
|
215
|
+
control: ControlContent.unpack,
|
|
141
216
|
empty: EmptyContent.unpack,
|
|
142
217
|
error: ErrorContent.unpack,
|
|
143
218
|
file: FileContent.unpack,
|
|
@@ -6,8 +6,9 @@ import { StorageClient } from "./storage-client";
|
|
|
6
6
|
import { MessagingClient } from "./messaging-client";
|
|
7
7
|
import { QueuesClient } from "./queues-client";
|
|
8
8
|
import { DatabaseClient } from "./database-client";
|
|
9
|
-
import { AgentsClient } from "./agent-client";
|
|
9
|
+
import { AgentsClient, ToolkitDescription } from "./agent-client";
|
|
10
10
|
import { SecretsClient } from "./secrets-client";
|
|
11
|
+
import { ContainersClient } from "./containers-client";
|
|
11
12
|
import { RoomEvent } from "./room-event";
|
|
12
13
|
import { Content } from "./response";
|
|
13
14
|
interface RequestHeader {
|
|
@@ -23,10 +24,12 @@ export declare class RoomClient {
|
|
|
23
24
|
readonly database: DatabaseClient;
|
|
24
25
|
readonly agents: AgentsClient;
|
|
25
26
|
readonly secrets: SecretsClient;
|
|
27
|
+
readonly containers: ContainersClient;
|
|
26
28
|
private _pendingRequests;
|
|
27
29
|
private _ready;
|
|
28
30
|
private _localParticipant;
|
|
29
31
|
private _eventsController;
|
|
32
|
+
private _toolCallStreams;
|
|
30
33
|
constructor({ protocol }: {
|
|
31
34
|
protocol: Protocol;
|
|
32
35
|
});
|
|
@@ -38,6 +41,45 @@ export declare class RoomClient {
|
|
|
38
41
|
}): Promise<void>;
|
|
39
42
|
dispose(): void;
|
|
40
43
|
sendRequest(type: string, request: RequestHeader, data?: Uint8Array): Promise<Content>;
|
|
44
|
+
call(params: {
|
|
45
|
+
name: string;
|
|
46
|
+
url: string;
|
|
47
|
+
arguments: Record<string, any>;
|
|
48
|
+
}): Promise<void>;
|
|
49
|
+
listToolkits(params?: {
|
|
50
|
+
participantId?: string;
|
|
51
|
+
participantName?: string;
|
|
52
|
+
timeout?: number;
|
|
53
|
+
}): Promise<ToolkitDescription[]>;
|
|
54
|
+
invoke(params: {
|
|
55
|
+
toolkit: string;
|
|
56
|
+
tool: string;
|
|
57
|
+
arguments?: Record<string, any>;
|
|
58
|
+
input?: Record<string, any> | Content;
|
|
59
|
+
participantId?: string;
|
|
60
|
+
onBehalfOfId?: string;
|
|
61
|
+
callerContext?: Record<string, any>;
|
|
62
|
+
}): Promise<Content>;
|
|
63
|
+
invokeWithStreamInput(params: {
|
|
64
|
+
toolkit: string;
|
|
65
|
+
tool: string;
|
|
66
|
+
input: AsyncIterable<Content>;
|
|
67
|
+
participantId?: string;
|
|
68
|
+
onBehalfOfId?: string;
|
|
69
|
+
callerContext?: Record<string, any>;
|
|
70
|
+
}): Promise<Content>;
|
|
71
|
+
invokeStream(params: {
|
|
72
|
+
toolkit: string;
|
|
73
|
+
tool: string;
|
|
74
|
+
input: AsyncIterable<Content>;
|
|
75
|
+
participantId?: string;
|
|
76
|
+
onBehalfOfId?: string;
|
|
77
|
+
callerContext?: Record<string, any>;
|
|
78
|
+
}): Promise<AsyncIterable<Content>>;
|
|
79
|
+
private _sendToolCallRequestChunk;
|
|
80
|
+
private _streamInvokeToolRequestChunks;
|
|
81
|
+
private _decodeToolCallContent;
|
|
82
|
+
private _handleToolCallResponseChunk;
|
|
41
83
|
private _handleResponse;
|
|
42
84
|
private _handleRoomReady;
|
|
43
85
|
private _onParticipantInit;
|