@fentaris/edge 0.2.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/agent.d.ts +8 -3
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +99 -17
  4. package/dist/agent.js.map +1 -1
  5. package/dist/cli.d.ts +7 -1
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +90 -5
  8. package/dist/cli.js.map +1 -1
  9. package/dist/daemon.d.ts +67 -0
  10. package/dist/daemon.d.ts.map +1 -0
  11. package/dist/daemon.js +244 -0
  12. package/dist/daemon.js.map +1 -0
  13. package/dist/enrollment.d.ts +12 -1
  14. package/dist/enrollment.d.ts.map +1 -1
  15. package/dist/enrollment.js +27 -3
  16. package/dist/enrollment.js.map +1 -1
  17. package/dist/index.d.ts +12 -4
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +58 -3
  20. package/dist/index.js.map +1 -1
  21. package/dist/installation.d.ts +232 -0
  22. package/dist/installation.d.ts.map +1 -0
  23. package/dist/installation.js +897 -0
  24. package/dist/installation.js.map +1 -0
  25. package/dist/localControl.d.ts +50 -0
  26. package/dist/localControl.d.ts.map +1 -0
  27. package/dist/localControl.js +148 -0
  28. package/dist/localControl.js.map +1 -0
  29. package/dist/platform.d.ts +3 -0
  30. package/dist/platform.d.ts.map +1 -1
  31. package/dist/platform.js +19 -8
  32. package/dist/platform.js.map +1 -1
  33. package/dist/redaction.d.ts +2 -0
  34. package/dist/redaction.d.ts.map +1 -1
  35. package/dist/redaction.js +8 -0
  36. package/dist/redaction.js.map +1 -1
  37. package/dist/runtime.d.ts +27 -2
  38. package/dist/runtime.d.ts.map +1 -1
  39. package/dist/runtime.js +189 -15
  40. package/dist/runtime.js.map +1 -1
  41. package/dist/service.d.ts +96 -0
  42. package/dist/service.d.ts.map +1 -0
  43. package/dist/service.js +144 -0
  44. package/dist/service.js.map +1 -0
  45. package/dist/setup.d.ts +1 -0
  46. package/dist/setup.d.ts.map +1 -1
  47. package/dist/setup.js +9 -2
  48. package/dist/setup.js.map +1 -1
  49. package/package.json +3 -3
