void 0.10.12 → 0.20.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 (431) hide show
  1. package/AGENTS_TEMPLATE.md +6 -0
  2. package/{skills/void/docs/node_modules/void/node_modules/pglite-server/LICENSE.md → LICENSE} +1 -1
  3. package/README.md +34 -8
  4. package/dist/{auth-qgMlYp7Z.d.mts → auth-DkcFflXV.d.mts} +10 -11
  5. package/dist/auth-W9WII-mN.mjs +630 -0
  6. package/dist/{auth-cmd-BqsdZJp5.mjs → auth-cmd-CYVhSNFy.mjs} +4 -3
  7. package/dist/{auth-migrations-BTZ-ATvQ.mjs → auth-migrations-9vif1uj8.mjs} +53 -12
  8. package/dist/{better-auth-shared-BQooDxbw.mjs → better-auth-shared-CYw1T3k4.mjs} +7 -10
  9. package/dist/{better-auth-shared-DealXecJ.d.mts → better-auth-shared-DSCeohOK.d.mts} +10 -5
  10. package/dist/{build-cmd-Bujrv5q-.mjs → build-cmd-CkVD1uOh.mjs} +6 -4
  11. package/dist/{cache-C11V8Fxq.mjs → cache-QcUfR-ff.mjs} +9 -5
  12. package/dist/{cancel-deploy-fwFYF04b.mjs → cancel-deploy-DsvWKFTe.mjs} +3 -2
  13. package/dist/cf-access-AJ1ehiFR.mjs +42 -0
  14. package/dist/cf-access-DsSsZUPr.mjs +67 -0
  15. package/dist/cli/cli.d.mts +1 -1
  16. package/dist/cli/cli.mjs +1592 -153
  17. package/dist/cli/env-schema-probe.d.mts +48 -61
  18. package/dist/cli/env-schema-probe.mjs +10 -58
  19. package/dist/{client-Gb71-XkG.mjs → client-CyCHWSO_.mjs} +61 -463
  20. package/dist/cloudflare-auth-DRkGe7-s.mjs +170 -0
  21. package/dist/cloudflare-cmd-D3ME2GAe.mjs +62 -0
  22. package/dist/cloudflare-connect-BivMefMA.mjs +56 -0
  23. package/dist/cloudflare-operations-CPTpRW6d.mjs +566 -0
  24. package/dist/{config-BkTvs43g.mjs → config-BQFq7QvD.mjs} +85 -41
  25. package/dist/{config-CutEMNGJ.mjs → config-NOG_U1aK.mjs} +10 -15
  26. package/dist/connect-D9Yr-T5f.mjs +79 -0
  27. package/dist/{create-project-DsYvl3TB.mjs → create-project-DMV-csEm.mjs} +26 -16
  28. package/dist/database-provider.d.mts +21 -0
  29. package/dist/database-provider.mjs +6 -0
  30. package/dist/{db-DOiJMRt2.mjs → db-BxoUWL0F.mjs} +600 -115
  31. package/dist/{delete-mh6p-zkQ.mjs → delete-iJOqxBz1.mjs} +9 -6
  32. package/dist/{deploy-u7Rv9q_q.mjs → deploy-CcDoeBIf.mjs} +3451 -1986
  33. package/dist/dev-inbox-DkgRWLkW.mjs +307 -0
  34. package/dist/{discover-CJHyvYfR.mjs → discover-xvfrgJeo.mjs} +3 -3
  35. package/dist/{magic-string.es-ZQjdJFFn.mjs → dist-BR1quN_w.mjs} +570 -216
  36. package/dist/{dist-DaKKDf8D.mjs → dist-BrsS7cai.mjs} +17 -2
  37. package/dist/{dist-BuiRJkTd.mjs → dist-m40_XgNh.mjs} +48 -33
  38. package/dist/{domain-DiaNQbrl.mjs → domain-gu_iaHmn.mjs} +41 -4
  39. package/dist/dotenv-VQxupEUv.mjs +181 -0
  40. package/dist/edge.d.mts +2 -0
  41. package/dist/edge.mjs +2 -0
  42. package/dist/email-Ce6SQq-i.mjs +182 -0
  43. package/dist/email-r6DHJyAB.mjs +262 -0
  44. package/dist/{entry-D7yy4xVH.mjs → entry-DU3oDoQ3.mjs} +2 -2
  45. package/dist/env-D4Emu-M_.mjs +95 -0
  46. package/dist/env-DmU2To0C.mjs +73 -0
  47. package/dist/env-helpers-CyKtOBpj.d.mts +22 -0
  48. package/dist/env-public-D_6u46fX.d.mts +135 -0
  49. package/dist/{env-types-QBj-ndax.mjs → env-types-BNPhro-M.mjs} +2 -2
  50. package/dist/{env-validation-Dea3v3ej.mjs → env-validation-ENpMy6Ez.mjs} +68 -122
  51. package/dist/{gen-o_w-8yI8.mjs → gen-BKw6qHIg.mjs} +70 -15
  52. package/dist/{github-cmd-DKcGUNsj.mjs → github-cmd-DJS5Ab-H.mjs} +39 -31
  53. package/dist/{handler-Cjh8uM3Y.d.mts → handler-D1hLsObx.d.mts} +124 -122
  54. package/dist/{head-nmvOgFjd.d.mts → head-Do8P4puT.d.mts} +9 -8
  55. package/dist/{headers-nsHIFixA.mjs → headers-D8QfRX9Y.mjs} +12 -10
  56. package/dist/inbound-BJ70in1n.d.mts +354 -0
  57. package/dist/inbound-CNKxb3FY.mjs +694 -0
  58. package/dist/index.d.mts +61 -34
  59. package/dist/index.mjs +1048 -321
  60. package/dist/{init-3rgHKBVi.mjs → init-Dx5cgKqK.mjs} +329 -271
  61. package/dist/link-D_rm5sRH.mjs +52 -0
  62. package/dist/{list-CPwFDZ_c.mjs → list-M8XShti7.mjs} +37 -5
  63. package/dist/{runner-kapo9aPs.mjs → local-d1-BE8KBbMy.mjs} +116 -6
  64. package/dist/{login-BT3H8PN3.mjs → login-C8-UuLnp.mjs} +17 -15
  65. package/dist/{logs-Bt313ax7.mjs → logs-DwFU7dMW.mjs} +16 -2
  66. package/dist/mime-BJD7d_qL.mjs +1216 -0
  67. package/dist/neon-DHwd2zvC.mjs +54 -0
  68. package/dist/{node-Da0UcsGA.mjs → node-BkaXcpAc.mjs} +29 -8
  69. package/dist/operator-cmd-DYWRbWUA.mjs +348 -0
  70. package/dist/{agents-CtgBYqld.mjs → output-tFQLLj26.mjs} +676 -211
  71. package/dist/{package-json-Cx1osYo6.mjs → package-json-CPoWX79C.mjs} +1 -1
  72. package/dist/pages/client.d.mts +43 -41
  73. package/dist/pages/client.mjs +40 -33
  74. package/dist/pages/head-client.d.mts +10 -12
  75. package/dist/pages/head.d.mts +1 -1
  76. package/dist/pages/index.d.mts +37 -14
  77. package/dist/pages/index.mjs +5 -5
  78. package/dist/pages/islands-plugin.d.mts +25 -27
  79. package/dist/pages/islands-plugin.mjs +6 -4
  80. package/dist/pages/prefetch.d.mts +6 -7
  81. package/dist/pages/protocol.d.mts +2 -2
  82. package/dist/pages/protocol.mjs +2 -1
  83. package/dist/pages/serialize.d.mts +7 -8
  84. package/dist/platform-cmd-BEOVv1PN.mjs +123 -0
  85. package/dist/platform-domain-BszUfiS8.mjs +228 -0
  86. package/dist/platform-lifecycle-CjSr6xf0.mjs +4450 -0
  87. package/dist/platform-management-W30iCaTL.mjs +698 -0
  88. package/dist/platform-recovery-pHHv4ZSg.mjs +99 -0
  89. package/dist/{plugin-inference-DMeavIJ6.mjs → plugin-inference-BDRfZngg.mjs} +35 -19
  90. package/dist/prepare-BfJvFUtJ.mjs +14 -0
  91. package/dist/{prepare-BoKHgMNx.mjs → prepare-CBetXvsN.mjs} +15 -24
  92. package/dist/{preset-BjyR3lzz.mjs → preset-lAy0B0BQ.mjs} +25 -212
  93. package/dist/{project-cmd-D_w-4w5B.mjs → project-cmd-DCpk1cDt.mjs} +25 -12
  94. package/dist/{project-paths-BQd7OmIo.mjs → project-paths-SK8nMHPp.mjs} +3 -1
  95. package/dist/{project-tsconfig-B-QtXjLQ.mjs → project-tsconfig-Ql2XsSQp.mjs} +2 -2
  96. package/dist/{protocol-Bnb0LFp3.d.mts → protocol-C-pqYJjE.d.mts} +3 -4
  97. package/dist/{provision-rShh6MKY.mjs → provision-Blnstcm2.mjs} +78 -45
  98. package/dist/r2-conditions-D1Wk8i7b.mjs +30 -0
  99. package/dist/{requests-B8sZxaFM.mjs → requests-Dn8Vheh1.mjs} +5 -3
  100. package/dist/{resolve-project-BBMtLLV9.mjs → resolve-project--Vxawf7z.mjs} +2 -2
  101. package/dist/rollback-CtlPXEBi.mjs +166 -0
  102. package/dist/{rolldown-runtime-DJK8HYOj.mjs → rolldown-runtime-rQ84J-ij.mjs} +1 -1
  103. package/dist/{route-types-COI2DsZv.mjs → route-types-Da-DpyUp.mjs} +85 -26
  104. package/dist/routes-stub.d.mts +22 -23
  105. package/dist/runner-mysql-CgRFl3s6.mjs +61 -0
  106. package/dist/{runner-pg-CHM76xuC.mjs → runner-pg-DCkWPsWS.mjs} +18 -6
  107. package/dist/runtime/ai.d.mts +21 -14
  108. package/dist/runtime/ai.mjs +5 -4
  109. package/dist/runtime/auth-client-react.d.mts +3 -5
  110. package/dist/runtime/auth-client-solid.d.mts +3 -5
  111. package/dist/runtime/auth-client-svelte.d.mts +3 -5
  112. package/dist/runtime/auth-client-vue.d.mts +3 -5
  113. package/dist/runtime/auth-client.d.mts +3 -5
  114. package/dist/runtime/auth.d.mts +1 -1
  115. package/dist/runtime/better-auth-mysql.d.mts +10 -0
  116. package/dist/runtime/better-auth-mysql.mjs +49 -0
  117. package/dist/runtime/better-auth-pg.d.mts +8 -9
  118. package/dist/runtime/better-auth-pg.mjs +2 -2
  119. package/dist/runtime/better-auth.d.mts +8 -9
  120. package/dist/runtime/better-auth.mjs +2 -2
  121. package/dist/runtime/client-react.d.mts +1 -1
  122. package/dist/runtime/client-solid.d.mts +1 -1
  123. package/dist/runtime/client-svelte.d.mts +1 -1
  124. package/dist/runtime/client-vue.d.mts +1 -1
  125. package/dist/runtime/client.d.mts +1 -1
  126. package/dist/runtime/db-mysql.d.mts +2 -0
  127. package/dist/runtime/db-mysql.mjs +1 -0
  128. package/dist/runtime/db.d.mts +10 -11
  129. package/dist/runtime/durable.d.mts +47 -0
  130. package/dist/runtime/durable.mjs +146 -0
  131. package/dist/runtime/email/testing.d.mts +112 -0
  132. package/dist/runtime/email/testing.mjs +283 -0
  133. package/dist/runtime/email.d.mts +30 -0
  134. package/dist/runtime/email.mjs +573 -0
  135. package/dist/runtime/env-helpers.d.mts +2 -2
  136. package/dist/runtime/env-helpers.mjs +5 -42
  137. package/dist/runtime/env-public-client.d.mts +10 -11
  138. package/dist/runtime/env-public-client.mjs +1 -1
  139. package/dist/runtime/env-public.d.mts +2 -2
  140. package/dist/runtime/env-public.mjs +104 -49
  141. package/dist/runtime/env.d.mts +19 -18
  142. package/dist/runtime/env.mjs +15 -2
  143. package/dist/runtime/fetch-stream.d.mts +20 -21
  144. package/dist/runtime/fetch.d.mts +15 -16
  145. package/dist/runtime/handler.d.mts +1 -1
  146. package/dist/runtime/isr.d.mts +21 -22
  147. package/dist/runtime/isr.mjs +26 -8
  148. package/dist/runtime/kv.d.mts +9 -10
  149. package/dist/runtime/live-client.d.mts +5 -7
  150. package/dist/runtime/live-client.mjs +9 -7
  151. package/dist/runtime/live-server.d.mts +4 -5
  152. package/dist/runtime/live.d.mts +22 -24
  153. package/dist/runtime/live.mjs +1 -1
  154. package/dist/runtime/log.d.mts +16 -17
  155. package/dist/runtime/migration-handler-mysql.d.mts +4 -0
  156. package/dist/runtime/migration-handler-mysql.mjs +81 -0
  157. package/dist/runtime/migration-handler-pg.d.mts +2 -4
  158. package/dist/runtime/migration-handler.d.mts +5 -6
  159. package/dist/runtime/migration-handler.mjs +4 -3
  160. package/dist/runtime/queues.d.mts +3 -4
  161. package/dist/runtime/queues.mjs +2 -1
  162. package/dist/runtime/remote/binding-handler.d.mts +10 -12
  163. package/dist/runtime/remote/binding-handler.mjs +24 -3
  164. package/dist/runtime/remote/index.d.mts +5 -6
  165. package/dist/runtime/remote/index.mjs +21 -18
  166. package/dist/runtime/response.d.mts +10 -11
  167. package/dist/runtime/sandbox.d.mts +56 -55
  168. package/dist/runtime/sandbox.mjs +57 -49
  169. package/dist/runtime/schema-mysql.d.mts +1 -0
  170. package/dist/runtime/schema-mysql.mjs +2 -0
  171. package/dist/runtime/seed.d.mts +14 -9
  172. package/dist/runtime/sse-client.d.mts +6 -7
  173. package/dist/runtime/sse.d.mts +11 -12
  174. package/dist/runtime/storage.d.mts +3 -4
  175. package/dist/runtime/validator.d.mts +1 -1
  176. package/dist/runtime/ws-server.d.mts +12 -12
  177. package/dist/runtime/ws-server.mjs +32 -4
  178. package/dist/runtime/ws.d.mts +19 -21
  179. package/dist/{scan-DYXkrasO.mjs → scan-BMH4rzlv.mjs} +53 -31
  180. package/dist/{scan-DEwlM_Xy.mjs → scan-CpK-57ug.mjs} +9 -5
  181. package/dist/{secret-Dt32J6RI.mjs → secret-BqTxGqki.mjs} +62 -5
  182. package/dist/{skills-CLjN0uUO.mjs → skills-Q46GZMO-.mjs} +6 -4
  183. package/dist/{standard-schema-DJ0HW7QP.d.mts → standard-schema-Fo_vCAZh.d.mts} +6 -6
  184. package/dist/{subcommand-prompt-BzV8iQZo.mjs → subcommand-prompt-WfySCQ7S.mjs} +67 -48
  185. package/dist/sveltekit.d.mts +12 -11
  186. package/dist/sveltekit.mjs +1 -1
  187. package/dist/types-BAp5AEBU.d.mts +79 -0
  188. package/dist/types-CKWnYgfy.d.mts +1 -0
  189. package/dist/{validate-Cw_RLeTj.mjs → validate-Bihr8WBi.mjs} +3 -3
  190. package/dist/wrangler--imS8n0d.mjs +1796 -0
  191. package/dist/{yarn-pnp-DJn3SAHF.mjs → yarn-pnp-DxSInkzL.mjs} +1 -1
  192. package/package.json +79 -65
  193. package/schema.json +35 -3
  194. package/skills/migrate-vite-cloudflare-to-void/SKILL.md +1 -1
  195. package/skills/void/SKILL.md +59 -2
  196. package/skills/void/docs/guide/ai.md +32 -14
  197. package/skills/void/docs/guide/app-types.md +6 -6
  198. package/skills/void/docs/guide/auth.md +14 -16
  199. package/skills/void/docs/guide/database/d1.md +6 -0
  200. package/skills/void/docs/guide/database/mysql.md +60 -0
  201. package/skills/void/docs/guide/database/postgresql.md +14 -9
  202. package/skills/void/docs/guide/database.md +39 -26
  203. package/skills/void/docs/guide/deployment.md +163 -22
  204. package/skills/void/docs/guide/durable-state.md +140 -0
  205. package/skills/void/docs/guide/edge/headers.md +5 -5
  206. package/skills/void/docs/guide/edge/prerendering.md +2 -0
  207. package/skills/void/docs/guide/edge/revalidation.md +21 -6
  208. package/skills/void/docs/guide/edge/rewrites.md +18 -14
  209. package/skills/void/docs/guide/edge/static-assets.md +23 -8
  210. package/skills/void/docs/guide/email.md +609 -0
  211. package/skills/void/docs/guide/env-migration.md +109 -0
  212. package/skills/void/docs/guide/env-vars.md +70 -248
  213. package/skills/void/docs/guide/index.md +15 -17
  214. package/skills/void/docs/guide/jobs.md +8 -5
  215. package/skills/void/docs/guide/live.md +7 -15
  216. package/skills/void/docs/guide/pages-routing/actions-and-forms.md +8 -4
  217. package/skills/void/docs/guide/pages-routing/islands.md +3 -3
  218. package/skills/void/docs/guide/pages-routing/loaders.md +6 -4
  219. package/skills/void/docs/guide/pages-routing/overview.md +7 -7
  220. package/skills/void/docs/guide/platform-administration.md +212 -0
  221. package/skills/void/docs/guide/platform-development.md +235 -0
  222. package/skills/void/docs/guide/queues.md +10 -10
  223. package/skills/void/docs/guide/quickstart.md +46 -67
  224. package/skills/void/docs/guide/remote-dev.md +8 -6
  225. package/skills/void/docs/guide/sandboxes.md +33 -16
  226. package/skills/void/docs/guide/self-hosted-platform.md +553 -0
  227. package/skills/void/docs/guide/server-routing.md +25 -5
  228. package/skills/void/docs/guide/sse.md +4 -4
  229. package/skills/void/docs/guide/ssg.md +5 -3
  230. package/skills/void/docs/guide/storage.md +2 -2
  231. package/skills/void/docs/guide/websockets.md +18 -7
  232. package/skills/void/docs/index.md +3 -3
  233. package/skills/void/docs/integrations/agents.md +6 -64
  234. package/skills/void/docs/integrations/cloudflare.md +165 -146
  235. package/skills/void/docs/integrations/frameworks/analog.md +4 -4
  236. package/skills/void/docs/integrations/frameworks/astro.md +5 -5
  237. package/skills/void/docs/integrations/frameworks/nuxt.md +5 -5
  238. package/skills/void/docs/integrations/frameworks/overview.md +3 -3
  239. package/skills/void/docs/integrations/frameworks/react-router.md +3 -3
  240. package/skills/void/docs/integrations/frameworks/sveltekit.md +3 -3
  241. package/skills/void/docs/integrations/frameworks/tanstack-start.md +2 -2
  242. package/skills/void/docs/integrations/nodejs-bun-deno.md +11 -4
  243. package/skills/void/docs/reference/api.md +42 -6
  244. package/skills/void/docs/reference/cli.md +637 -159
  245. package/skills/void/docs/reference/config.md +80 -25
  246. package/skills/void/docs/reference/resource-inference.md +13 -9
  247. package/skills/void/docs/reference/structure.md +10 -11
  248. package/AGENT_PROMPT.md +0 -19
  249. package/dist/cf-access-Bqw81xAf.mjs +0 -22
  250. package/dist/env-CZy5MorI.mjs +0 -299
  251. package/dist/env-helpers-z4stu8uc.d.mts +0 -52
  252. package/dist/env-mask-Dd47NbR6.mjs +0 -90
  253. package/dist/env-public-BfiLcMBk.d.mts +0 -140
  254. package/dist/link-CdGHSIy-.mjs +0 -45
  255. package/dist/mcp-DoM3_nhd.mjs +0 -377
  256. package/dist/project-paths-GpziKeQQ.d.mts +0 -25
  257. package/dist/providers-BNKRacMr.d.mts +0 -7
  258. package/dist/proxy-D-3_D-Gl.mjs +0 -5
  259. package/dist/rollback-CkvTFXx5.mjs +0 -90
  260. package/dist/runtime/isr-cache.d.mts +0 -207
  261. package/dist/runtime/isr-cache.mjs +0 -523
  262. package/dist/types-lLjNE9Qp.d.mts +0 -51
  263. package/getting-started-prompt.txt +0 -28
  264. package/skills/void/command/void.md +0 -7
  265. package/skills/void/docs/integrations/auth-providers.md +0 -0
  266. package/skills/void/docs/integrations/payment-processors.md +0 -0
  267. package/skills/void/docs/node_modules/@iconify/vue/README.md +0 -408
  268. package/skills/void/docs/node_modules/@iconify/vue/offline/readme.md +0 -5
  269. package/skills/void/docs/node_modules/@voidzero-dev/vitepress-theme/README.md +0 -103
  270. package/skills/void/docs/node_modules/oxc-minify/README.md +0 -78
  271. package/skills/void/docs/node_modules/reka-ui/README.md +0 -80
  272. package/skills/void/docs/node_modules/vitepress/README.md +0 -28
  273. package/skills/void/docs/node_modules/vitepress/template/api-examples.md +0 -49
  274. package/skills/void/docs/node_modules/vitepress/template/index.md +0 -28
  275. package/skills/void/docs/node_modules/vitepress/template/markdown-examples.md +0 -85
  276. package/skills/void/docs/node_modules/vitepress-plugin-group-icons/README.md +0 -101
  277. package/skills/void/docs/node_modules/void/AGENT_PROMPT.md +0 -19
  278. package/skills/void/docs/node_modules/void/CLAUDE.md +0 -219
  279. package/skills/void/docs/node_modules/void/README.md +0 -90
  280. package/skills/void/docs/node_modules/void/node_modules/@clack/prompts/CHANGELOG.md +0 -685
  281. package/skills/void/docs/node_modules/void/node_modules/@clack/prompts/README.md +0 -396
  282. package/skills/void/docs/node_modules/void/node_modules/@cloudflare/sandbox/README.md +0 -219
  283. package/skills/void/docs/node_modules/void/node_modules/@cloudflare/vite-plugin/README.md +0 -37
  284. package/skills/void/docs/node_modules/void/node_modules/@cloudflare/workers-types/README.md +0 -135
  285. package/skills/void/docs/node_modules/void/node_modules/@electric-sql/pglite/README.md +0 -189
  286. package/skills/void/docs/node_modules/void/node_modules/@hono/oauth-providers/CHANGELOG.md +0 -143
  287. package/skills/void/docs/node_modules/void/node_modules/@hono/oauth-providers/README.md +0 -1272
  288. package/skills/void/docs/node_modules/void/node_modules/@napi-rs/keyring/README.md +0 -19
  289. package/skills/void/docs/node_modules/void/node_modules/@types/better-sqlite3/README.md +0 -15
  290. package/skills/void/docs/node_modules/void/node_modules/@types/node/README.md +0 -15
  291. package/skills/void/docs/node_modules/void/node_modules/@types/pg/README.md +0 -15
  292. package/skills/void/docs/node_modules/void/node_modules/@types/proper-lockfile/README.md +0 -51
  293. package/skills/void/docs/node_modules/void/node_modules/@typescript/native-preview/README.md +0 -22
  294. package/skills/void/docs/node_modules/void/node_modules/@typescript/native-preview/vendor/vscode-jsonrpc/README.md +0 -69
  295. package/skills/void/docs/node_modules/void/node_modules/@void/md/README.md +0 -153
  296. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/@shikijs/engine-javascript/README.md +0 -9
  297. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/@shikijs/transformers/README.md +0 -9
  298. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/@types/node/README.md +0 -15
  299. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/gray-matter/CHANGELOG.md +0 -24
  300. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/gray-matter/README.md +0 -565
  301. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-exit/README.md +0 -127
  302. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-anchor/README.md +0 -600
  303. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-attrs/README.md +0 -386
  304. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-container/README.md +0 -95
  305. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-emoji/README.md +0 -101
  306. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-footnote/README.md +0 -135
  307. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/pathslash/README.md +0 -64
  308. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/shiki/README.md +0 -15
  309. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/tinyglobby/README.md +0 -25
  310. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/AGENTS.md +0 -16
  311. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/README.md +0 -220
  312. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/build.md +0 -21
  313. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/check.md +0 -35
  314. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/create.md +0 -70
  315. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/fmt.md +0 -20
  316. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/index.md +0 -35
  317. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/lint.md +0 -26
  318. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/pack.md +0 -17
  319. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/run.md +0 -364
  320. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/staged.md +0 -15
  321. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/test.md +0 -18
  322. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/automatic-data-tracking.md +0 -145
  323. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/build.md +0 -40
  324. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/cache.md +0 -107
  325. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/check.md +0 -60
  326. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/ci.md +0 -62
  327. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/commit-hooks.md +0 -60
  328. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/create.md +0 -341
  329. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/dev.md +0 -24
  330. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/docker.md +0 -175
  331. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/env.md +0 -167
  332. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/fmt.md +0 -41
  333. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/github-actions-cache.md +0 -165
  334. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/ide-integration.md +0 -101
  335. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/implode.md +0 -23
  336. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/index.md +0 -134
  337. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/install.md +0 -199
  338. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/lint.md +0 -50
  339. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/migrate-rules.md +0 -347
  340. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/migrate.md +0 -197
  341. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/monorepo.md +0 -176
  342. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/pack.md +0 -69
  343. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/run.md +0 -356
  344. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/test.md +0 -35
  345. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/troubleshooting.md +0 -108
  346. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/upgrade.md +0 -101
  347. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/vpx.md +0 -66
  348. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/why.md +0 -39
  349. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/index.md +0 -12
  350. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/team.md +0 -35
  351. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/templates/generator/README.md +0 -35
  352. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/templates/monorepo/README.md +0 -29
  353. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vue/README.md +0 -58
  354. package/skills/void/docs/node_modules/void/node_modules/arktype/README.md +0 -165
  355. package/skills/void/docs/node_modules/void/node_modules/better-auth/LICENSE.md +0 -20
  356. package/skills/void/docs/node_modules/void/node_modules/better-auth/README.md +0 -32
  357. package/skills/void/docs/node_modules/void/node_modules/better-sqlite3/README.md +0 -99
  358. package/skills/void/docs/node_modules/void/node_modules/blake3-jit/README.md +0 -108
  359. package/skills/void/docs/node_modules/void/node_modules/drizzle-arktype/README.md +0 -51
  360. package/skills/void/docs/node_modules/void/node_modules/drizzle-kit/README.md +0 -79
  361. package/skills/void/docs/node_modules/void/node_modules/drizzle-orm/README.md +0 -44
  362. package/skills/void/docs/node_modules/void/node_modules/drizzle-valibot/README.md +0 -51
  363. package/skills/void/docs/node_modules/void/node_modules/drizzle-zod/README.md +0 -65
  364. package/skills/void/docs/node_modules/void/node_modules/es-module-lexer/README.md +0 -403
  365. package/skills/void/docs/node_modules/void/node_modules/estree-walker/README.md +0 -48
  366. package/skills/void/docs/node_modules/void/node_modules/hono/README.md +0 -85
  367. package/skills/void/docs/node_modules/void/node_modules/ignore/README.md +0 -452
  368. package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/CHANGELOG.md +0 -76
  369. package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/LICENSE.md +0 -21
  370. package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/README.md +0 -364
  371. package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/SECURITY.md +0 -41
  372. package/skills/void/docs/node_modules/void/node_modules/magic-string/README.md +0 -325
  373. package/skills/void/docs/node_modules/void/node_modules/ofetch/README.md +0 -398
  374. package/skills/void/docs/node_modules/void/node_modules/pathslash/README.md +0 -64
  375. package/skills/void/docs/node_modules/void/node_modules/pg/README.md +0 -96
  376. package/skills/void/docs/node_modules/void/node_modules/pglite-server/README.md +0 -135
  377. package/skills/void/docs/node_modules/void/node_modules/picocolors/README.md +0 -21
  378. package/skills/void/docs/node_modules/void/node_modules/proper-lockfile/CHANGELOG.md +0 -108
  379. package/skills/void/docs/node_modules/void/node_modules/proper-lockfile/README.md +0 -183
  380. package/skills/void/docs/node_modules/void/node_modules/tinyglobby/README.md +0 -25
  381. package/skills/void/docs/node_modules/void/node_modules/valibot/LICENSE.md +0 -9
  382. package/skills/void/docs/node_modules/void/node_modules/valibot/README.md +0 -94
  383. package/skills/void/docs/node_modules/void/node_modules/vite-plus/AGENTS.md +0 -16
  384. package/skills/void/docs/node_modules/void/node_modules/vite-plus/README.md +0 -220
  385. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/build.md +0 -21
  386. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/check.md +0 -35
  387. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/create.md +0 -70
  388. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/fmt.md +0 -20
  389. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/index.md +0 -35
  390. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/lint.md +0 -26
  391. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/pack.md +0 -17
  392. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/run.md +0 -364
  393. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/staged.md +0 -15
  394. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/test.md +0 -18
  395. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/automatic-data-tracking.md +0 -145
  396. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/build.md +0 -40
  397. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/cache.md +0 -107
  398. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/check.md +0 -60
  399. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/ci.md +0 -62
  400. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/commit-hooks.md +0 -60
  401. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/create.md +0 -341
  402. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/dev.md +0 -24
  403. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/docker.md +0 -175
  404. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/env.md +0 -167
  405. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/fmt.md +0 -41
  406. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/github-actions-cache.md +0 -165
  407. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/ide-integration.md +0 -101
  408. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/implode.md +0 -23
  409. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/index.md +0 -134
  410. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/install.md +0 -199
  411. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/lint.md +0 -50
  412. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/migrate-rules.md +0 -347
  413. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/migrate.md +0 -197
  414. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/monorepo.md +0 -176
  415. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/pack.md +0 -69
  416. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/run.md +0 -356
  417. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/test.md +0 -35
  418. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/troubleshooting.md +0 -108
  419. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/upgrade.md +0 -101
  420. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/vpx.md +0 -66
  421. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/why.md +0 -39
  422. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/index.md +0 -12
  423. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/team.md +0 -35
  424. package/skills/void/docs/node_modules/void/node_modules/vite-plus/templates/generator/README.md +0 -35
  425. package/skills/void/docs/node_modules/void/node_modules/vite-plus/templates/monorepo/README.md +0 -29
  426. package/skills/void/docs/node_modules/void/node_modules/wrangler/README.md +0 -63
  427. package/skills/void/docs/node_modules/void/node_modules/zod/README.md +0 -191
  428. package/skills/void/docs/node_modules/void/skills/migrate-vite-cloudflare-to-void/SKILL.md +0 -175
  429. package/skills/void/docs/node_modules/void/skills/void/SKILL.md +0 -76
  430. package/skills/void/docs/node_modules/void/skills/void/command/void.md +0 -7
  431. package/skills/void/docs/node_modules/void/test/e2e/README.md +0 -85
