@fentaris/edge 0.2.2 → 0.3.1
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 +34 -0
- package/dist/agent.d.ts +8 -3
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +134 -32
- package/dist/agent.js.map +1 -1
- package/dist/cli.d.ts +7 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +90 -5
- package/dist/cli.js.map +1 -1
- package/dist/daemon.d.ts +67 -0
- package/dist/daemon.d.ts.map +1 -0
- package/dist/daemon.js +244 -0
- package/dist/daemon.js.map +1 -0
- package/dist/enrollment.d.ts +12 -1
- package/dist/enrollment.d.ts.map +1 -1
- package/dist/enrollment.js +43 -5
- package/dist/enrollment.js.map +1 -1
- package/dist/index.d.ts +12 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +71 -3
- package/dist/index.js.map +1 -1
- package/dist/installation.d.ts +232 -0
- package/dist/installation.d.ts.map +1 -0
- package/dist/installation.js +897 -0
- package/dist/installation.js.map +1 -0
- package/dist/localControl.d.ts +50 -0
- package/dist/localControl.d.ts.map +1 -0
- package/dist/localControl.js +150 -0
- package/dist/localControl.js.map +1 -0
- package/dist/platform.d.ts +4 -1
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +31 -14
- package/dist/platform.js.map +1 -1
- package/dist/redaction.d.ts +2 -0
- package/dist/redaction.d.ts.map +1 -1
- package/dist/redaction.js +8 -0
- package/dist/redaction.js.map +1 -1
- package/dist/runtime.d.ts +27 -2
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +190 -15
- package/dist/runtime.js.map +1 -1
- package/dist/service.d.ts +96 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +150 -0
- package/dist/service.js.map +1 -0
- package/dist/setup.d.ts +1 -0
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +9 -2
- package/dist/setup.js.map +1 -1
- package/dist/supervisor.d.ts +4 -0
- package/dist/supervisor.d.ts.map +1 -1
- package/dist/supervisor.js +62 -16
- package/dist/supervisor.js.map +1 -1
- package/package.json +3 -3
package/README.md
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# `@fentaris/edge`
|
|
2
|
+
|
|
3
|
+
`@fentaris/edge` runs governed MCP workloads on enrolled computers while the
|
|
4
|
+
Fentaris proxy retains policy, placement, and lifecycle control.
|
|
5
|
+
|
|
6
|
+
Edge execution is alpha/preview. Validate service lifecycle, reconnect,
|
|
7
|
+
recovery, and local consent on every target operating system before rollout.
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
npm install @fentaris/edge
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Most users should operate Edge through the central CLI:
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
fentaris edge join https://control.example --name "Build Mac" --json
|
|
19
|
+
fentaris edge status --json
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
The legacy `fentaris-edge` binary remains available for compatibility. Prefer
|
|
23
|
+
`fentaris edge` for new automation.
|
|
24
|
+
|
|
25
|
+
## Runtime requirements
|
|
26
|
+
|
|
27
|
+
- Node.js 20 or newer for published packages.
|
|
28
|
+
- An explicit executable/package allowlist for launched MCP workloads.
|
|
29
|
+
- Local approval for managed installations and setup operations.
|
|
30
|
+
- HTTPS for non-loopback control-plane connections.
|
|
31
|
+
|
|
32
|
+
See the [Edge documentation](https://fentaris.dev/reference/edge) and
|
|
33
|
+
[repository](https://github.com/Fentaris/fentaris) for setup, recovery, and
|
|
34
|
+
rollback guidance.
|
package/dist/agent.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type EdgeObservedFacts } from "@fentaris/core";
|
|
2
|
+
import { EdgeEnrollmentService, type DeviceAuthorizationRequest, type EdgeJoinMetadata, type EdgeConnection, type EdgeConnectionClient } from "./enrollment.js";
|
|
2
3
|
import { type EdgePlatform } from "./platform.js";
|
|
3
|
-
import { type EdgeConnectionRuntime, type EdgeRuntimeSummary, type EdgeRuntimeSummaryProvider } from "./runtime.js";
|
|
4
|
+
import { type EdgeConnectionRuntime, type EdgeRuntimeSummary, type EdgeRuntimeSummaryProvider, type EdgeInstallationLocalControl } from "./runtime.js";
|
|
4
5
|
export type { EdgeRuntimeSummary, EdgeRuntimeSummaryProvider } from "./runtime.js";
|
|
5
6
|
export interface EdgeAgentStatus extends EdgeRuntimeSummary {
|
|
6
7
|
readonly enrolled: boolean;
|
|
@@ -16,16 +17,20 @@ export interface EdgeAgentOptions {
|
|
|
16
17
|
platform: EdgePlatform;
|
|
17
18
|
runtime?: EdgeConnectionRuntime;
|
|
18
19
|
runtimeSummary?: EdgeRuntimeSummaryProvider;
|
|
20
|
+
observedFacts?: () => EdgeObservedFacts;
|
|
19
21
|
}
|
|
20
22
|
/** Enrollment and connection lifecycle used by the CLI and embedders. */
|
|
21
23
|
export declare class EdgeAgent {
|
|
22
24
|
private readonly options;
|
|
23
25
|
private active?;
|
|
24
26
|
constructor(options: EdgeAgentOptions);
|
|
25
|
-
login(): Promise<import("./enrollment.js").EdgeLoginResult>;
|
|
27
|
+
login(metadata?: EdgeJoinMetadata): Promise<import("./enrollment.js").EdgeLoginResult>;
|
|
26
28
|
connect(): Promise<void>;
|
|
27
29
|
reconnect(): Promise<void>;
|
|
30
|
+
waitUntilDisconnected(): Promise<void>;
|
|
31
|
+
isConnected(): boolean;
|
|
28
32
|
status(): Promise<EdgeAgentStatus>;
|
|
33
|
+
installationControl(): EdgeInstallationLocalControl | undefined;
|
|
29
34
|
disconnect(): Promise<void>;
|
|
30
35
|
revoke(): Promise<void>;
|
|
31
36
|
}
|
package/dist/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAGA,OAAO,EASL,KAAK,iBAAiB,EACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,qBAAqB,EAGrB,KAAK,0BAA0B,EAC/B,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EAClC,MAAM,cAAc,CAAC;AAuBtB,YAAY,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAEnF,MAAM,WAAW,eAAgB,SAAQ,kBAAkB;IACzD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,qBAAqB,CAAC;IAClC,UAAU,EAAE,oBAAoB,CAAC;IACjC,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,cAAc,CAAC,EAAE,0BAA0B,CAAC;IAC5C,aAAa,CAAC,EAAE,MAAM,iBAAiB,CAAC;CACzC;AAED,yEAAyE;AACzE,qBAAa,SAAS;IAGR,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,MAAM,CAAC,CAAiB;gBAEH,OAAO,EAAE,gBAAgB;IAEhD,KAAK,CAAC,QAAQ,GAAE,gBAAqB;IAMrC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBxB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAK1B,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5C,WAAW,IAAI,OAAO;IAIhB,MAAM,IAAI,OAAO,CAAC,eAAe,CAAC;IAoBxC,mBAAmB,IAAI,4BAA4B,GAAG,SAAS;IAIzD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAM9B;AAED,6EAA6E;AAC7E,qBAAa,6BAA8B,YAAW,oBAAoB;IAC5D,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAAhB,gBAAgB,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,SAAuC;IAEjG,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;CAkK9F;AAsBD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,0BAA0B,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvF,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/C;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,GAAG,SAAS,CAuE9E"}
|
package/dist/agent.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { randomBytes, sign } from "node:crypto";
|
|
2
|
-
import { hostname } from "node:os";
|
|
2
|
+
import { arch, hostname, platform as operatingSystem } from "node:os";
|
|
3
3
|
import path from "node:path";
|
|
4
|
-
import { EDGE_PROTOCOL_VERSION, edgeError, parseEdgeProtocolMessage, } from "@fentaris/core";
|
|
4
|
+
import { EDGE_PROTOCOL_VERSION, EDGE_SUPPORTED_PROTOCOL_VERSIONS, edgeError, InMemoryInstallationMutationLock, parseEdgeProtocolMessage, } from "@fentaris/core";
|
|
5
5
|
import { EdgeEnrollmentService, HttpDeviceAuthorizationProvider, HttpEdgeEnrollmentClient, } from "./enrollment.js";
|
|
6
6
|
import { ProtectedJsonStore, nodeEdgePlatform, } from "./platform.js";
|
|
7
7
|
import { EdgeAgentRuntime, } from "./runtime.js";
|
|
8
8
|
import { LocalSetupManager, NodeTerminalSetupPrompter, TerminalSetupProvider, } from "./setup.js";
|
|
9
9
|
import { EdgeWorkloadSupervisor, ExecutableAllowlistPolicy, } from "./supervisor.js";
|
|
10
10
|
import { StdioEdgeWorkloadFactory } from "./stdioWorkload.js";
|
|
11
|
+
import { BoundedInstallerRunner, InstallationConsentManager, InstallationCoordinator, ManagedInstallationSourceResolver, ProtectedInstallationState, commandIsolationAdapter, createDefaultInstallationProviders, } from "./installation.js";
|
|
11
12
|
/** Enrollment and connection lifecycle used by the CLI and embedders. */
|
|
12
13
|
export class EdgeAgent {
|
|
13
14
|
options;
|
|
@@ -15,8 +16,8 @@ export class EdgeAgent {
|
|
|
15
16
|
constructor(options) {
|
|
16
17
|
this.options = options;
|
|
17
18
|
}
|
|
18
|
-
async login() {
|
|
19
|
-
const login = await this.options.enrollment.login();
|
|
19
|
+
async login(metadata = {}) {
|
|
20
|
+
const login = await this.options.enrollment.login(metadata);
|
|
20
21
|
await this.connect();
|
|
21
22
|
return login;
|
|
22
23
|
}
|
|
@@ -33,17 +34,29 @@ export class EdgeAgent {
|
|
|
33
34
|
publicKey: credentials.keyPair.publicKey,
|
|
34
35
|
privateKey: credentials.keyPair.privateKey,
|
|
35
36
|
runtime: this.options.runtime,
|
|
37
|
+
observedFacts: this.options.observedFacts?.() ?? defaultObservedFacts(),
|
|
36
38
|
});
|
|
37
39
|
const active = this.active;
|
|
38
|
-
void active.closed?.
|
|
39
|
-
if (this.active === active)
|
|
40
|
-
|
|
41
|
-
});
|
|
40
|
+
void active.closed?.then(() => { if (this.active === active)
|
|
41
|
+
this.active = undefined; }, () => { if (this.active === active)
|
|
42
|
+
this.active = undefined; });
|
|
42
43
|
}
|
|
43
44
|
async reconnect() {
|
|
44
45
|
await this.disconnect();
|
|
45
46
|
await this.connect();
|
|
46
47
|
}
|
|
48
|
+
async waitUntilDisconnected() {
|
|
49
|
+
const active = this.active;
|
|
50
|
+
if (!active)
|
|
51
|
+
return;
|
|
52
|
+
if (active.closed)
|
|
53
|
+
await active.closed;
|
|
54
|
+
else
|
|
55
|
+
await new Promise(() => undefined);
|
|
56
|
+
}
|
|
57
|
+
isConnected() {
|
|
58
|
+
return this.active !== undefined;
|
|
59
|
+
}
|
|
47
60
|
async status() {
|
|
48
61
|
const config = await this.options.platform.configStore.load();
|
|
49
62
|
const summary = await this.options.runtimeSummary?.summary() ?? {
|
|
@@ -63,6 +76,9 @@ export class EdgeAgent {
|
|
|
63
76
|
...(this.active ? { connectedAt: this.active.connectedAt } : {}),
|
|
64
77
|
};
|
|
65
78
|
}
|
|
79
|
+
installationControl() {
|
|
80
|
+
return this.options.runtime?.installationControl?.();
|
|
81
|
+
}
|
|
66
82
|
async disconnect() {
|
|
67
83
|
const active = this.active;
|
|
68
84
|
this.active = undefined;
|
|
@@ -88,15 +104,20 @@ export class WebSocketEdgeConnectionClient {
|
|
|
88
104
|
}
|
|
89
105
|
const socket = this.webSocketFactory(url.toString());
|
|
90
106
|
const nonce = randomBytes(32).toString("base64url");
|
|
91
|
-
const proof = sign(null, Buffer.from(`${input.edgeNodeId}.${nonce}`), input.privateKey).toString("base64url");
|
|
107
|
+
const proof = sign(null, Buffer.from(`${input.edgeNodeId}.${nonce}.edge.hello`), input.privateKey).toString("base64url");
|
|
92
108
|
let ack;
|
|
93
109
|
let heartbeat;
|
|
94
110
|
let runtimeDisconnected = false;
|
|
95
111
|
let resolveClosed;
|
|
96
|
-
|
|
112
|
+
let rejectClosed;
|
|
113
|
+
const closed = new Promise((resolve, reject) => {
|
|
97
114
|
resolveClosed = resolve;
|
|
115
|
+
rejectClosed = reject;
|
|
98
116
|
});
|
|
99
|
-
|
|
117
|
+
// Embedders may ignore `closed`; keep terminal close metadata available to
|
|
118
|
+
// awaiters without producing an unhandled rejection in that case.
|
|
119
|
+
void closed.catch(() => undefined);
|
|
120
|
+
const disconnectRuntime = async (closeError) => {
|
|
100
121
|
if (runtimeDisconnected)
|
|
101
122
|
return;
|
|
102
123
|
runtimeDisconnected = true;
|
|
@@ -105,8 +126,14 @@ export class WebSocketEdgeConnectionClient {
|
|
|
105
126
|
try {
|
|
106
127
|
await input.runtime?.disconnected();
|
|
107
128
|
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
closeError ??= error;
|
|
131
|
+
}
|
|
108
132
|
finally {
|
|
109
|
-
|
|
133
|
+
if (closeError)
|
|
134
|
+
rejectClosed(closeError);
|
|
135
|
+
else
|
|
136
|
+
resolveClosed();
|
|
110
137
|
}
|
|
111
138
|
};
|
|
112
139
|
const send = async (message) => {
|
|
@@ -126,22 +153,20 @@ export class WebSocketEdgeConnectionClient {
|
|
|
126
153
|
void disconnectRuntime();
|
|
127
154
|
}
|
|
128
155
|
};
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
156
|
+
// The close event carries the gateway's private close code. Wait for it
|
|
157
|
+
// instead of letting a preceding generic error event erase whether the
|
|
158
|
+
// identity was rejected/revoked or the network merely failed.
|
|
159
|
+
socket.addEventListener("error", () => undefined);
|
|
133
160
|
socket.addEventListener("open", () => {
|
|
134
161
|
socket.send(JSON.stringify({
|
|
135
162
|
version: EDGE_PROTOCOL_VERSION,
|
|
136
163
|
kind: "edge.hello",
|
|
137
164
|
tenantId: input.tenantId,
|
|
138
165
|
edgeNodeId: input.edgeNodeId,
|
|
139
|
-
supportedVersions:
|
|
166
|
+
supportedVersions: EDGE_SUPPORTED_PROTOCOL_VERSIONS,
|
|
140
167
|
nonce,
|
|
141
168
|
proof,
|
|
142
169
|
deviceCredential: input.deviceCredential,
|
|
143
|
-
accessToken: input.accessToken,
|
|
144
|
-
publicKey: input.publicKey,
|
|
145
170
|
}));
|
|
146
171
|
}, { once: true });
|
|
147
172
|
socket.addEventListener("message", (event) => {
|
|
@@ -156,25 +181,51 @@ export class WebSocketEdgeConnectionClient {
|
|
|
156
181
|
throw edgeError("EDGE_PROTOCOL", "Edge gateway acknowledged a different device identity.");
|
|
157
182
|
}
|
|
158
183
|
ack = message;
|
|
184
|
+
const publishPresence = async () => {
|
|
185
|
+
if (!ack || ack.protocolVersion < 2)
|
|
186
|
+
return;
|
|
187
|
+
const snapshot = await input.runtime?.presenceSnapshot?.() ?? { readiness: [] };
|
|
188
|
+
const reportedAt = Date.now();
|
|
189
|
+
await send({
|
|
190
|
+
version: ack.protocolVersion,
|
|
191
|
+
kind: "edge.presence",
|
|
192
|
+
tenantId: ack.tenantId,
|
|
193
|
+
edgeNodeId: ack.edgeNodeId,
|
|
194
|
+
connectionGeneration: ack.connectionGeneration,
|
|
195
|
+
observed: input.observedFacts ?? defaultObservedFacts(reportedAt),
|
|
196
|
+
...snapshot,
|
|
197
|
+
reportedAt,
|
|
198
|
+
});
|
|
199
|
+
};
|
|
159
200
|
await input.runtime?.connected({
|
|
201
|
+
protocolVersion: message.protocolVersion,
|
|
160
202
|
claims: {
|
|
161
203
|
tenantId: message.tenantId,
|
|
162
204
|
edgeNodeId: message.edgeNodeId,
|
|
163
205
|
connectionGeneration: message.connectionGeneration,
|
|
164
206
|
},
|
|
165
207
|
send,
|
|
208
|
+
publishPresence,
|
|
166
209
|
});
|
|
210
|
+
await publishPresence();
|
|
167
211
|
heartbeat = setInterval(() => {
|
|
168
212
|
if (!ack || socket.readyState !== WebSocket.OPEN)
|
|
169
213
|
return;
|
|
170
|
-
void
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
214
|
+
void (async () => {
|
|
215
|
+
const snapshot = ack && ack.protocolVersion >= 2
|
|
216
|
+
? await input.runtime?.presenceSnapshot?.() ?? { readiness: [] }
|
|
217
|
+
: undefined;
|
|
218
|
+
await send({
|
|
219
|
+
version: ack.protocolVersion,
|
|
220
|
+
kind: "edge.heartbeat",
|
|
221
|
+
tenantId: ack.tenantId,
|
|
222
|
+
edgeNodeId: ack.edgeNodeId,
|
|
223
|
+
connectionGeneration: ack.connectionGeneration,
|
|
224
|
+
sentAt: Date.now(),
|
|
225
|
+
...(snapshot?.capacity ? { capacity: snapshot.capacity } : {}),
|
|
226
|
+
...(snapshot?.load ? { load: snapshot.load } : {}),
|
|
227
|
+
});
|
|
228
|
+
})().catch(() => socket.close(1011, "edge heartbeat failed"));
|
|
178
229
|
}, 10_000);
|
|
179
230
|
heartbeat.unref?.();
|
|
180
231
|
resolve(message);
|
|
@@ -184,6 +235,7 @@ export class WebSocketEdgeConnectionClient {
|
|
|
184
235
|
throw edgeError("EDGE_PROTOCOL", "Unexpected edge handshake frame after authentication.");
|
|
185
236
|
}
|
|
186
237
|
if (message.kind !== "edge.desired-state"
|
|
238
|
+
&& message.kind !== "edge.installation-control"
|
|
187
239
|
&& message.kind !== "mcp.request"
|
|
188
240
|
&& message.kind !== "mcp.cancel") {
|
|
189
241
|
throw edgeError("EDGE_PROTOCOL", "Unexpected message kind from the edge control plane.");
|
|
@@ -195,10 +247,11 @@ export class WebSocketEdgeConnectionClient {
|
|
|
195
247
|
}
|
|
196
248
|
});
|
|
197
249
|
});
|
|
198
|
-
socket.addEventListener("close", () => {
|
|
199
|
-
|
|
250
|
+
socket.addEventListener("close", (event) => {
|
|
251
|
+
const closeError = terminalGatewayClose(event);
|
|
252
|
+
void disconnectRuntime(closeError);
|
|
200
253
|
if (!ack)
|
|
201
|
-
reject(edgeError("EDGE_UNAVAILABLE", "Edge socket closed during authentication."));
|
|
254
|
+
reject(closeError ?? edgeError("EDGE_UNAVAILABLE", "Edge socket closed during authentication."));
|
|
202
255
|
}, { once: true });
|
|
203
256
|
});
|
|
204
257
|
const authenticatedAck = await authenticated;
|
|
@@ -210,22 +263,42 @@ export class WebSocketEdgeConnectionClient {
|
|
|
210
263
|
void disconnectRuntime().then(resolve);
|
|
211
264
|
return;
|
|
212
265
|
}
|
|
213
|
-
closed.then(resolve);
|
|
266
|
+
closed.then(resolve, resolve);
|
|
214
267
|
socket.close(1000, "local disconnect");
|
|
215
268
|
}),
|
|
216
269
|
};
|
|
217
270
|
}
|
|
218
271
|
}
|
|
272
|
+
function terminalGatewayClose(event) {
|
|
273
|
+
const code = "code" in event && typeof event.code === "number" ? event.code : undefined;
|
|
274
|
+
if (code === 4401 || code === 4403) {
|
|
275
|
+
return edgeError("EDGE_UNAUTHORIZED_TARGET", "Edge gateway rejected or revoked this device identity.", {
|
|
276
|
+
details: { closeCode: code },
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
return undefined;
|
|
280
|
+
}
|
|
281
|
+
function defaultObservedFacts(reportedAt = Date.now()) {
|
|
282
|
+
return {
|
|
283
|
+
platform: operatingSystem(),
|
|
284
|
+
architecture: arch(),
|
|
285
|
+
agentVersion: "0.1.0",
|
|
286
|
+
executionFeatures: ["mcp-stdio"],
|
|
287
|
+
reportedAt,
|
|
288
|
+
};
|
|
289
|
+
}
|
|
219
290
|
export function createDefaultEdgeAgent(options) {
|
|
220
291
|
const platform = options.platform ?? nodeEdgePlatform();
|
|
221
292
|
const enrollment = new EdgeEnrollmentService({
|
|
222
293
|
platform,
|
|
294
|
+
controlPlaneUrl: options.controlPlaneUrl,
|
|
223
295
|
authorization: new HttpDeviceAuthorizationProvider(options.controlPlaneUrl),
|
|
224
296
|
enrollment: new HttpEdgeEnrollmentClient(options.controlPlaneUrl),
|
|
225
297
|
callbacks: { onVerification: options.onVerification },
|
|
226
298
|
hostnameLabel: hostname,
|
|
227
299
|
});
|
|
228
300
|
const runtimeRef = {};
|
|
301
|
+
const installationRef = {};
|
|
229
302
|
const setup = new LocalSetupManager({
|
|
230
303
|
store: new ProtectedJsonStore(path.join(platform.paths.dataDir, "grants.json")),
|
|
231
304
|
credentials: platform.credentialStore,
|
|
@@ -234,6 +307,11 @@ export function createDefaultEdgeAgent(options) {
|
|
|
234
307
|
const activeSupervisor = supervisor;
|
|
235
308
|
await Promise.all(deploymentIds.map((deploymentId) => activeSupervisor.blockDeployment(deploymentId)));
|
|
236
309
|
},
|
|
310
|
+
resolveInstalledArtifact: (reference) => {
|
|
311
|
+
if (!installationRef.current)
|
|
312
|
+
throw edgeError("EDGE_SETUP_REQUIRED", "Managed installation is not initialized.");
|
|
313
|
+
return installationRef.current.resolveArtifact(reference);
|
|
314
|
+
},
|
|
237
315
|
});
|
|
238
316
|
const supervisor = new EdgeWorkloadSupervisor({
|
|
239
317
|
setup,
|
|
@@ -249,7 +327,31 @@ export function createDefaultEdgeAgent(options) {
|
|
|
249
327
|
return runtimeRef.current.reportCapabilityManifest(deploymentId, recipeDigest, manifest);
|
|
250
328
|
},
|
|
251
329
|
});
|
|
252
|
-
const
|
|
330
|
+
const installationState = new ProtectedInstallationState(new ProtectedJsonStore(path.join(platform.paths.dataDir, "installations.json")));
|
|
331
|
+
const installationConsent = new InstallationConsentManager(installationState);
|
|
332
|
+
const installationRunner = new BoundedInstallerRunner(commandIsolationAdapter({
|
|
333
|
+
executable: process.env.FENTARIS_EDGE_INSTALLATION_SANDBOX,
|
|
334
|
+
}));
|
|
335
|
+
const installationSource = new ManagedInstallationSourceResolver({
|
|
336
|
+
credentials: platform.credentialStore,
|
|
337
|
+
local: { resolve: (grantRef) => setup.resolveGrantedPath(grantRef) },
|
|
338
|
+
});
|
|
339
|
+
const installation = new InstallationCoordinator({
|
|
340
|
+
state: installationState,
|
|
341
|
+
consent: installationConsent,
|
|
342
|
+
lock: new InMemoryInstallationMutationLock(),
|
|
343
|
+
providers: createDefaultInstallationProviders({ source: installationSource, runner: installationRunner }),
|
|
344
|
+
installationRoot: path.join(platform.paths.dataDir, "managed-installations"),
|
|
345
|
+
stagingRoot: path.join(platform.paths.dataDir, "installation-staging"),
|
|
346
|
+
terminateProcess: async (pid) => {
|
|
347
|
+
try {
|
|
348
|
+
process.kill(process.platform === "win32" ? pid : -pid, "SIGKILL");
|
|
349
|
+
}
|
|
350
|
+
catch { /* already stopped */ }
|
|
351
|
+
},
|
|
352
|
+
});
|
|
353
|
+
installationRef.current = installation;
|
|
354
|
+
const runtime = new EdgeAgentRuntime({ setup, supervisor, installation });
|
|
253
355
|
runtimeRef.current = runtime;
|
|
254
356
|
return new EdgeAgent({
|
|
255
357
|
enrollment,
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import type { EdgeAgent } from "./agent.js";
|
|
2
|
+
import type { EdgeServiceOperation, EdgeServiceResult } from "./service.js";
|
|
2
3
|
export interface EdgeCliIo {
|
|
3
4
|
out(value: string): void;
|
|
4
5
|
error(value: string): void;
|
|
5
6
|
}
|
|
6
|
-
export
|
|
7
|
+
export interface EdgeCliOperations {
|
|
8
|
+
installService(): Promise<EdgeServiceResult>;
|
|
9
|
+
service(operation: EdgeServiceOperation): Promise<EdgeServiceResult>;
|
|
10
|
+
run(): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
export declare function runEdgeCli(argv: readonly string[], agent: EdgeAgent, io: EdgeCliIo, operations?: EdgeCliOperations): Promise<number>;
|
|
7
13
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAG5E,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,cAAc,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC7C,OAAO,CAAC,SAAS,EAAE,oBAAoB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACrE,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAED,wBAAsB,UAAU,CAC9B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,KAAK,EAAE,SAAS,EAChB,EAAE,EAAE,SAAS,EACb,UAAU,CAAC,EAAE,iBAAiB,GAC7B,OAAO,CAAC,MAAM,CAAC,CA+EjB"}
|
package/dist/cli.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { redactEdgeValue, safeEdgeError } from "./redaction.js";
|
|
2
|
-
export async function runEdgeCli(argv, agent, io) {
|
|
2
|
+
export async function runEdgeCli(argv, agent, io, operations) {
|
|
3
3
|
const command = argv[0] ?? "status";
|
|
4
4
|
try {
|
|
5
5
|
switch (command) {
|
|
@@ -10,25 +10,73 @@ export async function runEdgeCli(argv, agent, io) {
|
|
|
10
10
|
edgeNodeId: result.config.edgeNodeId,
|
|
11
11
|
tenantId: result.config.tenantId,
|
|
12
12
|
connected: true,
|
|
13
|
+
warnings: ["fentaris-edge login is deprecated; use fentaris edge join <control-plane-url>."],
|
|
13
14
|
})));
|
|
14
15
|
return 0;
|
|
15
16
|
}
|
|
17
|
+
case "join": {
|
|
18
|
+
const parsed = parseJoin(argv.slice(1));
|
|
19
|
+
const result = await agent.login(parsed.metadata);
|
|
20
|
+
let service;
|
|
21
|
+
const warnings = [];
|
|
22
|
+
if (!parsed.noService) {
|
|
23
|
+
if (!operations)
|
|
24
|
+
throw new Error("Persistent service operations are unavailable in this embedding.");
|
|
25
|
+
try {
|
|
26
|
+
service = await operations.installService();
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
warnings.push("Persistent service installation was unavailable; enrollment identity was retained.");
|
|
30
|
+
if (parsed.requireService)
|
|
31
|
+
throw error;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
await agent.disconnect();
|
|
35
|
+
const envelope = {
|
|
36
|
+
ok: true,
|
|
37
|
+
data: {
|
|
38
|
+
status: result.repeated ? "already-enrolled" : "enrolled",
|
|
39
|
+
device: { name: parsed.metadata.name ?? result.config.hostnameLabel ?? "edge-device" },
|
|
40
|
+
service: service ?? { persistent: false, adapter: "foreground" },
|
|
41
|
+
},
|
|
42
|
+
pagination: null,
|
|
43
|
+
warnings,
|
|
44
|
+
nextActions: service?.persistent ? [] : [{ description: "Run Edge in the foreground", command: "fentaris edge run" }],
|
|
45
|
+
};
|
|
46
|
+
io.out(parsed.json ? JSON.stringify(envelope) : `${envelope.data.device.name} ${envelope.data.status}`);
|
|
47
|
+
return 0;
|
|
48
|
+
}
|
|
49
|
+
case "run":
|
|
50
|
+
if (!operations)
|
|
51
|
+
throw new Error("Persistent Edge runtime is unavailable in this embedding.");
|
|
52
|
+
await operations.run();
|
|
53
|
+
return 0;
|
|
54
|
+
case "service": {
|
|
55
|
+
if (!operations)
|
|
56
|
+
throw new Error("Persistent service operations are unavailable in this embedding.");
|
|
57
|
+
const operation = serviceOperation(argv[1]);
|
|
58
|
+
io.out(JSON.stringify({ ok: true, data: await operations.service(operation), pagination: null, warnings: [], nextActions: [] }));
|
|
59
|
+
return 0;
|
|
60
|
+
}
|
|
16
61
|
case "status":
|
|
17
|
-
io.out(JSON.stringify(redactEdgeValue(
|
|
62
|
+
io.out(JSON.stringify(redactEdgeValue({
|
|
63
|
+
...await agent.status(),
|
|
64
|
+
warnings: ["fentaris-edge status is deprecated; use fentaris edge status."],
|
|
65
|
+
})));
|
|
18
66
|
return 0;
|
|
19
67
|
case "disconnect":
|
|
20
68
|
await agent.disconnect();
|
|
21
|
-
io.out(JSON.stringify({ status: "disconnected" }));
|
|
69
|
+
io.out(JSON.stringify({ status: "disconnected", warnings: ["fentaris-edge disconnect is deprecated; use fentaris edge disconnect."] }));
|
|
22
70
|
return 0;
|
|
23
71
|
case "revoke":
|
|
24
72
|
await agent.revoke();
|
|
25
|
-
io.out(JSON.stringify({ status: "revoked" }));
|
|
73
|
+
io.out(JSON.stringify({ status: "revoked", warnings: ["fentaris-edge revoke is deprecated; use fentaris edge revoke."] }));
|
|
26
74
|
return 0;
|
|
27
75
|
case "add":
|
|
28
76
|
io.error("MCP definitions and assignments are managed by Fentaris; fentaris-edge has no add command.");
|
|
29
77
|
return 2;
|
|
30
78
|
default:
|
|
31
|
-
io.error("Usage: fentaris-edge <login|status|disconnect|revoke>");
|
|
79
|
+
io.error("Usage: fentaris-edge <join|run|service|login|status|disconnect|revoke>");
|
|
32
80
|
return 2;
|
|
33
81
|
}
|
|
34
82
|
}
|
|
@@ -37,4 +85,41 @@ export async function runEdgeCli(argv, agent, io) {
|
|
|
37
85
|
return 1;
|
|
38
86
|
}
|
|
39
87
|
}
|
|
88
|
+
function parseJoin(argv) {
|
|
89
|
+
const metadata = { tags: [] };
|
|
90
|
+
let json = false;
|
|
91
|
+
let noService = false;
|
|
92
|
+
let requireService = false;
|
|
93
|
+
for (let index = 1; index < argv.length; index += 1) {
|
|
94
|
+
const value = argv[index];
|
|
95
|
+
if (value === "--json")
|
|
96
|
+
json = true;
|
|
97
|
+
else if (value === "--no-service")
|
|
98
|
+
noService = true;
|
|
99
|
+
else if (value === "--service")
|
|
100
|
+
requireService = true;
|
|
101
|
+
else if (value === "--name" || value === "--description" || value === "--tag") {
|
|
102
|
+
const next = argv[index + 1];
|
|
103
|
+
if (!next)
|
|
104
|
+
throw new Error(`${value} requires a value.`);
|
|
105
|
+
if (value === "--name")
|
|
106
|
+
metadata.name = next;
|
|
107
|
+
else if (value === "--description")
|
|
108
|
+
metadata.description = next;
|
|
109
|
+
else
|
|
110
|
+
metadata.tags.push(next);
|
|
111
|
+
index += 1;
|
|
112
|
+
}
|
|
113
|
+
else if (value?.startsWith("-"))
|
|
114
|
+
throw new Error(`Unknown join option ${value}.`);
|
|
115
|
+
}
|
|
116
|
+
if (noService && requireService)
|
|
117
|
+
throw new Error("--service and --no-service cannot be combined.");
|
|
118
|
+
return { metadata, json, noService, requireService };
|
|
119
|
+
}
|
|
120
|
+
function serviceOperation(value) {
|
|
121
|
+
if (value === "install" || value === "start" || value === "stop" || value === "restart" || value === "uninstall")
|
|
122
|
+
return value;
|
|
123
|
+
throw new Error("service requires install, start, stop, restart, or uninstall.");
|
|
124
|
+
}
|
|
40
125
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|