niceeval 0.16.2 → 0.17.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/cli/bootstrap.cjs +7 -1
- package/dist/cli/bootstrap.cjs.map +1 -1
- package/dist/cli/project-configuration.cjs +8 -11
- package/dist/cli/project-configuration.cjs.map +1 -1
- package/dist/expect/index.cjs.map +1 -1
- package/dist/expect/index.d.cts +1 -0
- package/dist/expect/index.d.mts +1 -0
- package/dist/expect/index.d.ts +1 -0
- package/dist/experiment/host/cli/contribution.cjs +6 -11
- package/dist/experiment/host/cli/contribution.cjs.map +1 -1
- package/dist/experiment/host/cli/contribution.d.cts +0 -16
- package/dist/experiment/host/cli/contribution.d.mts +0 -16
- package/dist/experiment/host/cli/contribution.d.ts +0 -16
- package/dist/experiment/host/operations.cjs +3 -3
- package/dist/experiment/host/operations.cjs.map +1 -1
- package/dist/experiment/host/types.cjs.map +1 -1
- package/dist/experiment/host/types.d.cts +0 -4
- package/dist/experiment/host/types.d.mts +0 -4
- package/dist/experiment/host/types.d.ts +0 -4
- package/dist/fresh-import.cjs +2 -2
- package/dist/fresh-import.cjs.map +1 -1
- package/dist/fresh-import.d.cts +3 -3
- package/dist/fresh-import.d.mts +3 -3
- package/dist/fresh-import.d.ts +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/inspection/codec.cjs.map +1 -1
- package/dist/inspection/codec.d.cts +1 -1
- package/dist/inspection/codec.d.mts +1 -1
- package/dist/inspection/codec.d.ts +1 -1
- package/dist/inspection/facts.cjs +66 -9
- package/dist/inspection/facts.cjs.map +1 -1
- package/dist/inspection/facts.d.cts +4 -0
- package/dist/inspection/facts.d.mts +4 -0
- package/dist/inspection/facts.d.ts +4 -0
- package/dist/inspection/facts.js +4 -2
- package/dist/inspection/index.cjs +1 -3
- package/dist/inspection/index.cjs.map +1 -1
- package/dist/inspection/index.d.cts +1 -1
- package/dist/inspection/index.d.mts +1 -1
- package/dist/inspection/index.d.ts +1 -1
- package/dist/inspection/index.js +44 -48
- package/dist/inspection/limits.cjs +3 -1
- package/dist/inspection/limits.cjs.map +1 -1
- package/dist/inspection/limits.d.cts +2 -0
- package/dist/inspection/limits.d.mts +2 -0
- package/dist/inspection/limits.d.ts +2 -0
- package/dist/inspection/limits.js +6 -4
- package/dist/inspection/project-source.cjs +4 -1
- package/dist/inspection/project-source.cjs.map +1 -1
- package/dist/inspection/protocol.cjs +10 -18
- package/dist/inspection/protocol.cjs.map +1 -1
- package/dist/inspection/protocol.d.cts +111 -173
- package/dist/inspection/protocol.d.mts +111 -173
- package/dist/inspection/protocol.d.ts +111 -173
- package/dist/inspection/public.mjs +73 -109
- package/dist/inspection/results.cjs +12 -48
- package/dist/inspection/results.cjs.map +1 -1
- package/dist/inspection/results.d.cts +124 -122
- package/dist/inspection/results.d.mts +124 -122
- package/dist/inspection/results.d.ts +124 -122
- package/dist/inspection/results.js +16 -20
- package/dist/inspection/select.cjs +80 -117
- package/dist/inspection/select.cjs.map +1 -1
- package/dist/inspection/source.cjs +14 -15
- package/dist/inspection/source.cjs.map +1 -1
- package/dist/inspection/source.d.cts +6 -3
- package/dist/inspection/source.d.mts +6 -3
- package/dist/inspection/source.d.ts +6 -3
- package/dist/inspection/trace.cjs +1 -1
- package/dist/inspection/trace.cjs.map +1 -1
- package/dist/load-config.cjs +17 -11
- package/dist/load-config.cjs.map +1 -1
- package/dist/load-config.d.cts +3 -2
- package/dist/load-config.d.mts +3 -2
- package/dist/load-config.d.ts +3 -2
- package/dist/o11y/adapter-usage-projection.cjs +5 -1
- package/dist/o11y/adapter-usage-projection.cjs.map +1 -1
- package/dist/o11y/adapter-usage-projection.d.cts +109 -1
- package/dist/o11y/adapter-usage-projection.d.mts +109 -1
- package/dist/o11y/adapter-usage-projection.d.ts +109 -1
- package/dist/o11y/cache-read.cjs +113 -0
- package/dist/o11y/cache-read.cjs.map +1 -0
- package/dist/o11y/cache-read.d.cts +80 -0
- package/dist/o11y/cache-read.d.mts +80 -0
- package/dist/o11y/cache-read.d.ts +80 -0
- package/dist/o11y/cache-read.js +8 -0
- package/dist/o11y/cache-read.js.map +1 -0
- package/dist/o11y/eval-usage.cjs +4 -1
- package/dist/o11y/eval-usage.cjs.map +1 -1
- package/dist/o11y/eval-usage.d.cts +4 -1
- package/dist/o11y/eval-usage.d.mts +4 -1
- package/dist/o11y/eval-usage.d.ts +4 -1
- package/dist/record/host/sqlite-host.cjs +188 -53
- package/dist/record/host/sqlite-host.cjs.map +1 -1
- package/dist/record/host/sqlite-host.d.cts +37 -1
- package/dist/record/host/sqlite-host.d.mts +37 -1
- package/dist/record/host/sqlite-host.d.ts +37 -1
- package/dist/record/host/sqlite-host.js +16 -8
- package/dist/record/maintenance/runtime.cjs +3 -3
- package/dist/record/maintenance/runtime.cjs.map +1 -1
- package/dist/record/sqlite/admission-repository.cjs +18 -18
- package/dist/record/sqlite/admission-repository.cjs.map +1 -1
- package/dist/record/sqlite/case-repository.cjs +6 -6
- package/dist/record/sqlite/case-repository.cjs.map +1 -1
- package/dist/record/sqlite/coordination-repository.cjs +25 -25
- package/dist/record/sqlite/coordination-repository.cjs.map +1 -1
- package/dist/record/sqlite/current-schema.cjs +115 -111
- package/dist/record/sqlite/current-schema.cjs.map +1 -1
- package/dist/record/sqlite/current-schema.d.cts +3 -3
- package/dist/record/sqlite/current-schema.d.mts +3 -3
- package/dist/record/sqlite/current-schema.d.ts +3 -3
- package/dist/record/sqlite/database.cjs +56 -53
- package/dist/record/sqlite/database.cjs.map +1 -1
- package/dist/record/sqlite/index.cjs +3 -1
- package/dist/record/sqlite/index.cjs.map +1 -1
- package/dist/record/sqlite/index.d.cts +5 -2
- package/dist/record/sqlite/index.d.mts +5 -2
- package/dist/record/sqlite/index.d.ts +5 -2
- package/dist/record/sqlite/legacy-schema-018.cjs +443 -0
- package/dist/record/sqlite/legacy-schema-018.cjs.map +1 -0
- package/dist/record/sqlite/legacy-schema-018.d.cts +6 -0
- package/dist/record/sqlite/legacy-schema-018.d.mts +6 -0
- package/dist/record/sqlite/legacy-schema-018.d.ts +6 -0
- package/dist/record/sqlite/legacy-schema-018.js +6 -0
- package/dist/record/sqlite/legacy-schema-018.js.map +1 -0
- package/dist/record/sqlite/migration.cjs +105 -46
- package/dist/record/sqlite/migration.cjs.map +1 -1
- package/dist/record/sqlite/migration.d.cts +2 -1
- package/dist/record/sqlite/migration.d.mts +2 -1
- package/dist/record/sqlite/migration.d.ts +2 -1
- package/dist/record/sqlite/portable-capture.cjs +13 -13
- package/dist/record/sqlite/portable-capture.cjs.map +1 -1
- package/dist/record/sqlite/registry-repository.cjs +22 -22
- package/dist/record/sqlite/registry-repository.cjs.map +1 -1
- package/dist/record/sqlite/schema.cjs +10 -2
- package/dist/record/sqlite/schema.cjs.map +1 -1
- package/dist/record/sqlite/schema.d.cts +4 -1
- package/dist/record/sqlite/schema.d.mts +4 -1
- package/dist/record/sqlite/schema.d.ts +4 -1
- package/dist/record/sqlite/schema.js +20 -14
- package/dist/record/sqlite/storage-worker.cjs +1 -1
- package/dist/record/sqlite/storage-worker.cjs.map +1 -1
- package/dist/record/sqlite/storage.cjs +316 -232
- package/dist/record/sqlite/storage.cjs.map +1 -1
- package/dist/record/sqlite/storage.d.cts +10 -2
- package/dist/record/sqlite/storage.d.mts +10 -2
- package/dist/record/sqlite/storage.d.ts +10 -2
- package/dist/record/sqlite/storage.js +54 -50
- package/dist/record/sqlite/types.cjs +1 -1
- package/dist/record/sqlite/types.cjs.map +1 -1
- package/dist/record/sqlite/types.d.cts +13 -1
- package/dist/record/sqlite/types.d.mts +13 -1
- package/dist/record/sqlite/types.d.ts +13 -1
- package/dist/run/cli/contribution.cjs +17 -12
- package/dist/run/cli/contribution.cjs.map +1 -1
- package/dist/run/host/lifecycle-adapter.cjs +1 -1
- package/dist/run/host/lifecycle-adapter.cjs.map +1 -1
- package/dist/run/storage/owner-identity.cjs +78 -16
- package/dist/run/storage/owner-identity.cjs.map +1 -1
- package/dist/run/storage/owner-identity.d.cts +2 -1
- package/dist/run/storage/owner-identity.d.mts +2 -1
- package/dist/run/storage/owner-identity.d.ts +2 -1
- package/dist/run/storage/sqlite.cjs +55 -55
- package/dist/run/storage/sqlite.cjs.map +1 -1
- package/dist/runner/accept.cjs +12 -42
- package/dist/runner/accept.cjs.map +1 -1
- package/dist/runner/accept.d.cts +2 -3
- package/dist/runner/accept.d.mts +2 -3
- package/dist/runner/accept.d.ts +2 -3
- package/dist/runner/adapter-usage.cjs +2 -2
- package/dist/runner/adapter-usage.cjs.map +1 -1
- package/dist/runner/adoption.cjs +14 -26
- package/dist/runner/adoption.cjs.map +1 -1
- package/dist/runner/adoption.d.cts +5 -13
- package/dist/runner/adoption.d.mts +5 -13
- package/dist/runner/adoption.d.ts +5 -13
- package/dist/runner/adoption.js +2 -4
- package/dist/runner/record.cjs +24 -18
- package/dist/runner/record.cjs.map +1 -1
- package/dist/runner/rename-experiment.cjs +5 -7
- package/dist/runner/rename-experiment.cjs.map +1 -1
- package/dist/runner/reuse-plan.cjs +37 -18
- package/dist/runner/reuse-plan.cjs.map +1 -1
- package/dist/runner/reuse-plan.d.cts +4 -1
- package/dist/runner/reuse-plan.d.mts +4 -1
- package/dist/runner/reuse-plan.d.ts +4 -1
- package/dist/runner/setup-prefix-plan.cjs +17 -12
- package/dist/runner/setup-prefix-plan.cjs.map +1 -1
- package/dist/runner/setup-prefix-plan.d.cts +0 -2
- package/dist/runner/setup-prefix-plan.d.mts +0 -2
- package/dist/runner/setup-prefix-plan.d.ts +0 -2
- package/dist/runner/setup-prefix-plan.js +8 -12
- package/dist/sandbox/backend.cjs +10 -1
- package/dist/sandbox/backend.cjs.map +1 -1
- package/dist/sandbox/backend.d.cts +16 -8
- package/dist/sandbox/backend.d.mts +16 -8
- package/dist/sandbox/backend.d.ts +16 -8
- package/dist/sandbox/backend.js +28 -26
- package/dist/sandbox/docker.cjs +7 -1
- package/dist/sandbox/docker.cjs.map +1 -1
- package/dist/sandbox/e2b-cache-repository.cjs +13 -3
- package/dist/sandbox/e2b-cache-repository.cjs.map +1 -1
- package/dist/sandbox/e2b-cache-repository.d.cts +3 -0
- package/dist/sandbox/e2b-cache-repository.d.mts +3 -0
- package/dist/sandbox/e2b-cache-repository.d.ts +3 -0
- package/dist/sandbox/e2b-cache-repository.js +16 -12
- package/dist/sandbox/e2b.cjs +2 -2
- package/dist/sandbox/e2b.cjs.map +1 -1
- package/dist/sandbox/incus/materialize.cjs +1 -1
- package/dist/sandbox/incus/materialize.cjs.map +1 -1
- package/dist/show/contribution.cjs +3 -3
- package/dist/show/contribution.cjs.map +1 -1
- package/dist/show/model.cjs +14 -13
- package/dist/show/model.cjs.map +1 -1
- package/dist/show/model.d.cts +7 -7
- package/dist/show/model.d.mts +7 -7
- package/dist/show/model.d.ts +7 -7
- package/dist/show/render.cjs +14 -0
- package/dist/show/render.cjs.map +1 -1
- package/dist/user-database/storage-worker.cjs +13 -3
- package/dist/user-database/storage-worker.cjs.map +1 -1
- package/dist/view/app-dist/.vite/manifest.json +2 -2
- package/dist/view/app-dist/assets/{index-CmVoXbwG.js → index-B3ijZRph.js} +17 -17
- package/dist/view/app-dist/assets/{quality-cost-scatter-BuLISaH4.js → quality-cost-scatter-B--DfJ9s.js} +1 -1
- package/dist/view/app-dist/index.html +1 -1
- package/dist/view/application-runtime.cjs +8 -0
- package/dist/view/application-runtime.cjs.map +1 -0
- package/dist/view/application-runtime.d.cts +9 -0
- package/dist/view/application-runtime.d.mts +9 -0
- package/dist/view/application-runtime.d.ts +9 -0
- package/dist/view/application-runtime.js +6 -0
- package/dist/view/application-runtime.js.map +1 -0
- package/dist/view/cli/contribution.cjs +5 -2
- package/dist/view/cli/contribution.cjs.map +1 -1
- package/dist/view/cli/contribution.d.cts +2 -1
- package/dist/view/cli/contribution.d.mts +2 -1
- package/dist/view/cli/contribution.d.ts +2 -1
- package/dist/view/function-runtime.mjs +1019 -456
- package/dist/view/http-protocol.d.cts +1 -9
- package/dist/view/http-protocol.d.mts +1 -9
- package/dist/view/http-protocol.d.ts +1 -9
- package/dist/view/inspection-host.cjs +39 -30
- package/dist/view/inspection-host.cjs.map +1 -1
- package/dist/view/inspection-host.d.cts +7545 -2
- package/dist/view/inspection-host.d.mts +7545 -2
- package/dist/view/inspection-host.d.ts +7545 -2
- package/dist/view/server.cjs +8 -5
- package/dist/view/server.cjs.map +1 -1
- package/dist/view/server.d.cts +4 -2
- package/dist/view/server.d.mts +4 -2
- package/dist/view/server.d.ts +4 -2
- package/docs-site/zh/reference/cli.mdx +1 -2
- package/docs-site/zh/tutorials/control-run-cost.mdx +22 -0
- package/docs-site/zh/tutorials/niceeval-taste-application.mdx +21 -0
- package/package.json +1 -1
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.e2bCacheRepositoryHandler = exports.E2B_CACHE_REPOSITORY = void 0;
|
|
3
|
+
exports.e2bCacheRepositoryHandler = exports.E2B_CACHE_GENERATION_INDEX_SQL = exports.E2B_CACHE_REPOSITORY = void 0;
|
|
4
4
|
exports.isE2BCacheRequest = isE2BCacheRequest;
|
|
5
5
|
exports.isE2BCacheResult = isE2BCacheResult;
|
|
6
|
+
exports.installE2BCacheSchemaV1 = installE2BCacheSchemaV1;
|
|
6
7
|
exports.e2bCacheRepository = e2bCacheRepository;
|
|
7
8
|
exports.e2bCacheRepositoryFromUserDatabase = e2bCacheRepositoryFromUserDatabase;
|
|
8
9
|
const effect_1 = require("effect");
|
|
@@ -126,6 +127,7 @@ const EntriesTable = "e2b_cache_entries";
|
|
|
126
127
|
const RootsTable = "e2b_cache_roots";
|
|
127
128
|
const ReplacementHeadsTable = "e2b_cache_replacement_heads";
|
|
128
129
|
const CleanupIndex = "e2b_cache_entries_cleanup";
|
|
130
|
+
const GenerationIndex = "e2b_cache_entries_generation";
|
|
129
131
|
const CreateEntries = `CREATE TABLE ${EntriesTable} (
|
|
130
132
|
setup_prefix_key TEXT PRIMARY KEY,
|
|
131
133
|
base_identity TEXT NOT NULL,
|
|
@@ -150,6 +152,7 @@ const CreateReplacementHeads = `CREATE TABLE ${ReplacementHeadsTable} (
|
|
|
150
152
|
replacement_scope TEXT PRIMARY KEY,
|
|
151
153
|
setup_prefix_key TEXT NOT NULL REFERENCES ${EntriesTable}(setup_prefix_key)
|
|
152
154
|
) STRICT`;
|
|
155
|
+
exports.E2B_CACHE_GENERATION_INDEX_SQL = `CREATE INDEX ${GenerationIndex} ON ${EntriesTable}(generation)`;
|
|
153
156
|
const CreateCleanupIndex = `CREATE INDEX ${CleanupIndex} ON ${EntriesTable}(state, replacement_scope, setup_prefix_key)`;
|
|
154
157
|
function exactSql(sql) {
|
|
155
158
|
return sql.trim().replace(/;+$/u, "").replace(/\s+/gu, " ");
|
|
@@ -248,11 +251,12 @@ function assertCurrentSchema(database) {
|
|
|
248
251
|
["table", RootsTable, RootsTable, CreateRoots],
|
|
249
252
|
["table", ReplacementHeadsTable, ReplacementHeadsTable, CreateReplacementHeads],
|
|
250
253
|
["index", CleanupIndex, EntriesTable, CreateCleanupIndex],
|
|
254
|
+
["index", GenerationIndex, EntriesTable, exports.E2B_CACHE_GENERATION_INDEX_SQL],
|
|
251
255
|
];
|
|
252
256
|
for (const [type, name, table, sql] of required) {
|
|
253
257
|
const row = rows.find((candidate) => candidate.type === type && candidate.name === name && candidate.tbl_name === table);
|
|
254
258
|
if (row === undefined || typeof row.sql !== "string" || exactSql(row.sql) !== exactSql(sql)) {
|
|
255
|
-
throw invalid(`schema does not match revision
|
|
259
|
+
throw invalid(`schema does not match revision 2 (${name})`);
|
|
256
260
|
}
|
|
257
261
|
}
|
|
258
262
|
const expectedObjects = new Set([
|
|
@@ -260,6 +264,7 @@ function assertCurrentSchema(database) {
|
|
|
260
264
|
RootsTable,
|
|
261
265
|
ReplacementHeadsTable,
|
|
262
266
|
CleanupIndex,
|
|
267
|
+
GenerationIndex,
|
|
263
268
|
`sqlite_autoindex_${EntriesTable}_1`,
|
|
264
269
|
`sqlite_autoindex_${EntriesTable}_2`,
|
|
265
270
|
`sqlite_autoindex_${RootsTable}_1`,
|
|
@@ -269,8 +274,13 @@ function assertCurrentSchema(database) {
|
|
|
269
274
|
throw invalid("schema has missing or unexpected objects");
|
|
270
275
|
}
|
|
271
276
|
}
|
|
272
|
-
|
|
277
|
+
/** Frozen repository shape for the application migration 1 receipt. */
|
|
278
|
+
function installE2BCacheSchemaV1(database) {
|
|
273
279
|
database.exec(`${CreateEntries}; ${CreateRoots}; ${CreateReplacementHeads}; ${CreateCleanupIndex};`);
|
|
280
|
+
}
|
|
281
|
+
function installCurrentSchema(database) {
|
|
282
|
+
installE2BCacheSchemaV1(database);
|
|
283
|
+
database.exec(exports.E2B_CACHE_GENERATION_INDEX_SQL);
|
|
274
284
|
assertCurrentSchema(database);
|
|
275
285
|
}
|
|
276
286
|
function nextGeneration(database) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"e2b-cache-repository.js","sourceRoot":"","sources":["e2b-cache-repository.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DatabaseSync } from \"node:sqlite\";\nimport { Effect, type Scope } from \"effect\";\nimport type { UserDatabase } from \"../user-database/client.ts\";\nimport type { UserDatabaseFailure } from \"../user-database/errors.ts\";\nimport { isFiniteValue, sqlIn, sqlLiteral, type FiniteValue, } from \"./finite-domain.ts\";\nconst E2B_CACHE_STATE = Object.freeze({\n building: \"building\", indexed: \"indexed\", unverified: \"unverified\",\n deleting: \"deleting\", tombstoned: \"tombstoned\",\n} as const);\nconst E2B_RESERVATION_DISPOSITION = Object.freeze({ reserved: \"reserved\" } as const);\nconst E2B_CONTENTION_REASON = Object.freeze({ activeWriter: \"active-writer\", indexedGeneration: \"indexed-generation\" } as const);\nconst E2B_CLEAR_DISPOSITION = Object.freeze({\n missing: \"missing\", cleared: \"cleared\", activeRoot: \"active-root\", activeLease: \"active-lease\",\n} as const);\nconst E2B_CONTENTION_REASONS = Object.freeze(Object.values(E2B_CONTENTION_REASON));\nconst E2B_CLEAR_DISPOSITIONS = Object.freeze(Object.values(E2B_CLEAR_DISPOSITION));\nconst E2B_CACHE_ENTRY_STATES = Object.freeze([\n E2B_CACHE_STATE.building, E2B_CACHE_STATE.indexed, E2B_CACHE_STATE.unverified,\n E2B_CACHE_STATE.deleting, E2B_CACHE_STATE.tombstoned,\n] as const);\n/**\n * The E2B snapshot registry is a first-party UserDatabase repository. Its\n * request vocabulary intentionally contains no SQL and its handler receives\n * the worker-owned DatabaseSync connection from UserDatabase.\n */\nexport const E2B_CACHE_REPOSITORY = \"e2b-cache\" as const;\nexport type E2BCacheEntryState = FiniteValue<typeof E2B_CACHE_ENTRY_STATES>;\nexport interface E2BCacheEntry {\n readonly setupPrefixKey: string;\n readonly baseIdentity: string;\n readonly snapshotId: string | null;\n readonly declarationDigest: string;\n readonly generation: number;\n readonly createdAt: string;\n readonly lastSuccessfulUseAt: string | null;\n readonly replacementScope: string;\n readonly state: E2BCacheEntryState;\n readonly leaseId: string | null;\n readonly leaseUntil: string | null;\n}\nexport interface E2BCacheRoot {\n readonly rootId: string;\n readonly setupPrefixKey: string;\n readonly sandboxId: string;\n readonly createdAt: string;\n}\nexport interface E2BCacheSnapshotCleanup {\n readonly setupPrefixKey: string;\n readonly generation: number;\n readonly snapshotId: string;\n}\nexport type E2BCacheRequest = {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"lookup\";\n readonly setupPrefixKey: string;\n readonly baseIdentity: string;\n readonly rootId: string;\n readonly now: string;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"reserve\";\n readonly setupPrefixKey: string;\n readonly baseIdentity: string;\n readonly declarationDigest: string;\n readonly replacementScope: string;\n readonly leaseId: string;\n readonly leaseUntil: string;\n readonly now: string;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"settle\";\n readonly setupPrefixKey: string;\n readonly generation: number;\n readonly leaseId: string;\n readonly snapshotId: string;\n readonly now: string;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"abort\";\n readonly setupPrefixKey: string;\n readonly generation: number;\n readonly leaseId: string;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"settle-root\";\n readonly rootId: string;\n readonly sandboxId: string;\n readonly now: string;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"release-root\";\n readonly rootId: string;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"adopt-root\";\n readonly setupPrefixKey: string;\n readonly generation: number;\n readonly snapshotId: string;\n readonly rootId: string;\n readonly sandboxId: string;\n readonly now: string;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"reconcile\";\n readonly now: string;\n readonly replacementScope?: string;\n readonly exceptSetupPrefixKey?: string;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"clear\";\n readonly setupPrefixKey: string;\n readonly now: string;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"settle-delete\";\n readonly setupPrefixKey: string;\n readonly generation: number;\n readonly deleted: boolean;\n};\nexport type E2BCacheResult = {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"lookup\";\n readonly entry: E2BCacheEntry | null;\n readonly root: E2BCacheRoot | null;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"reserve\";\n readonly disposition: typeof E2B_RESERVATION_DISPOSITION.reserved;\n readonly generation: number;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"reserve\";\n readonly disposition: FiniteValue<typeof E2B_CONTENTION_REASONS>;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"settle\";\n readonly settled: boolean;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"abort\";\n readonly aborted: boolean;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"settle-root\";\n readonly settled: boolean;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"release-root\";\n readonly released: boolean;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"adopt-root\";\n readonly adopted: boolean;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"reconcile\";\n readonly cleanup: readonly E2BCacheSnapshotCleanup[];\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"clear\";\n readonly disposition: FiniteValue<typeof E2B_CLEAR_DISPOSITIONS>;\n readonly cleanup: E2BCacheSnapshotCleanup | null;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"settle-delete\";\n readonly settled: boolean;\n};\nexport type E2BCacheResultFor<Request extends E2BCacheRequest> = Extract<E2BCacheResult, {\n readonly operation: Request[\"operation\"];\n}>;\nfunction hasStringFields(value: object, fields: readonly string[]): boolean {\n return fields.every((field) => typeof Reflect.get(value, field) === \"string\");\n}\nfunction hasGeneration(value: object): boolean {\n return Number.isSafeInteger(Reflect.get(value, \"generation\")) && Number(Reflect.get(value, \"generation\")) > 0;\n}\n/** Worker-side decoder for the closed E2B repository vocabulary. */\nexport function isE2BCacheRequest(value: unknown): value is E2BCacheRequest {\n if (!isRecord(value) || Reflect.get(value, \"repository\") !== E2B_CACHE_REPOSITORY)\n return false;\n switch (Reflect.get(value, \"operation\")) {\n case \"lookup\":\n return hasStringFields(value, [\"setupPrefixKey\", \"baseIdentity\", \"rootId\", \"now\"]);\n case \"reserve\":\n return hasStringFields(value, [\n \"setupPrefixKey\", \"baseIdentity\", \"declarationDigest\", \"replacementScope\", \"leaseId\", \"leaseUntil\", \"now\",\n ]);\n case \"settle\":\n return hasGeneration(value) && hasStringFields(value, [\"setupPrefixKey\", \"leaseId\", \"snapshotId\", \"now\"]);\n case \"abort\":\n return hasGeneration(value) && hasStringFields(value, [\"setupPrefixKey\", \"leaseId\"]);\n case \"settle-root\":\n return hasStringFields(value, [\"rootId\", \"sandboxId\", \"now\"]);\n case \"release-root\":\n return hasStringFields(value, [\"rootId\"]);\n case \"adopt-root\":\n return hasGeneration(value) && hasStringFields(value, [\"setupPrefixKey\", \"snapshotId\", \"rootId\", \"sandboxId\", \"now\"]);\n case \"reconcile\":\n return hasStringFields(value, [\"now\"]) &&\n (Reflect.get(value, \"replacementScope\") === undefined || typeof Reflect.get(value, \"replacementScope\") === \"string\") &&\n (Reflect.get(value, \"exceptSetupPrefixKey\") === undefined || typeof Reflect.get(value, \"exceptSetupPrefixKey\") === \"string\");\n case \"clear\":\n return hasStringFields(value, [\"setupPrefixKey\", \"now\"]);\n case \"settle-delete\":\n return hasGeneration(value) && hasStringFields(value, [\"setupPrefixKey\"]) && typeof Reflect.get(value, \"deleted\") === \"boolean\";\n default:\n return false;\n }\n}\nfunction isCleanup(value: unknown): value is E2BCacheSnapshotCleanup {\n return isRecord(value) && hasGeneration(value) && hasStringFields(value, [\"setupPrefixKey\", \"snapshotId\"]);\n}\nfunction isEntryResult(value: unknown): value is E2BCacheEntry {\n try {\n decodeEntry(value);\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isRootResult(value: unknown): value is E2BCacheRoot {\n try {\n decodeRoot(value);\n return true;\n }\n catch {\n return false;\n }\n}\nexport function isE2BCacheResult(value: unknown): value is E2BCacheResult {\n if (!isRecord(value) || Reflect.get(value, \"repository\") !== E2B_CACHE_REPOSITORY)\n return false;\n switch (Reflect.get(value, \"operation\")) {\n case \"lookup\":\n return (Reflect.get(value, \"entry\") === null || isEntryResult(Reflect.get(value, \"entry\"))) &&\n (Reflect.get(value, \"root\") === null || isRootResult(Reflect.get(value, \"root\")));\n case \"reserve\": {\n const disposition = Reflect.get(value, \"disposition\");\n return disposition === E2B_RESERVATION_DISPOSITION.reserved\n ? hasGeneration(value)\n : typeof disposition === \"string\" && isFiniteValue(E2B_CONTENTION_REASONS, disposition);\n }\n case \"settle\":\n return typeof Reflect.get(value, \"settled\") === \"boolean\";\n case \"abort\":\n return typeof Reflect.get(value, \"aborted\") === \"boolean\";\n case \"settle-root\":\n return typeof Reflect.get(value, \"settled\") === \"boolean\";\n case \"release-root\":\n return typeof Reflect.get(value, \"released\") === \"boolean\";\n case \"adopt-root\":\n return typeof Reflect.get(value, \"adopted\") === \"boolean\";\n case \"reconcile\":\n return Array.isArray(Reflect.get(value, \"cleanup\")) && (Reflect.get(value, \"cleanup\") as unknown[]).every(isCleanup);\n case \"clear\":\n return isFiniteValue(E2B_CLEAR_DISPOSITIONS, String(Reflect.get(value, \"disposition\"))) &&\n (Reflect.get(value, \"cleanup\") === null || isCleanup(Reflect.get(value, \"cleanup\")));\n case \"settle-delete\":\n return typeof Reflect.get(value, \"settled\") === \"boolean\";\n default:\n return false;\n }\n}\ntype SchemaRow = {\n readonly type: unknown;\n readonly name: unknown;\n readonly tbl_name: unknown;\n readonly sql: unknown;\n};\nconst EntriesTable = \"e2b_cache_entries\";\nconst RootsTable = \"e2b_cache_roots\";\nconst ReplacementHeadsTable = \"e2b_cache_replacement_heads\";\nconst CleanupIndex = \"e2b_cache_entries_cleanup\";\nconst CreateEntries = `CREATE TABLE ${EntriesTable} (\n setup_prefix_key TEXT PRIMARY KEY,\n base_identity TEXT NOT NULL,\n snapshot_id TEXT UNIQUE,\n declaration_digest TEXT NOT NULL,\n generation INTEGER NOT NULL CHECK (generation > 0),\n created_at TEXT NOT NULL,\n last_successful_use_at TEXT,\n replacement_scope TEXT NOT NULL,\n state TEXT NOT NULL CHECK(state IN (${sqlIn(E2B_CACHE_ENTRY_STATES)})),\n lease_id TEXT,\n lease_until TEXT,\n CHECK ((state = ${sqlLiteral(E2B_CACHE_STATE.building)}) = (lease_id IS NOT NULL AND lease_until IS NOT NULL))\n) STRICT`;\nconst CreateRoots = `CREATE TABLE ${RootsTable} (\n root_id TEXT PRIMARY KEY,\n setup_prefix_key TEXT NOT NULL REFERENCES ${EntriesTable}(setup_prefix_key),\n sandbox_id TEXT NOT NULL,\n created_at TEXT NOT NULL\n) STRICT`;\nconst CreateReplacementHeads = `CREATE TABLE ${ReplacementHeadsTable} (\n replacement_scope TEXT PRIMARY KEY,\n setup_prefix_key TEXT NOT NULL REFERENCES ${EntriesTable}(setup_prefix_key)\n) STRICT`;\nconst CreateCleanupIndex = `CREATE INDEX ${CleanupIndex} ON ${EntriesTable}(state, replacement_scope, setup_prefix_key)`;\nfunction exactSql(sql: string): string {\n return sql.trim().replace(/;+$/u, \"\").replace(/\\s+/gu, \" \");\n}\nfunction invalid(message: string): Error {\n return new Error(`e2b-cache: ${message}`);\n}\nfunction isRecord(value: unknown): value is object {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction stringField(row: object, name: string): string {\n const value = Reflect.get(row, name);\n if (typeof value !== \"string\")\n throw invalid(`row has invalid ${name}`);\n return value;\n}\nfunction nullableStringField(row: object, name: string): string | null {\n const value = Reflect.get(row, name);\n if (value === null)\n return null;\n if (typeof value !== \"string\")\n throw invalid(`row has invalid ${name}`);\n return value;\n}\nfunction positiveIntegerField(row: object, name: string): number {\n const value = Reflect.get(row, name);\n if (!Number.isSafeInteger(value) || Number(value) < 1)\n throw invalid(`row has invalid ${name}`);\n return Number(value);\n}\nfunction stateField(row: object): E2BCacheEntryState {\n const value = stringField(row, \"state\");\n if (isFiniteValue(E2B_CACHE_ENTRY_STATES, value))\n return value;\n throw invalid(\"row has invalid state\");\n}\nfunction decodeEntry(value: unknown): E2BCacheEntry {\n if (!isRecord(value))\n throw invalid(\"entry query returned a non-object row\");\n const entry = {\n setupPrefixKey: stringField(value, \"setup_prefix_key\"),\n baseIdentity: stringField(value, \"base_identity\"),\n snapshotId: nullableStringField(value, \"snapshot_id\"),\n declarationDigest: stringField(value, \"declaration_digest\"),\n generation: positiveIntegerField(value, \"generation\"),\n createdAt: stringField(value, \"created_at\"),\n lastSuccessfulUseAt: nullableStringField(value, \"last_successful_use_at\"),\n replacementScope: stringField(value, \"replacement_scope\"),\n state: stateField(value),\n leaseId: nullableStringField(value, \"lease_id\"),\n leaseUntil: nullableStringField(value, \"lease_until\"),\n } as const;\n if ((entry.state === E2B_CACHE_STATE.building) !== (entry.leaseId !== null && entry.leaseUntil !== null)) {\n throw invalid(\"entry lease does not agree with state\");\n }\n if (entry.state === E2B_CACHE_STATE.indexed && entry.snapshotId === null)\n throw invalid(\"indexed entry has no snapshot id\");\n return Object.freeze(entry);\n}\nfunction decodeRoot(value: unknown): E2BCacheRoot {\n if (!isRecord(value))\n throw invalid(\"root query returned a non-object row\");\n return Object.freeze({\n rootId: stringField(value, \"root_id\"),\n setupPrefixKey: stringField(value, \"setup_prefix_key\"),\n sandboxId: stringField(value, \"sandbox_id\"),\n createdAt: stringField(value, \"created_at\"),\n });\n}\nfunction cleanupFor(entry: E2BCacheEntry): E2BCacheSnapshotCleanup {\n if (entry.snapshotId === null)\n throw invalid(\"cleanup candidate has no registered snapshot id\");\n return Object.freeze({ setupPrefixKey: entry.setupPrefixKey, generation: entry.generation, snapshotId: entry.snapshotId });\n}\nfunction inTransaction<Result>(database: DatabaseSync, operation: () => Result): Result {\n database.exec(\"BEGIN IMMEDIATE\");\n try {\n const result = operation();\n database.exec(\"COMMIT\");\n return result;\n }\n catch (cause) {\n if (database.isTransaction)\n database.exec(\"ROLLBACK\");\n throw cause;\n }\n}\nfunction expireLeases(database: DatabaseSync, now: string): void {\n database.prepare(`UPDATE ${EntriesTable} SET state = ${sqlLiteral(E2B_CACHE_STATE.unverified)}, lease_id = NULL, lease_until = NULL ` +\n `WHERE state = ${sqlLiteral(E2B_CACHE_STATE.building)} AND lease_until <= ?`).run(now);\n}\nfunction assertCurrentSchema(database: DatabaseSync): void {\n const rows = database.prepare(`SELECT type, name, tbl_name, sql FROM sqlite_schema WHERE tbl_name IN (?, ?, ?) OR name = ? ORDER BY type, name`).all(EntriesTable, RootsTable, ReplacementHeadsTable, CleanupIndex) as SchemaRow[];\n const required = [\n [\"table\", EntriesTable, EntriesTable, CreateEntries],\n [\"table\", RootsTable, RootsTable, CreateRoots],\n [\"table\", ReplacementHeadsTable, ReplacementHeadsTable, CreateReplacementHeads],\n [\"index\", CleanupIndex, EntriesTable, CreateCleanupIndex],\n ] as const;\n for (const [type, name, table, sql] of required) {\n const row = rows.find((candidate) => candidate.type === type && candidate.name === name && candidate.tbl_name === table);\n if (row === undefined || typeof row.sql !== \"string\" || exactSql(row.sql) !== exactSql(sql)) {\n throw invalid(`schema does not match revision 1 (${name})`);\n }\n }\n const expectedObjects = new Set([\n EntriesTable,\n RootsTable,\n ReplacementHeadsTable,\n CleanupIndex,\n `sqlite_autoindex_${EntriesTable}_1`,\n `sqlite_autoindex_${EntriesTable}_2`,\n `sqlite_autoindex_${RootsTable}_1`,\n `sqlite_autoindex_${ReplacementHeadsTable}_1`,\n ]);\n if (rows.length !== expectedObjects.size || rows.some((row) => typeof row.name !== \"string\" || !expectedObjects.has(row.name))) {\n throw invalid(\"schema has missing or unexpected objects\");\n }\n}\nfunction installCurrentSchema(database: DatabaseSync): void {\n database.exec(`${CreateEntries}; ${CreateRoots}; ${CreateReplacementHeads}; ${CreateCleanupIndex};`);\n assertCurrentSchema(database);\n}\nfunction nextGeneration(database: DatabaseSync): number {\n const row = database.prepare(`SELECT COALESCE(MAX(generation), 0) AS generation FROM ${EntriesTable}`).get();\n if (!isRecord(row) || !Number.isSafeInteger(Reflect.get(row, \"generation\")) || Number(Reflect.get(row, \"generation\")) < 0) {\n throw invalid(\"generation query returned an invalid value\");\n }\n return Number(Reflect.get(row, \"generation\")) + 1;\n}\nfunction reconcile(database: DatabaseSync, request: Extract<E2BCacheRequest, {\n readonly operation: \"reconcile\";\n}>): E2BCacheResultFor<typeof request> {\n return inTransaction(database, () => {\n expireLeases(database, request.now);\n const candidates = database.prepare(`\n SELECT entry.* FROM ${EntriesTable} AS entry\n LEFT JOIN ${ReplacementHeadsTable} AS head ON head.replacement_scope = entry.replacement_scope\n WHERE entry.snapshot_id IS NOT NULL\n AND NOT EXISTS (SELECT 1 FROM ${RootsTable} WHERE ${RootsTable}.setup_prefix_key = entry.setup_prefix_key)\n AND (\n entry.state = ${sqlLiteral(E2B_CACHE_STATE.deleting)}\n OR (\n entry.state = ${sqlLiteral(E2B_CACHE_STATE.indexed)}\n AND entry.replacement_scope != ''\n AND entry.setup_prefix_key != head.setup_prefix_key\n AND (? IS NULL OR entry.replacement_scope = ?)\n AND (? IS NULL OR entry.setup_prefix_key != ?)\n )\n )\n `).all(request.replacementScope ?? null, request.replacementScope ?? null, request.exceptSetupPrefixKey ?? null, request.exceptSetupPrefixKey ?? null).map(decodeEntry);\n for (const entry of candidates) {\n if (entry.state === E2B_CACHE_STATE.indexed) {\n database.prepare(`UPDATE ${EntriesTable} SET state = ${sqlLiteral(E2B_CACHE_STATE.deleting)} WHERE setup_prefix_key = ? AND generation = ? AND state = ${sqlLiteral(E2B_CACHE_STATE.indexed)}`)\n .run(entry.setupPrefixKey, entry.generation);\n }\n }\n return Object.freeze({\n repository: E2B_CACHE_REPOSITORY,\n operation: \"reconcile\" as const,\n cleanup: Object.freeze(candidates.map(cleanupFor)),\n });\n });\n}\nfunction dispatch(database: DatabaseSync, request: E2BCacheRequest): E2BCacheResult {\n if (request.operation === \"lookup\") {\n return inTransaction(database, () => {\n expireLeases(database, request.now);\n const entry = database.prepare(`SELECT * FROM ${EntriesTable} WHERE setup_prefix_key = ? AND base_identity = ? AND state = ${sqlLiteral(E2B_CACHE_STATE.indexed)}`).get(request.setupPrefixKey, request.baseIdentity);\n if (entry === undefined) {\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"lookup\" as const, entry: null, root: null });\n }\n const decoded = decodeEntry(entry);\n const pendingSandboxId = `pending:${request.rootId}`;\n database.prepare(`INSERT INTO ${RootsTable}(root_id, setup_prefix_key, sandbox_id, created_at) VALUES (?, ?, ?, ?)`).run(request.rootId, decoded.setupPrefixKey, pendingSandboxId, request.now);\n return Object.freeze({\n repository: E2B_CACHE_REPOSITORY,\n operation: \"lookup\" as const,\n entry: decoded,\n root: Object.freeze({ rootId: request.rootId, setupPrefixKey: decoded.setupPrefixKey, sandboxId: pendingSandboxId, createdAt: request.now }),\n });\n });\n }\n if (request.operation === \"reserve\") {\n return inTransaction(database, () => {\n expireLeases(database, request.now);\n const existing = database.prepare(`SELECT * FROM ${EntriesTable} WHERE setup_prefix_key = ?`).get(request.setupPrefixKey);\n if (existing !== undefined) {\n const entry = decodeEntry(existing);\n if (entry.state === E2B_CACHE_STATE.indexed) {\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"reserve\" as const, disposition: E2B_CONTENTION_REASON.indexedGeneration });\n }\n if (entry.state === E2B_CACHE_STATE.building) {\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"reserve\" as const, disposition: E2B_CONTENTION_REASON.activeWriter });\n }\n }\n const generation = nextGeneration(database);\n database.prepare(`\n INSERT INTO ${EntriesTable}(\n setup_prefix_key, base_identity, snapshot_id, declaration_digest, generation, created_at,\n last_successful_use_at, replacement_scope, state, lease_id, lease_until\n ) VALUES (?, ?, NULL, ?, ?, ?, NULL, ?, ${sqlLiteral(E2B_CACHE_STATE.building)}, ?, ?)\n ON CONFLICT(setup_prefix_key) DO UPDATE SET\n base_identity = excluded.base_identity,\n snapshot_id = NULL,\n declaration_digest = excluded.declaration_digest,\n generation = excluded.generation,\n created_at = excluded.created_at,\n last_successful_use_at = NULL,\n replacement_scope = excluded.replacement_scope,\n state = ${sqlLiteral(E2B_CACHE_STATE.building)},\n lease_id = excluded.lease_id,\n lease_until = excluded.lease_until\n `).run(request.setupPrefixKey, request.baseIdentity, request.declarationDigest, generation, request.now, request.replacementScope, request.leaseId, request.leaseUntil);\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"reserve\" as const, disposition: E2B_RESERVATION_DISPOSITION.reserved, generation });\n });\n }\n if (request.operation === \"settle\") {\n return inTransaction(database, () => {\n const receipt = database.prepare(`\n UPDATE ${EntriesTable} SET snapshot_id = ?, state = ${sqlLiteral(E2B_CACHE_STATE.indexed)}, lease_id = NULL, lease_until = NULL\n WHERE setup_prefix_key = ? AND generation = ? AND lease_id = ? AND state = ${sqlLiteral(E2B_CACHE_STATE.building)} AND lease_until > ?\n `).run(request.snapshotId, request.setupPrefixKey, request.generation, request.leaseId, request.now);\n if (receipt.changes === 1) {\n const entry = database.prepare(`SELECT replacement_scope FROM ${EntriesTable} WHERE setup_prefix_key = ?`).get(request.setupPrefixKey);\n if (!isRecord(entry))\n throw invalid(\"settled entry disappeared\");\n const scope = stringField(entry, \"replacement_scope\");\n database.prepare(`\n INSERT INTO ${ReplacementHeadsTable}(replacement_scope, setup_prefix_key) VALUES (?, ?)\n ON CONFLICT(replacement_scope) DO UPDATE SET setup_prefix_key = excluded.setup_prefix_key\n `).run(scope, request.setupPrefixKey);\n }\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"settle\" as const, settled: receipt.changes === 1 });\n });\n }\n if (request.operation === \"abort\") {\n const receipt = database.prepare(`\n UPDATE ${EntriesTable} SET state = ${sqlLiteral(E2B_CACHE_STATE.unverified)}, lease_id = NULL, lease_until = NULL\n WHERE setup_prefix_key = ? AND generation = ? AND lease_id = ? AND state = ${sqlLiteral(E2B_CACHE_STATE.building)}\n `).run(request.setupPrefixKey, request.generation, request.leaseId);\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"abort\" as const, aborted: receipt.changes === 1 });\n }\n if (request.operation === \"settle-root\") {\n return inTransaction(database, () => {\n const root = database.prepare(`SELECT setup_prefix_key FROM ${RootsTable} WHERE root_id = ?`).get(request.rootId);\n if (!isRecord(root))\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"settle-root\" as const, settled: false });\n const setupPrefixKey = stringField(root, \"setup_prefix_key\");\n const updatedRoot = database.prepare(`UPDATE ${RootsTable} SET sandbox_id = ? WHERE root_id = ?`).run(request.sandboxId, request.rootId);\n const updatedEntry = database.prepare(`UPDATE ${EntriesTable} SET last_successful_use_at = ? WHERE setup_prefix_key = ? AND state = ${sqlLiteral(E2B_CACHE_STATE.indexed)}`)\n .run(request.now, setupPrefixKey);\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"settle-root\" as const, settled: updatedRoot.changes === 1 && updatedEntry.changes === 1 });\n });\n }\n if (request.operation === \"release-root\") {\n const receipt = database.prepare(`DELETE FROM ${RootsTable} WHERE root_id = ?`).run(request.rootId);\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"release-root\" as const, released: receipt.changes === 1 });\n }\n if (request.operation === \"adopt-root\") {\n return inTransaction(database, () => {\n const receipt = database.prepare(`\n INSERT INTO ${RootsTable}(root_id, setup_prefix_key, sandbox_id, created_at)\n SELECT ?, setup_prefix_key, ?, ? FROM ${EntriesTable}\n WHERE setup_prefix_key = ? AND generation = ? AND snapshot_id = ? AND state = ${sqlLiteral(E2B_CACHE_STATE.indexed)}\n `).run(request.rootId, request.sandboxId, request.now, request.setupPrefixKey, request.generation, request.snapshotId);\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"adopt-root\" as const, adopted: receipt.changes === 1 });\n });\n }\n if (request.operation === \"reconcile\")\n return reconcile(database, request);\n if (request.operation === \"clear\") {\n return inTransaction(database, () => {\n expireLeases(database, request.now);\n const row = database.prepare(`SELECT * FROM ${EntriesTable} WHERE setup_prefix_key = ?`).get(request.setupPrefixKey);\n if (row === undefined) {\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"clear\" as const, disposition: E2B_CLEAR_DISPOSITION.missing, cleanup: null });\n }\n const entry = decodeEntry(row);\n if (entry.state === E2B_CACHE_STATE.building) {\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"clear\" as const, disposition: E2B_CLEAR_DISPOSITION.activeLease, cleanup: null });\n }\n const activeRoot = database.prepare(`SELECT root_id FROM ${RootsTable} WHERE setup_prefix_key = ? LIMIT 1`).get(entry.setupPrefixKey);\n if (activeRoot !== undefined) {\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"clear\" as const, disposition: E2B_CLEAR_DISPOSITION.activeRoot, cleanup: null });\n }\n if (entry.snapshotId === null) {\n database.prepare(`UPDATE ${EntriesTable} SET state = ${sqlLiteral(E2B_CACHE_STATE.tombstoned)}, lease_id = NULL, lease_until = NULL WHERE setup_prefix_key = ?`)\n .run(entry.setupPrefixKey);\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"clear\" as const, disposition: E2B_CLEAR_DISPOSITION.cleared, cleanup: null });\n }\n database.prepare(`UPDATE ${EntriesTable} SET state = ${sqlLiteral(E2B_CACHE_STATE.deleting)} WHERE setup_prefix_key = ? AND generation = ?`)\n .run(entry.setupPrefixKey, entry.generation);\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"clear\" as const, disposition: E2B_CLEAR_DISPOSITION.cleared, cleanup: cleanupFor(entry) });\n });\n }\n const receipt = database.prepare(`\n UPDATE ${EntriesTable} SET state = CASE WHEN ? THEN ${sqlLiteral(E2B_CACHE_STATE.tombstoned)} ELSE ${sqlLiteral(E2B_CACHE_STATE.deleting)} END\n WHERE setup_prefix_key = ? AND generation = ? AND state = ${sqlLiteral(E2B_CACHE_STATE.deleting)}\n `).run(request.deleted ? 1 : 0, request.setupPrefixKey, request.generation);\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"settle-delete\" as const, settled: receipt.changes === 1 });\n}\n/** This object is statically composed into UserDatabase's catalog by its owner. */\nexport const e2bCacheRepositoryHandler = Object.freeze({\n id: E2B_CACHE_REPOSITORY,\n installCurrentSchema,\n assertCurrentSchema,\n dispatch,\n});\nexport interface E2BCacheDatabase {\n readonly dispatch: <Request extends E2BCacheRequest>(request: Request) => Effect.Effect<E2BCacheResultFor<Request>, UserDatabaseFailure>;\n}\nexport interface E2BCacheRepository {\n readonly lookup: (input: Omit<Extract<E2BCacheRequest, {\n readonly operation: \"lookup\";\n }>, \"repository\" | \"operation\">) => Effect.Effect<Extract<E2BCacheResult, {\n readonly operation: \"lookup\";\n }>, UserDatabaseFailure>;\n readonly reserve: (input: Omit<Extract<E2BCacheRequest, {\n readonly operation: \"reserve\";\n }>, \"repository\" | \"operation\">) => Effect.Effect<Extract<E2BCacheResult, {\n readonly operation: \"reserve\";\n }>, UserDatabaseFailure>;\n readonly settle: (input: Omit<Extract<E2BCacheRequest, {\n readonly operation: \"settle\";\n }>, \"repository\" | \"operation\">) => Effect.Effect<Extract<E2BCacheResult, {\n readonly operation: \"settle\";\n }>, UserDatabaseFailure>;\n readonly abort: (input: Omit<Extract<E2BCacheRequest, {\n readonly operation: \"abort\";\n }>, \"repository\" | \"operation\">) => Effect.Effect<Extract<E2BCacheResult, {\n readonly operation: \"abort\";\n }>, UserDatabaseFailure>;\n readonly settleRoot: (input: Omit<Extract<E2BCacheRequest, {\n readonly operation: \"settle-root\";\n }>, \"repository\" | \"operation\">) => Effect.Effect<Extract<E2BCacheResult, {\n readonly operation: \"settle-root\";\n }>, UserDatabaseFailure>;\n readonly releaseRoot: (input: Omit<Extract<E2BCacheRequest, {\n readonly operation: \"release-root\";\n }>, \"repository\" | \"operation\">) => Effect.Effect<Extract<E2BCacheResult, {\n readonly operation: \"release-root\";\n }>, UserDatabaseFailure>;\n readonly adoptRoot: (input: Omit<Extract<E2BCacheRequest, {\n readonly operation: \"adopt-root\";\n }>, \"repository\" | \"operation\">) => Effect.Effect<Extract<E2BCacheResult, {\n readonly operation: \"adopt-root\";\n }>, UserDatabaseFailure>;\n readonly reconcile: (input: Omit<Extract<E2BCacheRequest, {\n readonly operation: \"reconcile\";\n }>, \"repository\" | \"operation\">) => Effect.Effect<Extract<E2BCacheResult, {\n readonly operation: \"reconcile\";\n }>, UserDatabaseFailure>;\n readonly clear: (input: Omit<Extract<E2BCacheRequest, {\n readonly operation: \"clear\";\n }>, \"repository\" | \"operation\">) => Effect.Effect<Extract<E2BCacheResult, {\n readonly operation: \"clear\";\n }>, UserDatabaseFailure>;\n readonly settleDelete: (input: Omit<Extract<E2BCacheRequest, {\n readonly operation: \"settle-delete\";\n }>, \"repository\" | \"operation\">) => Effect.Effect<Extract<E2BCacheResult, {\n readonly operation: \"settle-delete\";\n }>, UserDatabaseFailure>;\n}\nfunction request<Operation extends E2BCacheRequest[\"operation\"]>(operation: Operation, input: Omit<Extract<E2BCacheRequest, {\n readonly operation: Operation;\n}>, \"repository\" | \"operation\">): Extract<E2BCacheRequest, {\n readonly operation: Operation;\n}> {\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation, ...input }) as Extract<E2BCacheRequest, {\n readonly operation: Operation;\n }>;\n}\n/** Main-thread facade: the caller gets typed operations, never a DatabaseSync handle or SQL. */\nexport function e2bCacheRepository(database: E2BCacheDatabase): E2BCacheRepository {\n return Object.freeze({\n lookup: (input: Parameters<E2BCacheRepository[\"lookup\"]>[0]) => database.dispatch(request(\"lookup\", input)),\n reserve: (input: Parameters<E2BCacheRepository[\"reserve\"]>[0]) => database.dispatch(request(\"reserve\", input)),\n settle: (input: Parameters<E2BCacheRepository[\"settle\"]>[0]) => database.dispatch(request(\"settle\", input)),\n abort: (input: Parameters<E2BCacheRepository[\"abort\"]>[0]) => database.dispatch(request(\"abort\", input)),\n settleRoot: (input: Parameters<E2BCacheRepository[\"settleRoot\"]>[0]) => database.dispatch(request(\"settle-root\", input)),\n releaseRoot: (input: Parameters<E2BCacheRepository[\"releaseRoot\"]>[0]) => database.dispatch(request(\"release-root\", input)),\n adoptRoot: (input: Parameters<E2BCacheRepository[\"adoptRoot\"]>[0]) => database.dispatch(request(\"adopt-root\", input)),\n reconcile: (input: Parameters<E2BCacheRepository[\"reconcile\"]>[0]) => database.dispatch(request(\"reconcile\", input)),\n clear: (input: Parameters<E2BCacheRepository[\"clear\"]>[0]) => database.dispatch(request(\"clear\", input)),\n settleDelete: (input: Parameters<E2BCacheRepository[\"settleDelete\"]>[0]) => database.dispatch(request(\"settle-delete\", input)),\n });\n}\n/**\n * A short UserDatabase scope is deliberately opened per registry operation.\n * E2B RPCs are always outside that scope/SQLite transaction; the UserDatabase\n * worker remains the sole owner of paths and sqlite connections.\n */\nexport function e2bCacheRepositoryFromUserDatabase(open: () => Effect.Effect<UserDatabase, UserDatabaseFailure, Scope.Scope>): E2BCacheRepository {\n const operation = <Result>(select: (repository: E2BCacheRepository) => Effect.Effect<Result, UserDatabaseFailure>) => Effect.scoped(open().pipe(Effect.flatMap((database) => select(e2bCacheRepository(database as unknown as E2BCacheDatabase)))));\n return Object.freeze({\n lookup: (input: Parameters<E2BCacheRepository[\"lookup\"]>[0]) => operation((repository) => repository.lookup(input)),\n reserve: (input: Parameters<E2BCacheRepository[\"reserve\"]>[0]) => operation((repository) => repository.reserve(input)),\n settle: (input: Parameters<E2BCacheRepository[\"settle\"]>[0]) => operation((repository) => repository.settle(input)),\n abort: (input: Parameters<E2BCacheRepository[\"abort\"]>[0]) => operation((repository) => repository.abort(input)),\n settleRoot: (input: Parameters<E2BCacheRepository[\"settleRoot\"]>[0]) => operation((repository) => repository.settleRoot(input)),\n releaseRoot: (input: Parameters<E2BCacheRepository[\"releaseRoot\"]>[0]) => operation((repository) => repository.releaseRoot(input)),\n adoptRoot: (input: Parameters<E2BCacheRepository[\"adoptRoot\"]>[0]) => operation((repository) => repository.adoptRoot(input)),\n reconcile: (input: Parameters<E2BCacheRepository[\"reconcile\"]>[0]) => operation((repository) => repository.reconcile(input)),\n clear: (input: Parameters<E2BCacheRepository[\"clear\"]>[0]) => operation((repository) => repository.clear(input)),\n settleDelete: (input: Parameters<E2BCacheRepository[\"settleDelete\"]>[0]) => operation((repository) => repository.settleDelete(input)),\n });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"e2b-cache-repository.js","sourceRoot":"","sources":["e2b-cache-repository.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DatabaseSync } from \"node:sqlite\";\nimport { Effect, type Scope } from \"effect\";\nimport type { UserDatabase } from \"../user-database/client.ts\";\nimport type { UserDatabaseFailure } from \"../user-database/errors.ts\";\nimport { isFiniteValue, sqlIn, sqlLiteral, type FiniteValue, } from \"./finite-domain.ts\";\nconst E2B_CACHE_STATE = Object.freeze({\n building: \"building\", indexed: \"indexed\", unverified: \"unverified\",\n deleting: \"deleting\", tombstoned: \"tombstoned\",\n} as const);\nconst E2B_RESERVATION_DISPOSITION = Object.freeze({ reserved: \"reserved\" } as const);\nconst E2B_CONTENTION_REASON = Object.freeze({ activeWriter: \"active-writer\", indexedGeneration: \"indexed-generation\" } as const);\nconst E2B_CLEAR_DISPOSITION = Object.freeze({\n missing: \"missing\", cleared: \"cleared\", activeRoot: \"active-root\", activeLease: \"active-lease\",\n} as const);\nconst E2B_CONTENTION_REASONS = Object.freeze(Object.values(E2B_CONTENTION_REASON));\nconst E2B_CLEAR_DISPOSITIONS = Object.freeze(Object.values(E2B_CLEAR_DISPOSITION));\nconst E2B_CACHE_ENTRY_STATES = Object.freeze([\n E2B_CACHE_STATE.building, E2B_CACHE_STATE.indexed, E2B_CACHE_STATE.unverified,\n E2B_CACHE_STATE.deleting, E2B_CACHE_STATE.tombstoned,\n] as const);\n/**\n * The E2B snapshot registry is a first-party UserDatabase repository. Its\n * request vocabulary intentionally contains no SQL and its handler receives\n * the worker-owned DatabaseSync connection from UserDatabase.\n */\nexport const E2B_CACHE_REPOSITORY = \"e2b-cache\" as const;\nexport type E2BCacheEntryState = FiniteValue<typeof E2B_CACHE_ENTRY_STATES>;\nexport interface E2BCacheEntry {\n readonly setupPrefixKey: string;\n readonly baseIdentity: string;\n readonly snapshotId: string | null;\n readonly declarationDigest: string;\n readonly generation: number;\n readonly createdAt: string;\n readonly lastSuccessfulUseAt: string | null;\n readonly replacementScope: string;\n readonly state: E2BCacheEntryState;\n readonly leaseId: string | null;\n readonly leaseUntil: string | null;\n}\nexport interface E2BCacheRoot {\n readonly rootId: string;\n readonly setupPrefixKey: string;\n readonly sandboxId: string;\n readonly createdAt: string;\n}\nexport interface E2BCacheSnapshotCleanup {\n readonly setupPrefixKey: string;\n readonly generation: number;\n readonly snapshotId: string;\n}\nexport type E2BCacheRequest = {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"lookup\";\n readonly setupPrefixKey: string;\n readonly baseIdentity: string;\n readonly rootId: string;\n readonly now: string;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"reserve\";\n readonly setupPrefixKey: string;\n readonly baseIdentity: string;\n readonly declarationDigest: string;\n readonly replacementScope: string;\n readonly leaseId: string;\n readonly leaseUntil: string;\n readonly now: string;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"settle\";\n readonly setupPrefixKey: string;\n readonly generation: number;\n readonly leaseId: string;\n readonly snapshotId: string;\n readonly now: string;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"abort\";\n readonly setupPrefixKey: string;\n readonly generation: number;\n readonly leaseId: string;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"settle-root\";\n readonly rootId: string;\n readonly sandboxId: string;\n readonly now: string;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"release-root\";\n readonly rootId: string;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"adopt-root\";\n readonly setupPrefixKey: string;\n readonly generation: number;\n readonly snapshotId: string;\n readonly rootId: string;\n readonly sandboxId: string;\n readonly now: string;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"reconcile\";\n readonly now: string;\n readonly replacementScope?: string;\n readonly exceptSetupPrefixKey?: string;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"clear\";\n readonly setupPrefixKey: string;\n readonly now: string;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"settle-delete\";\n readonly setupPrefixKey: string;\n readonly generation: number;\n readonly deleted: boolean;\n};\nexport type E2BCacheResult = {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"lookup\";\n readonly entry: E2BCacheEntry | null;\n readonly root: E2BCacheRoot | null;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"reserve\";\n readonly disposition: typeof E2B_RESERVATION_DISPOSITION.reserved;\n readonly generation: number;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"reserve\";\n readonly disposition: FiniteValue<typeof E2B_CONTENTION_REASONS>;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"settle\";\n readonly settled: boolean;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"abort\";\n readonly aborted: boolean;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"settle-root\";\n readonly settled: boolean;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"release-root\";\n readonly released: boolean;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"adopt-root\";\n readonly adopted: boolean;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"reconcile\";\n readonly cleanup: readonly E2BCacheSnapshotCleanup[];\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"clear\";\n readonly disposition: FiniteValue<typeof E2B_CLEAR_DISPOSITIONS>;\n readonly cleanup: E2BCacheSnapshotCleanup | null;\n} | {\n readonly repository: typeof E2B_CACHE_REPOSITORY;\n readonly operation: \"settle-delete\";\n readonly settled: boolean;\n};\nexport type E2BCacheResultFor<Request extends E2BCacheRequest> = Extract<E2BCacheResult, {\n readonly operation: Request[\"operation\"];\n}>;\nfunction hasStringFields(value: object, fields: readonly string[]): boolean {\n return fields.every((field) => typeof Reflect.get(value, field) === \"string\");\n}\nfunction hasGeneration(value: object): boolean {\n return Number.isSafeInteger(Reflect.get(value, \"generation\")) && Number(Reflect.get(value, \"generation\")) > 0;\n}\n/** Worker-side decoder for the closed E2B repository vocabulary. */\nexport function isE2BCacheRequest(value: unknown): value is E2BCacheRequest {\n if (!isRecord(value) || Reflect.get(value, \"repository\") !== E2B_CACHE_REPOSITORY)\n return false;\n switch (Reflect.get(value, \"operation\")) {\n case \"lookup\":\n return hasStringFields(value, [\"setupPrefixKey\", \"baseIdentity\", \"rootId\", \"now\"]);\n case \"reserve\":\n return hasStringFields(value, [\n \"setupPrefixKey\", \"baseIdentity\", \"declarationDigest\", \"replacementScope\", \"leaseId\", \"leaseUntil\", \"now\",\n ]);\n case \"settle\":\n return hasGeneration(value) && hasStringFields(value, [\"setupPrefixKey\", \"leaseId\", \"snapshotId\", \"now\"]);\n case \"abort\":\n return hasGeneration(value) && hasStringFields(value, [\"setupPrefixKey\", \"leaseId\"]);\n case \"settle-root\":\n return hasStringFields(value, [\"rootId\", \"sandboxId\", \"now\"]);\n case \"release-root\":\n return hasStringFields(value, [\"rootId\"]);\n case \"adopt-root\":\n return hasGeneration(value) && hasStringFields(value, [\"setupPrefixKey\", \"snapshotId\", \"rootId\", \"sandboxId\", \"now\"]);\n case \"reconcile\":\n return hasStringFields(value, [\"now\"]) &&\n (Reflect.get(value, \"replacementScope\") === undefined || typeof Reflect.get(value, \"replacementScope\") === \"string\") &&\n (Reflect.get(value, \"exceptSetupPrefixKey\") === undefined || typeof Reflect.get(value, \"exceptSetupPrefixKey\") === \"string\");\n case \"clear\":\n return hasStringFields(value, [\"setupPrefixKey\", \"now\"]);\n case \"settle-delete\":\n return hasGeneration(value) && hasStringFields(value, [\"setupPrefixKey\"]) && typeof Reflect.get(value, \"deleted\") === \"boolean\";\n default:\n return false;\n }\n}\nfunction isCleanup(value: unknown): value is E2BCacheSnapshotCleanup {\n return isRecord(value) && hasGeneration(value) && hasStringFields(value, [\"setupPrefixKey\", \"snapshotId\"]);\n}\nfunction isEntryResult(value: unknown): value is E2BCacheEntry {\n try {\n decodeEntry(value);\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isRootResult(value: unknown): value is E2BCacheRoot {\n try {\n decodeRoot(value);\n return true;\n }\n catch {\n return false;\n }\n}\nexport function isE2BCacheResult(value: unknown): value is E2BCacheResult {\n if (!isRecord(value) || Reflect.get(value, \"repository\") !== E2B_CACHE_REPOSITORY)\n return false;\n switch (Reflect.get(value, \"operation\")) {\n case \"lookup\":\n return (Reflect.get(value, \"entry\") === null || isEntryResult(Reflect.get(value, \"entry\"))) &&\n (Reflect.get(value, \"root\") === null || isRootResult(Reflect.get(value, \"root\")));\n case \"reserve\": {\n const disposition = Reflect.get(value, \"disposition\");\n return disposition === E2B_RESERVATION_DISPOSITION.reserved\n ? hasGeneration(value)\n : typeof disposition === \"string\" && isFiniteValue(E2B_CONTENTION_REASONS, disposition);\n }\n case \"settle\":\n return typeof Reflect.get(value, \"settled\") === \"boolean\";\n case \"abort\":\n return typeof Reflect.get(value, \"aborted\") === \"boolean\";\n case \"settle-root\":\n return typeof Reflect.get(value, \"settled\") === \"boolean\";\n case \"release-root\":\n return typeof Reflect.get(value, \"released\") === \"boolean\";\n case \"adopt-root\":\n return typeof Reflect.get(value, \"adopted\") === \"boolean\";\n case \"reconcile\":\n return Array.isArray(Reflect.get(value, \"cleanup\")) && (Reflect.get(value, \"cleanup\") as unknown[]).every(isCleanup);\n case \"clear\":\n return isFiniteValue(E2B_CLEAR_DISPOSITIONS, String(Reflect.get(value, \"disposition\"))) &&\n (Reflect.get(value, \"cleanup\") === null || isCleanup(Reflect.get(value, \"cleanup\")));\n case \"settle-delete\":\n return typeof Reflect.get(value, \"settled\") === \"boolean\";\n default:\n return false;\n }\n}\ntype SchemaRow = {\n readonly type: unknown;\n readonly name: unknown;\n readonly tbl_name: unknown;\n readonly sql: unknown;\n};\nconst EntriesTable = \"e2b_cache_entries\";\nconst RootsTable = \"e2b_cache_roots\";\nconst ReplacementHeadsTable = \"e2b_cache_replacement_heads\";\nconst CleanupIndex = \"e2b_cache_entries_cleanup\";\nconst GenerationIndex = \"e2b_cache_entries_generation\";\nconst CreateEntries = `CREATE TABLE ${EntriesTable} (\n setup_prefix_key TEXT PRIMARY KEY,\n base_identity TEXT NOT NULL,\n snapshot_id TEXT UNIQUE,\n declaration_digest TEXT NOT NULL,\n generation INTEGER NOT NULL CHECK (generation > 0),\n created_at TEXT NOT NULL,\n last_successful_use_at TEXT,\n replacement_scope TEXT NOT NULL,\n state TEXT NOT NULL CHECK(state IN (${sqlIn(E2B_CACHE_ENTRY_STATES)})),\n lease_id TEXT,\n lease_until TEXT,\n CHECK ((state = ${sqlLiteral(E2B_CACHE_STATE.building)}) = (lease_id IS NOT NULL AND lease_until IS NOT NULL))\n) STRICT`;\nconst CreateRoots = `CREATE TABLE ${RootsTable} (\n root_id TEXT PRIMARY KEY,\n setup_prefix_key TEXT NOT NULL REFERENCES ${EntriesTable}(setup_prefix_key),\n sandbox_id TEXT NOT NULL,\n created_at TEXT NOT NULL\n) STRICT`;\nconst CreateReplacementHeads = `CREATE TABLE ${ReplacementHeadsTable} (\n replacement_scope TEXT PRIMARY KEY,\n setup_prefix_key TEXT NOT NULL REFERENCES ${EntriesTable}(setup_prefix_key)\n) STRICT`;\nexport const E2B_CACHE_GENERATION_INDEX_SQL = `CREATE INDEX ${GenerationIndex} ON ${EntriesTable}(generation)`;\nconst CreateCleanupIndex = `CREATE INDEX ${CleanupIndex} ON ${EntriesTable}(state, replacement_scope, setup_prefix_key)`;\nfunction exactSql(sql: string): string {\n return sql.trim().replace(/;+$/u, \"\").replace(/\\s+/gu, \" \");\n}\nfunction invalid(message: string): Error {\n return new Error(`e2b-cache: ${message}`);\n}\nfunction isRecord(value: unknown): value is object {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction stringField(row: object, name: string): string {\n const value = Reflect.get(row, name);\n if (typeof value !== \"string\")\n throw invalid(`row has invalid ${name}`);\n return value;\n}\nfunction nullableStringField(row: object, name: string): string | null {\n const value = Reflect.get(row, name);\n if (value === null)\n return null;\n if (typeof value !== \"string\")\n throw invalid(`row has invalid ${name}`);\n return value;\n}\nfunction positiveIntegerField(row: object, name: string): number {\n const value = Reflect.get(row, name);\n if (!Number.isSafeInteger(value) || Number(value) < 1)\n throw invalid(`row has invalid ${name}`);\n return Number(value);\n}\nfunction stateField(row: object): E2BCacheEntryState {\n const value = stringField(row, \"state\");\n if (isFiniteValue(E2B_CACHE_ENTRY_STATES, value))\n return value;\n throw invalid(\"row has invalid state\");\n}\nfunction decodeEntry(value: unknown): E2BCacheEntry {\n if (!isRecord(value))\n throw invalid(\"entry query returned a non-object row\");\n const entry = {\n setupPrefixKey: stringField(value, \"setup_prefix_key\"),\n baseIdentity: stringField(value, \"base_identity\"),\n snapshotId: nullableStringField(value, \"snapshot_id\"),\n declarationDigest: stringField(value, \"declaration_digest\"),\n generation: positiveIntegerField(value, \"generation\"),\n createdAt: stringField(value, \"created_at\"),\n lastSuccessfulUseAt: nullableStringField(value, \"last_successful_use_at\"),\n replacementScope: stringField(value, \"replacement_scope\"),\n state: stateField(value),\n leaseId: nullableStringField(value, \"lease_id\"),\n leaseUntil: nullableStringField(value, \"lease_until\"),\n } as const;\n if ((entry.state === E2B_CACHE_STATE.building) !== (entry.leaseId !== null && entry.leaseUntil !== null)) {\n throw invalid(\"entry lease does not agree with state\");\n }\n if (entry.state === E2B_CACHE_STATE.indexed && entry.snapshotId === null)\n throw invalid(\"indexed entry has no snapshot id\");\n return Object.freeze(entry);\n}\nfunction decodeRoot(value: unknown): E2BCacheRoot {\n if (!isRecord(value))\n throw invalid(\"root query returned a non-object row\");\n return Object.freeze({\n rootId: stringField(value, \"root_id\"),\n setupPrefixKey: stringField(value, \"setup_prefix_key\"),\n sandboxId: stringField(value, \"sandbox_id\"),\n createdAt: stringField(value, \"created_at\"),\n });\n}\nfunction cleanupFor(entry: E2BCacheEntry): E2BCacheSnapshotCleanup {\n if (entry.snapshotId === null)\n throw invalid(\"cleanup candidate has no registered snapshot id\");\n return Object.freeze({ setupPrefixKey: entry.setupPrefixKey, generation: entry.generation, snapshotId: entry.snapshotId });\n}\nfunction inTransaction<Result>(database: DatabaseSync, operation: () => Result): Result {\n database.exec(\"BEGIN IMMEDIATE\");\n try {\n const result = operation();\n database.exec(\"COMMIT\");\n return result;\n }\n catch (cause) {\n if (database.isTransaction)\n database.exec(\"ROLLBACK\");\n throw cause;\n }\n}\nfunction expireLeases(database: DatabaseSync, now: string): void {\n database.prepare(`UPDATE ${EntriesTable} SET state = ${sqlLiteral(E2B_CACHE_STATE.unverified)}, lease_id = NULL, lease_until = NULL ` +\n `WHERE state = ${sqlLiteral(E2B_CACHE_STATE.building)} AND lease_until <= ?`).run(now);\n}\nfunction assertCurrentSchema(database: DatabaseSync): void {\n const rows = database.prepare(`SELECT type, name, tbl_name, sql FROM sqlite_schema WHERE tbl_name IN (?, ?, ?) OR name = ? ORDER BY type, name`).all(EntriesTable, RootsTable, ReplacementHeadsTable, CleanupIndex) as SchemaRow[];\n const required = [\n [\"table\", EntriesTable, EntriesTable, CreateEntries],\n [\"table\", RootsTable, RootsTable, CreateRoots],\n [\"table\", ReplacementHeadsTable, ReplacementHeadsTable, CreateReplacementHeads],\n [\"index\", CleanupIndex, EntriesTable, CreateCleanupIndex],\n [\"index\", GenerationIndex, EntriesTable, E2B_CACHE_GENERATION_INDEX_SQL],\n ] as const;\n for (const [type, name, table, sql] of required) {\n const row = rows.find((candidate) => candidate.type === type && candidate.name === name && candidate.tbl_name === table);\n if (row === undefined || typeof row.sql !== \"string\" || exactSql(row.sql) !== exactSql(sql)) {\n throw invalid(`schema does not match revision 2 (${name})`);\n }\n }\n const expectedObjects = new Set([\n EntriesTable,\n RootsTable,\n ReplacementHeadsTable,\n CleanupIndex,\n GenerationIndex,\n `sqlite_autoindex_${EntriesTable}_1`,\n `sqlite_autoindex_${EntriesTable}_2`,\n `sqlite_autoindex_${RootsTable}_1`,\n `sqlite_autoindex_${ReplacementHeadsTable}_1`,\n ]);\n if (rows.length !== expectedObjects.size || rows.some((row) => typeof row.name !== \"string\" || !expectedObjects.has(row.name))) {\n throw invalid(\"schema has missing or unexpected objects\");\n }\n}\n/** Frozen repository shape for the application migration 1 receipt. */\nexport function installE2BCacheSchemaV1(database: DatabaseSync): void {\n database.exec(`${CreateEntries}; ${CreateRoots}; ${CreateReplacementHeads}; ${CreateCleanupIndex};`);\n}\nfunction installCurrentSchema(database: DatabaseSync): void {\n installE2BCacheSchemaV1(database);\n database.exec(E2B_CACHE_GENERATION_INDEX_SQL);\n assertCurrentSchema(database);\n}\nfunction nextGeneration(database: DatabaseSync): number {\n const row = database.prepare(`SELECT COALESCE(MAX(generation), 0) AS generation FROM ${EntriesTable}`).get();\n if (!isRecord(row) || !Number.isSafeInteger(Reflect.get(row, \"generation\")) || Number(Reflect.get(row, \"generation\")) < 0) {\n throw invalid(\"generation query returned an invalid value\");\n }\n return Number(Reflect.get(row, \"generation\")) + 1;\n}\nfunction reconcile(database: DatabaseSync, request: Extract<E2BCacheRequest, {\n readonly operation: \"reconcile\";\n}>): E2BCacheResultFor<typeof request> {\n return inTransaction(database, () => {\n expireLeases(database, request.now);\n const candidates = database.prepare(`\n SELECT entry.* FROM ${EntriesTable} AS entry\n LEFT JOIN ${ReplacementHeadsTable} AS head ON head.replacement_scope = entry.replacement_scope\n WHERE entry.snapshot_id IS NOT NULL\n AND NOT EXISTS (SELECT 1 FROM ${RootsTable} WHERE ${RootsTable}.setup_prefix_key = entry.setup_prefix_key)\n AND (\n entry.state = ${sqlLiteral(E2B_CACHE_STATE.deleting)}\n OR (\n entry.state = ${sqlLiteral(E2B_CACHE_STATE.indexed)}\n AND entry.replacement_scope != ''\n AND entry.setup_prefix_key != head.setup_prefix_key\n AND (? IS NULL OR entry.replacement_scope = ?)\n AND (? IS NULL OR entry.setup_prefix_key != ?)\n )\n )\n `).all(request.replacementScope ?? null, request.replacementScope ?? null, request.exceptSetupPrefixKey ?? null, request.exceptSetupPrefixKey ?? null).map(decodeEntry);\n for (const entry of candidates) {\n if (entry.state === E2B_CACHE_STATE.indexed) {\n database.prepare(`UPDATE ${EntriesTable} SET state = ${sqlLiteral(E2B_CACHE_STATE.deleting)} WHERE setup_prefix_key = ? AND generation = ? AND state = ${sqlLiteral(E2B_CACHE_STATE.indexed)}`)\n .run(entry.setupPrefixKey, entry.generation);\n }\n }\n return Object.freeze({\n repository: E2B_CACHE_REPOSITORY,\n operation: \"reconcile\" as const,\n cleanup: Object.freeze(candidates.map(cleanupFor)),\n });\n });\n}\nfunction dispatch(database: DatabaseSync, request: E2BCacheRequest): E2BCacheResult {\n if (request.operation === \"lookup\") {\n return inTransaction(database, () => {\n expireLeases(database, request.now);\n const entry = database.prepare(`SELECT * FROM ${EntriesTable} WHERE setup_prefix_key = ? AND base_identity = ? AND state = ${sqlLiteral(E2B_CACHE_STATE.indexed)}`).get(request.setupPrefixKey, request.baseIdentity);\n if (entry === undefined) {\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"lookup\" as const, entry: null, root: null });\n }\n const decoded = decodeEntry(entry);\n const pendingSandboxId = `pending:${request.rootId}`;\n database.prepare(`INSERT INTO ${RootsTable}(root_id, setup_prefix_key, sandbox_id, created_at) VALUES (?, ?, ?, ?)`).run(request.rootId, decoded.setupPrefixKey, pendingSandboxId, request.now);\n return Object.freeze({\n repository: E2B_CACHE_REPOSITORY,\n operation: \"lookup\" as const,\n entry: decoded,\n root: Object.freeze({ rootId: request.rootId, setupPrefixKey: decoded.setupPrefixKey, sandboxId: pendingSandboxId, createdAt: request.now }),\n });\n });\n }\n if (request.operation === \"reserve\") {\n return inTransaction(database, () => {\n expireLeases(database, request.now);\n const existing = database.prepare(`SELECT * FROM ${EntriesTable} WHERE setup_prefix_key = ?`).get(request.setupPrefixKey);\n if (existing !== undefined) {\n const entry = decodeEntry(existing);\n if (entry.state === E2B_CACHE_STATE.indexed) {\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"reserve\" as const, disposition: E2B_CONTENTION_REASON.indexedGeneration });\n }\n if (entry.state === E2B_CACHE_STATE.building) {\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"reserve\" as const, disposition: E2B_CONTENTION_REASON.activeWriter });\n }\n }\n const generation = nextGeneration(database);\n database.prepare(`\n INSERT INTO ${EntriesTable}(\n setup_prefix_key, base_identity, snapshot_id, declaration_digest, generation, created_at,\n last_successful_use_at, replacement_scope, state, lease_id, lease_until\n ) VALUES (?, ?, NULL, ?, ?, ?, NULL, ?, ${sqlLiteral(E2B_CACHE_STATE.building)}, ?, ?)\n ON CONFLICT(setup_prefix_key) DO UPDATE SET\n base_identity = excluded.base_identity,\n snapshot_id = NULL,\n declaration_digest = excluded.declaration_digest,\n generation = excluded.generation,\n created_at = excluded.created_at,\n last_successful_use_at = NULL,\n replacement_scope = excluded.replacement_scope,\n state = ${sqlLiteral(E2B_CACHE_STATE.building)},\n lease_id = excluded.lease_id,\n lease_until = excluded.lease_until\n `).run(request.setupPrefixKey, request.baseIdentity, request.declarationDigest, generation, request.now, request.replacementScope, request.leaseId, request.leaseUntil);\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"reserve\" as const, disposition: E2B_RESERVATION_DISPOSITION.reserved, generation });\n });\n }\n if (request.operation === \"settle\") {\n return inTransaction(database, () => {\n const receipt = database.prepare(`\n UPDATE ${EntriesTable} SET snapshot_id = ?, state = ${sqlLiteral(E2B_CACHE_STATE.indexed)}, lease_id = NULL, lease_until = NULL\n WHERE setup_prefix_key = ? AND generation = ? AND lease_id = ? AND state = ${sqlLiteral(E2B_CACHE_STATE.building)} AND lease_until > ?\n `).run(request.snapshotId, request.setupPrefixKey, request.generation, request.leaseId, request.now);\n if (receipt.changes === 1) {\n const entry = database.prepare(`SELECT replacement_scope FROM ${EntriesTable} WHERE setup_prefix_key = ?`).get(request.setupPrefixKey);\n if (!isRecord(entry))\n throw invalid(\"settled entry disappeared\");\n const scope = stringField(entry, \"replacement_scope\");\n database.prepare(`\n INSERT INTO ${ReplacementHeadsTable}(replacement_scope, setup_prefix_key) VALUES (?, ?)\n ON CONFLICT(replacement_scope) DO UPDATE SET setup_prefix_key = excluded.setup_prefix_key\n `).run(scope, request.setupPrefixKey);\n }\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"settle\" as const, settled: receipt.changes === 1 });\n });\n }\n if (request.operation === \"abort\") {\n const receipt = database.prepare(`\n UPDATE ${EntriesTable} SET state = ${sqlLiteral(E2B_CACHE_STATE.unverified)}, lease_id = NULL, lease_until = NULL\n WHERE setup_prefix_key = ? AND generation = ? AND lease_id = ? AND state = ${sqlLiteral(E2B_CACHE_STATE.building)}\n `).run(request.setupPrefixKey, request.generation, request.leaseId);\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"abort\" as const, aborted: receipt.changes === 1 });\n }\n if (request.operation === \"settle-root\") {\n return inTransaction(database, () => {\n const root = database.prepare(`SELECT setup_prefix_key FROM ${RootsTable} WHERE root_id = ?`).get(request.rootId);\n if (!isRecord(root))\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"settle-root\" as const, settled: false });\n const setupPrefixKey = stringField(root, \"setup_prefix_key\");\n const updatedRoot = database.prepare(`UPDATE ${RootsTable} SET sandbox_id = ? WHERE root_id = ?`).run(request.sandboxId, request.rootId);\n const updatedEntry = database.prepare(`UPDATE ${EntriesTable} SET last_successful_use_at = ? WHERE setup_prefix_key = ? AND state = ${sqlLiteral(E2B_CACHE_STATE.indexed)}`)\n .run(request.now, setupPrefixKey);\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"settle-root\" as const, settled: updatedRoot.changes === 1 && updatedEntry.changes === 1 });\n });\n }\n if (request.operation === \"release-root\") {\n const receipt = database.prepare(`DELETE FROM ${RootsTable} WHERE root_id = ?`).run(request.rootId);\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"release-root\" as const, released: receipt.changes === 1 });\n }\n if (request.operation === \"adopt-root\") {\n return inTransaction(database, () => {\n const receipt = database.prepare(`\n INSERT INTO ${RootsTable}(root_id, setup_prefix_key, sandbox_id, created_at)\n SELECT ?, setup_prefix_key, ?, ? FROM ${EntriesTable}\n WHERE setup_prefix_key = ? AND generation = ? AND snapshot_id = ? AND state = ${sqlLiteral(E2B_CACHE_STATE.indexed)}\n `).run(request.rootId, request.sandboxId, request.now, request.setupPrefixKey, request.generation, request.snapshotId);\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"adopt-root\" as const, adopted: receipt.changes === 1 });\n });\n }\n if (request.operation === \"reconcile\")\n return reconcile(database, request);\n if (request.operation === \"clear\") {\n return inTransaction(database, () => {\n expireLeases(database, request.now);\n const row = database.prepare(`SELECT * FROM ${EntriesTable} WHERE setup_prefix_key = ?`).get(request.setupPrefixKey);\n if (row === undefined) {\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"clear\" as const, disposition: E2B_CLEAR_DISPOSITION.missing, cleanup: null });\n }\n const entry = decodeEntry(row);\n if (entry.state === E2B_CACHE_STATE.building) {\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"clear\" as const, disposition: E2B_CLEAR_DISPOSITION.activeLease, cleanup: null });\n }\n const activeRoot = database.prepare(`SELECT root_id FROM ${RootsTable} WHERE setup_prefix_key = ? LIMIT 1`).get(entry.setupPrefixKey);\n if (activeRoot !== undefined) {\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"clear\" as const, disposition: E2B_CLEAR_DISPOSITION.activeRoot, cleanup: null });\n }\n if (entry.snapshotId === null) {\n database.prepare(`UPDATE ${EntriesTable} SET state = ${sqlLiteral(E2B_CACHE_STATE.tombstoned)}, lease_id = NULL, lease_until = NULL WHERE setup_prefix_key = ?`)\n .run(entry.setupPrefixKey);\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"clear\" as const, disposition: E2B_CLEAR_DISPOSITION.cleared, cleanup: null });\n }\n database.prepare(`UPDATE ${EntriesTable} SET state = ${sqlLiteral(E2B_CACHE_STATE.deleting)} WHERE setup_prefix_key = ? AND generation = ?`)\n .run(entry.setupPrefixKey, entry.generation);\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"clear\" as const, disposition: E2B_CLEAR_DISPOSITION.cleared, cleanup: cleanupFor(entry) });\n });\n }\n const receipt = database.prepare(`\n UPDATE ${EntriesTable} SET state = CASE WHEN ? THEN ${sqlLiteral(E2B_CACHE_STATE.tombstoned)} ELSE ${sqlLiteral(E2B_CACHE_STATE.deleting)} END\n WHERE setup_prefix_key = ? AND generation = ? AND state = ${sqlLiteral(E2B_CACHE_STATE.deleting)}\n `).run(request.deleted ? 1 : 0, request.setupPrefixKey, request.generation);\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation: \"settle-delete\" as const, settled: receipt.changes === 1 });\n}\n/** This object is statically composed into UserDatabase's catalog by its owner. */\nexport const e2bCacheRepositoryHandler = Object.freeze({\n id: E2B_CACHE_REPOSITORY,\n installCurrentSchema,\n assertCurrentSchema,\n dispatch,\n});\nexport interface E2BCacheDatabase {\n readonly dispatch: <Request extends E2BCacheRequest>(request: Request) => Effect.Effect<E2BCacheResultFor<Request>, UserDatabaseFailure>;\n}\nexport interface E2BCacheRepository {\n readonly lookup: (input: Omit<Extract<E2BCacheRequest, {\n readonly operation: \"lookup\";\n }>, \"repository\" | \"operation\">) => Effect.Effect<Extract<E2BCacheResult, {\n readonly operation: \"lookup\";\n }>, UserDatabaseFailure>;\n readonly reserve: (input: Omit<Extract<E2BCacheRequest, {\n readonly operation: \"reserve\";\n }>, \"repository\" | \"operation\">) => Effect.Effect<Extract<E2BCacheResult, {\n readonly operation: \"reserve\";\n }>, UserDatabaseFailure>;\n readonly settle: (input: Omit<Extract<E2BCacheRequest, {\n readonly operation: \"settle\";\n }>, \"repository\" | \"operation\">) => Effect.Effect<Extract<E2BCacheResult, {\n readonly operation: \"settle\";\n }>, UserDatabaseFailure>;\n readonly abort: (input: Omit<Extract<E2BCacheRequest, {\n readonly operation: \"abort\";\n }>, \"repository\" | \"operation\">) => Effect.Effect<Extract<E2BCacheResult, {\n readonly operation: \"abort\";\n }>, UserDatabaseFailure>;\n readonly settleRoot: (input: Omit<Extract<E2BCacheRequest, {\n readonly operation: \"settle-root\";\n }>, \"repository\" | \"operation\">) => Effect.Effect<Extract<E2BCacheResult, {\n readonly operation: \"settle-root\";\n }>, UserDatabaseFailure>;\n readonly releaseRoot: (input: Omit<Extract<E2BCacheRequest, {\n readonly operation: \"release-root\";\n }>, \"repository\" | \"operation\">) => Effect.Effect<Extract<E2BCacheResult, {\n readonly operation: \"release-root\";\n }>, UserDatabaseFailure>;\n readonly adoptRoot: (input: Omit<Extract<E2BCacheRequest, {\n readonly operation: \"adopt-root\";\n }>, \"repository\" | \"operation\">) => Effect.Effect<Extract<E2BCacheResult, {\n readonly operation: \"adopt-root\";\n }>, UserDatabaseFailure>;\n readonly reconcile: (input: Omit<Extract<E2BCacheRequest, {\n readonly operation: \"reconcile\";\n }>, \"repository\" | \"operation\">) => Effect.Effect<Extract<E2BCacheResult, {\n readonly operation: \"reconcile\";\n }>, UserDatabaseFailure>;\n readonly clear: (input: Omit<Extract<E2BCacheRequest, {\n readonly operation: \"clear\";\n }>, \"repository\" | \"operation\">) => Effect.Effect<Extract<E2BCacheResult, {\n readonly operation: \"clear\";\n }>, UserDatabaseFailure>;\n readonly settleDelete: (input: Omit<Extract<E2BCacheRequest, {\n readonly operation: \"settle-delete\";\n }>, \"repository\" | \"operation\">) => Effect.Effect<Extract<E2BCacheResult, {\n readonly operation: \"settle-delete\";\n }>, UserDatabaseFailure>;\n}\nfunction request<Operation extends E2BCacheRequest[\"operation\"]>(operation: Operation, input: Omit<Extract<E2BCacheRequest, {\n readonly operation: Operation;\n}>, \"repository\" | \"operation\">): Extract<E2BCacheRequest, {\n readonly operation: Operation;\n}> {\n return Object.freeze({ repository: E2B_CACHE_REPOSITORY, operation, ...input }) as Extract<E2BCacheRequest, {\n readonly operation: Operation;\n }>;\n}\n/** Main-thread facade: the caller gets typed operations, never a DatabaseSync handle or SQL. */\nexport function e2bCacheRepository(database: E2BCacheDatabase): E2BCacheRepository {\n return Object.freeze({\n lookup: (input: Parameters<E2BCacheRepository[\"lookup\"]>[0]) => database.dispatch(request(\"lookup\", input)),\n reserve: (input: Parameters<E2BCacheRepository[\"reserve\"]>[0]) => database.dispatch(request(\"reserve\", input)),\n settle: (input: Parameters<E2BCacheRepository[\"settle\"]>[0]) => database.dispatch(request(\"settle\", input)),\n abort: (input: Parameters<E2BCacheRepository[\"abort\"]>[0]) => database.dispatch(request(\"abort\", input)),\n settleRoot: (input: Parameters<E2BCacheRepository[\"settleRoot\"]>[0]) => database.dispatch(request(\"settle-root\", input)),\n releaseRoot: (input: Parameters<E2BCacheRepository[\"releaseRoot\"]>[0]) => database.dispatch(request(\"release-root\", input)),\n adoptRoot: (input: Parameters<E2BCacheRepository[\"adoptRoot\"]>[0]) => database.dispatch(request(\"adopt-root\", input)),\n reconcile: (input: Parameters<E2BCacheRepository[\"reconcile\"]>[0]) => database.dispatch(request(\"reconcile\", input)),\n clear: (input: Parameters<E2BCacheRepository[\"clear\"]>[0]) => database.dispatch(request(\"clear\", input)),\n settleDelete: (input: Parameters<E2BCacheRepository[\"settleDelete\"]>[0]) => database.dispatch(request(\"settle-delete\", input)),\n });\n}\n/**\n * A short UserDatabase scope is deliberately opened per registry operation.\n * E2B RPCs are always outside that scope/SQLite transaction; the UserDatabase\n * worker remains the sole owner of paths and sqlite connections.\n */\nexport function e2bCacheRepositoryFromUserDatabase(open: () => Effect.Effect<UserDatabase, UserDatabaseFailure, Scope.Scope>): E2BCacheRepository {\n const operation = <Result>(select: (repository: E2BCacheRepository) => Effect.Effect<Result, UserDatabaseFailure>) => Effect.scoped(open().pipe(Effect.flatMap((database) => select(e2bCacheRepository(database as unknown as E2BCacheDatabase)))));\n return Object.freeze({\n lookup: (input: Parameters<E2BCacheRepository[\"lookup\"]>[0]) => operation((repository) => repository.lookup(input)),\n reserve: (input: Parameters<E2BCacheRepository[\"reserve\"]>[0]) => operation((repository) => repository.reserve(input)),\n settle: (input: Parameters<E2BCacheRepository[\"settle\"]>[0]) => operation((repository) => repository.settle(input)),\n abort: (input: Parameters<E2BCacheRepository[\"abort\"]>[0]) => operation((repository) => repository.abort(input)),\n settleRoot: (input: Parameters<E2BCacheRepository[\"settleRoot\"]>[0]) => operation((repository) => repository.settleRoot(input)),\n releaseRoot: (input: Parameters<E2BCacheRepository[\"releaseRoot\"]>[0]) => operation((repository) => repository.releaseRoot(input)),\n adoptRoot: (input: Parameters<E2BCacheRepository[\"adoptRoot\"]>[0]) => operation((repository) => repository.adoptRoot(input)),\n reconcile: (input: Parameters<E2BCacheRepository[\"reconcile\"]>[0]) => operation((repository) => repository.reconcile(input)),\n clear: (input: Parameters<E2BCacheRepository[\"clear\"]>[0]) => operation((repository) => repository.clear(input)),\n settleDelete: (input: Parameters<E2BCacheRepository[\"settleDelete\"]>[0]) => operation((repository) => repository.settleDelete(input)),\n });\n}\n"]}
|
|
@@ -162,7 +162,10 @@ export type E2BCacheResultFor<Request extends E2BCacheRequest> = Extract<E2BCach
|
|
|
162
162
|
/** Worker-side decoder for the closed E2B repository vocabulary. */
|
|
163
163
|
export declare function isE2BCacheRequest(value: unknown): value is E2BCacheRequest;
|
|
164
164
|
export declare function isE2BCacheResult(value: unknown): value is E2BCacheResult;
|
|
165
|
+
export declare const E2B_CACHE_GENERATION_INDEX_SQL = "CREATE INDEX e2b_cache_entries_generation ON e2b_cache_entries(generation)";
|
|
165
166
|
declare function assertCurrentSchema(database: DatabaseSync): void;
|
|
167
|
+
/** Frozen repository shape for the application migration 1 receipt. */
|
|
168
|
+
export declare function installE2BCacheSchemaV1(database: DatabaseSync): void;
|
|
166
169
|
declare function installCurrentSchema(database: DatabaseSync): void;
|
|
167
170
|
declare function dispatch(database: DatabaseSync, request: E2BCacheRequest): E2BCacheResult;
|
|
168
171
|
/** This object is statically composed into UserDatabase's catalog by its owner. */
|
|
@@ -162,7 +162,10 @@ export type E2BCacheResultFor<Request extends E2BCacheRequest> = Extract<E2BCach
|
|
|
162
162
|
/** Worker-side decoder for the closed E2B repository vocabulary. */
|
|
163
163
|
export declare function isE2BCacheRequest(value: unknown): value is E2BCacheRequest;
|
|
164
164
|
export declare function isE2BCacheResult(value: unknown): value is E2BCacheResult;
|
|
165
|
+
export declare const E2B_CACHE_GENERATION_INDEX_SQL = "CREATE INDEX e2b_cache_entries_generation ON e2b_cache_entries(generation)";
|
|
165
166
|
declare function assertCurrentSchema(database: DatabaseSync): void;
|
|
167
|
+
/** Frozen repository shape for the application migration 1 receipt. */
|
|
168
|
+
export declare function installE2BCacheSchemaV1(database: DatabaseSync): void;
|
|
166
169
|
declare function installCurrentSchema(database: DatabaseSync): void;
|
|
167
170
|
declare function dispatch(database: DatabaseSync, request: E2BCacheRequest): E2BCacheResult;
|
|
168
171
|
/** This object is statically composed into UserDatabase's catalog by its owner. */
|
|
@@ -162,7 +162,10 @@ export type E2BCacheResultFor<Request extends E2BCacheRequest> = Extract<E2BCach
|
|
|
162
162
|
/** Worker-side decoder for the closed E2B repository vocabulary. */
|
|
163
163
|
export declare function isE2BCacheRequest(value: unknown): value is E2BCacheRequest;
|
|
164
164
|
export declare function isE2BCacheResult(value: unknown): value is E2BCacheResult;
|
|
165
|
+
export declare const E2B_CACHE_GENERATION_INDEX_SQL = "CREATE INDEX e2b_cache_entries_generation ON e2b_cache_entries(generation)";
|
|
165
166
|
declare function assertCurrentSchema(database: DatabaseSync): void;
|
|
167
|
+
/** Frozen repository shape for the application migration 1 receipt. */
|
|
168
|
+
export declare function installE2BCacheSchemaV1(database: DatabaseSync): void;
|
|
166
169
|
declare function installCurrentSchema(database: DatabaseSync): void;
|
|
167
170
|
declare function dispatch(database: DatabaseSync, request: E2BCacheRequest): E2BCacheResult;
|
|
168
171
|
/** This object is statically composed into UserDatabase's catalog by its owner. */
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import { createRequire as __niceevalCreateRequire } from "node:module";
|
|
2
2
|
const __niceevalRequire = __niceevalCreateRequire(import.meta.url);
|
|
3
3
|
const __niceevalCanonical = __niceevalRequire("./e2b-cache-repository.cjs");
|
|
4
|
-
const __niceevalExport0 = __niceevalCanonical["
|
|
5
|
-
export { __niceevalExport0 as
|
|
6
|
-
const __niceevalExport1 = __niceevalCanonical["
|
|
7
|
-
export { __niceevalExport1 as
|
|
8
|
-
const __niceevalExport2 = __niceevalCanonical["
|
|
9
|
-
export { __niceevalExport2 as
|
|
10
|
-
const __niceevalExport3 = __niceevalCanonical["
|
|
11
|
-
export { __niceevalExport3 as
|
|
12
|
-
const __niceevalExport4 = __niceevalCanonical["
|
|
13
|
-
export { __niceevalExport4 as
|
|
14
|
-
const __niceevalExport5 = __niceevalCanonical["
|
|
15
|
-
export { __niceevalExport5 as
|
|
4
|
+
const __niceevalExport0 = __niceevalCanonical["E2B_CACHE_GENERATION_INDEX_SQL"];
|
|
5
|
+
export { __niceevalExport0 as E2B_CACHE_GENERATION_INDEX_SQL };
|
|
6
|
+
const __niceevalExport1 = __niceevalCanonical["E2B_CACHE_REPOSITORY"];
|
|
7
|
+
export { __niceevalExport1 as E2B_CACHE_REPOSITORY };
|
|
8
|
+
const __niceevalExport2 = __niceevalCanonical["e2bCacheRepository"];
|
|
9
|
+
export { __niceevalExport2 as e2bCacheRepository };
|
|
10
|
+
const __niceevalExport3 = __niceevalCanonical["e2bCacheRepositoryFromUserDatabase"];
|
|
11
|
+
export { __niceevalExport3 as e2bCacheRepositoryFromUserDatabase };
|
|
12
|
+
const __niceevalExport4 = __niceevalCanonical["e2bCacheRepositoryHandler"];
|
|
13
|
+
export { __niceevalExport4 as e2bCacheRepositoryHandler };
|
|
14
|
+
const __niceevalExport5 = __niceevalCanonical["installE2BCacheSchemaV1"];
|
|
15
|
+
export { __niceevalExport5 as installE2BCacheSchemaV1 };
|
|
16
|
+
const __niceevalExport6 = __niceevalCanonical["isE2BCacheRequest"];
|
|
17
|
+
export { __niceevalExport6 as isE2BCacheRequest };
|
|
18
|
+
const __niceevalExport7 = __niceevalCanonical["isE2BCacheResult"];
|
|
19
|
+
export { __niceevalExport7 as isE2BCacheResult };
|
|
16
20
|
//# sourceMappingURL=e2b-cache-repository.js.map
|
package/dist/sandbox/e2b.cjs
CHANGED
|
@@ -334,12 +334,12 @@ class E2BSandbox {
|
|
|
334
334
|
// E2B does not expose a digest for a template ref. The declared ref is
|
|
335
335
|
// still part of the complete Case identity, and snapshots never float.
|
|
336
336
|
baseImageId: `e2b-template:${this.baseTemplate ?? "base"}`,
|
|
337
|
-
keyScope: {
|
|
337
|
+
keyScope: (0, backend_ts_1.decodeSandboxSetupPrefixCacheKeyScope)({
|
|
338
338
|
protocol: "niceeval-e2b-snapshot-setup-prefix/v1",
|
|
339
339
|
storageSchemaRevision: "niceeval.e2b-setup-prefix-storage/v1",
|
|
340
340
|
artifactFormatRevision: "niceeval.e2b-snapshot/v1",
|
|
341
341
|
semanticIdentity: { capture: "e2b-snapshot", baseTemplate: this.baseTemplate ?? "base" },
|
|
342
|
-
},
|
|
342
|
+
}),
|
|
343
343
|
}),
|
|
344
344
|
captureSnapshot: async () => {
|
|
345
345
|
const snapshot = await this.sbx.createSnapshot({ apiKey: process.env.E2B_API_KEY });
|