@meowpanel/api 0.3.0 → 0.5.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 (201) hide show
  1. package/esm/mod.d.ts +37 -16
  2. package/esm/mod.d.ts.map +1 -1
  3. package/esm/mod.js +25 -7
  4. package/esm/src/client.d.ts +48 -11
  5. package/esm/src/client.d.ts.map +1 -1
  6. package/esm/src/client.js +53 -12
  7. package/esm/src/http.d.ts +2 -2
  8. package/esm/src/http.d.ts.map +1 -1
  9. package/esm/src/http.js +5 -2
  10. package/esm/src/namespace.d.ts +1 -1
  11. package/esm/src/namespace.js +1 -1
  12. package/esm/src/resources/account.d.ts +50 -19
  13. package/esm/src/resources/account.d.ts.map +1 -1
  14. package/esm/src/resources/account.js +51 -13
  15. package/esm/src/resources/api-keys.d.ts +16 -24
  16. package/esm/src/resources/api-keys.d.ts.map +1 -1
  17. package/esm/src/resources/api-keys.js +16 -20
  18. package/esm/src/resources/auth.d.ts +70 -4
  19. package/esm/src/resources/auth.d.ts.map +1 -1
  20. package/esm/src/resources/auth.js +47 -4
  21. package/esm/src/resources/eggs.d.ts +261 -22
  22. package/esm/src/resources/eggs.d.ts.map +1 -1
  23. package/esm/src/resources/eggs.js +261 -25
  24. package/esm/src/resources/features.d.ts +35 -0
  25. package/esm/src/resources/features.d.ts.map +1 -0
  26. package/esm/src/resources/features.js +21 -0
  27. package/esm/src/resources/hosts.d.ts +151 -21
  28. package/esm/src/resources/hosts.d.ts.map +1 -1
  29. package/esm/src/resources/hosts.js +143 -10
  30. package/esm/src/resources/logs.d.ts +39 -0
  31. package/esm/src/resources/logs.d.ts.map +1 -0
  32. package/esm/src/resources/logs.js +38 -0
  33. package/esm/src/resources/nodes.d.ts +108 -33
  34. package/esm/src/resources/nodes.d.ts.map +1 -1
  35. package/esm/src/resources/nodes.js +116 -24
  36. package/esm/src/resources/permissions.d.ts +45 -0
  37. package/esm/src/resources/permissions.d.ts.map +1 -0
  38. package/esm/src/resources/permissions.js +26 -0
  39. package/esm/src/resources/request-logs.d.ts +91 -0
  40. package/esm/src/resources/request-logs.d.ts.map +1 -0
  41. package/esm/src/resources/request-logs.js +70 -0
  42. package/esm/src/resources/roles.d.ts +128 -0
  43. package/esm/src/resources/roles.d.ts.map +1 -0
  44. package/esm/src/resources/roles.js +142 -0
  45. package/esm/src/resources/server-groups.d.ts +141 -7
  46. package/esm/src/resources/server-groups.d.ts.map +1 -1
  47. package/esm/src/resources/server-groups.js +157 -8
  48. package/esm/src/resources/servers/activity.d.ts +50 -8
  49. package/esm/src/resources/servers/activity.d.ts.map +1 -1
  50. package/esm/src/resources/servers/activity.js +54 -13
  51. package/esm/src/resources/servers/allocations.d.ts +3 -3
  52. package/esm/src/resources/servers/allocations.d.ts.map +1 -1
  53. package/esm/src/resources/servers/allocations.js +7 -7
  54. package/esm/src/resources/servers/backups.d.ts +46 -0
  55. package/esm/src/resources/servers/backups.d.ts.map +1 -0
  56. package/esm/src/resources/servers/backups.js +43 -0
  57. package/esm/src/resources/servers/connection.d.ts +33 -13
  58. package/esm/src/resources/servers/connection.d.ts.map +1 -1
  59. package/esm/src/resources/servers/connection.js +32 -11
  60. package/esm/src/resources/servers/features.d.ts +81 -0
  61. package/esm/src/resources/servers/features.d.ts.map +1 -0
  62. package/esm/src/resources/servers/features.js +60 -0
  63. package/esm/src/resources/servers/files.d.ts +41 -53
  64. package/esm/src/resources/servers/files.d.ts.map +1 -1
  65. package/esm/src/resources/servers/files.js +74 -116
  66. package/esm/src/resources/servers/index.d.ts +46 -27
  67. package/esm/src/resources/servers/index.d.ts.map +1 -1
  68. package/esm/src/resources/servers/index.js +26 -12
  69. package/esm/src/resources/servers/jobs.d.ts +88 -0
  70. package/esm/src/resources/servers/jobs.d.ts.map +1 -0
  71. package/esm/src/resources/servers/jobs.js +115 -0
  72. package/esm/src/resources/servers/node-client.d.ts +33 -0
  73. package/esm/src/resources/servers/node-client.d.ts.map +1 -0
  74. package/esm/src/resources/servers/node-client.js +61 -0
  75. package/esm/src/resources/servers/profiles.d.ts +83 -18
  76. package/esm/src/resources/servers/profiles.d.ts.map +1 -1
  77. package/esm/src/resources/servers/profiles.js +78 -11
  78. package/esm/src/resources/servers/server.d.ts +13 -28
  79. package/esm/src/resources/servers/server.d.ts.map +1 -1
  80. package/esm/src/resources/servers/server.js +21 -37
  81. package/esm/src/resources/servers/sftp.d.ts +12 -19
  82. package/esm/src/resources/servers/sftp.d.ts.map +1 -1
  83. package/esm/src/resources/servers/sftp.js +10 -14
  84. package/esm/src/resources/servers/sub-users.d.ts +99 -0
  85. package/esm/src/resources/servers/sub-users.d.ts.map +1 -0
  86. package/esm/src/resources/servers/sub-users.js +94 -0
  87. package/esm/src/resources/servers/types.d.ts +30 -28
  88. package/esm/src/resources/servers/types.d.ts.map +1 -1
  89. package/esm/src/resources/systems.d.ts +124 -0
  90. package/esm/src/resources/systems.d.ts.map +1 -0
  91. package/esm/src/resources/systems.js +139 -0
  92. package/esm/src/resources/users.d.ts +330 -0
  93. package/esm/src/resources/users.d.ts.map +1 -0
  94. package/esm/src/resources/users.js +280 -0
  95. package/esm/src/types.d.ts +18 -1
  96. package/esm/src/types.d.ts.map +1 -1
  97. package/esm/src/types.js +11 -0
  98. package/package.json +1 -1
  99. package/script/mod.d.ts +37 -16
  100. package/script/mod.d.ts.map +1 -1
  101. package/script/mod.js +50 -5
  102. package/script/src/client.d.ts +48 -11
  103. package/script/src/client.d.ts.map +1 -1
  104. package/script/src/client.js +53 -12
  105. package/script/src/http.d.ts +2 -2
  106. package/script/src/http.d.ts.map +1 -1
  107. package/script/src/http.js +5 -2
  108. package/script/src/namespace.d.ts +1 -1
  109. package/script/src/namespace.js +1 -1
  110. package/script/src/resources/account.d.ts +50 -19
  111. package/script/src/resources/account.d.ts.map +1 -1
  112. package/script/src/resources/account.js +50 -12
  113. package/script/src/resources/api-keys.d.ts +16 -24
  114. package/script/src/resources/api-keys.d.ts.map +1 -1
  115. package/script/src/resources/api-keys.js +15 -19
  116. package/script/src/resources/auth.d.ts +70 -4
  117. package/script/src/resources/auth.d.ts.map +1 -1
  118. package/script/src/resources/auth.js +47 -4
  119. package/script/src/resources/eggs.d.ts +261 -22
  120. package/script/src/resources/eggs.d.ts.map +1 -1
  121. package/script/src/resources/eggs.js +267 -26
  122. package/script/src/resources/features.d.ts +35 -0
  123. package/script/src/resources/features.d.ts.map +1 -0
  124. package/script/src/resources/features.js +25 -0
  125. package/script/src/resources/hosts.d.ts +151 -21
  126. package/script/src/resources/hosts.d.ts.map +1 -1
  127. package/script/src/resources/hosts.js +144 -10
  128. package/script/src/resources/logs.d.ts +39 -0
  129. package/script/src/resources/logs.d.ts.map +1 -0
  130. package/script/src/resources/logs.js +42 -0
  131. package/script/src/resources/nodes.d.ts +108 -33
  132. package/script/src/resources/nodes.d.ts.map +1 -1
  133. package/script/src/resources/nodes.js +117 -24
  134. package/script/src/resources/permissions.d.ts +45 -0
  135. package/script/src/resources/permissions.d.ts.map +1 -0
  136. package/script/src/resources/permissions.js +31 -0
  137. package/script/src/resources/request-logs.d.ts +91 -0
  138. package/script/src/resources/request-logs.d.ts.map +1 -0
  139. package/script/src/resources/request-logs.js +75 -0
  140. package/script/src/resources/roles.d.ts +128 -0
  141. package/script/src/resources/roles.d.ts.map +1 -0
  142. package/script/src/resources/roles.js +148 -0
  143. package/script/src/resources/server-groups.d.ts +141 -7
  144. package/script/src/resources/server-groups.d.ts.map +1 -1
  145. package/script/src/resources/server-groups.js +158 -8
  146. package/script/src/resources/servers/activity.d.ts +50 -8
  147. package/script/src/resources/servers/activity.d.ts.map +1 -1
  148. package/script/src/resources/servers/activity.js +54 -12
  149. package/script/src/resources/servers/allocations.d.ts +3 -3
  150. package/script/src/resources/servers/allocations.d.ts.map +1 -1
  151. package/script/src/resources/servers/allocations.js +7 -7
  152. package/script/src/resources/servers/backups.d.ts +46 -0
  153. package/script/src/resources/servers/backups.d.ts.map +1 -0
  154. package/script/src/resources/servers/backups.js +47 -0
  155. package/script/src/resources/servers/connection.d.ts +33 -13
  156. package/script/src/resources/servers/connection.d.ts.map +1 -1
  157. package/script/src/resources/servers/connection.js +32 -11
  158. package/script/src/resources/servers/features.d.ts +81 -0
  159. package/script/src/resources/servers/features.d.ts.map +1 -0
  160. package/script/src/resources/servers/features.js +64 -0
  161. package/script/src/resources/servers/files.d.ts +41 -53
  162. package/script/src/resources/servers/files.d.ts.map +1 -1
  163. package/script/src/resources/servers/files.js +74 -116
  164. package/script/src/resources/servers/index.d.ts +46 -27
  165. package/script/src/resources/servers/index.d.ts.map +1 -1
  166. package/script/src/resources/servers/index.js +26 -12
  167. package/script/src/resources/servers/jobs.d.ts +88 -0
  168. package/script/src/resources/servers/jobs.d.ts.map +1 -0
  169. package/script/src/resources/servers/jobs.js +120 -0
  170. package/script/src/resources/servers/node-client.d.ts +33 -0
  171. package/script/src/resources/servers/node-client.d.ts.map +1 -0
  172. package/script/src/resources/servers/node-client.js +65 -0
  173. package/script/src/resources/servers/profiles.d.ts +83 -18
  174. package/script/src/resources/servers/profiles.d.ts.map +1 -1
  175. package/script/src/resources/servers/profiles.js +77 -10
  176. package/script/src/resources/servers/server.d.ts +13 -28
  177. package/script/src/resources/servers/server.d.ts.map +1 -1
  178. package/script/src/resources/servers/server.js +21 -37
  179. package/script/src/resources/servers/sftp.d.ts +12 -19
  180. package/script/src/resources/servers/sftp.d.ts.map +1 -1
  181. package/script/src/resources/servers/sftp.js +10 -14
  182. package/script/src/resources/servers/sub-users.d.ts +99 -0
  183. package/script/src/resources/servers/sub-users.d.ts.map +1 -0
  184. package/script/src/resources/servers/sub-users.js +99 -0
  185. package/script/src/resources/servers/types.d.ts +30 -28
  186. package/script/src/resources/servers/types.d.ts.map +1 -1
  187. package/script/src/resources/systems.d.ts +124 -0
  188. package/script/src/resources/systems.d.ts.map +1 -0
  189. package/script/src/resources/systems.js +145 -0
  190. package/script/src/resources/users.d.ts +330 -0
  191. package/script/src/resources/users.d.ts.map +1 -0
  192. package/script/src/resources/users.js +287 -0
  193. package/script/src/types.d.ts +18 -1
  194. package/script/src/types.d.ts.map +1 -1
  195. package/script/src/types.js +12 -0
  196. package/esm/src/resources/members.d.ts +0 -138
  197. package/esm/src/resources/members.d.ts.map +0 -1
  198. package/esm/src/resources/members.js +0 -122
  199. package/script/src/resources/members.d.ts +0 -138
  200. package/script/src/resources/members.d.ts.map +0 -1
  201. package/script/src/resources/members.js +0 -127
