@meshagent/meshagent 0.31.1 → 0.31.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/browser/index.d.ts +2 -0
  3. package/dist/browser/index.js +2 -0
  4. package/dist/browser/memory-client.d.ts +23 -0
  5. package/dist/browser/memory-client.js +56 -0
  6. package/dist/browser/messaging-client.d.ts +5 -1
  7. package/dist/browser/messaging-client.js +49 -8
  8. package/dist/browser/participant-token.js +8 -2
  9. package/dist/browser/participant.d.ts +3 -1
  10. package/dist/browser/participant.js +5 -1
  11. package/dist/browser/room-client.d.ts +4 -0
  12. package/dist/browser/room-client.js +4 -0
  13. package/dist/browser/services-client.d.ts +28 -0
  14. package/dist/browser/services-client.js +93 -0
  15. package/dist/esm/index.d.ts +2 -0
  16. package/dist/esm/index.js +2 -0
  17. package/dist/esm/memory-client.d.ts +23 -0
  18. package/dist/esm/memory-client.js +52 -0
  19. package/dist/esm/messaging-client.d.ts +5 -1
  20. package/dist/esm/messaging-client.js +49 -8
  21. package/dist/esm/participant-token.js +8 -2
  22. package/dist/esm/participant.d.ts +3 -1
  23. package/dist/esm/participant.js +5 -1
  24. package/dist/esm/room-client.d.ts +4 -0
  25. package/dist/esm/room-client.js +4 -0
  26. package/dist/esm/services-client.d.ts +28 -0
  27. package/dist/esm/services-client.js +89 -0
  28. package/dist/node/index.d.ts +2 -0
  29. package/dist/node/index.js +2 -0
  30. package/dist/node/memory-client.d.ts +23 -0
  31. package/dist/node/memory-client.js +56 -0
  32. package/dist/node/messaging-client.d.ts +5 -1
  33. package/dist/node/messaging-client.js +49 -8
  34. package/dist/node/participant-token.js +8 -2
  35. package/dist/node/participant.d.ts +3 -1
  36. package/dist/node/participant.js +5 -1
  37. package/dist/node/room-client.d.ts +4 -0
  38. package/dist/node/room-client.js +4 -0
  39. package/dist/node/services-client.d.ts +28 -0
  40. package/dist/node/services-client.js +93 -0
  41. package/package.json +1 -1
@@ -14,6 +14,8 @@ const database_client_1 = require("./database-client");
14
14
  const agent_client_1 = require("./agent-client");
15
15
  const secrets_client_1 = require("./secrets-client");
16
16
  const containers_client_1 = require("./containers-client");
17
+ const memory_client_1 = require("./memory-client");
18
+ const services_client_1 = require("./services-client");
17
19
  const room_server_client_1 = require("./room-server-client");
18
20
  const response_1 = require("./response");
