@nimbus-sh/worker 0.9.0 → 0.11.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 (286) hide show
  1. package/NOTICE.md +5 -0
  2. package/README.md +10 -0
  3. package/dist/_shared/session-router.d.ts +7 -0
  4. package/dist/_shared/session-router.d.ts.map +1 -1
  5. package/dist/_shared/session-router.js +7 -0
  6. package/dist/bindings/body.d.ts +6 -0
  7. package/dist/bindings/body.d.ts.map +1 -0
  8. package/dist/bindings/body.js +37 -0
  9. package/dist/bindings/kv.d.ts +0 -2
  10. package/dist/bindings/kv.d.ts.map +1 -1
  11. package/dist/bindings/kv.js +3 -42
  12. package/dist/bindings/r2.d.ts +0 -2
  13. package/dist/bindings/r2.d.ts.map +1 -1
  14. package/dist/bindings/r2.js +4 -44
  15. package/dist/esbuild-cli-artifact.generated.d.ts +18 -0
  16. package/dist/esbuild-cli-artifact.generated.d.ts.map +1 -0
  17. package/dist/esbuild-cli-artifact.generated.js +17 -0
  18. package/dist/esbuild-wasm-bundle.generated.d.ts +24 -24
  19. package/dist/esbuild-wasm-bundle.generated.d.ts.map +1 -1
  20. package/dist/esbuild-wasm-bundle.generated.js +24 -24
  21. package/dist/facets/cirrus-real.d.ts.map +1 -1
  22. package/dist/facets/cirrus-real.js +11 -6
  23. package/dist/facets/compose.d.ts +11 -7
  24. package/dist/facets/compose.d.ts.map +1 -1
  25. package/dist/facets/compose.js +8 -31
  26. package/dist/facets/data-plan.d.ts +79 -0
  27. package/dist/facets/data-plan.d.ts.map +1 -0
  28. package/dist/facets/data-plan.js +477 -0
  29. package/dist/facets/esbuild-bundle-pool.d.ts +1 -1
  30. package/dist/facets/esbuild-bundle-pool.js +3 -3
  31. package/dist/facets/esbuild-transform.d.ts +38 -8
  32. package/dist/facets/esbuild-transform.d.ts.map +1 -1
  33. package/dist/facets/esbuild-transform.js +219 -19
  34. package/dist/facets/exec-telemetry.d.ts +7 -3
  35. package/dist/facets/exec-telemetry.d.ts.map +1 -1
  36. package/dist/facets/manager.d.ts +198 -69
  37. package/dist/facets/manager.d.ts.map +1 -1
  38. package/dist/facets/manager.js +1276 -652
  39. package/dist/facets/opencode-staging.d.ts +0 -2
  40. package/dist/facets/opencode-staging.d.ts.map +1 -1
  41. package/dist/facets/opencode-staging.js +5 -11
  42. package/dist/facets/process.d.ts +4 -0
  43. package/dist/facets/process.d.ts.map +1 -1
  44. package/dist/facets/process.js +3 -0
  45. package/dist/facets/read-profile.d.ts +149 -0
  46. package/dist/facets/read-profile.d.ts.map +1 -0
  47. package/dist/facets/read-profile.js +483 -0
  48. package/dist/facets/real-vite-hmr.d.ts +2 -0
  49. package/dist/facets/real-vite-hmr.d.ts.map +1 -1
  50. package/dist/facets/real-vite-hmr.js +3 -2
  51. package/dist/facets/resident-identity.d.ts +0 -1
  52. package/dist/facets/resident-identity.d.ts.map +1 -1
  53. package/dist/facets/resident-identity.js +0 -3
  54. package/dist/facets/wasm-swap-registry.d.ts +34 -25
  55. package/dist/facets/wasm-swap-registry.d.ts.map +1 -1
  56. package/dist/facets/wasm-swap-registry.js +62 -56
  57. package/dist/facets/ws-terminal.d.ts +4 -4
  58. package/dist/facets/ws-terminal.d.ts.map +1 -1
  59. package/dist/facets/ws-terminal.js +4 -5
  60. package/dist/git/commands.d.ts +33 -10
  61. package/dist/git/commands.d.ts.map +1 -1
  62. package/dist/git/commands.js +1891 -197
  63. package/dist/git/network-facet.d.ts +12 -2
  64. package/dist/git/network-facet.d.ts.map +1 -1
  65. package/dist/git/network-facet.js +69 -18
  66. package/dist/git/unified-diff.d.ts +74 -0
  67. package/dist/git/unified-diff.d.ts.map +1 -0
  68. package/dist/git/unified-diff.js +676 -0
  69. package/dist/git-bundle.generated.d.ts +7 -11
  70. package/dist/git-bundle.generated.d.ts.map +1 -1
  71. package/dist/git-bundle.generated.js +7 -11
  72. package/dist/hosted/commands.d.ts.map +1 -1
  73. package/dist/hosted/commands.js +64 -245
  74. package/dist/hosted/runtime.d.ts +22 -15
  75. package/dist/hosted/runtime.d.ts.map +1 -1
  76. package/dist/hosted/runtime.js +72 -14
  77. package/dist/hosted/services.d.ts +8 -1
  78. package/dist/hosted/services.d.ts.map +1 -1
  79. package/dist/hosted/services.js +12 -13
  80. package/dist/hosted/session.d.ts +165 -0
  81. package/dist/hosted/session.d.ts.map +1 -0
  82. package/dist/hosted/session.js +132 -0
  83. package/dist/loaders/generated-workers.d.ts +6 -3
  84. package/dist/loaders/generated-workers.d.ts.map +1 -1
  85. package/dist/loaders/generated-workers.js +8 -5
  86. package/dist/loaders/npm-resolve-preamble.d.ts.map +1 -1
  87. package/dist/loaders/npm-resolve-preamble.js +0 -27
  88. package/dist/loaders/pre-bundle-preamble.d.ts +6 -3
  89. package/dist/loaders/pre-bundle-preamble.d.ts.map +1 -1
  90. package/dist/loaders/pre-bundle-preamble.js +13 -8
  91. package/dist/node-shims-artifact.generated.d.ts +13 -4
  92. package/dist/node-shims-artifact.generated.d.ts.map +1 -1
  93. package/dist/node-shims-artifact.generated.js +16 -7
  94. package/dist/npm/bin-links.d.ts +3 -1
  95. package/dist/npm/bin-links.d.ts.map +1 -1
  96. package/dist/npm/bin-links.js +32 -8
  97. package/dist/npm/cache.d.ts +11 -1
  98. package/dist/npm/cache.d.ts.map +1 -1
  99. package/dist/npm/cache.js +21 -7
  100. package/dist/npm/install-batch-facet.d.ts +4 -2
  101. package/dist/npm/install-batch-facet.d.ts.map +1 -1
  102. package/dist/npm/install-batch-facet.js +32 -18
  103. package/dist/npm/installer.d.ts +23 -3
  104. package/dist/npm/installer.d.ts.map +1 -1
  105. package/dist/npm/installer.js +330 -131
  106. package/dist/npm/npx-install.d.ts +3 -1
  107. package/dist/npm/npx-install.d.ts.map +1 -1
  108. package/dist/npm/npx-install.js +4 -1
  109. package/dist/npm/package-lock.d.ts +32 -0
  110. package/dist/npm/package-lock.d.ts.map +1 -0
  111. package/dist/npm/package-lock.js +65 -0
  112. package/dist/npm/placement.d.ts +16 -0
  113. package/dist/npm/placement.d.ts.map +1 -0
  114. package/dist/npm/placement.js +33 -0
  115. package/dist/npm/pre-bundle-facet.d.ts +1 -30
  116. package/dist/npm/pre-bundle-facet.d.ts.map +1 -1
  117. package/dist/npm/pre-bundle-facet.js +3 -5
  118. package/dist/npm/r2-cache.d.ts +12 -6
  119. package/dist/npm/r2-cache.d.ts.map +1 -1
  120. package/dist/npm/r2-cache.js +34 -16
  121. package/dist/npm/resolve-one-facet.d.ts +3 -0
  122. package/dist/npm/resolve-one-facet.d.ts.map +1 -1
  123. package/dist/npm/resolve-one-facet.js +15 -3
  124. package/dist/npm/resolver.d.ts +11 -13
  125. package/dist/npm/resolver.d.ts.map +1 -1
  126. package/dist/npm/resolver.js +12 -25
  127. package/dist/opencode-artifact.generated.js +2 -2
  128. package/dist/replica/routing.d.ts +2 -38
  129. package/dist/replica/routing.d.ts.map +1 -1
  130. package/dist/replica/routing.js +3 -55
  131. package/dist/router/index.d.ts.map +1 -1
  132. package/dist/router/index.js +15 -2
  133. package/dist/router/public-directory.d.ts +18 -0
  134. package/dist/router/public-directory.d.ts.map +1 -1
  135. package/dist/router/public-directory.js +1 -1
  136. package/dist/router/remote-api.d.ts +3 -1
  137. package/dist/router/remote-api.d.ts.map +1 -1
  138. package/dist/router/remote-api.js +42 -79
  139. package/dist/runtime/bash-repl.js +2 -2
  140. package/dist/runtime/bun-repl.d.ts.map +1 -1
  141. package/dist/runtime/bun-repl.js +2 -13
  142. package/dist/runtime/cpython-resident.d.ts.map +1 -1
  143. package/dist/runtime/cpython-resident.js +2 -10
  144. package/dist/runtime/esbuild-wasm-bytes.d.ts +37 -18
  145. package/dist/runtime/esbuild-wasm-bytes.d.ts.map +1 -1
  146. package/dist/runtime/esbuild-wasm-bytes.js +66 -92
  147. package/dist/runtime/facet-loader-host.d.ts.map +1 -1
  148. package/dist/runtime/facet-loader-host.js +0 -7
  149. package/dist/runtime/git-bundle-artifact.d.ts +17 -0
  150. package/dist/runtime/git-bundle-artifact.d.ts.map +1 -0
  151. package/dist/runtime/git-bundle-artifact.js +25 -0
  152. package/dist/runtime/node-repl.d.ts.map +1 -1
  153. package/dist/runtime/node-repl.js +2 -13
  154. package/dist/runtime/node-shims-artifact.d.ts +22 -23
  155. package/dist/runtime/node-shims-artifact.d.ts.map +1 -1
  156. package/dist/runtime/node-shims-artifact.js +48 -78
  157. package/dist/runtime/node-shims.d.ts.map +1 -1
  158. package/dist/runtime/node-shims.js +2358 -996
  159. package/dist/runtime/opencode-artifact.d.ts.map +1 -1
  160. package/dist/runtime/opencode-artifact.js +17 -53
  161. package/dist/runtime/opencode-facet-runner.d.ts +3 -6
  162. package/dist/runtime/opencode-facet-runner.d.ts.map +1 -1
  163. package/dist/runtime/opencode-facet-runner.js +45 -10
  164. package/dist/runtime/opentui-wasm-bytes.d.ts.map +1 -1
  165. package/dist/runtime/opentui-wasm-bytes.js +16 -49
  166. package/dist/runtime/package-manager.d.ts +0 -2
  167. package/dist/runtime/package-manager.d.ts.map +1 -1
  168. package/dist/runtime/package-manager.js +0 -3
  169. package/dist/runtime/python-repl.d.ts.map +1 -1
  170. package/dist/runtime/python-repl.js +4 -35
  171. package/dist/runtime/repl-session.d.ts +10 -0
  172. package/dist/runtime/repl-session.d.ts.map +1 -1
  173. package/dist/runtime/repl-session.js +7 -0
  174. package/dist/runtime/ruby-repl.d.ts.map +1 -1
  175. package/dist/runtime/ruby-repl.js +2 -2
  176. package/dist/runtime/ruby-resident.d.ts.map +1 -1
  177. package/dist/runtime/ruby-resident.js +41 -51
  178. package/dist/runtime/runtime-catalog.d.ts +10 -3
  179. package/dist/runtime/runtime-catalog.d.ts.map +1 -1
  180. package/dist/runtime/runtime-catalog.js +125 -15
  181. package/dist/runtime/sqlite-wasm-bytes.d.ts +4 -4
  182. package/dist/runtime/sqlite-wasm-bytes.d.ts.map +1 -1
  183. package/dist/runtime/sqlite-wasm-bytes.js +21 -57
  184. package/dist/runtime/staged-source.d.ts +67 -0
  185. package/dist/runtime/staged-source.d.ts.map +1 -0
  186. package/dist/runtime/staged-source.js +113 -0
  187. package/dist/runtime/wasi/preamble.d.ts +0 -22
  188. package/dist/runtime/wasi/preamble.d.ts.map +1 -1
  189. package/dist/runtime/wasi/preamble.js +98 -1425
  190. package/dist/runtime-catalog.generated.js +1 -1
  191. package/dist/session/agent.d.ts +14 -2
  192. package/dist/session/agent.d.ts.map +1 -1
  193. package/dist/session/agent.js +57 -19
  194. package/dist/session/ai.d.ts +0 -11
  195. package/dist/session/ai.d.ts.map +1 -1
  196. package/dist/session/ai.js +0 -4
  197. package/dist/session/fs-watch.d.ts +0 -11
  198. package/dist/session/fs-watch.d.ts.map +1 -1
  199. package/dist/session/fs-watch.js +0 -21
  200. package/dist/session/hibernation.d.ts +68 -2
  201. package/dist/session/hibernation.d.ts.map +1 -1
  202. package/dist/session/hibernation.js +95 -1
  203. package/dist/session/init-phases.d.ts +1 -2
  204. package/dist/session/init-phases.d.ts.map +1 -1
  205. package/dist/session/init-phases.js +1 -2
  206. package/dist/session/init.d.ts.map +1 -1
  207. package/dist/session/init.js +7 -20
  208. package/dist/session/keys.d.ts +0 -3
  209. package/dist/session/keys.d.ts.map +1 -1
  210. package/dist/session/keys.js +0 -3
  211. package/dist/session/legacy-reset.d.ts +11 -0
  212. package/dist/session/legacy-reset.d.ts.map +1 -0
  213. package/dist/session/legacy-reset.js +16 -0
  214. package/dist/session/nimbus-session.d.ts +50 -16
  215. package/dist/session/nimbus-session.d.ts.map +1 -1
  216. package/dist/session/nimbus-session.js +77 -71
  217. package/dist/session/npm-install-port.d.ts.map +1 -1
  218. package/dist/session/npm-install-port.js +2 -0
  219. package/dist/session/programmatic.d.ts +13 -18
  220. package/dist/session/programmatic.d.ts.map +1 -1
  221. package/dist/session/programmatic.js +53 -39
  222. package/dist/session/replica-routes.d.ts +2 -3
  223. package/dist/session/replica-routes.d.ts.map +1 -1
  224. package/dist/session/replica-routes.js +3 -10
  225. package/dist/session/routes.d.ts.map +1 -1
  226. package/dist/session/routes.js +11 -12
  227. package/dist/session/rpc.d.ts +108 -21
  228. package/dist/session/rpc.d.ts.map +1 -1
  229. package/dist/session/rpc.js +194 -39
  230. package/dist/session/start-real-vite.js +2 -2
  231. package/dist/session/state-store.d.ts +1 -17
  232. package/dist/session/state-store.d.ts.map +1 -1
  233. package/dist/session/state-store.js +3 -53
  234. package/dist/session/supervisor-op.d.ts +7 -0
  235. package/dist/session/supervisor-op.d.ts.map +1 -1
  236. package/dist/session/supervisor-op.js +6 -1
  237. package/dist/session/supervisor-rpc.d.ts +116 -19
  238. package/dist/session/supervisor-rpc.d.ts.map +1 -1
  239. package/dist/session/supervisor-rpc.js +194 -84
  240. package/dist/session/vite-command.d.ts.map +1 -1
  241. package/dist/session/vite-command.js +17 -14
  242. package/dist/session/ws.d.ts.map +1 -1
  243. package/dist/session/ws.js +20 -8
  244. package/dist/shell/npm-bin-entrypoints.d.ts.map +1 -1
  245. package/dist/shell/npm-bin-entrypoints.js +30 -5
  246. package/dist/vfs/facet-resident-limits.d.ts +33 -0
  247. package/dist/vfs/facet-resident-limits.d.ts.map +1 -0
  248. package/dist/vfs/facet-resident-limits.js +33 -0
  249. package/dist/vfs/facet-resident-store.d.ts +2 -10
  250. package/dist/vfs/facet-resident-store.d.ts.map +1 -1
  251. package/dist/vfs/facet-resident-store.js +1594 -219
  252. package/dist/workspace-host.d.ts +3 -1
  253. package/dist/workspace-host.d.ts.map +1 -1
  254. package/dist/workspace-host.js +2 -0
  255. package/dist/wrangler/nimbus-wrangler.d.ts +0 -2
  256. package/dist/wrangler/nimbus-wrangler.d.ts.map +1 -1
  257. package/dist/wrangler/nimbus-wrangler.js +8 -22
  258. package/package.json +34 -7
  259. package/public/_assets/esbuild-0.24.2.js +2380 -0
  260. package/public/_assets/opencode/1.16.2/index-attach.js +2 -2
  261. package/public/_assets/runtime/esbuild-cli-c4fda380d52befc1.js +6892 -0
  262. package/public/_assets/runtime/git-de3e60c9f3ff006a.js +103 -0
  263. package/public/_assets/runtime/{node-shims-acaa037e6d26ec0d.js → node-shims-06565b121555c194.js} +2879 -992
  264. package/public/_assets/runtime/resident-store-6ffb1939c53d982f.js +2264 -0
  265. package/public/_assets/runtime/vfs-write-ledger-e501e8fc793bc2c1.js +889 -0
  266. package/scripts/build-opencode-attach-entry.mjs +51 -1
  267. package/scripts/bundle-esbuild-wasm.mjs +55 -39
  268. package/scripts/bundle-facet-workers.mjs +159 -10
  269. package/scripts/bundle-git.mjs +88 -27
  270. package/scripts/bundle-node-shims.mjs +72 -46
  271. package/scripts/bundle-runtime.mjs +18 -421
  272. package/scripts/cf-git-patch.mjs +137 -0
  273. package/scripts/patch-install-deps.mjs +49 -96
  274. package/scripts/runtime-specs.mjs +435 -0
  275. package/vendor/git-http.generated.d.ts +82 -0
  276. package/vendor/git-upstream.generated.d.ts +4378 -0
  277. package/vendor/git.LICENSE +7 -0
  278. package/vendor/git.generated.d.mts +21 -0
  279. package/vendor/git.generated.mjs +103 -0
  280. package/dist/replica/suspension.d.ts +0 -36
  281. package/dist/replica/suspension.d.ts.map +0 -1
  282. package/dist/replica/suspension.js +0 -49
  283. package/dist/runtime/static-server.d.ts +0 -3
  284. package/dist/runtime/static-server.d.ts.map +0 -1
  285. package/dist/runtime/static-server.js +0 -133
  286. package/scripts/clean-dist.mjs +0 -7
