@araminix/platform 0.0.0-stage → 1.0.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/LICENSE +21 -0
- package/README.md +210 -2
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/src/Platform.d.ts +48 -0
- package/dist/src/Platform.d.ts.map +1 -0
- package/dist/src/Platform.js +275 -0
- package/dist/src/Platform.js.map +1 -0
- package/dist/src/agent/AgentController.d.ts +20 -0
- package/dist/src/agent/AgentController.d.ts.map +1 -0
- package/dist/src/agent/AgentController.js +224 -0
- package/dist/src/agent/AgentController.js.map +1 -0
- package/dist/src/agent/agentWorkerDriver.d.ts +11 -0
- package/dist/src/agent/agentWorkerDriver.d.ts.map +1 -0
- package/dist/src/agent/agentWorkerDriver.js +20 -0
- package/dist/src/agent/agentWorkerDriver.js.map +1 -0
- package/dist/src/agent/d.d.ts +39 -0
- package/dist/src/agent/d.d.ts.map +1 -0
- package/dist/src/agent/d.js +91 -0
- package/dist/src/agent/d.js.map +1 -0
- package/dist/src/agent/worker.d.ts +2 -0
- package/dist/src/agent/worker.d.ts.map +1 -0
- package/dist/src/agent/worker.js +67 -0
- package/dist/src/agent/worker.js.map +1 -0
- package/dist/src/builder/Fragment.d.ts +40 -0
- package/dist/src/builder/Fragment.d.ts.map +1 -0
- package/dist/src/builder/Fragment.js +87 -0
- package/dist/src/builder/Fragment.js.map +1 -0
- package/dist/src/builder/Panel.d.ts +30 -0
- package/dist/src/builder/Panel.d.ts.map +1 -0
- package/dist/src/builder/Panel.js +45 -0
- package/dist/src/builder/Panel.js.map +1 -0
- package/dist/src/builder/builder.d.ts +31 -0
- package/dist/src/builder/builder.d.ts.map +1 -0
- package/dist/src/builder/builder.js +43 -0
- package/dist/src/builder/builder.js.map +1 -0
- package/dist/src/executor/ActivityInstance.d.ts +98 -0
- package/dist/src/executor/ActivityInstance.d.ts.map +1 -0
- package/dist/src/executor/ActivityInstance.js +389 -0
- package/dist/src/executor/ActivityInstance.js.map +1 -0
- package/dist/src/executor/AppInstance.d.ts +73 -0
- package/dist/src/executor/AppInstance.d.ts.map +1 -0
- package/dist/src/executor/AppInstance.js +399 -0
- package/dist/src/executor/AppInstance.js.map +1 -0
- package/dist/src/executor/Instance.d.ts +37 -0
- package/dist/src/executor/Instance.d.ts.map +1 -0
- package/dist/src/executor/Instance.js +303 -0
- package/dist/src/executor/Instance.js.map +1 -0
- package/dist/src/executor/index.d.ts +4 -0
- package/dist/src/executor/index.d.ts.map +1 -0
- package/dist/src/executor/index.js +3 -0
- package/dist/src/executor/index.js.map +1 -0
- package/dist/src/executor/proto.d.ts +120 -0
- package/dist/src/executor/proto.d.ts.map +1 -0
- package/dist/src/executor/proto.js +207 -0
- package/dist/src/executor/proto.js.map +1 -0
- package/dist/src/executor/worker.d.ts +2 -0
- package/dist/src/executor/worker.d.ts.map +1 -0
- package/dist/src/executor/worker.js +154 -0
- package/dist/src/executor/worker.js.map +1 -0
- package/dist/src/executor/workerDriver.d.ts +14 -0
- package/dist/src/executor/workerDriver.d.ts.map +1 -0
- package/dist/src/executor/workerDriver.js +26 -0
- package/dist/src/executor/workerDriver.js.map +1 -0
- package/dist/src/lib/actors.d.ts +94 -0
- package/dist/src/lib/actors.d.ts.map +1 -0
- package/dist/src/lib/actors.js +139 -0
- package/dist/src/lib/actors.js.map +1 -0
- package/dist/src/lib/d.d.ts +145 -0
- package/dist/src/lib/d.d.ts.map +1 -0
- package/dist/src/lib/d.js +296 -0
- package/dist/src/lib/d.js.map +1 -0
- package/dist/src/lib/worker_socket.d.ts +56 -0
- package/dist/src/lib/worker_socket.d.ts.map +1 -0
- package/dist/src/lib/worker_socket.js +161 -0
- package/dist/src/lib/worker_socket.js.map +1 -0
- package/dist/src/server/AuthProvider.d.ts +130 -0
- package/dist/src/server/AuthProvider.d.ts.map +1 -0
- package/dist/src/server/AuthProvider.js +58 -0
- package/dist/src/server/AuthProvider.js.map +1 -0
- package/dist/src/server/ConnectRequest.d.ts +15 -0
- package/dist/src/server/ConnectRequest.d.ts.map +1 -0
- package/dist/src/server/ConnectRequest.js +36 -0
- package/dist/src/server/ConnectRequest.js.map +1 -0
- package/dist/src/server/Endpoint.d.ts +49 -0
- package/dist/src/server/Endpoint.d.ts.map +1 -0
- package/dist/src/server/Endpoint.js +414 -0
- package/dist/src/server/Endpoint.js.map +1 -0
- package/dist/src/server/EndpointController.d.ts +15 -0
- package/dist/src/server/EndpointController.d.ts.map +1 -0
- package/dist/src/server/EndpointController.js +92 -0
- package/dist/src/server/EndpointController.js.map +1 -0
- package/dist/src/server/index.d.ts +7 -0
- package/dist/src/server/index.d.ts.map +1 -0
- package/dist/src/server/index.js +7 -0
- package/dist/src/server/index.js.map +1 -0
- package/dist/src/utils/i18n.d.ts +20 -0
- package/dist/src/utils/i18n.d.ts.map +1 -0
- package/dist/src/utils/i18n.js +41 -0
- package/dist/src/utils/i18n.js.map +1 -0
- package/dist/src/utils/index.d.ts +4 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +4 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/log_middleware.d.ts +3 -0
- package/dist/src/utils/log_middleware.d.ts.map +1 -0
- package/dist/src/utils/log_middleware.js +37 -0
- package/dist/src/utils/log_middleware.js.map +1 -0
- package/dist/src/utils/minioService.d.ts +53 -0
- package/dist/src/utils/minioService.d.ts.map +1 -0
- package/dist/src/utils/minioService.js +163 -0
- package/dist/src/utils/minioService.js.map +1 -0
- package/dist/tests/actors.test.d.ts +2 -0
- package/dist/tests/actors.test.d.ts.map +1 -0
- package/dist/tests/actors.test.js +45 -0
- package/dist/tests/actors.test.js.map +1 -0
- package/dist/tests/authProvider.test.d.ts +2 -0
- package/dist/tests/authProvider.test.d.ts.map +1 -0
- package/dist/tests/authProvider.test.js +24 -0
- package/dist/tests/authProvider.test.js.map +1 -0
- package/dist/tests/builder.test.d.ts +2 -0
- package/dist/tests/builder.test.d.ts.map +1 -0
- package/dist/tests/builder.test.js +37 -0
- package/dist/tests/builder.test.js.map +1 -0
- package/dist/tests/connectRequest.test.d.ts +2 -0
- package/dist/tests/connectRequest.test.d.ts.map +1 -0
- package/dist/tests/connectRequest.test.js +55 -0
- package/dist/tests/connectRequest.test.js.map +1 -0
- package/dist/tests/endpointController.test.d.ts +2 -0
- package/dist/tests/endpointController.test.d.ts.map +1 -0
- package/dist/tests/endpointController.test.js +28 -0
- package/dist/tests/endpointController.test.js.map +1 -0
- package/dist/tests/i18n.test.d.ts +2 -0
- package/dist/tests/i18n.test.d.ts.map +1 -0
- package/dist/tests/i18n.test.js +25 -0
- package/dist/tests/i18n.test.js.map +1 -0
- package/dist/tests/logMiddleware.test.d.ts +2 -0
- package/dist/tests/logMiddleware.test.d.ts.map +1 -0
- package/dist/tests/logMiddleware.test.js +10 -0
- package/dist/tests/logMiddleware.test.js.map +1 -0
- package/dist/tests/minioService.test.d.ts +2 -0
- package/dist/tests/minioService.test.d.ts.map +1 -0
- package/dist/tests/minioService.test.js +29 -0
- package/dist/tests/minioService.test.js.map +1 -0
- package/dist/tests/platform.test.d.ts +2 -0
- package/dist/tests/platform.test.d.ts.map +1 -0
- package/dist/tests/platform.test.js +43 -0
- package/dist/tests/platform.test.js.map +1 -0
- package/dist/tests/proto.test.d.ts +2 -0
- package/dist/tests/proto.test.d.ts.map +1 -0
- package/dist/tests/proto.test.js +37 -0
- package/dist/tests/proto.test.js.map +1 -0
- package/dist/tests/workerSocket.test.d.ts +2 -0
- package/dist/tests/workerSocket.test.d.ts.map +1 -0
- package/dist/tests/workerSocket.test.js +53 -0
- package/dist/tests/workerSocket.test.js.map +1 -0
- package/package.json +69 -3
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Amin Abbasi
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,211 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @araminix/platform
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> **Enterprise-grade actor runtime, WebSocket endpoint platform, and multi-threaded agent execution engine.**
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@araminix/platform)
|
|
6
|
+
[](https://opensource.org/licenses/MIT)
|
|
7
|
+
[](https://www.typescriptlang.org/)
|
|
8
|
+
[](https://nodejs.org/)
|
|
9
|
+
|
|
10
|
+
**Araminix Platform** (`@araminix/platform`) is a high-performance backend orchestration engine designed for complex real-time applications. Built on top of [`@araminix/lib`](../araminix-lib), it integrates an enterprise WebSocket & HTTP server, worker-thread agent execution, dynamic component/UI assembly, authentication (with 2FA and Google OAuth), and S3/MinIO cloud storage.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## 🌟 Key Features
|
|
15
|
+
|
|
16
|
+
- ⚡ **Unified WebSocket & HTTP Endpoint**: Built on Express & `express-ws`, providing automatic WebSocket route dispatching, session cookies, Google OAuth, and two-factor authentication (2FA).
|
|
17
|
+
- 🧵 **Multi-Threaded Agent Runtime**: Spawns isolated worker processes (`worker_threads`) with type-safe `MessageChannel` IPC, protecting the main thread from CPU-heavy tasks and crashes.
|
|
18
|
+
- 🧩 **Dynamic UI Builder & Actor Engine**: Assemble complex interactive interfaces on the fly using `Panel`, `Fragment`, and `Actor` lifecycles.
|
|
19
|
+
- 🗄️ **Integrated MinIO / S3 Storage**: Built-in presigned URL generation, file uploads (`multer`), MIME type mapping, and bucket management.
|
|
20
|
+
- 🌐 **First-Class Internationalization**: Integrated `I18nService` with type-safe generic dictionary translations and automatic language fallbacks.
|
|
21
|
+
- 🛡️ **Zero-Crash Functional Core**: Powered by `@araminix/lib`'s `Result<T, E>` monads and multiplexed streaming channels.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 📐 Architecture
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
+------------------------------------+
|
|
29
|
+
| Platform |
|
|
30
|
+
+-----------------+------------------+
|
|
31
|
+
|
|
|
32
|
+
+-----------------------------+-----------------------------+
|
|
33
|
+
| |
|
|
34
|
+
v v
|
|
35
|
+
+----------------------------+ +----------------------------+
|
|
36
|
+
| Endpoint | | AgentController |
|
|
37
|
+
| (Express WS + HTTP + 2FA) | | (worker_threads) |
|
|
38
|
+
+--------------+-------------+ +--------------+-------------+
|
|
39
|
+
| |
|
|
40
|
+
+--------------+-------------+ +--------------+-------------+
|
|
41
|
+
| MinIO S3 / Storage | | WorkerSocket / IPC Port |
|
|
42
|
+
+----------------------------+ +----------------------------+
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 📦 Installation
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# npm
|
|
51
|
+
npm install @araminix/platform @araminix/lib
|
|
52
|
+
|
|
53
|
+
# pnpm
|
|
54
|
+
pnpm add @araminix/platform @araminix/lib
|
|
55
|
+
|
|
56
|
+
# yarn
|
|
57
|
+
yarn add @araminix/platform @araminix/lib
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## 🚀 Quick Start
|
|
63
|
+
|
|
64
|
+
### 1. Initializing the Platform and Endpoint
|
|
65
|
+
|
|
66
|
+
```typescript
|
|
67
|
+
import { AuthProvider, ClientInfo, Ok, Platform, Result } from '@araminix/platform';
|
|
68
|
+
|
|
69
|
+
// 1. Define custom authentication logic
|
|
70
|
+
class CustomAuthProvider extends AuthProvider {
|
|
71
|
+
async getInfo(token: string): Promise<Result<ClientInfo, unknown>> {
|
|
72
|
+
// Retrieve and return client information
|
|
73
|
+
return new Ok({
|
|
74
|
+
id: 'user-100',
|
|
75
|
+
clientType: 'User',
|
|
76
|
+
runtimeId: 'rt-100',
|
|
77
|
+
} as ClientInfo);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
async auth(data: any) {
|
|
81
|
+
/* verify credentials */ return new Ok('token-xyz');
|
|
82
|
+
}
|
|
83
|
+
async googleAuth(data: any) {
|
|
84
|
+
/* Google OAuth */ return new Ok('token-xyz');
|
|
85
|
+
}
|
|
86
|
+
async destroy(token: string) {
|
|
87
|
+
/* session cleanup */
|
|
88
|
+
}
|
|
89
|
+
async refreshToken(token: string) {
|
|
90
|
+
return new Ok('new-token');
|
|
91
|
+
}
|
|
92
|
+
async request2FA(userId: string) {
|
|
93
|
+
return new Ok('otpauth://...');
|
|
94
|
+
}
|
|
95
|
+
async enable2FA(userId: string, secret: string, code: string) {
|
|
96
|
+
return new Ok(true);
|
|
97
|
+
}
|
|
98
|
+
async verify2FA(account: string, code: string, uuid: string) {
|
|
99
|
+
return new Ok(true);
|
|
100
|
+
}
|
|
101
|
+
async disable2FA(userId: string) {
|
|
102
|
+
return new Ok(true);
|
|
103
|
+
}
|
|
104
|
+
async requestUploadUrl(id: string, name: string, mime: string) {
|
|
105
|
+
return new Ok('https://...');
|
|
106
|
+
}
|
|
107
|
+
async requestDownloadUrl(id: string, name: string) {
|
|
108
|
+
return new Ok('https://...');
|
|
109
|
+
}
|
|
110
|
+
async mobileRequests(data: any) {
|
|
111
|
+
return { status: 200, result: 'OK' };
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// 2. Configure and launch the Platform
|
|
116
|
+
const platform = new Platform({
|
|
117
|
+
appIndexPath: new URL('file:///path/to/apps/index.js'),
|
|
118
|
+
agentIndexPath: new URL('file:///path/to/agents/index.js'),
|
|
119
|
+
authProvider: new CustomAuthProvider(),
|
|
120
|
+
instanceUserLimit: 10,
|
|
121
|
+
port: 3000,
|
|
122
|
+
mount: '/api',
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
// Start listening for HTTP & WebSocket connections
|
|
126
|
+
await platform.start();
|
|
127
|
+
console.log('Araminix Platform running on http://localhost:3000/api');
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
### 2. Spawning Multi-Threaded Agents
|
|
133
|
+
|
|
134
|
+
```typescript
|
|
135
|
+
import { AgentController } from '@araminix/platform';
|
|
136
|
+
|
|
137
|
+
const controller = new AgentController(new URL('file:///path/to/agentWorker.js'));
|
|
138
|
+
|
|
139
|
+
// Acquire or send tasks to background worker threads
|
|
140
|
+
const taskResult = await controller.task('worker-1', {
|
|
141
|
+
action: 'computeAnalytics',
|
|
142
|
+
payload: { range: '30d' },
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
if (taskResult.isOk()) {
|
|
146
|
+
console.log('Agent Response:', taskResult.unwrap());
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
### 3. Dynamic UI Building with Fragments & Panels
|
|
153
|
+
|
|
154
|
+
```typescript
|
|
155
|
+
import { Fragment, panel } from '@araminix/platform';
|
|
156
|
+
|
|
157
|
+
class UserProfileFragment extends Fragment {
|
|
158
|
+
build() {
|
|
159
|
+
return {
|
|
160
|
+
type: 'card',
|
|
161
|
+
props: { title: 'User Information' },
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// Assemble nested reactive panels
|
|
167
|
+
const dashboard = panel({ header: 'System Overview' })
|
|
168
|
+
.panel(panel({ header: 'Metrics' }))
|
|
169
|
+
.fragment(new UserProfileFragment())
|
|
170
|
+
.build();
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## 🛠️ Module Exports
|
|
176
|
+
|
|
177
|
+
| Submodule | Purpose |
|
|
178
|
+
| -------------------- | ---------------------------------------------------------------------------------------------- |
|
|
179
|
+
| `Platform` | Primary orchestrator managing endpoints, apps, and user session lifecycles. |
|
|
180
|
+
| `Endpoint` | Express + `express-ws` HTTP/WebSocket server handling auth, sessions, 2FA, and upload streams. |
|
|
181
|
+
| `AgentController` | Spawns and supervises isolated worker threads with `MessageChannel` IPC. |
|
|
182
|
+
| `Panel` / `Fragment` | Fluent builder API for dynamic UI layout structures. |
|
|
183
|
+
| `MinioService` | Object storage client for S3/MinIO presigned URLs and file lifecycle operations. |
|
|
184
|
+
| `I18nService` | Type-safe multi-language translation and fallback engine. |
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## 🧪 Testing
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
# Run unit tests
|
|
192
|
+
npm test
|
|
193
|
+
|
|
194
|
+
# Run tests with built-in code coverage report
|
|
195
|
+
npm run test:coverage
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## 👤 Author
|
|
201
|
+
|
|
202
|
+
**Amin Abbasi**
|
|
203
|
+
|
|
204
|
+
- Organization: [araminix](https://github.com/araminix)
|
|
205
|
+
- GitHub: [@abbasi](https://github.com)
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## 📄 License
|
|
210
|
+
|
|
211
|
+
This project is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details.
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import Fragment from './src/builder/Fragment.js';
|
|
2
|
+
import panel from './src/builder/Panel.js';
|
|
3
|
+
import Platform, { UserInstance } from './src/Platform.js';
|
|
4
|
+
import { ConnectRequest } from './src/server/ConnectRequest.js';
|
|
5
|
+
import Endpoint from './src/server/Endpoint.js';
|
|
6
|
+
export * from '@araminix/lib';
|
|
7
|
+
export * from './src/server/index.js';
|
|
8
|
+
export * from './src/utils/index.js';
|
|
9
|
+
export * from './src/lib/d.js';
|
|
10
|
+
export * from './src/lib/actors.js';
|
|
11
|
+
export * from './src/lib/worker_socket.js';
|
|
12
|
+
export * from './src/agent/d.js';
|
|
13
|
+
export * from './src/executor/index.js';
|
|
14
|
+
export { Platform, Endpoint, ConnectRequest, Fragment, panel, UserInstance };
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,KAAK,MAAM,wBAAwB,CAAC;AAC3C,OAAO,QAAQ,EAAE,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAEhD,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import Fragment from './src/builder/Fragment.js';
|
|
2
|
+
import panel from './src/builder/Panel.js';
|
|
3
|
+
import Platform from './src/Platform.js';
|
|
4
|
+
import { ConnectRequest } from './src/server/ConnectRequest.js';
|
|
5
|
+
import Endpoint from './src/server/Endpoint.js';
|
|
6
|
+
export * from '@araminix/lib';
|
|
7
|
+
export * from './src/server/index.js';
|
|
8
|
+
export * from './src/utils/index.js';
|
|
9
|
+
export * from './src/lib/d.js';
|
|
10
|
+
export * from './src/lib/actors.js';
|
|
11
|
+
export * from './src/lib/worker_socket.js';
|
|
12
|
+
export * from './src/agent/d.js';
|
|
13
|
+
export * from './src/executor/index.js';
|
|
14
|
+
export { Platform, Endpoint, ConnectRequest, Fragment, panel };
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,KAAK,MAAM,wBAAwB,CAAC;AAC3C,OAAO,QAA0B,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAEhD,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAgB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Result, Socket, Stream } from '@araminix/lib';
|
|
2
|
+
import Instance from './executor/Instance.js';
|
|
3
|
+
import { AppListing } from './lib/d.js';
|
|
4
|
+
import { AuthProvider, ClientInfo } from './server/AuthProvider.js';
|
|
5
|
+
import Endpoint from './server/Endpoint.js';
|
|
6
|
+
export interface PlatformConfig {
|
|
7
|
+
appIndexPath: URL;
|
|
8
|
+
agentIndexPath: URL;
|
|
9
|
+
authProvider: AuthProvider;
|
|
10
|
+
instanceUserLimit: number;
|
|
11
|
+
port?: number;
|
|
12
|
+
mount?: string;
|
|
13
|
+
cookieSecret?: string;
|
|
14
|
+
tabLimit?: number;
|
|
15
|
+
uploadDir?: string;
|
|
16
|
+
onCustomStream?: {
|
|
17
|
+
[key: string]: (client: ClientInfo, stream: Stream) => Promise<void>;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export type UserInstance = {
|
|
21
|
+
id: string;
|
|
22
|
+
appName: string;
|
|
23
|
+
appTitle: string;
|
|
24
|
+
activityTitle?: string;
|
|
25
|
+
profile: string | null;
|
|
26
|
+
touched: number;
|
|
27
|
+
};
|
|
28
|
+
export default class Platform {
|
|
29
|
+
private readonly config;
|
|
30
|
+
readonly endpoint: Endpoint;
|
|
31
|
+
private appIndex;
|
|
32
|
+
private agentController;
|
|
33
|
+
readonly instances: Map<string, Map<string, Instance>>;
|
|
34
|
+
constructor(config: PlatformConfig);
|
|
35
|
+
private serve;
|
|
36
|
+
private processInstanceCloseStream;
|
|
37
|
+
processCustomStreams(clientInfo: ClientInfo, endpointSocket: Socket): void;
|
|
38
|
+
processUserInfo(clientInfo: ClientInfo, endpointSocket: Socket): void;
|
|
39
|
+
listUserInstances(runtimeId: string): Promise<Array<UserInstance>>;
|
|
40
|
+
listUserApps(userId: string): Promise<Result<Array<AppListing>, void>>;
|
|
41
|
+
private processInstanceListStream;
|
|
42
|
+
private processInstanceStream;
|
|
43
|
+
private processAppsListStream;
|
|
44
|
+
private serveInstance;
|
|
45
|
+
start(): Promise<void>;
|
|
46
|
+
stop(): void;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=Platform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Platform.d.ts","sourceRoot":"","sources":["../../src/Platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAK,MAAM,eAAe,CAAC;AAGrF,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAY,UAAU,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAc,MAAM,0BAA0B,CAAC;AAChF,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAE5C,MAAM,WAAW,cAAc;IAC3B,YAAY,EAAE,GAAG,CAAC;IAClB,cAAc,EAAE,GAAG,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE;QACb,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KACxE,CAAC;CACL;AAED,MAAM,MAAM,YAAY,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,eAAe,CAAkB;IACzC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAa;IAEnE,YAAY,MAAM,EAAE,cAAc,EAWjC;IAED,OAAO,CAAC,KAAK;IAgDb,OAAO,CAAC,0BAA0B;IA4BlC,oBAAoB,CAAC,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAazE;IAED,eAAe,CAAC,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAepE;IAEK,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAavE;IAEK,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC,CAM3E;IAED,OAAO,CAAC,yBAAyB;IAcjC,OAAO,CAAC,qBAAqB;IA8D7B,OAAO,CAAC,qBAAqB;YAkBf,aAAa;IAkBrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAI3B;IAED,IAAI,IAAI,IAAI,CAQX;CACJ"}
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
import { Err, loop, LoopResult, Ok, t } from '@araminix/lib';
|
|
2
|
+
import AgentController from './agent/AgentController.js';
|
|
3
|
+
import Instance from './executor/Instance.js';
|
|
4
|
+
import { ClientType } from './server/AuthProvider.js';
|
|
5
|
+
import Endpoint from './server/Endpoint.js';
|
|
6
|
+
export default class Platform {
|
|
7
|
+
config;
|
|
8
|
+
endpoint;
|
|
9
|
+
appIndex;
|
|
10
|
+
agentController;
|
|
11
|
+
instances = new Map();
|
|
12
|
+
constructor(config) {
|
|
13
|
+
this.config = config;
|
|
14
|
+
this.endpoint = new Endpoint({
|
|
15
|
+
authProvider: config.authProvider,
|
|
16
|
+
port: config.port,
|
|
17
|
+
mount: config.mount,
|
|
18
|
+
cookieSecret: config.cookieSecret,
|
|
19
|
+
uploadDir: config.uploadDir,
|
|
20
|
+
});
|
|
21
|
+
this.agentController = new AgentController(this.config.agentIndexPath);
|
|
22
|
+
this.serve();
|
|
23
|
+
}
|
|
24
|
+
serve() {
|
|
25
|
+
loop(async () => {
|
|
26
|
+
const acquireResult = await this.endpoint.acquire('platform');
|
|
27
|
+
if (acquireResult.isErr())
|
|
28
|
+
return LoopResult.Stop;
|
|
29
|
+
const request = acquireResult.unwrap();
|
|
30
|
+
if (request.info.clientType !== ClientType.User) {
|
|
31
|
+
request.deny();
|
|
32
|
+
return LoopResult.Cont;
|
|
33
|
+
}
|
|
34
|
+
const acceptResult = request.accept();
|
|
35
|
+
if (acceptResult.isOk()) {
|
|
36
|
+
const socket = acceptResult.unwrap();
|
|
37
|
+
const runtimeId = request.info.runtimeId;
|
|
38
|
+
this.processInstanceListStream(runtimeId, socket);
|
|
39
|
+
this.processInstanceStream(request.info.id, runtimeId, socket);
|
|
40
|
+
this.processInstanceCloseStream(runtimeId, socket);
|
|
41
|
+
this.processAppsListStream(request.info.id, socket);
|
|
42
|
+
this.processUserInfo(request.info, socket);
|
|
43
|
+
this.processCustomStreams(request.info, socket);
|
|
44
|
+
}
|
|
45
|
+
return LoopResult.Cont;
|
|
46
|
+
});
|
|
47
|
+
loop(async () => {
|
|
48
|
+
const acquireResult = await this.endpoint.acquire('instance');
|
|
49
|
+
if (acquireResult.isErr())
|
|
50
|
+
return LoopResult.Stop;
|
|
51
|
+
const request = acquireResult.unwrap();
|
|
52
|
+
if (request.info.clientType !== ClientType.User) {
|
|
53
|
+
request.deny();
|
|
54
|
+
return LoopResult.Cont;
|
|
55
|
+
}
|
|
56
|
+
this.serveInstance(request.info.runtimeId, request).then();
|
|
57
|
+
return LoopResult.Cont;
|
|
58
|
+
});
|
|
59
|
+
loop(async () => {
|
|
60
|
+
const acquireResult = await this.endpoint.acquire('agent');
|
|
61
|
+
if (acquireResult.isErr())
|
|
62
|
+
return LoopResult.Stop;
|
|
63
|
+
const request = acquireResult.unwrap();
|
|
64
|
+
if (request.info.clientType !== ClientType.Agent) {
|
|
65
|
+
request.deny();
|
|
66
|
+
return LoopResult.Cont;
|
|
67
|
+
}
|
|
68
|
+
this.agentController.connect(request.info, request).then();
|
|
69
|
+
return LoopResult.Cont;
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
processInstanceCloseStream(runtimeId, endpointSocket) {
|
|
73
|
+
loop(async () => {
|
|
74
|
+
const streamResult = await endpointSocket.incomingStream('closeInstance');
|
|
75
|
+
if (streamResult.isErr()) {
|
|
76
|
+
return LoopResult.Stop;
|
|
77
|
+
}
|
|
78
|
+
const stream = streamResult.unwrap();
|
|
79
|
+
if (typeof stream.args !== 'string') {
|
|
80
|
+
stream.closeErr();
|
|
81
|
+
return LoopResult.Cont;
|
|
82
|
+
}
|
|
83
|
+
const instanceId = stream.args;
|
|
84
|
+
const userInstances = this.instances.get(runtimeId);
|
|
85
|
+
if (!userInstances) {
|
|
86
|
+
stream.closeOk();
|
|
87
|
+
return LoopResult.Cont;
|
|
88
|
+
}
|
|
89
|
+
const instance = userInstances.get(instanceId);
|
|
90
|
+
if (!instance) {
|
|
91
|
+
stream.closeOk();
|
|
92
|
+
return LoopResult.Cont;
|
|
93
|
+
}
|
|
94
|
+
instance.destroy();
|
|
95
|
+
stream.closeOk();
|
|
96
|
+
return LoopResult.Cont;
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
processCustomStreams(clientInfo, endpointSocket) {
|
|
100
|
+
if (!this.config.onCustomStream)
|
|
101
|
+
return;
|
|
102
|
+
for (const streamName in this.config.onCustomStream) {
|
|
103
|
+
const handler = this.config.onCustomStream[streamName];
|
|
104
|
+
loop(async () => {
|
|
105
|
+
const streamResult = await endpointSocket.incomingStream(`custom/${streamName}`);
|
|
106
|
+
if (streamResult.isErr()) {
|
|
107
|
+
return LoopResult.Stop;
|
|
108
|
+
}
|
|
109
|
+
await handler(clientInfo, streamResult.unwrap());
|
|
110
|
+
return LoopResult.Cont;
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
processUserInfo(clientInfo, endpointSocket) {
|
|
115
|
+
loop(async () => {
|
|
116
|
+
const streamResult = await endpointSocket.incomingStream('clientInfo');
|
|
117
|
+
if (streamResult.isErr()) {
|
|
118
|
+
return LoopResult.Stop;
|
|
119
|
+
}
|
|
120
|
+
const stream = streamResult.unwrap();
|
|
121
|
+
const result = await stream.write(clientInfo);
|
|
122
|
+
if (result.isErr()) {
|
|
123
|
+
stream.closeErr();
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
stream.closeOk();
|
|
127
|
+
}
|
|
128
|
+
return LoopResult.Cont;
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
async listUserInstances(runtimeId) {
|
|
132
|
+
const userInstances = this.instances.get(runtimeId);
|
|
133
|
+
if (!userInstances) {
|
|
134
|
+
return [];
|
|
135
|
+
}
|
|
136
|
+
return [...userInstances.entries()].map(([id, instance]) => ({
|
|
137
|
+
id,
|
|
138
|
+
appTitle: instance.appTitle,
|
|
139
|
+
appName: instance.appName,
|
|
140
|
+
activityTitle: instance.activityTitle,
|
|
141
|
+
profile: instance.profile,
|
|
142
|
+
touched: instance.touched,
|
|
143
|
+
}));
|
|
144
|
+
}
|
|
145
|
+
async listUserApps(userId) {
|
|
146
|
+
const userAppResult = await this.appIndex.userApps(userId);
|
|
147
|
+
if (userAppResult.isErr()) {
|
|
148
|
+
return new Err(undefined);
|
|
149
|
+
}
|
|
150
|
+
return new Ok(userAppResult.unwrap());
|
|
151
|
+
}
|
|
152
|
+
processInstanceListStream(runtimeId, endpointSocket) {
|
|
153
|
+
loop(async () => {
|
|
154
|
+
const streamResult = await endpointSocket.incomingStream('listInstances');
|
|
155
|
+
if (streamResult.isErr()) {
|
|
156
|
+
return LoopResult.Stop;
|
|
157
|
+
}
|
|
158
|
+
const stream = streamResult.unwrap();
|
|
159
|
+
const list = await this.listUserInstances(runtimeId);
|
|
160
|
+
await stream.write(list);
|
|
161
|
+
stream.closeOk();
|
|
162
|
+
return LoopResult.Cont;
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
processInstanceStream(userId, runtimeId, endpointSocket) {
|
|
166
|
+
const startInstanceArg = t.type({
|
|
167
|
+
appName: t.string,
|
|
168
|
+
profile: t.union([t.string, t.null]),
|
|
169
|
+
});
|
|
170
|
+
loop(async () => {
|
|
171
|
+
const streamResult = await endpointSocket.incomingStream('createInstance');
|
|
172
|
+
if (streamResult.isErr()) {
|
|
173
|
+
return LoopResult.Stop;
|
|
174
|
+
}
|
|
175
|
+
const stream = streamResult.unwrap();
|
|
176
|
+
if (!startInstanceArg.is(stream.args)) {
|
|
177
|
+
stream.closeErr();
|
|
178
|
+
return LoopResult.Cont;
|
|
179
|
+
}
|
|
180
|
+
const appName = stream.args.appName;
|
|
181
|
+
const profile = stream.args.profile;
|
|
182
|
+
const userApps = await this.appIndex.userApps(userId);
|
|
183
|
+
if (userApps.isErr()) {
|
|
184
|
+
stream.closeErr();
|
|
185
|
+
return LoopResult.Cont;
|
|
186
|
+
}
|
|
187
|
+
const appSearch = userApps.unwrap().find((listing) => {
|
|
188
|
+
const app = listing.apps.find((a) => a.name === appName && a.profiles.includes(profile));
|
|
189
|
+
return app !== undefined;
|
|
190
|
+
});
|
|
191
|
+
if (appSearch === undefined) {
|
|
192
|
+
stream.closeErr();
|
|
193
|
+
return LoopResult.Cont;
|
|
194
|
+
}
|
|
195
|
+
const instance = new Instance(userId, appName, profile, this.config.appIndexPath, this.config.tabLimit ?? 12, this.agentController);
|
|
196
|
+
if (!this.instances.has(runtimeId)) {
|
|
197
|
+
this.instances.set(runtimeId, new Map());
|
|
198
|
+
}
|
|
199
|
+
const instances = this.instances.get(runtimeId);
|
|
200
|
+
if (instances.size === this.config.instanceUserLimit) {
|
|
201
|
+
const first = instances.entries().next().value;
|
|
202
|
+
first?.[1].destroy();
|
|
203
|
+
}
|
|
204
|
+
instances.set(instance.id, instance);
|
|
205
|
+
const instanceInitResult = await instance.init(() => {
|
|
206
|
+
const insts = this.instances.get(runtimeId);
|
|
207
|
+
if (insts) {
|
|
208
|
+
insts.delete(instance.id);
|
|
209
|
+
if (insts.size === 0) {
|
|
210
|
+
this.instances.delete(runtimeId);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
if (instanceInitResult.isErr()) {
|
|
215
|
+
stream.closeErr();
|
|
216
|
+
return LoopResult.Cont;
|
|
217
|
+
}
|
|
218
|
+
const writeResult = await stream.write(instance.id);
|
|
219
|
+
if (writeResult.isErr()) {
|
|
220
|
+
instance.destroy();
|
|
221
|
+
}
|
|
222
|
+
stream.closeOk();
|
|
223
|
+
return LoopResult.Cont;
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
processAppsListStream(userId, endpointSocket) {
|
|
227
|
+
loop(async () => {
|
|
228
|
+
const streamResult = await endpointSocket.incomingStream('listApps');
|
|
229
|
+
if (streamResult.isErr()) {
|
|
230
|
+
return LoopResult.Stop;
|
|
231
|
+
}
|
|
232
|
+
const stream = streamResult.unwrap();
|
|
233
|
+
const userAppResult = await this.listUserApps(userId);
|
|
234
|
+
if (userAppResult.isErr()) {
|
|
235
|
+
stream.closeErr();
|
|
236
|
+
return LoopResult.Cont;
|
|
237
|
+
}
|
|
238
|
+
await stream.write(userAppResult.unwrap());
|
|
239
|
+
stream.closeOk();
|
|
240
|
+
return LoopResult.Cont;
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
async serveInstance(runtimeId, request) {
|
|
244
|
+
const instanceId = request.arg;
|
|
245
|
+
const userInstances = this.instances.get(runtimeId);
|
|
246
|
+
if (!userInstances) {
|
|
247
|
+
request.deny();
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
const instance = userInstances.get(instanceId);
|
|
251
|
+
if (!instance) {
|
|
252
|
+
request.deny();
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
const acceptResult = request.accept();
|
|
256
|
+
if (acceptResult.isOk()) {
|
|
257
|
+
instance.connect(acceptResult.unwrap());
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
async start() {
|
|
261
|
+
const AppIndexClass = (await import(this.config.appIndexPath.href)).default;
|
|
262
|
+
this.appIndex = new AppIndexClass();
|
|
263
|
+
this.endpoint.open();
|
|
264
|
+
}
|
|
265
|
+
stop() {
|
|
266
|
+
this.instances.forEach((userInstances) => {
|
|
267
|
+
userInstances.forEach((instance) => {
|
|
268
|
+
instance.destroy();
|
|
269
|
+
});
|
|
270
|
+
});
|
|
271
|
+
this.instances.clear();
|
|
272
|
+
this.endpoint.close();
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
//# sourceMappingURL=Platform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Platform.js","sourceRoot":"","sources":["../../src/Platform.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { R, Result, t } from '@araminix/lib';
|
|
2
|
+
import { MessagePort } from 'worker_threads';
|
|
3
|
+
import { AgentInfo } from '../server/AuthProvider.js';
|
|
4
|
+
import { ConnectRequest } from '../server/ConnectRequest.js';
|
|
5
|
+
export type AgentInit = {
|
|
6
|
+
info: AgentInfo;
|
|
7
|
+
responsePort: MessagePort;
|
|
8
|
+
requestPort: MessagePort;
|
|
9
|
+
workerIndexPath: string;
|
|
10
|
+
};
|
|
11
|
+
export default class AgentController {
|
|
12
|
+
private workerIndex;
|
|
13
|
+
private instances;
|
|
14
|
+
constructor(workerIndex: URL);
|
|
15
|
+
task(id: string, taskName: string, data: t.Any | unknown, hp: number): Promise<Result<any, undefined>>;
|
|
16
|
+
list(type: string): string[];
|
|
17
|
+
acquire(type: string, id: string): R;
|
|
18
|
+
connect(info: AgentInfo, acceptRequest: ConnectRequest): Promise<R>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=AgentController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentController.d.ts","sourceRoot":"","sources":["../../../src/agent/AgentController.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8D,CAAC,EAAE,MAAM,EAAU,CAAC,EAAE,MAAM,eAAe,CAAC;AACjH,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;AAqLF,MAAM,CAAC,OAAO,OAAO,eAAe;IAChC,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,SAAS,CAAyC;IAE1D,YAAY,WAAW,EAAE,GAAG,EAE3B;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,GAAG,OAAO,CAAC,CAAC,CAAC,CAuBxE;CACJ"}
|