@moinulmoin/eden 0.5.0 → 0.7.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/NOTICE CHANGED
@@ -1,15 +1,6 @@
1
1
  Eden
2
2
  Copyright 2026 Eden contributors
3
3
 
4
- Cloudflare Containers
5
- @cloudflare/containers, version 0.3.7
6
- https://github.com/cloudflare/containers
7
-
8
- Eden's generated Worker host bundle includes software from
9
- `@cloudflare/containers`, distributed under MIT OR Apache-2.0. Eden
10
- redistributes that bundled software under the Apache-2.0 option included in
11
- LICENSE.
12
-
13
4
  Workflow SDK
14
5
  @workflow/world-postgres, version 5.0.0-beta.47
15
6
  https://github.com/vercel/workflow
package/README.md CHANGED
@@ -12,15 +12,15 @@ If you already have an Eve project, start with `eden deploy`.
12
12
  Use any one of these package managers:
13
13
 
14
14
  ```sh
15
- npm install --global @moinulmoin/eden@0.5.0
15
+ npm install --global @moinulmoin/eden@0.7.0
16
16
  ```
17
17
 
18
18
  ```sh
19
- pnpm add --global @moinulmoin/eden@0.5.0
19
+ pnpm add --global @moinulmoin/eden@0.7.0
20
20
  ```
21
21
 
22
22
  ```sh
23
- bun add --global @moinulmoin/eden@0.5.0
23
+ bun add --global @moinulmoin/eden@0.7.0
24
24
  ```
25
25
 
26
26
  Then confirm the CLI is available:
@@ -39,7 +39,7 @@ Bun can install Eden, but Eden still runs on Node. Do not use `bunx --bun`.
39
39
  - Wrangler authentication:
40
40
 
41
41
  ```sh
42
- npx wrangler@4.120.0 login
42
+ npx wrangler@4.147.0 login
43
43
  ```
44
44
 
45
45
  - Docker or OrbStack with Linux/amd64 container support
@@ -126,12 +126,16 @@ Run `eden <command> --help` for command-specific options.
126
126
 
127
127
  - Deploy does not replace the Eve project's providers, databases, Workflow
128
128
  World, authentication, schedules, channels, or sandbox.
129
- - Container disk and memory are wiped when the Container sleeps. Durable
130
- state needs a project-configured, Cloudflare-reachable Workflow World such
131
- as Postgres (for example `@workflow/world-postgres`).
132
- - Schedules do not fire while the Container sleeps.
133
- - This release uses one logical Container instance (`basic`, 1 GiB) and does
134
- not promise horizontal scaling or custom domains.
129
+ - Container files survive sleep via snapshots, and image updates now carry
130
+ Eve's sandbox sessions — every conversation's files — across the image
131
+ change through the Durable Object's storage (capped at 1 GiB compressed).
132
+ The rest of `/workspace` still resets to the new image. Durable Workflow
133
+ state across updates needs a project-configured
134
+ World, such as Postgres or `@moinulmoin/eden-world-cloudflare`.
135
+ - Standard 5-field cron schedules wake the Container; unsupported cron forms
136
+ only run while it is awake.
137
+ - This release uses one logical Container instance (`standard-1`, 1/2 vCPU,
138
+ 4 GiB) and does not promise horizontal scaling or custom domains.
135
139
  - Bun is an installer only; Node remains the runtime.
136
140
 
137
141
  ## Documentation
@@ -2,7 +2,7 @@ import { type EveCliEnvironment, type EveCliExecutionRequest } from "./eve.js";
2
2
  import { type EveNodeImage, type EveProjectBuildCandidate, type EveProjectBuilder } from "./eve-packaging.js";
3
3
  import { type EveHostRequirements, type EveRuntimeCleanup, type EveRuntimeImageDiscardRequest } from "./eve-runtime-image.js";
4
4
  import { type EveRuntimeConfig, type EveRuntimeInjection, type EveRuntimeProtectedStore } from "./eve-runtime-config.js";
5
- import type { EveHostConfig } from "@moinulmoin/eden-runtime-cloudflare";
5
+ import { type EveHostConfig } from "@moinulmoin/eden-runtime-cloudflare";
6
6
  export declare const DEFAULT_EVE_HOST_REQUIREMENTS: EveHostRequirements;
7
7
  export declare const DEFAULT_EVE_NODE_IMAGE: EveNodeImage;
8
8
  export type EvePreflightCheckStatus = "passed" | "failed" | "blocked" | "skipped";