package/dist/agent.d.ts CHANGED
@@ -1,6 +1,7 @@
1
- import { EdgeEnrollmentService, type DeviceAuthorizationRequest, type EdgeConnection, type EdgeConnectionClient } from "./enrollment.js";
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,qBAAqB,EAGrB,KAAK,0BAA0B,EAC/B,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,EAChC,MAAM,cAAc,CAAC;AAatB,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;CAC7C;AAED,yEAAyE;AACzE,qBAAa,SAAS;IAGR,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,MAAM,CAAC,CAAiB;gBAEH,OAAO,EAAE,gBAAgB;IAEhD,KAAK;IAML,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBxB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAK1B,MAAM,IAAI,OAAO,CAAC,eAAe,CAAC;IAoBlC,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;CAgI9F;AAED,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,CA0C9E"}
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;IAoBxB,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;CAwJ9F;AAYD,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,6 +34,7 @@ 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
40
  void active.closed?.finally(() => {
@@ -44,6 +46,18 @@ export class EdgeAgent {
44
46
  await this.disconnect();
45
47
  await this.connect();
46
48
  }
49
+ async waitUntilDisconnected() {
50
+ const active = this.active;
51
+ if (!active)
52
+ return;
53
+ if (active.closed)
54
+ await active.closed;
55
+ else
56
+ await new Promise(() => undefined);
57
+ }
58
+ isConnected() {
59
+ return this.active !== undefined;
60
+ }
47
61
  async status() {
48
62
  const config = await this.options.platform.configStore.load();
49
63
  const summary = await this.options.runtimeSummary?.summary() ?? {
@@ -63,6 +77,9 @@ export class EdgeAgent {
63
77
  ...(this.active ? { connectedAt: this.active.connectedAt } : {}),
64
78
  };
65
79
  }
80
+ installationControl() {
81
+ return this.options.runtime?.installationControl?.();
82
+ }
66
83
  async disconnect() {
67
84
  const active = this.active;
68
85
  this.active = undefined;
@@ -88,7 +105,7 @@ export class WebSocketEdgeConnectionClient {
88
105
  }
89
106
  const socket = this.webSocketFactory(url.toString());
90
107
  const nonce = randomBytes(32).toString("base64url");
91
- const proof = sign(null, Buffer.from(`${input.edgeNodeId}.${nonce}`), input.privateKey).toString("base64url");
108
+ const proof = sign(null, Buffer.from(`${input.edgeNodeId}.${nonce}.edge.hello`), input.privateKey).toString("base64url");
92
109
  let ack;
93
110
  let heartbeat;
94
111
  let runtimeDisconnected = false;
@@ -136,12 +153,10 @@ export class WebSocketEdgeConnectionClient {
136
153
  kind: "edge.hello",
137
154
  tenantId: input.tenantId,
138
155
  edgeNodeId: input.edgeNodeId,
139
- supportedVersions: [EDGE_PROTOCOL_VERSION],
156
+ supportedVersions: EDGE_SUPPORTED_PROTOCOL_VERSIONS,
140
157
  nonce,
141
158
  proof,
142
159
  deviceCredential: input.deviceCredential,
143
- accessToken: input.accessToken,
144
- publicKey: input.publicKey,
145
160
  }));
146
161
  }, { once: true });
