@fentaris/edge 0.2.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.
@@ -0,0 +1,162 @@
1
+ import { EDGE_PROTOCOL_VERSION, edgeError, validateLaunchRecipe, validateSetupSchema, } from "@fentaris/core";
2
+ /**
3
+ * Reconciles cloud desired state and bridges correlated MCP traffic to the
4
+ * locally governed workload supervisor.
5
+ */
6
+ export class EdgeAgentRuntime {
7
+ options;
8
+ connection;
9
+ desiredVersion = 0;
10
+ reconcileQueue = Promise.resolve();
11
+ statuses = new Map();
12
+ constructor(options) {
13
+ this.options = options;
14
+ }
15
+ connected(connection) {
16
+ this.connection = connection;
17
+ }
18
+ async handle(message) {
19
+ this.assertTrustedRoute(message);
20
+ switch (message.kind) {
21
+ case "edge.desired-state":
22
+ await this.enqueueReconcile(message);
23
+ return;
24
+ case "mcp.request":
25
+ await this.send(await this.options.supervisor.handleRequest(message));
26
+ return;
27
+ case "mcp.cancel":
28
+ this.options.supervisor.handleCancel(message);
29
+ return;
30
+ }
31
+ }
32
+ async disconnected() {
33
+ this.connection = undefined;
34
+ await this.options.supervisor.shutdown();
35
+ }
36
+ async clearLocalState() {
37
+ await this.options.supervisor.shutdown();
38
+ await this.options.setup.clear();
39
+ this.desiredVersion = 0;
40
+ this.reconcileQueue = Promise.resolve();
41
+ this.statuses.clear();
42
+ }
43
+ async summary() {
44
+ let readyDeployments = 0;
45
+ let blockedDeployments = 0;
46
+ for (const status of this.statuses.values()) {
47
+ if (status === "ready")
48
+ readyDeployments += 1;
49
+ else
50
+ blockedDeployments += 1;
51
+ }
52
+ return {
53
+ desiredDeployments: this.statuses.size,
54
+ readyDeployments,
55
+ blockedDeployments,
56
+ };
57
+ }
58
+ async reportCapabilityManifest(deploymentId, recipeDigest, manifest) {
59
+ const connection = this.requireConnection();
60
+ const message = {
61
+ version: EDGE_PROTOCOL_VERSION,
62
+ kind: "edge.capability-manifest",
63
+ ...connection.claims,
64
+ deploymentId,
65
+ recipeDigest,
66
+ ...manifest,
67
+ };
68
+ await connection.send(message);
69
+ }
70
+ async reconcile(message) {
71
+ if (message.desiredVersion < this.desiredVersion) {
72
+ throw edgeError("EDGE_PROTOCOL", "Received stale edge desired state.", {
73
+ details: { received: message.desiredVersion, current: this.desiredVersion },
74
+ });
75
+ }
76
+ const deployments = message.deployments.map((deployment) => {
77
+ const recipe = validateLaunchRecipe(deployment.recipe);
78
+ const diagnostics = validateSetupSchema(deployment.setupSchema)
79
+ .filter((diagnostic) => diagnostic.severity === "error");
80
+ if (diagnostics.length > 0) {
81
+ throw edgeError("EDGE_PROTOCOL", "Desired deployment contains an invalid setup schema.", {
82
+ details: { deploymentId: deployment.deploymentId, diagnostics },
83
+ });
84
+ }
85
+ if (recipe.setupSchemaVersion !== undefined
86
+ && recipe.setupSchemaVersion !== deployment.setupSchema.version) {
87
+ throw edgeError("EDGE_PROTOCOL", "Launch recipe and setup schema versions do not match.", {
88
+ details: { deploymentId: deployment.deploymentId },
89
+ });
90
+ }
91
+ return {
92
+ requirement: {
93
+ deploymentId: deployment.deploymentId,
94
+ desiredStateVersion: message.desiredVersion,
95
+ recipe,
96
+ schema: deployment.setupSchema,
97
+ },
98
+ };
99
+ });
100
+ const results = await this.options.supervisor.reconcile(deployments);
101
+ this.desiredVersion = message.desiredVersion;
102
+ this.statuses = new Map(results
103
+ .filter((result) => result.status !== "removed")
104
+ .map((result) => [result.deploymentId, result.status === "ready" ? "ready" : "blocked"]));
105
+ const connection = this.requireConnection();
106
+ for (const deployment of message.deployments) {
107
+ const state = await this.options.setup.status(deployment.deploymentId);
108
+ if (!state)
109
+ continue;
110
+ await connection.send({
111
+ version: EDGE_PROTOCOL_VERSION,
112
+ kind: "edge.setup-status",
113
+ ...connection.claims,
114
+ deploymentId: state.deploymentId,
115
+ recipeDigest: state.recipeDigest,
116
+ setupSchemaVersion: state.setupSchemaVersion,
117
+ status: state.status,
118
+ grantRefs: state.grantRefs,
119
+ });
120
+ }
121
+ const blockedDeploymentIds = results
122
+ .filter((result) => result.status === "blocked")
123
+ .map((result) => result.deploymentId);
124
+ await connection.send({
125
+ version: EDGE_PROTOCOL_VERSION,
126
+ kind: "edge.desired-state.ack",
127
+ ...connection.claims,
128
+ desiredVersion: message.desiredVersion,
129
+ status: blockedDeploymentIds.length === 0 ? "applied" : "blocked",
130
+ ...(blockedDeploymentIds.length > 0 ? { blockedDeploymentIds } : {}),
131
+ });
132
+ }
133
+ enqueueReconcile(message) {
134
+ const pending = this.reconcileQueue.then(() => this.reconcile(message));
135
+ this.reconcileQueue = pending.catch(() => undefined);
136
+ return pending;
137
+ }
138
+ assertTrustedRoute(message) {
139
+ const claims = this.requireConnection().claims;
140
+ if (message.kind === "mcp.request" || message.kind === "mcp.cancel") {
141
+ if (message.route.edgeNodeId !== claims.edgeNodeId
142
+ || message.route.connectionGeneration !== claims.connectionGeneration) {
143
+ throw edgeError("EDGE_PROTOCOL", "Control-plane MCP message contains stale routing claims.");
144
+ }
145
+ return;
146
+ }
147
+ if (message.tenantId !== claims.tenantId
148
+ || message.edgeNodeId !== claims.edgeNodeId
149
+ || message.connectionGeneration !== claims.connectionGeneration) {
150
+ throw edgeError("EDGE_PROTOCOL", "Control-plane message contains stale routing claims.");
151
+ }
152
+ }
153
+ send(message) {
154
+ return this.requireConnection().send(message);
155
+ }
156
+ requireConnection() {
157
+ if (!this.connection)
158
+ throw edgeError("EDGE_UNAVAILABLE", "Edge runtime is not connected.");
159
+ return this.connection;
160
+ }
161
+ }
162
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ import { type LaunchRecipe, type SetupField, type SetupFieldAccess, type SetupSchema, type EdgeTelemetry } from "@fentaris/core";
2
+ import type { CredentialStore, JsonStore } from "./platform.js";
3
+ export interface DesiredSetupRequirement {
4
+ readonly deploymentId: string;
5
+ readonly desiredStateVersion: number;
6
+ readonly recipe: LaunchRecipe;
7
+ readonly schema: SetupSchema;
8
+ }
9
+ export type LocalSetupStatus = "pending" | "ready" | "denied" | "revoked";
10
+ export interface LocalSetupState {
11
+ readonly deploymentId: string;
12
+ readonly desiredStateVersion: number;
13
+ readonly recipeDigest: string;
14
+ readonly setupSchemaVersion: number;
15
+ readonly status: LocalSetupStatus;
16
+ readonly grantRefs: Readonly<Record<string, string>>;
17
+ readonly fieldDigests: Readonly<Record<string, string>>;
18
+ readonly missingFields: readonly string[];
19
+ }
20
+ export interface SetupFieldResponse {
21
+ readonly approved: boolean;
22
+ readonly value?: unknown;
23
+ }
24
+ export interface LocalSetupProvider {
25
+ approveWorkload(requirement: DesiredSetupRequirement): Promise<boolean>;
26
+ collectField(field: SetupField, requirement: DesiredSetupRequirement): Promise<SetupFieldResponse>;
27
+ }
28
+ export interface TerminalSetupPrompter {
29
+ confirm(message: string): Promise<boolean>;
30
+ input(message: string, options?: {
31
+ secret?: boolean;
32
+ }): Promise<string>;
33
+ }
34
+ /** Interactive terminal prompter that suppresses local secret echo on a TTY. */
35
+ export declare class NodeTerminalSetupPrompter implements TerminalSetupPrompter {
36
+ confirm(message: string): Promise<boolean>;
37
+ input(message: string, options?: {
38
+ secret?: boolean;
39
+ }): Promise<string>;
40
+ }
41
+ /** Initial terminal setup provider with explicit workload and resource consent. */
42
+ export declare class TerminalSetupProvider implements LocalSetupProvider {
43
+ private readonly prompt;
44
+ constructor(prompt: TerminalSetupPrompter);
45
+ approveWorkload(requirement: DesiredSetupRequirement): Promise<boolean>;
46
+ collectField(field: SetupField): Promise<SetupFieldResponse>;
47
+ }
48
+ export type LocalGrantRecord = {
49
+ readonly id: string;
50
+ readonly deploymentId: string;
51
+ readonly fieldName: string;
52
+ readonly fieldDigest: string;
53
+ readonly kind: "folder" | "file";
54
+ readonly canonicalPath: string;
55
+ readonly access: SetupFieldAccess;
56
+ readonly createdAt: number;
57
+ } | {
58
+ readonly id: string;
59
+ readonly deploymentId: string;
60
+ readonly fieldName: string;
61
+ readonly fieldDigest: string;
62
+ readonly kind: "secret";
63
+ readonly createdAt: number;
64
+ } | {
65
+ readonly id: string;
66
+ readonly deploymentId: string;
67
+ readonly fieldName: string;
68
+ readonly fieldDigest: string;
69
+ readonly kind: "string" | "boolean" | "number" | "select";
70
+ readonly value: string | boolean | number;
71
+ readonly createdAt: number;
72
+ };
73
+ export interface LocalGrantDatabase {
74
+ readonly grants: Readonly<Record<string, LocalGrantRecord>>;
75
+ readonly states: Readonly<Record<string, LocalSetupState>>;
76
+ readonly approvedRecipeDigests: readonly string[];
77
+ }
78
+ export interface CompiledLocalLaunchPlan {
79
+ readonly deploymentId: string;
80
+ readonly recipeDigest: string;
81
+ readonly command: string;
82
+ readonly args: readonly string[];
83
+ readonly env: Readonly<Record<string, string>>;
84
+ }
85
+ export interface LocalSetupManagerOptions {
86
+ readonly store: JsonStore<LocalGrantDatabase>;
87
+ readonly credentials: CredentialStore;
88
+ readonly provider: LocalSetupProvider;
89
+ readonly now?: () => number;
90
+ readonly grantId?: () => string;
91
+ readonly onGrantRevoked?: (grantId: string, deploymentIds: readonly string[]) => void | Promise<void>;
92
+ readonly telemetry?: EdgeTelemetry;
93
+ }
94
+ /** Local setup/grant reconciliation and launch-plan compilation. */
95
+ export declare class LocalSetupManager {
96
+ private readonly options;
97
+ private readonly now;
98
+ private readonly grantId;
99
+ constructor(options: LocalSetupManagerOptions);
100
+ ingest(requirement: DesiredSetupRequirement): Promise<LocalSetupState>;
101
+ status(deploymentId: string): Promise<LocalSetupState | undefined>;
102
+ /** Delete every local grant, setup state, and protected setup secret. */
103
+ clear(): Promise<void>;
104
+ compileLaunchPlan(requirement: DesiredSetupRequirement): Promise<CompiledLocalLaunchPlan>;
105
+ /** Resolve a child path while rechecking canonical containment and access. */
106
+ resolveGrantedPath(grantId: string, childPath?: string, requestedAccess?: SetupFieldAccess): Promise<string>;
107
+ revokeGrant(grantId: string): Promise<void>;
108
+ private createGrant;
109
+ private resolveGrantValue;
110
+ private deleteGrant;
111
+ private database;
112
+ private save;
113
+ private emitTransition;
114
+ }
115
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}