everything-dev 1.53.2 → 2.0.0-rc.1

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 (713) hide show
  1. package/README.md +2 -11
  2. package/dist/_virtual/_rolldown/runtime.cjs +17 -2
  3. package/dist/_virtual/_rolldown/runtime.mjs +36 -0
  4. package/dist/api/auth-middleware.cjs +161 -0
  5. package/dist/api/auth-middleware.cjs.map +1 -0
  6. package/dist/api/auth-middleware.d.cts +69 -0
  7. package/dist/api/auth-middleware.d.mts +69 -0
  8. package/dist/api/auth-middleware.mjs +160 -0
  9. package/dist/api/auth-middleware.mjs.map +1 -0
  10. package/dist/api-contract.cjs +250 -62
  11. package/dist/api-contract.cjs.map +1 -1
  12. package/dist/api-contract.mjs +246 -65
  13. package/dist/api-contract.mjs.map +1 -1
  14. package/dist/app.cjs +99 -26
  15. package/dist/app.cjs.map +1 -1
  16. package/dist/app.d.cts +3 -0
  17. package/dist/app.d.mts +3 -0
  18. package/dist/app.mjs +100 -27
  19. package/dist/app.mjs.map +1 -1
  20. package/dist/auth-login.cjs +163 -0
  21. package/dist/auth-login.cjs.map +1 -0
  22. package/dist/auth-login.mjs +162 -0
  23. package/dist/auth-login.mjs.map +1 -0
  24. package/dist/auth-session.cjs +64 -0
  25. package/dist/auth-session.cjs.map +1 -0
  26. package/dist/auth-session.mjs +58 -0
  27. package/dist/auth-session.mjs.map +1 -0
  28. package/dist/auth-types-gen.cjs +0 -1
  29. package/dist/auth-types-gen.cjs.map +1 -1
  30. package/dist/build.cjs +37 -173
  31. package/dist/build.cjs.map +1 -1
  32. package/dist/build.mjs +37 -171
  33. package/dist/build.mjs.map +1 -1
  34. package/dist/bundle-cache.cjs +74 -0
  35. package/dist/bundle-cache.cjs.map +1 -0
  36. package/dist/bundle-cache.d.cts +27 -0
  37. package/dist/bundle-cache.d.mts +27 -0
  38. package/dist/bundle-cache.mjs +68 -0
  39. package/dist/bundle-cache.mjs.map +1 -0
  40. package/dist/bundle-fs-resolve.cjs +209 -0
  41. package/dist/bundle-fs-resolve.cjs.map +1 -0
  42. package/dist/bundle-fs-resolve.d.cts +76 -0
  43. package/dist/bundle-fs-resolve.d.mts +76 -0
  44. package/dist/bundle-fs-resolve.mjs +202 -0
  45. package/dist/bundle-fs-resolve.mjs.map +1 -0
  46. package/dist/cdn-deploy.cjs +126 -0
  47. package/dist/cdn-deploy.cjs.map +1 -0
  48. package/dist/cdn-deploy.mjs +124 -0
  49. package/dist/cdn-deploy.mjs.map +1 -0
  50. package/dist/cli/db-doctor.cjs +19 -19
  51. package/dist/cli/db-doctor.cjs.map +1 -1
  52. package/dist/cli/db-doctor.mjs +18 -18
  53. package/dist/cli/db-doctor.mjs.map +1 -1
  54. package/dist/cli/db-repair.cjs +9 -32
  55. package/dist/cli/db-repair.cjs.map +1 -1
  56. package/dist/cli/db-repair.mjs +9 -32
  57. package/dist/cli/db-repair.mjs.map +1 -1
  58. package/dist/cli/framework-version.cjs +7 -3
  59. package/dist/cli/framework-version.cjs.map +1 -1
  60. package/dist/cli/framework-version.mjs +7 -3
  61. package/dist/cli/framework-version.mjs.map +1 -1
  62. package/dist/cli/infra.cjs +159 -251
  63. package/dist/cli/infra.cjs.map +1 -1
  64. package/dist/cli/infra.mjs +154 -242
  65. package/dist/cli/infra.mjs.map +1 -1
  66. package/dist/cli/init.cjs +627 -199
  67. package/dist/cli/init.cjs.map +1 -1
  68. package/dist/cli/init.d.cts +61 -8
  69. package/dist/cli/init.d.mts +61 -8
  70. package/dist/cli/init.mjs +616 -197
  71. package/dist/cli/init.mjs.map +1 -1
  72. package/dist/cli/parse.cjs +8 -7
  73. package/dist/cli/parse.cjs.map +1 -1
  74. package/dist/cli/parse.mjs +9 -7
  75. package/dist/cli/parse.mjs.map +1 -1
  76. package/dist/cli/prompts.cjs +14 -1
  77. package/dist/cli/prompts.cjs.map +1 -1
  78. package/dist/cli/prompts.mjs +14 -1
  79. package/dist/cli/prompts.mjs.map +1 -1
  80. package/dist/cli/prune.cjs +220 -0
  81. package/dist/cli/prune.cjs.map +1 -0
  82. package/dist/cli/prune.mjs +220 -0
  83. package/dist/cli/prune.mjs.map +1 -0
  84. package/dist/cli/snapshot.cjs +2 -1
  85. package/dist/cli/snapshot.cjs.map +1 -1
  86. package/dist/cli/snapshot.mjs +2 -1
  87. package/dist/cli/snapshot.mjs.map +1 -1
  88. package/dist/cli/status.cjs +5 -4
  89. package/dist/cli/status.cjs.map +1 -1
  90. package/dist/cli/status.mjs +6 -5
  91. package/dist/cli/status.mjs.map +1 -1
  92. package/dist/cli/sync.cjs +156 -58
  93. package/dist/cli/sync.cjs.map +1 -1
  94. package/dist/cli/sync.mjs +158 -63
  95. package/dist/cli/sync.mjs.map +1 -1
  96. package/dist/cli/timing.cjs +0 -1
  97. package/dist/cli/timing.cjs.map +1 -1
  98. package/dist/cli/upgrade.cjs +95 -69
  99. package/dist/cli/upgrade.cjs.map +1 -1
  100. package/dist/cli/upgrade.mjs +97 -72
  101. package/dist/cli/upgrade.mjs.map +1 -1
  102. package/dist/cli/utils/helpers.cjs.map +1 -1
  103. package/dist/cli.cjs +320 -72
  104. package/dist/cli.cjs.map +1 -1
  105. package/dist/cli.mjs +316 -68
  106. package/dist/cli.mjs.map +1 -1
  107. package/dist/code-artifacts.cjs +76 -8
  108. package/dist/code-artifacts.cjs.map +1 -1
  109. package/dist/code-artifacts.mjs +76 -10
  110. package/dist/code-artifacts.mjs.map +1 -1
  111. package/dist/commands/build.cjs +65 -0
  112. package/dist/commands/build.cjs.map +1 -0
  113. package/dist/commands/build.mjs +65 -0
  114. package/dist/commands/build.mjs.map +1 -0
  115. package/dist/commands/config.cjs +77 -0
  116. package/dist/commands/config.cjs.map +1 -0
  117. package/dist/commands/config.d.cts +8 -0
  118. package/dist/commands/config.d.mts +8 -0
  119. package/dist/commands/config.mjs +74 -0
  120. package/dist/commands/config.mjs.map +1 -0
  121. package/dist/commands/db.cjs +107 -0
  122. package/dist/commands/db.cjs.map +1 -0
  123. package/dist/commands/db.mjs +107 -0
  124. package/dist/commands/db.mjs.map +1 -0
  125. package/dist/commands/deploy.cjs +336 -0
  126. package/dist/commands/deploy.cjs.map +1 -0
  127. package/dist/commands/deploy.mjs +334 -0
  128. package/dist/commands/deploy.mjs.map +1 -0
  129. package/dist/commands/dev.cjs +75 -0
  130. package/dist/commands/dev.cjs.map +1 -0
  131. package/dist/commands/dev.mjs +73 -0
  132. package/dist/commands/dev.mjs.map +1 -0
  133. package/dist/commands/init.cjs +234 -0
  134. package/dist/commands/init.cjs.map +1 -0
  135. package/dist/commands/init.mjs +231 -0
  136. package/dist/commands/init.mjs.map +1 -0
  137. package/dist/commands/keys.cjs +255 -0
  138. package/dist/commands/keys.cjs.map +1 -0
  139. package/dist/commands/keys.mjs +253 -0
  140. package/dist/commands/keys.mjs.map +1 -0
  141. package/dist/commands/ops.cjs +199 -0
  142. package/dist/commands/ops.cjs.map +1 -0
  143. package/dist/commands/ops.mjs +197 -0
  144. package/dist/commands/ops.mjs.map +1 -0
  145. package/dist/commands/plugins.cjs +211 -0
  146. package/dist/commands/plugins.cjs.map +1 -0
  147. package/dist/commands/plugins.mjs +211 -0
  148. package/dist/commands/plugins.mjs.map +1 -0
  149. package/dist/commands/shared.cjs +8 -0
  150. package/dist/commands/shared.cjs.map +1 -0
  151. package/dist/commands/shared.d.cts +6 -0
  152. package/dist/commands/shared.d.mts +6 -0
  153. package/dist/commands/shared.mjs +8 -0
  154. package/dist/commands/shared.mjs.map +1 -0
  155. package/dist/commands/upgrade.cjs +325 -0
  156. package/dist/commands/upgrade.cjs.map +1 -0
  157. package/dist/commands/upgrade.mjs +323 -0
  158. package/dist/commands/upgrade.mjs.map +1 -0
  159. package/dist/components/dev-render.cjs +340 -0
  160. package/dist/components/dev-render.cjs.map +1 -0
  161. package/dist/components/dev-render.mjs +332 -0
  162. package/dist/components/dev-render.mjs.map +1 -0
  163. package/dist/config.cjs +460 -221
  164. package/dist/config.cjs.map +1 -1
  165. package/dist/config.d.cts +491 -48
  166. package/dist/config.d.mts +491 -48
  167. package/dist/config.mjs +439 -212
  168. package/dist/config.mjs.map +1 -1
  169. package/dist/contract.cjs +327 -50
  170. package/dist/contract.cjs.map +1 -1
  171. package/dist/contract.d.cts +1951 -1062
  172. package/dist/contract.d.mts +1951 -1062
  173. package/dist/contract.meta.cjs +107 -12
  174. package/dist/contract.meta.cjs.map +1 -1
  175. package/dist/contract.meta.d.cts +166 -8
  176. package/dist/contract.meta.d.mts +166 -8
  177. package/dist/contract.meta.mjs +107 -11
  178. package/dist/contract.meta.mjs.map +1 -1
  179. package/dist/contract.mjs +580 -327
  180. package/dist/contract.mjs.map +1 -1
  181. package/dist/dag.cjs +5 -3
  182. package/dist/dag.cjs.map +1 -1
  183. package/dist/dag.mjs +6 -3
  184. package/dist/dag.mjs.map +1 -1
  185. package/dist/db/binding.cjs +80 -0
  186. package/dist/db/binding.cjs.map +1 -0
  187. package/dist/db/binding.d.cts +39 -0
  188. package/dist/db/binding.d.mts +39 -0
  189. package/dist/db/binding.mjs +78 -0
  190. package/dist/db/binding.mjs.map +1 -0
  191. package/dist/db/bindings.cjs +78 -0
  192. package/dist/db/bindings.cjs.map +1 -0
  193. package/dist/db/bindings.d.cts +34 -0
  194. package/dist/db/bindings.d.mts +34 -0
  195. package/dist/db/bindings.mjs +76 -0
  196. package/dist/db/bindings.mjs.map +1 -0
  197. package/dist/db/core.cjs +204 -0
  198. package/dist/db/core.cjs.map +1 -0
  199. package/dist/db/core.d.cts +69 -0
  200. package/dist/db/core.d.mts +69 -0
  201. package/dist/db/core.mjs +192 -0
  202. package/dist/db/core.mjs.map +1 -0
  203. package/dist/db/driver.cjs +167 -0
  204. package/dist/db/driver.cjs.map +1 -0
  205. package/dist/db/driver.d.cts +50 -0
  206. package/dist/db/driver.d.mts +50 -0
  207. package/dist/db/driver.mjs +165 -0
  208. package/dist/db/driver.mjs.map +1 -0
  209. package/dist/db/drizzle-kit.cjs +177 -0
  210. package/dist/db/drizzle-kit.cjs.map +1 -0
  211. package/dist/db/drizzle-kit.d.cts +25 -0
  212. package/dist/db/drizzle-kit.d.mts +25 -0
  213. package/dist/db/drizzle-kit.mjs +175 -0
  214. package/dist/db/drizzle-kit.mjs.map +1 -0
  215. package/dist/db/errors.cjs +27 -0
  216. package/dist/db/errors.cjs.map +1 -0
  217. package/dist/db/errors.d.cts +16 -0
  218. package/dist/db/errors.d.mts +16 -0
  219. package/dist/db/errors.mjs +26 -0
  220. package/dist/db/errors.mjs.map +1 -0
  221. package/dist/db/identity.cjs +55 -0
  222. package/dist/db/identity.cjs.map +1 -0
  223. package/dist/db/identity.d.cts +40 -0
  224. package/dist/db/identity.d.mts +40 -0
  225. package/dist/db/identity.mjs +53 -0
  226. package/dist/db/identity.mjs.map +1 -0
  227. package/dist/db/index.cjs +43 -0
  228. package/dist/db/index.d.cts +9 -0
  229. package/dist/db/index.d.mts +9 -0
  230. package/dist/db/index.mjs +10 -0
  231. package/dist/db/run-migrations.cjs +343 -0
  232. package/dist/db/run-migrations.cjs.map +1 -0
  233. package/dist/db/run-migrations.d.cts +87 -0
  234. package/dist/db/run-migrations.d.mts +87 -0
  235. package/dist/db/run-migrations.mjs +341 -0
  236. package/dist/db/run-migrations.mjs.map +1 -0
  237. package/dist/delegate-signer.cjs +85 -0
  238. package/dist/delegate-signer.cjs.map +1 -0
  239. package/dist/delegate-signer.mjs +84 -0
  240. package/dist/delegate-signer.mjs.map +1 -0
  241. package/dist/deploy-diff.cjs +119 -0
  242. package/dist/deploy-diff.cjs.map +1 -0
  243. package/dist/deploy-diff.mjs +109 -0
  244. package/dist/deploy-diff.mjs.map +1 -0
  245. package/dist/descriptor/constructors.cjs +49 -0
  246. package/dist/descriptor/constructors.cjs.map +1 -0
  247. package/dist/descriptor/constructors.d.cts +27 -0
  248. package/dist/descriptor/constructors.d.mts +27 -0
  249. package/dist/descriptor/constructors.mjs +45 -0
  250. package/dist/descriptor/constructors.mjs.map +1 -0
  251. package/dist/descriptor/index.cjs +24 -0
  252. package/dist/descriptor/index.d.cts +5 -0
  253. package/dist/descriptor/index.d.mts +5 -0
  254. package/dist/descriptor/index.mjs +6 -0
  255. package/dist/descriptor/resolve.cjs +258 -0
  256. package/dist/descriptor/resolve.cjs.map +1 -0
  257. package/dist/descriptor/resolve.d.cts +50 -0
  258. package/dist/descriptor/resolve.d.mts +50 -0
  259. package/dist/descriptor/resolve.mjs +252 -0
  260. package/dist/descriptor/resolve.mjs.map +1 -0
  261. package/dist/descriptor/schema.cjs +109 -0
  262. package/dist/descriptor/schema.cjs.map +1 -0
  263. package/dist/descriptor/schema.d.cts +217 -0
  264. package/dist/descriptor/schema.d.mts +217 -0
  265. package/dist/descriptor/schema.mjs +102 -0
  266. package/dist/descriptor/schema.mjs.map +1 -0
  267. package/dist/descriptor/serialize.cjs +45 -0
  268. package/dist/descriptor/serialize.cjs.map +1 -0
  269. package/dist/descriptor/serialize.d.cts +7 -0
  270. package/dist/descriptor/serialize.d.mts +7 -0
  271. package/dist/descriptor/serialize.mjs +45 -0
  272. package/dist/descriptor/serialize.mjs.map +1 -0
  273. package/dist/dev-log-pipeline.cjs +273 -0
  274. package/dist/dev-log-pipeline.cjs.map +1 -0
  275. package/dist/dev-log-pipeline.mjs +267 -0
  276. package/dist/dev-log-pipeline.mjs.map +1 -0
  277. package/dist/dev-logs.cjs +39 -8
  278. package/dist/dev-logs.cjs.map +1 -1
  279. package/dist/dev-logs.mjs +37 -9
  280. package/dist/dev-logs.mjs.map +1 -1
  281. package/dist/dev-program.cjs +405 -0
  282. package/dist/dev-program.cjs.map +1 -0
  283. package/dist/dev-program.d.cts +10 -0
  284. package/dist/dev-program.d.mts +10 -0
  285. package/dist/dev-program.mjs +395 -0
  286. package/dist/dev-program.mjs.map +1 -0
  287. package/dist/dev-session-data.d.cts +27 -0
  288. package/dist/dev-session-data.d.mts +27 -0
  289. package/dist/dev-session.cjs +178 -105
  290. package/dist/dev-session.cjs.map +1 -1
  291. package/dist/dev-session.mjs +180 -105
  292. package/dist/dev-session.mjs.map +1 -1
  293. package/dist/env/process-env.cjs +16 -0
  294. package/dist/env/process-env.cjs.map +1 -0
  295. package/dist/env/process-env.mjs +13 -0
  296. package/dist/env/process-env.mjs.map +1 -0
  297. package/dist/env/project-env.cjs +144 -0
  298. package/dist/env/project-env.cjs.map +1 -0
  299. package/dist/env/project-env.d.cts +1 -0
  300. package/dist/env/project-env.d.mts +1 -0
  301. package/dist/env/project-env.mjs +132 -0
  302. package/dist/env/project-env.mjs.map +1 -0
  303. package/dist/fastkv.cjs +59 -12
  304. package/dist/fastkv.cjs.map +1 -1
  305. package/dist/fastkv.d.cts +42 -6
  306. package/dist/fastkv.d.mts +42 -6
  307. package/dist/fastkv.mjs +58 -13
  308. package/dist/fastkv.mjs.map +1 -1
  309. package/dist/fingerprint.cjs +57 -0
  310. package/dist/fingerprint.cjs.map +1 -0
  311. package/dist/fingerprint.d.cts +14 -0
  312. package/dist/fingerprint.d.mts +14 -0
  313. package/dist/fingerprint.mjs +55 -0
  314. package/dist/fingerprint.mjs.map +1 -0
  315. package/dist/http-client.cjs +17 -17
  316. package/dist/http-client.cjs.map +1 -1
  317. package/dist/http-client.mjs +17 -17
  318. package/dist/http-client.mjs.map +1 -1
  319. package/dist/image-deploy.cjs +186 -0
  320. package/dist/image-deploy.cjs.map +1 -0
  321. package/dist/image-deploy.mjs +182 -0
  322. package/dist/image-deploy.mjs.map +1 -0
  323. package/dist/index.cjs +66 -18
  324. package/dist/index.d.cts +8 -7
  325. package/dist/index.d.mts +8 -7
  326. package/dist/index.mjs +6 -5
  327. package/dist/infra/docker.cjs +77 -0
  328. package/dist/infra/docker.cjs.map +1 -0
  329. package/dist/infra/docker.d.cts +10 -0
  330. package/dist/infra/docker.d.mts +10 -0
  331. package/dist/infra/docker.mjs +69 -0
  332. package/dist/infra/docker.mjs.map +1 -0
  333. package/dist/infra/materializer.cjs +74 -0
  334. package/dist/infra/materializer.cjs.map +1 -0
  335. package/dist/infra/materializer.mjs +70 -0
  336. package/dist/infra/materializer.mjs.map +1 -0
  337. package/dist/infra/planner.cjs +135 -103
  338. package/dist/infra/planner.cjs.map +1 -1
  339. package/dist/infra/planner.mjs +137 -104
  340. package/dist/infra/planner.mjs.map +1 -1
  341. package/dist/infra/port-ownership.cjs +57 -0
  342. package/dist/infra/port-ownership.cjs.map +1 -0
  343. package/dist/infra/port-ownership.mjs +57 -0
  344. package/dist/infra/port-ownership.mjs.map +1 -0
  345. package/dist/infra/preflight.cjs +45 -33
  346. package/dist/infra/preflight.cjs.map +1 -1
  347. package/dist/infra/preflight.d.cts +1 -0
  348. package/dist/infra/preflight.d.mts +1 -0
  349. package/dist/infra/preflight.mjs +46 -34
  350. package/dist/infra/preflight.mjs.map +1 -1
  351. package/dist/infra/types.cjs.map +1 -1
  352. package/dist/infra/types.d.cts +2 -0
  353. package/dist/infra/types.d.mts +2 -0
  354. package/dist/infra/types.mjs.map +1 -1
  355. package/dist/integrity.cjs +50 -61
  356. package/dist/integrity.cjs.map +1 -1
  357. package/dist/integrity.d.cts +16 -10
  358. package/dist/integrity.d.mts +16 -10
  359. package/dist/integrity.mjs +50 -59
  360. package/dist/integrity.mjs.map +1 -1
  361. package/dist/internal/manifest-normalizer.cjs +8 -2
  362. package/dist/internal/manifest-normalizer.cjs.map +1 -1
  363. package/dist/internal/manifest-normalizer.mjs +9 -3
  364. package/dist/internal/manifest-normalizer.mjs.map +1 -1
  365. package/dist/merge.cjs +19 -1
  366. package/dist/merge.cjs.map +1 -1
  367. package/dist/merge.d.cts +1 -1
  368. package/dist/merge.d.mts +1 -1
  369. package/dist/merge.mjs +19 -2
  370. package/dist/merge.mjs.map +1 -1
  371. package/dist/mf.cjs +190 -3
  372. package/dist/mf.cjs.map +1 -1
  373. package/dist/mf.d.cts +24 -2
  374. package/dist/mf.d.mts +24 -2
  375. package/dist/mf.mjs +189 -4
  376. package/dist/mf.mjs.map +1 -1
  377. package/dist/near-cli.cjs +59 -91
  378. package/dist/near-cli.cjs.map +1 -1
  379. package/dist/near-cli.mjs +58 -90
  380. package/dist/near-cli.mjs.map +1 -1
  381. package/dist/near-signer.cjs +73 -0
  382. package/dist/near-signer.cjs.map +1 -0
  383. package/dist/near-signer.mjs +70 -0
  384. package/dist/near-signer.mjs.map +1 -0
  385. package/dist/network.cjs +0 -1
  386. package/dist/network.cjs.map +1 -1
  387. package/dist/orchestrator.cjs +256 -87
  388. package/dist/orchestrator.cjs.map +1 -1
  389. package/dist/orchestrator.mjs +248 -87
  390. package/dist/orchestrator.mjs.map +1 -1
  391. package/dist/platform-deploy.cjs +81 -0
  392. package/dist/platform-deploy.cjs.map +1 -0
  393. package/dist/platform-deploy.mjs +80 -0
  394. package/dist/platform-deploy.mjs.map +1 -0
  395. package/dist/plugin.cjs +54 -1389
  396. package/dist/plugin.cjs.map +1 -1
  397. package/dist/plugin.d.cts +6 -896
  398. package/dist/plugin.d.mts +6 -896
  399. package/dist/plugin.mjs +53 -1387
  400. package/dist/plugin.mjs.map +1 -1
  401. package/dist/process-kill.cjs +44 -0
  402. package/dist/process-kill.cjs.map +1 -0
  403. package/dist/process-kill.mjs +43 -0
  404. package/dist/process-kill.mjs.map +1 -0
  405. package/dist/process-registry.cjs +64 -9
  406. package/dist/process-registry.cjs.map +1 -1
  407. package/dist/process-registry.mjs +61 -10
  408. package/dist/process-registry.mjs.map +1 -1
  409. package/dist/progress.cjs +45 -0
  410. package/dist/progress.cjs.map +1 -0
  411. package/dist/progress.d.cts +13 -0
  412. package/dist/progress.d.mts +13 -0
  413. package/dist/progress.mjs +42 -0
  414. package/dist/progress.mjs.map +1 -0
  415. package/dist/publish.cjs +513 -79
  416. package/dist/publish.cjs.map +1 -1
  417. package/dist/publish.mjs +515 -82
  418. package/dist/publish.mjs.map +1 -1
  419. package/dist/registry-use.cjs +41 -0
  420. package/dist/registry-use.cjs.map +1 -0
  421. package/dist/registry-use.mjs +40 -0
  422. package/dist/registry-use.mjs.map +1 -0
  423. package/dist/resolution/session.cjs +335 -0
  424. package/dist/resolution/session.cjs.map +1 -0
  425. package/dist/resolution/session.d.cts +105 -0
  426. package/dist/resolution/session.d.mts +105 -0
  427. package/dist/resolution/session.mjs +331 -0
  428. package/dist/resolution/session.mjs.map +1 -0
  429. package/dist/rollback.cjs +131 -0
  430. package/dist/rollback.cjs.map +1 -0
  431. package/dist/rollback.mjs +128 -0
  432. package/dist/rollback.mjs.map +1 -0
  433. package/dist/sdk.cjs +7 -7
  434. package/dist/sdk.d.cts +3 -3
  435. package/dist/sdk.d.mts +3 -3
  436. package/dist/sdk.mjs +2 -2
  437. package/dist/service-descriptor.cjs +67 -34
  438. package/dist/service-descriptor.cjs.map +1 -1
  439. package/dist/service-descriptor.d.cts +4 -1
  440. package/dist/service-descriptor.d.mts +3 -0
  441. package/dist/service-descriptor.mjs +63 -35
  442. package/dist/service-descriptor.mjs.map +1 -1
  443. package/dist/shared-deps.cjs +17 -16
  444. package/dist/shared-deps.cjs.map +1 -1
  445. package/dist/shared-deps.mjs +17 -16
  446. package/dist/shared-deps.mjs.map +1 -1
  447. package/dist/start-config-source.cjs +24 -0
  448. package/dist/start-config-source.cjs.map +1 -0
  449. package/dist/start-config-source.d.cts +29 -0
  450. package/dist/start-config-source.d.mts +29 -0
  451. package/dist/start-config-source.mjs +22 -0
  452. package/dist/start-config-source.mjs.map +1 -0
  453. package/dist/storage-upload.cjs +145 -0
  454. package/dist/storage-upload.cjs.map +1 -0
  455. package/dist/storage-upload.mjs +143 -0
  456. package/dist/storage-upload.mjs.map +1 -0
  457. package/dist/types.cjs +126 -20
  458. package/dist/types.cjs.map +1 -1
  459. package/dist/types.d.cts +867 -585
  460. package/dist/types.d.mts +867 -585
  461. package/dist/types.mjs +307 -208
  462. package/dist/types.mjs.map +1 -1
  463. package/dist/ui/api.cjs +105 -0
  464. package/dist/ui/api.cjs.map +1 -0
  465. package/dist/ui/api.d.cts +31 -0
  466. package/dist/ui/api.d.mts +31 -0
  467. package/dist/ui/api.mjs +99 -0
  468. package/dist/ui/api.mjs.map +1 -0
  469. package/dist/ui/auth-guards.cjs +50 -0
  470. package/dist/ui/auth-guards.cjs.map +1 -0
  471. package/dist/ui/auth-guards.d.cts +39 -0
  472. package/dist/ui/auth-guards.d.mts +39 -0
  473. package/dist/ui/auth-guards.mjs +48 -0
  474. package/dist/ui/auth-guards.mjs.map +1 -0
  475. package/dist/ui/auth.cjs +197 -0
  476. package/dist/ui/auth.cjs.map +1 -0
  477. package/dist/ui/auth.d.cts +56 -0
  478. package/dist/ui/auth.d.mts +56 -0
  479. package/dist/ui/auth.mjs +179 -0
  480. package/dist/ui/auth.mjs.map +1 -0
  481. package/dist/ui/entry.cjs +16 -0
  482. package/dist/ui/entry.cjs.map +1 -0
  483. package/dist/ui/entry.d.cts +12 -0
  484. package/dist/ui/entry.d.mts +12 -0
  485. package/dist/ui/entry.mjs +15 -0
  486. package/dist/ui/entry.mjs.map +1 -0
  487. package/dist/ui/head.cjs +14 -7
  488. package/dist/ui/head.cjs.map +1 -1
  489. package/dist/ui/head.mjs +15 -7
  490. package/dist/ui/head.mjs.map +1 -1
  491. package/dist/ui/hydrate.cjs +265 -0
  492. package/dist/ui/hydrate.cjs.map +1 -0
  493. package/dist/ui/hydrate.d.cts +48 -0
  494. package/dist/ui/hydrate.d.mts +48 -0
  495. package/dist/ui/hydrate.mjs +263 -0
  496. package/dist/ui/hydrate.mjs.map +1 -0
  497. package/dist/ui/i18n.cjs +153 -0
  498. package/dist/ui/i18n.cjs.map +1 -0
  499. package/dist/ui/i18n.d.cts +29 -0
  500. package/dist/ui/i18n.d.mts +29 -0
  501. package/dist/ui/i18n.mjs +140 -0
  502. package/dist/ui/i18n.mjs.map +1 -0
  503. package/dist/ui/index.cjs +19 -1
  504. package/dist/ui/index.d.cts +6 -3
  505. package/dist/ui/index.d.mts +6 -3
  506. package/dist/ui/index.mjs +5 -2
  507. package/dist/ui/locale.cjs +53 -0
  508. package/dist/ui/locale.cjs.map +1 -0
  509. package/dist/ui/locale.d.cts +18 -0
  510. package/dist/ui/locale.d.mts +18 -0
  511. package/dist/ui/locale.mjs +49 -0
  512. package/dist/ui/locale.mjs.map +1 -0
  513. package/dist/ui/manifest/index.cjs +25 -0
  514. package/dist/ui/manifest/index.cjs.map +1 -0
  515. package/dist/ui/manifest/index.d.cts +9 -0
  516. package/dist/ui/manifest/index.d.mts +9 -0
  517. package/dist/ui/manifest/index.mjs +13 -0
  518. package/dist/ui/manifest/index.mjs.map +1 -0
  519. package/dist/ui/manifest-generator.cjs +8 -0
  520. package/dist/ui/manifest-generator.d.cts +1 -0
  521. package/dist/ui/manifest-generator.d.mts +1 -0
  522. package/dist/ui/manifest-generator.mjs +3 -0
  523. package/dist/ui/message-catalogs.cjs +8 -0
  524. package/dist/ui/message-catalogs.cjs.map +1 -0
  525. package/dist/ui/message-catalogs.d.cts +5 -0
  526. package/dist/ui/message-catalogs.d.mts +5 -0
  527. package/dist/ui/message-catalogs.mjs +8 -0
  528. package/dist/ui/message-catalogs.mjs.map +1 -0
  529. package/dist/ui/metadata.cjs +0 -1
  530. package/dist/ui/metadata.cjs.map +1 -1
  531. package/dist/ui/metadata.d.cts +1 -1
  532. package/dist/ui/metadata.d.mts +1 -1
  533. package/dist/ui/plugin-path.cjs +37 -0
  534. package/dist/ui/plugin-path.cjs.map +1 -0
  535. package/dist/ui/plugin-path.d.cts +25 -0
  536. package/dist/ui/plugin-path.d.mts +25 -0
  537. package/dist/ui/plugin-path.mjs +35 -0
  538. package/dist/ui/plugin-path.mjs.map +1 -0
  539. package/dist/ui/router-client.cjs +61 -0
  540. package/dist/ui/router-client.cjs.map +1 -0
  541. package/dist/ui/router-client.d.cts +20 -0
  542. package/dist/ui/router-client.d.mts +20 -0
  543. package/dist/ui/router-client.mjs +60 -0
  544. package/dist/ui/router-client.mjs.map +1 -0
  545. package/dist/ui/router-defaults.cjs +48 -0
  546. package/dist/ui/router-defaults.cjs.map +1 -0
  547. package/dist/ui/router-defaults.d.cts +8 -0
  548. package/dist/ui/router-defaults.d.mts +8 -0
  549. package/dist/ui/router-defaults.mjs +45 -0
  550. package/dist/ui/router-defaults.mjs.map +1 -0
  551. package/dist/ui/router-error.cjs +70 -0
  552. package/dist/ui/router-error.cjs.map +1 -0
  553. package/dist/ui/router-error.d.cts +19 -0
  554. package/dist/ui/router-error.d.mts +19 -0
  555. package/dist/ui/router-error.mjs +69 -0
  556. package/dist/ui/router-error.mjs.map +1 -0
  557. package/dist/ui/router-server.cjs +153 -0
  558. package/dist/ui/router-server.cjs.map +1 -0
  559. package/dist/ui/router-server.d.cts +38 -0
  560. package/dist/ui/router-server.d.mts +38 -0
  561. package/dist/ui/router-server.mjs +152 -0
  562. package/dist/ui/router-server.mjs.map +1 -0
  563. package/dist/ui/router.cjs +4 -16
  564. package/dist/ui/router.cjs.map +1 -1
  565. package/dist/ui/router.mjs +4 -15
  566. package/dist/ui/router.mjs.map +1 -1
  567. package/dist/ui/runtime.cjs +5 -1
  568. package/dist/ui/runtime.cjs.map +1 -1
  569. package/dist/ui/runtime.d.cts +2 -1
  570. package/dist/ui/runtime.d.mts +2 -1
  571. package/dist/ui/runtime.mjs +5 -1
  572. package/dist/ui/runtime.mjs.map +1 -1
  573. package/dist/ui/slot.cjs +34 -0
  574. package/dist/ui/slot.cjs.map +1 -0
  575. package/dist/ui/slot.d.cts +43 -0
  576. package/dist/ui/slot.d.mts +43 -0
  577. package/dist/ui/slot.mjs +34 -0
  578. package/dist/ui/slot.mjs.map +1 -0
  579. package/dist/ui/tenant.cjs +300 -0
  580. package/dist/ui/tenant.cjs.map +1 -0
  581. package/dist/ui/tenant.d.cts +122 -0
  582. package/dist/ui/tenant.d.mts +122 -0
  583. package/dist/ui/tenant.mjs +279 -0
  584. package/dist/ui/tenant.mjs.map +1 -0
  585. package/dist/ui/types.d.cts +32 -2
  586. package/dist/ui/types.d.mts +32 -2
  587. package/dist/ui/version-check.cjs +47 -0
  588. package/dist/ui/version-check.cjs.map +1 -0
  589. package/dist/ui/version-check.d.cts +23 -0
  590. package/dist/ui/version-check.d.mts +23 -0
  591. package/dist/ui/version-check.mjs +46 -0
  592. package/dist/ui/version-check.mjs.map +1 -0
  593. package/dist/utils/banner.cjs +2 -2
  594. package/dist/utils/banner.cjs.map +1 -1
  595. package/dist/utils/banner.mjs +2 -2
  596. package/dist/utils/banner.mjs.map +1 -1
  597. package/dist/utils/linkify.cjs +1 -1
  598. package/dist/utils/linkify.cjs.map +1 -1
  599. package/dist/utils/linkify.mjs +1 -0
  600. package/dist/utils/linkify.mjs.map +1 -1
  601. package/dist/utils/run.cjs +6 -6
  602. package/dist/utils/run.cjs.map +1 -1
  603. package/dist/utils/run.mjs +6 -6
  604. package/dist/utils/run.mjs.map +1 -1
  605. package/dist/utils/save-config.cjs +12 -0
  606. package/dist/utils/save-config.cjs.map +1 -1
  607. package/dist/utils/save-config.mjs +12 -0
  608. package/dist/utils/save-config.mjs.map +1 -1
  609. package/dist/utils/snapshot-hash.cjs +10 -0
  610. package/dist/utils/snapshot-hash.cjs.map +1 -0
  611. package/dist/utils/snapshot-hash.mjs +10 -0
  612. package/dist/utils/snapshot-hash.mjs.map +1 -0
  613. package/dist/utils/string.cjs +0 -1
  614. package/dist/utils/string.cjs.map +1 -1
  615. package/dist/utils/theme.cjs +30 -12
  616. package/dist/utils/theme.cjs.map +1 -1
  617. package/dist/utils/theme.mjs +30 -11
  618. package/dist/utils/theme.mjs.map +1 -1
  619. package/dist/version-manifest-deploy.cjs +50 -0
  620. package/dist/version-manifest-deploy.cjs.map +1 -0
  621. package/dist/version-manifest-deploy.mjs +49 -0
  622. package/dist/version-manifest-deploy.mjs.map +1 -0
  623. package/dist/version-manifest-resolve.cjs +42 -0
  624. package/dist/version-manifest-resolve.cjs.map +1 -0
  625. package/dist/version-manifest-resolve.d.cts +38 -0
  626. package/dist/version-manifest-resolve.d.mts +38 -0
  627. package/dist/version-manifest-resolve.mjs +40 -0
  628. package/dist/version-manifest-resolve.mjs.map +1 -0
  629. package/dist/version-status.cjs +18 -0
  630. package/dist/version-status.cjs.map +1 -0
  631. package/dist/version-status.d.cts +22 -0
  632. package/dist/version-status.d.mts +22 -0
  633. package/dist/version-status.mjs +17 -0
  634. package/dist/version-status.mjs.map +1 -0
  635. package/dist/workspace-catalog.cjs +53 -0
  636. package/dist/workspace-catalog.cjs.map +1 -0
  637. package/dist/workspace-catalog.mjs +51 -0
  638. package/dist/workspace-catalog.mjs.map +1 -0
  639. package/dist/workspace.cjs +237 -0
  640. package/dist/workspace.cjs.map +1 -0
  641. package/dist/workspace.mjs +233 -0
  642. package/dist/workspace.mjs.map +1 -0
  643. package/package.json +179 -27
  644. package/skills/add-a-route/SKILL.md +132 -0
  645. package/skills/api-and-auth/SKILL.md +87 -21
  646. package/skills/api-and-auth/references/middleware.md +1 -1
  647. package/skills/cli-reference/SKILL.md +48 -21
  648. package/skills/code-style/SKILL.md +8 -0
  649. package/skills/dev-workflow/SKILL.md +50 -26
  650. package/skills/extends-config/SKILL.md +31 -19
  651. package/skills/init-upgrade/SKILL.md +29 -16
  652. package/skills/plugin-development/SKILL.md +46 -112
  653. package/skills/plugin-development/references/database.md +82 -0
  654. package/skills/plugin-development/references/request-context.md +67 -0
  655. package/skills/publish-sync/SKILL.md +99 -22
  656. package/skills/registry/SKILL.md +82 -0
  657. package/skills/super-app/SKILL.md +25 -15
  658. package/skills/talk-to-the-app/SKILL.md +138 -0
  659. package/skills/ui-integration/SKILL.md +93 -11
  660. package/dist/cli/db-studio.cjs +0 -131
  661. package/dist/cli/db-studio.cjs.map +0 -1
  662. package/dist/cli/db-studio.mjs +0 -127
  663. package/dist/cli/db-studio.mjs.map +0 -1
  664. package/dist/cli/init.d.cts.map +0 -1
  665. package/dist/cli/init.d.mts.map +0 -1
  666. package/dist/components/dev-view.cjs +0 -309
  667. package/dist/components/dev-view.cjs.map +0 -1
  668. package/dist/components/dev-view.mjs +0 -309
  669. package/dist/components/dev-view.mjs.map +0 -1
  670. package/dist/components/streaming-view.cjs +0 -134
  671. package/dist/components/streaming-view.cjs.map +0 -1
  672. package/dist/components/streaming-view.mjs +0 -132
  673. package/dist/components/streaming-view.mjs.map +0 -1
  674. package/dist/config.d.cts.map +0 -1
  675. package/dist/config.d.mts.map +0 -1
  676. package/dist/contract.d.cts.map +0 -1
  677. package/dist/contract.d.mts.map +0 -1
  678. package/dist/contract.meta.d.cts.map +0 -1
  679. package/dist/contract.meta.d.mts.map +0 -1
  680. package/dist/dag.d.cts.map +0 -1
  681. package/dist/dag.d.mts.map +0 -1
  682. package/dist/db.cjs +0 -81
  683. package/dist/db.cjs.map +0 -1
  684. package/dist/db.d.cts +0 -30
  685. package/dist/db.d.cts.map +0 -1
  686. package/dist/db.d.mts +0 -30
  687. package/dist/db.d.mts.map +0 -1
  688. package/dist/db.mjs +0 -75
  689. package/dist/db.mjs.map +0 -1
  690. package/dist/fastkv.d.cts.map +0 -1
  691. package/dist/fastkv.d.mts.map +0 -1
  692. package/dist/integrity.d.cts.map +0 -1
  693. package/dist/integrity.d.mts.map +0 -1
  694. package/dist/merge.d.cts.map +0 -1
  695. package/dist/merge.d.mts.map +0 -1
  696. package/dist/mf.d.cts.map +0 -1
  697. package/dist/mf.d.mts.map +0 -1
  698. package/dist/plugin.d.cts.map +0 -1
  699. package/dist/plugin.d.mts.map +0 -1
  700. package/dist/service-descriptor.d.cts.map +0 -1
  701. package/dist/service-descriptor.d.mts.map +0 -1
  702. package/dist/types.d.cts.map +0 -1
  703. package/dist/types.d.mts.map +0 -1
  704. package/dist/ui/head.d.cts.map +0 -1
  705. package/dist/ui/head.d.mts.map +0 -1
  706. package/dist/ui/metadata.d.cts.map +0 -1
  707. package/dist/ui/metadata.d.mts.map +0 -1
  708. package/dist/ui/router.d.cts.map +0 -1
  709. package/dist/ui/router.d.mts.map +0 -1
  710. package/dist/ui/runtime.d.cts.map +0 -1
  711. package/dist/ui/runtime.d.mts.map +0 -1
  712. package/dist/ui/types.d.cts.map +0 -1
  713. package/dist/ui/types.d.mts.map +0 -1
