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,91 @@
1
+ /**
2
+ * Skills validate command — validate a skill directory
3
+ *
4
+ * @module cli/commands/skills/validate
5
+ */
6
+ import * as dntShim from "../../../_dnt.shims.js";
7
+ import { createSuccessEnvelope, isJsonMode, outputJson } from "../../shared/json-output.js";
8
+ import { parseSkillJson } from "../../skills/types.js";
9
+ import { COMMANDS } from "../../help/command-definitions.js";
10
+ import { logError, logSuccess } from "../../utils/index.js";
11
+ import { createFileSystem } from "../../../src/platform/index.js";
12
+ export async function validateSkill(args) {
13
+ const dir = args._[2] ?? ".";
14
+ const issues = [];
15
+ const fs = createFileSystem();
16
+ // Check skill.json exists and parses
17
+ let manifestRaw;
18
+ try {
19
+ manifestRaw = await fs.readTextFile(`${dir}/skill.json`);
20
+ }
21
+ catch {
22
+ issues.push({ severity: "error", message: "skill.json not found" });
23
+ return outputResults(dir, issues);
24
+ }
25
+ let parsed;
26
+ try {
27
+ parsed = parseSkillJson(JSON.parse(manifestRaw));
28
+ }
29
+ catch {
30
+ issues.push({
31
+ severity: "error",
32
+ message: "skill.json is not valid JSON",
33
+ });
34
+ return outputResults(dir, issues);
35
+ }
36
+ if (!parsed.success) {
37
+ issues.push({
38
+ severity: "error",
39
+ message: `skill.json schema error: ${parsed.error}`,
40
+ });
41
+ return outputResults(dir, issues);
42
+ }
43
+ // Check SKILL.md exists
44
+ try {
45
+ const content = await fs.readTextFile(`${dir}/SKILL.md`);
46
+ if (!content.trim()) {
47
+ issues.push({ severity: "warning", message: "SKILL.md is empty" });
48
+ }
49
+ }
50
+ catch {
51
+ issues.push({ severity: "error", message: "SKILL.md not found" });
52
+ }
53
+ // Check required CLI commands exist
54
+ const cliReqs = parsed.data.requires?.cli ?? [];
55
+ for (const cmd of cliReqs) {
56
+ if (!COMMANDS[cmd]) {
57
+ issues.push({
58
+ severity: "warning",
59
+ message: `Required CLI command "${cmd}" not found in registry`,
60
+ });
61
+ }
62
+ }
63
+ return outputResults(dir, issues);
64
+ }
65
+ async function outputResults(dir, issues) {
66
+ const hasErrors = issues.some((i) => i.severity === "error");
67
+ if (isJsonMode()) {
68
+ await outputJson(createSuccessEnvelope("skills", {
69
+ directory: dir,
70
+ valid: !hasErrors,
71
+ issues,
72
+ }));
73
+ if (hasErrors)
74
+ dntShim.Deno.exit(1);
75
+ return;
76
+ }
77
+ if (issues.length === 0) {
78
+ logSuccess(`Skill at "${dir}" is valid`);
79
+ return;
80
+ }
81
+ for (const issue of issues) {
82
+ if (issue.severity === "error") {
83
+ logError(issue.message);
84
+ }
85
+ else {
86
+ console.log(` ! ${issue.message}`);
87
+ }
88
+ }
89
+ if (hasErrors)
90
+ dntShim.Deno.exit(1);
91
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/start/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,SAAS,EAAE,WAgDvB,CAAC"}
1
+ {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/start/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,SAAS,EAAE,WAiDvB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export const startHelp = {
2
2
  name: "start",
3
+ category: "project",
3
4
  description: "Start development dashboard with proxy and MCP integration",
4
5
  usage: "veryfront start [options]",
5
6
  options: [
@@ -1 +1 @@
1
- {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/studio/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,UAAU,EAAE,WAuBxB,CAAC"}
1
+ {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/studio/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,UAAU,EAAE,WAwBxB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export const studioHelp = {
2
2
  name: "studio",
3
+ category: "project",
3
4
  description: "Open Veryfront Studio in browser",
4
5
  usage: "veryfront studio [project] [options]",
5
6
  options: [
@@ -1 +1 @@
1
- {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/styles/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,UAAU,EAAE,WAkBxB,CAAC"}
1
+ {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/styles/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,UAAU,EAAE,WAmBxB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export const stylesHelp = {
2
2
  name: "styles",
3
+ category: "development",
3
4
  description: "Build project CSS artifacts",
4
5
  usage: "veryfront styles build-artifact --config <json>",
5
6
  options: [
@@ -1 +1 @@
1
- {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/task/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,QAAQ,EAAE,WAmBtB,CAAC"}
1
+ {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/task/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,QAAQ,EAAE,WAoBtB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export const taskHelp = {
2
2
  name: "task",
3
+ category: "ai",
3
4
  description: "Run a task from the tasks/ directory",
4
5
  usage: "veryfront task <name> [options]",
5
6
  options: [
@@ -0,0 +1,3 @@
1
+ import type { CommandHelp } from "../../help/types.js";
2
+ export declare const testHelp: CommandHelp;
3
+ //# sourceMappingURL=command-help.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/test/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,QAAQ,EAAE,WAetB,CAAC"}
@@ -0,0 +1,16 @@
1
+ export const testHelp = {
2
+ name: "test",
3
+ category: "development",
4
+ description: "Run tests with optional structured JSON output",
5
+ usage: "veryfront test [filter] [options]",
6
+ options: [
7
+ { flag: "--json", description: "Output structured JSON results" },
8
+ { flag: "--parallel", description: "Run tests in parallel" },
9
+ { flag: "--filter <pattern>", description: "Filter tests by name" },
10
+ ],
11
+ examples: [
12
+ "veryfront test",
13
+ "veryfront test --json",
14
+ "veryfront test --filter 'deploy' --json",
15
+ ],
16
+ };
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Test wrapper command
3
+ *
4
+ * Runs deno test and transforms output to structured JSON.
5
+ *
6
+ * @module cli/commands/test
7
+ */
8
+ export interface TestResult {
9
+ success: boolean;
10
+ summary: {
11
+ total: number;
12
+ passed: number;
13
+ failed: number;
14
+ skipped: number;
15
+ duration_ms: number;
16
+ };
17
+ failures: Array<{
18
+ file: string;
19
+ test: string;
20
+ error: string;
21
+ line?: number;
22
+ }>;
23
+ }
24
+ export declare function parseTestOutput(output: string, exitCode: number): TestResult;
25
+ //# sourceMappingURL=command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/test/command.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;CACJ;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,CAgE5E"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Test wrapper command
3
+ *
4
+ * Runs deno test and transforms output to structured JSON.
5
+ *
6
+ * @module cli/commands/test
7
+ */
8
+ export function parseTestOutput(output, exitCode) {
9
+ const lines = output.split("\n");
10
+ let passed = 0;
11
+ let failed = 0;
12
+ let skipped = 0;
13
+ let durationMs = 0;
14
+ for (const line of lines) {
15
+ const summaryMatch = line.match(/(\d+)\s+passed\s*\|\s*(\d+)\s+failed/);
16
+ if (summaryMatch) {
17
+ passed = parseInt(summaryMatch[1] ?? "0", 10);
18
+ failed = parseInt(summaryMatch[2] ?? "0", 10);
19
+ }
20
+ const durationMatch = line.match(/\((\d+\.?\d*)s\)/);
21
+ if (durationMatch) {
22
+ durationMs = Math.round(parseFloat(durationMatch[1] ?? "0") * 1000);
23
+ }
24
+ const skippedMatch = line.match(/(\d+)\s+ignored/);
25
+ if (skippedMatch) {
26
+ skipped = parseInt(skippedMatch[1] ?? "0", 10);
27
+ }
28
+ }
29
+ const failures = [];
30
+ const failureRegex = /^(.*?)\s+\.\.\.\s+FAILED/;
31
+ for (let i = 0; i < lines.length; i++) {
32
+ const currentLine = lines[i];
33
+ if (!currentLine)
34
+ continue;
35
+ const match = currentLine.match(failureRegex);
36
+ if (match) {
37
+ const testName = (match[1] ?? "").trim();
38
+ let error = "";
39
+ let file = "";
40
+ let line;
41
+ for (let j = i + 1; j < Math.min(i + 10, lines.length); j++) {
42
+ const lineText = lines[j];
43
+ if (!lineText)
44
+ continue;
45
+ const fileLine = lineText.match(/at\s+(.*?):(\d+)/);
46
+ if (fileLine?.[1] && fileLine[2]) {
47
+ file = fileLine[1];
48
+ line = parseInt(fileLine[2], 10);
49
+ }
50
+ if (lineText.includes("Error:") || lineText.includes("assert")) {
51
+ error = lineText.trim();
52
+ }
53
+ }
54
+ failures.push({ file, test: testName, error, line });
55
+ }
56
+ }
57
+ return {
58
+ success: exitCode === 0,
59
+ summary: {
60
+ total: passed + failed + skipped,
61
+ passed,
62
+ failed,
63
+ skipped,
64
+ duration_ms: durationMs,
65
+ },
66
+ failures,
67
+ };
68
+ }
@@ -0,0 +1,3 @@
1
+ import type { ParsedArgs } from "../../shared/types.js";
2
+ export declare function handleTestCommand(args: ParsedArgs): Promise<void>;
3
+ //# sourceMappingURL=handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/test/handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAmBxD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA+CvE"}
@@ -0,0 +1,61 @@
1
+ import * as dntShim from "../../../_dnt.shims.js";
2
+ import { z } from "zod";
3
+ import { createArgParser, parseArgsOrThrow } from "../../shared/args.js";
4
+ import { createErrorEnvelope, createSuccessEnvelope, isJsonMode, outputJson, } from "../../shared/json-output.js";
5
+ import { parseTestOutput } from "./command.js";
6
+ const TestArgsSchema = z.object({
7
+ filter: z.string().optional(),
8
+ parallel: z.boolean().default(false),
9
+ });
10
+ const parseTestArgs = createArgParser(TestArgsSchema, {
11
+ filter: { keys: ["filter"], type: "string", positional: 0 },
12
+ parallel: { keys: ["parallel"], type: "boolean" },
13
+ });
14
+ export async function handleTestCommand(args) {
15
+ const opts = parseArgsOrThrow(parseTestArgs, "test", args);
16
+ const cmd = new dntShim.Deno.Command("deno", {
17
+ args: [
18
+ "test",
19
+ "--no-check",
20
+ "--allow-all",
21
+ "--unstable-worker-options",
22
+ "--unstable-net",
23
+ ...(opts.parallel ? ["--parallel"] : []),
24
+ ...(opts.filter ? [`--filter=${opts.filter}`] : []),
25
+ ],
26
+ stdout: "piped",
27
+ stderr: "piped",
28
+ env: {
29
+ VF_DISABLE_LRU_INTERVAL: "1",
30
+ SSR_TRANSFORM_PER_PROJECT_LIMIT: "0",
31
+ REVALIDATION_PER_PROJECT_LIMIT: "0",
32
+ NODE_ENV: "production",
33
+ LOG_FORMAT: "text",
34
+ },
35
+ });
36
+ const result = await cmd.output();
37
+ const stdout = new TextDecoder().decode(result.stdout);
38
+ const stderr = new TextDecoder().decode(result.stderr);
39
+ const fullOutput = stdout + "\n" + stderr;
40
+ if (isJsonMode()) {
41
+ const parsed = parseTestOutput(fullOutput, result.code);
42
+ if (parsed.success) {
43
+ await outputJson(createSuccessEnvelope("test", parsed));
44
+ }
45
+ else {
46
+ await outputJson(createErrorEnvelope("test", {
47
+ code: "TEST_FAILURE",
48
+ slug: "tests-failed",
49
+ message: `${parsed.summary.failed} test(s) failed`,
50
+ context: parsed,
51
+ }));
52
+ }
53
+ }
54
+ else {
55
+ if (stdout)
56
+ console.log(stdout);
57
+ if (stderr)
58
+ console.error(stderr);
59
+ }
60
+ dntShim.Deno.exit(result.code);
61
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/up/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,MAAM,EAAE,WAqBpB,CAAC"}
1
+ {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/up/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,MAAM,EAAE,WAsBpB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export const upHelp = {
2
2
  name: "up",
3
+ category: "deploy",
3
4
  description: "Deploy your app with one command (login, create, push, deploy)",
4
5
  usage: "veryfront up [options]",
5
6
  options: [
@@ -1 +1 @@
1
- {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/uploads/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,WAAW,EAAE,WA0CzB,CAAC"}
1
+ {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/uploads/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,WAAW,EAAE,WA2CzB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export const uploadsHelp = {
2
2
  name: "uploads",
3
+ category: "files",
3
4
  description: "List, pull, upload, and delete project uploads",
4
5
  usage: "veryfront uploads <command> [options]",
5
6
  options: [
@@ -1 +1 @@
1
- {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/whoami/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,UAAU,EAAE,WAUxB,CAAC"}
1
+ {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/whoami/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,UAAU,EAAE,WAWxB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export const whoamiHelp = {
2
2
  name: "whoami",
3
+ category: "auth",
3
4
  description: "Show current authenticated user",
4
5
  usage: "veryfront whoami",
5
6
  options: [],
@@ -1 +1 @@
1
- {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/workflow/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,YAAY,EAAE,WAkB1B,CAAC"}
1
+ {"version":3,"file":"command-help.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/workflow/command-help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,YAAY,EAAE,WAmB1B,CAAC"}
@@ -1,5 +1,6 @@
1
1
  export const workflowHelp = {
2
2
  name: "workflow",
3
+ category: "ai",
3
4
  description: "Run a workflow from the app/workflows directory",
4
5
  usage: "veryfront workflow run <id> [options]",
5
6
  options: [
@@ -1 +1 @@
1
- {"version":3,"file":"command-definitions.d.ts","sourceRoot":"","sources":["../../../src/cli/help/command-definitions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAkClD;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,eAgCtB,CAAC"}
1
+ {"version":3,"file":"command-definitions.d.ts","sourceRoot":"","sources":["../../../src/cli/help/command-definitions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAuClD;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,eAqCtB,CAAC"}
@@ -35,6 +35,11 @@ import { issuesHelp } from "../commands/issues/command-help.js";
35
35
  import { startHelp } from "../commands/start/command-help.js";
36
36
  import { taskHelp } from "../commands/task/command-help.js";
37
37
  import { workflowHelp } from "../commands/workflow/command-help.js";
38
+ import { schemaHelp } from "../commands/schema/command-help.js";
39
+ import { testHelp } from "../commands/test/command-help.js";
40
+ import { lintHelp } from "../commands/lint/command-help.js";
41
+ import { skillsHelp } from "../commands/skills/command-help.js";
42
+ import { completionsHelp } from "../commands/completions/command-help.js";
38
43
  /**
39
44
  * Central registry of all command help definitions.
40
45
  * Each command's help is imported from its respective command-help.ts file.
@@ -71,4 +76,9 @@ export const COMMANDS = {
71
76
  start: startHelp,
72
77
  task: taskHelp,
73
78
  workflow: workflowHelp,
79
+ schema: schemaHelp,
80
+ test: testHelp,
81
+ lint: lintHelp,
82
+ skills: skillsHelp,
83
+ completions: completionsHelp,
74
84
  };
@@ -1 +1 @@
1
- {"version":3,"file":"main-help.d.ts","sourceRoot":"","sources":["../../../src/cli/help/main-help.ts"],"names":[],"mappings":"AAWA,wBAAgB,YAAY,IAAI,IAAI,CAwCnC"}
1
+ {"version":3,"file":"main-help.d.ts","sourceRoot":"","sources":["../../../src/cli/help/main-help.ts"],"names":[],"mappings":"AAwCA,wBAAgB,YAAY,IAAI,IAAI,CAsDnC"}
@@ -1,6 +1,31 @@
1
1
  import { COMMANDS } from "./command-definitions.js";
2
2
  import { calculateMaxLength, formatCommandList, formatCommandName, formatDescription, formatHeader, formatSectionHeader, } from "./formatters.js";
3
3
  import { bold, dim } from "../ui/colors.js";
4
+ const CATEGORY_LABELS = {
5
+ development: "Development",
6
+ deploy: "Deploy & Sync",
7
+ project: "Project",
8
+ files: "Files & Data",
9
+ ai: "AI & Automation",
10
+ auth: "Auth",
11
+ };
12
+ const CATEGORY_ORDER = [
13
+ "development",
14
+ "deploy",
15
+ "project",
16
+ "files",
17
+ "ai",
18
+ "auth",
19
+ ];
20
+ function groupByCategory(commands) {
21
+ const groups = new Map();
22
+ for (const cmd of commands) {
23
+ const group = groups.get(cmd.category) ?? [];
24
+ group.push(cmd);
25
+ groups.set(cmd.category, group);
26
+ }
27
+ return groups;
28
+ }
4
29
  export function showMainHelp() {
5
30
  console.log(formatHeader());
6
31
  console.log();
@@ -8,14 +33,22 @@ export function showMainHelp() {
8
33
  console.log();
9
34
  const commands = Object.values(COMMANDS);
10
35
  const maxLength = calculateMaxLength(commands.map((c) => ({ length: c.name.length })));
11
- console.log(` ${formatSectionHeader("Commands")}`);
12
- for (const line of formatCommandList(commands, maxLength)) {
13
- console.log(line);
36
+ const grouped = groupByCategory(commands);
37
+ for (const category of CATEGORY_ORDER) {
38
+ const cmds = grouped.get(category);
39
+ if (!cmds || cmds.length === 0)
40
+ continue;
41
+ console.log(` ${formatSectionHeader(CATEGORY_LABELS[category])}`);
42
+ for (const line of formatCommandList(cmds, maxLength)) {
43
+ console.log(line);
44
+ }
45
+ console.log();
14
46
  }
15
- console.log();
16
47
  console.log(` ${formatSectionHeader("Global Options")}`);
17
48
  console.log(` ${formatCommandName("-h, --help", maxLength)} ${formatDescription("Show help")}`);
18
49
  console.log(` ${formatCommandName("-v, --version", maxLength)} ${formatDescription("Show version")}`);
50
+ console.log(` ${formatCommandName("--json", maxLength)} ${formatDescription("Output as JSON")}`);
51
+ console.log(` ${formatCommandName("--yes", maxLength)} ${formatDescription("Skip confirmation prompts")}`);
19
52
  console.log();
20
53
  console.log(` ${formatSectionHeader("Quick Start")}`);
21
54
  console.log(` ${dim("$")} veryfront init my-app`);
@@ -25,7 +58,7 @@ export function showMainHelp() {
25
58
  console.log(` ${formatSectionHeader("Coding Agents (MCP)")}`);
26
59
  console.log(` ${dim("HTTP:")} MCP auto-starts on port 9999 with dev server`);
27
60
  console.log(` ${dim("stdio:")} veryfront mcp`);
28
- console.log(` ${dim("Tools:")} vf_list_templates, vf_create_project, vf_scaffold, ...`);
61
+ console.log(` ${dim("Schema:")} veryfront schema --json`);
29
62
  console.log();
30
63
  console.log(` ${formatSectionHeader("Learn More")}`);
31
64
  console.log(` ${dim("Docs:")} https://github.com/veryfront/veryfront`);
@@ -1,3 +1,4 @@
1
+ export type CommandCategory = "development" | "deploy" | "project" | "files" | "ai" | "auth";
1
2
  export interface CommandOption {
2
3
  flag: string;
3
4
  description: string;
@@ -5,6 +6,7 @@ export interface CommandOption {
5
6
  }
6
7
  export interface CommandHelp {
7
8
  name: string;
9
+ category: CommandCategory;
8
10
  description: string;
9
11
  usage: string;
10
12
  options?: CommandOption[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/help/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/help/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GACvB,aAAa,GACb,QAAQ,GACR,SAAS,GACT,OAAO,GACP,IAAI,GACJ,MAAM,CAAC;AAEX,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,eAAe,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"advanced-tools.d.ts","sourceRoot":"","sources":["../../../src/cli/mcp/advanced-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AA0B1C,eAAO,MAAM,aAAa,EAAE,OAAO,EAoBlC,CAAC"}
1
+ {"version":3,"file":"advanced-tools.d.ts","sourceRoot":"","sources":["../../../src/cli/mcp/advanced-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AA4B1C,eAAO,MAAM,aAAa,EAAE,OAAO,EAsBlC,CAAC"}
@@ -3,7 +3,11 @@ import { vfGetDebugContext, vfGetFlywheelStatus, vfHotReload, vfPreviewRoute, vf
3
3
  import { vfGetComponentTree, vfGetProjectContext, vfListLocalProjects, vfListRoutes, } from "./tools/project-tools.js";
4
4
  import { vfGetConventions, vfScaffold } from "./tools/scaffold-tools.js";
5
5
  import { vfGetSkillReference, vfGetSkills } from "./tools/skill-tools.js";
6
+ import { cicdTools } from "./tools/cicd-tools.js";
7
+ import { introspectionTools } from "./tools/introspection-tools.js";
6
8
  export const advancedTools = [
9
+ ...cicdTools,
10
+ ...introspectionTools,
7
11
  vfGetSkills,
8
12
  vfGetSkillReference,
9
13
  vfListLocalProjects,
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/cli/mcp/server.ts"],"names":[],"mappings":"AA6CA,MAAM,WAAW,eAAe;IAC9B,6DAA6D;IAC7D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,UAAU,CAA2B;gBAEjC,MAAM,GAAE,eAAoB;IAWxC,KAAK,IAAI,IAAI;IAeP,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3B,OAAO,CAAC,SAAS;IAkDjB,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,eAAe;IAyBvB,OAAO,CAAC,mBAAmB;IA+B3B,OAAO,CAAC,mBAAmB;IAqF3B,OAAO,CAAC,iBAAiB;IAiCzB,OAAO,CAAC,gBAAgB;IAyCxB,OAAO,CAAC,eAAe;CA+DxB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,YAAY,CAIrE;AAED,cAAc,kCAAkC,CAAC;AACjD,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/cli/mcp/server.ts"],"names":[],"mappings":"AA6CA,MAAM,WAAW,eAAe;IAC9B,6DAA6D;IAC7D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,UAAU,CAA2B;gBAEjC,MAAM,GAAE,eAAoB;IAWxC,KAAK,IAAI,IAAI;IAeP,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3B,OAAO,CAAC,SAAS;IAkDjB,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,eAAe;IAyBvB,OAAO,CAAC,mBAAmB;IAuD3B,OAAO,CAAC,mBAAmB;IAqI3B,OAAO,CAAC,iBAAiB;IAiCzB,OAAO,CAAC,gBAAgB;IAyCxB,OAAO,CAAC,eAAe;CA+DxB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,YAAY,CAIrE;AAED,cAAc,kCAAkC,CAAC;AACjD,cAAc,YAAY,CAAC"}
@@ -194,6 +194,30 @@ export class MCPDevServer {
194
194
  description: "File-based issues, tasks, and plans",
195
195
  mimeType: "application/json",
196
196
  },
197
+ {
198
+ uri: "veryfront://schema",
199
+ name: "CLI Schema",
200
+ description: "Full CLI command schema for agent discovery",
201
+ mimeType: "application/json",
202
+ },
203
+ {
204
+ uri: "veryfront://agents-md",
205
+ name: "Root AGENTS.md",
206
+ description: "Agent onboarding documentation",
207
+ mimeType: "text/markdown",
208
+ },
209
+ {
210
+ uri: "veryfront://config",
211
+ name: "Project Config",
212
+ description: "Resolved project configuration",
213
+ mimeType: "application/json",
214
+ },
215
+ {
216
+ uri: "veryfront://skills",
217
+ name: "Available Skills",
218
+ description: "List of all available agent skills",
219
+ mimeType: "application/json",
220
+ },
197
221
  ],
198
222
  };
199
223
  }
@@ -242,6 +266,50 @@ export class MCPDevServer {
242
266
  ],
243
267
  };
244
268
  }
269
+ if (uri === "veryfront://schema") {
270
+ const { generateSchema } = await import("../commands/schema/command.js");
271
+ return {
272
+ contents: [{
273
+ uri,
274
+ mimeType: "application/json",
275
+ text: JSON.stringify(generateSchema()),
276
+ }],
277
+ };
278
+ }
279
+ if (uri === "veryfront://agents-md") {
280
+ const content = await readTextFile("AGENTS.md").catch(() => "AGENTS.md not found");
281
+ return {
282
+ contents: [{ uri, mimeType: "text/markdown", text: content }],
283
+ };
284
+ }
285
+ if (uri === "veryfront://config") {
286
+ const { getEnvironmentConfig } = await import("../../src/config/index.js");
287
+ const config = getEnvironmentConfig();
288
+ return {
289
+ contents: [{
290
+ uri,
291
+ mimeType: "application/json",
292
+ text: JSON.stringify(config, null, 2),
293
+ }],
294
+ };
295
+ }
296
+ if (uri === "veryfront://skills") {
297
+ const { listCoreSkills } = await import("../skills/loader.js");
298
+ const skills = await listCoreSkills();
299
+ const data = skills.map((s) => ({
300
+ name: s.manifest.name,
301
+ version: s.manifest.version,
302
+ description: s.manifest.description,
303
+ requires: s.manifest.requires,
304
+ }));
305
+ return {
306
+ contents: [{
307
+ uri,
308
+ mimeType: "application/json",
309
+ text: JSON.stringify(data, null, 2),
310
+ }],
311
+ };
312
+ }
245
313
  if (!uri.startsWith("issues://"))
246
314
  throw new Error(`Unknown resource: ${uri}`);
247
315
  const manager = createIssuesManager(cwd());
@@ -19,6 +19,8 @@ export declare class StandaloneMCPServer {
19
19
  private handleRequest;
20
20
  private dispatchMethod;
21
21
  private handleToolsCall;
22
+ private handleResourcesList;
23
+ private handleResourcesRead;
22
24
  private handlePromptsList;
23
25
  private handlePromptsGet;
24
26
  private createTools;
@@ -1 +1 @@
1
- {"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../../../src/cli/mcp/standalone.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA2BH,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAA4B;gBAEnC,MAAM,GAAE,mBAAwB;IAM5C,KAAK,IAAI,IAAI;IAWb,IAAI,IAAI,IAAI;YAME,aAAa;IAW3B,OAAO,CAAC,cAAc;YA6BR,eAAe;IAU7B,OAAO,CAAC,iBAAiB;YAkBX,gBAAgB;IAwB9B,OAAO,CAAC,WAAW;CAqGpB;AAED,wBAAgB,yBAAyB,CAAC,MAAM,GAAE,mBAAwB,GAAG,mBAAmB,CAI/F"}
1
+ {"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../../../src/cli/mcp/standalone.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA4BH,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAA4B;gBAEnC,MAAM,GAAE,mBAAwB;IAM5C,KAAK,IAAI,IAAI;IAWb,IAAI,IAAI,IAAI;YAME,aAAa;IAW3B,OAAO,CAAC,cAAc;YAiCR,eAAe;IAU7B,OAAO,CAAC,mBAAmB;YAyBb,mBAAmB;IA6CjC,OAAO,CAAC,iBAAiB;YAkBX,gBAAgB;IAwB9B,OAAO,CAAC,WAAW;CA8JpB;AAED,wBAAgB,yBAAyB,CAAC,MAAM,GAAE,mBAAwB,GAAG,mBAAmB,CAI/F"}