niceeval 0.16.3-canary.99 → 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.
Files changed (258) hide show
  1. package/dist/cli/bootstrap.cjs +7 -1
  2. package/dist/cli/bootstrap.cjs.map +1 -1
  3. package/dist/cli/project-configuration.cjs +8 -11
  4. package/dist/cli/project-configuration.cjs.map +1 -1
  5. package/dist/expect/index.cjs.map +1 -1
  6. package/dist/expect/index.d.cts +1 -0
  7. package/dist/expect/index.d.mts +1 -0
  8. package/dist/expect/index.d.ts +1 -0
  9. package/dist/experiment/host/cli/contribution.cjs +6 -11
  10. package/dist/experiment/host/cli/contribution.cjs.map +1 -1
  11. package/dist/experiment/host/cli/contribution.d.cts +0 -16
  12. package/dist/experiment/host/cli/contribution.d.mts +0 -16
  13. package/dist/experiment/host/cli/contribution.d.ts +0 -16
  14. package/dist/experiment/host/operations.cjs +3 -3
  15. package/dist/experiment/host/operations.cjs.map +1 -1
  16. package/dist/experiment/host/types.cjs.map +1 -1
  17. package/dist/experiment/host/types.d.cts +0 -4
  18. package/dist/experiment/host/types.d.mts +0 -4
  19. package/dist/experiment/host/types.d.ts +0 -4
  20. package/dist/fresh-import.cjs +2 -2
  21. package/dist/fresh-import.cjs.map +1 -1
  22. package/dist/fresh-import.d.cts +3 -3
  23. package/dist/fresh-import.d.mts +3 -3
  24. package/dist/fresh-import.d.ts +3 -3
  25. package/dist/index.cjs.map +1 -1
  26. package/dist/index.d.cts +1 -0
  27. package/dist/index.d.mts +1 -0
  28. package/dist/index.d.ts +1 -0
  29. package/dist/inspection/codec.cjs.map +1 -1
  30. package/dist/inspection/codec.d.cts +1 -1
  31. package/dist/inspection/codec.d.mts +1 -1
  32. package/dist/inspection/codec.d.ts +1 -1
  33. package/dist/inspection/facts.cjs +66 -9
  34. package/dist/inspection/facts.cjs.map +1 -1
  35. package/dist/inspection/facts.d.cts +4 -0
  36. package/dist/inspection/facts.d.mts +4 -0
  37. package/dist/inspection/facts.d.ts +4 -0
  38. package/dist/inspection/facts.js +4 -2
  39. package/dist/inspection/index.cjs +1 -3
  40. package/dist/inspection/index.cjs.map +1 -1
  41. package/dist/inspection/index.d.cts +1 -1
  42. package/dist/inspection/index.d.mts +1 -1
  43. package/dist/inspection/index.d.ts +1 -1
  44. package/dist/inspection/index.js +44 -48
  45. package/dist/inspection/limits.cjs +3 -1
  46. package/dist/inspection/limits.cjs.map +1 -1
  47. package/dist/inspection/limits.d.cts +2 -0
  48. package/dist/inspection/limits.d.mts +2 -0
  49. package/dist/inspection/limits.d.ts +2 -0
  50. package/dist/inspection/limits.js +6 -4
  51. package/dist/inspection/project-source.cjs +4 -1
  52. package/dist/inspection/project-source.cjs.map +1 -1
  53. package/dist/inspection/protocol.cjs +10 -18
  54. package/dist/inspection/protocol.cjs.map +1 -1
  55. package/dist/inspection/protocol.d.cts +111 -173
  56. package/dist/inspection/protocol.d.mts +111 -173
  57. package/dist/inspection/protocol.d.ts +111 -173
  58. package/dist/inspection/public.mjs +73 -109
  59. package/dist/inspection/results.cjs +12 -48
  60. package/dist/inspection/results.cjs.map +1 -1
  61. package/dist/inspection/results.d.cts +124 -122
  62. package/dist/inspection/results.d.mts +124 -122
  63. package/dist/inspection/results.d.ts +124 -122
  64. package/dist/inspection/results.js +16 -20
  65. package/dist/inspection/select.cjs +80 -117
  66. package/dist/inspection/select.cjs.map +1 -1
  67. package/dist/inspection/source.cjs +14 -15
  68. package/dist/inspection/source.cjs.map +1 -1
  69. package/dist/inspection/source.d.cts +6 -3
  70. package/dist/inspection/source.d.mts +6 -3
  71. package/dist/inspection/source.d.ts +6 -3
  72. package/dist/inspection/trace.cjs +1 -1
  73. package/dist/inspection/trace.cjs.map +1 -1
  74. package/dist/load-config.cjs +17 -11
  75. package/dist/load-config.cjs.map +1 -1
  76. package/dist/load-config.d.cts +3 -2
  77. package/dist/load-config.d.mts +3 -2
  78. package/dist/load-config.d.ts +3 -2
  79. package/dist/o11y/adapter-usage-projection.cjs +5 -1
  80. package/dist/o11y/adapter-usage-projection.cjs.map +1 -1
  81. package/dist/o11y/adapter-usage-projection.d.cts +109 -1
  82. package/dist/o11y/adapter-usage-projection.d.mts +109 -1
  83. package/dist/o11y/adapter-usage-projection.d.ts +109 -1
  84. package/dist/o11y/cache-read.cjs +113 -0
  85. package/dist/o11y/cache-read.cjs.map +1 -0
  86. package/dist/o11y/cache-read.d.cts +80 -0
  87. package/dist/o11y/cache-read.d.mts +80 -0
  88. package/dist/o11y/cache-read.d.ts +80 -0
  89. package/dist/o11y/cache-read.js +8 -0
  90. package/dist/o11y/cache-read.js.map +1 -0
  91. package/dist/o11y/eval-usage.cjs +4 -1
  92. package/dist/o11y/eval-usage.cjs.map +1 -1
  93. package/dist/o11y/eval-usage.d.cts +4 -1
  94. package/dist/o11y/eval-usage.d.mts +4 -1
  95. package/dist/o11y/eval-usage.d.ts +4 -1
  96. package/dist/record/host/sqlite-host.cjs +188 -53
  97. package/dist/record/host/sqlite-host.cjs.map +1 -1
  98. package/dist/record/host/sqlite-host.d.cts +37 -1
  99. package/dist/record/host/sqlite-host.d.mts +37 -1
  100. package/dist/record/host/sqlite-host.d.ts +37 -1
  101. package/dist/record/host/sqlite-host.js +16 -8
  102. package/dist/record/maintenance/runtime.cjs +3 -3
  103. package/dist/record/maintenance/runtime.cjs.map +1 -1
  104. package/dist/record/sqlite/admission-repository.cjs +18 -18
  105. package/dist/record/sqlite/admission-repository.cjs.map +1 -1
  106. package/dist/record/sqlite/case-repository.cjs +6 -6
  107. package/dist/record/sqlite/case-repository.cjs.map +1 -1
  108. package/dist/record/sqlite/coordination-repository.cjs +25 -25
  109. package/dist/record/sqlite/coordination-repository.cjs.map +1 -1
  110. package/dist/record/sqlite/current-schema.cjs +115 -111
  111. package/dist/record/sqlite/current-schema.cjs.map +1 -1
  112. package/dist/record/sqlite/current-schema.d.cts +3 -3
  113. package/dist/record/sqlite/current-schema.d.mts +3 -3
  114. package/dist/record/sqlite/current-schema.d.ts +3 -3
  115. package/dist/record/sqlite/database.cjs +56 -53
  116. package/dist/record/sqlite/database.cjs.map +1 -1
  117. package/dist/record/sqlite/index.cjs +3 -1
  118. package/dist/record/sqlite/index.cjs.map +1 -1
  119. package/dist/record/sqlite/index.d.cts +5 -2
  120. package/dist/record/sqlite/index.d.mts +5 -2
  121. package/dist/record/sqlite/index.d.ts +5 -2
  122. package/dist/record/sqlite/legacy-schema-018.cjs +443 -0
  123. package/dist/record/sqlite/legacy-schema-018.cjs.map +1 -0
  124. package/dist/record/sqlite/legacy-schema-018.d.cts +6 -0
  125. package/dist/record/sqlite/legacy-schema-018.d.mts +6 -0
  126. package/dist/record/sqlite/legacy-schema-018.d.ts +6 -0
  127. package/dist/record/sqlite/legacy-schema-018.js +6 -0
  128. package/dist/record/sqlite/legacy-schema-018.js.map +1 -0
  129. package/dist/record/sqlite/migration.cjs +105 -46
  130. package/dist/record/sqlite/migration.cjs.map +1 -1
  131. package/dist/record/sqlite/migration.d.cts +2 -1
  132. package/dist/record/sqlite/migration.d.mts +2 -1
  133. package/dist/record/sqlite/migration.d.ts +2 -1
  134. package/dist/record/sqlite/portable-capture.cjs +13 -13
  135. package/dist/record/sqlite/portable-capture.cjs.map +1 -1
  136. package/dist/record/sqlite/registry-repository.cjs +22 -22
  137. package/dist/record/sqlite/registry-repository.cjs.map +1 -1
  138. package/dist/record/sqlite/schema.cjs +10 -2
  139. package/dist/record/sqlite/schema.cjs.map +1 -1
  140. package/dist/record/sqlite/schema.d.cts +4 -1
  141. package/dist/record/sqlite/schema.d.mts +4 -1
  142. package/dist/record/sqlite/schema.d.ts +4 -1
  143. package/dist/record/sqlite/schema.js +20 -14
  144. package/dist/record/sqlite/storage-worker.cjs +1 -1
  145. package/dist/record/sqlite/storage-worker.cjs.map +1 -1
  146. package/dist/record/sqlite/storage.cjs +316 -232
  147. package/dist/record/sqlite/storage.cjs.map +1 -1
  148. package/dist/record/sqlite/storage.d.cts +10 -2
  149. package/dist/record/sqlite/storage.d.mts +10 -2
  150. package/dist/record/sqlite/storage.d.ts +10 -2
  151. package/dist/record/sqlite/storage.js +54 -50
  152. package/dist/record/sqlite/types.cjs +1 -1
  153. package/dist/record/sqlite/types.cjs.map +1 -1
  154. package/dist/record/sqlite/types.d.cts +13 -1
  155. package/dist/record/sqlite/types.d.mts +13 -1
  156. package/dist/record/sqlite/types.d.ts +13 -1
  157. package/dist/run/cli/contribution.cjs +17 -12
  158. package/dist/run/cli/contribution.cjs.map +1 -1
  159. package/dist/run/host/lifecycle-adapter.cjs +1 -1
  160. package/dist/run/host/lifecycle-adapter.cjs.map +1 -1
  161. package/dist/run/storage/owner-identity.cjs +78 -16
  162. package/dist/run/storage/owner-identity.cjs.map +1 -1
  163. package/dist/run/storage/owner-identity.d.cts +2 -1
  164. package/dist/run/storage/owner-identity.d.mts +2 -1
  165. package/dist/run/storage/owner-identity.d.ts +2 -1
  166. package/dist/run/storage/sqlite.cjs +55 -55
  167. package/dist/run/storage/sqlite.cjs.map +1 -1
  168. package/dist/runner/accept.cjs +12 -42
  169. package/dist/runner/accept.cjs.map +1 -1
  170. package/dist/runner/accept.d.cts +2 -3
  171. package/dist/runner/accept.d.mts +2 -3
  172. package/dist/runner/accept.d.ts +2 -3
  173. package/dist/runner/adapter-usage.cjs +2 -2
  174. package/dist/runner/adapter-usage.cjs.map +1 -1
  175. package/dist/runner/adoption.cjs +14 -26
  176. package/dist/runner/adoption.cjs.map +1 -1
  177. package/dist/runner/adoption.d.cts +5 -13
  178. package/dist/runner/adoption.d.mts +5 -13
  179. package/dist/runner/adoption.d.ts +5 -13
  180. package/dist/runner/adoption.js +2 -4
  181. package/dist/runner/record.cjs +24 -18
  182. package/dist/runner/record.cjs.map +1 -1
  183. package/dist/runner/rename-experiment.cjs +5 -7
  184. package/dist/runner/rename-experiment.cjs.map +1 -1
  185. package/dist/runner/reuse-plan.cjs +37 -18
  186. package/dist/runner/reuse-plan.cjs.map +1 -1
  187. package/dist/runner/reuse-plan.d.cts +4 -1
  188. package/dist/runner/reuse-plan.d.mts +4 -1
  189. package/dist/runner/reuse-plan.d.ts +4 -1
  190. package/dist/runner/setup-prefix-plan.cjs +17 -12
  191. package/dist/runner/setup-prefix-plan.cjs.map +1 -1
  192. package/dist/runner/setup-prefix-plan.d.cts +0 -2
  193. package/dist/runner/setup-prefix-plan.d.mts +0 -2
  194. package/dist/runner/setup-prefix-plan.d.ts +0 -2
  195. package/dist/runner/setup-prefix-plan.js +8 -12
  196. package/dist/sandbox/backend.cjs +10 -1
  197. package/dist/sandbox/backend.cjs.map +1 -1
  198. package/dist/sandbox/backend.d.cts +16 -8
  199. package/dist/sandbox/backend.d.mts +16 -8
  200. package/dist/sandbox/backend.d.ts +16 -8
  201. package/dist/sandbox/backend.js +28 -26
  202. package/dist/sandbox/docker.cjs +7 -1
  203. package/dist/sandbox/docker.cjs.map +1 -1
  204. package/dist/sandbox/e2b-cache-repository.cjs +13 -3
  205. package/dist/sandbox/e2b-cache-repository.cjs.map +1 -1
  206. package/dist/sandbox/e2b-cache-repository.d.cts +3 -0
  207. package/dist/sandbox/e2b-cache-repository.d.mts +3 -0
  208. package/dist/sandbox/e2b-cache-repository.d.ts +3 -0
  209. package/dist/sandbox/e2b-cache-repository.js +16 -12
  210. package/dist/sandbox/e2b.cjs +2 -2
  211. package/dist/sandbox/e2b.cjs.map +1 -1
  212. package/dist/sandbox/incus/materialize.cjs +1 -1
  213. package/dist/sandbox/incus/materialize.cjs.map +1 -1
  214. package/dist/show/contribution.cjs +3 -3
  215. package/dist/show/contribution.cjs.map +1 -1
  216. package/dist/show/model.cjs +14 -13
  217. package/dist/show/model.cjs.map +1 -1
  218. package/dist/show/model.d.cts +7 -7
  219. package/dist/show/model.d.mts +7 -7
  220. package/dist/show/model.d.ts +7 -7
  221. package/dist/show/render.cjs +14 -0
  222. package/dist/show/render.cjs.map +1 -1
  223. package/dist/user-database/storage-worker.cjs +13 -3
  224. package/dist/user-database/storage-worker.cjs.map +1 -1
  225. package/dist/view/app-dist/.vite/manifest.json +2 -2
  226. package/dist/view/app-dist/assets/{index-CmVoXbwG.js → index-B3ijZRph.js} +17 -17
  227. package/dist/view/app-dist/assets/{quality-cost-scatter-BuLISaH4.js → quality-cost-scatter-B--DfJ9s.js} +1 -1
  228. package/dist/view/app-dist/index.html +1 -1
  229. package/dist/view/application-runtime.cjs +8 -0
  230. package/dist/view/application-runtime.cjs.map +1 -0
  231. package/dist/view/application-runtime.d.cts +9 -0
  232. package/dist/view/application-runtime.d.mts +9 -0
  233. package/dist/view/application-runtime.d.ts +9 -0
  234. package/dist/view/application-runtime.js +6 -0
  235. package/dist/view/application-runtime.js.map +1 -0
  236. package/dist/view/cli/contribution.cjs +5 -2
  237. package/dist/view/cli/contribution.cjs.map +1 -1
  238. package/dist/view/cli/contribution.d.cts +2 -1
  239. package/dist/view/cli/contribution.d.mts +2 -1
  240. package/dist/view/cli/contribution.d.ts +2 -1
  241. package/dist/view/function-runtime.mjs +1019 -456
  242. package/dist/view/http-protocol.d.cts +1 -9
  243. package/dist/view/http-protocol.d.mts +1 -9
  244. package/dist/view/http-protocol.d.ts +1 -9
  245. package/dist/view/inspection-host.cjs +39 -30
  246. package/dist/view/inspection-host.cjs.map +1 -1
  247. package/dist/view/inspection-host.d.cts +7545 -2
  248. package/dist/view/inspection-host.d.mts +7545 -2
  249. package/dist/view/inspection-host.d.ts +7545 -2
  250. package/dist/view/server.cjs +8 -5
  251. package/dist/view/server.cjs.map +1 -1
  252. package/dist/view/server.d.cts +4 -2
  253. package/dist/view/server.d.mts +4 -2
  254. package/dist/view/server.d.ts +4 -2
  255. package/docs-site/zh/reference/cli.mdx +1 -2
  256. package/docs-site/zh/tutorials/control-run-cost.mdx +22 -0
  257. package/docs-site/zh/tutorials/niceeval-taste-application.mdx +21 -0
  258. package/package.json +1 -1