@@ -1,14 +1,14 @@
1
1
  import type { HttpClient } from '../../http.js';
2
2
  import { ReactiveResource } from '../../reactive.js';
3
3
  import type { ListOptions, NanoID, Paginated } from '../../types.js';
4
- import { Member } from '../members.js';
4
+ import { User } from '../users.js';
5
5
  import type { ActivityJobData, ActivityJobLogData, ActivityLogData } from './types.js';
6
6
  /**
7
7
  * A single log entry within an {@link ActivityJob}.
8
8
  */
9
9
  export declare class ActivityJobLog {
10
- /** The type of log event, e.g. `"info"`, `"error"`. */
11
- readonly type: string;
10
+ /** The event type identifier, e.g. `"server.power.start"`. */
11
+ readonly event: string;
12
12
  /** Structured metadata about this log event. */
13
13
  readonly metadata: Record<string, unknown>;
14
14
  /** When this log entry was created. */
@@ -59,10 +59,22 @@ export declare class ActivityLog extends ReactiveResource {
59
59
  serverId: NanoID | null;
60
60
  /** NanoID of the node this activity is associated with, if any. */
61
61
  nodeId: NanoID | null;
62
- /** NanoID of the issuer (user or API key) who triggered this activity, or `null` for system. */
62
+ /** NanoID of the server group this activity is associated with, if any. */
63
+ groupId: NanoID | null;
64
+ /** NanoID of the host this activity is associated with, if any. */
65
+ hostId: NanoID | null;
66
+ /** The issuer's bare NanoID (parsed from the namespaced `issuer_id`), or `null`. */
63
67
  issuerId: NanoID | null;
64
- /** The member who triggered this activity. */
65
- issuer: Member | null | undefined;
68
+ /** The issuer's type, e.g. `'user'`, `'node'`, `'system'`, or `null`. */
69
+ issuerType: string | null;
70
+ /** The issuer who triggered this activity. */
71
+ issuer: User | null | undefined;
72
+ /** The subject's bare NanoID (parsed from the namespaced `subject_id`), or `null`. */
73
+ subjectId: NanoID | null;
74
+ /** The subject's type, or `null`. */
75
+ subjectType: string | null;
76
+ /** The subject this action was performed on. */
77
+ subject: User | null | undefined;
66
78
  /** The IP address the action was performed from, if available. */
67
79
  ip: string | null | undefined;
68
80
  /** Structured metadata about this activity (content depends on the event type). */
@@ -76,6 +88,36 @@ export declare class ActivityLog extends ReactiveResource {
76
88
  /** @internal */
77
89
  constructor(data: ActivityLogData);
78
90
  }
91
+ /** Query options for an activity-log feed. */
92
+ export interface ActivityFeedOptions {
93
+ page?: number;
94
+ perPage?: number;
95
+ /** Sort order by creation time. Defaults to oldest-first. */
96
+ sort?: 'created_at_asc' | 'created_at_desc';
97
+ /** Filter by event type, e.g. `"server.power.start"`. */
98
+ type?: string;
99
+ /** Filter by source IP. */
100
+ ip?: string;
101
+ /** Filter by the issuer's auth-issuer id. */
102
+ issuerId?: string;
103
+ /** Filter by the subject user's NanoID. */
104
+ subjectUserId?: NanoID;
105
+ /** Filter by server. */
106
+ serverId?: NanoID;
107
+ /** Filter by server group. */
108
+ groupId?: NanoID;
109
+ /** Filter by node. */
110
+ nodeId?: NanoID;
111
+ /** Filter by host. */
112
+ hostId?: NanoID;
113
+ }
114
+ /**
115
+ * Fetch an activity-log feed and map the entries to {@link ActivityLog} instances.
116
+ *
117
+ * @param extra Endpoint-specific query params (e.g. `scope`).
118
+ * @internal
119
+ */
120
+ export declare function listActivities(http: HttpClient, path: string, opts?: ActivityFeedOptions, extra?: Record<string, string | undefined>): Promise<Paginated<ActivityLog>>;
79
121
  /**
80
122
  * Manages activity logs and async jobs for a specific server.
81
123
  *
@@ -95,9 +137,9 @@ export declare class ServerActivityManager {
95
137
  /**
96
138
  * Fetch a paginated list of activity log entries for this server.
97
139
  *
98
- * @param opts Pagination options.
140
+ * @param opts Pagination and filter options.
99
141
  */
100
- list(opts?: ListOptions): Promise<Paginated<ActivityLog>>;
142
+ list(opts?: ActivityFeedOptions): Promise<Paginated<ActivityLog>>;
101
143
  /**
102
144
  * Fetch a single activity log entry.
103
145
  *
@@ -1 +1 @@
1
- {"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../../../src/src/resources/servers/activity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../../../src/src/resources/servers/activity.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ServerActivityManager = exports.ActivityLog = exports.ActivityJob = exports.ActivityJobLog = void 0;
4
+ exports.listActivities = listActivities;
4
5
  const reactive_js_1 = require("../../reactive.js");
5
6
  const types_js_1 = require("../../types.js");
6
- const members_js_1 = require("../members.js");
7
+ const users_js_1 = require("../users.js");
7
8
  /**
8
9
  * A single log entry within an {@link ActivityJob}.
9
10
  */
10
11
  class ActivityJobLog {
11
- /** The type of log event, e.g. `"info"`, `"error"`. */
12
- type;
12
+ /** The event type identifier, e.g. `"server.power.start"`. */
13
+ event;
13
14
  /** Structured metadata about this log event. */
14
15
  metadata;
15
16
  /** When this log entry was created. */
16
17
  createdAt;
17
18
  /** @internal */
18
19
  constructor(data) {
19
- this.type = data.type;
20
+ this.event = data.event;
20
21
  this.metadata = data.metadata;
21
22
  this.createdAt = new Date(data.created_at);
22
23
  }
@@ -80,10 +81,22 @@ class ActivityLog extends reactive_js_1.ReactiveResource {
80
81
  serverId;
81
82
  /** NanoID of the node this activity is associated with, if any. */
82
83
  nodeId;
83
- /** NanoID of the issuer (user or API key) who triggered this activity, or `null` for system. */
84
+ /** NanoID of the server group this activity is associated with, if any. */
85
+ groupId;
86
+ /** NanoID of the host this activity is associated with, if any. */
87
+ hostId;
88
+ /** The issuer's bare NanoID (parsed from the namespaced `issuer_id`), or `null`. */
84
89
  issuerId;
85
- /** The member who triggered this activity. */
90
+ /** The issuer's type, e.g. `'user'`, `'node'`, `'system'`, or `null`. */
91
+ issuerType;
92
+ /** The issuer who triggered this activity. */
86
93
  issuer;
94
+ /** The subject's bare NanoID (parsed from the namespaced `subject_id`), or `null`. */
95
+ subjectId;
96
+ /** The subject's type, or `null`. */
97
+ subjectType;
98
+ /** The subject this action was performed on. */
99
+ subject;
87
100
  /** The IP address the action was performed from, if available. */
88
101
  ip;
89
102
  /** Structured metadata about this activity (content depends on the event type). */
@@ -101,8 +114,16 @@ class ActivityLog extends reactive_js_1.ReactiveResource {
101
114
  this.event = data.event;
102
115
  this.serverId = data.server_id ? (0, types_js_1.toNanoID)(data.server_id) : null;
103
116
  this.nodeId = data.node_id ? (0, types_js_1.toNanoID)(data.node_id) : null;
104
- this.issuerId = data.issuer_id ? (0, types_js_1.toNanoID)(data.issuer_id) : null;
105
- this.issuer = data.issuer ? new members_js_1.Member(data.issuer) : data.issuer;
117
+ this.groupId = data.group_id ? (0, types_js_1.toNanoID)(data.group_id) : null;
118
+ this.hostId = data.host_id ? (0, types_js_1.toNanoID)(data.host_id) : null;
119
+ const issuer = data.issuer_id ? (0, types_js_1.parseIssuerRef)(data.issuer_id) : null;
120
+ this.issuerId = issuer ? issuer.id : null;
121
+ this.issuerType = issuer ? issuer.type : null;
122
+ this.issuer = data.issuer ? new users_js_1.User(data.issuer) : data.issuer;
123
+ const subject = data.subject_id ? (0, types_js_1.parseIssuerRef)(data.subject_id) : null;
124
+ this.subjectId = subject ? subject.id : null;
125
+ this.subjectType = subject ? subject.type : null;
126
+ this.subject = data.subject ? new users_js_1.User(data.subject) : data.subject;
106
127
  this.ip = data.ip;
107
128
  this.metadata = data.metadata;
108
129
  this.jobId = data.job_id ? (0, types_js_1.toNanoID)(data.job_id) : null;
@@ -111,6 +132,28 @@ class ActivityLog extends reactive_js_1.ReactiveResource {
111
132
  }
112
133
  }
113
134
  exports.ActivityLog = ActivityLog;
135
+ /**
136
+ * Fetch an activity-log feed and map the entries to {@link ActivityLog} instances.
137
+ *
138
+ * @param extra Endpoint-specific query params (e.g. `scope`).
139
+ * @internal
140
+ */
141
+ async function listActivities(http, path, opts = {}, extra = {}) {
142
+ const params = {
143
+ sort: opts.sort,
144
+ type: opts.type,
145
+ ip: opts.ip,
146
+ issuer_id: opts.issuerId,
147
+ subject_user_id: opts.subjectUserId,
148
+ server_id: opts.serverId,
149
+ group_id: opts.groupId,
150
+ node_id: opts.nodeId,
151
+ host_id: opts.hostId,
152
+ ...extra,
153
+ };
154
+ const result = await http.list(path, { page: opts.page, perPage: opts.perPage }, params);
155
+ return { ...result, data: result.data.map((d) => new ActivityLog(d)) };
156
+ }
114
157
  /**
115
158
  * Manages activity logs and async jobs for a specific server.
116
159
  *
@@ -133,11 +176,10 @@ class ServerActivityManager {
133
176
  /**
134
177
  * Fetch a paginated list of activity log entries for this server.
135
178
  *
136
- * @param opts Pagination options.
179
+ * @param opts Pagination and filter options.
137
180
  */
138
- async list(opts = {}) {
139
- const result = await this.http.list(`/servers/${this.serverId}/activities`, opts);
140
- return { ...result, data: result.data.map((d) => new ActivityLog(d)) };
181
+ list(opts = {}) {
182
+ return listActivities(this.http, `/servers/${this.serverId}/activities`, opts);
141
183
  }
142
184
  /**
143
185
  * Fetch a single activity log entry.
@@ -37,8 +37,8 @@ export declare class ServerAllocationPort extends ReactiveResource {
37
37
  /** Optional human-readable description for this allocation, e.g. `"Voice Chat"`. */
38
38
  description: string | null;
39
39
  /** NanoID of the underlying port record. */
40
- portId: NanoID | undefined;
41
- /** Full metadata about the underlying port. */
40
+ metaId: NanoID | undefined;
41
+ /** Full metadata about the underlying port. Requires `?include=meta` (sent automatically). */
42
42
  meta: AllocationPortMeta | null | undefined;
43
43
  /** `true` if this is the server's primary allocation. */
44
44
  isPrimary: boolean;
@@ -73,7 +73,7 @@ export type AddAllocationEntry = {
73
73
  * ```ts ignore
74
74
  * const ports = await server.allocations.list();
75
75
  * const primary = await server.allocations.primary();
76
- * await server.allocations.update(portId, { description: 'Game port', isPrimary: true });
76
+ * await server.allocations.update(allocationId, { description: 'Game port', isPrimary: true });
77
77
  * await server.allocations.add([{ ip: '1.2.3.4', port: 25566 }]);
78
78
  * ```
79
79
  */
@@ -1 +1 @@
1
- {"version":3,"file":"allocations.d.ts","sourceRoot":"","sources":["../../../../src/src/resources/servers/allocations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAErE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,0DAA0D;IAC1D,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,6DAA6D;IAC7D,OAAO,EAAE,OAAO,CAAC;IACjB,sBAAsB;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACjC,oCAAoC;IACpC,SAAS,EAAE,IAAI,CAAC;IAChB,uCAAuC;IACvC,SAAS,EAAE,IAAI,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,qBAAa,oBAAqB,SAAQ,gBAAgB;IACzD,oDAAoD;IACpD,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,oFAAoF;IAC7E,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,4CAA4C;IACrC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,+CAA+C;IACxC,IAAI,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,CAAC;IACnD,yDAAyD;IAClD,SAAS,EAAE,OAAO,CAAC;IAC1B,uDAAuD;IAChD,SAAS,EAAE,IAAI,CAAC;IACvB,6CAA6C;IACtC,SAAS,EAAE,IAAI,CAAC;IAEvB,mEAAmE;IACnE,IAAW,EAAE,IAAI,MAAM,GAAG,SAAS,CAElC;IAED,8CAA8C;IAC9C,IAAW,IAAI,IAAI,MAAM,GAAG,SAAS,CAEpC;IAED,qEAAqE;IACrE,IAAW,OAAO,IAAI,MAAM,GAAG,SAAS,CAGvC;IAED,gBAAgB;gBACG,IAAI,EAAE,wBAAwB;CAqBjD;AAED,6EAA6E;AAC7E,MAAM,MAAM,kBAAkB,GAC3B;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GACd;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,EAAE,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE,CAAA;CAAE,CAAC;AAEjC;;;;;;;;;;;;GAYG;AACH,qBAAa,wBAAwB;IAGnC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHtB,gBAAgB;gBAEE,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU;IAGlC;;;;OAIG;IACU,IAAI,CAChB,IAAI,GAAE,WAAgB,GACpB,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IAW3C;;;;OAIG;IACU,OAAO,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAOrD;;;;OAIG;IACU,GAAG,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAOrE;;;;;OAKG;IACU,MAAM,CAClB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GACpD,OAAO,CAAC,oBAAoB,CAAC;IAQhC;;;;;;;;;OASG;IACU,GAAG,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAM9D"}
1
+ {"version":3,"file":"allocations.d.ts","sourceRoot":"","sources":["../../../../src/src/resources/servers/allocations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAErE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,0DAA0D;IAC1D,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,6DAA6D;IAC7D,OAAO,EAAE,OAAO,CAAC;IACjB,sBAAsB;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACjC,oCAAoC;IACpC,SAAS,EAAE,IAAI,CAAC;IAChB,uCAAuC;IACvC,SAAS,EAAE,IAAI,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,qBAAa,oBAAqB,SAAQ,gBAAgB;IACzD,oDAAoD;IACpD,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,oFAAoF;IAC7E,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,4CAA4C;IACrC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,8FAA8F;IACvF,IAAI,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,CAAC;IACnD,yDAAyD;IAClD,SAAS,EAAE,OAAO,CAAC;IAC1B,uDAAuD;IAChD,SAAS,EAAE,IAAI,CAAC;IACvB,6CAA6C;IACtC,SAAS,EAAE,IAAI,CAAC;IAEvB,mEAAmE;IACnE,IAAW,EAAE,IAAI,MAAM,GAAG,SAAS,CAElC;IAED,8CAA8C;IAC9C,IAAW,IAAI,IAAI,MAAM,GAAG,SAAS,CAEpC;IAED,qEAAqE;IACrE,IAAW,OAAO,IAAI,MAAM,GAAG,SAAS,CAGvC;IAED,gBAAgB;gBACG,IAAI,EAAE,wBAAwB;CAqBjD;AAED,6EAA6E;AAC7E,MAAM,MAAM,kBAAkB,GAC3B;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GACd;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,EAAE,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE,CAAA;CAAE,CAAC;AAEjC;;;;;;;;;;;;GAYG;AACH,qBAAa,wBAAwB;IAGnC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHtB,gBAAgB;gBAEE,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU;IAGlC;;;;OAIG;IACU,IAAI,CAChB,IAAI,GAAE,WAAgB,GACpB,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IAY3C;;;;OAIG;IACU,OAAO,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAQrD;;;;OAIG;IACU,GAAG,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAQrE;;;;;OAKG;IACU,MAAM,CAClB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GACpD,OAAO,CAAC,oBAAoB,CAAC;IAQhC;;;;;;;;;OASG;IACU,GAAG,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAM9D"}
@@ -17,8 +17,8 @@ class ServerAllocationPort extends reactive_js_1.ReactiveResource {
17
17
  /** Optional human-readable description for this allocation, e.g. `"Voice Chat"`. */
18
18
  description;
19
19
  /** NanoID of the underlying port record. */
20
- portId;
21
- /** Full metadata about the underlying port. */
20
+ metaId;
21
+ /** Full metadata about the underlying port. Requires `?include=meta` (sent automatically). */
22
22
  meta;
23
23
  /** `true` if this is the server's primary allocation. */
24
24
  isPrimary;
@@ -45,7 +45,7 @@ class ServerAllocationPort extends reactive_js_1.ReactiveResource {
45
45
  super();
46
46
  this.id = (0, types_js_1.toNanoID)(data.id);
47
47
  this.description = data.description ?? null;
48
- this.portId = data.port_id ? (0, types_js_1.toNanoID)(data.port_id) : undefined;
48
+ this.metaId = data.meta_id ? (0, types_js_1.toNanoID)(data.meta_id) : undefined;
49
49
  this.meta = data.meta
50
50
  ? {
51
51
  id: (0, types_js_1.toNanoID)(data.meta.id),
@@ -73,7 +73,7 @@ exports.ServerAllocationPort = ServerAllocationPort;
73
73
  * ```ts ignore
74
74
  * const ports = await server.allocations.list();
75
75
  * const primary = await server.allocations.primary();
76
- * await server.allocations.update(portId, { description: 'Game port', isPrimary: true });
76
+ * await server.allocations.update(allocationId, { description: 'Game port', isPrimary: true });
77
77
  * await server.allocations.add([{ ip: '1.2.3.4', port: 25566 }]);
78
78
  * ```
79
79
  */
@@ -91,7 +91,7 @@ class ServerAllocationsManager {
91
91
  * @param opts Pagination options.
92
92
  */
93
93
  async list(opts = {}) {
94
- const result = await this.http.list(`/servers/${this.serverId}/allocations`, opts);
94
+ const result = await this.http.list(`/servers/${this.serverId}/allocations`, opts, { include: 'meta' });
95
95
  return {
96
96
  ...result,
97
97
  data: result.data.map((d) => new ServerAllocationPort(d)),
@@ -103,7 +103,7 @@ class ServerAllocationsManager {
103
103
  * @throws {@link ApiError} with `isNotFound === true` if no primary allocation is set.
104
104
  */
105
105
  async primary() {
106
- const data = await this.http.get(`/servers/${this.serverId}/allocations/primary`);
106
+ const data = await this.http.get(`/servers/${this.serverId}/allocations/primary`, { params: { include: 'meta' } });
107
107
  return new ServerAllocationPort(data);
108
108
  }
109
109
  /**
@@ -112,7 +112,7 @@ class ServerAllocationsManager {
112
112
  * @param allocationId The allocation record's NanoID.
113
113
  */
114
114
  async get(allocationId) {
115
- const data = await this.http.get(`/servers/${this.serverId}/allocations/${allocationId}`);
115
+ const data = await this.http.get(`/servers/${this.serverId}/allocations/${allocationId}`, { params: { include: 'meta' } });
116
116
  return new ServerAllocationPort(data);
117
117
  }
118
118
  /**
@@ -0,0 +1,46 @@
1
+ import { ServerJob } from './jobs.js';
2
+ import type { NodeClient } from './node-client.js';
3
+ /** Backup storage adapter. `whisker` is local node storage; `s3` is remote. */
4
+ export type BackupAdapter = 'whisker' | 's3';
5
+ /** Options for creating a backup. */
6
+ export interface CreateBackupOptions {
7
+ /** Storage adapter to write the backup to. */
8
+ adapter: BackupAdapter;
9
+ /** Client-chosen UUID identifying the backup. */
10
+ uuid: string;
11
+ /** Newline- or glob-separated ignore patterns. */
12
+ ignore?: string;
13
+ }
14
+ /** Options for restoring a backup. */
15
+ export interface RestoreBackupOptions {
16
+ /** Storage adapter the backup lives on. */
17
+ adapter: BackupAdapter;
18
+ /** Wipe the server's data directory before restoring. */
19
+ truncateDirectory?: boolean;
20
+ /** Download URL for the archive. Required for the `s3` adapter. */
21
+ downloadUrl?: string;
22
+ }
23
+ /**
24
+ * Create, restore, and delete backups on a server's node daemon.
25
+ *
26
+ * Create and restore run as daemon jobs, both return a {@link ServerJob} to track to
27
+ * completion. Access via `server.backups`.
28
+ *
29
+ * @example
30
+ * ```ts ignore
31
+ * const job = await server.backups.create({ adapter: 'whisker', uuid });
32
+ * await job.wait();
33
+ * ```
34
+ */
35
+ export declare class ServerBackupsManager {
36
+ private readonly node;
37
+ /** @internal */
38
+ constructor(node: NodeClient);
39
+ /** Start a backup. Returns the job to track. */
40
+ create(opts: CreateBackupOptions): Promise<ServerJob>;
41
+ /** Restore a backup by its UUID. Returns the job to track. */
42
+ restore(backupUuid: string, opts: RestoreBackupOptions): Promise<ServerJob>;
43
+ /** Delete a backup by its UUID. Treats an already-missing backup as success. */
44
+ delete(backupUuid: string): Promise<void>;
45
+ }
46
+ //# sourceMappingURL=backups.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backups.d.ts","sourceRoot":"","sources":["../../../../src/src/resources/servers/backups.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,+EAA+E;AAC/E,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,IAAI,CAAC;AAE7C,qCAAqC;AACrC,MAAM,WAAW,mBAAmB;IACnC,8CAA8C;IAC9C,OAAO,EAAE,aAAa,CAAC;IACvB,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,sCAAsC;AACtC,MAAM,WAAW,oBAAoB;IACpC,2CAA2C;IAC3C,OAAO,EAAE,aAAa,CAAC;IACvB,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,oBAAoB;IAEb,OAAO,CAAC,QAAQ,CAAC,IAAI;IADxC,gBAAgB;gBACoB,IAAI,EAAE,UAAU;IAEpD,gDAAgD;IACnC,MAAM,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC;IASlE,8DAA8D;IACjD,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,CAAC;IASxF,gFAAgF;IACnE,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGtD"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ServerBackupsManager = void 0;
4
+ const jobs_js_1 = require("./jobs.js");
5
+ /**
6
+ * Create, restore, and delete backups on a server's node daemon.
7
+ *
8
+ * Create and restore run as daemon jobs, both return a {@link ServerJob} to track to
9
+ * completion. Access via `server.backups`.
10
+ *
11
+ * @example
12
+ * ```ts ignore
13
+ * const job = await server.backups.create({ adapter: 'whisker', uuid });
14
+ * await job.wait();
15
+ * ```
16
+ */
17
+ class ServerBackupsManager {
18
+ node;
19
+ /** @internal */
20
+ constructor(node) {
21
+ this.node = node;
22
+ }
23
+ /** Start a backup. Returns the job to track. */
24
+ async create(opts) {
25
+ const { data } = await this.node.postJson('/backup', {
26
+ adapter: opts.adapter,
27
+ uuid: opts.uuid,
28
+ ignore: opts.ignore ?? '',
29
+ });
30
+ return new jobs_js_1.ServerJob({ id: data.job_id }, this.node);
31
+ }
32
+ /** Restore a backup by its UUID. Returns the job to track. */
33
+ async restore(backupUuid, opts) {
34
+ const body = { adapter: opts.adapter };
35
+ if (opts.truncateDirectory !== undefined)
36
+ body['truncate_directory'] = opts.truncateDirectory;
37
+ if (opts.downloadUrl !== undefined)
38
+ body['download_url'] = opts.downloadUrl;
39
+ const { data } = await this.node.postJson(`/backup/${backupUuid}/restore`, body);
40
+ return new jobs_js_1.ServerJob({ id: data.job_id }, this.node);
41
+ }
42
+ /** Delete a backup by its UUID. Treats an already-missing backup as success. */
43
+ async delete(backupUuid) {
44
+ await this.node.fetch(`/backup/${backupUuid}`, { method: 'DELETE' });
45
+ }
46
+ }
47
+ exports.ServerBackupsManager = ServerBackupsManager;
@@ -1,15 +1,16 @@
1
1
  import { ReactiveResource } from '../../reactive.js';
2
2
  import type { NanoID, PowerState } from '../../types.js';
3
+ import type { JobStatus } from './jobs.js';
3
4
  /** Real-time resource utilization reported by the node. */
4
5
  export interface ServerUtilization {
5
6
  /** CPU usage as an absolute percentage (0–100+). */
6
7
  cpuAbsolute: number;
7
- /** Memory usage in bytes. */
8
- memoryBytes: number;
9
- /** Memory limit in bytes. */
10
- memoryLimitBytes: number;
11
- /** Disk usage in bytes. */
12
- diskBytes: number;
8
+ /** RAM usage in bytes. */
9
+ ramBytes: number;
10
+ /** RAM limit in bytes. */
11
+ ramLimitBytes: number;
12
+ /** Storage usage in bytes. */
13
+ storageBytes: number;
13
14
  /** Network received bytes (cumulative since start). */
14
15
  networkRxBytes: number;
15
16
  /** Network transmitted bytes (cumulative since start). */
@@ -17,6 +18,21 @@ export interface ServerUtilization {
17
18
  /** Server uptime in milliseconds. */
18
19
  uptimeMs: number;
19
20
  }
21
+ /** Live progress update for a daemon job (compress, decompress, backup, restore). */
22
+ export interface JobProgressEvent {
23
+ jobId: string;
24
+ type: string;
25
+ status: JobStatus;
26
+ progress: number;
27
+ message: string;
28
+ }
29
+ /** A single log line emitted by a daemon job. */
30
+ export interface JobLogEvent {
31
+ jobId: string;
32
+ type: string;
33
+ group: string;
34
+ message: string;
35
+ }
20
36
  /** Typed events emitted by {@link ServerConnection}. */
21
37
  export interface ServerConnectionEvents {
22
38
  /** A line of console output from the server process. */
@@ -25,6 +41,10 @@ export interface ServerConnectionEvents {
25
41
  status: PowerState;
26
42
  /** New resource utilization stats are available. */
27
43
  stats: ServerUtilization;
44
+ /** A daemon job advanced (progress, status, or message changed). */
45
+ job_progress: JobProgressEvent;
46
+ /** A daemon job emitted a log line. */
47
+ job_log: JobLogEvent;
28
48
  }
29
49
  /**
30
50
  * A real-time SSE connection to a specific server on its Whisker node daemon.
@@ -33,22 +53,22 @@ export interface ServerConnectionEvents {
33
53
  * Also maintains a rolling buffer of console output lines in {@link output}, pre-populated
34
54
  * with recent history fetched from the node on {@link connect}.
35
55
  *
36
- * Obtain a connection via {@link import('./server.ts').Server.connect}.
56
+ * Obtain a connection via `Server.createConnection`.
37
57
  *
38
58
  * @example
39
59
  * ```ts ignore
40
- * const conn = await server.connect();
60
+ * const conn = await server.createConnection();
41
61
  *
42
62
  * conn.on('status', (state) => console.log('Power state:', state));
43
63
  * conn.on('stats', (stats) => console.log('CPU:', stats.cpuAbsolute + '%'));
44
64
  *
45
- * await conn.connect();
65
+ * await conn.open();
46
66
  *
47
67
  * // Reactive: $conn.output is the full rolling buffer of console lines
48
68
  * // Live lines are appended automatically as they arrive over SSE
49
69
  *
50
70
  * // Later...
51
- * conn.disconnect();
71
+ * conn.close();
52
72
  * ```
53
73
  */
54
74
  export declare class ServerConnection extends ReactiveResource {
@@ -61,9 +81,9 @@ export declare class ServerConnection extends ReactiveResource {
61
81
  private sse?;
62
82
  private connected;
63
83
  /**
64
- * Rolling buffer of console output lines, capped at {@link MAX_OUTPUT_LINES}.
84
+ * Rolling buffer of console output lines, capped at {@link ServerConnection.maxOutputLines}.
65
85
  *
66
- * Pre-populated with recent history from the node when {@link connect} is called,
86
+ * Pre-populated with recent history from the node when {@link open} is called,
67
87
  * then appended to live as `console_output` SSE events arrive.
68
88
  *
69
89
  * Use as a reactive store: `$conn.output`.
@@ -79,7 +99,7 @@ export declare class ServerConnection extends ReactiveResource {
79
99
  * Populates {@link output} with recent history from the node, then begins streaming
80
100
  * live events.
81
101
  *
82
- * Maintains only one instances of the stream.
102
+ * Only one stream is maintained at a time.
83
103
  *
84
104
  * @param onError Optional callback invoked if the connection drops unexpectedly.
85
105
  */
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../src/src/resources/servers/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEzD,2DAA2D;AAC3D,MAAM,WAAW,iBAAiB;IACjC,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAC;IACvB,0DAA0D;IAC1D,cAAc,EAAE,MAAM,CAAC;IACvB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,wDAAwD;AACxD,MAAM,WAAW,sBAAsB;IACtC,wDAAwD;IACxD,cAAc,EAAE,MAAM,CAAC;IACvB,wCAAwC;IACxC,MAAM,EAAE,UAAU,CAAC;IACnB,oDAAoD;IACpD,KAAK,EAAE,iBAAiB,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,gBAAiB,SAAQ,gBAAgB;IAwBpD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAzBvB,0FAA0F;IAC1F,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAQ;IAE9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAGtB;IAEJ,OAAO,CAAC,GAAG,CAAC,CAAgB;IAC5B,OAAO,CAAC,SAAS,CAAS;IAE1B;;;;;;;OAOG;IACI,MAAM,EAAE,MAAM,EAAE,CAAM;IAE7B,gBAAgB;gBAEE,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM;IAK/B,sDAAsD;IACtD,IAAW,WAAW,IAAI,OAAO,CAEhC;IAED;;;;;;;;;OASG;IACU,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAiClE,sDAAsD;IAC/C,KAAK,IAAI,IAAI;IAKpB;;;;;OAKG;IACI,EAAE,CAAC,CAAC,SAAS,MAAM,sBAAsB,EAC/C,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAAK,IAAI,GACnD,IAAI;IAWP;;;;;OAKG;IACI,GAAG,CAAC,CAAC,SAAS,MAAM,sBAAsB,EAChD,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAAK,IAAI,GACnD,IAAI;IAUP,qDAAqD;IAC9C,kBAAkB,IAAI,IAAI;IAIjC,iEAAiE;IACjE,OAAO,CAAC,QAAQ;CAyChB"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../src/src/resources/servers/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,2DAA2D;AAC3D,MAAM,WAAW,iBAAiB;IACjC,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,0BAA0B;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,cAAc,EAAE,MAAM,CAAC;IACvB,0DAA0D;IAC1D,cAAc,EAAE,MAAM,CAAC;IACvB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,qFAAqF;AACrF,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,iDAAiD;AACjD,MAAM,WAAW,WAAW;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,wDAAwD;AACxD,MAAM,WAAW,sBAAsB;IACtC,wDAAwD;IACxD,cAAc,EAAE,MAAM,CAAC;IACvB,wCAAwC;IACxC,MAAM,EAAE,UAAU,CAAC;IACnB,oDAAoD;IACpD,KAAK,EAAE,iBAAiB,CAAC;IACzB,oEAAoE;IACpE,YAAY,EAAE,gBAAgB,CAAC;IAC/B,uCAAuC;IACvC,OAAO,EAAE,WAAW,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,gBAAiB,SAAQ,gBAAgB;IAwBpD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAzBvB,0FAA0F;IAC1F,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAQ;IAE9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAGtB;IAEJ,OAAO,CAAC,GAAG,CAAC,CAAgB;IAC5B,OAAO,CAAC,SAAS,CAAS;IAE1B;;;;;;;OAOG;IACI,MAAM,EAAE,MAAM,EAAE,CAAM;IAE7B,gBAAgB;gBAEE,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM;IAK/B,sDAAsD;IACtD,IAAW,WAAW,IAAI,OAAO,CAEhC;IAED;;;;;;;;;OASG;IACU,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAiClE,sDAAsD;IAC/C,KAAK,IAAI,IAAI;IAKpB;;;;;OAKG;IACI,EAAE,CAAC,CAAC,SAAS,MAAM,sBAAsB,EAC/C,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAAK,IAAI,GACnD,IAAI;IAWP;;;;;OAKG;IACI,GAAG,CAAC,CAAC,SAAS,MAAM,sBAAsB,EAChD,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,KAAK,IAAI,GACnD,IAAI;IAUP,qDAAqD;IAC9C,kBAAkB,IAAI,IAAI;IAIjC,iEAAiE;IACjE,OAAO,CAAC,QAAQ;CA0DhB"}
@@ -10,22 +10,22 @@ const sse_js_1 = require("../../sse.js");
10
10
  * Also maintains a rolling buffer of console output lines in {@link output}, pre-populated
11
11
  * with recent history fetched from the node on {@link connect}.
12
12
  *
13
- * Obtain a connection via {@link import('./server.ts').Server.connect}.
13
+ * Obtain a connection via `Server.createConnection`.
14
14
  *
15
15
  * @example
16
16
  * ```ts ignore
17
- * const conn = await server.connect();
17
+ * const conn = await server.createConnection();
18
18
  *
19
19
  * conn.on('status', (state) => console.log('Power state:', state));
20
20
  * conn.on('stats', (stats) => console.log('CPU:', stats.cpuAbsolute + '%'));
21
21
  *
22
- * await conn.connect();
22
+ * await conn.open();
23
23
  *
24
24
  * // Reactive: $conn.output is the full rolling buffer of console lines
25
25
  * // Live lines are appended automatically as they arrive over SSE
26
26
  *
27
27
  * // Later...
28
- * conn.disconnect();
28
+ * conn.close();
29
29
  * ```
30
30
  */
31
31
  class ServerConnection extends reactive_js_1.ReactiveResource {
@@ -38,9 +38,9 @@ class ServerConnection extends reactive_js_1.ReactiveResource {
38
38
  sse;
39
39
  connected = false;
40
40
  /**
41
- * Rolling buffer of console output lines, capped at {@link MAX_OUTPUT_LINES}.
41
+ * Rolling buffer of console output lines, capped at {@link ServerConnection.maxOutputLines}.
42
42
  *
43
- * Pre-populated with recent history from the node when {@link connect} is called,
43
+ * Pre-populated with recent history from the node when {@link open} is called,
44
44
  * then appended to live as `console_output` SSE events arrive.
45
45
  *
46
46
  * Use as a reactive store: `$conn.output`.
@@ -63,7 +63,7 @@ class ServerConnection extends reactive_js_1.ReactiveResource {
63
63
  * Populates {@link output} with recent history from the node, then begins streaming
64
64
  * live events.
65
65
  *
66
- * Maintains only one instances of the stream.
66
+ * Only one stream is maintained at a time.
67
67
  *
68
68
  * @param onError Optional callback invoked if the connection drops unexpectedly.
69
69
  */
@@ -146,19 +146,40 @@ class ServerConnection extends reactive_js_1.ReactiveResource {
146
146
  }
147
147
  else if (event === 'stats') {
148
148
  if (typeof parsed?.cpu_absolute !== 'number' ||
149
- typeof parsed?.memory_bytes !== 'number') {
149
+ typeof parsed?.ram_bytes !== 'number') {
150
150
  return;
151
151
  }
152
152
  payload = {
153
153
  cpuAbsolute: parsed.cpu_absolute,
154
- memoryBytes: parsed.memory_bytes,
155
- memoryLimitBytes: parsed.memory_limit_bytes,
156
- diskBytes: parsed.disk_bytes,
154
+ ramBytes: parsed.ram_bytes,
155
+ ramLimitBytes: parsed.ram_limit_bytes,
156
+ storageBytes: parsed.storage_bytes,
157
157
  networkRxBytes: parsed.network?.rx_bytes ?? 0,
158
158
  networkTxBytes: parsed.network?.tx_bytes ?? 0,
159
159
  uptimeMs: parsed.uptime_ms,
160
160
  };
161
161
  }
162
+ else if (event === 'job_progress') {
163
+ if (typeof parsed?.job_id !== 'string')
164
+ return;
165
+ payload = {
166
+ jobId: parsed.job_id,
167
+ type: parsed.type,
168
+ status: parsed.status,
169
+ progress: parsed.progress,
170
+ message: parsed.message,
171
+ };
172
+ }
173
+ else if (event === 'job_log') {
174
+ if (typeof parsed?.job_id !== 'string')
175
+ return;
176
+ payload = {
177
+ jobId: parsed.job_id,
178
+ type: parsed.type,
179
+ group: parsed.group,
180
+ message: parsed.message,
181
+ };
182
+ }
162
183
  else {
163
184
  return;
164
185
  }