@@ -1,15 +1,17 @@
1
1
  import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import { Effect } from "effect";
4
- import { access } from "node:fs/promises";
5
4
  import { homedir } from "node:os";
5
+ import { access } from "node:fs/promises";
6
+ import { spawnSync } from "node:child_process";
6
7
 
7
8
  //#region src/process-registry.ts
8
9
  function getRegistryDir() {
9
10
  return join(homedir(), ".cache", "everything-dev");
10
11
  }
11
12
  function ensureRegistryDir() {
12
- const dir = join(getRegistryPath(), "..");
13
+ const path = getRegistryPath();
14
+ const dir = join(path, "..");
13
15
  if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
14
16
  }
15
17
  function readRegistry() {
@@ -31,8 +33,42 @@ function isPidAlive(pid) {
31
33
  return err.code !== "ESRCH";
32
34
  }
33
35
  }
36
+ /**
37
+ * Identity of a process generation, stable across PID reuse: Linux reads the
38
+ * kernel's starttime tick from /proc, macOS falls back to `ps -o lstart=`.
39
+ * Null when the generation cannot be determined (the caller then treats the
40
+ * claim as unverifiable and keeps legacy behavior).
41
+ */
42
+ function processStartTime(pid) {
43
+ if (pid <= 1) return null;
44
+ try {
45
+ const stat = readFileSync(`/proc/${pid}/stat`, "utf-8");
46
+ const close = stat.lastIndexOf(")");
47
+ const starttime = stat.slice(close + 2).split(" ")[19];
48
+ return starttime ? `proc:${starttime}` : null;
49
+ } catch {
50
+ try {
51
+ const text = spawnSync("ps", [
52
+ "-o",
53
+ "lstart=",
54
+ "-p",
55
+ String(pid)
56
+ ], { timeout: 5e3 }).stdout?.toString().trim();
57
+ return text ? `ps:${text}` : null;
58
+ } catch {
59
+ return null;
60
+ }
61
+ }
62
+ }
63
+ function isEntryLive(entry) {
64
+ if (entry.pid <= 1) return false;
65
+ if (!existsSync(entry.configDir)) return false;
66
+ if (!isPidAlive(entry.pid)) return false;
67
+ if (entry.processStart !== void 0) return processStartTime(entry.pid) === entry.processStart;
68
+ return true;
69
+ }
34
70
  function pruneDead(entries) {
35
- return entries.filter((entry) => entry.pid > 1 && existsSync(entry.configDir) && isPidAlive(entry.pid));
71
+ return entries.filter(isEntryLive);
36
72
  }