@@ -20,7 +20,7 @@ const HostFormatIdentity = "niceeval-user-database/0.14.0";
20
20
  const UnsupportedPrereleaseIdentities = new Set(["niceeval-user-database/v2"]);
21
21
  const MigrationBaseline = "0.14.0";
22
22
  const CreateHostFormat = `CREATE TABLE ${HostFormatTable} (format_id TEXT PRIMARY KEY CHECK(format_id = '${HostFormatIdentity}')) STRICT`;
23
- const CurrentVersion = 1;
23
+ const CurrentVersion = 2;
24
24
  function schemaObjectKey([type, name, table]) {
25
25
  return `${type}\u0000${name}\u0000${table}`;
26
26
  }
@@ -56,6 +56,7 @@ const AllowedSchemaObjects = new Set([
56
56
  ["index", "docker_setup_prefix_writer", "docker_setup_prefix_entries"],
57
57
  ["index", "docker_setup_prefix_replacement_scope", "docker_setup_prefix_replacement_scopes"],
58
58
  ["index", "e2b_cache_entries_cleanup", "e2b_cache_entries"],
59
+ ["index", "e2b_cache_entries_generation", "e2b_cache_entries"],
59
60
  ["trigger", "docker_setup_prefix_exact_base_insert", "docker_setup_prefix_entries"],
60
61
  ["trigger", "docker_setup_prefix_exact_base_update", "docker_setup_prefix_entries"],
61
62
  ["index", "sqlite_autoindex___niceeval_user_database_format_1", HostFormatTable],
@@ -181,12 +182,21 @@ const UserDatabaseMigrationCatalog = (0, sqlite_migration_kernel_ts_1.defineSqli
181
182
  version: 1,
182
183
  digest: Migration1Digest,
183
184
  apply: (database) => {
184
- for (const handler of catalog_ts_1.userDatabaseRepositoryCatalog)
185
- handler.installCurrentSchema(database);
185
+ for (const handler of catalog_ts_1.userDatabaseRepositoryCatalog) {
186
+ if (handler.id === e2b_cache_repository_ts_1.E2B_CACHE_REPOSITORY)
187
+ (0, e2b_cache_repository_ts_1.installE2BCacheSchemaV1)(database);
188
+ else
189
+ handler.installCurrentSchema(database);
190
+ }
186
191
  database.exec(CreateHostFormat);
187
192
  database.prepare(`INSERT INTO ${HostFormatTable}(format_id) VALUES (?)`).run(HostFormatIdentity);
188
193
  },
189
194
  }),
195
+ Object.freeze({
196
+ version: 2,
197
+ digest: (0, node_crypto_1.createHash)("sha256").update(`niceeval.user-database/${MigrationBaseline}/migration/2\0`).update(e2b_cache_repository_ts_1.E2B_CACHE_GENERATION_INDEX_SQL).digest("hex"),
198
+ apply: (database) => { database.exec(e2b_cache_repository_ts_1.E2B_CACHE_GENERATION_INDEX_SQL); },
199
+ }),
190
200
  ], CurrentVersion);
