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 +1 @@
1
- {"version":3,"file":"contract.mjs","names":[],"sources":["../src/contract.ts"],"sourcesContent":["import * as z from \"zod\";\nimport { oc } from \"./sdk\";\nimport { BosConfigInputSchema, BosConfigSchema, SourceModeSchema } from \"./types\";\n\nexport const PhaseTimingSchema = z.object({\n name: z.string(),\n durationMs: z.number(),\n});\n\nexport const DevOptionsSchema = z.object({\n host: SourceModeSchema.default(\"local\"),\n ui: SourceModeSchema.default(\"local\"),\n api: SourceModeSchema.default(\"local\"),\n auth: SourceModeSchema.default(\"local\"),\n remotePlugins: z.array(z.string()).optional(),\n proxy: z.boolean().default(false),\n ssr: z.boolean().default(false),\n port: z.number().optional(),\n apiPort: z.number().optional(),\n uiPort: z.number().optional(),\n authPort: z.number().optional(),\n pluginPortStart: z.number().optional(),\n interactive: z.boolean().optional(),\n});\n\nexport const DevResultSchema = z.object({\n status: z.enum([\"started\", \"error\"]),\n description: z.string(),\n processes: z.array(z.string()),\n timings: z.array(PhaseTimingSchema).optional(),\n});\n\nexport const StartOptionsSchema = z.object({\n port: z.number().optional(),\n interactive: z.boolean().optional(),\n account: z.string().optional(),\n domain: z.string().optional(),\n env: z.enum([\"production\", \"staging\"]).default(\"production\"),\n});\n\nexport const StartResultSchema = z.object({\n status: z.enum([\"running\", \"error\"]),\n url: z.string(),\n error: z.string().optional(),\n});\n\nexport const BuildOptionsSchema = z.object({\n packages: z.string().default(\"all\"),\n force: z.boolean().default(false),\n deploy: z.boolean().default(false),\n});\n\nexport const BuildResultSchema = z.object({\n status: z.enum([\"success\", \"error\"]),\n built: z.array(z.string()),\n skipped: z.array(z.string()).optional(),\n deployed: z.boolean().optional(),\n});\n\nexport const ConfigOptionsSchema = z.object({\n full: z.boolean().default(false),\n});\n\nexport const ConfigResultSchema = z.object({\n config: z.union([BosConfigInputSchema, BosConfigSchema]).nullable(),\n packages: z.array(z.string()),\n remotes: z.array(z.string()),\n full: z.boolean().default(false),\n});\n\nexport const PluginAddOptionsSchema = z.object({\n source: z.string(),\n as: z.string().optional(),\n production: z.string().optional(),\n});\n\nexport const PluginAddResultSchema = z.object({\n status: z.enum([\"added\", \"error\"]),\n key: z.string(),\n development: z.string().optional(),\n production: z.string().optional(),\n integrity: z.string().optional(),\n version: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const PluginRemoveOptionsSchema = z.object({\n key: z.string(),\n});\n\nexport const PluginRemoveResultSchema = z.object({\n status: z.enum([\"removed\", \"error\"]),\n key: z.string(),\n error: z.string().optional(),\n});\n\nexport const PluginListResultSchema = z.object({\n status: z.enum([\"listed\", \"error\"]),\n plugins: z.array(\n z.object({\n key: z.string(),\n development: z.string().optional(),\n production: z.string().optional(),\n localPath: z.string().optional(),\n source: z.enum([\"local\", \"remote\"]),\n integrity: z.string().optional(),\n version: z.string().optional(),\n name: z.string().optional(),\n }),\n ),\n error: z.string().optional(),\n});\n\nexport const PluginPublishOptionsSchema = z.object({\n key: z.string(),\n});\n\nexport const PluginPublishResultSchema = z.object({\n status: z.enum([\"published\", \"error\"]),\n key: z.string(),\n path: z.string().optional(),\n script: z.string().optional(),\n production: z.string().optional(),\n integrity: z.string().optional(),\n version: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const WorkspaceDeployResultSchema = z.object({\n key: z.string(),\n kind: z.enum([\"app\", \"plugin\"]),\n success: z.boolean(),\n url: z.string().optional(),\n error: z.string().optional(),\n warnings: z.array(z.string()).optional(),\n durationMs: z.number().optional(),\n retried: z.boolean().optional(),\n});\n\nexport const PublishOptionsSchema = z.object({\n deploy: z.boolean().default(false),\n dryRun: z.boolean().default(false),\n verbose: z.boolean().default(false),\n packages: z.string().default(\"all\"),\n network: z.enum([\"mainnet\", \"testnet\"]).optional(),\n privateKey: z.string().optional(),\n env: z.enum([\"production\", \"staging\"]).default(\"production\"),\n});\n\nexport const PublishResultSchema = z.object({\n status: z.enum([\"published\", \"error\", \"dry-run\"]),\n registryUrl: z.string(),\n txHash: z.string().optional(),\n error: z.string().optional(),\n built: z.array(z.string()).optional(),\n skipped: z.array(z.string()).optional(),\n deployResults: z.array(WorkspaceDeployResultSchema).optional(),\n});\n\nexport const DeployOptionsSchema = z.object({\n env: z.enum([\"production\", \"staging\"]).default(\"production\"),\n build: z.boolean().default(true),\n dryRun: z.boolean().default(false),\n verbose: z.boolean().default(false),\n packages: z.string().default(\"all\"),\n network: z.enum([\"mainnet\", \"testnet\"]).optional(),\n privateKey: z.string().optional(),\n service: z.string().optional(),\n});\n\nexport const DeployResultSchema = z.object({\n status: z.enum([\"deployed\", \"published\", \"error\", \"dry-run\"]),\n registryUrl: z.string(),\n txHash: z.string().optional(),\n built: z.array(z.string()).optional(),\n skipped: z.array(z.string()).optional(),\n redeployed: z.boolean(),\n service: z.string().optional(),\n error: z.string().optional(),\n deployResults: z.array(WorkspaceDeployResultSchema).optional(),\n});\n\nfunction parseNearAmount(value: string): number {\n const cleaned = value.replace(/[\\s_,]/g, \"\");\n const match = cleaned.match(/^(\\d+(?:\\.\\d+)?)near$/i);\n if (!match) return NaN;\n return Number.parseFloat(match[1]);\n}\n\nconst MIN_PUBLISH_ALLOWANCE_NEAR = 0.3;\n\nexport const KeyPublishOptionsSchema = z.object({\n allowance: z\n .string()\n .default(\"1NEAR\")\n .refine(\n (val) => {\n const amount = parseNearAmount(val);\n return !Number.isNaN(amount) && amount >= MIN_PUBLISH_ALLOWANCE_NEAR;\n },\n {\n message: `Allowance must be at least ${MIN_PUBLISH_ALLOWANCE_NEAR} NEAR to cover the transaction cost`,\n },\n ),\n});\n\nexport const KeyPublishResultSchema = z.object({\n status: z.enum([\"published\", \"error\"]),\n account: z.string(),\n network: z.enum([\"mainnet\", \"testnet\"]),\n contract: z.string(),\n allowance: z.string(),\n functionNames: z.array(z.string()),\n publicKey: z.string().optional(),\n privateKey: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const OverrideSectionSchema = z.enum([\"ui\", \"api\", \"host\", \"plugins\"]);\n\nexport const RuntimeOverrideTargetBaseSchema = z.enum([\"ui\", \"api\", \"plugins\"]);\n\nexport const RuntimeOverrideTargetSchema = z.union([\n RuntimeOverrideTargetBaseSchema,\n z.string().regex(/^plugins\\.(\\*|[a-z0-9_-]+)$/),\n]);\n\nexport const InitOptionsSchema = z.object({\n extends: z.string().optional(),\n directory: z.string().optional(),\n account: z.string().optional(),\n domain: z.string().optional(),\n source: z.string().optional(),\n plugins: z.array(z.string()).optional(),\n overrides: z.array(OverrideSectionSchema).optional(),\n noInteractive: z.boolean().default(false),\n noInstall: z.boolean().default(false),\n});\n\nexport const InitResultSchema = z.object({\n status: z.enum([\"initialized\", \"error\"]),\n directory: z.string(),\n extendsRef: z.string(),\n account: z.string().optional(),\n domain: z.string().optional(),\n extends: z.string(),\n plugins: z.array(z.string()).optional(),\n overrides: z.array(OverrideSectionSchema).optional(),\n filesCopied: z.number(),\n timings: z.array(PhaseTimingSchema).optional(),\n targetDir: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const SyncOptionsSchema = z.object({\n dryRun: z.boolean().default(false),\n noInstall: z.boolean().default(false),\n json: z.boolean().default(false),\n});\n\nexport const SyncResultSchema = z.object({\n status: z.enum([\"synced\", \"dry-run\", \"error\"]),\n updated: z.array(z.string()),\n skipped: z.array(z.string()),\n added: z.array(z.string()),\n conflicted: z.array(z.string()).default([]),\n backupDir: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const UpgradeOptionsSchema = z.object({\n dryRun: z.boolean().default(false),\n noInstall: z.boolean().default(false),\n noSync: z.boolean().default(false),\n json: z.boolean().default(false),\n migrationsOnly: z.boolean().default(false),\n});\n\nexport const UpgradeResultSchema = z.object({\n status: z.enum([\"upgraded\", \"dry-run\", \"error\"]),\n packages: z.array(\n z.object({\n name: z.string(),\n from: z.string().optional(),\n to: z.string(),\n }),\n ),\n sync: SyncResultSchema.optional(),\n migrated: z.array(z.string()).optional(),\n availablePlugins: z.array(z.string()).optional(),\n selectedPlugins: z.array(z.string()).optional(),\n timings: z.array(PhaseTimingSchema).optional(),\n changelogUrl: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const StatusResultSchema = z.object({\n status: z.enum([\"ok\", \"error\"]),\n extends: z.string().optional(),\n account: z.string().optional(),\n domain: z.string().optional(),\n packages: z.array(\n z.object({\n name: z.string(),\n installed: z.string().optional(),\n latest: z.string().optional(),\n isLinked: z.boolean().optional(),\n specifier: z.string().optional(),\n }),\n ),\n lastSync: z.string().optional(),\n envFile: z.enum([\"found\", \"missing\", \"example-only\"]),\n parentReachable: z.boolean().optional(),\n error: z.string().optional(),\n});\n\nexport const TypesGenOptionsSchema = z.object({\n env: z.enum([\"development\", \"production\"]).optional(),\n dryRun: z.boolean().default(false),\n remotePlugins: z.array(z.string()).optional(),\n});\n\nexport const TypesGenResultSchema = z.object({\n status: z.enum([\"success\", \"error\"]),\n generated: z.array(z.string()),\n fetched: z.array(z.string()),\n skipped: z.array(z.string()),\n failed: z.array(z.string()),\n error: z.string().optional(),\n});\n\nexport const DbStudioOptionsSchema = z.object({\n plugin: z.string().default(\"api\"),\n});\n\nexport const DbStudioResultSchema = z.object({\n status: z.enum([\"success\", \"error\"]),\n plugin: z.string(),\n source: z.enum([\"local\", \"remote\"]),\n section: z.string(),\n databaseSecret: z.string().optional(),\n databaseUrl: z.string().optional(),\n workspaceDir: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const DbDoctorOptionsSchema = z.object({\n plugin: z.string(),\n});\n\nexport const DbDoctorResultSchema = z.object({\n status: z.enum([\"success\", \"error\"]),\n plugin: z.string(),\n slug: z.string(),\n journalTable: z.string(),\n journalSchema: z.string(),\n diagnosis: z.string(),\n localMigrationCount: z.number(),\n appliedHashCount: z.number(),\n expectedTables: z.array(z.string()),\n missingTables: z.array(z.string()),\n workspaceDir: z.string().optional(),\n dbSecret: z.string().optional(),\n dbUrl: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const DbRepairOptionsSchema = z.object({\n plugin: z.string(),\n mode: z.enum([\"history-reset\", \"recreate\"]).default(\"history-reset\"),\n yes: z.boolean().optional(),\n});\n\nexport const DbRepairResultSchema = z.object({\n status: z.enum([\"repaired\", \"refused\", \"error\"]),\n message: z.string(),\n diagnosis: z.any(),\n error: z.string().optional(),\n});\n\nexport const ProcessRoleSchema = z.enum([\"standalone\", \"workspace-parent\", \"workspace-child\"]);\n\nexport const PidEntrySchema = z.object({\n pid: z.number(),\n configDir: z.string(),\n parentPid: z.number().optional(),\n role: ProcessRoleSchema,\n ports: z\n .object({\n host: z.number().optional(),\n api: z.number().optional(),\n ui: z.number().optional(),\n auth: z.number().optional(),\n })\n .default({}),\n budget: z\n .object({\n min: z.number(),\n max: z.number(),\n })\n .optional(),\n startedAt: z.number(),\n description: z.string(),\n});\n\nexport const PsResultSchema = z.object({\n status: z.enum([\"ok\", \"error\"]),\n entries: z.array(PidEntrySchema),\n error: z.string().optional(),\n});\n\nexport const KillOptionsSchema = z.object({\n configDir: z.string().optional(),\n signal: z.enum([\"SIGTERM\", \"SIGKILL\"]).default(\"SIGTERM\"),\n all: z.boolean().default(false),\n});\n\nexport const KillResultSchema = z.object({\n status: z.enum([\"killed\", \"error\"]),\n killed: z.array(z.object({ pid: z.number(), configDir: z.string() })),\n skipped: z.array(z.object({ pid: z.number(), reason: z.string() })),\n error: z.string().optional(),\n});\n\nexport const bosContract = oc.router({\n dev: oc.route({ method: \"POST\", path: \"/dev\" }).input(DevOptionsSchema).output(DevResultSchema),\n start: oc\n .route({ method: \"POST\", path: \"/start\" })\n .input(StartOptionsSchema)\n .output(StartResultSchema),\n build: oc\n .route({ method: \"POST\", path: \"/build\" })\n .input(BuildOptionsSchema)\n .output(BuildResultSchema),\n config: oc\n .route({ method: \"GET\", path: \"/config\" })\n .input(ConfigOptionsSchema)\n .output(ConfigResultSchema),\n pluginAdd: oc\n .route({ method: \"POST\", path: \"/plugin/add\" })\n .input(PluginAddOptionsSchema)\n .output(PluginAddResultSchema),\n pluginRemove: oc\n .route({ method: \"POST\", path: \"/plugin/remove\" })\n .input(PluginRemoveOptionsSchema)\n .output(PluginRemoveResultSchema),\n pluginList: oc.route({ method: \"GET\", path: \"/plugin/list\" }).output(PluginListResultSchema),\n pluginPublish: oc\n .route({ method: \"POST\", path: \"/plugin/publish\" })\n .input(PluginPublishOptionsSchema)\n .output(PluginPublishResultSchema),\n publish: oc\n .route({ method: \"POST\", path: \"/publish\" })\n .input(PublishOptionsSchema)\n .output(PublishResultSchema),\n deploy: oc\n .route({ method: \"POST\", path: \"/deploy\" })\n .input(DeployOptionsSchema)\n .output(DeployResultSchema),\n keyPublish: oc\n .route({ method: \"POST\", path: \"/key/publish\" })\n .input(KeyPublishOptionsSchema)\n .output(KeyPublishResultSchema),\n init: oc\n .route({ method: \"POST\", path: \"/init\" })\n .input(InitOptionsSchema)\n .output(InitResultSchema),\n sync: oc\n .route({ method: \"POST\", path: \"/sync\" })\n .input(SyncOptionsSchema)\n .output(SyncResultSchema),\n upgrade: oc\n .route({ method: \"POST\", path: \"/upgrade\" })\n .input(UpgradeOptionsSchema)\n .output(UpgradeResultSchema),\n status: oc.route({ method: \"GET\", path: \"/status\" }).output(StatusResultSchema),\n typesGen: oc\n .route({ method: \"POST\", path: \"/types/gen\" })\n .input(TypesGenOptionsSchema)\n .output(TypesGenResultSchema),\n dbStudio: oc\n .route({ method: \"POST\", path: \"/db/studio\" })\n .input(DbStudioOptionsSchema)\n .output(DbStudioResultSchema),\n dbDoctor: oc\n .route({ method: \"POST\", path: \"/db/doctor\" })\n .input(DbDoctorOptionsSchema)\n .output(DbDoctorResultSchema),\n dbRepair: oc\n .route({ method: \"POST\", path: \"/db/repair\" })\n .input(DbRepairOptionsSchema)\n .output(DbRepairResultSchema),\n ps: oc.route({ method: \"GET\", path: \"/ps\" }).output(PsResultSchema),\n kill: oc\n .route({ method: \"POST\", path: \"/kill\" })\n .input(KillOptionsSchema)\n .output(KillResultSchema),\n});\n\nexport type DevOptions = z.infer<typeof DevOptionsSchema>;\nexport type DevResult = z.infer<typeof DevResultSchema>;\nexport type StartOptions = z.infer<typeof StartOptionsSchema>;\nexport type StartResult = z.infer<typeof StartResultSchema>;\nexport type BuildOptions = z.infer<typeof BuildOptionsSchema>;\nexport type BosConfigResult = z.infer<typeof ConfigResultSchema>;\nexport type PluginAddOptions = z.infer<typeof PluginAddOptionsSchema>;\nexport type PluginAddResult = z.infer<typeof PluginAddResultSchema>;\nexport type PluginRemoveOptions = z.infer<typeof PluginRemoveOptionsSchema>;\nexport type PluginRemoveResult = z.infer<typeof PluginRemoveResultSchema>;\nexport type PluginListResult = z.infer<typeof PluginListResultSchema>;\nexport type PluginPublishOptions = z.infer<typeof PluginPublishOptionsSchema>;\nexport type PluginPublishResult = z.infer<typeof PluginPublishResultSchema>;\nexport type WorkspaceDeployResult = z.infer<typeof WorkspaceDeployResultSchema>;\nexport type PublishOptions = z.infer<typeof PublishOptionsSchema>;\nexport type PublishResult = z.infer<typeof PublishResultSchema>;\nexport type DeployOptions = z.infer<typeof DeployOptionsSchema>;\nexport type DeployResult = z.infer<typeof DeployResultSchema>;\nexport type KeyPublishOptions = z.infer<typeof KeyPublishOptionsSchema>;\nexport type KeyPublishResult = z.infer<typeof KeyPublishResultSchema>;\nexport type InitOptions = z.infer<typeof InitOptionsSchema>;\nexport type InitResult = z.infer<typeof InitResultSchema>;\nexport type OverrideSection = z.infer<typeof OverrideSectionSchema>;\nexport type PhaseTiming = z.infer<typeof PhaseTimingSchema>;\nexport type SyncOptions = z.infer<typeof SyncOptionsSchema>;\nexport type SyncResult = z.infer<typeof SyncResultSchema>;\nexport type UpgradeOptions = z.infer<typeof UpgradeOptionsSchema>;\nexport type UpgradeResult = z.infer<typeof UpgradeResultSchema>;\nexport type StatusResult = z.infer<typeof StatusResultSchema>;\nexport type TypesGenOptions = z.infer<typeof TypesGenOptionsSchema>;\nexport type TypesGenResult = z.infer<typeof TypesGenResultSchema>;\nexport type DbStudioOptions = z.infer<typeof DbStudioOptionsSchema>;\nexport type DbStudioResult = z.infer<typeof DbStudioResultSchema>;\nexport type DbDoctorOptions = z.infer<typeof DbDoctorOptionsSchema>;\nexport type DbDoctorResult = z.infer<typeof DbDoctorResultSchema>;\nexport type DbRepairOptions = z.infer<typeof DbRepairOptionsSchema>;\nexport type DbRepairResult = z.infer<typeof DbRepairResultSchema>;\nexport type RuntimeOverrideTarget = z.infer<typeof RuntimeOverrideTargetSchema>;\nexport type ProcessRole = z.infer<typeof ProcessRoleSchema>;\nexport type PidEntry = z.infer<typeof PidEntrySchema>;\nexport type PsResult = z.infer<typeof PsResultSchema>;\nexport type KillOptions = z.infer<typeof KillOptionsSchema>;\nexport type KillResult = z.infer<typeof KillResultSchema>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"contract.mjs","names":["z"],"sources":["../src/contract.ts"],"sourcesContent":["import \"@orpc/openapi/extensions/route\";\nimport * as z from \"zod\";\nimport type { DevSessionData, StartSummary } from \"./dev-session-data\";\nimport { oc } from \"./sdk\";\nimport {\n BosConfigInputSchema,\n BosConfigSchema,\n SourceModeSchema,\n StarterLevelSchema,\n} from \"./types\";\n\nexport const PhaseTimingSchema = z.object({\n name: z.string(),\n durationMs: z.number(),\n});\n\nexport const DevOptionsSchema = z.object({\n host: SourceModeSchema.default(\"local\"),\n ui: SourceModeSchema.default(\"local\"),\n api: SourceModeSchema.default(\"local\"),\n auth: SourceModeSchema.default(\"local\"),\n remotePlugins: z.array(z.string()).optional(),\n proxy: z.boolean().default(false),\n ssr: z.boolean().default(false),\n port: z.number().optional(),\n apiPort: z.number().optional(),\n uiPort: z.number().optional(),\n authPort: z.number().optional(),\n pluginPortStart: z.number().optional(),\n interactive: z.boolean().optional(),\n logLevel: z.enum([\"error\", \"warn\", \"info\", \"debug\"]).optional(),\n});\n\nexport const DevResultSchema = z.object({\n status: z.enum([\"started\", \"error\"]),\n description: z.string(),\n processes: z.array(z.string()),\n timings: z.array(PhaseTimingSchema).optional(),\n session: z.custom<DevSessionData>().optional(),\n});\n\nexport const StartOptionsSchema = z.object({\n port: z.number().optional(),\n interactive: z.boolean().optional(),\n account: z.string().optional(),\n domain: z.string().optional(),\n env: z.enum([\"production\", \"staging\"]).default(\"production\"),\n registry: z.string().optional(),\n configPath: z.string().optional(),\n});\n\nexport const StartResultSchema = z.object({\n status: z.enum([\"running\", \"error\"]),\n url: z.string(),\n error: z.string().optional(),\n session: z.custom<DevSessionData>().optional(),\n summary: z.custom<StartSummary>().optional(),\n});\n\nexport const BuildOptionsSchema = z.object({\n packages: z\n .string()\n .default(\"all\")\n .describe(\n \"Comma-separated keys, 'all' (default), or 'local' (only this repo's local plugins hosted via 'local:…')\",\n ),\n force: z.boolean().default(false),\n});\n\nexport const BuildResultSchema = z.object({\n status: z.enum([\"success\", \"error\"]),\n error: z.string().optional(),\n built: z.array(z.string()),\n skipped: z.array(z.string()).optional(),\n});\n\nexport const ConfigOptionsSchema = z.object({\n full: z.boolean().default(false),\n});\n\nexport const ConfigResultSchema = z.object({\n config: z.union([BosConfigInputSchema, BosConfigSchema]).nullable(),\n packages: z.array(z.string()),\n remotes: z.array(z.string()),\n full: z.boolean().default(false),\n});\n\nexport const RegistryUseOptionsSchema = z.object({\n from: z.string().describe(\"Published runtime to compose from (account/gateway or bos:// URL)\"),\n sections: z\n .array(z.string())\n .min(1)\n .describe(\"Sections to compose: app.ui, app.host, app.api, app.auth, plugins.<key>\"),\n dryRun: z.boolean().default(false),\n});\n\nexport const RegistryUseResultSchema = z.object({\n status: z.enum([\"updated\", \"dry-run\", \"error\"]),\n from: z.string(),\n applied: z.array(z.string()),\n configPath: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const PluginAddOptionsSchema = z.object({\n source: z.string(),\n as: z.string().optional(),\n production: z.string().optional(),\n});\n\nexport const PluginAddResultSchema = z.object({\n status: z.enum([\"added\", \"error\"]),\n key: z.string(),\n development: z.string().optional(),\n production: z.string().optional(),\n integrity: z.string().optional(),\n version: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const PluginRemoveOptionsSchema = z.object({\n key: z.string(),\n});\n\nexport const PluginRemoveResultSchema = z.object({\n status: z.enum([\"removed\", \"error\"]),\n key: z.string(),\n error: z.string().optional(),\n});\n\nexport const PluginListResultSchema = z.object({\n status: z.enum([\"listed\", \"error\"]),\n plugins: z.array(\n z.object({\n key: z.string(),\n development: z.string().optional(),\n production: z.string().optional(),\n localPath: z.string().optional(),\n source: z.enum([\"local\", \"remote\"]),\n integrity: z.string().optional(),\n version: z.string().optional(),\n name: z.string().optional(),\n }),\n ),\n error: z.string().optional(),\n});\n\nexport const PluginPublishOptionsSchema = z.object({\n key: z.string(),\n});\n\nexport const PluginPublishResultSchema = z.object({\n status: z.enum([\"published\", \"error\"]),\n key: z.string(),\n path: z.string().optional(),\n production: z.string().optional(),\n version: z.string().optional(),\n fingerprint: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const WorkspaceDeployResultSchema = z.object({\n key: z.string(),\n kind: z.enum([\"app\", \"plugin\"]),\n success: z.boolean(),\n error: z.string().optional(),\n durationMs: z.number().optional(),\n});\n\nexport const PublishOptionsSchema = z.object({\n dryRun: z.boolean().default(false),\n verbose: z.boolean().default(false),\n network: z.enum([\"mainnet\", \"testnet\"]).optional(),\n privateKey: z.string().optional(),\n wallet: z.boolean().default(false),\n env: z.enum([\"production\", \"staging\"]).default(\"production\"),\n registry: z.string().optional(),\n});\n\nexport const RollbackOptionsSchema = z.object({\n listOnly: z.boolean().default(false),\n version: z.string().optional(),\n previous: z.boolean().default(false),\n force: z.boolean().default(false),\n limit: z.number().int().min(1).max(200).default(20),\n dryRun: z.boolean().default(false),\n verbose: z.boolean().default(false),\n network: z.enum([\"mainnet\", \"testnet\"]).optional(),\n privateKey: z.string().optional(),\n wallet: z.boolean().default(false),\n env: z.enum([\"production\", \"staging\"]).default(\"production\"),\n registry: z.string().optional(),\n});\n\nexport const RollbackHistoryEntrySchema = z.object({\n blockHeight: z.number(),\n blockTimestamp: z.string(),\n txHash: z.string().optional(),\n summary: z.string(),\n});\n\nexport const RollbackSlotCheckSchema = z.object({\n slot: z.string(),\n ok: z.boolean(),\n reason: z.string().optional(),\n});\n\nexport const RollbackResultSchema = z.object({\n status: z.enum([\"published\", \"error\", \"dry-run\", \"list\"]),\n registryUrl: z.string(),\n txHash: z.string().optional(),\n error: z.string().optional(),\n history: z.array(RollbackHistoryEntrySchema).optional(),\n verification: z.array(RollbackSlotCheckSchema).optional(),\n});\n\nexport const PublishResultSchema = z.object({\n status: z.enum([\"published\", \"error\", \"dry-run\"]),\n registryUrl: z.string(),\n txHash: z.string().optional(),\n fingerprint: z.string().optional(),\n slotPins: z.record(z.string(), z.string()).optional(),\n error: z.string().optional(),\n built: z.array(z.string()).optional(),\n skipped: z.array(z.string()).optional(),\n deployResults: z.array(WorkspaceDeployResultSchema).optional(),\n});\n\nexport const DeployOptionsSchema = z.object({\n statusList: z.boolean().default(false),\n env: z.enum([\"production\", \"staging\"]).default(\"production\"),\n build: z.boolean().default(true),\n dryRun: z.boolean().default(false),\n verbose: z.boolean().default(false),\n packages: z\n .string()\n .default(\"all\")\n .describe(\n \"Comma-separated keys, 'all' (default), or 'local' (only this repo's local plugins hosted via 'local:…')\",\n ),\n network: z.enum([\"mainnet\", \"testnet\"]).optional(),\n privateKey: z.string().optional(),\n service: z.string().optional(),\n registry: z.string().optional(),\n fullUpload: z\n .boolean()\n .default(false)\n .describe(\n \"Re-upload every dist file instead of diffing unchanged files against the previous deploy\",\n ),\n});\n\nexport const DeployManifestListEntrySchema = z.object({\n key: z.string(),\n blockHeight: z.number(),\n blockTimestamp: z.string(),\n txHash: z.string().optional(),\n publishedAt: z.string().optional(),\n});\n\nexport const DeployResultSchema = z.object({\n status: z.enum([\"deployed\", \"published\", \"error\", \"dry-run\", \"list\"]),\n registryUrl: z.string(),\n txHash: z.string().optional(),\n fingerprint: z.string().optional(),\n slotPins: z.record(z.string(), z.string()).optional(),\n history: z.array(DeployManifestListEntrySchema).optional(),\n built: z.array(z.string()).optional(),\n skipped: z.array(z.string()).optional(),\n image: z.string().optional(),\n service: z.string().optional(),\n error: z.string().optional(),\n deployResults: z.array(WorkspaceDeployResultSchema).optional(),\n});\n\nfunction parseNearAmount(value: string): number {\n const cleaned = value.replace(/[\\s_,]/g, \"\");\n const match = cleaned.match(/^(\\d+(?:\\.\\d+)?)near$/i);\n if (!match) return NaN;\n return Number.parseFloat(match[1]!);\n}\n\nconst MIN_PUBLISH_ALLOWANCE_NEAR = 0.3;\n\nexport const KeyPublishOptionsSchema = z.object({\n allowance: z\n .string()\n .default(\"1NEAR\")\n .refine(\n (val) => {\n const amount = parseNearAmount(val);\n return !Number.isNaN(amount) && amount >= MIN_PUBLISH_ALLOWANCE_NEAR;\n },\n {\n message: `Allowance must be at least ${MIN_PUBLISH_ALLOWANCE_NEAR} NEAR to cover the transaction cost`,\n },\n ),\n env: z.enum([\"production\", \"staging\"]).default(\"production\"),\n registry: z.string().optional(),\n removeOldKeys: z.boolean().optional(),\n});\n\nexport const KeyPublishResultSchema = z.object({\n status: z.enum([\"published\", \"error\"]),\n account: z.string(),\n network: z.enum([\"mainnet\", \"testnet\"]),\n env: z.enum([\"production\", \"staging\"]),\n contract: z.string(),\n allowance: z.string(),\n functionNames: z.array(z.string()),\n publicKey: z.string().optional(),\n privateKey: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const OverrideSectionSchema = z.enum([\"ui\", \"api\", \"host\", \"plugins\"]);\n\nconst DEFAULT_LOGIN_EXPIRES_IN_SECONDS = 90 * 24 * 60 * 60;\n\nexport const LoginOptionsSchema = z.object({\n key: z.boolean().default(false),\n site: z.string().optional(),\n expiresIn: z.number().int().positive().default(DEFAULT_LOGIN_EXPIRES_IN_SECONDS),\n device: z.string().optional(),\n env: z.enum([\"production\", \"staging\"]).default(\"production\"),\n registry: z.string().optional(),\n});\n\nexport const LoginResultSchema = z.object({\n status: z.enum([\"logged-in\", \"error\"]),\n siteUrl: z.string(),\n accountId: z.string().nullish(),\n expiresAt: z.string().nullish(),\n loginUrl: z.string().nullish(),\n publishKey: z\n .object({\n publicKey: z.string(),\n network: z.enum([\"mainnet\", \"testnet\"]),\n contract: z.string(),\n exportedTo: z.string(),\n })\n .nullish(),\n warning: z.string().nullish(),\n error: z.string().optional(),\n});\n\nexport const LogoutOptionsSchema = z.object({\n configDir: z.string().optional(),\n});\n\nexport const LogoutResultSchema = z.object({\n status: z.enum([\"logged-out\", \"error\"]),\n revokedApiKey: z.boolean(),\n removedPublishKey: z.boolean(),\n warning: z.string().nullish(),\n error: z.string().optional(),\n});\n\nexport const RuntimeOverrideTargetBaseSchema = z.enum([\"ui\", \"api\", \"plugins\"]);\n\nexport const RuntimeOverrideTargetSchema = z.union([\n RuntimeOverrideTargetBaseSchema,\n z.string().regex(/^plugins\\.(\\*|[a-z0-9_-]+)$/),\n]);\n\nexport const InitOptionsSchema = z.object({\n extends: z.string().optional(),\n directory: z.string().optional(),\n account: z.string().optional(),\n domain: z.string().optional(),\n source: z.string().optional(),\n plugins: z.array(z.string()).optional(),\n overrides: z.array(OverrideSectionSchema).optional(),\n level: StarterLevelSchema.optional(),\n noInteractive: z.boolean().default(false),\n noInstall: z.boolean().default(false),\n});\n\nexport const InitResultSchema = z.object({\n status: z.enum([\"initialized\", \"error\"]),\n directory: z.string(),\n extendsRef: z.string(),\n account: z.string().optional(),\n domain: z.string().optional(),\n extends: z.string(),\n plugins: z.array(z.string()).optional(),\n overrides: z.array(OverrideSectionSchema).optional(),\n filesCopied: z.number(),\n timings: z.array(PhaseTimingSchema).optional(),\n targetDir: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const SyncOptionsSchema = z.object({\n dryRun: z.boolean().default(false),\n noInstall: z.boolean().default(false),\n json: z.boolean().default(false),\n});\n\nexport const SyncResultSchema = z.object({\n status: z.enum([\"synced\", \"dry-run\", \"error\"]),\n updated: z.array(z.string()),\n skipped: z.array(z.string()),\n added: z.array(z.string()),\n conflicted: z.array(z.string()).default([]),\n /** retired stub files deleted silently (unmodified) — ADR 0023 migration */\n retired: z.array(z.string()).optional(),\n /** retired stub files that were hand-modified — backed up, then deleted */\n retiredConflicted: z.array(z.string()).optional(),\n /** where the retired hand-modified copies were backed up */\n retiredBackupDir: z.string().optional(),\n backupDir: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const UpgradeOptionsSchema = z.object({\n dryRun: z.boolean().default(false),\n noInstall: z.boolean().default(false),\n noSync: z.boolean().default(false),\n json: z.boolean().default(false),\n migrationsOnly: z.boolean().default(false),\n});\n\nexport const UpgradeResultSchema = z.object({\n status: z.enum([\"upgraded\", \"dry-run\", \"error\"]),\n packages: z.array(\n z.object({\n name: z.string(),\n from: z.string().optional(),\n to: z.string(),\n }),\n ),\n sync: SyncResultSchema.optional(),\n migrated: z.array(z.string()).optional(),\n availablePlugins: z.array(z.string()).optional(),\n selectedPlugins: z.array(z.string()).optional(),\n timings: z.array(PhaseTimingSchema).optional(),\n changelogUrl: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const DeployedVersionStatusSchema = z.object({\n publishedFingerprint: z.string(),\n servedFingerprint: z.string().optional(),\n inSync: z.boolean(),\n error: z.string().optional(),\n});\n\nexport const StatusResultSchema = z.object({\n status: z.enum([\"ok\", \"error\"]),\n deployedVersion: DeployedVersionStatusSchema.optional(),\n extends: z.string().optional(),\n account: z.string().optional(),\n domain: z.string().optional(),\n packages: z.array(\n z.object({\n name: z.string(),\n installed: z.string().optional(),\n latest: z.string().optional(),\n isLinked: z.boolean().optional(),\n specifier: z.string().optional(),\n }),\n ),\n lastSync: z.string().optional(),\n envFile: z.enum([\"found\", \"missing\", \"example-only\"]),\n parentReachable: z.boolean().optional(),\n error: z.string().optional(),\n});\n\nexport const TypesGenOptionsSchema = z.object({\n env: z.enum([\"development\", \"production\"]).optional(),\n dryRun: z.boolean().default(false),\n remotePlugins: z.array(z.string()).optional(),\n});\n\nexport const TypesGenResultSchema = z.object({\n status: z.enum([\"success\", \"error\"]),\n generated: z.array(z.string()),\n fetched: z.array(z.string()),\n skipped: z.array(z.string()),\n failed: z.array(z.string()),\n error: z.string().optional(),\n});\n\nexport const DbStudioOptionsSchema = z.object({\n plugin: z.string().default(\"api\"),\n});\n\nexport const DbStudioResultSchema = z.object({\n status: z.enum([\"success\", \"error\"]),\n plugin: z.string(),\n source: z.enum([\"local\", \"remote\"]),\n section: z.string(),\n databaseSecret: z.string().optional(),\n databaseUrl: z.string().optional(),\n workspaceDir: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const DbDoctorOptionsSchema = z.object({\n plugin: z.string(),\n});\n\nexport const DbDoctorResultSchema = z.object({\n status: z.enum([\"success\", \"error\"]),\n plugin: z.string(),\n slug: z.string(),\n journalTable: z.string(),\n journalSchema: z.string(),\n diagnosis: z.string(),\n localMigrationCount: z.number(),\n appliedHashCount: z.number(),\n expectedTables: z.array(z.string()),\n missingTables: z.array(z.string()),\n workspaceDir: z.string().optional(),\n dbSecret: z.string().optional(),\n dbUrl: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const DbRepairOptionsSchema = z.object({\n plugin: z.string(),\n mode: z.enum([\"history-reset\", \"recreate\"]).default(\"history-reset\"),\n yes: z.boolean().optional(),\n});\n\nexport const DbRepairResultSchema = z.object({\n status: z.enum([\"repaired\", \"refused\", \"error\"]),\n message: z.string(),\n diagnosis: z.any(),\n error: z.string().optional(),\n});\n\nexport const ProcessRoleSchema = z.enum([\"standalone\", \"workspace-parent\", \"workspace-child\"]);\n\nexport const PidEntrySchema = z.object({\n pid: z.number(),\n configDir: z.string(),\n parentPid: z.number().optional(),\n role: ProcessRoleSchema,\n ports: z\n .object({\n host: z.number().optional(),\n api: z.number().optional(),\n ui: z.number().optional(),\n auth: z.number().optional(),\n })\n .default({}),\n budget: z\n .object({\n min: z.number(),\n max: z.number(),\n })\n .optional(),\n startedAt: z.number(),\n description: z.string(),\n});\n\nexport const PsResultSchema = z.object({\n status: z.enum([\"ok\", \"error\"]),\n entries: z.array(PidEntrySchema),\n error: z.string().optional(),\n});\n\nexport const LogsOptionsSchema = z.object({\n service: z.string().optional(),\n tail: z.number().int().positive().max(100_000).optional(),\n follow: z.boolean().optional(),\n});\n\nexport const LogsResultSchema = z.object({\n logFile: z.string(),\n lines: z.array(z.string()),\n});\n\nexport const KillOptionsSchema = z.object({\n configDir: z.string().optional(),\n signal: z.enum([\"SIGTERM\", \"SIGKILL\"]).default(\"SIGTERM\"),\n all: z.boolean().default(false),\n});\n\nexport const KillResultSchema = z.object({\n status: z.enum([\"killed\", \"error\"]),\n killed: z.array(z.object({ pid: z.number(), configDir: z.string() })),\n skipped: z.array(z.object({ pid: z.number(), reason: z.string() })),\n error: z.string().optional(),\n});\n\nexport const TypecheckOptionsSchema = z.object({\n packages: z.string().default(\"all\"),\n});\n\nexport const TypecheckWorkspaceResultSchema = z.object({\n workspace: z.string(),\n passed: z.boolean(),\n output: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const TypecheckResultSchema = z.object({\n status: z.enum([\"success\", \"error\"]),\n checked: z.array(z.string()),\n skipped: z.array(z.string()),\n results: z.array(TypecheckWorkspaceResultSchema),\n error: z.string().optional(),\n});\n\nexport const InfraExportServiceSchema = z.object({\n key: z.string(),\n image: z.string(),\n env: z.record(z.string(), z.string()).default({}),\n ports: z.array(z.string()),\n healthcheck: z\n .object({\n test: z.array(z.string()),\n interval: z.string(),\n timeout: z.string(),\n retries: z.number(),\n })\n .optional(),\n volumes: z.array(z.string()).default([]),\n});\n\nexport const InfraExportOptionsSchema = z.object({\n target: z.enum([\"ci\", \"local\"]).default(\"ci\"),\n network: z.enum([\"mainnet\", \"testnet\"]).optional(),\n configDir: z.string().optional(),\n});\n\nexport const InfraExportResultSchema = z.object({\n env: z.record(z.string(), z.string()),\n services: z.array(InfraExportServiceSchema),\n generatedAt: z.string(),\n project: z.string(),\n account: z.string(),\n gateway: z.string(),\n});\n\nexport const MfCheckOptionsSchema = z.object({\n timeoutMs: z.number().default(15_000),\n});\n\nexport const MfCheckRemoteResultSchema = z.object({\n role: z.string(),\n url: z.string(),\n reachable: z.boolean(),\n pluginVersion: z.string().nullable(),\n ok: z.boolean(),\n reason: z.string().optional(),\n});\n\nexport const MfCheckResultSchema = z.object({\n status: z.enum([\"ok\", \"fail\"]),\n hostVersion: z.string().nullable(),\n hostReachable: z.boolean(),\n hostReason: z.string().optional(),\n remotes: z.array(MfCheckRemoteResultSchema),\n});\n\nexport const commandOptionSchemas = {\n dev: DevOptionsSchema,\n start: StartOptionsSchema,\n build: BuildOptionsSchema,\n config: ConfigOptionsSchema,\n registryUse: RegistryUseOptionsSchema,\n pluginAdd: PluginAddOptionsSchema,\n pluginRemove: PluginRemoveOptionsSchema,\n pluginPublish: PluginPublishOptionsSchema,\n publish: PublishOptionsSchema,\n rollback: RollbackOptionsSchema,\n deploy: DeployOptionsSchema,\n keyPublish: KeyPublishOptionsSchema,\n login: LoginOptionsSchema,\n logout: LogoutOptionsSchema,\n init: InitOptionsSchema,\n sync: SyncOptionsSchema,\n upgrade: UpgradeOptionsSchema,\n typecheck: TypecheckOptionsSchema,\n mfCheck: MfCheckOptionsSchema,\n infraExport: InfraExportOptionsSchema,\n dbStudio: DbStudioOptionsSchema,\n dbDoctor: DbDoctorOptionsSchema,\n dbRepair: DbRepairOptionsSchema,\n logs: LogsOptionsSchema,\n kill: KillOptionsSchema,\n} satisfies Partial<Record<keyof typeof bosContract, z.ZodType>>;\n\nexport const bosContract = oc.router({\n dev: oc.route({ method: \"POST\", path: \"/dev\" }).input(DevOptionsSchema).output(DevResultSchema),\n start: oc\n .route({ method: \"POST\", path: \"/start\" })\n .input(StartOptionsSchema)\n .output(StartResultSchema),\n build: oc\n .route({ method: \"POST\", path: \"/build\" })\n .input(BuildOptionsSchema)\n .output(BuildResultSchema),\n config: oc\n .route({ method: \"GET\", path: \"/config\" })\n .input(ConfigOptionsSchema)\n .output(ConfigResultSchema),\n registryUse: oc\n .route({ method: \"POST\", path: \"/registry/use\" })\n .input(RegistryUseOptionsSchema)\n .output(RegistryUseResultSchema),\n pluginAdd: oc\n .route({ method: \"POST\", path: \"/plugin/add\" })\n .input(PluginAddOptionsSchema)\n .output(PluginAddResultSchema),\n pluginRemove: oc\n .route({ method: \"POST\", path: \"/plugin/remove\" })\n .input(PluginRemoveOptionsSchema)\n .output(PluginRemoveResultSchema),\n pluginList: oc.route({ method: \"GET\", path: \"/plugin/list\" }).output(PluginListResultSchema),\n pluginPublish: oc\n .route({ method: \"POST\", path: \"/plugin/publish\" })\n .input(PluginPublishOptionsSchema)\n .output(PluginPublishResultSchema),\n publish: oc\n .route({ method: \"POST\", path: \"/publish\" })\n .input(PublishOptionsSchema)\n .output(PublishResultSchema),\n rollback: oc\n .route({ method: \"POST\", path: \"/rollback\" })\n .input(RollbackOptionsSchema)\n .output(RollbackResultSchema),\n deploy: oc\n .route({ method: \"POST\", path: \"/deploy\" })\n .input(DeployOptionsSchema)\n .output(DeployResultSchema),\n keyPublish: oc\n .route({ method: \"POST\", path: \"/key/publish\" })\n .input(KeyPublishOptionsSchema)\n .output(KeyPublishResultSchema),\n login: oc\n .route({ method: \"POST\", path: \"/login\" })\n .input(LoginOptionsSchema)\n .output(LoginResultSchema),\n logout: oc\n .route({ method: \"POST\", path: \"/logout\" })\n .input(LogoutOptionsSchema)\n .output(LogoutResultSchema),\n init: oc\n .route({ method: \"POST\", path: \"/init\" })\n .input(InitOptionsSchema)\n .output(InitResultSchema),\n sync: oc\n .route({ method: \"POST\", path: \"/sync\" })\n .input(SyncOptionsSchema)\n .output(SyncResultSchema),\n upgrade: oc\n .route({ method: \"POST\", path: \"/upgrade\" })\n .input(UpgradeOptionsSchema)\n .output(UpgradeResultSchema),\n status: oc.route({ method: \"GET\", path: \"/status\" }).output(StatusResultSchema),\n typesGen: oc\n .route({ method: \"POST\", path: \"/types/gen\" })\n .input(TypesGenOptionsSchema)\n .output(TypesGenResultSchema),\n dbStudio: oc\n .route({ method: \"POST\", path: \"/db/studio\" })\n .input(DbStudioOptionsSchema)\n .output(DbStudioResultSchema),\n dbDoctor: oc\n .route({ method: \"POST\", path: \"/db/doctor\" })\n .input(DbDoctorOptionsSchema)\n .output(DbDoctorResultSchema),\n dbRepair: oc\n .route({ method: \"POST\", path: \"/db/repair\" })\n .input(DbRepairOptionsSchema)\n .output(DbRepairResultSchema),\n ps: oc.route({ method: \"GET\", path: \"/ps\" }).output(PsResultSchema),\n logs: oc\n .route({ method: \"GET\", path: \"/logs\" })\n .input(LogsOptionsSchema)\n .output(LogsResultSchema),\n kill: oc\n .route({ method: \"POST\", path: \"/kill\" })\n .input(KillOptionsSchema)\n .output(KillResultSchema),\n typecheck: oc\n .route({ method: \"POST\", path: \"/typecheck\" })\n .input(TypecheckOptionsSchema)\n .output(TypecheckResultSchema),\n mfCheck: oc\n .route({ method: \"POST\", path: \"/mf/check\" })\n .input(MfCheckOptionsSchema)\n .output(MfCheckResultSchema),\n infraExport: oc\n .route({ method: \"POST\", path: \"/infra/export\" })\n .input(InfraExportOptionsSchema)\n .output(InfraExportResultSchema),\n});\n\nexport type DevOptions = z.infer<typeof DevOptionsSchema>;\nexport type DevResult = z.infer<typeof DevResultSchema>;\nexport type StartOptions = z.infer<typeof StartOptionsSchema>;\nexport type StartResult = z.infer<typeof StartResultSchema>;\nexport type BuildOptions = z.infer<typeof BuildOptionsSchema>;\nexport type BosConfigResult = z.infer<typeof ConfigResultSchema>;\nexport type PluginAddOptions = z.infer<typeof PluginAddOptionsSchema>;\nexport type PluginAddResult = z.infer<typeof PluginAddResultSchema>;\nexport type PluginRemoveOptions = z.infer<typeof PluginRemoveOptionsSchema>;\nexport type PluginRemoveResult = z.infer<typeof PluginRemoveResultSchema>;\nexport type PluginListResult = z.infer<typeof PluginListResultSchema>;\nexport type PluginPublishOptions = z.infer<typeof PluginPublishOptionsSchema>;\nexport type PluginPublishResult = z.infer<typeof PluginPublishResultSchema>;\nexport type WorkspaceDeployResult = z.infer<typeof WorkspaceDeployResultSchema>;\nexport type PublishOptions = z.infer<typeof PublishOptionsSchema>;\nexport type PublishResult = z.infer<typeof PublishResultSchema>;\nexport type DeployOptions = z.infer<typeof DeployOptionsSchema>;\nexport type DeployResult = z.infer<typeof DeployResultSchema>;\nexport type KeyPublishOptions = z.infer<typeof KeyPublishOptionsSchema>;\nexport type KeyPublishResult = z.infer<typeof KeyPublishResultSchema>;\nexport type LoginOptions = z.infer<typeof LoginOptionsSchema>;\nexport type LoginResult = z.infer<typeof LoginResultSchema>;\nexport type LogoutOptions = z.infer<typeof LogoutOptionsSchema>;\nexport type LogoutResult = z.infer<typeof LogoutResultSchema>;\nexport type InitOptions = z.infer<typeof InitOptionsSchema>;\nexport type InitResult = z.infer<typeof InitResultSchema>;\nexport type OverrideSection = z.infer<typeof OverrideSectionSchema>;\nexport type PhaseTiming = z.infer<typeof PhaseTimingSchema>;\nexport type SyncOptions = z.infer<typeof SyncOptionsSchema>;\nexport type SyncResult = z.infer<typeof SyncResultSchema>;\nexport type UpgradeOptions = z.infer<typeof UpgradeOptionsSchema>;\nexport type UpgradeResult = z.infer<typeof UpgradeResultSchema>;\nexport type StatusResult = z.infer<typeof StatusResultSchema>;\nexport type TypesGenOptions = z.infer<typeof TypesGenOptionsSchema>;\nexport type TypesGenResult = z.infer<typeof TypesGenResultSchema>;\nexport type DbStudioOptions = z.infer<typeof DbStudioOptionsSchema>;\nexport type DbStudioResult = z.infer<typeof DbStudioResultSchema>;\nexport type DbDoctorOptions = z.infer<typeof DbDoctorOptionsSchema>;\nexport type DbDoctorResult = z.infer<typeof DbDoctorResultSchema>;\nexport type DbRepairOptions = z.infer<typeof DbRepairOptionsSchema>;\nexport type DbRepairResult = z.infer<typeof DbRepairResultSchema>;\nexport type RuntimeOverrideTarget = z.infer<typeof RuntimeOverrideTargetSchema>;\nexport type ProcessRole = z.infer<typeof ProcessRoleSchema>;\nexport type PidEntry = z.infer<typeof PidEntrySchema>;\nexport type PsResult = z.infer<typeof PsResultSchema>;\nexport type LogsOptions = z.infer<typeof LogsOptionsSchema>;\nexport type LogsResult = z.infer<typeof LogsResultSchema>;\nexport type KillOptions = z.infer<typeof KillOptionsSchema>;\nexport type KillResult = z.infer<typeof KillResultSchema>;\nexport type TypecheckOptions = z.infer<typeof TypecheckOptionsSchema>;\nexport type TypecheckResult = z.infer<typeof TypecheckResultSchema>;\nexport type TypecheckWorkspaceResult = z.infer<typeof TypecheckWorkspaceResultSchema>;\nexport type InfraExportOptions = z.infer<typeof InfraExportOptionsSchema>;\nexport type MfCheckOptions = z.infer<typeof MfCheckOptionsSchema>;\nexport type MfCheckResult = z.infer<typeof MfCheckResultSchema>;\nexport type InfraExportResult = z.infer<typeof InfraExportResultSchema>;\nexport type InfraExportService = z.infer<typeof InfraExportServiceSchema>;\n"],"mappings":"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"}
package/dist/dag.cjs CHANGED
@@ -1,4 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_service_descriptor = require('./service-descriptor.cjs');
2
3
 