@@ -87,15 +87,18 @@ export interface EveCloudflareReadResult {
87
87
  /**
88
88
  * Provider-backed facts about the live target, read through the
89
89
  * Cloudflare API (not self-asserted response headers, which any Worker
90
- * can forge): the Container application's configured image and the
91
- * `EDEN_EVE_DEPLOYMENT_ID` plain-text var Eden stamps into every Worker
92
- * it publishes. `settingsReadable` tells the ownership resolver whether
93
- * a missing var is evidence of a foreign Worker or just an unreadable
94
- * settings call.
90
+ * can forge): the Container application's Durable Object namespace and
91
+ * the `EDEN_EVE_DEPLOYMENT_ID` plain-text var Eden stamps into every
92
+ * Worker it publishes. `settingsReadable` tells the ownership resolver
93
+ * whether a missing var is evidence of a foreign Worker or just an
94
+ * unreadable settings call.
95
95
  */
96
96
  readonly providerEvidence?: {
97
- readonly containerImage?: string;
97
+ readonly containerApplicationId?: string;
98
+ readonly containerSchedulingPolicy?: string;
99
+ readonly containerNamespaceId?: string;
98
100
  readonly workerDeploymentId?: string;
101
+ readonly workerContainerNamespaceId?: string;
99
102
  readonly settingsReadable?: boolean;
100
103
  };
101
104
  };
@@ -249,19 +252,20 @@ export interface EvePreflightOptions {
249
252
  readonly destroyCloudflareRead?: EveDestroyCloudflareReadRunner;
250
253
  readonly deleteWorker?: EveWorkerDeleteRunner;
251
254
  readonly deleteContainer?: EveContainerDeleteRunner;
252
- readonly deleteRegistryImage?: EveRegistryImageDeleteRunner;
255
+ readonly deleteRegistryRepository?: EveRegistryRepositoryDeleteRunner;
253
256
  }
254
257
  export interface EveDestroyTargetRead {
255
258
  readonly workerExists: boolean;
256
259
  readonly containerApplicationId?: string;
257
260
  readonly accountId?: string;
258
261
  /**
259
- * Subset of the request's owned registry image tags (`repository:tag`)
260
- * still present in the managed registry. `undefined` means the reader
261
- * could not enumerate the registry; destroy then relies on the exact
262
- * delete outcomes only.
262
+ * Every `repository:tag` ref still present in the managed registry whose
263
+ * repository is one of the request's owned repositories — including the
264
+ * `rootfs-snapshot-*`/`rootfs-set-*` tags container snapshots create.
265
+ * `undefined` means the reader could not enumerate the registry; destroy
266
+ * then relies on the exact delete outcomes only.
263
267
  */
264
- readonly registryImagesPresent?: readonly string[];
268
+ readonly registryTagsPresent?: readonly string[];
265
269
  }
266
270
  export type EveDestroyCloudflareReadRunner = (request: EveDestroyCloudflareReadRequest) => EveDestroyTargetRead | Promise<EveDestroyTargetRead>;
267
271
  export type EveWorkerDeleteRunner = (request: {
@@ -270,15 +274,15 @@ export type EveWorkerDeleteRunner = (request: {
270
274
  export type EveContainerDeleteRunner = (request: {
271
275
  readonly applicationId: string;
272
276
  }) => "deleted" | "absent" | "indeterminate" | Promise<"deleted" | "absent" | "indeterminate">;
273
- export type EveRegistryImageDeleteRunner = (request: {
274
- readonly image: string;
277
+ export type EveRegistryRepositoryDeleteRunner = (request: {
278
+ readonly repository: string;
275
279
  }) => "deleted" | "absent" | "indeterminate" | Promise<"deleted" | "absent" | "indeterminate">;
276
280
  export type EveRuntimeConfigLoader = (path: string, cwd: string) => EveRuntimeConfig | Promise<EveRuntimeConfig>;
277
281
  export interface EveDestroyCloudflareReadRequest {
278
282
  readonly workerName: string;
279
283
  readonly containerApplicationName: string;
280
- /** Exact `repository:tag` image refs recorded for this target. */
281
- readonly registryImages?: readonly string[];
284
+ /** Registry repository names this target provably owns. */
285
+ readonly registryRepositories?: readonly string[];
282
286
  }
283
287
  /**
284
288
  * Container applications in the account that belong to this exact target.
@@ -288,7 +292,6 @@ export interface EveDestroyCloudflareReadRequest {
288
292
  export declare function exactTargetContainerEntries(value: unknown, name: string): readonly {
289
293
  readonly id: string;
290
294
  readonly name: string;
291
- readonly image?: string;
292
295
  }[] | undefined;
293
296
  export declare function runEveControlPlane(request: EveCliExecutionRequest, options?: EvePreflightOptions): Promise<void>;
294
297
  export interface EveDestroyOutcome {