everything-dev 1.53.2 → 2.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +624 -196
  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 +613 -194
  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
package/dist/publish.mjs CHANGED
@@ -1,26 +1,112 @@
1
+ import { mergeAuthoredOverPublished } from "./merge.mjs";
1
2
  import { buildRegistryConfigUrlForNetwork, fetchBosConfigFromFastKv, getRegistryNamespaceForNetwork } from "./fastkv.mjs";
2
3
  import { getNetworkIdForAccount } from "./network.mjs";
3
- import { loadResolvedConfig } from "./config.mjs";
4
+ import { resolveSlotVersion } from "./version-manifest-resolve.mjs";
5
+ import { findConfigPath, isAppDescriptorPath, resolveUiRuntimeName } from "./config.mjs";
6
+ import { openResolution } from "./resolution/session.mjs";
7
+ import { pointerFingerprint, slotPins } from "./fingerprint.mjs";
8
+ import { applyDeployResults } from "./integrity.mjs";
9
+ import { formatDuration } from "./cli/timing.mjs";
4
10
  import { padRight } from "./utils/string.mjs";
5
11
  import { colors, icons } from "./utils/theme.mjs";
6
- import { buildWorkspaceTargets, selectWorkspaceTargets } from "./build.mjs";
12
+ import { buildWorkspaceTargets, resolveWorkspaceTarget, selectWorkspaceTargets } from "./build.mjs";
7
13
  import { generateCodeArtifacts } from "./code-artifacts.mjs";
8
- import { ensureNearCli, executeTransaction, resolveNearSigningMode } from "./near-cli.mjs";
9
- import { readFileSync } from "node:fs";
14
+ import { readSessionHandle } from "./auth-session.mjs";
15
+ import { probeStorageOrigin, resolveCdnDeployInputs } from "./cdn-deploy.mjs";
16
+ import { ensureDelegateKey, submitRegistryWriteDelegated } from "./delegate-signer.mjs";
17
+ import { verifyRollbackSnapshot } from "./rollback.mjs";
18
+ import { diffWorkspaceFiles, localSriMap, mergedFileIntegrity, pinsFromDeployState, pinsFromPublishedConfig, upsertDeployStatePins } from "./deploy-diff.mjs";
19
+ import { describeSigningStrategy, resolveSigningStrategy, submitRegistryWrite } from "./near-signer.mjs";
20
+ import { platformUrlDeployEntries, pluginUiUrlDeployEntries } from "./platform-deploy.mjs";
21
+ import { collectDistFiles, uploadBundle, uploadWorkspaceDist } from "./storage-upload.mjs";
22
+ import { composeWorkspaceVersionManifest, readBuildReport } from "./version-manifest-deploy.mjs";
23
+ import { existsSync, writeFileSync } from "node:fs";
10
24
  import { join } from "node:path";
11
- import { Effect } from "effect";
12
25
  import process from "node:process";
26
+ import { hasFolderFormUi } from "every-plugin/build/ui";
13
27
 
14
28
  //#region src/publish.ts
15
29
  function sleep(ms) {
16
30
  return new Promise((resolve) => setTimeout(resolve, ms));
17
31
  }
