@moinulmoin/eden 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/eve.d.ts ADDED
@@ -0,0 +1,49 @@
1
+ export declare const EVE_CLI_COMMANDS: readonly ["preflight", "deploy", "destroy"];
2
+ export type EveCliCommand = (typeof EVE_CLI_COMMANDS)[number];
3
+ export type EveCliEnvironment = "preview" | "production";
4
+ export interface EveCliInvocation {
5
+ readonly kind: "invocation";
6
+ readonly command: EveCliCommand;
7
+ readonly projectRoot: string;
8
+ readonly environment: EveCliEnvironment;
9
+ readonly name: string;
10
+ readonly envFile?: string;
11
+ }
12
+ export interface EveCliHelp {
13
+ readonly kind: "help";
14
+ readonly scope: EveCliCommand;
15
+ }
16
+ export type ParsedEveInvocation = EveCliHelp | EveCliInvocation;
17
+ export interface EveCliExecutionRequest {
18
+ readonly command: EveCliCommand;
19
+ readonly cwd: string;
20
+ readonly projectRoot: string;
21
+ readonly environment: EveCliEnvironment;
22
+ readonly name: string;
23
+ /**
24
+ * The path is intentionally opaque at this boundary. The deployment-safety
25
+ * layer is the only owner allowed to open or parse its contents.
26
+ */
27
+ readonly envFile?: string;
28
+ }
29
+ export type EveCliRunner = (request: EveCliExecutionRequest) => void | Promise<void>;
30
+ export interface EveCliDiagnostic {
31
+ readonly code: string;
32
+ readonly message: string;
33
+ readonly source?: string;
34
+ }
35
+ export declare class EveCliError extends Error {
36
+ readonly code: string;
37
+ readonly source: string | undefined;
38
+ readonly diagnostics: readonly EveCliDiagnostic[];
39
+ constructor(options: {
40
+ readonly code: string;
41
+ readonly message: string;
42
+ readonly source?: string;
43
+ readonly diagnostics?: readonly EveCliDiagnostic[];
44
+ });
45
+ }
46
+ export declare const EVE_USAGE = "Usage: eden <preflight|deploy|destroy> [options]\n\nEden Deploy commands:\n preflight Build and inspect a local Eve candidate without remote mutation\n deploy Deploy the selected Eve project to the exact named target\n destroy Remove the exact owned Eve target\n\nEvery Deploy command requires --project, --env, and --name.\n--env accepts only preview or production.\n--env-file is accepted only by preflight and deploy.\nEden Agent authoring remains available through the separate eden agent namespace.\n\nOptions:\n --help Show this help\n";
47
+ export declare function eveHelpText(scope: EveCliHelp["scope"]): string;
48
+ export declare function parseEveArguments(args: readonly string[]): ParsedEveInvocation;
49
+ //# sourceMappingURL=eve.d.ts.map
package/dist/eve.js ADDED
@@ -0,0 +1,234 @@
1
+ export const EVE_CLI_COMMANDS = [
2
+ "preflight",
3
+ "deploy",
4
+ "destroy",
5
+ ];
6
+ export class EveCliError extends Error {
7
+ code;
8
+ source;
9
+ diagnostics;
10
+ constructor(options) {
11
+ super(options.message);
12
+ this.name = "EveCliError";
13
+ this.code = options.code;
14
+ this.source = options.source;
15
+ this.diagnostics = options.diagnostics ?? [];
16
+ }
17
+ }
18
+ const EVE_NAME_PATTERN = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/u;
19
+ export const EVE_USAGE = `Usage: eden <preflight|deploy|destroy> [options]
20
+
21
+ Eden Deploy commands:
22
+ preflight Build and inspect a local Eve candidate without remote mutation
23
+ deploy Deploy the selected Eve project to the exact named target
24
+ destroy Remove the exact owned Eve target
25
+
26
+ Every Deploy command requires --project, --env, and --name.
27
+ --env accepts only preview or production.
28
+ --env-file is accepted only by preflight and deploy.
29
+ Eden Agent authoring remains available through the separate eden agent namespace.
30
+
31
+ Options:
32
+ --help Show this help
33
+ `;
34
+ const EVE_COMMAND_USAGE = {
35
+ preflight: `Usage: eden preflight --project <path> --env <preview|production> --name <name> [--env-file <path>]
36
+
37
+ Build and inspect an immutable local Eve candidate. Preflight is read-only toward remote resources.
38
+
39
+ Options:
40
+ --project <path> Required canonical Eve project root
41
+ --env <environment> Required preview or production target
42
+ --name <name> Required exact target name
43
+ --env-file <path> Optional opaque runtime environment file
44
+ --help Show this help
45
+ `,
46
+ deploy: `Usage: eden deploy --project <path> --env <preview|production> --name <name> [--env-file <path>]
47
+
48
+ Deploy the selected Eve project to one exact target after host checks pass.
49
+
50
+ Options:
51
+ --project <path> Required canonical Eve project root
52
+ --env <environment> Required preview or production target
53
+ --name <name> Required exact target name
54
+ --env-file <path> Optional opaque runtime environment file
55
+ --help Show this help
56
+ `,
57
+ destroy: `Usage: eden destroy --project <path> --env <preview|production> --name <name>
58
+
59
+ Destroy only the exact owned Eve target after ownership verification.
60
+
61
+ Options:
62
+ --project <path> Required canonical Eve project root
63
+ --env <environment> Required preview or production target
64
+ --name <name> Required exact target name
65
+ --help Show this help
66
+ `,
67
+ };
68
+ function eveError(code, message, source) {
69
+ return new EveCliError({
70
+ code,
71
+ message,
72
+ ...(source === undefined ? {} : { source }),
73
+ });
74
+ }
75
+ function parseOptionValue(args, index, option) {
76
+ const value = args[index + 1];
77
+ if (value === undefined ||
78
+ value.length === 0 ||
79
+ value.startsWith("-")) {
80
+ throw eveError("EVE_OPTION_VALUE_MISSING", `The ${option} option requires a value.`);
81
+ }
82
+ return { value, nextIndex: index + 1 };
83
+ }
84
+ function parseProjectValue(value) {
85
+ if (value.length === 0) {
86
+ throw eveError("EVE_PROJECT_INVALID", "The --project option requires a non-empty path.");
87
+ }
88
+ return value;
89
+ }
90
+ function parseEnvironmentValue(value) {
91
+ if (value === "preview" || value === "production")
92
+ return value;
93
+ throw eveError("EVE_ENV_INVALID", "The --env option must be preview or production.");
94
+ }
95
+ function parseNameValue(value) {
96
+ if (!EVE_NAME_PATTERN.test(value)) {
97
+ throw eveError("EVE_NAME_INVALID", "The --name option must be a lowercase alphanumeric target name with optional dashes.");
98
+ }
99
+ return value;
100
+ }
101
+ function parseEnvFileValue(value) {
102
+ if (value.length === 0) {
103
+ throw eveError("EVE_ENV_FILE_INVALID", "The --env-file option requires a non-empty path.");
104
+ }
105
+ return value;
106
+ }
107
+ function parseCommand(value) {
108
+ if (value === "preflight" ||
109
+ value === "deploy" ||
110
+ value === "destroy") {
111
+ return value;
112
+ }
113
+ throw eveError("EVE_COMMAND_UNKNOWN", `Unknown Eve command "${value ?? ""}".`);
114
+ }
115
+ export function eveHelpText(scope) {
116
+ return EVE_COMMAND_USAGE[scope].trimEnd();
117
+ }
118
+ export function parseEveArguments(args) {
119
+ const command = parseCommand(args[0]);
120
+ if (args.length === 2 &&
121
+ (args[1] === "--help" || args[1] === "-h")) {
122
+ return { kind: "help", scope: command };
123
+ }
124
+ let projectRoot;
125
+ let environment;
126
+ let name;
127
+ let envFile;
128
+ let help = false;
129
+ for (let index = 1; index < args.length; index += 1) {
130
+ const argument = args[index];
131
+ if (argument === undefined) {
132
+ throw eveError("EVE_ARGUMENT_UNKNOWN", "The Eve command contains an invalid argument.");
133
+ }
134
+ if (argument === "--help" || argument === "-h") {
135
+ help = true;
136
+ continue;
137
+ }
138
+ if (argument === "--project") {
139
+ if (projectRoot !== undefined) {
140
+ throw eveError("EVE_PROJECT_REPEATED", "The --project option may be supplied only once.");
141
+ }
142
+ const parsed = parseOptionValue(args, index, "--project");
143
+ projectRoot = parseProjectValue(parsed.value);
144
+ index = parsed.nextIndex;
145
+ continue;
146
+ }
147
+ if (argument.startsWith("--project=")) {
148
+ if (projectRoot !== undefined) {
149
+ throw eveError("EVE_PROJECT_REPEATED", "The --project option may be supplied only once.");
150
+ }
151
+ projectRoot = parseProjectValue(argument.slice("--project=".length));
152
+ continue;
153
+ }
154
+ if (argument === "--env") {
155
+ if (environment !== undefined) {
156
+ throw eveError("EVE_ENV_REPEATED", "The --env option may be supplied only once.");
157
+ }
158
+ const parsed = parseOptionValue(args, index, "--env");
159
+ environment = parseEnvironmentValue(parsed.value);
160
+ index = parsed.nextIndex;
161
+ continue;
162
+ }
163
+ if (argument.startsWith("--env=")) {
164
+ if (environment !== undefined) {
165
+ throw eveError("EVE_ENV_REPEATED", "The --env option may be supplied only once.");
166
+ }
167
+ environment = parseEnvironmentValue(argument.slice("--env=".length));
168
+ continue;
169
+ }
170
+ if (argument === "--name") {
171
+ if (name !== undefined) {
172
+ throw eveError("EVE_NAME_REPEATED", "The --name option may be supplied only once.");
173
+ }
174
+ const parsed = parseOptionValue(args, index, "--name");
175
+ name = parseNameValue(parsed.value);
176
+ index = parsed.nextIndex;
177
+ continue;
178
+ }
179
+ if (argument.startsWith("--name=")) {
180
+ if (name !== undefined) {
181
+ throw eveError("EVE_NAME_REPEATED", "The --name option may be supplied only once.");
182
+ }
183
+ name = parseNameValue(argument.slice("--name=".length));
184
+ continue;
185
+ }
186
+ if (argument === "--env-file") {
187
+ if (command === "destroy") {
188
+ throw eveError("EVE_ENV_FILE_UNSUPPORTED", "The --env-file option is supported only by eden preflight and eden deploy.");
189
+ }
190
+ if (envFile !== undefined) {
191
+ throw eveError("EVE_ENV_FILE_REPEATED", "The --env-file option may be supplied only once.");
192
+ }
193
+ const parsed = parseOptionValue(args, index, "--env-file");
194
+ envFile = parseEnvFileValue(parsed.value);
195
+ index = parsed.nextIndex;
196
+ continue;
197
+ }
198
+ if (argument.startsWith("--env-file=")) {
199
+ if (command === "destroy") {
200
+ throw eveError("EVE_ENV_FILE_UNSUPPORTED", "The --env-file option is supported only by eden preflight and eden deploy.");
201
+ }
202
+ if (envFile !== undefined) {
203
+ throw eveError("EVE_ENV_FILE_REPEATED", "The --env-file option may be supplied only once.");
204
+ }
205
+ envFile = parseEnvFileValue(argument.slice("--env-file=".length));
206
+ continue;
207
+ }
208
+ if (argument.startsWith("-")) {
209
+ throw eveError("EVE_OPTION_UNKNOWN", "The Eve command contains an unknown option.");
210
+ }
211
+ throw eveError("EVE_ARGUMENT_UNKNOWN", "The Eve command does not accept positional arguments.");
212
+ }
213
+ if (help) {
214
+ return { kind: "help", scope: command };
215
+ }
216
+ if (projectRoot === undefined) {
217
+ throw eveError("EVE_PROJECT_REQUIRED", "The --project option is required for every Eve command.");
218
+ }
219
+ if (environment === undefined) {
220
+ throw eveError("EVE_ENV_REQUIRED", "The --env option is required for every Eve command.");
221
+ }
222
+ if (name === undefined) {
223
+ throw eveError("EVE_NAME_REQUIRED", "The --name option is required for every Eve command.");
224
+ }
225
+ return {
226
+ kind: "invocation",
227
+ command,
228
+ projectRoot,
229
+ environment,
230
+ name,
231
+ ...(envFile === undefined ? {} : { envFile }),
232
+ };
233
+ }
234
+ //# sourceMappingURL=eve.js.map
@@ -0,0 +1,196 @@
1
+ #!/usr/bin/env -S node --
2
+ import type { EdenCompilerResult } from "@moinulmoin/eden-compiler";
3
+ import { type EveCliExecutionRequest } from "./eve.js";
4
+ import { type EvePreflightOptions } from "./eve-control-plane.js";
5
+ export { EVE_CLI_COMMANDS, EVE_USAGE, EveCliError, eveHelpText, parseEveArguments, } from "./eve.js";
6
+ export { EvePackagingError, buildEveProjectSnapshot, createDockerEveProjectBuilder, revalidateEveProjectCandidateInputs, } from "./eve-packaging.js";
7
+ export { EVE_RESERVED_HOST_VARIABLES, EVE_START_COMMAND, EveRuntimeConfig, EveRuntimeConfigError, loadEveRuntimeConfig, parseEveRuntimeConfig, prepareEveRuntimeInjection, readEveRuntimeConfig, redactEveRuntimeOutput, } from "./eve-runtime-config.js";
8
+ export type { EveReservedHostVariable, EveRuntimeConfigErrorCode, EveRuntimeInjection, EveRuntimeInjectionMode, EveRuntimeInjectionOptions, EveRuntimeInputIdentity, EveRuntimeProtectedPutRequest, EveRuntimeProtectedPutResult, EveRuntimeProtectedStore, EveStartProcessRequest, RedactedRuntimeConfigSeam, } from "./eve-runtime-config.js";
9
+ export { buildEveRuntimeImage, revalidateEveRuntimeCandidate, validateEveHostRequirements, } from "./eve-runtime-image.js";
10
+ export type { EveCliCommand, EveCliEnvironment, EveCliExecutionRequest, EveCliHelp, EveCliInvocation, EveCliRunner, ParsedEveInvocation, } from "./eve.js";
11
+ export type { EveNodeImage, EvePackagingCheck, EvePackagingCode, EveProjectBuilder, EveProjectBuilderRequest, EveProjectBuilderResult, EveProjectBuildCandidate, EveProjectFile, EveProjectImage, EveProjectInputManifest, EveProjectOutput, EveProjectPackagingResult, EveProjectRuntime, EveProjectSnapshot, EveProjectSnapshotOptions, EveProjectToolchain, EveRuntimeConfigExclusion, } from "./eve-packaging.js";
12
+ export type { EveHostRequirements, EveRuntimeClosure, EveRuntimeClosureFile, EveRuntimeCleanup, EveRuntimeImage, EveRuntimeImageMetadata, EveRuntimeImageRequest, EveRuntimeImageResult, EveRuntimeNativeModule, EveRuntimeStatus, } from "./eve-runtime-image.js";
13
+ export { DEFAULT_EVE_HOST_REQUIREMENTS, DEFAULT_EVE_NODE_IMAGE, runEveControlPlane, runEveDestroy, } from "./eve-control-plane.js";
14
+ export type { EveCloudflareReadRequest, EveCloudflareReadResult, EveCloudflareReadRunner, EveCloudflareTargetState, EveContainerDeleteRunner, EveDeploymentCompensationRequest, EveDeploymentCompensationRunner, EveDeploymentHealthRequest, EveDeploymentHealthResult, EveDeploymentHealthRunner, EveDeploymentIdentity, EveDeploymentIdentityProof, EveDeploymentMetadata, EveDeploymentPublicationRequest, EveDeploymentPublicationResult, EveDeploymentPublicationRunner, EveDeploymentStatus, EveDestroyCloudflareReadRequest, EveDestroyCloudflareReadRunner, EveDestroyOutcome, EveDestroyTargetRead, EveImagePublicationRequest, EveImagePublicationResult, EveImagePublicationRunner, EvePreflightCandidate, EvePreflightCheck, EvePreflightCheckStatus, EvePreflightOptions, EvePreflightResult, EvePreflightRuntimeEvidence, EvePreflightRuntimeRunner, EvePreflightRuntimeRunnerRequest, EveRuntimeConfigLoader, EveWorkerDeleteRunner, } from "./eve-control-plane.js";
15
+ export declare const EDEN_CLI_COMMANDS: readonly ["preflight", "deploy", "destroy", "agent"];
16
+ export type EdenCliCommand = (typeof EDEN_CLI_COMMANDS)[number];
17
+ export declare const EDEN_AGENT_COMMANDS: readonly ["init", "dev", "build", "deploy"];
18
+ export type EdenAgentCommand = (typeof EDEN_AGENT_COMMANDS)[number];
19
+ export declare const EDEN_LOCAL_HOST: "127.0.0.1";
20
+ export declare const EDEN_LOCAL_PORT: 8797;
21
+ export declare const EDEN_LOCAL_INSPECTOR_HOST: "127.0.0.1";
22
+ export declare const EDEN_LOCAL_INSPECTOR_PORT: 9297;
23
+ export interface EdenCliDryRunRequest {
24
+ readonly cwd: string;
25
+ readonly configPath: string;
26
+ readonly originalConfigPath: string;
27
+ readonly args: readonly string[];
28
+ }
29
+ export interface EdenCliDryRunResult {
30
+ readonly exitCode: number;
31
+ readonly stdout: string;
32
+ readonly stderr: string;
33
+ }
34
+ export interface EdenCliDryRunHandle {
35
+ readonly process: EdenCliProcess;
36
+ readonly result: Promise<EdenCliDryRunResult>;
37
+ }
38
+ export type EdenCliRemoteCommandKind = "secret-put" | "secret-delete" | "deploy" | "delete";
39
+ export interface EdenCliRemoteCommandRequest {
40
+ readonly kind: EdenCliRemoteCommandKind;
41
+ readonly cwd: string;
42
+ readonly args: readonly string[];
43
+ readonly stdin?: string;
44
+ }
45
+ export interface EdenCliRemoteCommandResult {
46
+ readonly exitCode: number;
47
+ readonly stdout: string;
48
+ readonly stderr: string;
49
+ }
50
+ export interface EdenCliRemoteCommandHandle {
51
+ readonly process: EdenCliProcess;
52
+ readonly result: Promise<EdenCliRemoteCommandResult>;
53
+ }
54
+ export type EdenCliRemoteCommandReturn = EdenCliRemoteCommandResult | EdenCliRemoteCommandHandle | Promise<EdenCliRemoteCommandResult | EdenCliRemoteCommandHandle>;
55
+ export interface EdenCliRemoteValidationRequest {
56
+ readonly cwd: string;
57
+ readonly environment: "preview" | "production";
58
+ readonly workerName: string;
59
+ readonly url: string;
60
+ readonly expectedGeneration: {
61
+ readonly generationId: string;
62
+ readonly bundleDigest: string;
63
+ readonly manifestVersion: string;
64
+ readonly runtimeVersion: string;
65
+ readonly agentBundleVersion: string;
66
+ readonly protocolVersion: string;
67
+ readonly schemaVersion: number;
68
+ readonly toolNames: readonly string[];
69
+ };
70
+ }
71
+ export interface EdenCliRemoteValidationResult {
72
+ readonly ok: boolean;
73
+ readonly code?: string;
74
+ readonly message?: string;
75
+ }
76
+ export interface EdenCliProcessRequest {
77
+ readonly command: string;
78
+ /**
79
+ * Arguments needed to invoke the executable directly. The package shim is a
80
+ * shell script on POSIX and discards custom argv0 markers, so the default
81
+ * runner supplies the real Node entrypoint here.
82
+ */
83
+ readonly commandArgs?: readonly string[];
84
+ readonly args: readonly string[];
85
+ readonly cwd: string;
86
+ readonly env: Readonly<Record<string, string | undefined>>;
87
+ readonly processIdentity?: string;
88
+ readonly readiness?: readonly {
89
+ readonly host: string;
90
+ readonly port: number;
91
+ }[];
92
+ }
93
+ export type EdenCliProcessIdentity = {
94
+ readonly marker: string;
95
+ readonly pid: number;
96
+ readonly pgid: number;
97
+ readonly lstart: string;
98
+ };
99
+ export interface EdenCliProcessExit {
100
+ readonly exitCode: number | null;
101
+ readonly signal: NodeJS.Signals | null;
102
+ }
103
+ export interface EdenCliProcess {
104
+ readonly pid: number;
105
+ /**
106
+ * A process-start identity captured by the process runner immediately after
107
+ * spawn. PID alone is never sufficient to authorize cleanup.
108
+ */
109
+ readonly identity?: EdenCliProcessIdentity | Promise<EdenCliProcessIdentity | undefined>;
110
+ readonly startIdentity?: string | Promise<string | undefined>;
111
+ readonly exited: Promise<EdenCliProcessExit>;
112
+ readonly ready?: Promise<void>;
113
+ terminate(signal?: NodeJS.Signals): Promise<void>;
114
+ }
115
+ export interface EdenCliProcessRunner {
116
+ spawn(request: EdenCliProcessRequest): EdenCliProcess;
117
+ }
118
+ export interface EdenCliBuildProjectRequest {
119
+ readonly projectRoot: string;
120
+ readonly outputDirectory: string;
121
+ }
122
+ export type EdenCliBuildProjectRunner = (request: EdenCliBuildProjectRequest) => Promise<EdenCompilerResult>;
123
+ export interface EdenCliRuntimeGeneration {
124
+ readonly generationId: string;
125
+ readonly bundleDigest: string;
126
+ readonly manifestVersion: string;
127
+ readonly runtimeVersion: string;
128
+ readonly agentBundleVersion: string;
129
+ readonly protocolVersion: string;
130
+ readonly schemaVersion: number;
131
+ readonly toolNames: readonly string[];
132
+ }
133
+ export interface EdenCliRuntimeGenerationProofRequest {
134
+ readonly process: EdenCliProcess | undefined;
135
+ readonly generation: EdenCliRuntimeGeneration;
136
+ readonly signal: AbortSignal;
137
+ }
138
+ export type EdenCliRuntimeGenerationProof = "authenticated-fetch" | ((request: EdenCliRuntimeGenerationProofRequest) => boolean | Promise<boolean>);
139
+ export type EdenRuntimePublicationBoundary = "before-runtime-entry-publish" | "after-runtime-entry-publish" | "before-runtime-config-publish" | "after-runtime-config-publish" | "after-runtime-ready" | "before-runtime-rollback" | "after-runtime-rollback";
140
+ export type EdenDeploymentBoundary = "before-compatibility-dry-run" | "before-remote-runner-invocation" | "after-remote-runner-preflight" | "after-remote-final-read" | "after-compatibility-dry-run" | "before-secret-provision" | "after-secret-provision" | "before-deploy" | "after-deploy" | "before-remote-validation" | "after-remote-validation";
141
+ export interface EdenCliRunOptions {
142
+ readonly cwd?: string;
143
+ readonly stdout?: (line: string) => void;
144
+ readonly stderr?: (line: string) => void;
145
+ /**
146
+ * Eve execution is a separate control-plane seam. Agent runners never
147
+ * receive an Eve invocation, and the default path fails closed.
148
+ */
149
+ readonly eveRunner?: (request: EveCliExecutionRequest) => void | Promise<void>;
150
+ /**
151
+ * Finite local control-plane seams for the built-in Eve preflight path.
152
+ * Runtime values and remote-provider mutations never cross this boundary.
153
+ */
154
+ readonly eveControlPlane?: EvePreflightOptions;
155
+ readonly initPublicationHook?: (boundary: EdenInitPublicationBoundary, target?: string) => void | Promise<void>;
156
+ readonly buildPublicationHook?: (boundary: EdenBuildPublicationBoundary) => void | Promise<void>;
157
+ readonly dryRunRunner?: (request: EdenCliDryRunRequest) => EdenCliDryRunResult | EdenCliDryRunHandle | Promise<EdenCliDryRunResult>;
158
+ readonly processRunner?: EdenCliProcessRunner;
159
+ /**
160
+ * Internal finite-test override for the compiler invocation. The returned
161
+ * promise is still owned by the same cancellation/quiescence barrier as the
162
+ * production compiler call.
163
+ */
164
+ readonly buildProjectRunner?: EdenCliBuildProjectRunner;
165
+ /**
166
+ * Internal finite-test override for the authenticated local runtime
167
+ * readiness probe. Production callers use the bounded default.
168
+ */
169
+ readonly runtimeReadinessTimeoutMs?: number;
170
+ /**
171
+ * Internal lifecycle injection for finite callers that need to stop dev
172
+ * without emitting a process-global signal.
173
+ */
174
+ readonly stopSignal?: AbortSignal;
175
+ /**
176
+ * An injected process runner must provide this explicit proof seam. The
177
+ * string selects Eden's bearer-authenticated /eden/v1/info probe; a callback
178
+ * may provide an equivalent authenticated proof for a finite fixture.
179
+ */
180
+ readonly runtimeGenerationProof?: EdenCliRuntimeGenerationProof;
181
+ readonly runtimePublicationHook?: (boundary: EdenRuntimePublicationBoundary) => void | Promise<void>;
182
+ readonly deploymentBoundaryHook?: (boundary: EdenDeploymentBoundary) => void | Promise<void>;
183
+ readonly remoteCommandRunner?: (request: EdenCliRemoteCommandRequest) => EdenCliRemoteCommandReturn;
184
+ readonly remoteValidationRunner?: (request: EdenCliRemoteValidationRequest) => Promise<EdenCliRemoteValidationResult>;
185
+ readonly remoteBearerSecret?: string;
186
+ }
187
+ export type EdenInitPublicationBoundary = "after-lock-acquire" | "after-state-write" | "after-stage-write" | "after-target-validation" | "after-init-link" | "before-init-destination-recheck" | "before-init-cleanup" | "after-init-cleanup-observation" | "after-init-cleanup" | "before-init-link" | "before-target-publish" | "after-target-publish" | "before-complete";
188
+ export type EdenBuildPublicationBoundary = "before-canonical-prepare" | "after-canonical-prepare" | "before-generation-publish" | "after-generation-publish" | "before-current-promotion" | "after-current-promotion";
189
+ export declare function stopEdenDev(options?: {
190
+ readonly cwd?: string;
191
+ readonly projectRoot?: string;
192
+ }): Promise<number>;
193
+ export declare function runEdenCli(args: readonly string[], options?: EdenCliRunOptions): Promise<number>;
194
+ export declare function main(args?: readonly string[]): Promise<number>;
195
+ export declare function isEdenCliCommand(value: string): value is EdenCliCommand;
196
+ //# sourceMappingURL=index.d.ts.map