void 0.10.13 → 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 (430) 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-qHGgPuWT.mjs → config-BQFq7QvD.mjs} +75 -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-C0i0sYMS.mjs → db-BxoUWL0F.mjs} +600 -115
  31. package/dist/{delete-mh6p-zkQ.mjs → delete-iJOqxBz1.mjs} +9 -6
  32. package/dist/{deploy-jBJT1fUT.mjs → deploy-CcDoeBIf.mjs} +3249 -1990
  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-BzXf3Jh2.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-ChAADPQu.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 +1010 -293
  60. package/dist/{init-7JCAcKNQ.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-pRg81HqV.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-BvvgAz-3.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-CPx2ZxsH.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-z1jtHEi_.mjs → route-types-Da-DpyUp.mjs} +77 -25
  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-ChWt4pX1.mjs → scan-BMH4rzlv.mjs} +42 -19
  180. package/dist/{scan-NU4xKGci.mjs → scan-CpK-57ug.mjs} +5 -4
  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 +22 -3
  194. package/skills/void/SKILL.md +59 -2
  195. package/skills/void/docs/guide/ai.md +32 -14
  196. package/skills/void/docs/guide/app-types.md +6 -6
  197. package/skills/void/docs/guide/auth.md +14 -16
  198. package/skills/void/docs/guide/database/d1.md +6 -0
  199. package/skills/void/docs/guide/database/mysql.md +60 -0
  200. package/skills/void/docs/guide/database/postgresql.md +14 -9
  201. package/skills/void/docs/guide/database.md +39 -26
  202. package/skills/void/docs/guide/deployment.md +99 -25
  203. package/skills/void/docs/guide/durable-state.md +140 -0
  204. package/skills/void/docs/guide/edge/headers.md +5 -5
  205. package/skills/void/docs/guide/edge/prerendering.md +2 -0
  206. package/skills/void/docs/guide/edge/revalidation.md +21 -6
  207. package/skills/void/docs/guide/edge/rewrites.md +18 -14
  208. package/skills/void/docs/guide/edge/static-assets.md +12 -10
  209. package/skills/void/docs/guide/email.md +609 -0
  210. package/skills/void/docs/guide/env-migration.md +109 -0
  211. package/skills/void/docs/guide/env-vars.md +70 -248
  212. package/skills/void/docs/guide/index.md +15 -17
  213. package/skills/void/docs/guide/jobs.md +8 -5
  214. package/skills/void/docs/guide/live.md +7 -15
  215. package/skills/void/docs/guide/pages-routing/actions-and-forms.md +8 -4
  216. package/skills/void/docs/guide/pages-routing/islands.md +3 -3
  217. package/skills/void/docs/guide/pages-routing/loaders.md +6 -4
  218. package/skills/void/docs/guide/pages-routing/overview.md +7 -7
  219. package/skills/void/docs/guide/platform-administration.md +212 -0
  220. package/skills/void/docs/guide/platform-development.md +235 -0
  221. package/skills/void/docs/guide/queues.md +10 -10
  222. package/skills/void/docs/guide/quickstart.md +46 -67
  223. package/skills/void/docs/guide/remote-dev.md +8 -6
  224. package/skills/void/docs/guide/sandboxes.md +33 -16
  225. package/skills/void/docs/guide/self-hosted-platform.md +553 -0
  226. package/skills/void/docs/guide/server-routing.md +5 -5
  227. package/skills/void/docs/guide/sse.md +4 -4
  228. package/skills/void/docs/guide/ssg.md +5 -3
  229. package/skills/void/docs/guide/storage.md +2 -2
  230. package/skills/void/docs/guide/websockets.md +15 -7
  231. package/skills/void/docs/index.md +3 -3
  232. package/skills/void/docs/integrations/agents.md +6 -64
  233. package/skills/void/docs/integrations/cloudflare.md +165 -146
  234. package/skills/void/docs/integrations/frameworks/analog.md +4 -4
  235. package/skills/void/docs/integrations/frameworks/astro.md +5 -5
  236. package/skills/void/docs/integrations/frameworks/nuxt.md +5 -5
  237. package/skills/void/docs/integrations/frameworks/overview.md +3 -3
  238. package/skills/void/docs/integrations/frameworks/react-router.md +3 -3
  239. package/skills/void/docs/integrations/frameworks/sveltekit.md +3 -3
  240. package/skills/void/docs/integrations/frameworks/tanstack-start.md +2 -2
  241. package/skills/void/docs/integrations/nodejs-bun-deno.md +11 -4
  242. package/skills/void/docs/reference/api.md +42 -6
  243. package/skills/void/docs/reference/cli.md +614 -160
  244. package/skills/void/docs/reference/config.md +67 -27
  245. package/skills/void/docs/reference/resource-inference.md +13 -9
  246. package/skills/void/docs/reference/structure.md +9 -11
  247. package/AGENT_PROMPT.md +0 -19
  248. package/dist/cf-access-Bqw81xAf.mjs +0 -22
  249. package/dist/env-CZy5MorI.mjs +0 -299
  250. package/dist/env-helpers-z4stu8uc.d.mts +0 -52
  251. package/dist/env-mask-Dd47NbR6.mjs +0 -90
  252. package/dist/env-public-BfiLcMBk.d.mts +0 -140
  253. package/dist/link-CdGHSIy-.mjs +0 -45
  254. package/dist/mcp-DoM3_nhd.mjs +0 -377
  255. package/dist/project-paths-GpziKeQQ.d.mts +0 -25
  256. package/dist/providers-BNKRacMr.d.mts +0 -7
  257. package/dist/proxy-D-3_D-Gl.mjs +0 -5
  258. package/dist/rollback-CkvTFXx5.mjs +0 -90
  259. package/dist/runtime/isr-cache.d.mts +0 -207
  260. package/dist/runtime/isr-cache.mjs +0 -523
  261. package/dist/types-lLjNE9Qp.d.mts +0 -51
  262. package/getting-started-prompt.txt +0 -28
  263. package/skills/void/command/void.md +0 -7
  264. package/skills/void/docs/integrations/auth-providers.md +0 -0
  265. package/skills/void/docs/integrations/payment-processors.md +0 -0
  266. package/skills/void/docs/node_modules/@iconify/vue/README.md +0 -408
  267. package/skills/void/docs/node_modules/@iconify/vue/offline/readme.md +0 -5
  268. package/skills/void/docs/node_modules/@voidzero-dev/vitepress-theme/README.md +0 -103
  269. package/skills/void/docs/node_modules/oxc-minify/README.md +0 -78
  270. package/skills/void/docs/node_modules/reka-ui/README.md +0 -80
  271. package/skills/void/docs/node_modules/vitepress/README.md +0 -28
  272. package/skills/void/docs/node_modules/vitepress/template/api-examples.md +0 -49
  273. package/skills/void/docs/node_modules/vitepress/template/index.md +0 -28
  274. package/skills/void/docs/node_modules/vitepress/template/markdown-examples.md +0 -85
  275. package/skills/void/docs/node_modules/vitepress-plugin-group-icons/README.md +0 -101
  276. package/skills/void/docs/node_modules/void/AGENT_PROMPT.md +0 -19
  277. package/skills/void/docs/node_modules/void/CLAUDE.md +0 -221
  278. package/skills/void/docs/node_modules/void/README.md +0 -90
  279. package/skills/void/docs/node_modules/void/node_modules/@clack/prompts/CHANGELOG.md +0 -685
  280. package/skills/void/docs/node_modules/void/node_modules/@clack/prompts/README.md +0 -396
  281. package/skills/void/docs/node_modules/void/node_modules/@cloudflare/sandbox/README.md +0 -219
  282. package/skills/void/docs/node_modules/void/node_modules/@cloudflare/vite-plugin/README.md +0 -37
  283. package/skills/void/docs/node_modules/void/node_modules/@cloudflare/workers-types/README.md +0 -135
  284. package/skills/void/docs/node_modules/void/node_modules/@electric-sql/pglite/README.md +0 -189
  285. package/skills/void/docs/node_modules/void/node_modules/@hono/oauth-providers/CHANGELOG.md +0 -143
  286. package/skills/void/docs/node_modules/void/node_modules/@hono/oauth-providers/README.md +0 -1272
  287. package/skills/void/docs/node_modules/void/node_modules/@napi-rs/keyring/README.md +0 -19
  288. package/skills/void/docs/node_modules/void/node_modules/@types/better-sqlite3/README.md +0 -15
  289. package/skills/void/docs/node_modules/void/node_modules/@types/node/README.md +0 -15
  290. package/skills/void/docs/node_modules/void/node_modules/@types/pg/README.md +0 -15
  291. package/skills/void/docs/node_modules/void/node_modules/@types/proper-lockfile/README.md +0 -51
  292. package/skills/void/docs/node_modules/void/node_modules/@typescript/native-preview/README.md +0 -22
  293. package/skills/void/docs/node_modules/void/node_modules/@typescript/native-preview/vendor/vscode-jsonrpc/README.md +0 -69
  294. package/skills/void/docs/node_modules/void/node_modules/@void/md/README.md +0 -153
  295. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/@shikijs/engine-javascript/README.md +0 -9
  296. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/@shikijs/transformers/README.md +0 -9
  297. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/@types/node/README.md +0 -15
  298. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/gray-matter/CHANGELOG.md +0 -24
  299. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/gray-matter/README.md +0 -565
  300. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-exit/README.md +0 -127
  301. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-anchor/README.md +0 -600
  302. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-attrs/README.md +0 -386
  303. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-container/README.md +0 -95
  304. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-emoji/README.md +0 -101
  305. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-footnote/README.md +0 -135
  306. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/pathslash/README.md +0 -64
  307. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/shiki/README.md +0 -15
  308. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/tinyglobby/README.md +0 -25
  309. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/AGENTS.md +0 -16
  310. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/README.md +0 -220
  311. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/build.md +0 -21
  312. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/check.md +0 -35
  313. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/create.md +0 -70
  314. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/fmt.md +0 -20
  315. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/index.md +0 -35
  316. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/lint.md +0 -26
  317. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/pack.md +0 -17
  318. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/run.md +0 -364
  319. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/staged.md +0 -15
  320. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/test.md +0 -18
  321. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/automatic-data-tracking.md +0 -145
  322. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/build.md +0 -40
  323. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/cache.md +0 -107
  324. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/check.md +0 -60
  325. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/ci.md +0 -62
  326. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/commit-hooks.md +0 -60
  327. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/create.md +0 -341
  328. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/dev.md +0 -24
  329. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/docker.md +0 -175
  330. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/env.md +0 -167
  331. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/fmt.md +0 -41
  332. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/github-actions-cache.md +0 -165
  333. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/ide-integration.md +0 -101
  334. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/implode.md +0 -23
  335. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/index.md +0 -134
  336. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/install.md +0 -199
  337. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/lint.md +0 -50
  338. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/migrate-rules.md +0 -347
  339. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/migrate.md +0 -197
  340. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/monorepo.md +0 -176
  341. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/pack.md +0 -69
  342. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/run.md +0 -356
  343. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/test.md +0 -35
  344. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/troubleshooting.md +0 -108
  345. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/upgrade.md +0 -101
  346. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/vpx.md +0 -66
  347. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/why.md +0 -39
  348. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/index.md +0 -12
  349. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/team.md +0 -35
  350. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/templates/generator/README.md +0 -35
  351. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/templates/monorepo/README.md +0 -29
  352. package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vue/README.md +0 -58
  353. package/skills/void/docs/node_modules/void/node_modules/arktype/README.md +0 -165
  354. package/skills/void/docs/node_modules/void/node_modules/better-auth/LICENSE.md +0 -20
  355. package/skills/void/docs/node_modules/void/node_modules/better-auth/README.md +0 -32
  356. package/skills/void/docs/node_modules/void/node_modules/better-sqlite3/README.md +0 -99
  357. package/skills/void/docs/node_modules/void/node_modules/blake3-jit/README.md +0 -108
  358. package/skills/void/docs/node_modules/void/node_modules/drizzle-arktype/README.md +0 -51
  359. package/skills/void/docs/node_modules/void/node_modules/drizzle-kit/README.md +0 -79
  360. package/skills/void/docs/node_modules/void/node_modules/drizzle-orm/README.md +0 -44
  361. package/skills/void/docs/node_modules/void/node_modules/drizzle-valibot/README.md +0 -51
  362. package/skills/void/docs/node_modules/void/node_modules/drizzle-zod/README.md +0 -65
  363. package/skills/void/docs/node_modules/void/node_modules/es-module-lexer/README.md +0 -403
  364. package/skills/void/docs/node_modules/void/node_modules/estree-walker/README.md +0 -48
  365. package/skills/void/docs/node_modules/void/node_modules/hono/README.md +0 -85
  366. package/skills/void/docs/node_modules/void/node_modules/ignore/README.md +0 -452
  367. package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/CHANGELOG.md +0 -76
  368. package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/LICENSE.md +0 -21
  369. package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/README.md +0 -364
  370. package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/SECURITY.md +0 -41
  371. package/skills/void/docs/node_modules/void/node_modules/magic-string/README.md +0 -325
  372. package/skills/void/docs/node_modules/void/node_modules/ofetch/README.md +0 -398
  373. package/skills/void/docs/node_modules/void/node_modules/pathslash/README.md +0 -64
  374. package/skills/void/docs/node_modules/void/node_modules/pg/README.md +0 -96
  375. package/skills/void/docs/node_modules/void/node_modules/pglite-server/README.md +0 -135
  376. package/skills/void/docs/node_modules/void/node_modules/picocolors/README.md +0 -21
  377. package/skills/void/docs/node_modules/void/node_modules/proper-lockfile/CHANGELOG.md +0 -108
  378. package/skills/void/docs/node_modules/void/node_modules/proper-lockfile/README.md +0 -183
  379. package/skills/void/docs/node_modules/void/node_modules/tinyglobby/README.md +0 -25
  380. package/skills/void/docs/node_modules/void/node_modules/valibot/LICENSE.md +0 -9
  381. package/skills/void/docs/node_modules/void/node_modules/valibot/README.md +0 -94
  382. package/skills/void/docs/node_modules/void/node_modules/vite-plus/AGENTS.md +0 -16
  383. package/skills/void/docs/node_modules/void/node_modules/vite-plus/README.md +0 -220
  384. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/build.md +0 -21
  385. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/check.md +0 -35
  386. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/create.md +0 -70
  387. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/fmt.md +0 -20
  388. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/index.md +0 -35
  389. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/lint.md +0 -26
  390. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/pack.md +0 -17
  391. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/run.md +0 -364
  392. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/staged.md +0 -15
  393. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/test.md +0 -18
  394. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/automatic-data-tracking.md +0 -145
  395. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/build.md +0 -40
  396. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/cache.md +0 -107
  397. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/check.md +0 -60
  398. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/ci.md +0 -62
  399. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/commit-hooks.md +0 -60
  400. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/create.md +0 -341
  401. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/dev.md +0 -24
  402. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/docker.md +0 -175
  403. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/env.md +0 -167
  404. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/fmt.md +0 -41
  405. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/github-actions-cache.md +0 -165
  406. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/ide-integration.md +0 -101
  407. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/implode.md +0 -23
  408. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/index.md +0 -134
  409. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/install.md +0 -199
  410. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/lint.md +0 -50
  411. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/migrate-rules.md +0 -347
  412. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/migrate.md +0 -197
  413. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/monorepo.md +0 -176
  414. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/pack.md +0 -69
  415. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/run.md +0 -356
  416. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/test.md +0 -35
  417. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/troubleshooting.md +0 -108
  418. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/upgrade.md +0 -101
  419. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/vpx.md +0 -66
  420. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/why.md +0 -39
  421. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/index.md +0 -12
  422. package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/team.md +0 -35
  423. package/skills/void/docs/node_modules/void/node_modules/vite-plus/templates/generator/README.md +0 -35
  424. package/skills/void/docs/node_modules/void/node_modules/vite-plus/templates/monorepo/README.md +0 -29
  425. package/skills/void/docs/node_modules/void/node_modules/wrangler/README.md +0 -63
  426. package/skills/void/docs/node_modules/void/node_modules/zod/README.md +0 -191
  427. package/skills/void/docs/node_modules/void/skills/migrate-vite-cloudflare-to-void/SKILL.md +0 -175
  428. package/skills/void/docs/node_modules/void/skills/void/SKILL.md +0 -76
  429. package/skills/void/docs/node_modules/void/skills/void/command/void.md +0 -7
  430. 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-ChWt4pX1.mjs";
3
- import { f as readConfig } from "./config-qHGgPuWT.mjs";
4
- import { a as resolveVoidAuthMigrationSchema } from "./route-types-z1jtHEi_.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 };