191
201
  function receipt(status, fromVersion = 0) {
192
202
  const receipts = Object.freeze(UserDatabaseMigrationCatalog.map(({ version, digest }) => Object.freeze({ version, digest })));
@@ -1 +1 @@
1
- {"version":3,"file":"storage-worker.js","sourceRoot":"","sources":["storage-worker.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash, randomUUID } from \"node:crypto\";\nimport { constants as fsConstants } from \"node:fs\";\nimport { access, link, mkdir, open as openFile, unlink } from \"node:fs/promises\";\nimport { basename, dirname, join } from \"node:path\";\nimport { constants, DatabaseSync } from \"node:sqlite\";\nimport { isMainThread, parentPort, workerData } from \"node:worker_threads\";\nimport { defineSqliteMigrationCatalog, inspectSqliteMigrationLedger, migrateSqliteDatabase, SqliteMigrationKernelFailure, sqliteMigrationLedgerSql, } from \"../sqlite-migration-kernel.ts\";\nimport { isDockerCacheRepositoryRequest } from \"../sandbox/docker-cache-repository.ts\";\nimport { isE2BCacheRequest } from \"../sandbox/e2b-cache-repository.ts\";\nimport { isIncusRepositoryRequest } from \"../sandbox/incus/repository.ts\";\nimport { UserDatabaseInvalid, UserDatabaseLegacyFound, UserDatabaseUnsupported, } from \"./errors.ts\";\nimport { DURABLE_STATE_REPOSITORY, type DurableStateRequest, type UserDatabaseRepositoryRequest, type UserDatabaseMigrationResult, type UserDatabaseWorkerData, type UserDatabaseWorkerFailure, type UserDatabaseWorkerRequest, type UserDatabaseWorkerResponse, } from \"./protocol.ts\";\nimport { dispatchUserDatabaseRepository, repositoryHandlerFor, userDatabaseRepositoryCatalog, } from \"./repositories/catalog.ts\";\nconst LedgerTable = \"__niceeval_user_database_schema_migrations\";\nconst CreateLedger = sqliteMigrationLedgerSql(LedgerTable);\nconst HostFormatTable = \"__niceeval_user_database_format\";\nconst HostFormatIdentity = \"niceeval-user-database/0.14.0\";\nconst UnsupportedPrereleaseIdentities = new Set([\"niceeval-user-database/v2\"]);\nconst MigrationBaseline = \"0.14.0\";\nconst CreateHostFormat = `CREATE TABLE ${HostFormatTable} (format_id TEXT PRIMARY KEY CHECK(format_id = '${HostFormatIdentity}')) STRICT`;\nconst CurrentVersion = 1;\nfunction schemaObjectKey([type, name, table]: readonly string[]): string {\n return `${type}\\u0000${name}\\u0000${table}`;\n}\n/** UserDatabase is one static application format with one complete final schema. */\nconst AllowedSchemaObjects = new Set<string>([\n [\"table\", HostFormatTable, HostFormatTable],\n [\"table\", LedgerTable, LedgerTable],\n [\"table\", \"durable_state_entries\", \"durable_state_entries\"],\n [\"table\", \"docker_cache_domains\", \"docker_cache_domains\"],\n [\"table\", \"docker_cache_metadata\", \"docker_cache_metadata\"],\n [\"table\", \"docker_task_build_entries\", \"docker_task_build_entries\"],\n [\"table\", \"docker_task_build_leases\", \"docker_task_build_leases\"],\n [\"table\", \"docker_task_build_roots\", \"docker_task_build_roots\"],\n [\"table\", \"docker_cache_gc_plans\", \"docker_cache_gc_plans\"],\n [\"table\", \"docker_image_gc_locks\", \"docker_image_gc_locks\"],\n [\"table\", \"docker_setup_prefix_entries\", \"docker_setup_prefix_entries\"],\n [\"table\", \"docker_setup_prefix_index\", \"docker_setup_prefix_index\"],\n [\"table\", \"docker_setup_prefix_generation_fences\", \"docker_setup_prefix_generation_fences\"],\n [\"table\", \"docker_setup_prefix_replacement_scopes\", \"docker_setup_prefix_replacement_scopes\"],\n [\"table\", \"docker_setup_prefix_replacement_heads\", \"docker_setup_prefix_replacement_heads\"],\n [\"table\", \"docker_setup_prefix_leases\", \"docker_setup_prefix_leases\"],\n [\"table\", \"docker_setup_prefix_roots\", \"docker_setup_prefix_roots\"],\n [\"table\", \"e2b_cache_entries\", \"e2b_cache_entries\"],\n [\"table\", \"e2b_cache_roots\", \"e2b_cache_roots\"],\n [\"table\", \"e2b_cache_replacement_heads\", \"e2b_cache_replacement_heads\"],\n [\"table\", \"incus_allocation_intents\", \"incus_allocation_intents\"],\n [\"table\", \"incus_artifact_intents\", \"incus_artifact_intents\"],\n [\"table\", \"incus_admission_leases\", \"incus_admission_leases\"],\n [\"table\", \"incus_artifact_replacement_heads\", \"incus_artifact_replacement_heads\"],\n [\"table\", \"incus_artifact_consumer_leases\", \"incus_artifact_consumer_leases\"],\n [\"table\", \"incus_artifact_destroy_receipts\", \"incus_artifact_destroy_receipts\"],\n [\"table\", \"incus_artifact_release_receipts\", \"incus_artifact_release_receipts\"],\n [\"index\", \"docker_setup_prefix_writer\", \"docker_setup_prefix_entries\"],\n [\"index\", \"docker_setup_prefix_replacement_scope\", \"docker_setup_prefix_replacement_scopes\"],\n [\"index\", \"e2b_cache_entries_cleanup\", \"e2b_cache_entries\"],\n [\"trigger\", \"docker_setup_prefix_exact_base_insert\", \"docker_setup_prefix_entries\"],\n [\"trigger\", \"docker_setup_prefix_exact_base_update\", \"docker_setup_prefix_entries\"],\n [\"index\", \"sqlite_autoindex___niceeval_user_database_format_1\", HostFormatTable],\n [\"index\", \"sqlite_autoindex_durable_state_entries_1\", \"durable_state_entries\"],\n [\"index\", \"sqlite_autoindex_docker_cache_domains_1\", \"docker_cache_domains\"],\n [\"index\", \"sqlite_autoindex_docker_cache_gc_plans_1\", \"docker_cache_gc_plans\"],\n [\"index\", \"sqlite_autoindex_docker_cache_metadata_1\", \"docker_cache_metadata\"],\n [\"index\", \"sqlite_autoindex_docker_image_gc_locks_1\", \"docker_image_gc_locks\"],\n [\"index\", \"sqlite_autoindex_docker_setup_prefix_entries_1\", \"docker_setup_prefix_entries\"],\n [\"index\", \"sqlite_autoindex_docker_setup_prefix_entries_2\", \"docker_setup_prefix_entries\"],\n [\"index\", \"sqlite_autoindex_docker_setup_prefix_generation_fences_1\", \"docker_setup_prefix_generation_fences\"],\n [\"index\", \"sqlite_autoindex_docker_setup_prefix_index_1\", \"docker_setup_prefix_index\"],\n [\"index\", \"sqlite_autoindex_docker_setup_prefix_index_2\", \"docker_setup_prefix_index\"],\n [\"index\", \"sqlite_autoindex_docker_setup_prefix_leases_1\", \"docker_setup_prefix_leases\"],\n [\"index\", \"sqlite_autoindex_docker_setup_prefix_replacement_heads_1\", \"docker_setup_prefix_replacement_heads\"],\n [\"index\", \"sqlite_autoindex_docker_setup_prefix_replacement_scopes_1\", \"docker_setup_prefix_replacement_scopes\"],\n [\"index\", \"sqlite_autoindex_docker_setup_prefix_roots_1\", \"docker_setup_prefix_roots\"],\n [\"index\", \"sqlite_autoindex_docker_task_build_entries_1\", \"docker_task_build_entries\"],\n [\"index\", \"sqlite_autoindex_docker_task_build_leases_1\", \"docker_task_build_leases\"],\n [\"index\", \"sqlite_autoindex_docker_task_build_roots_1\", \"docker_task_build_roots\"],\n [\"index\", \"sqlite_autoindex_e2b_cache_entries_1\", \"e2b_cache_entries\"],\n [\"index\", \"sqlite_autoindex_e2b_cache_entries_2\", \"e2b_cache_entries\"],\n [\"index\", \"sqlite_autoindex_e2b_cache_replacement_heads_1\", \"e2b_cache_replacement_heads\"],\n [\"index\", \"sqlite_autoindex_e2b_cache_roots_1\", \"e2b_cache_roots\"],\n [\"index\", \"sqlite_autoindex_incus_admission_leases_1\", \"incus_admission_leases\"],\n [\"index\", \"sqlite_autoindex_incus_allocation_intents_1\", \"incus_allocation_intents\"],\n [\"index\", \"sqlite_autoindex_incus_artifact_intents_1\", \"incus_artifact_intents\"],\n [\"index\", \"sqlite_autoindex_incus_artifact_replacement_heads_1\", \"incus_artifact_replacement_heads\"],\n [\"index\", \"sqlite_autoindex_incus_artifact_consumer_leases_1\", \"incus_artifact_consumer_leases\"],\n [\"index\", \"sqlite_autoindex_incus_artifact_destroy_receipts_1\", \"incus_artifact_destroy_receipts\"],\n [\"index\", \"sqlite_autoindex_incus_artifact_release_receipts_1\", \"incus_artifact_release_receipts\"],\n].map(schemaObjectKey));\ntype SchemaRow = {\n readonly type: string;\n readonly name: string;\n readonly tbl_name: string;\n readonly sql: string | null;\n};\ntype FormatRow = {\n readonly format_id: unknown;\n};\nconst Migration1Digest = createHash(\"sha256\")\n .update(`niceeval.user-database/${MigrationBaseline}/migration/1\\0`)\n .update(CreateHostFormat)\n .update(\"\\0\")\n .update(CreateLedger)\n .update(\"\\0\")\n .update(userDatabaseRepositoryCatalog.map((entry) => entry.id).join(\"\\n\"))\n .digest(\"hex\");\nfunction exactSql(sql: string): string {\n return sql.trim().replace(/;+$/u, \"\").replace(/\\s+/gu, \" \");\n}\nfunction invalid(message: string, repository?: string, cause?: unknown): UserDatabaseInvalid {\n return new UserDatabaseInvalid({ code: \"user-database-invalid\", message, repository, cause });\n}\nfunction unsupportedBaseline(databaseBaseline: string): UserDatabaseUnsupported {\n return new UserDatabaseUnsupported({\n code: \"user-database-unsupported\",\n message: `unsupported UserDatabase baseline ${databaseBaseline}; supported baseline is ${MigrationBaseline}`,\n repository: \"global\",\n databaseBaseline,\n supportedBaseline: MigrationBaseline,\n });\n}\nasync function exists(path: string): Promise<boolean> {\n try {\n await access(path, fsConstants.F_OK);\n return true;\n }\n catch (cause) {\n if (typeof cause === \"object\" && cause !== null && Reflect.get(cause, \"code\") === \"ENOENT\")\n return false;\n throw cause;\n }\n}\nfunction schemaFor(database: DatabaseSync, object: string): readonly SchemaRow[] {\n return database.prepare(\"SELECT type, name, tbl_name, sql FROM sqlite_schema WHERE tbl_name = ? OR name = ? ORDER BY type, name\").all(object, object) as SchemaRow[];\n}\nfunction hasExactTableAndPrimaryKeyIndex(database: DatabaseSync, tableName: string, createSql: string): boolean {\n const rows = schemaFor(database, tableName);\n const table = rows.find((row) => row.type === \"table\" && row.name === tableName && row.tbl_name === tableName);\n const automaticIndex = rows.find((row) => row.type === \"index\" && row.name === `sqlite_autoindex_${tableName}_1` && row.tbl_name === tableName && row.sql === null);\n return rows.length === 2 && table !== undefined && automaticIndex !== undefined && exactSql(table.sql ?? \"\") === exactSql(createSql);\n}\nfunction schemaObjects(database: DatabaseSync): readonly SchemaRow[] {\n return database.prepare(\"SELECT type, name, tbl_name, sql FROM sqlite_schema ORDER BY type, name\").all() as SchemaRow[];\n}\nfunction isKnownSchemaObject(row: SchemaRow): boolean {\n return AllowedSchemaObjects.has(schemaObjectKey([row.type, row.name, row.tbl_name]));\n}\nfunction assertStaticSchemaObjectAllowlist(database: DatabaseSync): void {\n for (const row of schemaObjects(database)) {\n if (!isKnownSchemaObject(row))\n throw invalid(`UserDatabase has an unsupported schema object ${row.type} ${row.name}`);\n }\n}\nfunction assertHostFormat(database: DatabaseSync, identity: string, createSql: string): void {\n if (!hasExactTableAndPrimaryKeyIndex(database, HostFormatTable, createSql)) {\n throw invalid(\"UserDatabase format identity has an unsupported schema\");\n }\n const rows = database.prepare(`SELECT format_id FROM ${HostFormatTable}`).all() as FormatRow[];\n if (rows.length !== 1 || rows[0]?.format_id !== identity) {\n throw invalid(\"UserDatabase format identity is missing or unsupported\");\n }\n}\nfunction rejectUnsupportedPrereleaseIdentity(database: DatabaseSync): void {\n const table = schemaObjects(database).find((row) => row.type === \"table\" && row.name === HostFormatTable);\n if (table === undefined)\n return;\n let rows: readonly FormatRow[];\n try {\n rows = database.prepare(`SELECT format_id FROM ${HostFormatTable}`).all() as FormatRow[];\n }\n catch (cause) {\n throw invalid(\"UserDatabase format identity has an unsupported schema\", \"global\", cause);\n }\n const identity = rows.length === 1 && typeof rows[0]?.format_id === \"string\" ? rows[0].format_id : undefined;\n if (identity !== undefined && UnsupportedPrereleaseIdentities.has(identity))\n throw unsupportedBaseline(identity);\n}\nfunction assertCurrentDatabase(database: DatabaseSync): void {\n assertHostFormat(database, HostFormatIdentity, CreateHostFormat);\n const appliedVersion = inspectMigrationReceipts(database);\n if (appliedVersion !== CurrentVersion)\n throw invalid(\"UserDatabase global migration receipts do not reach the current version\");\n for (const handler of userDatabaseRepositoryCatalog)\n handler.assertCurrentSchema(database);\n assertStaticSchemaObjectAllowlist(database);\n}\nconst UserDatabaseMigrationCatalog = defineSqliteMigrationCatalog([\n Object.freeze({\n version: 1,\n digest: Migration1Digest,\n apply: (database: DatabaseSync): void => {\n for (const handler of userDatabaseRepositoryCatalog)\n handler.installCurrentSchema(database);\n database.exec(CreateHostFormat);\n database.prepare(`INSERT INTO ${HostFormatTable}(format_id) VALUES (?)`).run(HostFormatIdentity);\n },\n }),\n], CurrentVersion);\nfunction receipt(status: \"bootstrapped\" | \"current\" | \"migrated\", fromVersion = 0): UserDatabaseMigrationResult {\n const receipts = Object.freeze(UserDatabaseMigrationCatalog.map(({ version, digest }) => Object.freeze({ version, digest })));\n return status === \"current\"\n ? Object.freeze({ status, baseline: MigrationBaseline, version: CurrentVersion, receipts })\n : status === \"bootstrapped\"\n ? Object.freeze({ status, baseline: MigrationBaseline, fromVersion: 0 as const, toVersion: CurrentVersion, receipts })\n : Object.freeze({ status, baseline: MigrationBaseline, fromVersion, toVersion: CurrentVersion, receipts });\n}\nfunction inspectMigrationReceipts(database: DatabaseSync): number {\n try {\n return inspectSqliteMigrationLedger(database, LedgerTable, UserDatabaseMigrationCatalog);\n }\n catch (cause) {\n if (cause instanceof SqliteMigrationKernelFailure && cause.reason === \"receipt-version-ahead\") {\n throw unsupportedBaseline(`${MigrationBaseline}@ahead`);\n }\n if (cause instanceof SqliteMigrationKernelFailure)\n throw invalid(cause.message, \"global\", cause);\n throw cause;\n }\n}\nfunction applyMigrations(database: DatabaseSync, fromVersion: number, createdByThisHost: boolean): UserDatabaseMigrationResult {\n try {\n const result = migrateSqliteDatabase({\n database,\n ledgerTable: LedgerTable,\n catalog: UserDatabaseMigrationCatalog,\n expectedFromVersion: fromVersion,\n bootstrapping: createdByThisHost,\n appliedAt: () => new Date().toISOString(),\n validateCurrent: () => assertCurrentDatabase(database),\n });\n return receipt(result.status, result.fromVersion);\n }\n catch (cause) {\n if (cause instanceof SqliteMigrationKernelFailure)\n throw invalid(cause.message, \"global\", cause);\n throw cause;\n }\n}\nfunction migrateToCurrent(database: DatabaseSync, createdByThisHost: boolean): UserDatabaseMigrationResult {\n const objects = schemaObjects(database);\n if (createdByThisHost) {\n if (objects.length !== 0)\n throw invalid(\"New UserDatabase file unexpectedly contains schema objects\");\n return applyMigrations(database, 0, true);\n }\n rejectUnsupportedPrereleaseIdentity(database);\n assertHostFormat(database, HostFormatIdentity, CreateHostFormat);\n const fromVersion = inspectMigrationReceipts(database);\n return applyMigrations(database, fromVersion, false);\n}\nfunction openStorageDatabase(path: string, busyTimeoutMs: number): DatabaseSync {\n const database = new DatabaseSync(path, {\n allowExtension: false,\n defensive: true,\n enableDoubleQuotedStringLiterals: false,\n enableForeignKeyConstraints: true,\n timeout: busyTimeoutMs,\n });\n try {\n database.enableLoadExtension(false);\n database.enableDefensive(true);\n database.exec(\"PRAGMA trusted_schema=OFF; PRAGMA foreign_keys=ON;\");\n return database;\n }\n catch (cause) {\n database.close();\n throw cause;\n }\n}\n/**\n * A new public database path must never expose the empty file used to claim\n * creation. Initialize a private same-directory file first, then publish its\n * inode with an atomic hard link. Concurrent creators either win that link or\n * open the winner's complete host format; an unrelated pre-existing file is\n * still validated and never adopted.\n */\nasync function publishInitialHostFormat(input: UserDatabaseWorkerData): Promise<UserDatabaseMigrationResult | undefined> {\n if (await exists(input.databasePath))\n return undefined;\n const temporaryPath = join(dirname(input.databasePath), `.${basename(input.databasePath)}.${process.pid}.${randomUUID()}.initialize`);\n const handle = await openFile(temporaryPath, \"wx\", 0o600);\n await handle.close();\n try {\n const database = openStorageDatabase(temporaryPath, input.busyTimeoutMs);\n try {\n migrateToCurrent(database, true);\n }\n finally {\n database.close();\n }\n try {\n await link(temporaryPath, input.databasePath);\n return receipt(\"bootstrapped\");\n }\n catch (cause) {\n if (typeof cause !== \"object\" || cause === null || Reflect.get(cause, \"code\") !== \"EEXIST\")\n throw cause;\n return undefined;\n }\n }\n finally {\n try {\n await unlink(temporaryPath);\n }\n catch (cause) {\n if (typeof cause !== \"object\" || cause === null || Reflect.get(cause, \"code\") !== \"ENOENT\")\n throw cause;\n }\n }\n}\nfunction decodeWorkerData(value: unknown): UserDatabaseWorkerData {\n if (typeof value !== \"object\" || value === null)\n throw invalid(\"UserDatabase worker data is not an object\");\n const databasePath = Reflect.get(value, \"databasePath\");\n const legacyPath = Reflect.get(value, \"legacyPath\");\n const busyTimeoutMs = Reflect.get(value, \"busyTimeoutMs\");\n if (typeof databasePath !== \"string\" || typeof legacyPath !== \"string\" ||\n !Number.isSafeInteger(busyTimeoutMs) || Number(busyTimeoutMs) < 1 || Number(busyTimeoutMs) > 120000) {\n throw invalid(\"UserDatabase worker data is invalid\");\n }\n return Object.freeze({ databasePath, legacyPath, busyTimeoutMs: Number(busyTimeoutMs) });\n}\nfunction isDurableStateRequest(value: unknown): value is DurableStateRequest {\n if (typeof value !== \"object\" || value === null || Reflect.get(value, \"repository\") !== DURABLE_STATE_REPOSITORY)\n return false;\n const operation = Reflect.get(value, \"operation\");\n if (operation === \"list\")\n return true;\n const key = Reflect.get(value, \"key\");\n if ((operation !== \"get\" && operation !== \"put\") || typeof key !== \"string\" || Buffer.byteLength(key) > 64 * 1024)\n return false;\n return operation === \"get\" || (typeof Reflect.get(value, \"value\") === \"string\" && Buffer.byteLength(String(Reflect.get(value, \"value\"))) <= 1024 * 1024);\n}\nfunction decodeRequest(value: unknown): UserDatabaseWorkerRequest | undefined {\n if (typeof value !== \"object\" || value === null || !Number.isSafeInteger(Reflect.get(value, \"id\")))\n return undefined;\n const id = Number(Reflect.get(value, \"id\"));\n const kind = Reflect.get(value, \"kind\");\n if (kind === \"close\")\n return Object.freeze({ id, kind });\n if (kind === \"maintenance\" && Reflect.get(value, \"operation\") === \"migrate-all\") {\n return Object.freeze({ id, kind, operation: \"migrate-all\" });\n }\n const request = Reflect.get(value, \"request\");\n return kind === \"repository\" && (isDurableStateRequest(request) ||\n isDockerCacheRepositoryRequest(request) ||\n isE2BCacheRequest(request) ||\n isIncusRepositoryRequest(request))\n ? Object.freeze({ id, kind, request })\n : undefined;\n}\nclass UserDatabaseStorage {\n private constructor(private readonly database: DatabaseSync, private pendingMigration: UserDatabaseMigrationResult) { }\n static async open(input: UserDatabaseWorkerData): Promise<UserDatabaseStorage> {\n if (await exists(input.legacyPath)) {\n throw new UserDatabaseLegacyFound({\n code: \"user-database-legacy-found\",\n message: `Legacy user database ${input.legacyPath} must be removed or migrated explicitly before opening ${input.databasePath}`,\n legacyPath: input.legacyPath,\n databasePath: input.databasePath,\n });\n }\n await mkdir(dirname(input.databasePath), { recursive: true, mode: 0o700 });\n const publishedMigration = await publishInitialHostFormat(input);\n const database = openStorageDatabase(input.databasePath, input.busyTimeoutMs);\n try {\n const migration = publishedMigration ?? migrateToCurrent(database, false);\n database.exec(\"PRAGMA journal_mode=WAL;\");\n const storage = new UserDatabaseStorage(database, migration);\n storage.installAuthorizer();\n return storage;\n }\n catch (cause) {\n database.close();\n throw cause;\n }\n }\n close(): void {\n if (this.database.isOpen)\n this.database.close();\n }\n dispatch(request: UserDatabaseRepositoryRequest) {\n repositoryHandlerFor(request).assertCurrentSchema(this.database);\n return dispatchUserDatabaseRepository(this.database, request);\n }\n migrateAll(): UserDatabaseMigrationResult {\n assertCurrentDatabase(this.database);\n const result = this.pendingMigration;\n this.pendingMigration = receipt(\"current\");\n return result;\n }\n private installAuthorizer(): void {\n this.database.setAuthorizer((actionCode, _arg1, arg2, databaseName) => {\n if (databaseName !== null && databaseName !== \"main\")\n return constants.SQLITE_DENY;\n if (actionCode === constants.SQLITE_ATTACH || actionCode === constants.SQLITE_DETACH)\n return constants.SQLITE_DENY;\n if (actionCode === constants.SQLITE_FUNCTION && arg2?.toLowerCase() === \"load_extension\")\n return constants.SQLITE_DENY;\n if (actionCode === constants.SQLITE_PRAGMA)\n return constants.SQLITE_DENY;\n return constants.SQLITE_OK;\n });\n }\n}\nfunction serializeFailure(cause: unknown): UserDatabaseWorkerFailure {\n const object = typeof cause === \"object\" && cause !== null ? cause : undefined;\n const rawMessage = cause instanceof Error ? cause.message : String(cause);\n const message = rawMessage.length === 0 ? \"UserDatabase operation failed\" : rawMessage;\n const code = object === undefined ? undefined : Reflect.get(object, \"code\");\n const repository = typeof Reflect.get(object ?? {}, \"repository\") === \"string\" ? String(Reflect.get(object!, \"repository\")) : undefined;\n if (code === \"user-database-legacy-found\") {\n return Object.freeze({\n code,\n message,\n legacyPath: String(Reflect.get(object!, \"legacyPath\")),\n databasePath: String(Reflect.get(object!, \"databasePath\")),\n });\n }\n if (code === \"user-database-unsupported\") {\n return Object.freeze({\n code,\n message,\n repository: repository ?? \"unknown\",\n databaseBaseline: String(Reflect.get(object!, \"databaseBaseline\")),\n supportedBaseline: String(Reflect.get(object!, \"supportedBaseline\")),\n });\n }\n if (code === \"user-database-busy\" || /SQLITE_BUSY|database is locked/iu.test(message)) {\n return Object.freeze({ code: \"user-database-busy\", message, repository });\n }\n return Object.freeze({ code: \"user-database-invalid\", message, repository });\n}\nif (!isMainThread && parentPort !== null) {\n let data: UserDatabaseWorkerData | undefined;\n try {\n data = decodeWorkerData(workerData);\n }\n catch (cause) {\n parentPort.postMessage(Object.freeze({ state: \"startup-failure\", error: serializeFailure(cause) }));\n parentPort.close();\n }\n if (data !== undefined) {\n void UserDatabaseStorage.open(data).then((storage) => {\n parentPort!.postMessage(Object.freeze({ state: \"ready\", migration: storage.migrateAll() }));\n let queue = Promise.resolve();\n parentPort!.on(\"message\", (incoming: unknown) => {\n const request = decodeRequest(incoming);\n if (request === undefined)\n return;\n queue = queue.then(() => {\n let response: UserDatabaseWorkerResponse;\n try {\n const result = request.kind === \"repository\"\n ? storage.dispatch(request.request)\n : request.kind === \"maintenance\"\n ? storage.migrateAll()\n : (storage.close(), Object.freeze({ kind: \"void\" as const }));\n response = Object.freeze({ id: request.id, state: \"success\", result });\n }\n catch (cause) {\n response = Object.freeze({ id: request.id, state: \"failure\", error: serializeFailure(cause) });\n }\n parentPort!.postMessage(response);\n if (request.kind === \"close\")\n parentPort!.close();\n });\n });\n }, (cause) => {\n parentPort!.postMessage(Object.freeze({ state: \"startup-failure\", error: serializeFailure(cause) }));\n parentPort!.close();\n });\n }\n}\n"]}
1
+ {"version":3,"file":"storage-worker.js","sourceRoot":"","sources":["storage-worker.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash, randomUUID } from \"node:crypto\";\nimport { constants as fsConstants } from \"node:fs\";\nimport { access, link, mkdir, open as openFile, unlink } from \"node:fs/promises\";\nimport { basename, dirname, join } from \"node:path\";\nimport { constants, DatabaseSync } from \"node:sqlite\";\nimport { isMainThread, parentPort, workerData } from \"node:worker_threads\";\nimport { defineSqliteMigrationCatalog, inspectSqliteMigrationLedger, migrateSqliteDatabase, SqliteMigrationKernelFailure, sqliteMigrationLedgerSql, } from \"../sqlite-migration-kernel.ts\";\nimport { isDockerCacheRepositoryRequest } from \"../sandbox/docker-cache-repository.ts\";\nimport { E2B_CACHE_GENERATION_INDEX_SQL, E2B_CACHE_REPOSITORY, installE2BCacheSchemaV1, isE2BCacheRequest } from \"../sandbox/e2b-cache-repository.ts\";\nimport { isIncusRepositoryRequest } from \"../sandbox/incus/repository.ts\";\nimport { UserDatabaseInvalid, UserDatabaseLegacyFound, UserDatabaseUnsupported, } from \"./errors.ts\";\nimport { DURABLE_STATE_REPOSITORY, type DurableStateRequest, type UserDatabaseRepositoryRequest, type UserDatabaseMigrationResult, type UserDatabaseWorkerData, type UserDatabaseWorkerFailure, type UserDatabaseWorkerRequest, type UserDatabaseWorkerResponse, } from \"./protocol.ts\";\nimport { dispatchUserDatabaseRepository, repositoryHandlerFor, userDatabaseRepositoryCatalog, } from \"./repositories/catalog.ts\";\nconst LedgerTable = \"__niceeval_user_database_schema_migrations\";\nconst CreateLedger = sqliteMigrationLedgerSql(LedgerTable);\nconst HostFormatTable = \"__niceeval_user_database_format\";\nconst HostFormatIdentity = \"niceeval-user-database/0.14.0\";\nconst UnsupportedPrereleaseIdentities = new Set([\"niceeval-user-database/v2\"]);\nconst MigrationBaseline = \"0.14.0\";\nconst CreateHostFormat = `CREATE TABLE ${HostFormatTable} (format_id TEXT PRIMARY KEY CHECK(format_id = '${HostFormatIdentity}')) STRICT`;\nconst CurrentVersion = 2;\nfunction schemaObjectKey([type, name, table]: readonly string[]): string {\n return `${type}\\u0000${name}\\u0000${table}`;\n}\n/** UserDatabase is one static application format with one complete final schema. */\nconst AllowedSchemaObjects = new Set<string>([\n [\"table\", HostFormatTable, HostFormatTable],\n [\"table\", LedgerTable, LedgerTable],\n [\"table\", \"durable_state_entries\", \"durable_state_entries\"],\n [\"table\", \"docker_cache_domains\", \"docker_cache_domains\"],\n [\"table\", \"docker_cache_metadata\", \"docker_cache_metadata\"],\n [\"table\", \"docker_task_build_entries\", \"docker_task_build_entries\"],\n [\"table\", \"docker_task_build_leases\", \"docker_task_build_leases\"],\n [\"table\", \"docker_task_build_roots\", \"docker_task_build_roots\"],\n [\"table\", \"docker_cache_gc_plans\", \"docker_cache_gc_plans\"],\n [\"table\", \"docker_image_gc_locks\", \"docker_image_gc_locks\"],\n [\"table\", \"docker_setup_prefix_entries\", \"docker_setup_prefix_entries\"],\n [\"table\", \"docker_setup_prefix_index\", \"docker_setup_prefix_index\"],\n [\"table\", \"docker_setup_prefix_generation_fences\", \"docker_setup_prefix_generation_fences\"],\n [\"table\", \"docker_setup_prefix_replacement_scopes\", \"docker_setup_prefix_replacement_scopes\"],\n [\"table\", \"docker_setup_prefix_replacement_heads\", \"docker_setup_prefix_replacement_heads\"],\n [\"table\", \"docker_setup_prefix_leases\", \"docker_setup_prefix_leases\"],\n [\"table\", \"docker_setup_prefix_roots\", \"docker_setup_prefix_roots\"],\n [\"table\", \"e2b_cache_entries\", \"e2b_cache_entries\"],\n [\"table\", \"e2b_cache_roots\", \"e2b_cache_roots\"],\n [\"table\", \"e2b_cache_replacement_heads\", \"e2b_cache_replacement_heads\"],\n [\"table\", \"incus_allocation_intents\", \"incus_allocation_intents\"],\n [\"table\", \"incus_artifact_intents\", \"incus_artifact_intents\"],\n [\"table\", \"incus_admission_leases\", \"incus_admission_leases\"],\n [\"table\", \"incus_artifact_replacement_heads\", \"incus_artifact_replacement_heads\"],\n [\"table\", \"incus_artifact_consumer_leases\", \"incus_artifact_consumer_leases\"],\n [\"table\", \"incus_artifact_destroy_receipts\", \"incus_artifact_destroy_receipts\"],\n [\"table\", \"incus_artifact_release_receipts\", \"incus_artifact_release_receipts\"],\n [\"index\", \"docker_setup_prefix_writer\", \"docker_setup_prefix_entries\"],\n [\"index\", \"docker_setup_prefix_replacement_scope\", \"docker_setup_prefix_replacement_scopes\"],\n [\"index\", \"e2b_cache_entries_cleanup\", \"e2b_cache_entries\"],\n [\"index\", \"e2b_cache_entries_generation\", \"e2b_cache_entries\"],\n [\"trigger\", \"docker_setup_prefix_exact_base_insert\", \"docker_setup_prefix_entries\"],\n [\"trigger\", \"docker_setup_prefix_exact_base_update\", \"docker_setup_prefix_entries\"],\n [\"index\", \"sqlite_autoindex___niceeval_user_database_format_1\", HostFormatTable],\n [\"index\", \"sqlite_autoindex_durable_state_entries_1\", \"durable_state_entries\"],\n [\"index\", \"sqlite_autoindex_docker_cache_domains_1\", \"docker_cache_domains\"],\n [\"index\", \"sqlite_autoindex_docker_cache_gc_plans_1\", \"docker_cache_gc_plans\"],\n [\"index\", \"sqlite_autoindex_docker_cache_metadata_1\", \"docker_cache_metadata\"],\n [\"index\", \"sqlite_autoindex_docker_image_gc_locks_1\", \"docker_image_gc_locks\"],\n [\"index\", \"sqlite_autoindex_docker_setup_prefix_entries_1\", \"docker_setup_prefix_entries\"],\n [\"index\", \"sqlite_autoindex_docker_setup_prefix_entries_2\", \"docker_setup_prefix_entries\"],\n [\"index\", \"sqlite_autoindex_docker_setup_prefix_generation_fences_1\", \"docker_setup_prefix_generation_fences\"],\n [\"index\", \"sqlite_autoindex_docker_setup_prefix_index_1\", \"docker_setup_prefix_index\"],\n [\"index\", \"sqlite_autoindex_docker_setup_prefix_index_2\", \"docker_setup_prefix_index\"],\n [\"index\", \"sqlite_autoindex_docker_setup_prefix_leases_1\", \"docker_setup_prefix_leases\"],\n [\"index\", \"sqlite_autoindex_docker_setup_prefix_replacement_heads_1\", \"docker_setup_prefix_replacement_heads\"],\n [\"index\", \"sqlite_autoindex_docker_setup_prefix_replacement_scopes_1\", \"docker_setup_prefix_replacement_scopes\"],\n [\"index\", \"sqlite_autoindex_docker_setup_prefix_roots_1\", \"docker_setup_prefix_roots\"],\n [\"index\", \"sqlite_autoindex_docker_task_build_entries_1\", \"docker_task_build_entries\"],\n [\"index\", \"sqlite_autoindex_docker_task_build_leases_1\", \"docker_task_build_leases\"],\n [\"index\", \"sqlite_autoindex_docker_task_build_roots_1\", \"docker_task_build_roots\"],\n [\"index\", \"sqlite_autoindex_e2b_cache_entries_1\", \"e2b_cache_entries\"],\n [\"index\", \"sqlite_autoindex_e2b_cache_entries_2\", \"e2b_cache_entries\"],\n [\"index\", \"sqlite_autoindex_e2b_cache_replacement_heads_1\", \"e2b_cache_replacement_heads\"],\n [\"index\", \"sqlite_autoindex_e2b_cache_roots_1\", \"e2b_cache_roots\"],\n [\"index\", \"sqlite_autoindex_incus_admission_leases_1\", \"incus_admission_leases\"],\n [\"index\", \"sqlite_autoindex_incus_allocation_intents_1\", \"incus_allocation_intents\"],\n [\"index\", \"sqlite_autoindex_incus_artifact_intents_1\", \"incus_artifact_intents\"],\n [\"index\", \"sqlite_autoindex_incus_artifact_replacement_heads_1\", \"incus_artifact_replacement_heads\"],\n [\"index\", \"sqlite_autoindex_incus_artifact_consumer_leases_1\", \"incus_artifact_consumer_leases\"],\n [\"index\", \"sqlite_autoindex_incus_artifact_destroy_receipts_1\", \"incus_artifact_destroy_receipts\"],\n [\"index\", \"sqlite_autoindex_incus_artifact_release_receipts_1\", \"incus_artifact_release_receipts\"],\n].map(schemaObjectKey));\ntype SchemaRow = {\n readonly type: string;\n readonly name: string;\n readonly tbl_name: string;\n readonly sql: string | null;\n};\ntype FormatRow = {\n readonly format_id: unknown;\n};\nconst Migration1Digest = createHash(\"sha256\")\n .update(`niceeval.user-database/${MigrationBaseline}/migration/1\\0`)\n .update(CreateHostFormat)\n .update(\"\\0\")\n .update(CreateLedger)\n .update(\"\\0\")\n .update(userDatabaseRepositoryCatalog.map((entry) => entry.id).join(\"\\n\"))\n .digest(\"hex\");\nfunction exactSql(sql: string): string {\n return sql.trim().replace(/;+$/u, \"\").replace(/\\s+/gu, \" \");\n}\nfunction invalid(message: string, repository?: string, cause?: unknown): UserDatabaseInvalid {\n return new UserDatabaseInvalid({ code: \"user-database-invalid\", message, repository, cause });\n}\nfunction unsupportedBaseline(databaseBaseline: string): UserDatabaseUnsupported {\n return new UserDatabaseUnsupported({\n code: \"user-database-unsupported\",\n message: `unsupported UserDatabase baseline ${databaseBaseline}; supported baseline is ${MigrationBaseline}`,\n repository: \"global\",\n databaseBaseline,\n supportedBaseline: MigrationBaseline,\n });\n}\nasync function exists(path: string): Promise<boolean> {\n try {\n await access(path, fsConstants.F_OK);\n return true;\n }\n catch (cause) {\n if (typeof cause === \"object\" && cause !== null && Reflect.get(cause, \"code\") === \"ENOENT\")\n return false;\n throw cause;\n }\n}\nfunction schemaFor(database: DatabaseSync, object: string): readonly SchemaRow[] {\n return database.prepare(\"SELECT type, name, tbl_name, sql FROM sqlite_schema WHERE tbl_name = ? OR name = ? ORDER BY type, name\").all(object, object) as SchemaRow[];\n}\nfunction hasExactTableAndPrimaryKeyIndex(database: DatabaseSync, tableName: string, createSql: string): boolean {\n const rows = schemaFor(database, tableName);\n const table = rows.find((row) => row.type === \"table\" && row.name === tableName && row.tbl_name === tableName);\n const automaticIndex = rows.find((row) => row.type === \"index\" && row.name === `sqlite_autoindex_${tableName}_1` && row.tbl_name === tableName && row.sql === null);\n return rows.length === 2 && table !== undefined && automaticIndex !== undefined && exactSql(table.sql ?? \"\") === exactSql(createSql);\n}\nfunction schemaObjects(database: DatabaseSync): readonly SchemaRow[] {\n return database.prepare(\"SELECT type, name, tbl_name, sql FROM sqlite_schema ORDER BY type, name\").all() as SchemaRow[];\n}\nfunction isKnownSchemaObject(row: SchemaRow): boolean {\n return AllowedSchemaObjects.has(schemaObjectKey([row.type, row.name, row.tbl_name]));\n}\nfunction assertStaticSchemaObjectAllowlist(database: DatabaseSync): void {\n for (const row of schemaObjects(database)) {\n if (!isKnownSchemaObject(row))\n throw invalid(`UserDatabase has an unsupported schema object ${row.type} ${row.name}`);\n }\n}\nfunction assertHostFormat(database: DatabaseSync, identity: string, createSql: string): void {\n if (!hasExactTableAndPrimaryKeyIndex(database, HostFormatTable, createSql)) {\n throw invalid(\"UserDatabase format identity has an unsupported schema\");\n }\n const rows = database.prepare(`SELECT format_id FROM ${HostFormatTable}`).all() as FormatRow[];\n if (rows.length !== 1 || rows[0]?.format_id !== identity) {\n throw invalid(\"UserDatabase format identity is missing or unsupported\");\n }\n}\nfunction rejectUnsupportedPrereleaseIdentity(database: DatabaseSync): void {\n const table = schemaObjects(database).find((row) => row.type === \"table\" && row.name === HostFormatTable);\n if (table === undefined)\n return;\n let rows: readonly FormatRow[];\n try {\n rows = database.prepare(`SELECT format_id FROM ${HostFormatTable}`).all() as FormatRow[];\n }\n catch (cause) {\n throw invalid(\"UserDatabase format identity has an unsupported schema\", \"global\", cause);\n }\n const identity = rows.length === 1 && typeof rows[0]?.format_id === \"string\" ? rows[0].format_id : undefined;\n if (identity !== undefined && UnsupportedPrereleaseIdentities.has(identity))\n throw unsupportedBaseline(identity);\n}\nfunction assertCurrentDatabase(database: DatabaseSync): void {\n assertHostFormat(database, HostFormatIdentity, CreateHostFormat);\n const appliedVersion = inspectMigrationReceipts(database);\n if (appliedVersion !== CurrentVersion)\n throw invalid(\"UserDatabase global migration receipts do not reach the current version\");\n for (const handler of userDatabaseRepositoryCatalog)\n handler.assertCurrentSchema(database);\n assertStaticSchemaObjectAllowlist(database);\n}\nconst UserDatabaseMigrationCatalog = defineSqliteMigrationCatalog([\n Object.freeze({\n version: 1,\n digest: Migration1Digest,\n apply: (database: DatabaseSync): void => {\n for (const handler of userDatabaseRepositoryCatalog) {\n if (handler.id === E2B_CACHE_REPOSITORY)\n installE2BCacheSchemaV1(database);\n else\n handler.installCurrentSchema(database);\n }\n database.exec(CreateHostFormat);\n database.prepare(`INSERT INTO ${HostFormatTable}(format_id) VALUES (?)`).run(HostFormatIdentity);\n },\n }),\n Object.freeze({\n version: 2,\n digest: createHash(\"sha256\").update(`niceeval.user-database/${MigrationBaseline}/migration/2\\0`).update(E2B_CACHE_GENERATION_INDEX_SQL).digest(\"hex\"),\n apply: (database: DatabaseSync): void => { database.exec(E2B_CACHE_GENERATION_INDEX_SQL); },\n }),\n], CurrentVersion);\nfunction receipt(status: \"bootstrapped\" | \"current\" | \"migrated\", fromVersion = 0): UserDatabaseMigrationResult {\n const receipts = Object.freeze(UserDatabaseMigrationCatalog.map(({ version, digest }) => Object.freeze({ version, digest })));\n return status === \"current\"\n ? Object.freeze({ status, baseline: MigrationBaseline, version: CurrentVersion, receipts })\n : status === \"bootstrapped\"\n ? Object.freeze({ status, baseline: MigrationBaseline, fromVersion: 0 as const, toVersion: CurrentVersion, receipts })\n : Object.freeze({ status, baseline: MigrationBaseline, fromVersion, toVersion: CurrentVersion, receipts });\n}\nfunction inspectMigrationReceipts(database: DatabaseSync): number {\n try {\n return inspectSqliteMigrationLedger(database, LedgerTable, UserDatabaseMigrationCatalog);\n }\n catch (cause) {\n if (cause instanceof SqliteMigrationKernelFailure && cause.reason === \"receipt-version-ahead\") {\n throw unsupportedBaseline(`${MigrationBaseline}@ahead`);\n }\n if (cause instanceof SqliteMigrationKernelFailure)\n throw invalid(cause.message, \"global\", cause);\n throw cause;\n }\n}\nfunction applyMigrations(database: DatabaseSync, fromVersion: number, createdByThisHost: boolean): UserDatabaseMigrationResult {\n try {\n const result = migrateSqliteDatabase({\n database,\n ledgerTable: LedgerTable,\n catalog: UserDatabaseMigrationCatalog,\n expectedFromVersion: fromVersion,\n bootstrapping: createdByThisHost,\n appliedAt: () => new Date().toISOString(),\n validateCurrent: () => assertCurrentDatabase(database),\n });\n return receipt(result.status, result.fromVersion);\n }\n catch (cause) {\n if (cause instanceof SqliteMigrationKernelFailure)\n throw invalid(cause.message, \"global\", cause);\n throw cause;\n }\n}\nfunction migrateToCurrent(database: DatabaseSync, createdByThisHost: boolean): UserDatabaseMigrationResult {\n const objects = schemaObjects(database);\n if (createdByThisHost) {\n if (objects.length !== 0)\n throw invalid(\"New UserDatabase file unexpectedly contains schema objects\");\n return applyMigrations(database, 0, true);\n }\n rejectUnsupportedPrereleaseIdentity(database);\n assertHostFormat(database, HostFormatIdentity, CreateHostFormat);\n const fromVersion = inspectMigrationReceipts(database);\n return applyMigrations(database, fromVersion, false);\n}\nfunction openStorageDatabase(path: string, busyTimeoutMs: number): DatabaseSync {\n const database = new DatabaseSync(path, {\n allowExtension: false,\n defensive: true,\n enableDoubleQuotedStringLiterals: false,\n enableForeignKeyConstraints: true,\n timeout: busyTimeoutMs,\n });\n try {\n database.enableLoadExtension(false);\n database.enableDefensive(true);\n database.exec(\"PRAGMA trusted_schema=OFF; PRAGMA foreign_keys=ON;\");\n return database;\n }\n catch (cause) {\n database.close();\n throw cause;\n }\n}\n/**\n * A new public database path must never expose the empty file used to claim\n * creation. Initialize a private same-directory file first, then publish its\n * inode with an atomic hard link. Concurrent creators either win that link or\n * open the winner's complete host format; an unrelated pre-existing file is\n * still validated and never adopted.\n */\nasync function publishInitialHostFormat(input: UserDatabaseWorkerData): Promise<UserDatabaseMigrationResult | undefined> {\n if (await exists(input.databasePath))\n return undefined;\n const temporaryPath = join(dirname(input.databasePath), `.${basename(input.databasePath)}.${process.pid}.${randomUUID()}.initialize`);\n const handle = await openFile(temporaryPath, \"wx\", 0o600);\n await handle.close();\n try {\n const database = openStorageDatabase(temporaryPath, input.busyTimeoutMs);\n try {\n migrateToCurrent(database, true);\n }\n finally {\n database.close();\n }\n try {\n await link(temporaryPath, input.databasePath);\n return receipt(\"bootstrapped\");\n }\n catch (cause) {\n if (typeof cause !== \"object\" || cause === null || Reflect.get(cause, \"code\") !== \"EEXIST\")\n throw cause;\n return undefined;\n }\n }\n finally {\n try {\n await unlink(temporaryPath);\n }\n catch (cause) {\n if (typeof cause !== \"object\" || cause === null || Reflect.get(cause, \"code\") !== \"ENOENT\")\n throw cause;\n }\n }\n}\nfunction decodeWorkerData(value: unknown): UserDatabaseWorkerData {\n if (typeof value !== \"object\" || value === null)\n throw invalid(\"UserDatabase worker data is not an object\");\n const databasePath = Reflect.get(value, \"databasePath\");\n const legacyPath = Reflect.get(value, \"legacyPath\");\n const busyTimeoutMs = Reflect.get(value, \"busyTimeoutMs\");\n if (typeof databasePath !== \"string\" || typeof legacyPath !== \"string\" ||\n !Number.isSafeInteger(busyTimeoutMs) || Number(busyTimeoutMs) < 1 || Number(busyTimeoutMs) > 120000) {\n throw invalid(\"UserDatabase worker data is invalid\");\n }\n return Object.freeze({ databasePath, legacyPath, busyTimeoutMs: Number(busyTimeoutMs) });\n}\nfunction isDurableStateRequest(value: unknown): value is DurableStateRequest {\n if (typeof value !== \"object\" || value === null || Reflect.get(value, \"repository\") !== DURABLE_STATE_REPOSITORY)\n return false;\n const operation = Reflect.get(value, \"operation\");\n if (operation === \"list\")\n return true;\n const key = Reflect.get(value, \"key\");\n if ((operation !== \"get\" && operation !== \"put\") || typeof key !== \"string\" || Buffer.byteLength(key) > 64 * 1024)\n return false;\n return operation === \"get\" || (typeof Reflect.get(value, \"value\") === \"string\" && Buffer.byteLength(String(Reflect.get(value, \"value\"))) <= 1024 * 1024);\n}\nfunction decodeRequest(value: unknown): UserDatabaseWorkerRequest | undefined {\n if (typeof value !== \"object\" || value === null || !Number.isSafeInteger(Reflect.get(value, \"id\")))\n return undefined;\n const id = Number(Reflect.get(value, \"id\"));\n const kind = Reflect.get(value, \"kind\");\n if (kind === \"close\")\n return Object.freeze({ id, kind });\n if (kind === \"maintenance\" && Reflect.get(value, \"operation\") === \"migrate-all\") {\n return Object.freeze({ id, kind, operation: \"migrate-all\" });\n }\n const request = Reflect.get(value, \"request\");\n return kind === \"repository\" && (isDurableStateRequest(request) ||\n isDockerCacheRepositoryRequest(request) ||\n isE2BCacheRequest(request) ||\n isIncusRepositoryRequest(request))\n ? Object.freeze({ id, kind, request })\n : undefined;\n}\nclass UserDatabaseStorage {\n private constructor(private readonly database: DatabaseSync, private pendingMigration: UserDatabaseMigrationResult) { }\n static async open(input: UserDatabaseWorkerData): Promise<UserDatabaseStorage> {\n if (await exists(input.legacyPath)) {\n throw new UserDatabaseLegacyFound({\n code: \"user-database-legacy-found\",\n message: `Legacy user database ${input.legacyPath} must be removed or migrated explicitly before opening ${input.databasePath}`,\n legacyPath: input.legacyPath,\n databasePath: input.databasePath,\n });\n }\n await mkdir(dirname(input.databasePath), { recursive: true, mode: 0o700 });\n const publishedMigration = await publishInitialHostFormat(input);\n const database = openStorageDatabase(input.databasePath, input.busyTimeoutMs);\n try {\n const migration = publishedMigration ?? migrateToCurrent(database, false);\n database.exec(\"PRAGMA journal_mode=WAL;\");\n const storage = new UserDatabaseStorage(database, migration);\n storage.installAuthorizer();\n return storage;\n }\n catch (cause) {\n database.close();\n throw cause;\n }\n }\n close(): void {\n if (this.database.isOpen)\n this.database.close();\n }\n dispatch(request: UserDatabaseRepositoryRequest) {\n repositoryHandlerFor(request).assertCurrentSchema(this.database);\n return dispatchUserDatabaseRepository(this.database, request);\n }\n migrateAll(): UserDatabaseMigrationResult {\n assertCurrentDatabase(this.database);\n const result = this.pendingMigration;\n this.pendingMigration = receipt(\"current\");\n return result;\n }\n private installAuthorizer(): void {\n this.database.setAuthorizer((actionCode, _arg1, arg2, databaseName) => {\n if (databaseName !== null && databaseName !== \"main\")\n return constants.SQLITE_DENY;\n if (actionCode === constants.SQLITE_ATTACH || actionCode === constants.SQLITE_DETACH)\n return constants.SQLITE_DENY;\n if (actionCode === constants.SQLITE_FUNCTION && arg2?.toLowerCase() === \"load_extension\")\n return constants.SQLITE_DENY;\n if (actionCode === constants.SQLITE_PRAGMA)\n return constants.SQLITE_DENY;\n return constants.SQLITE_OK;\n });\n }\n}\nfunction serializeFailure(cause: unknown): UserDatabaseWorkerFailure {\n const object = typeof cause === \"object\" && cause !== null ? cause : undefined;\n const rawMessage = cause instanceof Error ? cause.message : String(cause);\n const message = rawMessage.length === 0 ? \"UserDatabase operation failed\" : rawMessage;\n const code = object === undefined ? undefined : Reflect.get(object, \"code\");\n const repository = typeof Reflect.get(object ?? {}, \"repository\") === \"string\" ? String(Reflect.get(object!, \"repository\")) : undefined;\n if (code === \"user-database-legacy-found\") {\n return Object.freeze({\n code,\n message,\n legacyPath: String(Reflect.get(object!, \"legacyPath\")),\n databasePath: String(Reflect.get(object!, \"databasePath\")),\n });\n }\n if (code === \"user-database-unsupported\") {\n return Object.freeze({\n code,\n message,\n repository: repository ?? \"unknown\",\n databaseBaseline: String(Reflect.get(object!, \"databaseBaseline\")),\n supportedBaseline: String(Reflect.get(object!, \"supportedBaseline\")),\n });\n }\n if (code === \"user-database-busy\" || /SQLITE_BUSY|database is locked/iu.test(message)) {\n return Object.freeze({ code: \"user-database-busy\", message, repository });\n }\n return Object.freeze({ code: \"user-database-invalid\", message, repository });\n}\nif (!isMainThread && parentPort !== null) {\n let data: UserDatabaseWorkerData | undefined;\n try {\n data = decodeWorkerData(workerData);\n }\n catch (cause) {\n parentPort.postMessage(Object.freeze({ state: \"startup-failure\", error: serializeFailure(cause) }));\n parentPort.close();\n }\n if (data !== undefined) {\n void UserDatabaseStorage.open(data).then((storage) => {\n parentPort!.postMessage(Object.freeze({ state: \"ready\", migration: storage.migrateAll() }));\n let queue = Promise.resolve();\n parentPort!.on(\"message\", (incoming: unknown) => {\n const request = decodeRequest(incoming);\n if (request === undefined)\n return;\n queue = queue.then(() => {\n let response: UserDatabaseWorkerResponse;\n try {\n const result = request.kind === \"repository\"\n ? storage.dispatch(request.request)\n : request.kind === \"maintenance\"\n ? storage.migrateAll()\n : (storage.close(), Object.freeze({ kind: \"void\" as const }));\n response = Object.freeze({ id: request.id, state: \"success\", result });\n }\n catch (cause) {\n response = Object.freeze({ id: request.id, state: \"failure\", error: serializeFailure(cause) });\n }\n parentPort!.postMessage(response);\n if (request.kind === \"close\")\n parentPort!.close();\n });\n });\n }, (cause) => {\n parentPort!.postMessage(Object.freeze({ state: \"startup-failure\", error: serializeFailure(cause) }));\n parentPort!.close();\n });\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "features/insight/results/experiment-table/quality-cost-scatter.tsx": {
3
- "file": "assets/quality-cost-scatter-BuLISaH4.js",
3
+ "file": "assets/quality-cost-scatter-B--DfJ9s.js",
4
4
  "name": "quality-cost-scatter",
5
5
  "src": "features/insight/results/experiment-table/quality-cost-scatter.tsx",
6
6
  "isDynamicEntry": true,
@@ -9,7 +9,7 @@
9
9
  ]
10
10
  },
11
11
  "index.html": {
12
- "file": "assets/index-CmVoXbwG.js",
12
+ "file": "assets/index-B3ijZRph.js",
13
13
  "name": "index",
14
14
  "src": "index.html",
15
15
  "isEntry": true,