@@ -0,0 +1,54 @@
1
+ import { defineDatabaseProvider } from "./database-provider.mjs";
2
+ //#region src/database-providers/neon.ts
3
+ function getConnectionString(payload) {
4
+ if (!payload || typeof payload !== "object") return;
5
+ const record = payload;
6
+ const direct = record.connection_uri ?? record.connectionString;
7
+ if (typeof direct === "string") return direct;
8
+ if (Array.isArray(record.connection_uris)) for (const item of record.connection_uris) {
9
+ const result = getConnectionString(item);
10
+ if (result) return result;
11
+ }
12
+ }
13
+ function createNeonDatabaseProvider(options = {}) {
14
+ const apiKey = options.apiKey ?? process.env.NEON_API_KEY;
15
+ const apiBaseUrl = options.apiBaseUrl ?? "https://console.neon.tech/api/v2";
16
+ const fetchImpl = options.fetch ?? globalThis.fetch;
17
+ return defineDatabaseProvider({
18
+ id: "neon",
19
+ label: "Neon",
20
+ dialects: ["postgresql"],
21
+ async provision(input) {
22
+ if (!apiKey) throw new Error("NEON_API_KEY is required to provision a Neon database.");
23
+ if (input.dialect !== "postgresql") throw new Error("Neon provisions PostgreSQL databases only.");
24
+ const response = await fetchImpl(`${apiBaseUrl}/projects`, {
25
+ method: "POST",
26
+ headers: {
27
+ Authorization: `Bearer ${apiKey}`,
28
+ "Content-Type": "application/json"
29
+ },
30
+ body: JSON.stringify({ project: {
31
+ name: input.name,
32
+ ...input.region ? { region_id: input.region } : {}
33
+ } }),
34
+ signal: input.signal
35
+ });
36
+ const payload = await response.json().catch(() => void 0);
37
+ if (!response.ok) {
38
+ const message = typeof payload?.message === "string" ? payload.message : `${response.status} ${response.statusText}`.trim();
39
+ throw new Error(`Neon provisioning failed: ${message}`);
40
+ }
41
+ const connectionString = getConnectionString(payload);
42
+ if (!connectionString) throw new Error("Neon created the project but did not return a connection string.");
43
+ const project = payload?.project;
44
+ const projectId = typeof project?.id === "string" ? project.id : void 0;
45
+ return {
46
+ connectionString,
47
+ projectId,
48
+ dashboardUrl: projectId ? `https://console.neon.tech/app/projects/${projectId}` : void 0
49
+ };
50
+ }
51
+ });
52
+ }
53
+ //#endregion
54
+ export { createNeonDatabaseProvider };
@@ -1,10 +1,10 @@
1
- import { a as join } from "./dist-DaKKDf8D.mjs";
2
- import { c as loadVoidAuthConfig, s as findVoidAuthConfig } from "./scan-DYXkrasO.mjs";
3
- import { f as readConfig } from "./config-BkTvs43g.mjs";
4
- import { a as resolveVoidAuthMigrationSchema } from "./route-types-COI2DsZv.mjs";
5
- import { n as applySqliteAuthMigrations, t as applyPgAuthMigrations } from "./auth-migrations-BTZ-ATvQ.mjs";
6
- import { getMiniflareDatabasePath } from "./runner-kapo9aPs.mjs";
7
- import { loadEnv } from "vite";
1
+ import { o as join } from "./dist-BrsS7cai.mjs";
2
+ import { c as loadVoidAuthConfig, s as findVoidAuthConfig } from "./scan-BMH4rzlv.mjs";
3
+ import { f as readConfig } from "./config-BQFq7QvD.mjs";
4
+ import { r as getMiniflareDatabasePath } from "./local-d1-BE8KBbMy.mjs";
5
+ import { a as resolveVoidAuthMigrationSchema } from "./route-types-Da-DpyUp.mjs";
6
+ import { a as loadLocalEnv } from "./env-D4Emu-M_.mjs";
7
+ import { n as applyPgAuthMigrations, r as applySqliteAuthMigrations, t as applyMySqlAuthMigrations } from "./auth-migrations-9vif1uj8.mjs";
8
8
  //#region src/auth/node.ts
