@fentaris/edge 0.2.1 → 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
@@ -0,0 +1,232 @@
1
+ import { type InstallationApprovalRecord, type InstallationArtifactRecord, type InstallationAttemptSummary, type InstallationDigest, type InstallationLifecycleSummary, type InstallationMutationLock, type InstallationProviderAdapter, type InstallationProviderContext, type InstallationProviderKind, type InstallationReasonCode, type InstallationRecipe, type InstallationResolvedSource, type InstallationSource, type InstalledArtifactReference, type EdgeInstallationTelemetry } from "@fentaris/core";
2
+ import type { CredentialStore, JsonStore } from "./platform.js";
3
+ export interface DurableInstallationAttempt extends InstallationAttemptSummary {
4
+ readonly deploymentId: string;
5
+ readonly desiredVersion: number;
6
+ readonly processIds?: readonly number[];
7
+ readonly diagnostics?: readonly string[];
8
+ }
9
+ export interface InstallationStateDocument {
10
+ readonly schemaVersion: 1;
11
+ readonly attempts: Readonly<Record<string, DurableInstallationAttempt>>;
12
+ readonly approvals: Readonly<Record<string, InstallationApprovalRecord>>;
13
+ readonly lifecycle: Readonly<Record<string, InstallationLifecycleSummary>>;
14
+ readonly artifacts: Readonly<Record<string, InstallationArtifactRecord>>;
15
+ readonly activePointers: Readonly<Record<string, InstallationDigest>>;
16
+ readonly retentionReferences: Readonly<Record<string, readonly InstallationDigest[]>>;
17
+ }
18
+ /** Protected durable installation state persisted atomically by the platform store. */
19
+ export declare class ProtectedInstallationState {
20
+ private readonly store;
21
+ private queue;
22
+ constructor(store: JsonStore<InstallationStateDocument>);
23
+ snapshot(): Promise<InstallationStateDocument>;
24
+ update<T>(mutation: (document: InstallationStateDocument) => readonly [InstallationStateDocument, T]): Promise<T>;
25
+ putAttempt(attempt: DurableInstallationAttempt): Promise<void>;
26
+ putApproval(approval: InstallationApprovalRecord): Promise<void>;
27
+ putLifecycle(value: InstallationLifecycleSummary): Promise<void>;
28
+ putArtifact(value: InstallationArtifactRecord): Promise<void>;
29
+ approval(digest: InstallationDigest, cleanup?: boolean): Promise<InstallationApprovalRecord | undefined>;
30
+ lifecycle(deploymentId: string): Promise<InstallationLifecycleSummary | undefined>;
31
+ artifact(digest: InstallationDigest): Promise<InstallationArtifactRecord | undefined>;
32
+ attempts(digest: InstallationDigest): Promise<readonly DurableInstallationAttempt[]>;
33
+ activate(deploymentId: string, artifact: InstallationArtifactRecord, retain: number): Promise<void>;
34
+ removeReference(deploymentId: string, digest: InstallationDigest): Promise<InstallationArtifactRecord | undefined>;
35
+ rollbackCandidate(deploymentId: string): Promise<InstallationArtifactRecord | undefined>;
36
+ clear(): Promise<void>;
37
+ }
38
+ export interface InstallationReviewModel {
39
+ readonly approvalDigest: InstallationDigest;
40
+ readonly recipeDigest: InstallationDigest;
41
+ readonly provider: InstallationProviderKind;
42
+ readonly providerDetails: Readonly<Record<string, unknown>>;
43
+ readonly source?: Readonly<Record<string, unknown>>;
44
+ readonly entrypoint?: string;
45
+ readonly interpreter?: string;
46
+ readonly arguments: readonly string[];
47
+ readonly permissions: InstallationRecipe["permissions"];
48
+ readonly outputs: InstallationRecipe["outputs"];
49
+ readonly verification: InstallationRecipe["verification"];
50
+ readonly cleanup: InstallationRecipe["cleanup"];
51
+ }
52
+ /** Build exact bounded custom-install review material without credential values. */
53
+ export declare function buildInstallationReview(recipe: InstallationRecipe, localPolicy: unknown): InstallationReviewModel;
54
+ export declare class InstallationConsentManager {
55
+ private readonly state;
56
+ private readonly now;
57
+ constructor(state: ProtectedInstallationState, now?: () => number);
58
+ review(recipe: InstallationRecipe, localPolicy: unknown): InstallationReviewModel;
59
+ decide(review: InstallationReviewModel, decision: "approved" | "denied" | "revoked", cleanup?: boolean): Promise<void>;
60
+ decision(review: InstallationReviewModel, cleanup?: boolean): Promise<InstallationApprovalRecord | undefined>;
61
+ }
62
+ export interface InstallationReviewPrompter {
63
+ present(review: InstallationReviewModel): void | Promise<void>;
64
+ confirm(message: string): Promise<boolean>;
65
+ }
66
+ /** Interactive local approval flow that presents the complete bounded review. */
67
+ export declare class TerminalInstallationConsent {
68
+ private readonly consent;
69
+ private readonly prompt;
70
+ constructor(consent: InstallationConsentManager, prompt: InstallationReviewPrompter);
71
+ reviewAndDecide(recipe: InstallationRecipe, localPolicy: unknown, cleanup?: boolean): Promise<InstallationApprovalRecord>;
72
+ }
73
+ export interface InstallationIsolationAdapter {
74
+ readonly filesystem: boolean;
75
+ readonly network: boolean;
76
+ wrap(input: InstallerRunRequest): Promise<InstallerRunRequest>;
77
+ }
78
+ /** Build an enforceable platform adapter when an approved sandbox command is configured. */
79
+ export declare function commandIsolationAdapter(options?: {
80
+ readonly platform?: NodeJS.Platform;
81
+ readonly executable?: string;
82
+ }): InstallationIsolationAdapter;
83
+ export interface InstallerRunRequest {
84
+ readonly command: string;
85
+ readonly args?: readonly string[];
86
+ readonly cwd: string;
87
+ readonly env?: Readonly<Record<string, string>>;
88
+ readonly secrets?: readonly string[];
89
+ readonly timeoutMs: number;
90
+ readonly maxOutputBytes: number;
91
+ readonly maxDiskBytes: number;
92
+ readonly allowedExecutables?: readonly string[];
93
+ readonly requireFilesystemIsolation?: boolean;
94
+ readonly requireNetworkIsolation?: boolean;
95
+ }
96
+ export interface InstallerRunResult {
97
+ readonly code: number;
98
+ readonly output: string;
99
+ readonly startedAt: number;
100
+ readonly finishedAt: number;
101
+ readonly pid?: number;
102
+ }
103
+ /** Process-tree supervised, bounded, no-elevation installer execution. */
104
+ export declare class BoundedInstallerRunner {
105
+ private readonly isolation;
106
+ private readonly now;
107
+ constructor(isolation?: InstallationIsolationAdapter, now?: () => number);
108
+ run(input: InstallerRunRequest): Promise<InstallerRunResult>;
109
+ }
110
+ export interface InstallationCommandExecutor {
111
+ run(command: string, args: readonly string[], options: {
112
+ cwd: string;
113
+ env?: Readonly<Record<string, string>>;
114
+ }): Promise<string>;
115
+ }
116
+ export declare class NodeInstallationCommandExecutor implements InstallationCommandExecutor {
117
+ private readonly runner;
118
+ constructor(runner?: BoundedInstallerRunner);
119
+ run(command: string, args: readonly string[], options: {
120
+ cwd: string;
121
+ env?: Readonly<Record<string, string>>;
122
+ }): Promise<string>;
123
+ }
124
+ export interface InstallationDownloadAdapter {
125
+ download(url: string, destination: string, credential?: string, maxBytes?: number): Promise<void>;
126
+ }
127
+ export declare class FetchInstallationDownloader implements InstallationDownloadAdapter {
128
+ download(url: string, destination: string, credential?: string, maxBytes?: number): Promise<void>;
129
+ }
130
+ /** Tar archive extraction with preflight type/path checks and post-extract containment. */
131
+ export declare class SecureTarExtractor {
132
+ private readonly commands;
133
+ constructor(commands?: InstallationCommandExecutor);
134
+ extract(archive: string, destination: string): Promise<void>;
135
+ }
136
+ export interface LocalInstallationGrantResolver {
137
+ resolve(grantRef: string): Promise<string>;
138
+ }
139
+ export interface EnterpriseInstallationResolver {
140
+ readonly adapter: string;
141
+ resolve(artifactRef: string, destination: string, credential?: string): Promise<void>;
142
+ }
143
+ /** Immutable Git/archive/inline/local/enterprise staging implementation. */
144
+ export declare class ManagedInstallationSourceResolver {
145
+ private readonly options;
146
+ constructor(options?: {
147
+ readonly commands?: InstallationCommandExecutor;
148
+ readonly downloader?: InstallationDownloadAdapter;
149
+ readonly extractor?: SecureTarExtractor;
150
+ readonly credentials?: CredentialStore;
151
+ readonly local?: LocalInstallationGrantResolver;
152
+ readonly enterprise?: readonly EnterpriseInstallationResolver[];
153
+ });
154
+ resolve(source: InstallationSource, destination: string): Promise<InstallationResolvedSource>;
155
+ private git;
156
+ private archive;
157
+ private inline;
158
+ private local;
159
+ private enterprise;
160
+ }
161
+ export interface InstallationVerificationService {
162
+ verify(recipe: InstallationRecipe, root: string): Promise<Readonly<Record<string, string>>>;
163
+ }
164
+ export declare class NodeInstallationVerificationService implements InstallationVerificationService {
165
+ verify(recipe: InstallationRecipe, root: string): Promise<Readonly<Record<string, string>>>;
166
+ }
167
+ export declare class SharedInstallationProvider implements InstallationProviderAdapter {
168
+ readonly kind: InstallationProviderKind;
169
+ private readonly source;
170
+ private readonly runner;
171
+ private readonly verifier;
172
+ constructor(kind: InstallationProviderKind, source: ManagedInstallationSourceResolver, runner: BoundedInstallerRunner, verifier?: InstallationVerificationService);
173
+ preflight(context: InstallationProviderContext): Promise<{
174
+ ready: boolean;
175
+ reasonCode?: undefined;
176
+ } | {
177
+ ready: boolean;
178
+ reasonCode: "manual-prerequisite-required";
179
+ }>;
180
+ install(context: InstallationProviderContext): Promise<void>;
181
+ verify(context: InstallationProviderContext): Promise<Readonly<Record<string, string>>>;
182
+ cleanup(context: InstallationProviderContext): Promise<void>;
183
+ }
184
+ export interface InstallationReconcileRequest {
185
+ readonly deploymentId: string;
186
+ readonly desiredVersion: number;
187
+ readonly launchDigest: string;
188
+ readonly recipe: InstallationRecipe;
189
+ readonly localPolicy?: unknown;
190
+ readonly explicitRetry?: boolean;
191
+ }
192
+ export interface InstallationCoordinatorOptions {
193
+ readonly state: ProtectedInstallationState;
194
+ readonly consent: InstallationConsentManager;
195
+ readonly lock: InstallationMutationLock;
196
+ readonly providers: ReadonlyMap<InstallationProviderKind, InstallationProviderAdapter>;
197
+ readonly installationRoot: string;
198
+ readonly stagingRoot: string;
199
+ readonly platform?: NodeJS.Platform;
200
+ readonly architecture?: string;
201
+ readonly now?: () => number;
202
+ readonly attemptId?: () => string;
203
+ readonly terminateProcess?: (pid: number) => Promise<void>;
204
+ readonly telemetry?: EdgeInstallationTelemetry;
205
+ }
206
+ /** Idempotent, crash-aware installation lifecycle coordinator. */
207
+ export declare class InstallationCoordinator {
208
+ private readonly options;
209
+ private readonly now;
210
+ private readonly attemptId;
211
+ constructor(options: InstallationCoordinatorOptions);
212
+ reconcile(request: InstallationReconcileRequest): Promise<InstallationLifecycleSummary>;
213
+ status(deploymentId: string): Promise<InstallationLifecycleSummary | undefined>;
214
+ review(recipe: InstallationRecipe, localPolicy?: unknown, cleanup?: boolean): InstallationReviewModel;
215
+ decide(recipe: InstallationRecipe, decision: "approved" | "denied" | "revoked", localPolicy?: unknown, cleanup?: boolean): Promise<InstallationApprovalRecord>;
216
+ recoverInterrupted(): Promise<readonly DurableInstallationAttempt[]>;
217
+ remove(deploymentId: string, recipe: InstallationRecipe, approveCleanup?: boolean): Promise<InstallationLifecycleSummary>;
218
+ rollback(deploymentId: string, request: InstallationReconcileRequest): Promise<InstallationLifecycleSummary>;
219
+ resolveArtifact(reference: InstalledArtifactReference): Promise<string>;
220
+ private transition;
221
+ private emit;
222
+ }
223
+ export declare function createDefaultInstallationProviders(options?: {
224
+ source?: ManagedInstallationSourceResolver;
225
+ runner?: BoundedInstallerRunner;
226
+ verifier?: InstallationVerificationService;
227
+ }): ReadonlyMap<InstallationProviderKind, InstallationProviderAdapter>;
228
+ export declare class InstallationExecutionError extends Error {
229
+ readonly reasonCode: InstallationReasonCode;
230
+ constructor(reasonCode: InstallationReasonCode, message: string);
231
+ }
232
+ //# sourceMappingURL=installation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installation.d.ts","sourceRoot":"","sources":["../src/installation.ts"],"names":[],"mappings":"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"}