veryfront 0.1.111 → 0.1.113

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 (322) hide show
  1. package/esm/cli/auth/login.d.ts.map +1 -1
  2. package/esm/cli/auth/login.js +13 -0
  3. package/esm/cli/commands/analyze-chunks/command-help.d.ts.map +1 -1
  4. package/esm/cli/commands/analyze-chunks/command-help.js +1 -0
  5. package/esm/cli/commands/build/command-help.d.ts.map +1 -1
  6. package/esm/cli/commands/build/command-help.js +1 -0
  7. package/esm/cli/commands/build/command.d.ts.map +1 -1
  8. package/esm/cli/commands/build/command.js +47 -2
  9. package/esm/cli/commands/clean/command-help.d.ts.map +1 -1
  10. package/esm/cli/commands/clean/command-help.js +1 -0
  11. package/esm/cli/commands/completions/command-help.d.ts +3 -0
  12. package/esm/cli/commands/completions/command-help.d.ts.map +1 -0
  13. package/esm/cli/commands/completions/command-help.js +13 -0
  14. package/esm/cli/commands/completions/command.d.ts +28 -0
  15. package/esm/cli/commands/completions/command.d.ts.map +1 -0
  16. package/esm/cli/commands/completions/command.js +133 -0
  17. package/esm/cli/commands/completions/handler.d.ts +3 -0
  18. package/esm/cli/commands/completions/handler.d.ts.map +1 -0
  19. package/esm/cli/commands/completions/handler.js +20 -0
  20. package/esm/cli/commands/demo/command-help.d.ts.map +1 -1
  21. package/esm/cli/commands/demo/command-help.js +1 -0
  22. package/esm/cli/commands/deploy/command-help.d.ts.map +1 -1
  23. package/esm/cli/commands/deploy/command-help.js +1 -0
  24. package/esm/cli/commands/deploy/command.d.ts.map +1 -1
  25. package/esm/cli/commands/deploy/command.js +73 -1
  26. package/esm/cli/commands/dev/command-help.d.ts.map +1 -1
  27. package/esm/cli/commands/dev/command-help.js +1 -0
  28. package/esm/cli/commands/doctor/command-help.d.ts.map +1 -1
  29. package/esm/cli/commands/doctor/command-help.js +1 -0
  30. package/esm/cli/commands/files/command-help.d.ts.map +1 -1
  31. package/esm/cli/commands/files/command-help.js +1 -0
  32. package/esm/cli/commands/generate/command-help.d.ts.map +1 -1
  33. package/esm/cli/commands/generate/command-help.js +1 -0
  34. package/esm/cli/commands/init/command-help.d.ts.map +1 -1
  35. package/esm/cli/commands/init/command-help.js +1 -0
  36. package/esm/cli/commands/install/command-help.d.ts.map +1 -1
  37. package/esm/cli/commands/install/command-help.js +2 -0
  38. package/esm/cli/commands/issues/command-help.d.ts.map +1 -1
  39. package/esm/cli/commands/issues/command-help.js +1 -0
  40. package/esm/cli/commands/knowledge/command-help.d.ts.map +1 -1
  41. package/esm/cli/commands/knowledge/command-help.js +1 -0
  42. package/esm/cli/commands/lint/command-help.d.ts +3 -0
  43. package/esm/cli/commands/lint/command-help.d.ts.map +1 -0
  44. package/esm/cli/commands/lint/command-help.js +13 -0
  45. package/esm/cli/commands/lint/command.d.ts +24 -0
  46. package/esm/cli/commands/lint/command.d.ts.map +1 -0
  47. package/esm/cli/commands/lint/command.js +34 -0
  48. package/esm/cli/commands/lint/handler.d.ts +3 -0
  49. package/esm/cli/commands/lint/handler.d.ts.map +1 -0
  50. package/esm/cli/commands/lint/handler.js +33 -0
  51. package/esm/cli/commands/lock/command-help.d.ts.map +1 -1
  52. package/esm/cli/commands/lock/command-help.js +1 -0
  53. package/esm/cli/commands/login/command-help.d.ts.map +1 -1
  54. package/esm/cli/commands/login/command-help.js +1 -0
  55. package/esm/cli/commands/logout/command-help.d.ts.map +1 -1
  56. package/esm/cli/commands/logout/command-help.js +1 -0
  57. package/esm/cli/commands/mcp/command-help.d.ts.map +1 -1
  58. package/esm/cli/commands/mcp/command-help.js +1 -0
  59. package/esm/cli/commands/merge/command-help.d.ts.map +1 -1
  60. package/esm/cli/commands/merge/command-help.js +1 -0
  61. package/esm/cli/commands/pull/command-help.d.ts.map +1 -1
  62. package/esm/cli/commands/pull/command-help.js +1 -0
  63. package/esm/cli/commands/push/command-help.d.ts.map +1 -1
  64. package/esm/cli/commands/push/command-help.js +1 -0
  65. package/esm/cli/commands/routes/command-help.d.ts.map +1 -1
  66. package/esm/cli/commands/routes/command-help.js +1 -0
  67. package/esm/cli/commands/schema/command-help.d.ts +3 -0
  68. package/esm/cli/commands/schema/command-help.d.ts.map +1 -0
  69. package/esm/cli/commands/schema/command-help.js +15 -0
  70. package/esm/cli/commands/schema/command.d.ts +30 -0
  71. package/esm/cli/commands/schema/command.d.ts.map +1 -0
  72. package/esm/cli/commands/schema/command.js +39 -0
  73. package/esm/cli/commands/schema/handler.d.ts +3 -0
  74. package/esm/cli/commands/schema/handler.d.ts.map +1 -0
  75. package/esm/cli/commands/schema/handler.js +25 -0
  76. package/esm/cli/commands/serve/command-help.d.ts.map +1 -1
  77. package/esm/cli/commands/serve/command-help.js +1 -0
  78. package/esm/cli/commands/skills/command-help.d.ts +3 -0
  79. package/esm/cli/commands/skills/command-help.d.ts.map +1 -0
  80. package/esm/cli/commands/skills/command-help.js +21 -0
  81. package/esm/cli/commands/skills/command.d.ts +9 -0
  82. package/esm/cli/commands/skills/command.d.ts.map +1 -0
  83. package/esm/cli/commands/skills/command.js +17 -0
  84. package/esm/cli/commands/skills/create.d.ts +3 -0
  85. package/esm/cli/commands/skills/create.d.ts.map +1 -0
  86. package/esm/cli/commands/skills/create.js +65 -0
  87. package/esm/cli/commands/skills/handler.d.ts +3 -0
  88. package/esm/cli/commands/skills/handler.d.ts.map +1 -0
  89. package/esm/cli/commands/skills/handler.js +82 -0
  90. package/esm/cli/commands/skills/validate.d.ts +3 -0
  91. package/esm/cli/commands/skills/validate.d.ts.map +1 -0
  92. package/esm/cli/commands/skills/validate.js +91 -0
  93. package/esm/cli/commands/start/command-help.d.ts.map +1 -1
  94. package/esm/cli/commands/start/command-help.js +1 -0
  95. package/esm/cli/commands/studio/command-help.d.ts.map +1 -1
  96. package/esm/cli/commands/studio/command-help.js +1 -0
  97. package/esm/cli/commands/styles/command-help.d.ts.map +1 -1
  98. package/esm/cli/commands/styles/command-help.js +1 -0
  99. package/esm/cli/commands/task/command-help.d.ts.map +1 -1
  100. package/esm/cli/commands/task/command-help.js +1 -0
  101. package/esm/cli/commands/test/command-help.d.ts +3 -0
  102. package/esm/cli/commands/test/command-help.d.ts.map +1 -0
  103. package/esm/cli/commands/test/command-help.js +16 -0
  104. package/esm/cli/commands/test/command.d.ts +25 -0
  105. package/esm/cli/commands/test/command.d.ts.map +1 -0
  106. package/esm/cli/commands/test/command.js +68 -0
  107. package/esm/cli/commands/test/handler.d.ts +3 -0
  108. package/esm/cli/commands/test/handler.d.ts.map +1 -0
  109. package/esm/cli/commands/test/handler.js +61 -0
  110. package/esm/cli/commands/up/command-help.d.ts.map +1 -1
  111. package/esm/cli/commands/up/command-help.js +1 -0
  112. package/esm/cli/commands/uploads/command-help.d.ts.map +1 -1
  113. package/esm/cli/commands/uploads/command-help.js +1 -0
  114. package/esm/cli/commands/whoami/command-help.d.ts.map +1 -1
  115. package/esm/cli/commands/whoami/command-help.js +1 -0
  116. package/esm/cli/commands/workflow/command-help.d.ts.map +1 -1
  117. package/esm/cli/commands/workflow/command-help.js +1 -0
  118. package/esm/cli/help/command-definitions.d.ts.map +1 -1
  119. package/esm/cli/help/command-definitions.js +10 -0
  120. package/esm/cli/help/main-help.d.ts.map +1 -1
  121. package/esm/cli/help/main-help.js +38 -5
  122. package/esm/cli/help/types.d.ts +2 -0
  123. package/esm/cli/help/types.d.ts.map +1 -1
  124. package/esm/cli/mcp/advanced-tools.d.ts.map +1 -1
  125. package/esm/cli/mcp/advanced-tools.js +4 -0
  126. package/esm/cli/mcp/server.d.ts.map +1 -1
  127. package/esm/cli/mcp/server.js +68 -0
  128. package/esm/cli/mcp/standalone.d.ts +2 -0
  129. package/esm/cli/mcp/standalone.d.ts.map +1 -1
  130. package/esm/cli/mcp/standalone.js +117 -2
  131. package/esm/cli/mcp/tools/cicd-tools.d.ts +3 -0
  132. package/esm/cli/mcp/tools/cicd-tools.d.ts.map +1 -0
  133. package/esm/cli/mcp/tools/cicd-tools.js +75 -0
  134. package/esm/cli/mcp/tools/introspection-tools.d.ts +3 -0
  135. package/esm/cli/mcp/tools/introspection-tools.d.ts.map +1 -0
  136. package/esm/cli/mcp/tools/introspection-tools.js +38 -0
  137. package/esm/cli/router.d.ts.map +1 -1
  138. package/esm/cli/router.js +35 -1
  139. package/esm/cli/shared/args.d.ts +4 -0
  140. package/esm/cli/shared/args.d.ts.map +1 -1
  141. package/esm/cli/shared/args.js +2 -0
  142. package/esm/cli/shared/interactive.d.ts +13 -0
  143. package/esm/cli/shared/interactive.d.ts.map +1 -0
  144. package/esm/cli/shared/interactive.js +26 -0
  145. package/esm/cli/shared/json-output.d.ts +52 -0
  146. package/esm/cli/shared/json-output.d.ts.map +1 -0
  147. package/esm/cli/shared/json-output.js +58 -0
  148. package/esm/cli/shared/suggest.d.ts +8 -0
  149. package/esm/cli/shared/suggest.d.ts.map +1 -0
  150. package/esm/cli/shared/suggest.js +25 -0
  151. package/esm/cli/skills/core-skills.d.ts +9 -0
  152. package/esm/cli/skills/core-skills.d.ts.map +1 -0
  153. package/esm/cli/skills/core-skills.js +230 -0
  154. package/esm/cli/skills/loader.d.ts +13 -0
  155. package/esm/cli/skills/loader.d.ts.map +1 -0
  156. package/esm/cli/skills/loader.js +87 -0
  157. package/esm/cli/skills/types.d.ts +29 -0
  158. package/esm/cli/skills/types.d.ts.map +1 -0
  159. package/esm/cli/skills/types.js +25 -0
  160. package/esm/cli/utils/index.d.ts.map +1 -1
  161. package/esm/cli/utils/index.js +3 -0
  162. package/esm/deno.d.ts +2 -0
  163. package/esm/deno.js +3 -1
  164. package/esm/src/html/dev-scripts.d.ts.map +1 -1
  165. package/esm/src/html/dev-scripts.js +3 -2
  166. package/esm/src/html/html-injection.d.ts.map +1 -1
  167. package/esm/src/html/html-injection.js +2 -1
  168. package/esm/src/html/html-shell-generator.js +1 -1
  169. package/esm/src/html/hydration-script-builder/dev-client-renderer.d.ts.map +1 -1
  170. package/esm/src/html/hydration-script-builder/dev-client-renderer.js +2 -1
  171. package/esm/src/html/hydration-script-builder/dev-component-manifest.d.ts.map +1 -1
  172. package/esm/src/html/hydration-script-builder/dev-component-manifest.js +2 -1
  173. package/esm/src/html/hydration-script-builder/dev-error-logger.d.ts.map +1 -1
  174. package/esm/src/html/hydration-script-builder/dev-error-logger.js +2 -1
  175. package/esm/src/html/hydration-script-builder/dev-scripts.d.ts.map +1 -1
  176. package/esm/src/html/hydration-script-builder/dev-scripts.js +2 -1
  177. package/esm/src/html/hydration-script-builder/prod-hydration.d.ts.map +1 -1
  178. package/esm/src/html/hydration-script-builder/prod-hydration.js +2 -1
  179. package/esm/src/html/hydration-script-builder/prod-scripts.d.ts.map +1 -1
  180. package/esm/src/html/hydration-script-builder/prod-scripts.js +2 -1
  181. package/esm/src/html/styles-builder/dev-styles.d.ts.map +1 -1
  182. package/esm/src/html/styles-builder/dev-styles.js +2 -1
  183. package/esm/src/modules/react-loader/ssr-module-loader/http-bundle-helpers.d.ts +10 -0
  184. package/esm/src/modules/react-loader/ssr-module-loader/http-bundle-helpers.d.ts.map +1 -1
  185. package/esm/src/modules/react-loader/ssr-module-loader/http-bundle-helpers.js +53 -26
  186. package/esm/src/modules/react-loader/ssr-module-loader/loader.d.ts.map +1 -1
  187. package/esm/src/modules/react-loader/ssr-module-loader/loader.js +1 -1
  188. package/esm/src/modules/react-loader/ssr-module-loader/ssr-cache-manager.js +3 -3
  189. package/esm/src/rendering/orchestrator/html.d.ts.map +1 -1
  190. package/esm/src/rendering/orchestrator/html.js +94 -5
  191. package/esm/src/rendering/orchestrator/module-loader/index.d.ts.map +1 -1
  192. package/esm/src/rendering/orchestrator/module-loader/index.js +2 -2
  193. package/esm/src/rendering/rsc/client-boot.ts +30 -4
  194. package/esm/src/rendering/snippet-renderer.js +1 -1
  195. package/esm/src/security/http/response/security-handler.d.ts.map +1 -1
  196. package/esm/src/security/http/response/security-handler.js +3 -2
  197. package/esm/src/server/dev-server/error-overlay/html-template.d.ts +1 -1
  198. package/esm/src/server/dev-server/error-overlay/html-template.d.ts.map +1 -1
  199. package/esm/src/server/dev-server/error-overlay/html-template.js +4 -3
  200. package/esm/src/server/dev-server/error-overlay/overlay-renderer.d.ts +1 -1
  201. package/esm/src/server/dev-server/error-overlay/overlay-renderer.d.ts.map +1 -1
  202. package/esm/src/server/dev-server/error-overlay/overlay-renderer.js +2 -2
  203. package/esm/src/server/services/rendering/ssr.service.d.ts.map +1 -1
  204. package/esm/src/server/services/rendering/ssr.service.js +3 -3
  205. package/esm/src/server/services/rsc/endpoints/rsc-bundles.generated.d.ts.map +1 -1
  206. package/esm/src/server/services/rsc/endpoints/rsc-bundles.generated.js +1 -1
  207. package/esm/src/transforms/mdx/esm-module-loader/cache/index.d.ts +1 -1
  208. package/esm/src/transforms/mdx/esm-module-loader/cache/index.d.ts.map +1 -1
  209. package/esm/src/transforms/mdx/esm-module-loader/cache/index.js +10 -5
  210. package/esm/src/transforms/mdx/esm-module-loader/cache-format.d.ts +2 -2
  211. package/esm/src/transforms/mdx/esm-module-loader/cache-format.d.ts.map +1 -1
  212. package/esm/src/transforms/mdx/esm-module-loader/cache-format.js +13 -10
  213. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/cache-keys.d.ts +2 -2
  214. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/cache-keys.d.ts.map +1 -1
  215. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/cache-keys.js +4 -4
  216. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/framework-validator.d.ts +2 -3
  217. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/framework-validator.d.ts.map +1 -1
  218. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/framework-validator.js +71 -50
  219. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/index.d.ts.map +1 -1
  220. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/index.js +7 -5
  221. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/module-cache.d.ts +1 -1
  222. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/module-cache.d.ts.map +1 -1
  223. package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/module-cache.js +3 -2
  224. package/esm/src/utils/version.d.ts +1 -1
  225. package/esm/src/utils/version.js +1 -1
  226. package/package.json +1 -1
  227. package/src/cli/auth/login.ts +14 -0
  228. package/src/cli/commands/analyze-chunks/command-help.ts +1 -0
  229. package/src/cli/commands/build/command-help.ts +1 -0
  230. package/src/cli/commands/build/command.ts +47 -2
  231. package/src/cli/commands/clean/command-help.ts +1 -0
  232. package/src/cli/commands/completions/command-help.ts +15 -0
  233. package/src/cli/commands/completions/command.ts +163 -0
  234. package/src/cli/commands/completions/handler.ts +29 -0
  235. package/src/cli/commands/demo/command-help.ts +1 -0
  236. package/src/cli/commands/deploy/command-help.ts +1 -0
  237. package/src/cli/commands/deploy/command.ts +82 -1
  238. package/src/cli/commands/dev/command-help.ts +1 -0
  239. package/src/cli/commands/doctor/command-help.ts +1 -0
  240. package/src/cli/commands/files/command-help.ts +1 -0
  241. package/src/cli/commands/generate/command-help.ts +1 -0
  242. package/src/cli/commands/init/command-help.ts +1 -0
  243. package/src/cli/commands/install/command-help.ts +2 -0
  244. package/src/cli/commands/issues/command-help.ts +1 -0
  245. package/src/cli/commands/knowledge/command-help.ts +1 -0
  246. package/src/cli/commands/lint/command-help.ts +15 -0
  247. package/src/cli/commands/lint/command.ts +59 -0
  248. package/src/cli/commands/lint/handler.ts +36 -0
  249. package/src/cli/commands/lock/command-help.ts +1 -0
  250. package/src/cli/commands/login/command-help.ts +1 -0
  251. package/src/cli/commands/logout/command-help.ts +1 -0
  252. package/src/cli/commands/mcp/command-help.ts +1 -0
  253. package/src/cli/commands/merge/command-help.ts +1 -0
  254. package/src/cli/commands/pull/command-help.ts +1 -0
  255. package/src/cli/commands/push/command-help.ts +1 -0
  256. package/src/cli/commands/routes/command-help.ts +1 -0
  257. package/src/cli/commands/schema/command-help.ts +17 -0
  258. package/src/cli/commands/schema/command.ts +64 -0
  259. package/src/cli/commands/schema/handler.ts +32 -0
  260. package/src/cli/commands/serve/command-help.ts +1 -0
  261. package/src/cli/commands/skills/command-help.ts +23 -0
  262. package/src/cli/commands/skills/command.ts +23 -0
  263. package/src/cli/commands/skills/create.ts +87 -0
  264. package/src/cli/commands/skills/handler.ts +106 -0
  265. package/src/cli/commands/skills/validate.ts +110 -0
  266. package/src/cli/commands/start/command-help.ts +1 -0
  267. package/src/cli/commands/studio/command-help.ts +1 -0
  268. package/src/cli/commands/styles/command-help.ts +1 -0
  269. package/src/cli/commands/task/command-help.ts +1 -0
  270. package/src/cli/commands/test/command-help.ts +18 -0
  271. package/src/cli/commands/test/command.ts +90 -0
  272. package/src/cli/commands/test/handler.ts +70 -0
  273. package/src/cli/commands/up/command-help.ts +1 -0
  274. package/src/cli/commands/uploads/command-help.ts +1 -0
  275. package/src/cli/commands/whoami/command-help.ts +1 -0
  276. package/src/cli/commands/workflow/command-help.ts +1 -0
  277. package/src/cli/help/command-definitions.ts +10 -0
  278. package/src/cli/help/main-help.ts +48 -5
  279. package/src/cli/help/types.ts +9 -0
  280. package/src/cli/mcp/advanced-tools.ts +4 -0
  281. package/src/cli/mcp/server.ts +72 -0
  282. package/src/cli/mcp/standalone.ts +133 -1
  283. package/src/cli/mcp/tools/cicd-tools.ts +86 -0
  284. package/src/cli/mcp/tools/introspection-tools.ts +46 -0
  285. package/src/cli/router.ts +32 -1
  286. package/src/cli/shared/args.ts +2 -0
  287. package/src/cli/shared/interactive.ts +33 -0
  288. package/src/cli/shared/json-output.ts +96 -0
  289. package/src/cli/shared/suggest.ts +33 -0
  290. package/src/cli/skills/core-skills.ts +233 -0
  291. package/src/cli/skills/loader.ts +98 -0
  292. package/src/cli/skills/types.ts +39 -0
  293. package/src/cli/utils/index.ts +2 -0
  294. package/src/deno.js +3 -1
  295. package/src/src/html/dev-scripts.ts +4 -2
  296. package/src/src/html/html-injection.ts +2 -1
  297. package/src/src/html/html-shell-generator.ts +1 -1
  298. package/src/src/html/hydration-script-builder/dev-client-renderer.ts +2 -1
  299. package/src/src/html/hydration-script-builder/dev-component-manifest.ts +2 -1
  300. package/src/src/html/hydration-script-builder/dev-error-logger.ts +3 -1
  301. package/src/src/html/hydration-script-builder/dev-scripts.ts +2 -1
  302. package/src/src/html/hydration-script-builder/prod-hydration.ts +2 -1
  303. package/src/src/html/hydration-script-builder/prod-scripts.ts +2 -1
  304. package/src/src/html/styles-builder/dev-styles.ts +2 -1
  305. package/src/src/modules/react-loader/ssr-module-loader/http-bundle-helpers.ts +65 -31
  306. package/src/src/modules/react-loader/ssr-module-loader/loader.ts +1 -0
  307. package/src/src/modules/react-loader/ssr-module-loader/ssr-cache-manager.ts +4 -4
  308. package/src/src/rendering/orchestrator/html.ts +113 -4
  309. package/src/src/rendering/orchestrator/module-loader/index.ts +2 -1
  310. package/src/src/rendering/snippet-renderer.ts +1 -1
  311. package/src/src/security/http/response/security-handler.ts +3 -2
  312. package/src/src/server/dev-server/error-overlay/html-template.ts +4 -2
  313. package/src/src/server/dev-server/error-overlay/overlay-renderer.ts +2 -1
  314. package/src/src/server/services/rendering/ssr.service.ts +12 -7
  315. package/src/src/server/services/rsc/endpoints/rsc-bundles.generated.ts +1 -1
  316. package/src/src/transforms/mdx/esm-module-loader/cache/index.ts +15 -4
  317. package/src/src/transforms/mdx/esm-module-loader/cache-format.ts +24 -6
  318. package/src/src/transforms/mdx/esm-module-loader/module-fetcher/cache-keys.ts +10 -3
  319. package/src/src/transforms/mdx/esm-module-loader/module-fetcher/framework-validator.ts +98 -51
  320. package/src/src/transforms/mdx/esm-module-loader/module-fetcher/index.ts +20 -4
  321. package/src/src/transforms/mdx/esm-module-loader/module-fetcher/module-cache.ts +3 -1
  322. package/src/src/utils/version.ts +1 -1
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Shell completion generators
3
+ *
4
+ * Generates completion scripts from the COMMANDS registry.
5
+ *
6
+ * @module cli/commands/completions
7
+ */
8
+
9
+ import { COMMANDS } from "../../help/command-definitions.js";
10
+ import type { CommandOption } from "../../help/types.js";
11
+
12
+ /** Escape a string for use in shell single-quoted contexts */
13
+ export function shellEscape(s: string): string {
14
+ return s.replace(/\\/g, "\\\\").replace(/'/g, "\\'");
15
+ }
16
+
17
+ /**
18
+ * Extract long flags (--name) from a CommandOption flag string.
19
+ * Handles formats like: "--port", "-p, --port", "-p, --port <number>"
20
+ */
21
+ export function extractLongFlags(options: CommandOption[]): string[] {
22
+ return options.flatMap((o) =>
23
+ o.flag
24
+ .split(",")
25
+ .map((f) => f.trim().split(" ")[0]!)
26
+ .filter((f) => f.startsWith("--"))
27
+ );
28
+ }
29
+
30
+ /**
31
+ * Extract short and long flags for fish completions.
32
+ * Returns { short: "p", long: "port" } pairs.
33
+ */
34
+ export function extractFishFlags(
35
+ options: CommandOption[],
36
+ ): Array<{ short?: string; long?: string; description: string }> {
37
+ return options.map((o) => {
38
+ const parts = o.flag.split(",").map((f) => f.trim().split(" ")[0]!);
39
+ const short = parts.find((p) => p.match(/^-[a-zA-Z]$/))?.slice(1);
40
+ const long = parts.find((p) => p.startsWith("--"))?.slice(2);
41
+ return { short, long, description: o.description };
42
+ });
43
+ }
44
+
45
+ const GLOBAL_FLAGS = [
46
+ "--json",
47
+ "--yes",
48
+ "--quiet",
49
+ "--verbose",
50
+ "--help",
51
+ "--version",
52
+ "--no-color",
53
+ "--output",
54
+ ];
55
+
56
+ export function generateBashCompletions(): string {
57
+ const commands = Object.values(COMMANDS);
58
+ const cmdNames = commands.map((c) => c.name).join(" ");
59
+
60
+ let script = `# Veryfront CLI bash completions\n_veryfront_completions() {\n`;
61
+ script += ` local cur prev commands\n`;
62
+ script += ` cur="\${COMP_WORDS[COMP_CWORD]}"\n`;
63
+ script += ` prev="\${COMP_WORDS[COMP_CWORD-1]}"\n`;
64
+ script += ` commands="${cmdNames}"\n\n`;
65
+ script += ` if [[ \${COMP_CWORD} -eq 1 ]]; then\n`;
66
+ script += ` COMPREPLY=( $(compgen -W "\${commands}" -- "\${cur}") )\n`;
67
+ script += ` return\n`;
68
+ script += ` fi\n\n`;
69
+ script += ` case "\${COMP_WORDS[1]}" in\n`;
70
+
71
+ for (const cmd of commands) {
72
+ const flags = extractLongFlags(cmd.options ?? [])
73
+ .concat(GLOBAL_FLAGS)
74
+ .join(" ");
75
+ script += ` ${cmd.name}) COMPREPLY=( $(compgen -W "${flags}" -- "\${cur}") ) ;;\n`;
76
+ }
77
+
78
+ script += ` *) COMPREPLY=( $(compgen -W "${GLOBAL_FLAGS.join(" ")}" -- "\${cur}") ) ;;\n`;
79
+ script += ` esac\n`;
80
+ script += `}\n`;
81
+ script += `complete -F _veryfront_completions veryfront\n`;
82
+ return script;
83
+ }
84
+
85
+ export function generateZshCompletions(): string {
86
+ const commands = Object.values(COMMANDS);
87
+ let script = `#compdef veryfront\n# Veryfront CLI zsh completions\n\n`;
88
+ script += `_veryfront() {\n`;
89
+ script += ` local -a commands\n`;
90
+ script += ` commands=(\n`;
91
+
92
+ for (const cmd of commands) {
93
+ const desc = shellEscape(cmd.description);
94
+ script += ` '${cmd.name}:${desc}'\n`;
95
+ }
96
+
97
+ script += ` )\n\n`;
98
+ script += ` _arguments -C \\\n`;
99
+ script += ` '1:command:->command' \\\n`;
100
+ script += ` '*::arg:->args'\n\n`;
101
+ script += ` case $state in\n`;
102
+ script += ` command)\n`;
103
+ script += ` _describe 'command' commands\n`;
104
+ script += ` ;;\n`;
105
+ script += ` args)\n`;
106
+ script += ` case \${words[1]} in\n`;
107
+
108
+ for (const cmd of commands) {
109
+ const flags = extractLongFlags(cmd.options ?? []).concat(GLOBAL_FLAGS);
110
+ if (flags.length > 0) {
111
+ const zshFlags = flags.map((f) =>
112
+ `'${f}[${
113
+ shellEscape(
114
+ (cmd.options ?? []).find((o) => o.flag.includes(f))?.description ??
115
+ "",
116
+ )
117
+ }]'`
118
+ ).join(" ");
119
+ script += ` ${cmd.name}) _arguments ${zshFlags} ;;\n`;
120
+ }
121
+ }
122
+
123
+ script += ` esac\n`;
124
+ script += ` ;;\n`;
125
+ script += ` esac\n`;
126
+ script += `}\n\n`;
127
+ script += `_veryfront\n`;
128
+ return script;
129
+ }
130
+
131
+ export function generateFishCompletions(): string {
132
+ const commands = Object.values(COMMANDS);
133
+ let script = `# Veryfront CLI fish completions\n`;
134
+
135
+ for (const cmd of commands) {
136
+ const desc = shellEscape(cmd.description);
137
+ script += `complete -c veryfront -n '__fish_use_subcommand' -a '${cmd.name}' -d '${desc}'\n`;
138
+ }
139
+
140
+ script += `\n`;
141
+
142
+ for (const cmd of commands) {
143
+ const flags = extractFishFlags(cmd.options ?? []);
144
+ for (const flag of flags) {
145
+ if (flag.long) {
146
+ const desc = shellEscape(flag.description);
147
+ let line =
148
+ `complete -c veryfront -n '__fish_seen_subcommand_from ${cmd.name}' -l '${flag.long}'`;
149
+ if (flag.short) {
150
+ line += ` -s '${flag.short}'`;
151
+ }
152
+ line += ` -d '${desc}'\n`;
153
+ script += line;
154
+ } else if (flag.short) {
155
+ const desc = shellEscape(flag.description);
156
+ script +=
157
+ `complete -c veryfront -n '__fish_seen_subcommand_from ${cmd.name}' -s '${flag.short}' -d '${desc}'\n`;
158
+ }
159
+ }
160
+ }
161
+
162
+ return script;
163
+ }
@@ -0,0 +1,29 @@
1
+ import * as dntShim from "../../../_dnt.shims.js";
2
+ import type { ParsedArgs } from "../../shared/types.js";
3
+ import {
4
+ generateBashCompletions,
5
+ generateFishCompletions,
6
+ generateZshCompletions,
7
+ } from "./command.js";
8
+
9
+ export async function handleCompletionsCommand(
10
+ args: ParsedArgs,
11
+ ): Promise<void> {
12
+ const shell = args._[1] as string | undefined;
13
+
14
+ switch (shell) {
15
+ case "bash":
16
+ console.log(generateBashCompletions());
17
+ break;
18
+ case "zsh":
19
+ console.log(generateZshCompletions());
20
+ break;
21
+ case "fish":
22
+ console.log(generateFishCompletions());
23
+ break;
24
+ default:
25
+ console.error("Usage: veryfront completions <bash|zsh|fish>");
26
+ console.error('Example: eval "$(veryfront completions bash)"');
27
+ dntShim.Deno.exit(1);
28
+ }
29
+ }
@@ -2,6 +2,7 @@ import type { CommandHelp } from "../../help/types.js";
2
2
 
3
3
  export const demoHelp: CommandHelp = {
4
4
  name: "demo",
5
+ category: "project",
5
6
  description: "Interactive guided tour of Veryfront CLI",
6
7
  usage: "veryfront demo [project-name] [options]",
7
8
  options: [
@@ -2,6 +2,7 @@ import type { CommandHelp } from "../../help/types.js";
2
2
 
3
3
  export const deployHelp: CommandHelp = {
4
4
  name: "deploy",
5
+ category: "deploy",
5
6
  description: "Create a release and deploy to an environment",
6
7
  usage: "veryfront deploy [options]",
7
8
  options: [
@@ -13,6 +13,7 @@ import { type ApiClient, createApiClient, resolveConfigWithAuth } from "../../sh
13
13
  import { CommonArgs, createArgParser } from "../../shared/args.js";
14
14
  import { confirmPrompt, logInfo, logSuccess } from "../../utils/index.js";
15
15
  import { createNoopSpinner, createSpinner, muted } from "../../ui/index.js";
16
+ import { isJsonMode, streamJsonLine } from "../../shared/json-output.js";
16
17
 
17
18
  /**
18
19
  * Zod schema for deploy command arguments
@@ -148,9 +149,12 @@ export function createDeployment(
148
149
  export async function deployCommand(options: DeployOptions): Promise<void> {
149
150
  const { branch, env, releaseName, dryRun, force, quiet } = options;
150
151
 
152
+ if (isJsonMode()) {
153
+ return deployCommandJson(options);
154
+ }
155
+
151
156
  let spinner = quiet ? createNoopSpinner() : createSpinner("Resolving configuration...");
152
157
 
153
- // Use interactive auth - prompts for login if not authenticated
154
158
  const config = await resolveConfigWithAuth(cwd());
155
159
  const client = createApiClient(config);
156
160
 
@@ -196,3 +200,80 @@ export async function deployCommand(options: DeployOptions): Promise<void> {
196
200
  logInfo(` Release: ${release.name} (${release.version})`);
197
201
  logInfo(` Environment: ${env}`);
198
202
  }
203
+
204
+ async function deployCommandJson(options: DeployOptions): Promise<void> {
205
+ const { branch, env, releaseName, dryRun, force } = options;
206
+
207
+ try {
208
+ // JSON mode requires --force or --yes to prevent accidental deploys
209
+ const { isInteractive } = await import("../../shared/interactive.js");
210
+ if (!force && isInteractive()) {
211
+ streamJsonLine({
212
+ type: "result",
213
+ success: false,
214
+ error:
215
+ "Deploy in JSON mode requires --force or --yes to confirm. This prevents accidental production deploys.",
216
+ });
217
+ const { exit } = await import("../../../src/platform/index.js");
218
+ exit(1);
219
+ return;
220
+ }
221
+
222
+ streamJsonLine({ type: "step", name: "resolve-config", status: "started" });
223
+ const config = await resolveConfigWithAuth(cwd());
224
+ const client = createApiClient(config);
225
+ streamJsonLine({ type: "step", name: "resolve-config", status: "completed" });
226
+
227
+ streamJsonLine({ type: "step", name: "resolve-environment", status: "started" });
228
+ const environment = await getEnvironmentByName(client, config.projectSlug, env);
229
+ if (!environment) {
230
+ streamJsonLine({
231
+ type: "result",
232
+ success: false,
233
+ error: `Environment "${env}" not found`,
234
+ });
235
+ const { exit } = await import("../../../src/platform/index.js");
236
+ exit(1);
237
+ return;
238
+ }
239
+ streamJsonLine({ type: "step", name: "resolve-environment", status: "completed" });
240
+
241
+ if (dryRun) {
242
+ streamJsonLine({
243
+ type: "result",
244
+ success: true,
245
+ data: { dryRun: true, branch, environment: env },
246
+ });
247
+ return;
248
+ }
249
+
250
+ streamJsonLine({ type: "step", name: "create-release", status: "started" });
251
+ const release = await createRelease(client, config.projectSlug, {
252
+ name: releaseName,
253
+ branch,
254
+ });
255
+ streamJsonLine({ type: "step", name: "create-release", status: "completed" });
256
+
257
+ streamJsonLine({ type: "step", name: "deploy", status: "started" });
258
+ await createDeployment(client, config.projectSlug, release.id, environment.id);
259
+ streamJsonLine({ type: "step", name: "deploy", status: "completed" });
260
+
261
+ streamJsonLine({
262
+ type: "result",
263
+ success: true,
264
+ data: {
265
+ release: { id: release.id, name: release.name, version: release.version },
266
+ environment: env,
267
+ branch,
268
+ },
269
+ });
270
+ } catch (error) {
271
+ streamJsonLine({
272
+ type: "result",
273
+ success: false,
274
+ error: error instanceof Error ? error.message : String(error),
275
+ });
276
+ const { exit } = await import("../../../src/platform/index.js");
277
+ exit(1);
278
+ }
279
+ }
@@ -2,6 +2,7 @@ import type { CommandHelp } from "../../help/types.js";
2
2
 
3
3
  export const devHelp: CommandHelp = {
4
4
  name: "dev",
5
+ category: "development",
5
6
  description: "Start development server with hot module replacement",
6
7
  usage: "veryfront dev [options]",
7
8
  options: [
@@ -2,6 +2,7 @@ import type { CommandHelp } from "../../help/types.js";
2
2
 
3
3
  export const doctorHelp: CommandHelp = {
4
4
  name: "doctor",
5
+ category: "development",
5
6
  description: "Check system requirements and project health",
6
7
  usage: "veryfront doctor [options]",
7
8
  options: [
@@ -2,6 +2,7 @@ import type { CommandHelp } from "../../help/types.js";
2
2
 
3
3
  export const filesHelp: CommandHelp = {
4
4
  name: "files",
5
+ category: "files",
5
6
  description: "List, read, write, and delete project files",
6
7
  usage: "veryfront files <command> [options]",
7
8
  options: [
@@ -2,6 +2,7 @@ import type { CommandHelp } from "../../help/types.js";
2
2
 
3
3
  export const generateHelp: CommandHelp = {
4
4
  name: "generate",
5
+ category: "development",
5
6
  description: "Generate code scaffolds",
6
7
  usage: "veryfront generate <type> [name]",
7
8
  options: [],
@@ -2,6 +2,7 @@ import type { CommandHelp } from "../../help/types.js";
2
2
 
3
3
  export const initHelp: CommandHelp = {
4
4
  name: "init",
5
+ category: "project",
5
6
  description: "Initialize a new Veryfront project",
6
7
  usage: "veryfront init [project-name] [options]",
7
8
  options: [
@@ -2,6 +2,7 @@ import type { CommandHelp } from "../../help/types.js";
2
2
 
3
3
  export const installHelp: CommandHelp = {
4
4
  name: "install",
5
+ category: "project",
5
6
  description: "Install AI assistant integrations (Cursor, Claude Code, etc.)",
6
7
  usage: "veryfront install [options]",
7
8
  options: [
@@ -35,6 +36,7 @@ export const installHelp: CommandHelp = {
35
36
 
36
37
  export const uninstallHelp: CommandHelp = {
37
38
  name: "uninstall",
39
+ category: "project",
38
40
  description: "Remove AI assistant integrations",
39
41
  usage: "veryfront uninstall [options]",
40
42
  options: [
@@ -2,6 +2,7 @@ import type { CommandHelp } from "../../help/types.js";
2
2
 
3
3
  export const issuesHelp: CommandHelp = {
4
4
  name: "issues",
5
+ category: "ai",
5
6
  description: "File-based issue tracking (SDLC conventions)",
6
7
  usage: "veryfront issues <command> [options]",
7
8
  options: [
@@ -2,6 +2,7 @@ import type { CommandHelp } from "../../help/types.js";
2
2
 
3
3
  export const knowledgeHelp: CommandHelp = {
4
4
  name: "knowledge",
5
+ category: "files",
5
6
  description: "Ingest documents into the project knowledge base",
6
7
  usage: "veryfront knowledge ingest <source...> [options]",
7
8
  options: [
@@ -0,0 +1,15 @@
1
+ import type { CommandHelp } from "../../help/types.js";
2
+
3
+ export const lintHelp: CommandHelp = {
4
+ name: "lint",
5
+ category: "development",
6
+ description: "Run linter with optional structured JSON output",
7
+ usage: "veryfront lint [options]",
8
+ options: [
9
+ { flag: "--json", description: "Output structured JSON results" },
10
+ ],
11
+ examples: [
12
+ "veryfront lint",
13
+ "veryfront lint --json",
14
+ ],
15
+ };
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Lint wrapper command
3
+ *
4
+ * Runs deno lint and transforms output to structured JSON.
5
+ *
6
+ * @module cli/commands/lint
7
+ */
8
+
9
+ export interface LintDiagnostic {
10
+ file: string;
11
+ line: number;
12
+ col: number;
13
+ code: string;
14
+ message: string;
15
+ }
16
+
17
+ export interface LintResult {
18
+ success: boolean;
19
+ diagnostics: LintDiagnostic[];
20
+ summary: {
21
+ total: number;
22
+ files_checked: number;
23
+ };
24
+ }
25
+
26
+ export function parseLintJsonOutput(output: string, exitCode: number): LintResult {
27
+ try {
28
+ const parsed = JSON.parse(output);
29
+ const diagnostics: LintDiagnostic[] = (parsed.diagnostics ?? []).map(
30
+ (d: {
31
+ filename?: string;
32
+ range?: { start?: { line?: number; col?: number } };
33
+ code?: string;
34
+ message?: string;
35
+ }) => ({
36
+ file: d.filename ?? "",
37
+ line: d.range?.start?.line ?? 0,
38
+ col: d.range?.start?.col ?? 0,
39
+ code: d.code ?? "",
40
+ message: d.message ?? "",
41
+ }),
42
+ );
43
+
44
+ return {
45
+ success: exitCode === 0,
46
+ diagnostics,
47
+ summary: {
48
+ total: diagnostics.length,
49
+ files_checked: new Set(diagnostics.map((d) => d.file)).size,
50
+ },
51
+ };
52
+ } catch {
53
+ return {
54
+ success: exitCode === 0,
55
+ diagnostics: [],
56
+ summary: { total: 0, files_checked: 0 },
57
+ };
58
+ }
59
+ }
@@ -0,0 +1,36 @@
1
+ import * as dntShim from "../../../_dnt.shims.js";
2
+ import type { ParsedArgs } from "../../shared/types.js";
3
+ import { createSuccessEnvelope, isJsonMode, outputJson } from "../../shared/json-output.js";
4
+ import { parseLintJsonOutput } from "./command.js";
5
+
6
+ export async function handleLintCommand(_args: ParsedArgs): Promise<void> {
7
+ const cmd = new dntShim.Deno.Command("deno", {
8
+ args: ["lint", "--json"],
9
+ stdout: "piped",
10
+ stderr: "piped",
11
+ });
12
+
13
+ const result = await cmd.output();
14
+ const stdout = new TextDecoder().decode(result.stdout);
15
+
16
+ if (isJsonMode()) {
17
+ const parsed = parseLintJsonOutput(stdout, result.code);
18
+ await outputJson(createSuccessEnvelope("lint", parsed));
19
+ } else {
20
+ if (result.code === 0) {
21
+ console.log("No lint issues found.");
22
+ } else {
23
+ // Re-run without --json for human-readable output
24
+ const humanCmd = new dntShim.Deno.Command("deno", {
25
+ args: ["lint"],
26
+ stdout: "inherit",
27
+ stderr: "inherit",
28
+ });
29
+ const humanResult = await humanCmd.output();
30
+ dntShim.Deno.exit(humanResult.code);
31
+ return;
32
+ }
33
+ }
34
+
35
+ dntShim.Deno.exit(result.code);
36
+ }
@@ -2,6 +2,7 @@ import type { CommandHelp } from "../../help/types.js";
2
2
 
3
3
  export const lockHelp: CommandHelp = {
4
4
  name: "lock",
5
+ category: "deploy",
5
6
  description: "Manage remote import lockfile for reproducible builds",
6
7
  usage: "veryfront lock [options]",
7
8
  options: [
@@ -2,6 +2,7 @@ import type { CommandHelp } from "../../help/types.js";
2
2
 
3
3
  export const loginHelp: CommandHelp = {
4
4
  name: "login",
5
+ category: "auth",
5
6
  description: "Authenticate with Veryfront",
6
7
  usage: "veryfront login [options]",
7
8
  options: [
@@ -2,6 +2,7 @@ import type { CommandHelp } from "../../help/types.js";
2
2
 
3
3
  export const logoutHelp: CommandHelp = {
4
4
  name: "logout",
5
+ category: "auth",
5
6
  description: "Clear stored authentication credentials",
6
7
  usage: "veryfront logout",
7
8
  options: [],
@@ -2,6 +2,7 @@ import type { CommandHelp } from "../../help/types.js";
2
2
 
3
3
  export const mcpHelp: CommandHelp = {
4
4
  name: "mcp",
5
+ category: "ai",
5
6
  description: "Start MCP server for coding agents",
6
7
  usage: "veryfront mcp",
7
8
  options: [],
@@ -2,6 +2,7 @@ import type { CommandHelp } from "../../help/types.js";
2
2
 
3
3
  export const mergeHelp: CommandHelp = {
4
4
  name: "merge",
5
+ category: "deploy",
5
6
  description: "Merge a branch into main (or another branch)",
6
7
  usage: "veryfront merge <branch> [options]",
7
8
  options: [
@@ -2,6 +2,7 @@ import type { CommandHelp } from "../../help/types.js";
2
2
 
3
3
  export const pullHelp: CommandHelp = {
4
4
  name: "pull",
5
+ category: "deploy",
5
6
  description: "Download project files from Veryfront remote",
6
7
  usage: "veryfront pull [options]",
7
8
  options: [
@@ -2,6 +2,7 @@ import type { CommandHelp } from "../../help/types.js";
2
2
 
3
3
  export const pushHelp: CommandHelp = {
4
4
  name: "push",
5
+ category: "deploy",
5
6
  description: "Create a branch and upload local files to Veryfront",
6
7
  usage: "veryfront push [options]",
7
8
  options: [
@@ -2,6 +2,7 @@ import type { CommandHelp } from "../../help/types.js";
2
2
 
3
3
  export const routesHelp: CommandHelp = {
4
4
  name: "routes",
5
+ category: "development",
5
6
  description: "List all discovered routes in your application",
6
7
  usage: "veryfront routes [options]",
7
8
  options: [
@@ -0,0 +1,17 @@
1
+ import type { CommandHelp } from "../../help/types.js";
2
+
3
+ export const schemaHelp: CommandHelp = {
4
+ name: "schema",
5
+ category: "development",
6
+ description: "Show CLI command schema for agent discovery",
7
+ usage: "veryfront schema [command] [options]",
8
+ options: [
9
+ { flag: "--json", description: "Output as JSON (default for this command)" },
10
+ { flag: "--category <cat>", description: "Filter commands by category" },
11
+ ],
12
+ examples: [
13
+ "veryfront schema --json",
14
+ "veryfront schema deploy --json",
15
+ "veryfront schema --category ai --json",
16
+ ],
17
+ };
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Schema introspection command
3
+ *
4
+ * Generates a machine-readable description of all CLI commands,
5
+ * their arguments, flags, and output schemas.
6
+ * Single source of truth: derived from COMMANDS registry and help definitions.
7
+ *
8
+ * @module cli/commands/schema
9
+ */
10
+
11
+ import { COMMANDS } from "../../help/command-definitions.js";
12
+ import type { CommandCategory, CommandHelp } from "../../help/types.js";
13
+ import { VERSION } from "../../utils/index.js";
14
+
15
+ export interface CommandSchema {
16
+ name: string;
17
+ category: string;
18
+ description: string;
19
+ usage: string;
20
+ options: Array<{
21
+ flag: string;
22
+ description: string;
23
+ default?: string;
24
+ }>;
25
+ flags: string[];
26
+ examples: string[];
27
+ }
28
+
29
+ export interface FullSchema {
30
+ version: string;
31
+ commands: CommandSchema[];
32
+ }
33
+
34
+ function commandToSchema(help: CommandHelp): CommandSchema {
35
+ const globalFlags = ["--json", "--quiet", "--verbose", "--yes", "--help"];
36
+
37
+ return {
38
+ name: help.name,
39
+ category: help.category,
40
+ description: help.description,
41
+ usage: help.usage,
42
+ options: (help.options ?? []).map((o) => ({
43
+ flag: o.flag,
44
+ description: o.description,
45
+ ...(o.default ? { default: o.default } : {}),
46
+ })),
47
+ flags: globalFlags,
48
+ examples: help.examples ?? [],
49
+ };
50
+ }
51
+
52
+ export function generateSchema(category?: CommandCategory): FullSchema {
53
+ const commands = Object.values(COMMANDS)
54
+ .filter((cmd) => !category || cmd.category === category)
55
+ .map(commandToSchema);
56
+
57
+ return { version: VERSION, commands };
58
+ }
59
+
60
+ export function generateCommandSchema(name: string): CommandSchema | null {
61
+ const help = COMMANDS[name];
62
+ if (!help) return null;
63
+ return commandToSchema(help);
64
+ }