37
73
  function pruneDeadEffect(entries) {
38
74
  return Effect.forEach(entries, (entry) => {
@@ -40,6 +76,9 @@ function pruneDeadEffect(entries) {
40
76
  return Effect.gen(function* () {
41
77
  if (!(yield* Effect.promise(() => access(entry.configDir).then(() => true).catch(() => false)))) return null;
42
78
  if (!isPidAlive(entry.pid)) return null;
79
+ if (entry.processStart !== void 0) {
80
+ if ((yield* Effect.promise(() => Promise.resolve(processStartTime(entry.pid)))) !== entry.processStart) return null;
81
+ }
43
82
  return entry;
44
83
  });
45
84
  }, { concurrency: "unbounded" }).pipe(Effect.map((results) => results.filter((e) => e !== null)));
@@ -55,29 +94,41 @@ function registerStandalone(entry) {
55
94
  const live = pruneDead(readRegistry());
56
95
  const full = {
57
96
  ...entry,
58
- role: "standalone"
97
+ role: "standalone",
98
+ processStart: processStartTime(entry.pid) ?? entry.processStart
59
99
  };
60
100
  const withoutSelf = live.filter((existing) => existing.pid !== entry.pid);
61
101
  withoutSelf.push(full);
62
102
  writeRegistry(withoutSelf);
63
103
  return full;
64
104
  }
65
- function unregisterPid(pid) {
105
+ function updateChildPids(pid, childPids) {
66
106
  const live = pruneDead(readRegistry());
67
- const next = live.filter((entry) => entry.pid !== pid);
68
- if (next.length === live.length) return;
107
+ const entry = live.find((existing) => existing.pid === pid);
108
+ if (!entry) return;
109
+ entry.childPids = childPids;
110
+ writeRegistry(live);
111
+ }
112
+ function unregisterPid(pid) {
113
+ const entries = readRegistry();
114
+ const next = pruneDead(entries).filter((entry) => entry.pid !== pid);
115
+ if (next.length === entries.length) return;
69
116
  writeRegistry(next);
70
117
  }
71
118
  function getRegistryPath() {
72
119
  return process.env.BO_PID_REGISTRY_PATH ?? join(getRegistryDir(), "pids.json");
73
120
  }
74
121
  function claimedPorts() {
122
+ return new Set(claimedPortOwners().keys());
123
+ }
124
+ /** Port → the live registry entry claiming it, for occupancy diagnostics. */
125
+ function claimedPortOwners() {
75
126
  const live = pruneDead(readRegistry());
76
- const out = /* @__PURE__ */ new Set();
77
- for (const entry of live) for (const port of Object.values(entry.ports)) if (typeof port === "number") out.add(port);
127
+ const out = /* @__PURE__ */ new Map();
128
+ for (const entry of live) for (const port of Object.values(entry.ports)) if (typeof port === "number") out.set(port, entry);
78
129
  return out;
79
130
  }
80
131
 
81
132
  //#endregion
82
- export { claimedPorts, getRegistryPath, isPidAlive, pruneDead, pruneDeadEffect, readRegistry, registerStandalone, unregisterPid, writeRegistry };
133
+ export { claimedPortOwners, claimedPorts, getRegistryPath, isEntryLive, isPidAlive, processStartTime, pruneDead, pruneDeadEffect, readRegistry, registerStandalone, unregisterPid, updateChildPids, writeRegistry };
83
134
  //# sourceMappingURL=process-registry.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"process-registry.mjs","names":[],"sources":["../src/process-registry.ts"],"sourcesContent":["import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from \"node:fs\";\nimport { access } from \"node:fs/promises\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { Effect } from \"effect\";\n\nexport type ProcessRole = \"standalone\" | \"workspace-parent\" | \"workspace-child\";\n\nexport interface PidEntry {\n pid: number;\n configDir: string;\n parentPid?: number;\n role: ProcessRole;\n ports: Record<string, number>;\n budget?: { min: number; max: number };\n startedAt: number;\n description: string;\n}\n\nfunction getRegistryDir(): string {\n return join(homedir(), \".cache\", \"everything-dev\");\n}\n\nfunction ensureRegistryDir(): void {\n const path = getRegistryPath();\n const dir = join(path, \"..\");\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n}\n\nexport function readRegistry(): PidEntry[] {\n const path = getRegistryPath();\n if (!existsSync(path)) return [];\n try {\n const raw = JSON.parse(readFileSync(path, \"utf-8\"));\n if (!Array.isArray(raw)) return [];\n return raw.filter(\n (entry): entry is PidEntry =>\n entry &&\n typeof entry === \"object\" &&\n typeof entry.pid === \"number\" &&\n typeof entry.configDir === \"string\" &&\n typeof entry.role === \"string\",\n );\n } catch {\n return [];\n }\n}\n\nexport function isPidAlive(pid: number): boolean {\n try {\n process.kill(pid, 0);\n return true;\n } catch (err) {\n return (err as NodeJS.ErrnoException).code !== \"ESRCH\";\n }\n}\n\nexport function pruneDead(entries: PidEntry[]): PidEntry[] {\n return entries.filter(\n (entry) => entry.pid > 1 && existsSync(entry.configDir) && isPidAlive(entry.pid),\n );\n}\n\nexport function pruneDeadEffect(entries: PidEntry[]): Effect.Effect<PidEntry[]> {\n return Effect.forEach(\n entries,\n (entry) => {\n if (entry.pid <= 1) return Effect.succeed(null);\n return Effect.gen(function* () {\n const dirExists = yield* Effect.promise(() =>\n access(entry.configDir)\n .then(() => true)\n .catch(() => false),\n );\n if (!dirExists) return null;\n if (!isPidAlive(entry.pid)) return null;\n return entry;\n });\n },\n { concurrency: \"unbounded\" },\n ).pipe(Effect.map((results) => results.filter((e): e is PidEntry => e !== null)));\n}\n\nexport function writeRegistry(entries: PidEntry[]): void {\n ensureRegistryDir();\n const path = getRegistryPath();\n const tmpPath = `${path}.tmp`;\n writeFileSync(tmpPath, `${JSON.stringify(entries, null, 2)}\\n`);\n renameSync(tmpPath, path);\n}\n\nexport function registerStandalone(entry: Omit<PidEntry, \"role\">): PidEntry {\n const live = pruneDead(readRegistry());\n const full: PidEntry = { ...entry, role: \"standalone\" };\n const withoutSelf = live.filter((existing) => existing.pid !== entry.pid);\n withoutSelf.push(full);\n writeRegistry(withoutSelf);\n return full;\n}\n\nexport function registerEntry(entry: PidEntry): void {\n const live = pruneDead(readRegistry());\n const withoutSelf = live.filter((existing) => existing.pid !== entry.pid);\n withoutSelf.push(entry);\n writeRegistry(withoutSelf);\n}\n\nexport function unregisterPid(pid: number): void {\n const live = pruneDead(readRegistry());\n const next = live.filter((entry) => entry.pid !== pid);\n if (next.length === live.length) return;\n writeRegistry(next);\n}\n\nexport function removeRegistryFile(): void {\n const path = getRegistryPath();\n if (existsSync(path)) {\n rmSync(path, { force: true });\n }\n}\n\nexport function getRegistryPath(): string {\n return process.env.BO_PID_REGISTRY_PATH ?? join(getRegistryDir(), \"pids.json\");\n}\n\nexport function claimedPorts(): Set<number> {\n const live = pruneDead(readRegistry());\n const out = new Set<number>();\n for (const entry of live) {\n for (const port of Object.values(entry.ports)) {\n if (typeof port === \"number\") out.add(port);\n }\n }\n return out;\n}\n"],"mappings":";;;;;;;AAmBA,SAAS,iBAAyB;CAChC,OAAO,KAAK,QAAQ,GAAG,UAAU,gBAAgB;AACnD;AAEA,SAAS,oBAA0B;CAEjC,MAAM,MAAM,KADC,gBACO,GAAG,IAAI;CAC3B,IAAI,CAAC,WAAW,GAAG,GACjB,UAAU,KAAK,EAAE,WAAW,KAAK,CAAC;AAEtC;AAEA,SAAgB,eAA2B;CACzC,MAAM,OAAO,gBAAgB;CAC7B,IAAI,CAAC,WAAW,IAAI,GAAG,OAAO,CAAC;CAC/B,IAAI;EACF,MAAM,MAAM,KAAK,MAAM,aAAa,MAAM,OAAO,CAAC;EAClD,IAAI,CAAC,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC;EACjC,OAAO,IAAI,QACR,UACC,SACA,OAAO,UAAU,YACjB,OAAO,MAAM,QAAQ,YACrB,OAAO,MAAM,cAAc,YAC3B,OAAO,MAAM,SAAS,QAC1B;CACF,QAAQ;EACN,OAAO,CAAC;CACV;AACF;AAEA,SAAgB,WAAW,KAAsB;CAC/C,IAAI;EACF,QAAQ,KAAK,KAAK,CAAC;EACnB,OAAO;CACT,SAAS,KAAK;EACZ,OAAQ,IAA8B,SAAS;CACjD;AACF;AAEA,SAAgB,UAAU,SAAiC;CACzD,OAAO,QAAQ,QACZ,UAAU,MAAM,MAAM,KAAK,WAAW,MAAM,SAAS,KAAK,WAAW,MAAM,GAAG,CACjF;AACF;AAEA,SAAgB,gBAAgB,SAAgD;CAC9E,OAAO,OAAO,QACZ,UACC,UAAU;EACT,IAAI,MAAM,OAAO,GAAG,OAAO,OAAO,QAAQ,IAAI;EAC9C,OAAO,OAAO,IAAI,aAAa;GAM7B,IAAI,EAAC,OALoB,OAAO,cAC9B,OAAO,MAAM,SAAS,CAAC,CACpB,WAAW,IAAI,CAAC,CAChB,YAAY,KAAK,CACtB,IACgB,OAAO;GACvB,IAAI,CAAC,WAAW,MAAM,GAAG,GAAG,OAAO;GACnC,OAAO;EACT,CAAC;CACH,GACA,EAAE,aAAa,YAAY,CAC7B,CAAC,CAAC,KAAK,OAAO,KAAK,YAAY,QAAQ,QAAQ,MAAqB,MAAM,IAAI,CAAC,CAAC;AAClF;AAEA,SAAgB,cAAc,SAA2B;CACvD,kBAAkB;CAClB,MAAM,OAAO,gBAAgB;CAC7B,MAAM,UAAU,GAAG,KAAK;CACxB,cAAc,SAAS,GAAG,KAAK,UAAU,SAAS,MAAM,CAAC,EAAE,GAAG;CAC9D,WAAW,SAAS,IAAI;AAC1B;AAEA,SAAgB,mBAAmB,OAAyC;CAC1E,MAAM,OAAO,UAAU,aAAa,CAAC;CACrC,MAAM,OAAiB;EAAE,GAAG;EAAO,MAAM;CAAa;CACtD,MAAM,cAAc,KAAK,QAAQ,aAAa,SAAS,QAAQ,MAAM,GAAG;CACxE,YAAY,KAAK,IAAI;CACrB,cAAc,WAAW;CACzB,OAAO;AACT;AASA,SAAgB,cAAc,KAAmB;CAC/C,MAAM,OAAO,UAAU,aAAa,CAAC;CACrC,MAAM,OAAO,KAAK,QAAQ,UAAU,MAAM,QAAQ,GAAG;CACrD,IAAI,KAAK,WAAW,KAAK,QAAQ;CACjC,cAAc,IAAI;AACpB;AASA,SAAgB,kBAA0B;CACxC,OAAO,QAAQ,IAAI,wBAAwB,KAAK,eAAe,GAAG,WAAW;AAC/E;AAEA,SAAgB,eAA4B;CAC1C,MAAM,OAAO,UAAU,aAAa,CAAC;CACrC,MAAM,sBAAM,IAAI,IAAY;CAC5B,KAAK,MAAM,SAAS,MAClB,KAAK,MAAM,QAAQ,OAAO,OAAO,MAAM,KAAK,GAC1C,IAAI,OAAO,SAAS,UAAU,IAAI,IAAI,IAAI;CAG9C,OAAO;AACT"}
1
+ {"version":3,"file":"process-registry.mjs","names":[],"sources":["../src/process-registry.ts"],"sourcesContent":["import { spawnSync } from \"node:child_process\";\nimport { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from \"node:fs\";\nimport { access } from \"node:fs/promises\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { Effect } from \"effect\";\n\nexport type ProcessRole = \"standalone\" | \"workspace-parent\" | \"workspace-child\";\n\nexport interface PidEntry {\n pid: number;\n configDir: string;\n parentPid?: number;\n role: ProcessRole;\n ports: Record<string, number>;\n childPids?: number[];\n budget?: { min: number; max: number };\n // Lease seam (ADR 0012 §6): entries are leases on shared resources, keyed\n // by what they hold; refcount-ready for the shared-plugin broker.\n leaseKey?: string;\n refcount?: number;\n startedAt: number;\n // Identity of the claimed pid captured at registration time (ADR 0012\n // amendment): PIDs are reused across container restarts, so a bare pid\n // cannot prove a claim live. `processStartTime` is stable per process\n // generation — a mismatch proves the recorded session is dead.\n processStart?: string;\n description: string;\n}\n\nfunction getRegistryDir(): string {\n return join(homedir(), \".cache\", \"everything-dev\");\n}\n\nfunction ensureRegistryDir(): void {\n const path = getRegistryPath();\n const dir = join(path, \"..\");\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n}\n\nexport function readRegistry(): PidEntry[] {\n const path = getRegistryPath();\n if (!existsSync(path)) return [];\n try {\n const raw = JSON.parse(readFileSync(path, \"utf-8\"));\n if (!Array.isArray(raw)) return [];\n return raw.filter(\n (entry): entry is PidEntry =>\n entry &&\n typeof entry === \"object\" &&\n typeof entry.pid === \"number\" &&\n typeof entry.configDir === \"string\" &&\n typeof entry.role === \"string\",\n );\n } catch {\n return [];\n }\n}\n\nexport function isPidAlive(pid: number): boolean {\n try {\n process.kill(pid, 0);\n return true;\n } catch (err) {\n return (err as NodeJS.ErrnoException).code !== \"ESRCH\";\n }\n}\n\n/**\n * Identity of a process generation, stable across PID reuse: Linux reads the\n * kernel's starttime tick from /proc, macOS falls back to `ps -o lstart=`.\n * Null when the generation cannot be determined (the caller then treats the\n * claim as unverifiable and keeps legacy behavior).\n */\nexport function processStartTime(pid: number): string | null {\n if (pid <= 1) return null;\n try {\n const stat = readFileSync(`/proc/${pid}/stat`, \"utf-8\");\n const close = stat.lastIndexOf(\")\");\n const fields = stat.slice(close + 2).split(\" \");\n const starttime = fields[19];\n return starttime ? `proc:${starttime}` : null;\n } catch {\n try {\n const out = spawnSync(\"ps\", [\"-o\", \"lstart=\", \"-p\", String(pid)], { timeout: 5000 });\n const text = out.stdout?.toString().trim();\n return text ? `ps:${text}` : null;\n } catch {\n return null;\n }\n }\n}\n\nexport function isEntryLive(entry: PidEntry): boolean {\n if (entry.pid <= 1) return false;\n if (!existsSync(entry.configDir)) return false;\n if (!isPidAlive(entry.pid)) return false;\n if (entry.processStart !== undefined) {\n return processStartTime(entry.pid) === entry.processStart;\n }\n return true;\n}\n\nexport function pruneDead(entries: PidEntry[]): PidEntry[] {\n return entries.filter(isEntryLive);\n}\n\nexport function pruneDeadEffect(entries: PidEntry[]): Effect.Effect<PidEntry[]> {\n return Effect.forEach(\n entries,\n (entry) => {\n if (entry.pid <= 1) return Effect.succeed(null);\n return Effect.gen(function* () {\n const dirExists = yield* Effect.promise(() =>\n access(entry.configDir)\n .then(() => true)\n .catch(() => false),\n );\n if (!dirExists) return null;\n if (!isPidAlive(entry.pid)) return null;\n if (entry.processStart !== undefined) {\n const current = yield* Effect.promise(() => Promise.resolve(processStartTime(entry.pid)));\n if (current !== entry.processStart) return null;\n }\n return entry;\n });\n },\n { concurrency: \"unbounded\" },\n ).pipe(Effect.map((results) => results.filter((e): e is PidEntry => e !== null)));\n}\n\nexport function writeRegistry(entries: PidEntry[]): void {\n ensureRegistryDir();\n const path = getRegistryPath();\n const tmpPath = `${path}.tmp`;\n writeFileSync(tmpPath, `${JSON.stringify(entries, null, 2)}\\n`);\n renameSync(tmpPath, path);\n}\n\nexport function registerStandalone(entry: Omit<PidEntry, \"role\">): PidEntry {\n const live = pruneDead(readRegistry());\n const full: PidEntry = {\n ...entry,\n role: \"standalone\",\n processStart: processStartTime(entry.pid) ?? entry.processStart,\n };\n const withoutSelf = live.filter((existing) => existing.pid !== entry.pid);\n withoutSelf.push(full);\n writeRegistry(withoutSelf);\n return full;\n}\n\nexport function registerEntry(entry: PidEntry): void {\n const live = pruneDead(readRegistry());\n const withoutSelf = live.filter((existing) => existing.pid !== entry.pid);\n withoutSelf.push({\n ...entry,\n processStart: processStartTime(entry.pid) ?? entry.processStart,\n });\n writeRegistry(withoutSelf);\n}\n\nexport function updateChildPids(pid: number, childPids: number[]): void {\n const live = pruneDead(readRegistry());\n const entry = live.find((existing) => existing.pid === pid);\n if (!entry) return;\n entry.childPids = childPids;\n writeRegistry(live);\n}\n\nexport function unregisterPid(pid: number): void {\n const entries = readRegistry();\n const next = pruneDead(entries).filter((entry) => entry.pid !== pid);\n if (next.length === entries.length) return;\n writeRegistry(next);\n}\n\nexport function removeRegistryFile(): void {\n const path = getRegistryPath();\n if (existsSync(path)) {\n rmSync(path, { force: true });\n }\n}\n\nexport function getRegistryPath(): string {\n return process.env.BO_PID_REGISTRY_PATH ?? join(getRegistryDir(), \"pids.json\");\n}\n\nexport function claimedPorts(): Set<number> {\n const out = new Set<number>(claimedPortOwners().keys());\n return out;\n}\n\n/** Port → the live registry entry claiming it, for occupancy diagnostics. */\nexport function claimedPortOwners(): Map<number, PidEntry> {\n const live = pruneDead(readRegistry());\n const out = new Map<number, PidEntry>();\n for (const entry of live) {\n for (const port of Object.values(entry.ports)) {\n if (typeof port === \"number\") out.set(port, entry);\n }\n }\n return out;\n}\n"],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ let effect = require("effect");
2
+ let node_events = require("node:events");
3
+
4
+ //#region src/progress.ts
5
+ const pluginEvents = new node_events.EventEmitter();
6
+ const emitProgress = (event) => effect.Effect.sync(() => {
7
+ pluginEvents.emit("progress", event);
8
+ });
9
+ const timedPhase = effect.Effect.fn("timedPhase")(function* (timings, name, effect$1) {
10
+ yield* emitProgress({
11
+ phase: name,
12
+ status: "running"
13
+ });
14
+ const startedAt = yield* effect.Clock.currentTimeMillis;
15
+ const exit = yield* effect.Effect.exit(effect$1);
16
+ const durationMs = (yield* effect.Clock.currentTimeMillis) - startedAt;
17
+ if (effect.Exit.isSuccess(exit)) {
18
+ timings.push({
19
+ name,
20
+ durationMs
21
+ });
22
+ yield* emitProgress({
23
+ phase: name,
24
+ status: "done",
25
+ durationMs
26
+ });
27
+ return exit.value;
28
+ }
29
+ yield* emitProgress({
30
+ phase: name,
31
+ status: "error",
32
+ durationMs
33
+ });
34
+ return yield* effect.Effect.failCause(exit.cause);
35
+ });
36
+ function timePhase(timings, name, fn) {
37
+ return effect.Effect.runPromise(timedPhase(timings, name, effect.Effect.promise(fn)));
38
+ }
39
+
40
+ //#endregion
41
+ exports.emitProgress = emitProgress;
42
+ exports.pluginEvents = pluginEvents;
43
+ exports.timePhase = timePhase;
44
+ exports.timedPhase = timedPhase;
45
+ //# sourceMappingURL=progress.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.cjs","names":["EventEmitter","Effect","Clock","effect","Exit"],"sources":["../src/progress.ts"],"sourcesContent":["import { EventEmitter } from \"node:events\";\nimport { Clock, Effect, Exit } from \"effect\";\nimport type { PhaseTiming } from \"./contract\";\n\nexport type ProgressEvent = {\n phase: string;\n status: \"running\" | \"done\" | \"error\";\n durationMs?: number;\n};\n\nexport const pluginEvents = new EventEmitter();\n\nexport const emitProgress = (event: ProgressEvent) =>\n Effect.sync(() => {\n pluginEvents.emit(\"progress\", event);\n });\n\nexport const timedPhase = Effect.fn(\"timedPhase\")(function* <A, E, R>(\n timings: PhaseTiming[],\n name: string,\n effect: Effect.Effect<A, E, R>,\n) {\n yield* emitProgress({ phase: name, status: \"running\" });\n const startedAt = yield* Clock.currentTimeMillis;\n const exit = yield* Effect.exit(effect);\n const durationMs = (yield* Clock.currentTimeMillis) - startedAt;\n if (Exit.isSuccess(exit)) {\n timings.push({ name, durationMs });\n yield* emitProgress({ phase: name, status: \"done\", durationMs });\n return exit.value;\n }\n yield* emitProgress({ phase: name, status: \"error\", durationMs });\n return yield* Effect.failCause(exit.cause);\n});\n\nexport function timePhase<T>(\n timings: PhaseTiming[],\n name: string,\n fn: () => Promise<T>,\n): Promise<T> {\n return Effect.runPromise(timedPhase(timings, name, Effect.promise(fn)));\n}\n"],"mappings":";;;;AAUA,MAAa,eAAe,IAAIA,yBAAa;AAE7C,MAAa,gBAAgB,UAC3BC,cAAO,WAAW;CAChB,aAAa,KAAK,YAAY,KAAK;AACrC,CAAC;AAEH,MAAa,aAAaA,cAAO,GAAG,YAAY,CAAC,CAAC,WAChD,SACA,MACA,UACA;CACA,OAAO,aAAa;EAAE,OAAO;EAAM,QAAQ;CAAU,CAAC;CACtD,MAAM,YAAY,OAAOC,aAAM;CAC/B,MAAM,OAAO,OAAOD,cAAO,KAAKE,QAAM;CACtC,MAAM,cAAc,OAAOD,aAAM,qBAAqB;CACtD,IAAIE,YAAK,UAAU,IAAI,GAAG;EACxB,QAAQ,KAAK;GAAE;GAAM;EAAW,CAAC;EACjC,OAAO,aAAa;GAAE,OAAO;GAAM,QAAQ;GAAQ;EAAW,CAAC;EAC/D,OAAO,KAAK;CACd;CACA,OAAO,aAAa;EAAE,OAAO;EAAM,QAAQ;EAAS;CAAW,CAAC;CAChE,OAAO,OAAOH,cAAO,UAAU,KAAK,KAAK;AAC3C,CAAC;AAED,SAAgB,UACd,SACA,MACA,IACY;CACZ,OAAOA,cAAO,WAAW,WAAW,SAAS,MAAMA,cAAO,QAAQ,EAAE,CAAC,CAAC;AACxE"}
@@ -0,0 +1,13 @@
1
+ import "./contract.cjs";
2
+ import { Effect } from "effect";
3
+ import { EventEmitter } from "node:events";
4
+ //#region src/progress.d.ts
5
+ type ProgressEvent = {
6
+ phase: string;
7
+ status: "running" | "done" | "error";
8
+ durationMs?: number;
9
+ };
10
+ declare const pluginEvents: EventEmitter<any>;
11
+ //#endregion
12
+ export { ProgressEvent, pluginEvents };
13
+ //# sourceMappingURL=progress.d.cts.map
@@ -0,0 +1,13 @@
1
+ import "./contract.mjs";
2
+ import { Effect } from "effect";
3
+ import { EventEmitter } from "node:events";
4
+ //#region src/progress.d.ts
5
+ type ProgressEvent = {
6
+ phase: string;
7
+ status: "running" | "done" | "error";
8
+ durationMs?: number;
9
+ };
10
+ declare const pluginEvents: EventEmitter<any>;
11
+ //#endregion
12
+ export { ProgressEvent, pluginEvents };
13
+ //# sourceMappingURL=progress.d.mts.map
@@ -0,0 +1,42 @@
1
+ import { Clock, Effect, Exit } from "effect";
2
+ import { EventEmitter } from "node:events";
3
+
4
+ //#region src/progress.ts
5
+ const pluginEvents = new EventEmitter();
6
+ const emitProgress = (event) => Effect.sync(() => {
7
+ pluginEvents.emit("progress", event);
8
+ });
9
+ const timedPhase = Effect.fn("timedPhase")(function* (timings, name, effect) {
10
+ yield* emitProgress({
11
+ phase: name,
12
+ status: "running"
13
+ });
14
+ const startedAt = yield* Clock.currentTimeMillis;
15
+ const exit = yield* Effect.exit(effect);
16
+ const durationMs = (yield* Clock.currentTimeMillis) - startedAt;
17
+ if (Exit.isSuccess(exit)) {
18
+ timings.push({
19
+ name,
20
+ durationMs
21
+ });
22
+ yield* emitProgress({
23
+ phase: name,
24
+ status: "done",
25
+ durationMs
26
+ });
27
+ return exit.value;
28
+ }
29
+ yield* emitProgress({
30
+ phase: name,
31
+ status: "error",
32
+ durationMs
33
+ });
34
+ return yield* Effect.failCause(exit.cause);
35
+ });
36
+ function timePhase(timings, name, fn) {
37
+ return Effect.runPromise(timedPhase(timings, name, Effect.promise(fn)));
38
+ }
39
+
40
+ //#endregion
41
+ export { emitProgress, pluginEvents, timePhase, timedPhase };
42
+ //# sourceMappingURL=progress.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.mjs","names":[],"sources":["../src/progress.ts"],"sourcesContent":["import { EventEmitter } from \"node:events\";\nimport { Clock, Effect, Exit } from \"effect\";\nimport type { PhaseTiming } from \"./contract\";\n\nexport type ProgressEvent = {\n phase: string;\n status: \"running\" | \"done\" | \"error\";\n durationMs?: number;\n};\n\nexport const pluginEvents = new EventEmitter();\n\nexport const emitProgress = (event: ProgressEvent) =>\n Effect.sync(() => {\n pluginEvents.emit(\"progress\", event);\n });\n\nexport const timedPhase = Effect.fn(\"timedPhase\")(function* <A, E, R>(\n timings: PhaseTiming[],\n name: string,\n effect: Effect.Effect<A, E, R>,\n) {\n yield* emitProgress({ phase: name, status: \"running\" });\n const startedAt = yield* Clock.currentTimeMillis;\n const exit = yield* Effect.exit(effect);\n const durationMs = (yield* Clock.currentTimeMillis) - startedAt;\n if (Exit.isSuccess(exit)) {\n timings.push({ name, durationMs });\n yield* emitProgress({ phase: name, status: \"done\", durationMs });\n return exit.value;\n }\n yield* emitProgress({ phase: name, status: \"error\", durationMs });\n return yield* Effect.failCause(exit.cause);\n});\n\nexport function timePhase<T>(\n timings: PhaseTiming[],\n name: string,\n fn: () => Promise<T>,\n): Promise<T> {\n return Effect.runPromise(timedPhase(timings, name, Effect.promise(fn)));\n}\n"],"mappings":";;;;AAUA,MAAa,eAAe,IAAI,aAAa;AAE7C,MAAa,gBAAgB,UAC3B,OAAO,WAAW;CAChB,aAAa,KAAK,YAAY,KAAK;AACrC,CAAC;AAEH,MAAa,aAAa,OAAO,GAAG,YAAY,CAAC,CAAC,WAChD,SACA,MACA,QACA;CACA,OAAO,aAAa;EAAE,OAAO;EAAM,QAAQ;CAAU,CAAC;CACtD,MAAM,YAAY,OAAO,MAAM;CAC/B,MAAM,OAAO,OAAO,OAAO,KAAK,MAAM;CACtC,MAAM,cAAc,OAAO,MAAM,qBAAqB;CACtD,IAAI,KAAK,UAAU,IAAI,GAAG;EACxB,QAAQ,KAAK;GAAE;GAAM;EAAW,CAAC;EACjC,OAAO,aAAa;GAAE,OAAO;GAAM,QAAQ;GAAQ;EAAW,CAAC;EAC/D,OAAO,KAAK;CACd;CACA,OAAO,aAAa;EAAE,OAAO;EAAM,QAAQ;EAAS;CAAW,CAAC;CAChE,OAAO,OAAO,OAAO,UAAU,KAAK,KAAK;AAC3C,CAAC;AAED,SAAgB,UACd,SACA,MACA,IACY;CACZ,OAAO,OAAO,WAAW,WAAW,SAAS,MAAM,OAAO,QAAQ,EAAE,CAAC,CAAC;AACxE"}