9
9
  async function runLocalVoidAuthMigrations(root, dialect, persistRoot = join(root, ".void"), databaseId = "local", configPath = findVoidAuthConfig(root)) {
10
10
  const authConfig = await loadVoidAuthConfig(configPath);
@@ -13,7 +13,10 @@ async function runLocalVoidAuthMigrations(root, dialect, persistRoot = join(root
13
13
  providers: readConfig(root).auth?.providers ?? null,
14
14
  userConfig: authConfig
15
15
  };
16
- const env = loadEnv("development", root, "");
16
+ const env = {
17
+ ...loadLocalEnv(root),
18
+ ...process.env
19
+ };
17
20
  const migrationSchema = resolveVoidAuthMigrationSchema(runtime, env);
18
21
  if (dialect === "sqlite") {
19
22
  const { DatabaseSync } = await import("node:sqlite");
@@ -34,6 +37,24 @@ async function runLocalVoidAuthMigrations(root, dialect, persistRoot = join(root
34
37
  }
35
38
  const connectionString = typeof env.DATABASE_URL === "string" && env.DATABASE_URL.length > 0 ? env.DATABASE_URL : void 0;
36
39
  if (!connectionString) return;
40
+ if (dialect === "mysql") {
41
+ const { createConnection } = await import("mysql2/promise");
42
+ const connection = await createConnection(connectionString);
43
+ try {
44
+ await applyMySqlAuthMigrations({
45
+ async all(sql, params) {
46
+ const [rows] = await connection.query(sql, params);
47
+ return rows;
48
+ },
49
+ async run(sql, params) {
50
+ await connection.query(sql, params);
51
+ }
52
+ }, migrationSchema);
53
+ } finally {
54
+ await connection.end();
55
+ }
56
+ return;
57
+ }
37
58
  const { Client } = await import("pg");
38
59
  const client = new Client({ connectionString });
39
60
  await client.connect();
@@ -0,0 +1,348 @@
1
+ import { G as normalizePlatformApiUrl, K as platformCredentialAccount, V as getActivePlatformConnection, W as listPlatformConnections, at as readKeyringPassword, it as deleteKeyringPassword, ot as writeKeyringPassword } from "./output-tFQLLj26.mjs";
2
+ import { n as OperatorClient, r as OperatorClientError } from "./cli/cli.mjs";
3
+ import { createHash } from "node:crypto";
4
+ import { createInterface } from "node:readline/promises";
5
+ import { setTimeout } from "node:timers/promises";
6
+ /** Operator authority never comes from repository-controlled metadata. */
7
+ function resolveOperatorOrigin(connection = "") {
8
+ if (connection) {
9
+ let normalized = null;
10
+ try {
11
+ normalized = normalizePlatformApiUrl(connection);
12
+ } catch {}
13
+ const matches = listPlatformConnections().filter((entry) => entry.id === connection || entry.installationId === connection || entry.apiUrl === normalized);
14
+ if (matches.length !== 1) throw new OperatorClientError("Select a registered platform connection ID or URL. Run `void connect <url> --no-login` to register it first.", "invalid_connection");
15
+ return matches[0].apiUrl;
16
+ }
17
+ if (process.env.VOID_API_URL) return normalizePlatformApiUrl(process.env.VOID_API_URL);
18
+ if (process.env.VOID_OPERATOR_TOKEN) throw new OperatorClientError("VOID_OPERATOR_TOKEN requires an explicit --connection or VOID_API_URL to select its recipient.", "explicit_origin_required");
19
+ const active = getActivePlatformConnection();
20
+ if (!active) throw new OperatorClientError("No default platform connection. Run `void connect <url>` or specify --connection.", "connection_required");
21
+ return active.apiUrl;
22
+ }
23
+ function readOperatorToken(origin) {
24
+ const token = process.env.VOID_OPERATOR_TOKEN || readKeyringPassword("dev.void.cli.operator", platformCredentialAccount(origin));
25
+ if (!token) throw new OperatorClientError("No operator session. Run `void platform auth login` or set VOID_OPERATOR_TOKEN with an explicit origin.", "authentication_required");
26
+ return token;
27
+ }
28
+ function saveOperatorToken(origin, token) {
29
+ if (!writeKeyringPassword("dev.void.cli.operator", platformCredentialAccount(origin), token)) throw new OperatorClientError("The system keychain is unavailable. Use `void platform auth token --token-stdin` with a full API session to obtain a token for VOID_OPERATOR_TOKEN; plaintext credential storage is disabled.", "keychain_unavailable");
30
+ }
31
+ function removeOperatorToken(origin) {
32
+ const account = platformCredentialAccount(origin);
33
+ if (readKeyringPassword("dev.void.cli.operator", account) && !deleteKeyringPassword("dev.void.cli.operator", account)) throw new OperatorClientError("The operator session was revoked, but its local keychain entry could not be removed.", "keychain_unavailable");
34
+ }
35
+ async function readOperatorApiTokenStdin() {
36
+ if (process.stdin.isTTY) throw new OperatorClientError("--token-stdin requires an API session token piped on standard input.", "invalid_token_input");
37
+ let input = "";
38
+ for await (const chunk of process.stdin) {
39
+ input += String(chunk);
40
+ if (input.length > 32768) throw new OperatorClientError("API session token input is too large.", "invalid_token_input");
41
+ }
42
+ const token = input.trim();
43
+ if (!token || token.length > 32768 || /\s/.test(token)) throw new OperatorClientError("Standard input must contain one API session token.", "invalid_token_input");
44
+ return token;
45
+ }
46
+ async function exchangeOperatorSession(origin, apiToken) {
47
+ const session = await new OperatorClient(origin, apiToken).request("/session", {
48
+ method: "POST",
49
+ body: {}
50
+ });
51
+ if (typeof session.token !== "string" || !session.token || session.apiVersion !== 1 || typeof session.expiresAt !== "string") throw new OperatorClientError("Operator API returned an invalid session.", "invalid_response");
52
+ return session;
53
+ }
54
+ //#endregion
55
+ //#region src/cli/operator-cmd.ts
56
+ const MAX_RUNTIME_FOLLOW_ROWS = 1e4;
57
+ function printable(value) {
58
+ if (value === null || value === void 0) return "—";
59
+ if (typeof value === "string") return value.replace(/[\u0000-\u001f\u007f]/g, " ");
60
+ if (typeof value === "object") return JSON.stringify(value);
61
+ return String(value);
62
+ }
63
+ function table(rows, indent) {
64
+ if (!rows.length) return [`${indent}(none)`];
65
+ if (!rows.every((row) => row && typeof row === "object" && !Array.isArray(row))) return rows.map((row) => `${indent}${printable(row)}`);
66
+ const records = rows;
67
+ const keys = [...new Set(records.flatMap((row) => Object.keys(row)))].filter((key) => records.some((row) => row[key] !== null && typeof row[key] !== "object"));
68
+ const preferred = [
69
+ "id",
70
+ "name",
71
+ "login",
72
+ "email",
73
+ "slug",
74
+ "status",
75
+ "plan",
76
+ "action",
77
+ "target",
78
+ "created_at",
79
+ "version"
80
+ ];
81
+ const columns = [...preferred.filter((key) => keys.includes(key)), ...keys.filter((key) => !preferred.includes(key))].slice(0, 7);
82
+ if (!columns.length) return records.flatMap((row) => humanLines(row, indent));
83
+ const widths = columns.map((key) => Math.min(64, Math.max(key.length, ...records.map((row) => printable(row[key]).length))));
84
+ const rowText = (values) => indent + values.map((value, index) => {
85
+ const width = widths[index];
86
+ return (value.length > width ? `${value.slice(0, width - 1)}…` : value).padEnd(width);
87
+ }).join(" ").trimEnd();
88
+ return [rowText(columns.map((key) => key.toUpperCase())), ...records.map((row) => rowText(columns.map((key) => printable(row[key]))))];
89
+ }
90
+ function eventLines(events, indent) {
91
+ if (!events.length) return [`${indent}(none)`];
92
+ return events.flatMap((event, index) => [`${indent}${index + 1}.`, ...humanLines(event, `${indent} `)]);
93
+ }
94
+ function humanLines(value, indent = "") {
95
+ if (Array.isArray(value)) return table(value, indent);
96
+ if (!value || typeof value !== "object") return [`${indent}${printable(value)}`];
97
+ return Object.entries(value).flatMap(([key, item]) => {
98
+ const label = key.replaceAll("_", " ").replace(/([a-z])([A-Z])/g, "$1 $2");
99
+ if (Array.isArray(item)) return [`${indent}${label}:`, ...key === "events" ? eventLines(item, `${indent} `) : table(item, `${indent} `)];
100
+ if (item && typeof item === "object") return [`${indent}${label}:`, ...humanLines(item, `${indent} `)];
101
+ return [`${indent}${label}: ${printable(item)}`];
102
+ });
103
+ }
104
+ function output(value, json) {
105
+ console.log(json ? JSON.stringify(value) : humanLines(value).join("\n"));
106
+ }
107
+ function outputLogs(result, json) {
108
+ if (json) {
109
+ output(result, true);
110
+ return;
111
+ }
112
+ if (Array.isArray(result.lines)) {
113
+ for (const entry of result.lines) if (entry && typeof entry === "object") {
114
+ const line = entry;
115
+ console.log(`${line.ts ? `[${printable(line.ts)}] ` : ""}${printable(line.line ?? line.text ?? entry)}`);
116
+ } else console.log(printable(entry));
117
+ if (result.external) console.log(`External build logs: ${printable(result.external)}`);
118
+ if (result.terminal) console.log(`Build ${printable(result.status ?? "finished")}.`);
119
+ } else if (Array.isArray(result.data)) {
120
+ for (const entry of result.data) {
121
+ if (!entry || typeof entry !== "object") {
122
+ console.log(printable(entry));
123
+ continue;
124
+ }
125
+ const row = entry;
126
+ console.log(`${printable(row.timestamp ?? row.ts)} ${printable(row.method)} ${printable(row.url)} ${printable(row.status ?? row.statusCode ?? row.outcome)}`);
127
+ if (Array.isArray(row.logs)) for (const log of row.logs) if (log && typeof log === "object") {
128
+ const record = log;
129
+ console.log(` ${record.level ? `[${printable(record.level)}] ` : ""}${printable(record.message ?? log)}`);
130
+ } else console.log(` ${printable(log)}`);
131
+ if (Array.isArray(row.exceptions)) for (const exception of row.exceptions) if (exception && typeof exception === "object") {
132
+ const record = exception;
133
+ const name = record.name ? `${printable(record.name)}: ` : "";
134
+ console.log(` ${name}${printable(record.message ?? exception)}`);
135
+ } else console.log(` ${printable(exception)}`);
136
+ }
137
+ if (result.nextCursor) console.log(`Next cursor: ${printable(result.nextCursor)}`);
138
+ } else output(result, false);
139
+ }
140
+ function runtimeLogFingerprint(row) {
141
+ const ingestedAt = row && typeof row === "object" && !Array.isArray(row) ? row.ingestedAt : void 0;
142
+ if (!row || typeof row !== "object" || Array.isArray(row) || typeof ingestedAt !== "number" || !Number.isSafeInteger(ingestedAt)) throw new OperatorClientError("Runtime log response has an invalid ingestion cursor.", "invalid_response");
143
+ return createHash("sha256").update(JSON.stringify(row)).digest("base64url");
144
+ }
145
+ async function confirmOperatorMutation(origin, preview, args) {
146
+ if (args.plan) {
147
+ output({
148
+ origin,
149
+ ...preview
150
+ }, args.json);
151
+ return false;
152
+ }
153
+ if (!args.json || !args.yes) process.stderr.write(`${JSON.stringify({
154
+ origin,
155
+ ...preview
156
+ }, null, 2)}\n`);
157
+ if (args.yes) return true;
158
+ if (!process.stdin.isTTY || !process.stderr.isTTY) throw new OperatorClientError("Mutations in non-interactive mode require --yes or --plan.", "confirmation_required");
159
+ const prompt = createInterface({
160
+ input: process.stdin,
161
+ output: process.stderr
162
+ });
163
+ try {
164
+ const answer = await prompt.question(`Apply this change to ${origin}? [y/N] `);
165
+ if (!/^y(es)?$/i.test(answer.trim())) throw new OperatorClientError("Cancelled.", "cancelled");
166
+ return true;
167
+ } finally {
168
+ prompt.close();
169
+ }
170
+ }
171
+ async function runAuth(origin, args) {
172
+ if (args.action === "login" || args.action === "token" && args.tokenStdin) {
173
+ if (!args.tokenStdin && !process.stdin.isTTY) throw new OperatorClientError("Browser login requires an interactive terminal. Use --token-stdin to exchange an API session.", "interactive_login_required");
174
+ const session = await exchangeOperatorSession(origin, args.tokenStdin ? await readOperatorApiTokenStdin() : await import("./auth-W9WII-mN.mjs").then((n) => n.t).then(({ runPlatformLogin }) => runPlatformLogin(origin, args.provider, (url) => process.stderr.write(`Sign in at ${url}\n`))));
175
+ const { token, ...identity } = session;
176
+ if (args.action === "token") {
177
+ if (args.json) output({
178
+ origin,
179
+ ...session
180
+ }, true);
181
+ else console.log(token);
182
+ } else {
183
+ saveOperatorToken(origin, token);
184
+ output({
185
+ origin,
186
+ ...identity
187
+ }, args.json);
188
+ }
189
+ return;
190
+ }
191
+ const token = readOperatorToken(origin);
192
+ const client = new OperatorClient(origin, token);
193
+ if (args.action === "logout") {
194
+ try {
195
+ await client.request("/session/logout", {
196
+ method: "POST",
197
+ body: {}
198
+ });
199
+ } catch (error) {
200
+ if (!(error instanceof OperatorClientError) || error.status !== 401) throw error;
201
+ }
202
+ removeOperatorToken(origin);
203
+ output({
204
+ origin,
205
+ ok: true,
206
+ ...process.env.VOID_OPERATOR_TOKEN ? { message: "Operator session revoked. Unset VOID_OPERATOR_TOKEN in your shell." } : {}
207
+ }, args.json);
208
+ } else {
209
+ const session = await client.request("/session");
210
+ if (args.action === "token") {
211
+ if (args.json) output({
212
+ origin,
213
+ token,
214
+ ...session
215
+ }, true);
216
+ else console.log(token);
217
+ } else output({
218
+ origin,
219
+ ...session
220
+ }, args.json);
221
+ }
222
+ }
223
+ /** Poll cursors until interrupted (runtime) or terminal (build), without mutation retries. */
224
+ async function followOperatorLogs(client, args, signal, pollIntervalMs = 2e3) {
225
+ const controller = new AbortController();
226
+ const stop = () => controller.abort();
227
+ process.once("SIGINT", stop);
228
+ const combined = signal ? AbortSignal.any([signal, controller.signal]) : controller.signal;
229
+ const query = { ...args.query };
230
+ let terminalBuildSince = null;
231
+ let legacyQuietSince = null;
232
+ let legacyQuietSeq = null;
233
+ let previousRuntimeRows = /* @__PURE__ */ new Map();
234
+ let currentRuntimeRows = /* @__PURE__ */ new Map();
235
+ let currentRuntimeRowCount = 0;
236
+ try {
237
+ while (!combined.aborted) {
238
+ const result = await client.request(args.path, {
239
+ query,
240
+ signal: combined
241
+ });
242
+ let visibleResult = result;
243
+ if (args.group === "deployment") {
244
+ if (!Array.isArray(result.data)) throw new OperatorClientError("Runtime log response is missing its data rows.", "invalid_response");
245
+ const data = result.data.filter((row) => {
246
+ currentRuntimeRowCount++;
247
+ if (currentRuntimeRowCount > MAX_RUNTIME_FOLLOW_ROWS) throw new OperatorClientError(`Runtime log follow window exceeded ${MAX_RUNTIME_FOLLOW_ROWS} rows. Retry without --follow and query a narrower history.`, "invalid_response");
248
+ const fingerprint = runtimeLogFingerprint(row);
249
+ const occurrence = (currentRuntimeRows.get(fingerprint) ?? 0) + 1;
250
+ currentRuntimeRows.set(fingerprint, occurrence);
251
+ return occurrence > (previousRuntimeRows.get(fingerprint) ?? 0);
252
+ });
253
+ visibleResult = {
254
+ ...result,
255
+ data
256
+ };
257
+ }
258
+ outputLogs(visibleResult, args.json);
259
+ if (args.group === "build") {
260
+ if (typeof result.lastSeq !== "number" || !Number.isSafeInteger(result.lastSeq) || result.lastSeq < Number(query.since ?? 0)) throw new OperatorClientError("Build log response has an invalid cursor.", "invalid_response");
261
+ const previousSeq = Number(query.since ?? 0);
262
+ query.since = String(result.lastSeq);
263
+ if (result.hasMore === true) {
264
+ if (result.lastSeq === previousSeq) throw new OperatorClientError("Build log pagination did not advance.", "invalid_response");
265
+ continue;
266
+ }
267
+ if (result.logsComplete !== void 0 && result.logsComplete !== null && typeof result.logsComplete !== "boolean") throw new OperatorClientError("Build log response has an invalid completion state.", "invalid_response");
268
+ if (result.terminal === true) {
269
+ if (result.logsComplete === true) return;
270
+ const now = Date.now();
271
+ terminalBuildSince ??= now;
272
+ if (now - terminalBuildSince >= 12e4) throw new OperatorClientError("Build finished, but its log producer did not confirm completion. Retry the command to recover the final log tail.", "invalid_response");
273
+ if (result.logsComplete === null || result.logsComplete === void 0) {
274
+ if (legacyQuietSeq !== result.lastSeq) {
275
+ legacyQuietSeq = result.lastSeq;
276
+ legacyQuietSince = now;
277
+ } else {
278
+ legacyQuietSince ??= now;
279
+ if (now - legacyQuietSince >= 3e4) return;
280
+ }
281
+ }
282
+ } else {
283
+ terminalBuildSince = null;
284
+ legacyQuietSince = null;
285
+ legacyQuietSeq = null;
286
+ }
287
+ } else {
288
+ if (typeof result.nextCursor === "string" && result.nextCursor) {
289
+ if (result.nextCursor === query.cursor) throw new OperatorClientError("Runtime log pagination did not advance.", "invalid_response");
290
+ query.cursor = result.nextCursor;
291
+ continue;
292
+ }
293
+ delete query.cursor;
294
+ if (typeof result.watermark !== "string" && typeof result.watermark !== "number") throw new OperatorClientError("Runtime log response is missing its follow watermark.", "invalid_response");
295
+ previousRuntimeRows = currentRuntimeRows;
296
+ currentRuntimeRows = /* @__PURE__ */ new Map();
297
+ currentRuntimeRowCount = 0;
298
+ query.after = String(result.watermark);
299
+ delete query.since;
300
+ }
301
+ await setTimeout(pollIntervalMs, void 0, { signal: combined });
302
+ }
303
+ } catch (error) {
304
+ if (!combined.aborted) throw error;
305
+ } finally {
306
+ process.removeListener("SIGINT", stop);
307
+ }
308
+ }
309
+ async function runOperatorCommand(args) {
310
+ if (!args.action) {
311
+ const { printHelpPage } = await import("./cli/cli.mjs").then((n) => n.t);
312
+ printHelpPage(["platform", args.group]);
313
+ return;
314
+ }
315
+ const origin = resolveOperatorOrigin(args.connection);
316
+ if (args.group === "auth") return runAuth(origin, args);
317
+ const client = new OperatorClient(origin, readOperatorToken(origin));
318
+ if (args.method === "POST") {
319
+ if (!args.plan && !args.yes && (!process.stdin.isTTY || !process.stderr.isTTY)) throw new OperatorClientError("Mutations in non-interactive mode require --yes or --plan.", "confirmation_required");
320
+ const preview = await client.request(args.path, {
321
+ method: "POST",
322
+ body: {
323
+ ...args.body,
324
+ dryRun: true
325
+ },
326
+ timeoutMs: args.timeoutMs
327
+ });
328
+ if (preview.dryRun !== true || typeof preview.action !== "string" || !Object.hasOwn(preview, "target")) throw new OperatorClientError("The server did not return a valid mutation preview. No change was requested.", "invalid_preview");
329
+ if (!await confirmOperatorMutation(origin, preview, args)) return;
330
+ const body = {
331
+ ...args.body,
332
+ ...args.group === "worker" && args.action === "rollback-all" ? { versions: preview.versions } : {}
333
+ };
334
+ output(await client.request(args.path, {
335
+ method: "POST",
336
+ body,
337
+ timeoutMs: args.timeoutMs
338
+ }), args.json);
339
+ } else if (args.follow) await followOperatorLogs(client, args);
340
+ else {
341
+ const result = await client.request(args.path, { query: args.query });
342
+ if (args.action === "logs") outputLogs(result, args.json);
343
+ else output(result, args.json);
344
+ if (result.allOk === false) process.exitCode = 1;
345
+ }
346
+ }
347
+ //#endregion
348
+ export { runOperatorCommand };