19
21
  class RoomClient {
@@ -37,6 +39,8 @@ class RoomClient {
37
39
  this.agents = new agent_client_1.AgentsClient({ room: this });
38
40
  this.secrets = new secrets_client_1.SecretsClient({ room: this });
39
41
  this.containers = new containers_client_1.ContainersClient({ room: this });
42
+ this.memory = new memory_client_1.MemoryClient({ room: this });
43
+ this.services = new services_client_1.ServicesClient({ room: this });
40
44
  }
41
45
  get localParticipant() {
42
46
  return this._localParticipant;
@@ -0,0 +1,28 @@
1
+ import { ServiceSpec } from "./meshagent-client";
2
+ import { RoomClient } from "./room-client";
3
+ export interface ServiceRuntimeState {
4
+ serviceId: string;
5
+ state: string;
6
+ containerId?: string;
7
+ restartScheduledAt?: number;
8
+ startedAt?: number;
9
+ restartCount: number;
10
+ lastExitCode?: number;
11
+ lastExitAt?: number;
12
+ }
13
+ export interface ListServicesResult {
14
+ services: ServiceSpec[];
15
+ serviceStates: Record<string, ServiceRuntimeState>;
16
+ }
17
+ export declare class ServicesClient {
18
+ private readonly room;
19
+ constructor({ room }: {
20
+ room: RoomClient;
21
+ });
22
+ private unexpectedResponse;
23
+ list(): Promise<ServiceSpec[]>;
24
+ listWithState(): Promise<ListServicesResult>;
25
+ restart(params: {
26
+ serviceId: string;
27
+ }): Promise<void>;
28
+ }
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ServicesClient = void 0;
4
+ const response_1 = require("./response");
5
+ const room_server_client_1 = require("./room-server-client");
6
+ function isRecord(value) {
7
+ return typeof value === "object" && value !== null && !Array.isArray(value);
8
+ }
9
+ function toOptionalNumber(value) {
10
+ return typeof value === "number" ? value : undefined;
11
+ }
12
+ function toOptionalInteger(value) {
13
+ return typeof value === "number" && Number.isInteger(value) ? value : undefined;
14
+ }
15
+ function parseServiceRuntimeState(value) {
16
+ if (!isRecord(value) || typeof value["service_id"] !== "string") {
17
+ throw new room_server_client_1.RoomServerException("unexpected return type from services.list");
18
+ }
19
+ const state = value["state"];
20
+ const containerId = value["container_id"];
21
+ return {
22
+ serviceId: value["service_id"],
23
+ state: typeof state === "string" ? state : "unknown",
24
+ containerId: typeof containerId === "string" ? containerId : undefined,
25
+ restartScheduledAt: toOptionalNumber(value["restart_scheduled_at"]),
26
+ startedAt: toOptionalNumber(value["started_at"]),
27
+ restartCount: toOptionalInteger(value["restart_count"]) ?? 0,
28
+ lastExitCode: toOptionalInteger(value["last_exit_code"]),
29
+ lastExitAt: toOptionalNumber(value["last_exit_at"]),
30
+ };
31
+ }
32
+ function parseServiceSpecJson(value) {
33
+ if (typeof value === "string") {
34
+ const parsed = JSON.parse(value);
35
+ if (!isRecord(parsed)) {
36
+ throw new room_server_client_1.RoomServerException("unexpected return type from services.list");
37
+ }
38
+ return parsed;
39
+ }
40
+ if (!isRecord(value)) {
41
+ throw new room_server_client_1.RoomServerException("unexpected return type from services.list");
42
+ }
43
+ return value;
44
+ }
45
+ class ServicesClient {
46
+ constructor({ room }) {
47
+ this.room = room;
48
+ }
49
+ unexpectedResponse(operation) {
50
+ return new room_server_client_1.RoomServerException(`unexpected return type from services.${operation}`);
51
+ }
52
+ async list() {
53
+ return (await this.listWithState()).services;
54
+ }
55
+ async listWithState() {
56
+ const response = await this.room.invoke({
57
+ toolkit: "services",
58
+ tool: "list",
59
+ input: {},
60
+ });
61
+ if (!(response instanceof response_1.JsonContent)) {
62
+ throw this.unexpectedResponse("list");
63
+ }
64
+ const servicesRaw = response.json["services_json"];
65
+ const serviceStatesRaw = response.json["service_states"];
66
+ if (!Array.isArray(servicesRaw) || !Array.isArray(serviceStatesRaw)) {
67
+ throw this.unexpectedResponse("list");
68
+ }
69
+ const serviceStates = {};
70
+ for (const item of serviceStatesRaw) {
71
+ const state = parseServiceRuntimeState(item);
72
+ serviceStates[state.serviceId] = state;
73
+ }
74
+ return {
75
+ services: servicesRaw.map((item) => parseServiceSpecJson(item)),
76
+ serviceStates,
77
+ };
78
+ }
79
+ async restart(params) {
80
+ const response = await this.room.invoke({
81
+ toolkit: "services",
82
+ tool: "restart",
83
+ input: {
84
+ service_id: params.serviceId,
85
+ },
86
+ });
87
+ if (response instanceof response_1.EmptyContent || response instanceof response_1.JsonContent) {
88
+ return;
89
+ }
90
+ throw this.unexpectedResponse("restart");
91
+ }
92
+ }
93
+ exports.ServicesClient = ServicesClient;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meshagent/meshagent",
3
- "version": "0.31.1",
3
+ "version": "0.31.3",
4
4
  "description": "Meshagent Client",
5
5
  "homepage": "https://github.com/meshagent/meshagent-ts",
6
6
  "scripts": {