package/dist/npm/cache.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * npm-cache.ts — SQLite-backed package cache for Nimbus npm v2.
2
+ * npm/cache.ts — SQLite-backed package cache for Nimbus npm v2.
3
3
  *
4
4
  * Four tables:
5
5
  * 1. pkg_registry_cache — packument metadata (avoids re-fetching full JSON)
@@ -18,6 +18,7 @@
18
18
  * Hit = row(s) returned with size > 0; miss = empty result set. Callers
19
19
  * fall through to L2/L3/L4 on miss.
20
20
  */
21
+ import { placementName } from './placement.js';
21
22
  import { recordHit as _l1RecordHit, recordMiss as _l1RecordMiss } from '@nimbus-sh/core/_shared/cache-stats.js';
22
23
  // ── NpmCache ────────────────────────────────────────────────────────────
23
24
  export class NpmCache {
@@ -233,7 +234,7 @@ export class NpmCache {
233
234
  return { written, failed };
234
235
  }
235
236
  // ── Lockfile ──────────────────────────────────────────────────────────
236
- /** Read the lockfile for a project. Returns null if not found. */
237
+ /** Read the lockfile for a project, keyed by placement path. Null if not found. */
237
238
  readLockfile(projectPath) {
238
239
  this.ensureSchema();
239
240
  const rows = [...this.sql.exec(`SELECT name, resolved_ver, integrity, deps_json, hoisted_path
@@ -242,8 +243,9 @@ export class NpmCache {
242
243
  return null;
243
244
  const result = new Map();
244
245
  for (const r of rows) {
245
- result.set(String(r.name), {
246
- name: String(r.name),
246
+ const placement = String(r.name);
247
+ result.set(placement, {
248
+ name: placementName(placement),
247
249
  resolvedVer: String(r.resolved_ver),
248
250
  integrity: String(r.integrity),
249
251
  depsJson: String(r.deps_json),
@@ -252,6 +254,18 @@ export class NpmCache {
252
254
  }
253
255
  return result;
254
256
  }
257
+ /**
258
+ * Every installed package directory (namespace key, no leading slash) and
259
+ * the integrity its tarball was pinned to, across projects.
260
+ */
261
+ installedIntegrities() {
262
+ this.ensureSchema();
263
+ const out = new Map();
264
+ for (const r of this.sql.exec(`SELECT hoisted_path, integrity FROM pkg_lockfile WHERE integrity <> ''`)) {
265
+ out.set(String(r.hoisted_path).replace(/^\/+/, ''), String(r.integrity));
266
+ }
267
+ return out;
268
+ }
255
269
  /** Write/overwrite the lockfile for a project. Atomic via transaction. */
256
270
  writeLockfile(projectPath, entries, ctx) {
257
271
  this.ensureSchema();
@@ -267,14 +281,14 @@ export class NpmCache {
267
281
  // Clear existing lockfile for this project
268
282
  this.sql.exec(`DELETE FROM pkg_lockfile WHERE project_path = ?`, projectPath);
269
283
  // Batch insert: DO SQLite ~100 var limit. 6 cols → max 16 rows (16×6=96).
270
- const entryList = [...entries.values()];
284
+ const entryList = [...entries];
271
285
  const BATCH = 16;
272
286
  for (let i = 0; i < entryList.length; i += BATCH) {
273
287
  const batch = entryList.slice(i, i + BATCH);
274
288
  const placeholders = batch.map(() => '(?,?,?,?,?,?)').join(',');
275
289
  const values = [];
276
- for (const e of batch) {
277
- values.push(projectPath, e.name, e.resolvedVer, e.integrity, e.depsJson, e.hoistedPath);
290
+ for (const [placement, e] of batch) {
291
+ values.push(projectPath, placement, e.resolvedVer, e.integrity, e.depsJson, e.hoistedPath);
278
292
  }
279
293
  this.sql.exec(`INSERT INTO pkg_lockfile (project_path, name, resolved_ver, integrity, deps_json, hoisted_path) VALUES ${placeholders}`, ...values);
280
294
  }
@@ -7,7 +7,7 @@
7
7
  * ONE dynamic worker per pool slot. With concurrency=4, that's 4 permanent
8
8
  * loader entries in workerd's loader cache (each `loader.get(id, …)` call
9
9
  * is cached by id and the cache is never released — confirmed in
10
- * src/loaders/loader-pool.ts). Combine with:
10
+ * packages/fabric/src/isolate-pool.ts). Combine with:
11
11
  * - resolver-facet pool: 1 loader entry
12
12
  * - fetch-proxy: 1 loader entry
13
13
  * - pre-bundle pool: 1 effective entry
@@ -19,7 +19,7 @@
19
19
  * The fix: ONE facet for the whole install batch. The facet receives
20
20
  * the full FacetPackageSpec[] and loops internally with pLimit(3),
21
21
  * producing 1 loader entry instead of 4. Same architectural shape as
22
- * src/npm-resolve-facet.ts — proven to work in production (commit 9194998).
22
+ * src/npm/resolve-facet.ts — proven to work in production (commit 9194998).
23
23
  *
24
24
  * The shared producer wave pre-flushes before 4 MiB or 128 paths. One
25
25
  * oversize file may occupy a wave by itself; the supervisor's weighted
@@ -49,6 +49,8 @@ export interface InstallBatchSpec {
49
49
  export interface InstallBatchPerPackage {
50
50
  name: string;
51
51
  version: string;
52
+ /** The spec's identity: one version may land at two directories. Absent from pre-placement shards. */
53
+ pkgDir?: string;
52
54
  fileCount: number;
53
55
  bytesWritten: number;
54
56
  elapsed: number;
@@ -1 +1 @@
1
- {"version":3,"file":"install-batch-facet.d.ts","sourceRoot":"","sources":["../../src/npm/install-batch-facet.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAShF,MAAM,WAAW,gBAAgB;IAC/B;mDAC+C;IAC/C,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,mFAAmF;IACnF,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,UAAU,EAAE,sBAAsB,EAAE,CAAC;IACrC,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB;uFACmF;IACnF,aAAa,EAAE;QACb,iBAAiB,EAAE,MAAM,CAAC;QAC1B,sBAAsB,EAAE,MAAM,CAAC;QAC/B,YAAY,EAAE,MAAM,CAAC;QACrB;;uDAE+C;QAC/C,wBAAwB,EAAE,MAAM,CAAC;QACjC,0BAA0B,EAAE,MAAM,CAAC;QACnC;;;0DAGkD;QAClD,WAAW,EAAE,MAAM,CAAC;QACpB,kBAAkB,EAAE,MAAM,CAAC;QAC3B;;;;qEAI6D;QAC7D,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF;;;;;;;;;;OAUG;IACH,eAAe,EAAE,KAAK,CAClB;QAAE,IAAI,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,SAAS,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAC9E;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,SAAS,CAAA;KAAE,CACnE,CAAC;CACH;AAUD,eAAO,MAAM,sBAAsB,GACjC,OAAO,gBAAgB,EACvB,KAAK;IACH,UAAU,EAAE;QAIV,gBAAgB,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAK1F,gBAAgB,CAAC,EAAE,CACjB,SAAS,EAAE,MAAM,KACd,OAAO,CAAC;YACX,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;YACzB,MAAM,EAAE,KAAK,CACT;gBAAE,IAAI,EAAE,KAAK,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAC;gBAAC,SAAS,EAAE,MAAM,CAAC;gBAAC,KAAK,EAAE,MAAM,CAAA;aAAE,GAC/D;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAC;gBAAC,SAAS,EAAE,MAAM,CAAA;aAAE,CACpD,CAAC;SACH,CAAC,CAAC;QACH,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KAC7F,CAAC;CACH,KACA,OAAO,CAAC,kBAAkB,CAs1B5B,CAAC"}
1
+ {"version":3,"file":"install-batch-facet.d.ts","sourceRoot":"","sources":["../../src/npm/install-batch-facet.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAShF,MAAM,WAAW,gBAAgB;IAC/B;mDAC+C;IAC/C,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,mFAAmF;IACnF,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,sGAAsG;IACtG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,UAAU,EAAE,sBAAsB,EAAE,CAAC;IACrC,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB;uFACmF;IACnF,aAAa,EAAE;QACb,iBAAiB,EAAE,MAAM,CAAC;QAC1B,sBAAsB,EAAE,MAAM,CAAC;QAC/B,YAAY,EAAE,MAAM,CAAC;QACrB;;uDAE+C;QAC/C,wBAAwB,EAAE,MAAM,CAAC;QACjC,0BAA0B,EAAE,MAAM,CAAC;QACnC;;;0DAGkD;QAClD,WAAW,EAAE,MAAM,CAAC;QACpB,kBAAkB,EAAE,MAAM,CAAC;QAC3B;;;;qEAI6D;QAC7D,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF;;;;;;;;;;OAUG;IACH,eAAe,EAAE,KAAK,CAClB;QAAE,IAAI,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,SAAS,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAC9E;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,SAAS,CAAA;KAAE,CACnE,CAAC;CACH;AAUD,eAAO,MAAM,sBAAsB,GACjC,OAAO,gBAAgB,EACvB,KAAK;IACH,UAAU,EAAE;QAIV,gBAAgB,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAK1F,gBAAgB,CAAC,EAAE,CACjB,SAAS,EAAE,MAAM,KACd,OAAO,CAAC;YACX,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;YACzB,MAAM,EAAE,KAAK,CACT;gBAAE,IAAI,EAAE,KAAK,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAC;gBAAC,SAAS,EAAE,MAAM,CAAC;gBAAC,KAAK,EAAE,MAAM,CAAA;aAAE,GAC/D;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAC;gBAAC,SAAS,EAAE,MAAM,CAAA;aAAE,CACpD,CAAC;SACH,CAAC,CAAC;QACH,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KAC7F,CAAC;CACH,KACA,OAAO,CAAC,kBAAkB,CAo2B5B,CAAC"}
@@ -7,7 +7,7 @@
7
7
  * ONE dynamic worker per pool slot. With concurrency=4, that's 4 permanent
8
8
  * loader entries in workerd's loader cache (each `loader.get(id, …)` call
9
9
  * is cached by id and the cache is never released — confirmed in
10
- * src/loaders/loader-pool.ts). Combine with:
10
+ * packages/fabric/src/isolate-pool.ts). Combine with:
11
11
  * - resolver-facet pool: 1 loader entry
12
12
  * - fetch-proxy: 1 loader entry
13
13
  * - pre-bundle pool: 1 effective entry
@@ -19,7 +19,7 @@
19
19
  * The fix: ONE facet for the whole install batch. The facet receives
20
20
  * the full FacetPackageSpec[] and loops internally with pLimit(3),
21
21
  * producing 1 loader entry instead of 4. Same architectural shape as
22
- * src/npm-resolve-facet.ts — proven to work in production (commit 9194998).
22
+ * src/npm/resolve-facet.ts — proven to work in production (commit 9194998).
23
23
  *
24
24
  * The shared producer wave pre-flushes before 4 MiB or 128 paths. One
25
25
  * oversize file may occupy a wave by itself; the supervisor's weighted
@@ -66,7 +66,7 @@ export const installPackagesInFacet = async function installPackagesInFacet(batc
66
66
  const SPECULATIVE_FETCH_DELAY_MS = 75;
67
67
  const concurrency = Math.max(1, Math.min(batch.concurrency ?? 3, 8));
68
68
  // ── pLimit (inlined; preamble doesn't carry a limiter helper) ────────
69
- // Identical semantics to src/npm-resolver.ts:31-50 / src/npm-resolve-facet.ts.
69
+ // Waiting package tasks enter in arrival order.
70
70
  let active = 0;
71
71
  const queue = [];
72
72
  const limit = (fn) => {
@@ -363,6 +363,11 @@ export const installPackagesInFacet = async function installPackagesInFacet(batc
363
363
  });
364
364
  sharedBufferedBytes += additionalBytes;
365
365
  });
366
+ // A tarball placed twice in this shard is acquired once: the first owner
367
+ // publishes its bytes here, later owners of the URL wait for them. `null`
368
+ // means it had nothing to share and the waiter acquires on its own.
369
+ // Owners register on entry, so no waiter blocks an unstarted owner.
370
+ const tarballBytesByUrl = new Map();
366
371
  // ── Per-package install (inlined fetchAndStagePackage logic) ─────────
367
372
  //
368
373
  // Kept inline because cloudflare-parallel serializes this whole function
@@ -374,6 +379,19 @@ export const installPackagesInFacet = async function installPackagesInFacet(batc
374
379
  inFlight++;
375
380
  if (inFlight > inFlightPeak)
376
381
  inFlightPeak = inFlight;
382
+ let publishTarballBytes = () => { };
383
+ let sharedBytes = null;
384
+ const owner = tarballBytesByUrl.get(spec.tarballUrl);
385
+ if (owner) {
386
+ sharedBytes = await owner;
387
+ }
388
+ else {
389
+ tarballBytesByUrl.set(spec.tarballUrl, new Promise((rs) => { publishTarballBytes = rs; }));
390
+ }
391
+ // [W4] Compressed bytes for R2 write-back, captured by the integrity
392
+ // tee below (null without integrity); published to duplicates on exit.
393
+ let capturedTgzBytes = null;
394
+ let r2HitBytes = sharedBytes;
377
395
  // [W4] 1a. R2 cache lookup, hedged by the network fetch.
378
396
  //
379
397
  // The R2 GET is bounded by R2_RACE_TIMEOUT_MS. That bound guards against a
@@ -393,7 +411,7 @@ export const installPackagesInFacet = async function installPackagesInFacet(batc
393
411
  // supervisor deployment) the R2 leg becomes a noop and there is nothing to
394
412
  // overlap with, so no hedge is armed — the retry loop's own first fetch is
395
413
  // already the first thing that happens.
396
- const r2Available = typeof env.SUPERVISOR.getCachedTarball === 'function';
414
+ const r2Available = sharedBytes === null && typeof env.SUPERVISOR.getCachedTarball === 'function';
397
415
  const r2WaitStart = Date.now();
398
416
  const r2P = r2Available
399
417
  ? Promise.race([
@@ -438,13 +456,6 @@ export const installPackagesInFacet = async function installPackagesInFacet(batc
438
456
  hedgeAbort.abort();
439
457
  };
440
458
  try {
441
- // [W4] Captured compressed bytes for write-back to R2 on miss.
442
- // Populated by the integrity-tee path below; remains null when
443
- // integrity isn't present (rare; we only writeback when we can
444
- // verify on next read). Hoisted to installOne scope per W4-plan
445
- // §11 finding #4 lifecycle correctness.
446
- let capturedTgzBytes = null;
447
- let r2HitBytes = null;
448
459
  // Acquisition span, measured from the first cache probe to the moment
449
460
  // the tarball body is in hand.
450
461
  let tarballElapsedMs = 0;
@@ -501,10 +512,12 @@ export const installPackagesInFacet = async function installPackagesInFacet(batc
501
512
  // Cache HIT. The cross-tenant store is content-addressed and
502
513
  // re-hashes on every read, so bytes that come back are already
503
514
  // proven to be spec.integrity's tarball — there is exactly one
504
- // verification point and it is not here.
515
+ // verification point and it is not here. Bytes shared by another
516
+ // placement were verified by their owner; not an R2 outcome.
505
517
  discardPendingNetwork();
506
518
  tarballElapsedMs = Date.now() - r2WaitStart;
507
- pipelinedTarballRaceWins++;
519
+ if (!sharedBytes)
520
+ pipelinedTarballRaceWins++;
508
521
  tarballsCompleted++;
509
522
  cumulativeBytesDecoded += r2HitBytes.length;
510
523
  // Synthesize a Response body from the R2 bytes so the existing
@@ -556,14 +569,14 @@ export const installPackagesInFacet = async function installPackagesInFacet(batc
556
569
  }
557
570
  if (!resp) {
558
571
  return {
559
- name: spec.name, version: spec.version,
572
+ name: spec.name, version: spec.version, pkgDir: spec.pkgDir,
560
573
  fileCount: 0, bytesWritten: 0, elapsed: Date.now() - t0, warnings,
561
574
  errorText: `fetch failed: ${lastErr?.message || String(lastErr)}`,
562
575
  };
563
576
  }
564
577
  if (!resp.ok) {
565
578
  return {
566
- name: spec.name, version: spec.version,
579
+ name: spec.name, version: spec.version, pkgDir: spec.pkgDir,
567
580
  fileCount: 0, bytesWritten: 0, elapsed: Date.now() - t0, warnings,
568
581
  errorText: `HTTP ${resp.status}`,
569
582
  };
@@ -571,7 +584,7 @@ export const installPackagesInFacet = async function installPackagesInFacet(batc
571
584
  const body = resp.body;
572
585
  if (!body) {
573
586
  return {
574
- name: spec.name, version: spec.version,
587
+ name: spec.name, version: spec.version, pkgDir: spec.pkgDir,
575
588
  fileCount: 0, bytesWritten: 0, elapsed: Date.now() - t0, warnings,
576
589
  errorText: 'no response body',
577
590
  };
@@ -767,7 +780,7 @@ export const installPackagesInFacet = async function installPackagesInFacet(batc
767
780
  }
768
781
  }
769
782
  return {
770
- name: spec.name, version: spec.version,
783
+ name: spec.name, version: spec.version, pkgDir: spec.pkgDir,
771
784
  fileCount: totalFileInodes, bytesWritten: totalBytesWritten,
772
785
  elapsed: Date.now() - t0, warnings,
773
786
  tarballSource: r2HitBytes ? 'cache' : 'registry',
@@ -776,7 +789,7 @@ export const installPackagesInFacet = async function installPackagesInFacet(batc
776
789
  }
777
790
  catch (e) {
778
791
  return {
779
- name: spec.name, version: spec.version,
792
+ name: spec.name, version: spec.version, pkgDir: spec.pkgDir,
780
793
  fileCount: 0, bytesWritten: 0, elapsed: Date.now() - t0, warnings,
781
794
  errorText: e?.message || String(e),
782
795
  };
@@ -784,6 +797,7 @@ export const installPackagesInFacet = async function installPackagesInFacet(batc
784
797
  finally {
785
798
  // No-op once the retry loop has taken it; closes every early return.
786
799
  discardPendingNetwork();
800
+ publishTarballBytes(capturedTgzBytes ?? r2HitBytes);
787
801
  inFlight = Math.max(0, inFlight - 1);
788
802
  }
789
803
  };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * npm-installer.ts — Unified npm installer for Nimbus.
2
+ * npm/installer.ts — Unified npm installer for Nimbus.
3
3
  *
4
4
  * Designed for bun/pnpm-level performance on Cloudflare DO + SQLite.
5
5
  *
@@ -88,9 +88,11 @@ export declare class NpmInstaller {
88
88
  install(projectDir: string, opts?: {
89
89
  packages?: string[];
90
90
  production?: boolean;
91
+ fromLockfile?: boolean;
91
92
  pid?: number;
92
93
  npmLog?: NpmLogEmitter;
93
94
  onProgress?: (msg: string) => void;
95
+ registry?: string;
94
96
  }): Promise<NpmInstallResult>;
95
97
  private _installInner;
96
98
  /**
@@ -103,8 +105,13 @@ export declare class NpmInstaller {
103
105
  * width < IN_DO_THRESHOLD (5) → in-DO fanout in-DO loader-pool
104
106
  * width >= IN_DO_THRESHOLD → peer-DO fanout peer-DO (sibling NimbusSession DOs)
105
107
  *
108
+ * Resolution is per edge, not per name: the first version of a name goes
109
+ * to root; a later edge the nearest visible placement does not satisfy
110
+ * nests a copy under its dependent, never higher (placement.ts; live case
111
+ * in tests/unit/npm-install-nested-conflict.mjs).
112
+ *
106
113
  * The supervisor still owns:
107
- * - cycle detection (`seen`),
114
+ * - placement (`placed` / `pending` / `settled`, by placement path),
108
115
  * - X.5-F top-level / required-peer policy,
109
116
  * - X.5-G G1 optional-native silent-skip,
110
117
  * - X.5-drizzle best-effort tagging on optional-peer subtrees,
@@ -155,6 +162,13 @@ export declare class NpmInstaller {
155
162
  * W6: apply the PACKAGE_ABI_POLICY swap rewrites and reject deny list
156
163
  * to a top-level spec map. Emits `[swap]` notices via onProgress.
157
164
  *
165
+ * A swap rewrites the spec's RANGE to an npm alias of the swap target
166
+ * (`esbuild` → `npm:esbuild-wasm@<range>`), never its key: the key names
167
+ * the install directory, so `resolved`, node_modules, the bin links, the
168
+ * lockfile and package.json all keep the name the user declared. The
169
+ * resolver facet treats the alias as authoritative and does not announce
170
+ * the swap a second time.
171
+ *
158
172
  * G2: rejects are advisories — a listed package stays in the spec map
159
173
  * and installs like any other (npm parity: it cannot run here, but
160
174
  * install is the wrong place to say so). Each gets one `[npm] note:`
@@ -171,8 +185,14 @@ export declare class NpmInstaller {
171
185
  */
172
186
  private isLockfileValid;
173
187
  /**
174
- * Convert a lockfile back to resolved packages (for cache restore).
188
+ * npm ci: the placements package-lock.json (or npm-shrinkwrap.json)
189
+ * records, checked against package.json first. The ABI policy the resolver
190
+ * applies still holds: platform-native optional shards are skipped, a
191
+ * required one is refused, and a swapped package resolves its swap target
192
+ * at the locked version.
175
193
  */
194
+ private treeFromPackageLock;
195
+ /** Convert a lockfile back to resolved packages: root by name, nested by placement path. */
176
196
  private lockfileToResolved;
177
197
  /**
178
198
  * Write lockfile to SQLite.
@@ -1 +1 @@
1
- {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/npm/installer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/npm/installer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EACV,SAAS,EAGV,MAAM,mCAAmC,CAAC;AAM3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAEjF,OAAO,EAAE,QAAQ,EAAsB,MAAM,YAAY,CAAC;AAC1D,OAAO,EAEiC,KAAK,OAAO,EACnD,MAAM,eAAe,CAAC;AAKvB,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,2DAA2D,CAAC;AAUnE,OAAO,KAAK,EAAc,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AA2DvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEzE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAoCD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAID,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkB;IACtC,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,OAAO,CAAwB;IACvC,mFAAmF;IACnF,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,GAAG,CAAiC;IAC5C,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,UAAU,CAAsC;IACxD;;;;;;OAMG;IACH,OAAO,CAAC,OAAO,CAAsB;IACrC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAA2B;gBAGvC,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,UAAU,EACf,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,cAAc,CAAC;QACzB,UAAU,CAAC,EAAE,kBAAkB,CAAC;QAChC,GAAG,CAAC,EAAE,kBAAkB,CAAC;QACzB,GAAG,CAAC,EAAE,GAAG,CAAC;QACV,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QACnC,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB;IAaH,4EAA4E;IAC5E,IAAI,QAAQ,IAAI,QAAQ,CAAuB;IAI/C;;;;;OAKG;IACG,OAAO,CACX,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GACA,OAAO,CAAC,gBAAgB,CAAC;YAuBd,aAAa;IAgX3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;YACW,oBAAoB;IAialC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;YACW,kBAAkB;YA2NlB,UAAU;IAwDxB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,eAAe;IA2BvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAgDvB;;;;;;OAMG;YACW,mBAAmB;IAoHjC,4FAA4F;IAC5F,OAAO,CAAC,kBAAkB;IAkC1B;;OAEG;IACH,OAAO,CAAC,aAAa;IAoBrB;;OAEG;YACW,QAAQ;YA4DR,kBAAkB;IAehC,OAAO,CAAC,iBAAiB;IA8BzB;;;;;;;;;;OAUG;YACW,oBAAoB;IAkiBlC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,eAAe;IAgFvB;;OAEG;IACH;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,uBAAuB;IAsD/B,2EAA2E;IAC3E,OAAO,CAAC,kBAAkB;IAI1B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,OAAO,CAAC,0BAA0B;CAenC"}