147
162
  socket.addEventListener("message", (event) => {
@@ -156,25 +171,51 @@ export class WebSocketEdgeConnectionClient {
156
171
  throw edgeError("EDGE_PROTOCOL", "Edge gateway acknowledged a different device identity.");
157
172
  }
158
173
  ack = message;
174
+ const publishPresence = async () => {
175
+ if (!ack || ack.protocolVersion < 2)
176
+ return;
177
+ const snapshot = await input.runtime?.presenceSnapshot?.() ?? { readiness: [] };
178
+ const reportedAt = Date.now();
179
+ await send({
180
+ version: ack.protocolVersion,
181
+ kind: "edge.presence",
182
+ tenantId: ack.tenantId,
183
+ edgeNodeId: ack.edgeNodeId,
184
+ connectionGeneration: ack.connectionGeneration,
185
+ observed: input.observedFacts ?? defaultObservedFacts(reportedAt),
186
+ ...snapshot,
187
+ reportedAt,
188
+ });
189
+ };
159
190
  await input.runtime?.connected({
191
+ protocolVersion: message.protocolVersion,
160
192
  claims: {
161
193
  tenantId: message.tenantId,
162
194
  edgeNodeId: message.edgeNodeId,
163
195
  connectionGeneration: message.connectionGeneration,
164
196
  },
165
197
  send,
198
+ publishPresence,
166
199
  });
200
+ await publishPresence();
167
201
  heartbeat = setInterval(() => {
168
202
  if (!ack || socket.readyState !== WebSocket.OPEN)
169
203
  return;
170
- void send({
171
- version: EDGE_PROTOCOL_VERSION,
172
- kind: "edge.heartbeat",
173
- tenantId: ack.tenantId,
174
- edgeNodeId: ack.edgeNodeId,
175
- connectionGeneration: ack.connectionGeneration,
176
- sentAt: Date.now(),
177
- }).catch(() => socket.close(1011, "edge heartbeat failed"));
204
+ void (async () => {
205
+ const snapshot = ack && ack.protocolVersion >= 2
206
+ ? await input.runtime?.presenceSnapshot?.() ?? { readiness: [] }
207
+ : undefined;
208
+ await send({
209
+ version: ack.protocolVersion,
210
+ kind: "edge.heartbeat",
211
+ tenantId: ack.tenantId,
212
+ edgeNodeId: ack.edgeNodeId,
213
+ connectionGeneration: ack.connectionGeneration,
214
+ sentAt: Date.now(),
215
+ ...(snapshot?.capacity ? { capacity: snapshot.capacity } : {}),
216
+ ...(snapshot?.load ? { load: snapshot.load } : {}),
217
+ });
218
+ })().catch(() => socket.close(1011, "edge heartbeat failed"));
178
219
  }, 10_000);
179
220
  heartbeat.unref?.();
180
221
  resolve(message);
@@ -184,6 +225,7 @@ export class WebSocketEdgeConnectionClient {
184
225
  throw edgeError("EDGE_PROTOCOL", "Unexpected edge handshake frame after authentication.");
185
226
  }
186
227
  if (message.kind !== "edge.desired-state"
228
+ && message.kind !== "edge.installation-control"
187
229
  && message.kind !== "mcp.request"
188
230
  && message.kind !== "mcp.cancel") {
189
231
  throw edgeError("EDGE_PROTOCOL", "Unexpected message kind from the edge control plane.");
@@ -216,16 +258,27 @@ export class WebSocketEdgeConnectionClient {
216
258
  };
217
259
  }
218
260
  }
261
+ function defaultObservedFacts(reportedAt = Date.now()) {
262
+ return {
263
+ platform: operatingSystem(),
264
+ architecture: arch(),
265
+ agentVersion: "0.1.0",
266
+ executionFeatures: ["mcp-stdio"],
267
+ reportedAt,
268
+ };
269
+ }
219
270
  export function createDefaultEdgeAgent(options) {
220
271
  const platform = options.platform ?? nodeEdgePlatform();
221
272
  const enrollment = new EdgeEnrollmentService({
222
273
  platform,
274
+ controlPlaneUrl: options.controlPlaneUrl,
223
275
  authorization: new HttpDeviceAuthorizationProvider(options.controlPlaneUrl),
224
276
  enrollment: new HttpEdgeEnrollmentClient(options.controlPlaneUrl),
225
277
  callbacks: { onVerification: options.onVerification },
226
278
  hostnameLabel: hostname,
227
279
  });
228
280
  const runtimeRef = {};
281
+ const installationRef = {};
229
282
  const setup = new LocalSetupManager({
230
283
  store: new ProtectedJsonStore(path.join(platform.paths.dataDir, "grants.json")),
231
284
  credentials: platform.credentialStore,
@@ -234,6 +287,11 @@ export function createDefaultEdgeAgent(options) {
234
287
  const activeSupervisor = supervisor;
235
288
  await Promise.all(deploymentIds.map((deploymentId) => activeSupervisor.blockDeployment(deploymentId)));
236
289
  },
290
+ resolveInstalledArtifact: (reference) => {
291
+ if (!installationRef.current)
292
+ throw edgeError("EDGE_SETUP_REQUIRED", "Managed installation is not initialized.");
293
+ return installationRef.current.resolveArtifact(reference);
294
+ },
237
295
  });
238
296
  const supervisor = new EdgeWorkloadSupervisor({
239
297
  setup,
@@ -249,7 +307,31 @@ export function createDefaultEdgeAgent(options) {
249
307
  return runtimeRef.current.reportCapabilityManifest(deploymentId, recipeDigest, manifest);
250
308
  },
251
309
  });
252
- const runtime = new EdgeAgentRuntime({ setup, supervisor });
310
+ const installationState = new ProtectedInstallationState(new ProtectedJsonStore(path.join(platform.paths.dataDir, "installations.json")));
311
+ const installationConsent = new InstallationConsentManager(installationState);
312
+ const installationRunner = new BoundedInstallerRunner(commandIsolationAdapter({
313
+ executable: process.env.FENTARIS_EDGE_INSTALLATION_SANDBOX,
314
+ }));
315
+ const installationSource = new ManagedInstallationSourceResolver({
316
+ credentials: platform.credentialStore,
317
+ local: { resolve: (grantRef) => setup.resolveGrantedPath(grantRef) },
318
+ });
319
+ const installation = new InstallationCoordinator({
320
+ state: installationState,
321
+ consent: installationConsent,
322
+ lock: new InMemoryInstallationMutationLock(),
323
+ providers: createDefaultInstallationProviders({ source: installationSource, runner: installationRunner }),
324
+ installationRoot: path.join(platform.paths.dataDir, "managed-installations"),
325
+ stagingRoot: path.join(platform.paths.dataDir, "installation-staging"),
326
+ terminateProcess: async (pid) => {
327
+ try {
328
+ process.kill(process.platform === "win32" ? pid : -pid, "SIGKILL");
329
+ }
330
+ catch { /* already stopped */ }
331
+ },
332
+ });
333
+ installationRef.current = installation;
334
+ const runtime = new EdgeAgentRuntime({ setup, supervisor, installation });
253
335
  runtimeRef.current = runtime;
254
336
  return new EdgeAgent({
255
337
  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":"AAAA,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,SAAS,CAAC;AACtE,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,qBAAqB,EACrB,gCAAgC,EAChC,SAAS,EACT,gCAAgC,EAChC,wBAAwB,GAKzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,qBAAqB,EACrB,+BAA+B,EAC/B,wBAAwB,GAKzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,GAEjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,gBAAgB,GAKjB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,GAEtB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,iCAAiC,EACjC,0BAA0B,EAC1B,uBAAuB,EACvB,kCAAkC,GAEnC,MAAM,mBAAmB,CAAC;AAsB3B,yEAAyE;AACzE,MAAM,OAAO,SAAS;IAGS;IAFrB,MAAM,CAAkB;IAEhC,YAA6B,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAE1D,KAAK,CAAC,KAAK,CAAC,WAA6B,EAAE;QACzC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC;QAC1E,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;YAClD,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,UAAU;YACzC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,UAAU;YACzC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,QAAQ;YACrC,gBAAgB,EAAE,WAAW,CAAC,gBAAgB;YAC9C,WAAW,EAAE,WAAW,CAAC,WAAW;YACpC,SAAS,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS;YACxC,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU;YAC1C,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,IAAI,oBAAoB,EAAE;SACxE,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE;YAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM;gBAAE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,IAAI,MAAM,CAAC,MAAM;YAAE,MAAM,MAAM,CAAC,MAAM,CAAC;;YAClC,MAAM,IAAI,OAAO,CAAO,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAC9D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,EAAE,IAAI;YAC9D,kBAAkB,EAAE,CAAC;YACrB,gBAAgB,EAAE,CAAC;YACnB,kBAAkB,EAAE,CAAC;SACtB,CAAC;QACF,OAAO;YACL,GAAG,OAAO;YACV,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC;YACzB,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;YAC/B,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;gBACX,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjE,CAAC;IACJ,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,mBAAmB,EAAE,EAAE,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,MAAM,MAAM,EAAE,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,CAAC;QAChD,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;IACrD,CAAC;CACF;AAED,6EAA6E;AAC7E,MAAM,OAAO,6BAA6B;IACX;IAA7B,YAA6B,mBAA+C,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC;QAA1E,qBAAgB,GAAhB,gBAAgB,CAA0D;IAAG,CAAC;IAE3G,KAAK,CAAC,OAAO,CAAC,KAAqD;QACjE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtC,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,KAAK,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YACrF,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,aAAa,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACzH,IAAI,GAAoC,CAAC;QACzC,IAAI,SAAqD,CAAC;QAC1D,IAAI,mBAAmB,GAAG,KAAK,CAAC;QAChC,IAAI,aAA0B,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAC3C,aAAa,GAAG,OAAO,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,MAAM,iBAAiB,GAAG,KAAK,IAAI,EAAE;YACnC,IAAI,mBAAmB;gBAAE,OAAO;YAChC,mBAAmB,GAAG,IAAI,CAAC;YAC3B,IAAI,SAAS;gBAAE,aAAa,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC;YACtC,CAAC;oBAAS,CAAC;gBACT,aAAa,EAAE,CAAC;YAClB,CAAC;QACH,CAAC,CAAC;QACF,MAAM,IAAI,GAAG,KAAK,EAAE,OAAyB,EAAE,EAAE;YAC/C,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;gBACzC,MAAM,SAAS,CAAC,kBAAkB,EAAE,oCAAoC,CAAC,CAAC;YAC5E,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC;QACF,IAAI,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QACnC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzE,MAAM,IAAI,GAAG,CAAC,KAAc,EAAE,EAAE;gBAC9B,MAAM,CAAC,KAAK,CAAC,CAAC;gBACd,IAAI,CAAC;oBACH,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC;gBAC/C,CAAC;gBAAC,MAAM,CAAC;oBACP,KAAK,iBAAiB,EAAE,CAAC;gBAC3B,CAAC;YACH,CAAC,CAAC;YACF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBACpC,IAAI,CAAC,GAAG;oBAAE,MAAM,CAAC,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC,CAAC;YACjF,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE;gBACnC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;oBACzB,OAAO,EAAE,qBAAqB;oBAC9B,IAAI,EAAE,YAAY;oBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,iBAAiB,EAAE,gCAAgC;oBACnD,KAAK;oBACL,KAAK;oBACL,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;iBACzC,CAAC,CAAC,CAAC;YACN,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACnB,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC3C,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;oBACtC,IAAI,CAAC;wBACH,MAAM,OAAO,GAAG,wBAAwB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;wBAC7D,IAAI,CAAC,GAAG,EAAE,CAAC;4BACT,IAAI,OAAO,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;gCACtC,MAAM,SAAS,CAAC,eAAe,EAAE,6CAA6C,CAAC,CAAC;4BAClF,CAAC;4BACD,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,EAAE,CAAC;gCACnF,MAAM,SAAS,CAAC,eAAe,EAAE,wDAAwD,CAAC,CAAC;4BAC7F,CAAC;4BACD,GAAG,GAAG,OAAO,CAAC;4BACd,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE;gCACjC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,eAAe,GAAG,CAAC;oCAAE,OAAO;gCAC5C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;gCAChF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gCAC9B,MAAM,IAAI,CAAC;oCACT,OAAO,EAAE,GAAG,CAAC,eAAwB;oCACrC,IAAI,EAAE,eAAe;oCACrB,QAAQ,EAAE,GAAG,CAAC,QAAQ;oCACtB,UAAU,EAAE,GAAG,CAAC,UAAU;oCAC1B,oBAAoB,EAAE,GAAG,CAAC,oBAAoB;oCAC9C,QAAQ,EAAE,KAAK,CAAC,aAAa,IAAI,oBAAoB,CAAC,UAAU,CAAC;oCACjE,GAAG,QAAQ;oCACX,UAAU;iCACX,CAAC,CAAC;4BACL,CAAC,CAAC;4BACF,MAAM,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC;gCAC7B,eAAe,EAAE,OAAO,CAAC,eAAe;gCACxC,MAAM,EAAE;oCACN,QAAQ,EAAE,OAAO,CAAC,QAAQ;oCAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;oCAC9B,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;iCACnD;gCACD,IAAI;gCACJ,eAAe;6BAChB,CAAC,CAAC;4BACH,MAAM,eAAe,EAAE,CAAC;4BACxB,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;gCAC3B,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI;oCAAE,OAAO;gCACzD,KAAK,CAAC,KAAK,IAAI,EAAE;oCACf,MAAM,QAAQ,GAAG,GAAG,IAAI,GAAG,CAAC,eAAe,IAAI,CAAC;wCAC9C,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;wCAChE,CAAC,CAAC,SAAS,CAAC;oCACd,MAAM,IAAI,CAAC;wCACT,OAAO,EAAE,GAAI,CAAC,eAAe;wCAC7B,IAAI,EAAE,gBAAgB;wCACtB,QAAQ,EAAE,GAAI,CAAC,QAAQ;wCACvB,UAAU,EAAE,GAAI,CAAC,UAAU;wCAC3B,oBAAoB,EAAE,GAAI,CAAC,oBAAoB;wCAC/C,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE;wCAClB,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wCAC9D,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qCACnD,CAAC,CAAC;gCACL,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC,CAAC;4BAChE,CAAC,EAAE,MAAM,CAAC,CAAC;4BACX,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;4BACpB,OAAO,CAAC,OAAO,CAAC,CAAC;4BACjB,OAAO;wBACT,CAAC;wBACD,IAAI,OAAO,CAAC,IAAI,KAAK,gBAAgB,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;4BACvE,MAAM,SAAS,CAAC,eAAe,EAAE,uDAAuD,CAAC,CAAC;wBAC5F,CAAC;wBACD,IACE,OAAO,CAAC,IAAI,KAAK,oBAAoB;+BAClC,OAAO,CAAC,IAAI,KAAK,2BAA2B;+BAC5C,OAAO,CAAC,IAAI,KAAK,aAAa;+BAC9B,OAAO,CAAC,IAAI,KAAK,YAAY,EAChC,CAAC;4BACD,MAAM,SAAS,CAAC,eAAe,EAAE,sDAAsD,CAAC,CAAC;wBAC3F,CAAC;wBACD,MAAM,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,OAAuE,CAAC,CAAC;oBACvG,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,IAAI,CAAC,KAAK,CAAC,CAAC;oBACd,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBACpC,KAAK,iBAAiB,EAAE,CAAC;gBACzB,IAAI,CAAC,GAAG;oBAAE,MAAM,CAAC,SAAS,CAAC,kBAAkB,EAAE,2CAA2C,CAAC,CAAC,CAAC;YAC/F,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,MAAM,gBAAgB,GAAG,MAAM,aAAa,CAAC;QAC7C,OAAO;YACL,WAAW,EAAE,gBAAgB,CAAC,UAAU;YACxC,MAAM;YACN,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBACzC,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;oBAC3C,KAAK,iBAAiB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACvC,OAAO;gBACT,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrB,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;YACzC,CAAC,CAAC;SACH,CAAC;IACJ,CAAC;CACF;AAED,SAAS,oBAAoB,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE;IACnD,OAAO;QACL,QAAQ,EAAE,eAAe,EAAE;QAC3B,YAAY,EAAE,IAAI,EAAE;QACpB,YAAY,EAAE,OAAO;QACrB,iBAAiB,EAAE,CAAC,WAAW,CAAC;QAChC,UAAU;KACX,CAAC;AACJ,CAAC;AAUD,MAAM,UAAU,sBAAsB,CAAC,OAA4B;IACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,gBAAgB,EAAE,CAAC;IACxD,MAAM,UAAU,GAAG,IAAI,qBAAqB,CAAC;QAC3C,QAAQ;QACR,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,aAAa,EAAE,IAAI,+BAA+B,CAAC,OAAO,CAAC,eAAe,CAAC;QAC3E,UAAU,EAAE,IAAI,wBAAwB,CAAC,OAAO,CAAC,eAAe,CAAC;QACjE,SAAS,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE;QACrD,aAAa,EAAE,QAAQ;KACxB,CAAC,CAAC;IACH,MAAM,UAAU,GAAmC,EAAE,CAAC;IACtD,MAAM,eAAe,GAA0C,EAAE,CAAC;IAClE,MAAM,KAAK,GAAG,IAAI,iBAAiB,CAAC;QAClC,KAAK,EAAE,IAAI,kBAAkB,CAAqB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACnG,WAAW,EAAE,QAAQ,CAAC,eAAe;QACrC,QAAQ,EAAE,IAAI,qBAAqB,CAAC,IAAI,yBAAyB,EAAE,CAAC;QACpE,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE;YAChD,MAAM,gBAAgB,GAAG,UAAU,CAAC;YACpC,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,gBAAgB,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACzG,CAAC;QACD,wBAAwB,EAAE,CAAC,SAAS,EAAE,EAAE;YACtC,IAAI,CAAC,eAAe,CAAC,OAAO;gBAAE,MAAM,SAAS,CAAC,qBAAqB,EAAE,0CAA0C,CAAC,CAAC;YACjH,OAAO,eAAe,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAC5D,CAAC;KACF,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,IAAI,sBAAsB,CAAC;QAC5C,KAAK;QACL,OAAO,EAAE,IAAI,wBAAwB,EAAE;QACvC,gBAAgB,EAAE,IAAI,yBAAyB,CAAC;YAC9C,WAAW,EAAE,OAAO,CAAC,mBAAmB,IAAI,eAAe,CAAC,mCAAmC,CAAC;YAChG,QAAQ,EAAE,OAAO,CAAC,gBAAgB,IAAI,eAAe,CAAC,gCAAgC,CAAC;SACxF,CAAC;QACF,wBAAwB,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE;YACjE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;gBACxB,MAAM,SAAS,CAAC,kBAAkB,EAAE,kCAAkC,CAAC,CAAC;YAC1E,CAAC;YACD,OAAO,UAAU,CAAC,OAAO,CAAC,wBAAwB,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC3F,CAAC;KACF,CAAC,CAAC;IACH,MAAM,iBAAiB,GAAG,IAAI,0BAA0B,CACtD,IAAI,kBAAkB,CAA4B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAC3G,CAAC;IACF,MAAM,mBAAmB,GAAG,IAAI,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;IAC9E,MAAM,kBAAkB,GAAG,IAAI,sBAAsB,CAAC,uBAAuB,CAAC;QAC5E,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,kCAAkC;KAC3D,CAAC,CAAC,CAAC;IACJ,MAAM,kBAAkB,GAAG,IAAI,iCAAiC,CAAC;QAC/D,WAAW,EAAE,QAAQ,CAAC,eAAe;QACrC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE;KACrE,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,IAAI,uBAAuB,CAAC;QAC/C,KAAK,EAAE,iBAAiB;QACxB,OAAO,EAAE,mBAAmB;QAC5B,IAAI,EAAE,IAAI,gCAAgC,EAAE;QAC5C,SAAS,EAAE,kCAAkC,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;QACzG,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC;QAC5E,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,sBAAsB,CAAC;QACtE,gBAAgB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC9B,IAAI,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC;QAC7G,CAAC;KACF,CAAC,CAAC;IACH,eAAe,CAAC,OAAO,GAAG,YAAY,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;IAC1E,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;IAC7B,OAAO,IAAI,SAAS,CAAC;QACnB,UAAU;QACV,UAAU,EAAE,IAAI,6BAA6B,EAAE;QAC/C,QAAQ;QACR,OAAO;QACP,cAAc,EAAE,OAAO;KACxB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,KAAK,CAAC;AACxE,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC7B,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC"}
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 declare function runEdgeCli(argv: readonly string[], agent: EdgeAgent, io: EdgeCliIo): Promise<number>;
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;AAG5C,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAoC1G"}
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(await agent.status())));
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":"AACA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAOhE,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAuB,EAAE,KAAgB,EAAE,EAAa;IACvF,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;IACpC,IAAI,CAAC;QACH,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;gBACnC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;oBACpC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU;oBACzD,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU;oBACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ;oBAChC,SAAS,EAAE,IAAI;iBAChB,CAAC,CAAC,CAAC,CAAC;gBACL,OAAO,CAAC,CAAC;YACX,CAAC;YACD,KAAK,QAAQ;gBACX,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC9D,OAAO,CAAC,CAAC;YACX,KAAK,YAAY;gBACf,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC;gBACzB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;gBACnD,OAAO,CAAC,CAAC;YACX,KAAK,QAAQ;gBACX,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC;gBACrB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;gBAC9C,OAAO,CAAC,CAAC;YACX,KAAK,KAAK;gBACR,EAAE,CAAC,KAAK,CAAC,4FAA4F,CAAC,CAAC;gBACvG,OAAO,CAAC,CAAC;YACX;gBACE,EAAE,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;gBAClE,OAAO,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import type { EdgeAgent, EdgeAgentStatus } from "./agent.js";
2
+ import type { JsonStore } from "./platform.js";
3
+ export type EdgePersistentLifecycleState = "stopped" | "starting" | "connecting" | "reconciling" | "ready" | "backoff" | "terminal" | "stopping";
4
+ export interface EdgePersistentStatus {
5
+ readonly state: EdgePersistentLifecycleState;
6
+ readonly updatedAt: number;
7
+ readonly attempt: number;
8
+ readonly connectedSince?: number;
9
+ readonly nextReconnectAt?: number;
10
+ readonly errorCategory?: "transient" | "terminal";
11
+ readonly errorCode?: string;
12
+ }
13
+ export interface EdgeSingletonLease {
14
+ release(): Promise<void>;
15
+ }
16
+ export interface EdgeSingletonLock {
17
+ acquire(): Promise<EdgeSingletonLease>;
18
+ }
19
+ /** Owner-created filesystem singleton lock for one local Edge agent. */
20
+ export declare class FileEdgeSingletonLock implements EdgeSingletonLock {
21
+ private readonly lockFile;
22
+ constructor(lockFile: string);
23
+ acquire(): Promise<EdgeSingletonLease>;
24
+ private openOwnedLock;
25
+ }
26
+ export interface EdgeReconnectPolicy {
27
+ readonly initialDelayMs?: number;
28
+ readonly maxDelayMs?: number;
29
+ readonly multiplier?: number;
30
+ readonly jitterRatio?: number;
31
+ readonly stableConnectionMs?: number;
32
+ readonly terminalRetryMs?: number;
33
+ }
34
+ export interface EdgePersistentAgentOptions {
35
+ readonly agent: EdgeAgent;
36
+ readonly lock: EdgeSingletonLock;
37
+ readonly statusStore: JsonStore<EdgePersistentStatus>;
38
+ readonly reconnect?: EdgeReconnectPolicy;
39
+ readonly now?: () => number;
40
+ readonly random?: () => number;
41
+ readonly sleep?: (ms: number, signal: AbortSignal) => Promise<void>;
42
+ }
43
+ /** Long-running supervised Edge lifecycle with safe reconnect and shutdown. */
44
+ export declare class EdgePersistentAgent {
45
+ private readonly options;
46
+ private readonly now;
47
+ private readonly random;
48
+ private readonly sleep;
49
+ private readonly reconnect;
50
+ private controller?;
51
+ private running?;
52
+ private lease?;
53
+ private reconnectRequested;
54
+ constructor(options: EdgePersistentAgentOptions);
55
+ start(): Promise<void>;
56
+ wait(): Promise<void>;
57
+ stop(): Promise<void>;
58
+ reconnectNow(): Promise<void>;
59
+ status(): Promise<EdgePersistentStatus & {
60
+ readonly agent: EdgeAgentStatus;
61
+ }>;
62
+ private runLoop;
63
+ private writeStatus;
64
+ }
65
+ export declare function classifyReconnectError(error: unknown): "transient" | "terminal";
66
+ export declare function reconnectDelay(attempt: number, policy: Required<EdgeReconnectPolicy>, random?: () => number): number;
67
+ //# sourceMappingURL=daemon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}