3
4
  //#region src/dag.ts
4
5
  function normalizeToNodes(config) {
@@ -56,6 +57,7 @@ function normalizeToNodes(config) {
56
57
  });
57
58
  for (const [key, plugin] of Object.entries(config.plugins ?? {})) {
58
59
  if (!plugin.url) continue;
60
+ if (require_service_descriptor.isAuthMirrorPluginEntry(config.auth, key, plugin)) continue;
59
61
  nodes.set(key, {
60
62
  key,
61
63
  kind: "plugin",
@@ -114,7 +116,7 @@ function topologicalSort(nodes) {
114
116
  inDegree.set(key, 0);
115
117
  adjacency.set(key, /* @__PURE__ */ new Set());
116
118
  }
117
- for (const [key, node] of nodes) for (const dep of node.dependsOn ?? []) if (nodes.has(dep)) {
119
+ for (const [key, node] of nodes) for (const dep of new Set(node.dependsOn ?? [])) if (nodes.has(dep)) {
118
120
  adjacency.get(dep).add(key);
119
121
  inDegree.set(key, (inDegree.get(key) ?? 0) + 1);
120
122
  }
@@ -145,7 +147,7 @@ function topologicalSort(nodes) {
145
147
  }
146
148
  if (result.length !== nodes.size) {
147
149
  const cyclic = [...nodes.keys()].filter((k) => !result.includes(k));
148
- throw new Error(`Circular dependency detected among: ${cyclic.join(" -> ")}. Check dependsOn declarations in bos.config.json.`);
150
+ throw new Error(`Circular dependency detected among: ${cyclic.join(" -> ")}. Check dependsOn declarations in the authored config.`);
149
151
  }
150
152
  return result;
151
153
  }
@@ -159,7 +161,7 @@ function mergeManifestNodes(configNodes, manifestNodes) {
159
161
  }
160
162
  function getDependenciesForNode(node, allNodes) {
161
163
  if (node.kind === "api" && !node.dependsOn?.length) return getImplicitApiDependencies(allNodes).map((k) => allNodes.get(k)).filter(Boolean);
162
- return (node.dependsOn ?? []).map((k) => allNodes.get(k)).filter(Boolean);
164
+ return [...new Set(node.dependsOn ?? [])].map((k) => allNodes.get(k)).filter(Boolean);
163
165
  }
164
166
  function getSingletonKey(node) {
165
167
  return node.singletonKey ?? `${node.kind}:${node.key}:${node.url}`;
package/dist/dag.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"dag.cjs","names":[],"sources":["../src/dag.ts"],"sourcesContent":["import type { JsonObject, RuntimeConfig, RuntimeDependencyNode } from \"./types\";\n\nexport interface DependencyDAG {\n nodes: Map<string, RuntimeDependencyNode>;\n sorted: string[];\n}\n\nexport function normalizeToNodes(config: RuntimeConfig): Map<string, RuntimeDependencyNode> {\n const nodes = new Map<string, RuntimeDependencyNode>();\n\n if (config.api?.url) {\n nodes.set(\"api\", {\n key: \"api\",\n kind: \"api\",\n name: config.api.name,\n url: config.api.url,\n entry: config.api.entry,\n source: config.api.source,\n localPath: config.api.localPath,\n port: config.api.port,\n proxy: config.api.proxy,\n variables: config.api.variables,\n secrets: config.api.secrets,\n integrity: config.api.integrity,\n shared: config.api.shared,\n dependsOn: config.api.dependsOn,\n sourceOrigin: \"config\",\n singletonKey: `api:${config.api.url}`,\n });\n }\n\n if (config.auth?.url) {\n nodes.set(\"auth\", {\n key: \"auth\",\n kind: \"auth\",\n name: config.auth.name,\n url: config.auth.url,\n entry: config.auth.entry,\n source: config.auth.source,\n extendsRef: config.auth.extendsRef,\n localPath: config.auth.localPath,\n port: config.auth.port,\n proxy: config.auth.proxy,\n variables: config.auth.variables,\n secrets: config.auth.secrets,\n integrity: config.auth.integrity,\n shared: config.auth.shared,\n dependsOn: config.auth.dependsOn,\n sourceOrigin: \"config\",\n singletonKey: `auth:${config.auth.url}`,\n });\n }\n\n if (config.ui?.url) {\n nodes.set(\"ui\", {\n key: \"ui\",\n kind: \"ui\",\n name: config.ui.name,\n url: config.ui.url,\n entry: config.ui.entry,\n source: config.ui.source,\n localPath: config.ui.localPath,\n port: config.ui.port,\n integrity: config.ui.integrity,\n dependsOn: config.ui.dependsOn,\n sourceOrigin: \"config\",\n singletonKey: `ui:${config.ui.url}`,\n });\n }\n\n for (const [key, plugin] of Object.entries(config.plugins ?? {})) {\n if (!plugin.url) continue;\n nodes.set(key, {\n key,\n kind: \"plugin\",\n name: plugin.name,\n url: plugin.url,\n entry: plugin.entry,\n source: plugin.source,\n extendsRef: plugin.extendsRef,\n localPath: plugin.localPath,\n port: plugin.port,\n proxy: plugin.proxy,\n variables: plugin.variables,\n secrets: plugin.secrets,\n integrity: plugin.integrity,\n shared: plugin.shared,\n connectSrc: plugin.connectSrc,\n ui: plugin.ui,\n routes: plugin.routes,\n dependsOn: plugin.dependsOn,\n sourceOrigin: \"config\",\n singletonKey: `plugin:${key}:${plugin.url}`,\n });\n }\n\n return nodes;\n}\n\nexport function manifestPluginsToNodes(\n plugins: Array<{\n key: string;\n name: string;\n url: string;\n dependsOn?: string[];\n secrets?: string[];\n variables?: JsonObject;\n }>,\n): RuntimeDependencyNode[] {\n if (!plugins?.length) return [];\n return plugins.map((p) => ({\n key: p.key,\n kind: \"plugin\" as const,\n name: p.name,\n url: p.url,\n entry: `${p.url}/mf-manifest.json`,\n source: \"remote\" as const,\n dependsOn: p.dependsOn,\n secrets: p.secrets,\n variables: p.variables,\n sourceOrigin: \"manifest\" as const,\n singletonKey: `plugin:${p.key}:${p.url}`,\n }));\n}\n\nexport function buildDependencyDAG(config: RuntimeConfig): DependencyDAG {\n const nodes =\n config.nodes && Object.keys(config.nodes).length > 0\n ? new Map(Object.entries(config.nodes))\n : normalizeToNodes(config);\n const sorted = topologicalSort(nodes);\n return { nodes, sorted };\n}\n\nexport function getImplicitApiDependencies(nodes: Map<string, RuntimeDependencyNode>): string[] {\n return [...nodes.values()].filter((n) => n.kind !== \"api\" && n.kind !== \"ui\").map((n) => n.key);\n}\n\nexport function topologicalSort(nodes: Map<string, RuntimeDependencyNode>): string[] {\n const inDegree = new Map<string, number>();\n const adjacency = new Map<string, Set<string>>();\n\n for (const key of nodes.keys()) {\n inDegree.set(key, 0);\n adjacency.set(key, new Set());\n }\n\n for (const [key, node] of nodes) {\n for (const dep of node.dependsOn ?? []) {\n if (nodes.has(dep)) {\n adjacency.get(dep)!.add(key);\n inDegree.set(key, (inDegree.get(key) ?? 0) + 1);\n }\n }\n }\n\n const apiNode = nodes.get(\"api\");\n if (apiNode && !apiNode.dependsOn?.length) {\n for (const depKey of getImplicitApiDependencies(nodes)) {\n if (!adjacency.get(depKey)!.has(\"api\")) {\n adjacency.get(depKey)!.add(\"api\");\n inDegree.set(\"api\", (inDegree.get(\"api\") ?? 0) + 1);\n }\n }\n }\n\n const queue: string[] = [];\n for (const [key, degree] of inDegree) {\n if (degree === 0) queue.push(key);\n }\n queue.sort();\n\n const result: string[] = [];\n while (queue.length > 0) {\n const current = queue.shift()!;\n result.push(current);\n const neighbors = adjacency.get(current);\n if (neighbors) {\n for (const neighbor of neighbors) {\n const newDegree = (inDegree.get(neighbor) ?? 0) - 1;\n inDegree.set(neighbor, newDegree);\n if (newDegree === 0) {\n const insertPos = queue.findIndex((k) => k > neighbor);\n if (insertPos === -1) queue.push(neighbor);\n else queue.splice(insertPos, 0, neighbor);\n }\n }\n }\n }\n\n if (result.length !== nodes.size) {\n const cyclic = [...nodes.keys()].filter((k) => !result.includes(k));\n throw new Error(\n `Circular dependency detected among: ${cyclic.join(\" -> \")}. Check dependsOn declarations in bos.config.json.`,\n );\n }\n\n return result;\n}\n\nexport function mergeManifestNodes(\n configNodes: Map<string, RuntimeDependencyNode>,\n manifestNodes: RuntimeDependencyNode[],\n): Map<string, RuntimeDependencyNode> {\n const merged = new Map(configNodes);\n\n for (const node of manifestNodes) {\n if (merged.has(node.key) && merged.get(node.key)!.sourceOrigin === \"config\") {\n continue;\n }\n merged.set(node.key, node);\n }\n\n return merged;\n}\n\nexport function getDependenciesForNode(\n node: RuntimeDependencyNode,\n allNodes: Map<string, RuntimeDependencyNode>,\n): RuntimeDependencyNode[] {\n if (node.kind === \"api\" && !node.dependsOn?.length) {\n return getImplicitApiDependencies(allNodes)\n .map((k) => allNodes.get(k))\n .filter(Boolean) as RuntimeDependencyNode[];\n }\n\n const explicitDeps = (node.dependsOn ?? [])\n .map((k) => allNodes.get(k))\n .filter(Boolean) as RuntimeDependencyNode[];\n\n return explicitDeps;\n}\n\nexport function getSingletonKey(node: RuntimeDependencyNode): string {\n return node.singletonKey ?? `${node.kind}:${node.key}:${node.url}`;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"dag.cjs","names":["isAuthMirrorPluginEntry"],"sources":["../src/dag.ts"],"sourcesContent":["import { isAuthMirrorPluginEntry } from \"./service-descriptor\";\nimport type { JsonObject, RuntimeConfig, RuntimeDependencyNode } from \"./types\";\n\nexport interface DependencyDAG {\n nodes: Map<string, RuntimeDependencyNode>;\n sorted: string[];\n}\n\nexport function normalizeToNodes(config: RuntimeConfig): Map<string, RuntimeDependencyNode> {\n const nodes = new Map<string, RuntimeDependencyNode>();\n\n if (config.api?.url) {\n nodes.set(\"api\", {\n key: \"api\",\n kind: \"api\",\n name: config.api.name,\n url: config.api.url,\n entry: config.api.entry,\n source: config.api.source,\n localPath: config.api.localPath,\n port: config.api.port,\n proxy: config.api.proxy,\n variables: config.api.variables,\n secrets: config.api.secrets,\n integrity: config.api.integrity,\n shared: config.api.shared,\n dependsOn: config.api.dependsOn,\n sourceOrigin: \"config\",\n singletonKey: `api:${config.api.url}`,\n });\n }\n\n if (config.auth?.url) {\n nodes.set(\"auth\", {\n key: \"auth\",\n kind: \"auth\",\n name: config.auth.name,\n url: config.auth.url,\n entry: config.auth.entry,\n source: config.auth.source,\n extendsRef: config.auth.extendsRef,\n localPath: config.auth.localPath,\n port: config.auth.port,\n proxy: config.auth.proxy,\n variables: config.auth.variables,\n secrets: config.auth.secrets,\n integrity: config.auth.integrity,\n shared: config.auth.shared,\n dependsOn: config.auth.dependsOn,\n sourceOrigin: \"config\",\n singletonKey: `auth:${config.auth.url}`,\n });\n }\n\n if (config.ui?.url) {\n nodes.set(\"ui\", {\n key: \"ui\",\n kind: \"ui\",\n name: config.ui.name,\n url: config.ui.url,\n entry: config.ui.entry,\n source: config.ui.source,\n localPath: config.ui.localPath,\n port: config.ui.port,\n integrity: config.ui.integrity,\n dependsOn: config.ui.dependsOn,\n sourceOrigin: \"config\",\n singletonKey: `ui:${config.ui.url}`,\n });\n }\n\n for (const [key, plugin] of Object.entries(config.plugins ?? {})) {\n if (!plugin.url) continue;\n // The auth mirror (a plugins.auth entry mirroring app.auth) must not\n // clobber the dedicated auth node: the mirror shares the auth backend's\n // URL, so when it carries a filled url (production/start resolution — in\n // dev the mirror's url stays empty) this loop would overwrite\n // kind:\"auth\" with kind:\"plugin\" and the host would never wire the auth\n // surface (no /api/auth/* mount, no session client).\n if (isAuthMirrorPluginEntry(config.auth, key, plugin)) continue;\n nodes.set(key, {\n key,\n kind: \"plugin\",\n name: plugin.name,\n url: plugin.url,\n entry: plugin.entry,\n source: plugin.source,\n extendsRef: plugin.extendsRef,\n localPath: plugin.localPath,\n port: plugin.port,\n proxy: plugin.proxy,\n variables: plugin.variables,\n secrets: plugin.secrets,\n integrity: plugin.integrity,\n shared: plugin.shared,\n connectSrc: plugin.connectSrc,\n ui: plugin.ui,\n routes: plugin.routes,\n dependsOn: plugin.dependsOn,\n sourceOrigin: \"config\",\n singletonKey: `plugin:${key}:${plugin.url}`,\n });\n }\n\n return nodes;\n}\n\nexport function manifestPluginsToNodes(\n plugins: Array<{\n key: string;\n name: string;\n url: string;\n dependsOn?: string[];\n secrets?: string[];\n variables?: JsonObject;\n }>,\n): RuntimeDependencyNode[] {\n if (!plugins?.length) return [];\n return plugins.map((p) => ({\n key: p.key,\n kind: \"plugin\" as const,\n name: p.name,\n url: p.url,\n entry: `${p.url}/mf-manifest.json`,\n source: \"remote\" as const,\n dependsOn: p.dependsOn,\n secrets: p.secrets,\n variables: p.variables,\n sourceOrigin: \"manifest\" as const,\n singletonKey: `plugin:${p.key}:${p.url}`,\n }));\n}\n\nexport function buildDependencyDAG(config: RuntimeConfig): DependencyDAG {\n const nodes =\n config.nodes && Object.keys(config.nodes).length > 0\n ? new Map(Object.entries(config.nodes))\n : normalizeToNodes(config);\n const sorted = topologicalSort(nodes);\n return { nodes, sorted };\n}\n\nexport function getImplicitApiDependencies(nodes: Map<string, RuntimeDependencyNode>): string[] {\n return [...nodes.values()].filter((n) => n.kind !== \"api\" && n.kind !== \"ui\").map((n) => n.key);\n}\n\nexport function topologicalSort(nodes: Map<string, RuntimeDependencyNode>): string[] {\n const inDegree = new Map<string, number>();\n const adjacency = new Map<string, Set<string>>();\n\n for (const key of nodes.keys()) {\n inDegree.set(key, 0);\n adjacency.set(key, new Set());\n }\n\n for (const [key, node] of nodes) {\n for (const dep of new Set(node.dependsOn ?? [])) {\n if (nodes.has(dep)) {\n adjacency.get(dep)!.add(key);\n inDegree.set(key, (inDegree.get(key) ?? 0) + 1);\n }\n }\n }\n\n const apiNode = nodes.get(\"api\");\n if (apiNode && !apiNode.dependsOn?.length) {\n for (const depKey of getImplicitApiDependencies(nodes)) {\n if (!adjacency.get(depKey)!.has(\"api\")) {\n adjacency.get(depKey)!.add(\"api\");\n inDegree.set(\"api\", (inDegree.get(\"api\") ?? 0) + 1);\n }\n }\n }\n\n const queue: string[] = [];\n for (const [key, degree] of inDegree) {\n if (degree === 0) queue.push(key);\n }\n queue.sort();\n\n const result: string[] = [];\n while (queue.length > 0) {\n const current = queue.shift()!;\n result.push(current);\n const neighbors = adjacency.get(current);\n if (neighbors) {\n for (const neighbor of neighbors) {\n const newDegree = (inDegree.get(neighbor) ?? 0) - 1;\n inDegree.set(neighbor, newDegree);\n if (newDegree === 0) {\n const insertPos = queue.findIndex((k) => k > neighbor);\n if (insertPos === -1) queue.push(neighbor);\n else queue.splice(insertPos, 0, neighbor);\n }\n }\n }\n }\n\n if (result.length !== nodes.size) {\n const cyclic = [...nodes.keys()].filter((k) => !result.includes(k));\n throw new Error(\n `Circular dependency detected among: ${cyclic.join(\" -> \")}. Check dependsOn declarations in the authored config.`,\n );\n }\n\n return result;\n}\n\nexport function mergeManifestNodes(\n configNodes: Map<string, RuntimeDependencyNode>,\n manifestNodes: RuntimeDependencyNode[],\n): Map<string, RuntimeDependencyNode> {\n const merged = new Map(configNodes);\n\n for (const node of manifestNodes) {\n if (merged.has(node.key) && merged.get(node.key)!.sourceOrigin === \"config\") {\n continue;\n }\n merged.set(node.key, node);\n }\n\n return merged;\n}\n\nexport function getDependenciesForNode(\n node: RuntimeDependencyNode,\n allNodes: Map<string, RuntimeDependencyNode>,\n): RuntimeDependencyNode[] {\n if (node.kind === \"api\" && !node.dependsOn?.length) {\n return getImplicitApiDependencies(allNodes)\n .map((k) => allNodes.get(k))\n .filter(Boolean) as RuntimeDependencyNode[];\n }\n\n const explicitDeps = [...new Set(node.dependsOn ?? [])]\n .map((k) => allNodes.get(k))\n .filter(Boolean) as RuntimeDependencyNode[];\n\n return explicitDeps;\n}\n\nexport function getSingletonKey(node: RuntimeDependencyNode): string {\n return node.singletonKey ?? `${node.kind}:${node.key}:${node.url}`;\n}\n"],"mappings":"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"}
package/dist/dag.mjs CHANGED
@@ -1,3 +1,5 @@
1
+ import { isAuthMirrorPluginEntry } from "./service-descriptor.mjs";
2
+
1
3
  //#region src/dag.ts
2
4
  function normalizeToNodes(config) {
3
5
  const nodes = /* @__PURE__ */ new Map();
@@ -54,6 +56,7 @@ function normalizeToNodes(config) {
54
56
  });
55
57
  for (const [key, plugin] of Object.entries(config.plugins ?? {})) {
56
58
  if (!plugin.url) continue;
59
+ if (isAuthMirrorPluginEntry(config.auth, key, plugin)) continue;
57
60
  nodes.set(key, {
58
61
  key,
59
62
  kind: "plugin",
@@ -112,7 +115,7 @@ function topologicalSort(nodes) {
112
115
  inDegree.set(key, 0);
113
116
  adjacency.set(key, /* @__PURE__ */ new Set());
114
117
  }
115
- for (const [key, node] of nodes) for (const dep of node.dependsOn ?? []) if (nodes.has(dep)) {
118
+ for (const [key, node] of nodes) for (const dep of new Set(node.dependsOn ?? [])) if (nodes.has(dep)) {
116
119
  adjacency.get(dep).add(key);
117
120
  inDegree.set(key, (inDegree.get(key) ?? 0) + 1);
118
121
  }
@@ -143,7 +146,7 @@ function topologicalSort(nodes) {
143
146
  }
144
147
  if (result.length !== nodes.size) {
145
148
  const cyclic = [...nodes.keys()].filter((k) => !result.includes(k));
146
- throw new Error(`Circular dependency detected among: ${cyclic.join(" -> ")}. Check dependsOn declarations in bos.config.json.`);
149
+ throw new Error(`Circular dependency detected among: ${cyclic.join(" -> ")}. Check dependsOn declarations in the authored config.`);
147
150
  }
148
151
  return result;
149
152
  }
@@ -157,7 +160,7 @@ function mergeManifestNodes(configNodes, manifestNodes) {
157
160
  }
158
161
  function getDependenciesForNode(node, allNodes) {
159
162
  if (node.kind === "api" && !node.dependsOn?.length) return getImplicitApiDependencies(allNodes).map((k) => allNodes.get(k)).filter(Boolean);
160
- return (node.dependsOn ?? []).map((k) => allNodes.get(k)).filter(Boolean);
163
+ return [...new Set(node.dependsOn ?? [])].map((k) => allNodes.get(k)).filter(Boolean);
161
164
  }
162
165
  function getSingletonKey(node) {
163
166
  return node.singletonKey ?? `${node.kind}:${node.key}:${node.url}`;
package/dist/dag.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"dag.mjs","names":[],"sources":["../src/dag.ts"],"sourcesContent":["import type { JsonObject, RuntimeConfig, RuntimeDependencyNode } from \"./types\";\n\nexport interface DependencyDAG {\n nodes: Map<string, RuntimeDependencyNode>;\n sorted: string[];\n}\n\nexport function normalizeToNodes(config: RuntimeConfig): Map<string, RuntimeDependencyNode> {\n const nodes = new Map<string, RuntimeDependencyNode>();\n\n if (config.api?.url) {\n nodes.set(\"api\", {\n key: \"api\",\n kind: \"api\",\n name: config.api.name,\n url: config.api.url,\n entry: config.api.entry,\n source: config.api.source,\n localPath: config.api.localPath,\n port: config.api.port,\n proxy: config.api.proxy,\n variables: config.api.variables,\n secrets: config.api.secrets,\n integrity: config.api.integrity,\n shared: config.api.shared,\n dependsOn: config.api.dependsOn,\n sourceOrigin: \"config\",\n singletonKey: `api:${config.api.url}`,\n });\n }\n\n if (config.auth?.url) {\n nodes.set(\"auth\", {\n key: \"auth\",\n kind: \"auth\",\n name: config.auth.name,\n url: config.auth.url,\n entry: config.auth.entry,\n source: config.auth.source,\n extendsRef: config.auth.extendsRef,\n localPath: config.auth.localPath,\n port: config.auth.port,\n proxy: config.auth.proxy,\n variables: config.auth.variables,\n secrets: config.auth.secrets,\n integrity: config.auth.integrity,\n shared: config.auth.shared,\n dependsOn: config.auth.dependsOn,\n sourceOrigin: \"config\",\n singletonKey: `auth:${config.auth.url}`,\n });\n }\n\n if (config.ui?.url) {\n nodes.set(\"ui\", {\n key: \"ui\",\n kind: \"ui\",\n name: config.ui.name,\n url: config.ui.url,\n entry: config.ui.entry,\n source: config.ui.source,\n localPath: config.ui.localPath,\n port: config.ui.port,\n integrity: config.ui.integrity,\n dependsOn: config.ui.dependsOn,\n sourceOrigin: \"config\",\n singletonKey: `ui:${config.ui.url}`,\n });\n }\n\n for (const [key, plugin] of Object.entries(config.plugins ?? {})) {\n if (!plugin.url) continue;\n nodes.set(key, {\n key,\n kind: \"plugin\",\n name: plugin.name,\n url: plugin.url,\n entry: plugin.entry,\n source: plugin.source,\n extendsRef: plugin.extendsRef,\n localPath: plugin.localPath,\n port: plugin.port,\n proxy: plugin.proxy,\n variables: plugin.variables,\n secrets: plugin.secrets,\n integrity: plugin.integrity,\n shared: plugin.shared,\n connectSrc: plugin.connectSrc,\n ui: plugin.ui,\n routes: plugin.routes,\n dependsOn: plugin.dependsOn,\n sourceOrigin: \"config\",\n singletonKey: `plugin:${key}:${plugin.url}`,\n });\n }\n\n return nodes;\n}\n\nexport function manifestPluginsToNodes(\n plugins: Array<{\n key: string;\n name: string;\n url: string;\n dependsOn?: string[];\n secrets?: string[];\n variables?: JsonObject;\n }>,\n): RuntimeDependencyNode[] {\n if (!plugins?.length) return [];\n return plugins.map((p) => ({\n key: p.key,\n kind: \"plugin\" as const,\n name: p.name,\n url: p.url,\n entry: `${p.url}/mf-manifest.json`,\n source: \"remote\" as const,\n dependsOn: p.dependsOn,\n secrets: p.secrets,\n variables: p.variables,\n sourceOrigin: \"manifest\" as const,\n singletonKey: `plugin:${p.key}:${p.url}`,\n }));\n}\n\nexport function buildDependencyDAG(config: RuntimeConfig): DependencyDAG {\n const nodes =\n config.nodes && Object.keys(config.nodes).length > 0\n ? new Map(Object.entries(config.nodes))\n : normalizeToNodes(config);\n const sorted = topologicalSort(nodes);\n return { nodes, sorted };\n}\n\nexport function getImplicitApiDependencies(nodes: Map<string, RuntimeDependencyNode>): string[] {\n return [...nodes.values()].filter((n) => n.kind !== \"api\" && n.kind !== \"ui\").map((n) => n.key);\n}\n\nexport function topologicalSort(nodes: Map<string, RuntimeDependencyNode>): string[] {\n const inDegree = new Map<string, number>();\n const adjacency = new Map<string, Set<string>>();\n\n for (const key of nodes.keys()) {\n inDegree.set(key, 0);\n adjacency.set(key, new Set());\n }\n\n for (const [key, node] of nodes) {\n for (const dep of node.dependsOn ?? []) {\n if (nodes.has(dep)) {\n adjacency.get(dep)!.add(key);\n inDegree.set(key, (inDegree.get(key) ?? 0) + 1);\n }\n }\n }\n\n const apiNode = nodes.get(\"api\");\n if (apiNode && !apiNode.dependsOn?.length) {\n for (const depKey of getImplicitApiDependencies(nodes)) {\n if (!adjacency.get(depKey)!.has(\"api\")) {\n adjacency.get(depKey)!.add(\"api\");\n inDegree.set(\"api\", (inDegree.get(\"api\") ?? 0) + 1);\n }\n }\n }\n\n const queue: string[] = [];\n for (const [key, degree] of inDegree) {\n if (degree === 0) queue.push(key);\n }\n queue.sort();\n\n const result: string[] = [];\n while (queue.length > 0) {\n const current = queue.shift()!;\n result.push(current);\n const neighbors = adjacency.get(current);\n if (neighbors) {\n for (const neighbor of neighbors) {\n const newDegree = (inDegree.get(neighbor) ?? 0) - 1;\n inDegree.set(neighbor, newDegree);\n if (newDegree === 0) {\n const insertPos = queue.findIndex((k) => k > neighbor);\n if (insertPos === -1) queue.push(neighbor);\n else queue.splice(insertPos, 0, neighbor);\n }\n }\n }\n }\n\n if (result.length !== nodes.size) {\n const cyclic = [...nodes.keys()].filter((k) => !result.includes(k));\n throw new Error(\n `Circular dependency detected among: ${cyclic.join(\" -> \")}. Check dependsOn declarations in bos.config.json.`,\n );\n }\n\n return result;\n}\n\nexport function mergeManifestNodes(\n configNodes: Map<string, RuntimeDependencyNode>,\n manifestNodes: RuntimeDependencyNode[],\n): Map<string, RuntimeDependencyNode> {\n const merged = new Map(configNodes);\n\n for (const node of manifestNodes) {\n if (merged.has(node.key) && merged.get(node.key)!.sourceOrigin === \"config\") {\n continue;\n }\n merged.set(node.key, node);\n }\n\n return merged;\n}\n\nexport function getDependenciesForNode(\n node: RuntimeDependencyNode,\n allNodes: Map<string, RuntimeDependencyNode>,\n): RuntimeDependencyNode[] {\n if (node.kind === \"api\" && !node.dependsOn?.length) {\n return getImplicitApiDependencies(allNodes)\n .map((k) => allNodes.get(k))\n .filter(Boolean) as RuntimeDependencyNode[];\n }\n\n const explicitDeps = (node.dependsOn ?? [])\n .map((k) => allNodes.get(k))\n .filter(Boolean) as RuntimeDependencyNode[];\n\n return explicitDeps;\n}\n\nexport function getSingletonKey(node: RuntimeDependencyNode): string {\n return node.singletonKey ?? `${node.kind}:${node.key}:${node.url}`;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"dag.mjs","names":[],"sources":["../src/dag.ts"],"sourcesContent":["import { isAuthMirrorPluginEntry } from \"./service-descriptor\";\nimport type { JsonObject, RuntimeConfig, RuntimeDependencyNode } from \"./types\";\n\nexport interface DependencyDAG {\n nodes: Map<string, RuntimeDependencyNode>;\n sorted: string[];\n}\n\nexport function normalizeToNodes(config: RuntimeConfig): Map<string, RuntimeDependencyNode> {\n const nodes = new Map<string, RuntimeDependencyNode>();\n\n if (config.api?.url) {\n nodes.set(\"api\", {\n key: \"api\",\n kind: \"api\",\n name: config.api.name,\n url: config.api.url,\n entry: config.api.entry,\n source: config.api.source,\n localPath: config.api.localPath,\n port: config.api.port,\n proxy: config.api.proxy,\n variables: config.api.variables,\n secrets: config.api.secrets,\n integrity: config.api.integrity,\n shared: config.api.shared,\n dependsOn: config.api.dependsOn,\n sourceOrigin: \"config\",\n singletonKey: `api:${config.api.url}`,\n });\n }\n\n if (config.auth?.url) {\n nodes.set(\"auth\", {\n key: \"auth\",\n kind: \"auth\",\n name: config.auth.name,\n url: config.auth.url,\n entry: config.auth.entry,\n source: config.auth.source,\n extendsRef: config.auth.extendsRef,\n localPath: config.auth.localPath,\n port: config.auth.port,\n proxy: config.auth.proxy,\n variables: config.auth.variables,\n secrets: config.auth.secrets,\n integrity: config.auth.integrity,\n shared: config.auth.shared,\n dependsOn: config.auth.dependsOn,\n sourceOrigin: \"config\",\n singletonKey: `auth:${config.auth.url}`,\n });\n }\n\n if (config.ui?.url) {\n nodes.set(\"ui\", {\n key: \"ui\",\n kind: \"ui\",\n name: config.ui.name,\n url: config.ui.url,\n entry: config.ui.entry,\n source: config.ui.source,\n localPath: config.ui.localPath,\n port: config.ui.port,\n integrity: config.ui.integrity,\n dependsOn: config.ui.dependsOn,\n sourceOrigin: \"config\",\n singletonKey: `ui:${config.ui.url}`,\n });\n }\n\n for (const [key, plugin] of Object.entries(config.plugins ?? {})) {\n if (!plugin.url) continue;\n // The auth mirror (a plugins.auth entry mirroring app.auth) must not\n // clobber the dedicated auth node: the mirror shares the auth backend's\n // URL, so when it carries a filled url (production/start resolution — in\n // dev the mirror's url stays empty) this loop would overwrite\n // kind:\"auth\" with kind:\"plugin\" and the host would never wire the auth\n // surface (no /api/auth/* mount, no session client).\n if (isAuthMirrorPluginEntry(config.auth, key, plugin)) continue;\n nodes.set(key, {\n key,\n kind: \"plugin\",\n name: plugin.name,\n url: plugin.url,\n entry: plugin.entry,\n source: plugin.source,\n extendsRef: plugin.extendsRef,\n localPath: plugin.localPath,\n port: plugin.port,\n proxy: plugin.proxy,\n variables: plugin.variables,\n secrets: plugin.secrets,\n integrity: plugin.integrity,\n shared: plugin.shared,\n connectSrc: plugin.connectSrc,\n ui: plugin.ui,\n routes: plugin.routes,\n dependsOn: plugin.dependsOn,\n sourceOrigin: \"config\",\n singletonKey: `plugin:${key}:${plugin.url}`,\n });\n }\n\n return nodes;\n}\n\nexport function manifestPluginsToNodes(\n plugins: Array<{\n key: string;\n name: string;\n url: string;\n dependsOn?: string[];\n secrets?: string[];\n variables?: JsonObject;\n }>,\n): RuntimeDependencyNode[] {\n if (!plugins?.length) return [];\n return plugins.map((p) => ({\n key: p.key,\n kind: \"plugin\" as const,\n name: p.name,\n url: p.url,\n entry: `${p.url}/mf-manifest.json`,\n source: \"remote\" as const,\n dependsOn: p.dependsOn,\n secrets: p.secrets,\n variables: p.variables,\n sourceOrigin: \"manifest\" as const,\n singletonKey: `plugin:${p.key}:${p.url}`,\n }));\n}\n\nexport function buildDependencyDAG(config: RuntimeConfig): DependencyDAG {\n const nodes =\n config.nodes && Object.keys(config.nodes).length > 0\n ? new Map(Object.entries(config.nodes))\n : normalizeToNodes(config);\n const sorted = topologicalSort(nodes);\n return { nodes, sorted };\n}\n\nexport function getImplicitApiDependencies(nodes: Map<string, RuntimeDependencyNode>): string[] {\n return [...nodes.values()].filter((n) => n.kind !== \"api\" && n.kind !== \"ui\").map((n) => n.key);\n}\n\nexport function topologicalSort(nodes: Map<string, RuntimeDependencyNode>): string[] {\n const inDegree = new Map<string, number>();\n const adjacency = new Map<string, Set<string>>();\n\n for (const key of nodes.keys()) {\n inDegree.set(key, 0);\n adjacency.set(key, new Set());\n }\n\n for (const [key, node] of nodes) {\n for (const dep of new Set(node.dependsOn ?? [])) {\n if (nodes.has(dep)) {\n adjacency.get(dep)!.add(key);\n inDegree.set(key, (inDegree.get(key) ?? 0) + 1);\n }\n }\n }\n\n const apiNode = nodes.get(\"api\");\n if (apiNode && !apiNode.dependsOn?.length) {\n for (const depKey of getImplicitApiDependencies(nodes)) {\n if (!adjacency.get(depKey)!.has(\"api\")) {\n adjacency.get(depKey)!.add(\"api\");\n inDegree.set(\"api\", (inDegree.get(\"api\") ?? 0) + 1);\n }\n }\n }\n\n const queue: string[] = [];\n for (const [key, degree] of inDegree) {\n if (degree === 0) queue.push(key);\n }\n queue.sort();\n\n const result: string[] = [];\n while (queue.length > 0) {\n const current = queue.shift()!;\n result.push(current);\n const neighbors = adjacency.get(current);\n if (neighbors) {\n for (const neighbor of neighbors) {\n const newDegree = (inDegree.get(neighbor) ?? 0) - 1;\n inDegree.set(neighbor, newDegree);\n if (newDegree === 0) {\n const insertPos = queue.findIndex((k) => k > neighbor);\n if (insertPos === -1) queue.push(neighbor);\n else queue.splice(insertPos, 0, neighbor);\n }\n }\n }\n }\n\n if (result.length !== nodes.size) {\n const cyclic = [...nodes.keys()].filter((k) => !result.includes(k));\n throw new Error(\n `Circular dependency detected among: ${cyclic.join(\" -> \")}. Check dependsOn declarations in the authored config.`,\n );\n }\n\n return result;\n}\n\nexport function mergeManifestNodes(\n configNodes: Map<string, RuntimeDependencyNode>,\n manifestNodes: RuntimeDependencyNode[],\n): Map<string, RuntimeDependencyNode> {\n const merged = new Map(configNodes);\n\n for (const node of manifestNodes) {\n if (merged.has(node.key) && merged.get(node.key)!.sourceOrigin === \"config\") {\n continue;\n }\n merged.set(node.key, node);\n }\n\n return merged;\n}\n\nexport function getDependenciesForNode(\n node: RuntimeDependencyNode,\n allNodes: Map<string, RuntimeDependencyNode>,\n): RuntimeDependencyNode[] {\n if (node.kind === \"api\" && !node.dependsOn?.length) {\n return getImplicitApiDependencies(allNodes)\n .map((k) => allNodes.get(k))\n .filter(Boolean) as RuntimeDependencyNode[];\n }\n\n const explicitDeps = [...new Set(node.dependsOn ?? [])]\n .map((k) => allNodes.get(k))\n .filter(Boolean) as RuntimeDependencyNode[];\n\n return explicitDeps;\n}\n\nexport function getSingletonKey(node: RuntimeDependencyNode): string {\n return node.singletonKey ?? `${node.kind}:${node.key}:${node.url}`;\n}\n"],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ let node_fs = require("node:fs");
2
+ let node_path = require("node:path");
3
+ let dotenv = require("dotenv");
4
+
5
+ //#region src/db/binding.ts
6
+ /**
7
+ * drizzle-kit subcommands that open a database connection. For everything
8
+ * else (generate, check) the connection string is parsed but never used, so a
9
+ * placeholder is safe.
10
+ */
11
+ const DB_REQUIRING_COMMANDS = /* @__PURE__ */ new Set([
12
+ "push",
13
+ "pull",
14
+ "migrate",
15
+ "studio",
16
+ "up"
17
+ ]);
18
+ /**
19
+ * Whether the current process is a drizzle-kit invocation whose command needs
20
+ * a live database. Mirrors drizzle-kit's CLI layout: `drizzle-kit <command> …`.
21
+ */
22
+ function requiresDatabaseConnection(argv = process.argv) {
23
+ if (!(typeof argv[1] === "string" && argv[1].includes("drizzle-kit"))) return false;
24
+ const command = argv[2];
25
+ return typeof command === "string" && DB_REQUIRING_COMMANDS.has(command);
26
+ }
27
+ /**
28
+ * Materialize the environment a spawned tool needs to reach the binding's
29
+ * database: the canonical secret name mapped to the resolved URL. The process
30
+ * that resolves bindings (the CLI composition root) pushes this into spawned
31
+ * children so they never re-derive secrets from ambient state.
32
+ */
33
+ function bindingEnv(binding) {
34
+ return { [binding.secretName]: binding.url };
35
+ }
36
+ function findEnvFile(startDir) {
37
+ if (!startDir) return void 0;
38
+ let current = startDir;
39
+ for (let i = 0; i < 15; i++) {
40
+ const candidate = (0, node_path.join)(current, ".env");
41
+ if ((0, node_fs.existsSync)(candidate)) return candidate;
42
+ const parent = (0, node_path.dirname)(current);
43
+ if (parent === current) return void 0;
44
+ current = parent;
45
+ }
46
+ }
47
+ /**
48
+ * Resolve the connection URL for a workspace identity.
49
+ *
50
+ * Resolution order:
51
+ * 1. the canonical secret in the provided environment
52
+ * 2. the canonical secret in the nearest `.env` walked up from the
53
+ * workspace directory (existing environment wins — values are not
54
+ * overridden, matching dotenv semantics)
55
+ * 3. loud failure when the drizzle-kit command needs a database
56
+ * 4. an in-memory pglite placeholder for commands that never connect
57
+ * (generate, check) and for non-drizzle-kit consumers
58
+ *
59
+ * This replaces the previous silent `pglite:` fallback that masked missing
60
+ * configuration as cryptic driver errors downstream.
61
+ */
62
+ function resolveDatabaseUrl(identity, options = {}) {
63
+ const env = options.env ?? process.env;
64
+ const argv = options.argv ?? process.argv;
65
+ const direct = env[identity.secretName];
66
+ if (direct) return direct;
67
+ const envFile = findEnvFile(identity.workspaceDir);
68
+ if (envFile) try {
69
+ const fromFile = (0, dotenv.parse)((0, node_fs.readFileSync)(envFile, "utf-8"))[identity.secretName];
70
+ if (fromFile) return fromFile;
71
+ } catch {}
72
+ if (requiresDatabaseConnection(argv)) throw new Error(`Missing ${identity.secretName} for workspace "${identity.slug}" — required for "drizzle-kit ${argv[2]}". Add ${identity.secretName} to your .env (see .env.example) or run via \`bos db\`.`);
73
+ return `pglite:.bos/${identity.slug}/:memory:`;
74
+ }
75
+
76
+ //#endregion
77
+ exports.bindingEnv = bindingEnv;
78
+ exports.requiresDatabaseConnection = requiresDatabaseConnection;
79
+ exports.resolveDatabaseUrl = resolveDatabaseUrl;
80
+ //# sourceMappingURL=binding.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binding.cjs","names":["join","existsSync","dirname","parseDotenv","readFileSync"],"sources":["../../src/db/binding.ts"],"sourcesContent":["import { existsSync, readFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { parse as parseDotenv } from \"dotenv\";\nimport type { WorkspaceIdentity } from \"./identity\";\n\n/**\n * drizzle-kit subcommands that open a database connection. For everything\n * else (generate, check) the connection string is parsed but never used, so a\n * placeholder is safe.\n */\nconst DB_REQUIRING_COMMANDS: ReadonlySet<string> = new Set([\n \"push\",\n \"pull\",\n \"migrate\",\n \"studio\",\n \"up\",\n]);\n\n/**\n * Whether the current process is a drizzle-kit invocation whose command needs\n * a live database. Mirrors drizzle-kit's CLI layout: `drizzle-kit <command> …`.\n */\nexport function requiresDatabaseConnection(argv: readonly string[] = process.argv): boolean {\n const isDrizzleKit = typeof argv[1] === \"string\" && argv[1].includes(\"drizzle-kit\");\n if (!isDrizzleKit) return false;\n const command = argv[2];\n return typeof command === \"string\" && DB_REQUIRING_COMMANDS.has(command);\n}\n\n/**\n * Materialize the environment a spawned tool needs to reach the binding's\n * database: the canonical secret name mapped to the resolved URL. The process\n * that resolves bindings (the CLI composition root) pushes this into spawned\n * children so they never re-derive secrets from ambient state.\n */\nexport function bindingEnv(binding: { secretName: string; url: string }): Record<string, string> {\n return { [binding.secretName]: binding.url };\n}\n\nfunction findEnvFile(startDir: string | undefined): string | undefined {\n if (!startDir) return undefined;\n let current = startDir;\n for (let i = 0; i < 15; i++) {\n const candidate = join(current, \".env\");\n if (existsSync(candidate)) return candidate;\n const parent = dirname(current);\n if (parent === current) return undefined;\n current = parent;\n }\n return undefined;\n}\n\n/**\n * Resolve the connection URL for a workspace identity.\n *\n * Resolution order:\n * 1. the canonical secret in the provided environment\n * 2. the canonical secret in the nearest `.env` walked up from the\n * workspace directory (existing environment wins — values are not\n * overridden, matching dotenv semantics)\n * 3. loud failure when the drizzle-kit command needs a database\n * 4. an in-memory pglite placeholder for commands that never connect\n * (generate, check) and for non-drizzle-kit consumers\n *\n * This replaces the previous silent `pglite:` fallback that masked missing\n * configuration as cryptic driver errors downstream.\n */\nexport function resolveDatabaseUrl(\n identity: WorkspaceIdentity,\n options: {\n env?: Record<string, string | undefined>;\n argv?: readonly string[];\n } = {},\n): string {\n const env = options.env ?? process.env;\n const argv = options.argv ?? process.argv;\n\n const direct = env[identity.secretName];\n if (direct) return direct;\n\n const envFile = findEnvFile(identity.workspaceDir);\n if (envFile) {\n try {\n const parsed = parseDotenv(readFileSync(envFile, \"utf-8\"));\n const fromFile = parsed[identity.secretName];\n if (fromFile) return fromFile;\n } catch {\n // unreadable .env — fall through to loud failure / placeholder\n }\n }\n\n if (requiresDatabaseConnection(argv)) {\n throw new Error(\n `Missing ${identity.secretName} for workspace \"${identity.slug}\" — ` +\n `required for \"drizzle-kit ${argv[2]}\". ` +\n `Add ${identity.secretName} to your .env (see .env.example) or run via \\`bos db\\`.`,\n );\n }\n\n return `pglite:.bos/${identity.slug}/:memory:`;\n}\n"],"mappings":";;;;;;;;;;AAUA,MAAM,wCAA6C,IAAI,IAAI;CACzD;CACA;CACA;CACA;CACA;AACF,CAAC;;;;;AAMD,SAAgB,2BAA2B,OAA0B,QAAQ,MAAe;CAE1F,IAAI,EADiB,OAAO,KAAK,OAAO,YAAY,KAAK,EAAE,CAAC,SAAS,aAAa,IAC/D,OAAO;CAC1B,MAAM,UAAU,KAAK;CACrB,OAAO,OAAO,YAAY,YAAY,sBAAsB,IAAI,OAAO;AACzE;;;;;;;AAQA,SAAgB,WAAW,SAAsE;CAC/F,OAAO,GAAG,QAAQ,aAAa,QAAQ,IAAI;AAC7C;AAEA,SAAS,YAAY,UAAkD;CACrE,IAAI,CAAC,UAAU,OAAO;CACtB,IAAI,UAAU;CACd,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK;EAC3B,MAAM,gBAAYA,gBAAK,SAAS,MAAM;EACtC,QAAIC,oBAAW,SAAS,GAAG,OAAO;EAClC,MAAM,aAASC,mBAAQ,OAAO;EAC9B,IAAI,WAAW,SAAS,OAAO;EAC/B,UAAU;CACZ;AAEF;;;;;;;;;;;;;;;;AAiBA,SAAgB,mBACd,UACA,UAGI,CAAC,GACG;CACR,MAAM,MAAM,QAAQ,OAAO,QAAQ;CACnC,MAAM,OAAO,QAAQ,QAAQ,QAAQ;CAErC,MAAM,SAAS,IAAI,SAAS;CAC5B,IAAI,QAAQ,OAAO;CAEnB,MAAM,UAAU,YAAY,SAAS,YAAY;CACjD,IAAI,SACF,IAAI;EAEF,MAAM,eADSC,kBAAYC,sBAAa,SAAS,OAAO,CAClC,CAAC,CAAC,SAAS;EACjC,IAAI,UAAU,OAAO;CACvB,QAAQ,CAER;CAGF,IAAI,2BAA2B,IAAI,GACjC,MAAM,IAAI,MACR,WAAW,SAAS,WAAW,kBAAkB,SAAS,KAAK,gCAChC,KAAK,GAAG,SAC9B,SAAS,WAAW,wDAC/B;CAGF,OAAO,eAAe,SAAS,KAAK;AACtC"}
@@ -0,0 +1,39 @@
1
+ import { WorkspaceIdentity } from "./identity.cjs";
2
+ //#region src/db/binding.d.ts
3
+ /**
4
+ * Whether the current process is a drizzle-kit invocation whose command needs
5
+ * a live database. Mirrors drizzle-kit's CLI layout: `drizzle-kit <command> …`.
6
+ */
7
+ declare function requiresDatabaseConnection(argv?: readonly string[]): boolean;
8
+ /**
9
+ * Materialize the environment a spawned tool needs to reach the binding's
10
+ * database: the canonical secret name mapped to the resolved URL. The process
11
+ * that resolves bindings (the CLI composition root) pushes this into spawned
12
+ * children so they never re-derive secrets from ambient state.
13
+ */
14
+ declare function bindingEnv(binding: {
15
+ secretName: string;
16
+ url: string;
17
+ }): Record<string, string>;
18
+ /**
19
+ * Resolve the connection URL for a workspace identity.
20
+ *
21
+ * Resolution order:
22
+ * 1. the canonical secret in the provided environment
23
+ * 2. the canonical secret in the nearest `.env` walked up from the
24
+ * workspace directory (existing environment wins — values are not
25
+ * overridden, matching dotenv semantics)
26
+ * 3. loud failure when the drizzle-kit command needs a database
27
+ * 4. an in-memory pglite placeholder for commands that never connect
28
+ * (generate, check) and for non-drizzle-kit consumers
29
+ *
30
+ * This replaces the previous silent `pglite:` fallback that masked missing
31
+ * configuration as cryptic driver errors downstream.
32
+ */
33
+ declare function resolveDatabaseUrl(identity: WorkspaceIdentity, options?: {
34
+ env?: Record<string, string | undefined>;
35
+ argv?: readonly string[];
36
+ }): string;
37
+ //#endregion
38
+ export { bindingEnv, requiresDatabaseConnection, resolveDatabaseUrl };
39
+ //# sourceMappingURL=binding.d.cts.map
@@ -0,0 +1,39 @@
1
+ import { WorkspaceIdentity } from "./identity.mjs";
2
+ //#region src/db/binding.d.ts
3
+ /**
4
+ * Whether the current process is a drizzle-kit invocation whose command needs
5
+ * a live database. Mirrors drizzle-kit's CLI layout: `drizzle-kit <command> …`.
6
+ */
7
+ declare function requiresDatabaseConnection(argv?: readonly string[]): boolean;
8
+ /**
9
+ * Materialize the environment a spawned tool needs to reach the binding's
10
+ * database: the canonical secret name mapped to the resolved URL. The process
11
+ * that resolves bindings (the CLI composition root) pushes this into spawned
12
+ * children so they never re-derive secrets from ambient state.
13
+ */
14
+ declare function bindingEnv(binding: {
15
+ secretName: string;
16
+ url: string;
17
+ }): Record<string, string>;
18
+ /**
19
+ * Resolve the connection URL for a workspace identity.
20
+ *
21
+ * Resolution order:
22
+ * 1. the canonical secret in the provided environment
23
+ * 2. the canonical secret in the nearest `.env` walked up from the
24
+ * workspace directory (existing environment wins — values are not
25
+ * overridden, matching dotenv semantics)
26
+ * 3. loud failure when the drizzle-kit command needs a database
27
+ * 4. an in-memory pglite placeholder for commands that never connect
28
+ * (generate, check) and for non-drizzle-kit consumers
29
+ *
30
+ * This replaces the previous silent `pglite:` fallback that masked missing
31
+ * configuration as cryptic driver errors downstream.
32
+ */
33
+ declare function resolveDatabaseUrl(identity: WorkspaceIdentity, options?: {
34
+ env?: Record<string, string | undefined>;
35
+ argv?: readonly string[];
36
+ }): string;
37
+ //#endregion
38
+ export { bindingEnv, requiresDatabaseConnection, resolveDatabaseUrl };
39
+ //# sourceMappingURL=binding.d.mts.map