18
- function extractPublishedUrl(output) {
19
- const deployMatch = output.match(/🚀.*Deployed:\s*(https?:\S+)/);
20
- if (deployMatch) return deployMatch[1];
21
- const match = output.match(/https?:\/\/[^\s"'<>]+/g);
22
- if (!match || match.length === 0) return null;
23
- return match[match.length - 1] ?? null;
32
+ async function pinWorkspaceVersionManifest(input) {
33
+ if (!input.report) return void 0;
34
+ const versionManifest = composeWorkspaceVersionManifest({
35
+ report: input.report,
36
+ ssrReport: input.ssrReport,
37
+ integrityMap: input.integrityMap,
38
+ ...input.files ? { files: input.files } : {}
39
+ });
40
+ if (!versionManifest) return void 0;
41
+ const manifestFile = `versions/${versionManifest.version}.json`;
42
+ const manifestUpload = await uploadBundle({
43
+ origin: input.origin,
44
+ apiKey: input.apiKey,
45
+ account: input.account,
46
+ gateway: input.gateway,
47
+ workspace: input.workspace,
48
+ files: [{
49
+ path: manifestFile,
50
+ bytes: new TextEncoder().encode(`${JSON.stringify(versionManifest, null, 2)}\n`)
51
+ }]
52
+ });
53
+ const manifestIntegrity = manifestUpload.integrity[manifestFile];
54
+ if (!manifestIntegrity) return void 0;
55
+ console.log(` ${colors.dim(`${padRight("", 28)} version manifest ${manifestFile} (SRI pinned)`)}`);
56
+ return {
57
+ file: manifestFile,
58
+ integrity: manifestIntegrity,
59
+ storage: manifestUpload.storage
60
+ };
61
+ }
62
+ /**
63
+ * One workspace's upload leg with skip-unchanged diffing: resolve the previous
64
+ * manifest's `files` map, hash the local dist, upload only new/changed files,
65
+ * and return the merged per-file SRI map for the version manifest. Any failure
66
+ * to resolve the previous map degrades to a full upload.
67
+ */
68
+ async function diffUploadWorkspace(input) {
69
+ const localSri = localSriMap(input.files);
70
+ let uploadFiles = input.files;
71
+ let prevFiles;
72
+ if (input.previousPin) try {
73
+ const resolved = await resolveSlotVersion({
74
+ base: input.base,
75
+ pin: input.previousPin
76
+ });
77
+ if (resolved.files) {
78
+ const diff = diffWorkspaceFiles(input.files, localSri, resolved.files);
79
+ prevFiles = resolved.files;
80
+ uploadFiles = diff.upload;
81
+ if (diff.skipped > 0) console.log(` ${colors.dim(`${padRight(input.workspace, 28)} ${diff.skipped} unchanged file(s) — skipping (manifest diff)`)}`);
82
+ }
83
+ } catch {
84
+ console.log(` ${colors.dim(`${padRight(input.workspace, 28)} previous manifest unusable — uploading everything`)}`);
85
+ }
86
+ console.log(` ${padRight(input.workspace, 28)} uploading ${uploadFiles.length} of ${input.files.length} files (${formatBundleMb(uploadFiles)}) → ${input.base}`);
87
+ const result = uploadFiles.length > 0 ? await uploadWorkspaceDist({
88
+ origin: input.origin,
89
+ apiKey: input.apiKey,
90
+ account: input.account,
91
+ gateway: input.gateway,
92
+ workspace: input.workspace,
93
+ files: uploadFiles
94
+ }) : {
95
+ stored: 0,
96
+ totalBytes: 0,
97
+ integrity: {},
98
+ storage: void 0
99
+ };
100
+ return {
101
+ result,
102
+ fileIntegrity: mergedFileIntegrity(input.files, result.integrity, prevFiles),
103
+ uploaded: result.stored,
104
+ skipped: input.files.length - uploadFiles.length,
105
+ total: input.files.length
106
+ };
107
+ }
108
+ function formatBundleMb(files) {
109
+ return `${(files.reduce((sum, file) => sum + file.bytes.byteLength, 0) / 1024 / 1024).toFixed(1)} MB`;
24
110
  }
25
111
  async function waitForPublishedConfig(opts) {
26
112
  const envTimeoutMs = Number(process.env.BOS_PUBLISH_CONFIRMATION_TIMEOUT_MS);
@@ -31,7 +117,7 @@ async function waitForPublishedConfig(opts) {
31
117
  let lastError;
32
118
  while (Date.now() - startedAt < timeoutMs) {
33
119
  try {
34
- const verifiedConfig = await fetchBosConfigFromFastKv(`bos://${opts.account}/${opts.gateway}`);
120
+ const verifiedConfig = await fetchBosConfigFromFastKv(`bos://${opts.account}/${opts.gateway}`, opts.registry);
35
121
  if (JSON.stringify(verifiedConfig) === JSON.stringify(opts.publishConfig)) return;
36
122
  } catch (error) {
37
123
  lastError = error;
@@ -41,45 +127,142 @@ async function waitForPublishedConfig(opts) {
41
127
  const reason = lastError instanceof Error ? ` Last error: ${lastError.message}` : "";
42
128
  throw new Error(`Timed out waiting for publish confirmation at bos://${opts.account}/${opts.gateway}.${reason}`);
43
129
  }
44
- async function publishToFastKv(input) {
45
- const { env, dryRun, configDir } = input;
46
- let bosConfig = input.bosConfig;
47
- const runtimeConfig = input.runtimeConfig;
48
- const isStaging = env === "staging";
49
- const account = bosConfig.account;
130
+ async function isConfigAlreadyPublished(opts) {
131
+ try {
132
+ const current = await fetchBosConfigFromFastKv(`bos://${opts.account}/${opts.gateway}`, opts.registry);
133
+ return JSON.stringify(current) === JSON.stringify(opts.publishConfig);
134
+ } catch {
135
+ return false;
136
+ }
137
+ }
138
+ async function preflightPublish(input) {
139
+ const { configDir } = input;
140
+ const bosConfig = input.bosConfig;
141
+ const isStaging = input.env === "staging";
142
+ const account = isStaging ? bosConfig.staging?.account ?? bosConfig.account : bosConfig.account;
50
143
  const gateway = isStaging ? bosConfig.staging?.domain ?? bosConfig.domain : bosConfig.domain;
51
144
  if (!gateway) return {
52
- status: "error",
145
+ kind: "error",
53
146
  registryUrl: "",
54
- error: "bos.config.json must define domain to publish"
147
+ error: "authored config must define domain to publish"
55
148
  };
56
149
  const network = input.network ?? getNetworkIdForAccount(account);
57
- const registryUrl = buildRegistryConfigUrlForNetwork(network, account, gateway);
58
- const targets = selectWorkspaceTargets(input.packages, bosConfig);
59
- let built;
60
- let skipped;
61
- let deployResults;
62
- if (dryRun) return {
63
- status: "dry-run",
150
+ const registryUrl = buildRegistryConfigUrlForNetwork(network, account, gateway, input.registry);
151
+ const fail = (error) => ({
152
+ kind: "error",
64
153
  registryUrl,
65
- built,
66
- skipped
154
+ error
155
+ });
156
+ const publishAuth = bosConfig.publish?.auth;
157
+ if ((publishAuth === "session" || input.wallet) && !input.privateKey) {
158
+ const session = readSessionHandle(configDir);
159
+ if (!session?.credential) return fail((input.wallet ? "--wallet requires" : "the authored config sets publish.auth = \"session\", but") + " no CLI session is stored in .bos/ for this project. Run bos login to create one.");
160
+ if (session.credential.accountId && session.credential.accountId !== account) return fail(`The CLI session was created for ${session.credential.accountId}, but the configured account is ${account}. Gasless wallet publish relays the FastKV write under the session's NEAR account. Run bos login again under the matching account.`);
161
+ }
162
+ if (publishAuth && !input.privateKey) {
163
+ if (publishAuth === "custody") return fail("the authored config sets publish.auth = \"custody\", but custody publish is not implemented yet (see NEARBuilders/everything-dev#291).");
164
+ }
165
+ if (input.dryRun) return {
166
+ kind: "dry-run",
167
+ registryUrl
168
+ };
169
+ const useWallet = input.wallet === true;
170
+ let strategy;
171
+ if (useWallet) console.log(` Signing via ${colors.cyan("gasless NEP-366 delegate action (relayed by the platform relayer)")}`);
172
+ else try {
173
+ strategy = await resolveSigningStrategy({
174
+ privateKey: input.privateKey,
175
+ account,
176
+ network
177
+ });
178
+ console.log(` Signing via ${colors.cyan(describeSigningStrategy(strategy))}`);
179
+ } catch (error) {
180
+ return fail(error instanceof Error ? error.message : "Unknown error");
181
+ }
182
+ const session = readSessionHandle(configDir);
183
+ let cdnDeploy = {
184
+ cdnOrigin: void 0,
185
+ storageOrigin: "",
186
+ apiKey: void 0
67
187
  };
68
- const privateKey = input.privateKey || process.env.NEAR_PRIVATE_KEY || process.env.BOS_NEAR_PRIVATE_KEY;
69
- let signingMode;
188
+ if (input.build) {
189
+ cdnDeploy = resolveCdnDeployInputs({
190
+ env: process.env,
191
+ bosConfig,
192
+ session: session?.credential ?? null,
193
+ account,
194
+ gateway,
195
+ uploadsPlanned: input.build
196
+ });
197
+ if (cdnDeploy.error) return fail(cdnDeploy.error);
198
+ if (cdnDeploy.warning) console.log(colors.yellow(` ! ${cdnDeploy.warning}`));
199
+ if (!cdnDeploy.cdnOrigin) return fail("CDN deploy resolved no bundle origin");
200
+ const probeError = await probeStorageOrigin(cdnDeploy.storageOrigin);
201
+ if (probeError) return fail(`The bundle upload origin ${cdnDeploy.storageOrigin} is not running the platform API — ${probeError}. Check BOS_STORAGE_ORIGIN / the bos login session, then re-run.`);
202
+ }
203
+ let publishedConfig = null;
204
+ let publishedConfigState = "missing";
70
205
  try {
71
- signingMode = resolveNearSigningMode(privateKey);
206
+ publishedConfig = await fetchBosConfigFromFastKv(registryUrl, input.registry);
207
+ publishedConfigState = "fetched";
72
208
  } catch (error) {
73
- return {
74
- status: "error",
75
- registryUrl,
76
- error: error instanceof Error ? error.message : "Unknown error"
77
- };
209
+ if ((error instanceof Error ? error.message : String(error)).startsWith("No config found")) console.log(colors.dim(" Note: no published config found yet (first publish) — continuing"));
210
+ else {
211
+ publishedConfigState = "unreachable";
212
+ console.log(colors.dim(" Note: registry read failed — continuing"));
213
+ }
78
214
  }
215
+ return {
216
+ kind: "ready",
217
+ plan: {
218
+ isStaging,
219
+ account,
220
+ gateway,
221
+ network,
222
+ registryUrl,
223
+ registryNamespace: getRegistryNamespaceForNetwork(network, input.registry),
224
+ targets: selectWorkspaceTargets(input.packages, bosConfig),
225
+ useWallet,
226
+ strategy,
227
+ cdnOrigin: cdnDeploy.cdnOrigin,
228
+ storageOrigin: cdnDeploy.storageOrigin,
229
+ storageApiKey: cdnDeploy.apiKey,
230
+ publishedConfig,
231
+ publishedConfigState
232
+ }
233
+ };
234
+ }
235
+ /**
236
+ * The deploy-train publish core (ADR 0020, as amended): preflight
237
+ * (storage/CDN creds + signing) fails fast before the build, then build →
238
+ * upload → version-manifest pin → config write-back → FastKV publish +
239
+ * read-back. Scoped to one plugin via `packages`, a single-plugin redeploy
240
+ * ships real bytes to the storage origin — same as the full train, nothing
241
+ * image-native left.
242
+ */
243
+ async function publishToFastKv(input) {
244
+ const preflight = await preflightPublish(input);
245
+ if (preflight.kind === "error") return {
246
+ status: "error",
247
+ registryUrl: preflight.registryUrl,
248
+ error: preflight.error
249
+ };
250
+ if (preflight.kind === "dry-run") return {
251
+ status: "dry-run",
252
+ registryUrl: preflight.registryUrl
253
+ };
254
+ const plan = preflight.plan;
255
+ const { isStaging, account, gateway, network, registryUrl, registryNamespace, targets, useWallet, strategy } = plan;
256
+ const storageOrigin = plan.storageOrigin;
257
+ const storageApiKey = plan.storageApiKey;
258
+ const { configDir } = input;
259
+ let bosConfig = input.bosConfig;
260
+ const runtimeConfig = input.runtimeConfig;
261
+ let built;
262
+ let skipped;
263
+ let deployResults;
264
+ let refreshedRawConfig = null;
79
265
  if (input.build) {
80
- console.log(" Ensuring NEAR CLI...");
81
- await Effect.runPromise(ensureNearCli);
82
- console.log(" NEAR CLI ready");
83
266
  await generateCodeArtifacts(configDir, bosConfig, {
84
267
  env: "production",
85
268
  runtimeConfig: runtimeConfig ?? void 0
@@ -121,71 +304,324 @@ async function publishToFastKv(input) {
121
304
  };
122
305
  }
123
306
  }
124
- const refreshed = await loadResolvedConfig({ cwd: configDir });
307
+ const refreshed = await openResolution({ cwd: configDir });
125
308
  if (!refreshed?.config) return {
126
309
  status: "error",
127
310
  registryUrl,
128
311
  built,
129
312
  skipped,
130
313
  deployResults,
131
- error: "Failed to reload bos.config.json after build"
314
+ error: "Failed to reload the config after build"
132
315
  };
133
316
  bosConfig = refreshed.config;
317
+ refreshedRawConfig = refreshed.rawConfig;
134
318
  }
135
- const rawConfigPath = join(configDir, "bos.config.json");
136
- const rawConfig = JSON.parse(readFileSync(rawConfigPath, "utf-8"));
137
- const publishPayload = isStaging ? {
138
- ...rawConfig,
319
+ const authoredPath = findConfigPath(configDir);
320
+ const tsForm = authoredPath !== null && isAppDescriptorPath(authoredPath);
321
+ let rawConfig;
322
+ if (refreshedRawConfig) rawConfig = refreshedRawConfig;
323
+ else {
324
+ const opened = await openResolution({ cwd: configDir });
325
+ if (!opened?.rawConfig) return {
326
+ status: "error",
327
+ registryUrl,
328
+ built,
329
+ skipped,
330
+ deployResults,
331
+ error: "Failed to load the authored config for publish"
332
+ };
333
+ rawConfig = opened.rawConfig;
334
+ }
335
+ if (tsForm && !input.build && plan.publishedConfigState === "unreachable") return {
336
+ status: "error",
337
+ registryUrl,
338
+ built,
339
+ skipped,
340
+ deployResults,
341
+ error: "Cannot read the currently published config from the registry — a config-only publish would overwrite live bundle URLs. Retry when the registry is reachable, or run a full deploy."
342
+ };
343
+ let publishPayload = tsForm && !input.build ? mergeAuthoredOverPublished(plan.publishedConfig ?? {}, rawConfig) : rawConfig;
344
+ const urlOrigin = plan.cdnOrigin ?? `https://${gateway}`;
345
+ const deployTargets = (built ?? []).filter((key) => targets.includes(key));
346
+ const platformEntries = [];
347
+ const prevPins = input.fullUpload === true || process.env.BOS_FULL_UPLOAD === "1" ? {} : {
348
+ ...pinsFromPublishedConfig(plan.publishedConfig ?? {}, account, gateway),
349
+ ...pinsFromDeployState(configDir, account, gateway)
350
+ };
351
+ console.log();
352
+ console.log(` CDN deploy — uploading workspace dists to ${storageOrigin}...`);
353
+ for (const key of deployTargets) {
354
+ const ws = resolveWorkspaceTarget(key, bosConfig, runtimeConfig, configDir);
355
+ if (!ws) continue;
356
+ const distFiles = await collectDistFiles(join(ws.path, "dist"));
357
+ const workspaceBase = `${urlOrigin}/bundles/${account}/${gateway}/${key}/`;
358
+ const startedAt = Date.now();
359
+ let outcome;
360
+ try {
361
+ outcome = await diffUploadWorkspace({
362
+ origin: storageOrigin,
363
+ apiKey: storageApiKey,
364
+ account,
365
+ gateway,
366
+ workspace: key,
367
+ files: distFiles,
368
+ base: workspaceBase,
369
+ previousPin: prevPins[key]
370
+ });
371
+ } catch (error) {
372
+ return {
373
+ status: "error",
374
+ registryUrl,
375
+ built,
376
+ skipped,
377
+ deployResults,
378
+ error: error instanceof Error ? error.message : `[publish] bundle upload for ${key} failed`
379
+ };
380
+ }
381
+ const report = readBuildReport(join(ws.path, "dist"));
382
+ const ssrReport = readBuildReport(join(ws.path, "dist", "ssr"));
383
+ const integrity = report ? outcome.fileIntegrity[report.entry] : void 0;
384
+ const ssrIntegrity = ssrReport?.entry ? outcome.fileIntegrity[`ssr/${ssrReport.entry}`] : void 0;
385
+ const manifestPointer = await pinWorkspaceVersionManifest({
386
+ origin: storageOrigin,
387
+ apiKey: storageApiKey,
388
+ account,
389
+ gateway,
390
+ workspace: key,
391
+ report,
392
+ ssrReport,
393
+ integrityMap: outcome.fileIntegrity,
394
+ files: outcome.fileIntegrity
395
+ });
396
+ if (!manifestPointer) return {
397
+ status: "error",
398
+ registryUrl,
399
+ built,
400
+ skipped,
401
+ deployResults,
402
+ error: `bundle upload for ${key}: version manifest missing — the dist predates hashed entry names (rebuild required; atomic-deploys hard break)`
403
+ };
404
+ if (outcome.result.storage === "memory" || manifestPointer.storage === "memory") return {
405
+ status: "error",
406
+ registryUrl,
407
+ built,
408
+ skipped,
409
+ deployResults,
410
+ error: "The receiving instance is serving bundle storage from memory (BOS_STORAGE_* R2 credentials are not configured there) — uploaded bytes would be lost on restart. Aborting before publish."
411
+ };
412
+ console.log(` ${colors.green(icons.ok)} ${padRight(key, 28)} → ${urlOrigin}/bundles/${account}/${gateway}/${key}/ (${outcome.uploaded} uploaded, ${outcome.skipped} skipped, ${formatDuration(Date.now() - startedAt)})`);
413
+ platformEntries.push(...platformUrlDeployEntries({
414
+ origin: urlOrigin,
415
+ account,
416
+ gateway,
417
+ key,
418
+ kind: ws.kind,
419
+ integrity,
420
+ ssrIntegrity,
421
+ pin: manifestPointer
422
+ }));
423
+ if (hasFolderFormUi(ws.path)) {
424
+ const uiDistDir = join(ws.path, "ui", "dist");
425
+ const rawUi = ((ws.kind === "app" ? "app" : "plugins") === "app" ? rawConfig.app : rawConfig.plugins)?.[key]?.ui;
426
+ const uiName = resolveUiRuntimeName(rawUi, join(ws.path, "ui"), key);
427
+ let uiIntegrity;
428
+ let uiSsrIntegrity;
429
+ let uiManifestPointer;
430
+ if (existsSync(uiDistDir)) {
431
+ const uiDistFiles = await collectDistFiles(uiDistDir);
432
+ const uiStartedAt = Date.now();
433
+ const uiOutcome = await diffUploadWorkspace({
434
+ origin: storageOrigin,
435
+ apiKey: storageApiKey,
436
+ account,
437
+ gateway,
438
+ workspace: `${key}-ui`,
439
+ files: uiDistFiles,
440
+ base: `${urlOrigin}/bundles/${account}/${gateway}/${key}-ui/`,
441
+ previousPin: prevPins[`${key}-ui`]
442
+ });
443
+ const uiReport = readBuildReport(uiDistDir);
444
+ const uiSsrReport = readBuildReport(join(uiDistDir, "ssr"));
445
+ uiIntegrity = uiReport ? uiOutcome.fileIntegrity[uiReport.entry] : void 0;
446
+ uiSsrIntegrity = uiSsrReport?.entry ? uiOutcome.fileIntegrity[`ssr/${uiSsrReport.entry}`] : void 0;
447
+ uiManifestPointer = await pinWorkspaceVersionManifest({
448
+ origin: storageOrigin,
449
+ apiKey: storageApiKey,
450
+ account,
451
+ gateway,
452
+ workspace: `${key}-ui`,
453
+ report: uiReport,
454
+ ssrReport: uiSsrReport,
455
+ integrityMap: uiOutcome.fileIntegrity,
456
+ files: uiOutcome.fileIntegrity
457
+ });
458
+ if (!uiManifestPointer) return {
459
+ status: "error",
460
+ registryUrl,
461
+ built,
462
+ skipped,
463
+ deployResults,
464
+ error: `bundle upload for ${key}-ui: version manifest missing — the dist predates hashed entry names (rebuild required; atomic-deploys hard break)`
465
+ };
466
+ if (uiOutcome.result.storage === "memory" || uiManifestPointer.storage === "memory") return {
467
+ status: "error",
468
+ registryUrl,
469
+ built,
470
+ skipped,
471
+ deployResults,
472
+ error: "The receiving instance is serving bundle storage from memory (BOS_STORAGE_* R2 credentials are not configured there) — uploaded bytes would be lost on restart. Aborting before publish."
473
+ };
474
+ console.log(` ${colors.green(icons.ok)} ${padRight(`${key}-ui`, 28)} → ${urlOrigin}/bundles/${account}/${gateway}/${key}-ui/ (${uiOutcome.uploaded} uploaded, ${uiOutcome.skipped} skipped, ${formatDuration(Date.now() - uiStartedAt)})`);
475
+ } else console.log(` ${colors.green(icons.ok)} ${padRight(`${key}-ui`, 28)} → ${urlOrigin}/bundles/${account}/${gateway}/${key}-ui/`);
476
+ platformEntries.push(...pluginUiUrlDeployEntries({
477
+ origin: urlOrigin,
478
+ account,
479
+ gateway,
480
+ key,
481
+ kind: ws.kind,
482
+ integrity: uiIntegrity,
483
+ ssrIntegrity: uiSsrIntegrity,
484
+ name: uiName,
485
+ pin: uiManifestPointer
486
+ }));
487
+ }
488
+ }
489
+ if (platformEntries.length > 0) {
490
+ const merged = applyDeployResults(rawConfig, platformEntries);
491
+ if (!tsForm) try {
492
+ writeFileSync(join(configDir, "bos.config.json"), `${JSON.stringify(merged, null, 2)}\n`);
493
+ } catch (error) {
494
+ return {
495
+ status: "error",
496
+ registryUrl,
497
+ built,
498
+ skipped,
499
+ deployResults,
500
+ error: `Failed to write bundle URLs to bos.config.json: ${error instanceof Error ? error.message : error}`
501
+ };
502
+ }
503
+ publishPayload = merged;
504
+ }
505
+ if (isStaging) publishPayload = {
506
+ ...publishPayload,
139
507
  domain: gateway
140
- } : rawConfig;
141
- const registryEntries = { [`apps/${account}/${gateway}/bos.config.json`]: JSON.stringify(publishPayload) };
142
- const payload = JSON.stringify(registryEntries);
143
- const argsBase64 = Buffer.from(payload).toString("base64");
508
+ };
509
+ const pinVerification = await verifyRollbackSnapshot(publishPayload);
510
+ if (pinVerification.verifiable && !pinVerification.ok) {
511
+ const failures = pinVerification.slots.filter((check) => !check.ok).map((check) => ` ${check.slot}: ${check.reason}`).join("\n");
512
+ console.error(` ${colors.error(icons.err)} Publish blocked — a pinned slot's bytes do not serve at its production URL:\n${failures}`);
513
+ return {
514
+ status: "error",
515
+ registryUrl,
516
+ built,
517
+ skipped,
518
+ deployResults,
519
+ error: `Publish blocked — pinned slot bytes missing or SRI mismatched:\n${failures}`
520
+ };
521
+ }
522
+ const registryKey = `apps/${account}/${gateway}/bos.config.json`;
523
+ const publishedAt = (/* @__PURE__ */ new Date()).toISOString();
524
+ const fingerprint = pointerFingerprint(publishPayload);
525
+ const publishSlotPins = slotPins(publishPayload);
526
+ const registryEntries = { [registryKey]: JSON.stringify(publishPayload) };
527
+ const manifestKey = `apps/${account}/${gateway}/manifests/${publishedAt.replace(/[:.]/g, "-")}.json`;
528
+ registryEntries[manifestKey] = JSON.stringify({
529
+ account,
530
+ gateway,
531
+ network,
532
+ publishedAt,
533
+ registryUrl
534
+ });
144
535
  console.log();
145
536
  console.log(" Publishing to:");
146
537
  console.log(` ${colors.cyan(registryUrl)}`);
538
+ console.log(` ${colors.dim("Fingerprint:")} ${fingerprint}`);
539
+ for (const [slot, pin] of Object.entries(publishSlotPins)) {
540
+ console.log(` ${colors.dim(`${slot}:`)}`);
541
+ console.log(` ${pin}`);
542
+ }
543
+ console.log(` ${colors.dim(`+ per-deploy manifest ${manifestKey.split("/").pop()} (audit trail)`)}`);
544
+ const persistDeployState = () => {
545
+ try {
546
+ const pins = pinsFromPublishedConfig(publishPayload, account, gateway);
547
+ if (Object.keys(pins).length > 0) upsertDeployStatePins(configDir, account, gateway, pins);
548
+ } catch (error) {
549
+ console.log(colors.dim(` Note: could not update .bos/deploy-state.json — ${error instanceof Error ? error.message : String(error)}`));
550
+ }
551
+ };
147
552
  try {
148
- let txHash;
553
+ if (await isConfigAlreadyPublished({
554
+ account,
555
+ gateway,
556
+ publishConfig: publishPayload,
557
+ registry: input.registry
558
+ })) {
559
+ console.log(" Already up to date — skipping transaction");
560
+ persistDeployState();
561
+ return {
562
+ status: "published",
563
+ registryUrl,
564
+ built,
565
+ skipped,
566
+ deployResults,
567
+ publishConfig: publishPayload
568
+ };
569
+ }
149
570
  console.log(` Submitting transaction on ${network}...`);
150
- try {
151
- const tx = await Effect.runPromise(executeTransaction({
571
+ let result;
572
+ if (useWallet) {
573
+ const credential = readSessionHandle(configDir)?.credential;
574
+ if (!credential || credential.accountId !== account) return {
575
+ status: "error",
576
+ registryUrl,
577
+ error: `--wallet requires a CLI session under ${account}. Run bos login first.`
578
+ };
579
+ const record = await ensureDelegateKey({
580
+ configDir,
581
+ account,
582
+ contract: registryNamespace,
583
+ network,
584
+ siteUrl: credential.siteUrl
585
+ });
586
+ result = await submitRegistryWriteDelegated({
152
587
  account,
153
- contract: getRegistryNamespaceForNetwork(network),
588
+ contract: registryNamespace,
589
+ network,
590
+ args: registryEntries,
591
+ delegatePrivateKey: record.privateKey,
592
+ relayEndpoint: `${credential.siteUrl}/api/auth/near/relay`,
593
+ apiKey: credential.apiKey
594
+ });
595
+ } else {
596
+ if (!strategy) return {
597
+ status: "error",
598
+ registryUrl,
599
+ error: "non-wallet publish requires a resolved signing strategy"
600
+ };
601
+ result = await submitRegistryWrite({
602
+ account,
603
+ contract: registryNamespace,
154
604
  method: "__fastdata_kv",
155
- argsBase64,
605
+ args: registryEntries,
156
606
  network,
157
- privateKey: signingMode._tag === "privateKey" ? signingMode.privateKey : void 0,
158
- gas: "300Tgas",
159
- deposit: "0NEAR",
160
- verbose: input.verbose
161
- }, signingMode));
162
- txHash = tx.txHash;
163
- if (txHash && !tx.output?.includes("CodeDoesNotExist")) console.log(` Transaction submitted: ${colors.dim(txHash)}`);
164
- } catch (error) {
165
- console.log(colors.dim(" Transaction reported an error — verifying publish..."));
166
- try {
167
- await waitForPublishedConfig({
168
- account,
169
- gateway,
170
- publishConfig: publishPayload,
171
- timeoutMs: 3e4,
172
- intervalMs: 2e3
173
- });
174
- txHash = extractTransactionHash(error);
175
- } catch {
176
- throw error;
177
- }
607
+ privateKey: input.privateKey
608
+ }, strategy);
178
609
  }
610
+ if (result.txHash) console.log(` Transaction submitted: ${colors.dim(result.txHash)}`);
179
611
  console.log(" Waiting for publish confirmation...");
180
612
  await waitForPublishedConfig({
181
613
  account,
182
614
  gateway,
183
- publishConfig: publishPayload
615
+ publishConfig: publishPayload,
616
+ registry: input.registry
184
617
  });
618
+ persistDeployState();
185
619
  return {
186
620
  status: "published",
187
621
  registryUrl,
188
- txHash,
622
+ txHash: result.txHash,
623
+ fingerprint,
624
+ slotPins: publishSlotPins,
189
625
  built,
190
626
  skipped,
191
627
  deployResults,
@@ -212,10 +648,7 @@ function formatNearError(error) {
212
648
  if (message.includes("timeout") || message.includes("Timeout")) return `Transaction timed out. Check NEAR network status.\n Original: ${message}`;
213
649
  return message;
214
650
  }
215
- function extractTransactionHash(error) {
216
- return (error instanceof Error ? error.message : String(error)).match(/Transaction ID:\s*([A-Za-z0-9]+)/i)?.[1];
217
- }
218
651
 
219
652
  //#endregion
220
- export { extractPublishedUrl, publishToFastKv, waitForPublishedConfig };
653
+ export { isConfigAlreadyPublished, preflightPublish, publishToFastKv, waitForPublishedConfig };
221
654
  //# sourceMappingURL=publish.mjs.map