@araminix/platform 1.0.0 → 1.7.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/README.md +73 -1
- package/dist/src/Platform.d.ts +12 -1
- package/dist/src/Platform.d.ts.map +1 -1
- package/dist/src/Platform.js +217 -77
- package/dist/src/Platform.js.map +1 -1
- package/dist/src/agent/AgentController.d.ts +24 -3
- package/dist/src/agent/AgentController.d.ts.map +1 -1
- package/dist/src/agent/AgentController.js +168 -60
- package/dist/src/agent/AgentController.js.map +1 -1
- package/dist/src/agent/worker.js +5 -0
- package/dist/src/agent/worker.js.map +1 -1
- package/dist/src/executor/Instance.d.ts +9 -3
- package/dist/src/executor/Instance.d.ts.map +1 -1
- package/dist/src/executor/Instance.js +148 -36
- package/dist/src/executor/Instance.js.map +1 -1
- package/dist/src/server/AuthProvider.d.ts +70 -1
- package/dist/src/server/AuthProvider.d.ts.map +1 -1
- package/dist/src/server/AuthProvider.js +12 -1
- package/dist/src/server/AuthProvider.js.map +1 -1
- package/dist/src/server/Endpoint.d.ts +30 -1
- package/dist/src/server/Endpoint.d.ts.map +1 -1
- package/dist/src/server/Endpoint.js +467 -72
- package/dist/src/server/Endpoint.js.map +1 -1
- package/dist/src/server/index.d.ts +1 -0
- package/dist/src/server/index.d.ts.map +1 -1
- package/dist/src/server/index.js +1 -0
- package/dist/src/server/index.js.map +1 -1
- package/dist/src/utils/log_middleware.d.ts.map +1 -1
- package/dist/src/utils/log_middleware.js +2 -1
- package/dist/src/utils/log_middleware.js.map +1 -1
- package/dist/src/utils/minioService.d.ts +1 -0
- package/dist/src/utils/minioService.d.ts.map +1 -1
- package/dist/src/utils/minioService.js +6 -3
- package/dist/src/utils/minioService.js.map +1 -1
- package/dist/tests/agentWorker.test.d.ts +2 -0
- package/dist/tests/agentWorker.test.d.ts.map +1 -0
- package/dist/tests/agentWorker.test.js +225 -0
- package/dist/tests/agentWorker.test.js.map +1 -0
- package/dist/tests/authProvider.test.js +15 -0
- package/dist/tests/authProvider.test.js.map +1 -1
- package/dist/tests/endpointSecurity.test.d.ts +2 -0
- package/dist/tests/endpointSecurity.test.d.ts.map +1 -0
- package/dist/tests/endpointSecurity.test.js +1007 -0
- package/dist/tests/endpointSecurity.test.js.map +1 -0
- package/dist/tests/logMiddleware.test.js +50 -0
- package/dist/tests/logMiddleware.test.js.map +1 -1
- package/dist/tests/minioService.test.js +178 -1
- package/dist/tests/minioService.test.js.map +1 -1
- package/dist/tests/platform.test.js +245 -0
- package/dist/tests/platform.test.js.map +1 -1
- package/dist/tests/unhandledRejections.test.d.ts +2 -0
- package/dist/tests/unhandledRejections.test.d.ts.map +1 -0
- package/dist/tests/unhandledRejections.test.js +204 -0
- package/dist/tests/unhandledRejections.test.js.map +1 -0
- package/dist/tests/uploadSecurity.test.d.ts +2 -0
- package/dist/tests/uploadSecurity.test.d.ts.map +1 -0
- package/dist/tests/uploadSecurity.test.js +219 -0
- package/dist/tests/uploadSecurity.test.js.map +1 -0
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> **Enterprise-grade actor runtime, WebSocket endpoint platform, and multi-threaded agent execution engine.**
|
|
4
4
|
|
|
5
|
-
[](https://www.npmjs.com/package/@araminix/platform)
|
|
6
6
|
[](https://opensource.org/licenses/MIT)
|
|
7
7
|
[](https://www.typescriptlang.org/)
|
|
8
8
|
[](https://nodejs.org/)
|
|
@@ -172,6 +172,78 @@ const dashboard = panel({ header: 'System Overview' })
|
|
|
172
172
|
|
|
173
173
|
---
|
|
174
174
|
|
|
175
|
+
### 4. Session Security & Cookie Configuration
|
|
176
|
+
|
|
177
|
+
`Endpoint` issues signed, hardened session cookies by default:
|
|
178
|
+
|
|
179
|
+
- Default Flags: `HttpOnly: true`, `Secure: true`, `SameSite: 'lax'`, `Path: '/'`, and TTL-based `Max-Age`.
|
|
180
|
+
- Customizable via optional `cookieOptions` in `EndpointOptions`:
|
|
181
|
+
|
|
182
|
+
```typescript
|
|
183
|
+
const endpoint = new Endpoint({
|
|
184
|
+
authProvider: new CustomAuthProvider(),
|
|
185
|
+
cookieOptions: {
|
|
186
|
+
secure: process.env.NODE_ENV === 'production',
|
|
187
|
+
sameSite: 'lax',
|
|
188
|
+
},
|
|
189
|
+
});
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
#### WebSocket Authentication Routes
|
|
193
|
+
|
|
194
|
+
- **`/ws/:endpoint` (Recommended):**
|
|
195
|
+
- **Browsers:** Cookie-authenticated via `httpOnly` session cookie automatically attached on WebSocket upgrade.
|
|
196
|
+
- **Node Clients / Agents:** Header-authenticated by passing `x-token: <token>` in the HTTP upgrade request headers.
|
|
197
|
+
- **`/ws-token/:token/:endpoint` (`@deprecated`):**
|
|
198
|
+
- Maintained for backward compatibility with legacy clients. Tokens in URL paths are automatically redacted in server access logs.
|
|
199
|
+
|
|
200
|
+
#### Google OAuth Hardening (`/gauth`)
|
|
201
|
+
|
|
202
|
+
`Endpoint` verifies Google access tokens against Google's `tokeninfo` endpoint prior to retrieving user profile data:
|
|
203
|
+
|
|
204
|
+
- **Client ID Verification:** `EndpointOptions.googleClientIds` defines allowed OAuth client IDs. Replayed tokens issued to other Google OAuth applications are rejected with HTTP 401 (`Unauthorized`).
|
|
205
|
+
- **Verified Email Enforcement:** Rejects tokens unless Google confirms `email_verified === 'true'`.
|
|
206
|
+
- **Header-Only Authorization:** Access tokens are passed to `userinfo` strictly via the HTTP `Authorization: Bearer <token>` header rather than query strings.
|
|
207
|
+
- **Fail-Closed Protection:** If `googleClientIds` is not configured, `/gauth` requests are refused with HTTP 503 (`Service Unavailable`).
|
|
208
|
+
- **HTTP Timeouts:** All external Google API calls enforce an explicit 10-second timeout.
|
|
209
|
+
|
|
210
|
+
```typescript
|
|
211
|
+
const endpoint = new Endpoint({
|
|
212
|
+
authProvider: new CustomAuthProvider(),
|
|
213
|
+
googleClientIds: [
|
|
214
|
+
'1234567890-example.apps.googleusercontent.com',
|
|
215
|
+
],
|
|
216
|
+
});
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
### 5. File Upload Security & Stored XSS Mitigation
|
|
222
|
+
|
|
223
|
+
`Endpoint` and `Platform` provide hardened file upload and static download controls:
|
|
224
|
+
|
|
225
|
+
- **Upload Size Limits:** Configured via `maxUploadBytes` (default: 20 MB). Oversized files are rejected with HTTP 413 (`Payload Too Large`). Only single-file uploads (`files: 1`) are permitted per request.
|
|
226
|
+
- **Allowlist Filtering:** Optional `uploadAllowlist` restricts uploads to specific extensions and/or MIME types. Unauthorized uploads are rejected with HTTP 415 (`Unsupported Media Type`):
|
|
227
|
+
```typescript
|
|
228
|
+
const platform = new Platform({
|
|
229
|
+
uploadDir: '/var/data/uploads',
|
|
230
|
+
maxUploadBytes: 10 * 1024 * 1024, // 10 MB
|
|
231
|
+
uploadAllowlist: {
|
|
232
|
+
extensions: ['png', 'jpg', 'pdf'],
|
|
233
|
+
mimetypes: ['image/png', 'image/jpeg', 'application/pdf'],
|
|
234
|
+
},
|
|
235
|
+
// ...
|
|
236
|
+
});
|
|
237
|
+
```
|
|
238
|
+
- **Filename Sanitization:** Uploaded filenames are stripped of path traversal sequences (`..`, `/`, `\`), null bytes, and non-printable control characters, with length capped at 255 characters.
|
|
239
|
+
- **Stored XSS Defenses:** Static file downloads (`/file/:fileId/:safeName`) enforce defense-in-depth security headers:
|
|
240
|
+
- `X-Content-Type-Options: nosniff`
|
|
241
|
+
- `Content-Disposition: attachment` (forces browser download instead of inline execution)
|
|
242
|
+
- `Content-Security-Policy: default-src 'none'; sandbox` (strips script execution privileges and isolates origin)
|
|
243
|
+
- `dotfiles: 'deny'` and `index: false`
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
175
247
|
## 🛠️ Module Exports
|
|
176
248
|
|
|
177
249
|
| Submodule | Purpose |
|
package/dist/src/Platform.d.ts
CHANGED
|
@@ -1,18 +1,27 @@
|
|
|
1
1
|
import { Result, Socket, Stream } from '@araminix/lib';
|
|
2
|
+
import { ResourceLimits } from 'worker_threads';
|
|
2
3
|
import Instance from './executor/Instance.js';
|
|
3
4
|
import { AppListing } from './lib/d.js';
|
|
4
5
|
import { AuthProvider, ClientInfo } from './server/AuthProvider.js';
|
|
5
|
-
import Endpoint from './server/Endpoint.js';
|
|
6
|
+
import Endpoint, { MinioOptions, RateLimitConfig, UploadAllowlist } from './server/Endpoint.js';
|
|
6
7
|
export interface PlatformConfig {
|
|
7
8
|
appIndexPath: URL;
|
|
8
9
|
agentIndexPath: URL;
|
|
9
10
|
authProvider: AuthProvider;
|
|
10
11
|
instanceUserLimit: number;
|
|
12
|
+
maxInstances?: number;
|
|
13
|
+
resourceLimits?: ResourceLimits;
|
|
11
14
|
port?: number;
|
|
12
15
|
mount?: string;
|
|
13
16
|
cookieSecret?: string;
|
|
14
17
|
tabLimit?: number;
|
|
15
18
|
uploadDir?: string;
|
|
19
|
+
maxUploadBytes?: number;
|
|
20
|
+
uploadAllowlist?: UploadAllowlist;
|
|
21
|
+
googleClientIds?: string[];
|
|
22
|
+
allowedOrigins?: string[];
|
|
23
|
+
authRateLimit?: RateLimitConfig | boolean;
|
|
24
|
+
minio?: MinioOptions;
|
|
16
25
|
onCustomStream?: {
|
|
17
26
|
[key: string]: (client: ClientInfo, stream: Stream) => Promise<void>;
|
|
18
27
|
};
|
|
@@ -31,10 +40,12 @@ export default class Platform {
|
|
|
31
40
|
private appIndex;
|
|
32
41
|
private agentController;
|
|
33
42
|
readonly instances: Map<string, Map<string, Instance>>;
|
|
43
|
+
get totalInstances(): number;
|
|
34
44
|
constructor(config: PlatformConfig);
|
|
35
45
|
private serve;
|
|
36
46
|
private processInstanceCloseStream;
|
|
37
47
|
processCustomStreams(clientInfo: ClientInfo, endpointSocket: Socket): void;
|
|
48
|
+
private sanitizeClientInfo;
|
|
38
49
|
processUserInfo(clientInfo: ClientInfo, endpointSocket: Socket): void;
|
|
39
50
|
listUserInstances(runtimeId: string): Promise<Array<UserInstance>>;
|
|
40
51
|
listUserApps(userId: string): Promise<Result<Array<AppListing>, void>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Platform.d.ts","sourceRoot":"","sources":["../../src/Platform.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Platform.d.ts","sourceRoot":"","sources":["../../src/Platform.ts"],"names":[],"mappings":"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"}
|
package/dist/src/Platform.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Err, loop, LoopResult, Ok, t } from '@araminix/lib';
|
|
1
|
+
import { Err, logger, loop, LoopResult, Ok, t } from '@araminix/lib';
|
|
2
2
|
import AgentController from './agent/AgentController.js';
|
|
3
3
|
import Instance from './executor/Instance.js';
|
|
4
4
|
import { ClientType } from './server/AuthProvider.js';
|
|
@@ -9,6 +9,13 @@ export default class Platform {
|
|
|
9
9
|
appIndex;
|
|
10
10
|
agentController;
|
|
11
11
|
instances = new Map();
|
|
12
|
+
get totalInstances() {
|
|
13
|
+
let total = 0;
|
|
14
|
+
for (const userInstances of this.instances.values()) {
|
|
15
|
+
total += userInstances.size;
|
|
16
|
+
}
|
|
17
|
+
return total;
|
|
18
|
+
}
|
|
12
19
|
constructor(config) {
|
|
13
20
|
this.config = config;
|
|
14
21
|
this.endpoint = new Endpoint({
|
|
@@ -17,6 +24,12 @@ export default class Platform {
|
|
|
17
24
|
mount: config.mount,
|
|
18
25
|
cookieSecret: config.cookieSecret,
|
|
19
26
|
uploadDir: config.uploadDir,
|
|
27
|
+
maxUploadBytes: config.maxUploadBytes,
|
|
28
|
+
uploadAllowlist: config.uploadAllowlist,
|
|
29
|
+
googleClientIds: config.googleClientIds,
|
|
30
|
+
allowedOrigins: config.allowedOrigins,
|
|
31
|
+
authRateLimit: config.authRateLimit,
|
|
32
|
+
minio: config.minio,
|
|
20
33
|
});
|
|
21
34
|
this.agentController = new AgentController(this.config.agentIndexPath);
|
|
22
35
|
this.serve();
|
|
@@ -53,7 +66,9 @@ export default class Platform {
|
|
|
53
66
|
request.deny();
|
|
54
67
|
return LoopResult.Cont;
|
|
55
68
|
}
|
|
56
|
-
this.serveInstance(request.info.runtimeId, request).
|
|
69
|
+
this.serveInstance(request.info.runtimeId, request).catch((err) => {
|
|
70
|
+
logger.error('Unhandled rejection in serveInstance:', err);
|
|
71
|
+
});
|
|
57
72
|
return LoopResult.Cont;
|
|
58
73
|
});
|
|
59
74
|
loop(async () => {
|
|
@@ -65,7 +80,9 @@ export default class Platform {
|
|
|
65
80
|
request.deny();
|
|
66
81
|
return LoopResult.Cont;
|
|
67
82
|
}
|
|
68
|
-
this.agentController.connect(request.info, request).
|
|
83
|
+
this.agentController.connect(request.info, request).catch((err) => {
|
|
84
|
+
logger.error('Unhandled rejection in agentController.connect:', err);
|
|
85
|
+
});
|
|
69
86
|
return LoopResult.Cont;
|
|
70
87
|
});
|
|
71
88
|
}
|
|
@@ -76,24 +93,38 @@ export default class Platform {
|
|
|
76
93
|
return LoopResult.Stop;
|
|
77
94
|
}
|
|
78
95
|
const stream = streamResult.unwrap();
|
|
79
|
-
|
|
80
|
-
stream.
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
96
|
+
try {
|
|
97
|
+
if (typeof stream.args !== 'string') {
|
|
98
|
+
stream.closeErr();
|
|
99
|
+
return LoopResult.Cont;
|
|
100
|
+
}
|
|
101
|
+
const instanceId = stream.args;
|
|
102
|
+
const userInstances = this.instances.get(runtimeId);
|
|
103
|
+
if (!userInstances) {
|
|
104
|
+
stream.closeOk();
|
|
105
|
+
return LoopResult.Cont;
|
|
106
|
+
}
|
|
107
|
+
const instance = userInstances.get(instanceId);
|
|
108
|
+
if (!instance) {
|
|
109
|
+
stream.closeOk();
|
|
110
|
+
return LoopResult.Cont;
|
|
111
|
+
}
|
|
112
|
+
instance.destroy();
|
|
113
|
+
userInstances.delete(instanceId);
|
|
114
|
+
if (userInstances.size === 0) {
|
|
115
|
+
this.instances.delete(runtimeId);
|
|
116
|
+
}
|
|
86
117
|
stream.closeOk();
|
|
87
118
|
return LoopResult.Cont;
|
|
88
119
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
120
|
+
catch (err) {
|
|
121
|
+
logger.error('Error processing closeInstance stream:', err);
|
|
122
|
+
try {
|
|
123
|
+
stream.closeErr();
|
|
124
|
+
}
|
|
125
|
+
catch { }
|
|
92
126
|
return LoopResult.Cont;
|
|
93
127
|
}
|
|
94
|
-
instance.destroy();
|
|
95
|
-
stream.closeOk();
|
|
96
|
-
return LoopResult.Cont;
|
|
97
128
|
});
|
|
98
129
|
}
|
|
99
130
|
processCustomStreams(clientInfo, endpointSocket) {
|
|
@@ -106,11 +137,38 @@ export default class Platform {
|
|
|
106
137
|
if (streamResult.isErr()) {
|
|
107
138
|
return LoopResult.Stop;
|
|
108
139
|
}
|
|
109
|
-
|
|
140
|
+
const stream = streamResult.unwrap();
|
|
141
|
+
try {
|
|
142
|
+
await handler(clientInfo, stream);
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
logger.error(`Error processing custom stream '${streamName}':`, err);
|
|
146
|
+
try {
|
|
147
|
+
stream.closeErr();
|
|
148
|
+
}
|
|
149
|
+
catch { }
|
|
150
|
+
}
|
|
110
151
|
return LoopResult.Cont;
|
|
111
152
|
});
|
|
112
153
|
}
|
|
113
154
|
}
|
|
155
|
+
sanitizeClientInfo(clientInfo) {
|
|
156
|
+
if (!clientInfo)
|
|
157
|
+
return clientInfo;
|
|
158
|
+
const info = clientInfo;
|
|
159
|
+
if (info.settings && info.settings.two_factor) {
|
|
160
|
+
const sanitizedSettings = {
|
|
161
|
+
...info.settings,
|
|
162
|
+
two_factor: {
|
|
163
|
+
enabled: Boolean(info.settings.two_factor.enabled),
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
const sanitized = Object.create(Object.getPrototypeOf(clientInfo));
|
|
167
|
+
Object.assign(sanitized, clientInfo, { settings: sanitizedSettings });
|
|
168
|
+
return sanitized;
|
|
169
|
+
}
|
|
170
|
+
return clientInfo;
|
|
171
|
+
}
|
|
114
172
|
processUserInfo(clientInfo, endpointSocket) {
|
|
115
173
|
loop(async () => {
|
|
116
174
|
const streamResult = await endpointSocket.incomingStream('clientInfo');
|
|
@@ -118,12 +176,22 @@ export default class Platform {
|
|
|
118
176
|
return LoopResult.Stop;
|
|
119
177
|
}
|
|
120
178
|
const stream = streamResult.unwrap();
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
stream.
|
|
179
|
+
try {
|
|
180
|
+
const sanitizedClientInfo = this.sanitizeClientInfo(clientInfo);
|
|
181
|
+
const result = await stream.write(sanitizedClientInfo);
|
|
182
|
+
if (result.isErr()) {
|
|
183
|
+
stream.closeErr();
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
stream.closeOk();
|
|
187
|
+
}
|
|
124
188
|
}
|
|
125
|
-
|
|
126
|
-
|
|
189
|
+
catch (err) {
|
|
190
|
+
logger.error('Error processing clientInfo stream:', err);
|
|
191
|
+
try {
|
|
192
|
+
stream.closeErr();
|
|
193
|
+
}
|
|
194
|
+
catch { }
|
|
127
195
|
}
|
|
128
196
|
return LoopResult.Cont;
|
|
129
197
|
});
|
|
@@ -156,9 +224,18 @@ export default class Platform {
|
|
|
156
224
|
return LoopResult.Stop;
|
|
157
225
|
}
|
|
158
226
|
const stream = streamResult.unwrap();
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
227
|
+
try {
|
|
228
|
+
const list = await this.listUserInstances(runtimeId);
|
|
229
|
+
await stream.write(list);
|
|
230
|
+
stream.closeOk();
|
|
231
|
+
}
|
|
232
|
+
catch (err) {
|
|
233
|
+
logger.error('Error processing listInstances stream:', err);
|
|
234
|
+
try {
|
|
235
|
+
stream.closeErr();
|
|
236
|
+
}
|
|
237
|
+
catch { }
|
|
238
|
+
}
|
|
162
239
|
return LoopResult.Cont;
|
|
163
240
|
});
|
|
164
241
|
}
|
|
@@ -173,54 +250,107 @@ export default class Platform {
|
|
|
173
250
|
return LoopResult.Stop;
|
|
174
251
|
}
|
|
175
252
|
const stream = streamResult.unwrap();
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
this.instances.
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
const
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
if (
|
|
253
|
+
let createdInstance;
|
|
254
|
+
try {
|
|
255
|
+
if (!startInstanceArg.is(stream.args)) {
|
|
256
|
+
stream.closeErr();
|
|
257
|
+
return LoopResult.Cont;
|
|
258
|
+
}
|
|
259
|
+
const appName = stream.args.appName;
|
|
260
|
+
const profile = stream.args.profile;
|
|
261
|
+
const userApps = await this.appIndex.userApps(userId);
|
|
262
|
+
if (userApps.isErr()) {
|
|
263
|
+
stream.closeErr();
|
|
264
|
+
return LoopResult.Cont;
|
|
265
|
+
}
|
|
266
|
+
const appSearch = userApps.unwrap().find((listing) => {
|
|
267
|
+
const app = listing.apps.find((a) => a.name === appName && a.profiles.includes(profile));
|
|
268
|
+
return app !== undefined;
|
|
269
|
+
});
|
|
270
|
+
if (appSearch === undefined) {
|
|
271
|
+
stream.closeErr();
|
|
272
|
+
return LoopResult.Cont;
|
|
273
|
+
}
|
|
274
|
+
if (!this.instances.has(runtimeId)) {
|
|
275
|
+
this.instances.set(runtimeId, new Map());
|
|
276
|
+
}
|
|
277
|
+
const instances = this.instances.get(runtimeId);
|
|
278
|
+
const limit = this.config.instanceUserLimit;
|
|
279
|
+
while (instances.size >= limit) {
|
|
280
|
+
let oldest;
|
|
281
|
+
for (const inst of instances.values()) {
|
|
282
|
+
if (!oldest || inst.touched < oldest.touched) {
|
|
283
|
+
oldest = inst;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
if (!oldest) {
|
|
287
|
+
break;
|
|
288
|
+
}
|
|
289
|
+
instances.delete(oldest.id);
|
|
290
|
+
oldest.destroy();
|
|
291
|
+
}
|
|
292
|
+
if (this.config.maxInstances !== undefined && this.totalInstances >= this.config.maxInstances) {
|
|
293
|
+
if (instances.size === 0) {
|
|
210
294
|
this.instances.delete(runtimeId);
|
|
211
295
|
}
|
|
296
|
+
logger.warn(`Global instance limit reached (${this.totalInstances}/${this.config.maxInstances}). Rejecting createInstance.`);
|
|
297
|
+
stream.closeErr();
|
|
298
|
+
return LoopResult.Cont;
|
|
212
299
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
300
|
+
const instance = new Instance(userId, appName, profile, this.config.appIndexPath, this.config.tabLimit ?? 12, this.agentController, this.config.resourceLimits);
|
|
301
|
+
createdInstance = instance;
|
|
302
|
+
instances.set(instance.id, instance);
|
|
303
|
+
const instanceInitResult = await instance.init(() => {
|
|
304
|
+
const insts = this.instances.get(runtimeId);
|
|
305
|
+
if (insts) {
|
|
306
|
+
insts.delete(instance.id);
|
|
307
|
+
if (insts.size === 0) {
|
|
308
|
+
this.instances.delete(runtimeId);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
if (instanceInitResult.isErr()) {
|
|
313
|
+
instances.delete(instance.id);
|
|
314
|
+
if (instances.size === 0) {
|
|
315
|
+
this.instances.delete(runtimeId);
|
|
316
|
+
}
|
|
317
|
+
instance.destroy();
|
|
318
|
+
stream.closeErr();
|
|
319
|
+
return LoopResult.Cont;
|
|
320
|
+
}
|
|
321
|
+
const writeResult = await stream.write(instance.id);
|
|
322
|
+
if (writeResult.isErr()) {
|
|
323
|
+
instances.delete(instance.id);
|
|
324
|
+
if (instances.size === 0) {
|
|
325
|
+
this.instances.delete(runtimeId);
|
|
326
|
+
}
|
|
327
|
+
instance.destroy();
|
|
328
|
+
return LoopResult.Cont;
|
|
329
|
+
}
|
|
330
|
+
stream.closeOk();
|
|
216
331
|
return LoopResult.Cont;
|
|
217
332
|
}
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
333
|
+
catch (err) {
|
|
334
|
+
logger.error('Error processing createInstance stream:', err);
|
|
335
|
+
if (createdInstance) {
|
|
336
|
+
const insts = this.instances.get(runtimeId);
|
|
337
|
+
if (insts) {
|
|
338
|
+
insts.delete(createdInstance.id);
|
|
339
|
+
if (insts.size === 0) {
|
|
340
|
+
this.instances.delete(runtimeId);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
try {
|
|
344
|
+
createdInstance.destroy();
|
|
345
|
+
}
|
|
346
|
+
catch { }
|
|
347
|
+
}
|
|
348
|
+
try {
|
|
349
|
+
stream.closeErr();
|
|
350
|
+
}
|
|
351
|
+
catch { }
|
|
352
|
+
return LoopResult.Cont;
|
|
221
353
|
}
|
|
222
|
-
stream.closeOk();
|
|
223
|
-
return LoopResult.Cont;
|
|
224
354
|
});
|
|
225
355
|
}
|
|
226
356
|
processAppsListStream(userId, endpointSocket) {
|
|
@@ -230,13 +360,22 @@ export default class Platform {
|
|
|
230
360
|
return LoopResult.Stop;
|
|
231
361
|
}
|
|
232
362
|
const stream = streamResult.unwrap();
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
363
|
+
try {
|
|
364
|
+
const userAppResult = await this.listUserApps(userId);
|
|
365
|
+
if (userAppResult.isErr()) {
|
|
366
|
+
stream.closeErr();
|
|
367
|
+
return LoopResult.Cont;
|
|
368
|
+
}
|
|
369
|
+
await stream.write(userAppResult.unwrap());
|
|
370
|
+
stream.closeOk();
|
|
371
|
+
}
|
|
372
|
+
catch (err) {
|
|
373
|
+
logger.error('Error processing listApps stream:', err);
|
|
374
|
+
try {
|
|
375
|
+
stream.closeErr();
|
|
376
|
+
}
|
|
377
|
+
catch { }
|
|
237
378
|
}
|
|
238
|
-
await stream.write(userAppResult.unwrap());
|
|
239
|
-
stream.closeOk();
|
|
240
379
|
return LoopResult.Cont;
|
|
241
380
|
});
|
|
242
381
|
}
|
|
@@ -263,12 +402,13 @@ export default class Platform {
|
|
|
263
402
|
this.endpoint.open();
|
|
264
403
|
}
|
|
265
404
|
stop() {
|
|
266
|
-
this.instances.
|
|
267
|
-
userInstances.
|
|
405
|
+
for (const userInstances of this.instances.values()) {
|
|
406
|
+
for (const instance of [...userInstances.values()]) {
|
|
268
407
|
instance.destroy();
|
|
269
|
-
}
|
|
270
|
-
}
|
|
408
|
+
}
|
|
409
|
+
}
|
|
271
410
|
this.instances.clear();
|
|
411
|
+
this.agentController?.stop?.();
|
|
272
412
|
this.endpoint.close();
|
|
273
413
|
}
|
|
274
414
|
}
|
package/dist/src/Platform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Platform.js","sourceRoot":"","sources":["../../src/Platform.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Platform.js","sourceRoot":"","sources":["../../src/Platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAA0B,CAAC,EAAE,MAAM,eAAe,CAAC;AAG7F,OAAO,eAAe,MAAM,4BAA4B,CAAC;AACzD,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAA4B,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,QAA4D,MAAM,sBAAsB,CAAC;AAkChG,MAAM,CAAC,OAAO,OAAO,QAAQ;IACR,MAAM,CAAiB;IAC/B,QAAQ,CAAW;IACpB,QAAQ,CAAiB;IACzB,eAAe,CAAkB;IAChC,SAAS,GAAuC,IAAI,GAAG,EAAE,CAAC;IAEnE,IAAI,cAAc;QACd,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAClD,KAAK,IAAI,aAAa,CAAC,IAAI,CAAC;QAChC,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,YAAY,MAAsB;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC;YACzB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,KAAK,EAAE,MAAM,CAAC,KAAK;SACtB,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAEO,KAAK;QACT,IAAI,CAAC,KAAK,IAAI,EAAE;YACZ,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC9D,IAAI,aAAa,CAAC,KAAK,EAAE;gBAAE,OAAO,UAAU,CAAC,IAAI,CAAC;YAClD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;YACvC,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC9C,OAAO,CAAC,IAAI,EAAE,CAAC;gBACf,OAAO,UAAU,CAAC,IAAI,CAAC;YAC3B,CAAC;YACD,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACtC,IAAI,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;gBACtB,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;gBACrC,MAAM,SAAS,GAAI,OAAO,CAAC,IAAY,CAAC,SAAS,CAAC;gBAClD,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBAClD,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;gBAC/D,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBACnD,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gBACpD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC3C,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACpD,CAAC;YACD,OAAO,UAAU,CAAC,IAAI,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,IAAI,EAAE;YACZ,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC9D,IAAI,aAAa,CAAC,KAAK,EAAE;gBAAE,OAAO,UAAU,CAAC,IAAI,CAAC;YAClD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;YACvC,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC9C,OAAO,CAAC,IAAI,EAAE,CAAC;gBACf,OAAO,UAAU,CAAC,IAAI,CAAC;YAC3B,CAAC;YACD,IAAI,CAAC,aAAa,CAAE,OAAO,CAAC,IAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACvE,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;YACH,OAAO,UAAU,CAAC,IAAI,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,IAAI,EAAE;YACZ,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC3D,IAAI,aAAa,CAAC,KAAK,EAAE;gBAAE,OAAO,UAAU,CAAC,IAAI,CAAC;YAClD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;YACvC,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,KAAK,UAAU,CAAC,KAAK,EAAE,CAAC;gBAC/C,OAAO,CAAC,IAAI,EAAE,CAAC;gBACf,OAAO,UAAU,CAAC,IAAI,CAAC;YAC3B,CAAC;YACD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,IAAW,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACrE,MAAM,CAAC,KAAK,CAAC,iDAAiD,EAAE,GAAG,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;YACH,OAAO,UAAU,CAAC,IAAI,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,0BAA0B,CAAC,SAAiB,EAAE,cAAsB;QACxE,IAAI,CAAC,KAAK,IAAI,EAAE;YACZ,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;YAC1E,IAAI,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC;gBACvB,OAAO,UAAU,CAAC,IAAI,CAAC;YAC3B,CAAC;YACD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;YACrC,IAAI,CAAC;gBACD,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAClC,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAClB,OAAO,UAAU,CAAC,IAAI,CAAC;gBAC3B,CAAC;gBACD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;gBAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACpD,IAAI,CAAC,aAAa,EAAE,CAAC;oBACjB,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjB,OAAO,UAAU,CAAC,IAAI,CAAC;gBAC3B,CAAC;gBACD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACZ,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjB,OAAO,UAAU,CAAC,IAAI,CAAC;gBAC3B,CAAC;gBACD,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACnB,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACjC,IAAI,aAAa,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBAC3B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACrC,CAAC;gBACD,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,UAAU,CAAC,IAAI,CAAC;YAC3B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,GAAG,CAAC,CAAC;gBAC5D,IAAI,CAAC;oBACD,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACtB,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;gBACV,OAAO,UAAU,CAAC,IAAI,CAAC;YAC3B,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,oBAAoB,CAAC,UAAsB,EAAE,cAAsB;QAC/D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc;YAAE,OAAO;QACxC,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAClD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YACvD,IAAI,CAAC,KAAK,IAAI,EAAE;gBACZ,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,UAAU,UAAU,EAAE,CAAC,CAAC;gBACjF,IAAI,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC;oBACvB,OAAO,UAAU,CAAC,IAAI,CAAC;gBAC3B,CAAC;gBACD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;gBACrC,IAAI,CAAC;oBACD,MAAM,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBACtC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACX,MAAM,CAAC,KAAK,CAAC,mCAAmC,UAAU,IAAI,EAAE,GAAG,CAAC,CAAC;oBACrE,IAAI,CAAC;wBACD,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACtB,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;gBACd,CAAC;gBACD,OAAO,UAAU,CAAC,IAAI,CAAC;YAC3B,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAEO,kBAAkB,CAAC,UAAsB;QAC7C,IAAI,CAAC,UAAU;YAAE,OAAO,UAAU,CAAC;QACnC,MAAM,IAAI,GAAG,UAAiB,CAAC;QAC/B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YAC5C,MAAM,iBAAiB,GAAG;gBACtB,GAAG,IAAI,CAAC,QAAQ;gBAChB,UAAU,EAAE;oBACR,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC;iBACrD;aACJ,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;YACnE,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAC;YACtE,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,eAAe,CAAC,UAAsB,EAAE,cAAsB;QAC1D,IAAI,CAAC,KAAK,IAAI,EAAE;YACZ,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YACvE,IAAI,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC;gBACvB,OAAO,UAAU,CAAC,IAAI,CAAC;YAC3B,CAAC;YACD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;YACrC,IAAI,CAAC;gBACD,MAAM,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;gBAChE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBACvD,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;oBACjB,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,OAAO,EAAE,CAAC;gBACrB,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,GAAG,CAAC,CAAC;gBACzD,IAAI,CAAC;oBACD,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACtB,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YACd,CAAC;YACD,OAAO,UAAU,CAAC,IAAI,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,SAAiB;QACrC,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,OAAO,EAAE,CAAC;QACd,CAAC;QACD,OAAO,CAAC,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;YACzD,EAAE;YACF,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,aAAa,EAAE,QAAQ,CAAC,aAAa;YACrC,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,OAAO,EAAE,QAAQ,CAAC,OAAO;SAC5B,CAAC,CAAC,CAAC;IACR,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc;QAC7B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC3D,IAAI,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC;YACxB,OAAO,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAEO,yBAAyB,CAAC,SAAiB,EAAE,cAAsB;QACvE,IAAI,CAAC,KAAK,IAAI,EAAE;YACZ,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;YAC1E,IAAI,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC;gBACvB,OAAO,UAAU,CAAC,IAAI,CAAC;YAC3B,CAAC;YACD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;YACrC,IAAI,CAAC;gBACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBACrD,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzB,MAAM,CAAC,OAAO,EAAE,CAAC;YACrB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,GAAG,CAAC,CAAC;gBAC5D,IAAI,CAAC;oBACD,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACtB,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YACd,CAAC;YACD,OAAO,UAAU,CAAC,IAAI,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,qBAAqB,CAAC,MAAc,EAAE,SAAiB,EAAE,cAAsB;QACnF,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC;YAC5B,OAAO,EAAE,CAAC,CAAC,MAAM;YACjB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;SACvC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,IAAI,EAAE;YACZ,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;YAC3E,IAAI,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC;gBACvB,OAAO,UAAU,CAAC,IAAI,CAAC;YAC3B,CAAC;YACD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;YACrC,IAAI,eAAqC,CAAC;YAC1C,IAAI,CAAC;gBACD,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpC,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAClB,OAAO,UAAU,CAAC,IAAI,CAAC;gBAC3B,CAAC;gBACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;gBACpC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;gBACpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACtD,IAAI,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;oBACnB,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAClB,OAAO,UAAU,CAAC,IAAI,CAAC;gBAC3B,CAAC;gBACD,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;oBACjD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;oBACzF,OAAO,GAAG,KAAK,SAAS,CAAC;gBAC7B,CAAC,CAAC,CAAC;gBACH,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;oBAC1B,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAClB,OAAO,UAAU,CAAC,IAAI,CAAC;gBAC3B,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;gBAC7C,CAAC;gBACD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;gBACjD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;gBAC5C,OAAO,SAAS,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;oBAC7B,IAAI,MAA4B,CAAC;oBACjC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;wBACpC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;4BAC3C,MAAM,GAAG,IAAI,CAAC;wBAClB,CAAC;oBACL,CAAC;oBACD,IAAI,CAAC,MAAM,EAAE,CAAC;wBACV,MAAM;oBACV,CAAC;oBACD,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBAC5B,MAAM,CAAC,OAAO,EAAE,CAAC;gBACrB,CAAC;gBAED,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;oBAC5F,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;wBACvB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBACrC,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC,kCAAkC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,8BAA8B,CAAC,CAAC;oBAC7H,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAClB,OAAO,UAAU,CAAC,IAAI,CAAC;gBAC3B,CAAC;gBAED,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;gBAChK,eAAe,GAAG,QAAQ,CAAC;gBAC3B,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;gBACrC,MAAM,kBAAkB,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE;oBAChD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC5C,IAAI,KAAK,EAAE,CAAC;wBACR,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;wBAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;4BACnB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;wBACrC,CAAC;oBACL,CAAC;gBACL,CAAC,CAAC,CAAC;gBACH,IAAI,kBAAkB,CAAC,KAAK,EAAE,EAAE,CAAC;oBAC7B,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAC9B,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;wBACvB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBACrC,CAAC;oBACD,QAAQ,CAAC,OAAO,EAAE,CAAC;oBACnB,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAClB,OAAO,UAAU,CAAC,IAAI,CAAC;gBAC3B,CAAC;gBACD,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACpD,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC;oBACtB,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAC9B,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;wBACvB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBACrC,CAAC;oBACD,QAAQ,CAAC,OAAO,EAAE,CAAC;oBACnB,OAAO,UAAU,CAAC,IAAI,CAAC;gBAC3B,CAAC;gBACD,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,UAAU,CAAC,IAAI,CAAC;YAC3B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,MAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE,GAAG,CAAC,CAAC;gBAC7D,IAAI,eAAe,EAAE,CAAC;oBAClB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBAC5C,IAAI,KAAK,EAAE,CAAC;wBACR,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;wBACjC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;4BACnB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;wBACrC,CAAC;oBACL,CAAC;oBACD,IAAI,CAAC;wBACD,eAAe,CAAC,OAAO,EAAE,CAAC;oBAC9B,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;gBACd,CAAC;gBACD,IAAI,CAAC;oBACD,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACtB,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;gBACV,OAAO,UAAU,CAAC,IAAI,CAAC;YAC3B,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,qBAAqB,CAAC,MAAc,EAAE,cAAsB;QAChE,IAAI,CAAC,KAAK,IAAI,EAAE;YACZ,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YACrE,IAAI,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC;gBACvB,OAAO,UAAU,CAAC,IAAI,CAAC;YAC3B,CAAC;YACD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;YACrC,IAAI,CAAC;gBACD,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBACtD,IAAI,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC;oBACxB,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAClB,OAAO,UAAU,CAAC,IAAI,CAAC;gBAC3B,CAAC;gBACD,MAAM,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC3C,MAAM,CAAC,OAAO,EAAE,CAAC;YACrB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAC;gBACvD,IAAI,CAAC;oBACD,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACtB,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YACd,CAAC;YACD,OAAO,UAAU,CAAC,IAAI,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,SAAiB,EAAE,OAAY;QACvD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;QAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,OAAO;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,OAAO;QACX,CAAC;QACD,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QACtC,IAAI,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;YACtB,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5C,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK;QACP,MAAM,aAAa,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;QAC5E,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,IAAI;QACA,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAClD,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;gBACjD,QAAQ,CAAC,OAAO,EAAE,CAAC;YACvB,CAAC;QACL,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACJ"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { R, Result, t } from '@araminix/lib';
|
|
1
|
+
import { R, Result, Socket, t } from '@araminix/lib';
|
|
2
2
|
import { MessagePort } from 'worker_threads';
|
|
3
3
|
import { AgentInfo } from '../server/AuthProvider.js';
|
|
4
4
|
import { ConnectRequest } from '../server/ConnectRequest.js';
|
|
@@ -8,13 +8,34 @@ export type AgentInit = {
|
|
|
8
8
|
requestPort: MessagePort;
|
|
9
9
|
workerIndexPath: string;
|
|
10
10
|
};
|
|
11
|
+
export declare class AgentInstance {
|
|
12
|
+
private workerIndex;
|
|
13
|
+
readonly info: AgentInfo;
|
|
14
|
+
private worker?;
|
|
15
|
+
private requestSocket;
|
|
16
|
+
private responseSocket;
|
|
17
|
+
private socket?;
|
|
18
|
+
private onDestroy?;
|
|
19
|
+
private timer?;
|
|
20
|
+
private controller;
|
|
21
|
+
private initTimeoutMs;
|
|
22
|
+
constructor(workerIndex: URL, info: AgentInfo, controller: AgentController, initTimeoutMs?: number);
|
|
23
|
+
init(onDestroy: () => void, timeoutMs?: number): Promise<R>;
|
|
24
|
+
run(): Promise<void>;
|
|
25
|
+
task<TData = unknown, R = unknown>(taskName: string, data: TData, hp?: number): Promise<Result<R, undefined>>;
|
|
26
|
+
connect(socket: Socket): void;
|
|
27
|
+
destroy(): void;
|
|
28
|
+
}
|
|
11
29
|
export default class AgentController {
|
|
12
30
|
private workerIndex;
|
|
13
31
|
private instances;
|
|
14
|
-
|
|
32
|
+
private pending;
|
|
33
|
+
private initTimeoutMs;
|
|
34
|
+
constructor(workerIndex: URL, initTimeoutMs?: number);
|
|
15
35
|
task(id: string, taskName: string, data: t.Any | unknown, hp: number): Promise<Result<any, undefined>>;
|
|
16
36
|
list(type: string): string[];
|
|
17
37
|
acquire(type: string, id: string): R;
|
|
18
|
-
connect(info: AgentInfo, acceptRequest: ConnectRequest): Promise<R>;
|
|
38
|
+
connect(info: AgentInfo, acceptRequest: ConnectRequest, timeoutMs?: number): Promise<R>;
|
|
39
|
+
stop(): void;
|
|
19
40
|
}
|
|
20
41
|
//# sourceMappingURL=AgentController.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentController.d.ts","sourceRoot":"","sources":["../../../src/agent/AgentController.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"AgentController.d.ts","sourceRoot":"","sources":["../../../src/agent/AgentController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AACzH,OAAO,EAAkB,WAAW,EAAU,MAAM,gBAAgB,CAAC;AAIrE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,MAAM,MAAM,SAAS,GAAG;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,YAAY,EAAE,WAAW,CAAC;IAC1B,WAAW,EAAE,WAAW,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,qBAAa,aAAa;IACtB,OAAO,CAAC,WAAW,CAAM;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,OAAO,CAAC,MAAM,CAAC,CAAqB;IACpC,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,MAAM,CAAC,CAAqB;IACpC,OAAO,CAAC,SAAS,CAAC,CAAyB;IAC3C,OAAO,CAAC,KAAK,CAAC,CAEJ;IACV,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,aAAa,CAAS;IAE9B,YAAY,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,GAAE,MAAa,EAQvG;IAEK,IAAI,CAAC,SAAS,EAAE,MAAM,IAAI,EAAE,SAAS,GAAE,MAA2B,GAAG,OAAO,CAAC,CAAC,CAAC,CAsEpF;IAEK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAwCzB;IAEK,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAqBlH;IAED,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAkD5B;IAED,OAAO,IAAI,IAAI,CAyBd;CACJ;AAED,MAAM,CAAC,OAAO,OAAO,eAAe;IAChC,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,aAAa,CAAS;IAE9B,YAAY,WAAW,EAAE,GAAG,EAAE,aAAa,GAAE,MAAa,EAGzD;IAEK,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,GAAG,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAM3G;IAED,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAE3B;IAED,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,CAMnC;IAEK,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAiD5F;IAED,IAAI,IAAI,IAAI,CAMX;CACJ"}
|