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.
- package/esm/cli/auth/login.d.ts.map +1 -1
- package/esm/cli/auth/login.js +13 -0
- package/esm/cli/commands/analyze-chunks/command-help.d.ts.map +1 -1
- package/esm/cli/commands/analyze-chunks/command-help.js +1 -0
- package/esm/cli/commands/build/command-help.d.ts.map +1 -1
- package/esm/cli/commands/build/command-help.js +1 -0
- package/esm/cli/commands/build/command.d.ts.map +1 -1
- package/esm/cli/commands/build/command.js +47 -2
- package/esm/cli/commands/clean/command-help.d.ts.map +1 -1
- package/esm/cli/commands/clean/command-help.js +1 -0
- package/esm/cli/commands/completions/command-help.d.ts +3 -0
- package/esm/cli/commands/completions/command-help.d.ts.map +1 -0
- package/esm/cli/commands/completions/command-help.js +13 -0
- package/esm/cli/commands/completions/command.d.ts +28 -0
- package/esm/cli/commands/completions/command.d.ts.map +1 -0
- package/esm/cli/commands/completions/command.js +133 -0
- package/esm/cli/commands/completions/handler.d.ts +3 -0
- package/esm/cli/commands/completions/handler.d.ts.map +1 -0
- package/esm/cli/commands/completions/handler.js +20 -0
- package/esm/cli/commands/demo/command-help.d.ts.map +1 -1
- package/esm/cli/commands/demo/command-help.js +1 -0
- package/esm/cli/commands/deploy/command-help.d.ts.map +1 -1
- package/esm/cli/commands/deploy/command-help.js +1 -0
- package/esm/cli/commands/deploy/command.d.ts.map +1 -1
- package/esm/cli/commands/deploy/command.js +73 -1
- package/esm/cli/commands/dev/command-help.d.ts.map +1 -1
- package/esm/cli/commands/dev/command-help.js +1 -0
- package/esm/cli/commands/doctor/command-help.d.ts.map +1 -1
- package/esm/cli/commands/doctor/command-help.js +1 -0
- package/esm/cli/commands/files/command-help.d.ts.map +1 -1
- package/esm/cli/commands/files/command-help.js +1 -0
- package/esm/cli/commands/generate/command-help.d.ts.map +1 -1
- package/esm/cli/commands/generate/command-help.js +1 -0
- package/esm/cli/commands/init/command-help.d.ts.map +1 -1
- package/esm/cli/commands/init/command-help.js +1 -0
- package/esm/cli/commands/install/command-help.d.ts.map +1 -1
- package/esm/cli/commands/install/command-help.js +2 -0
- package/esm/cli/commands/issues/command-help.d.ts.map +1 -1
- package/esm/cli/commands/issues/command-help.js +1 -0
- package/esm/cli/commands/knowledge/command-help.d.ts.map +1 -1
- package/esm/cli/commands/knowledge/command-help.js +1 -0
- package/esm/cli/commands/lint/command-help.d.ts +3 -0
- package/esm/cli/commands/lint/command-help.d.ts.map +1 -0
- package/esm/cli/commands/lint/command-help.js +13 -0
- package/esm/cli/commands/lint/command.d.ts +24 -0
- package/esm/cli/commands/lint/command.d.ts.map +1 -0
- package/esm/cli/commands/lint/command.js +34 -0
- package/esm/cli/commands/lint/handler.d.ts +3 -0
- package/esm/cli/commands/lint/handler.d.ts.map +1 -0
- package/esm/cli/commands/lint/handler.js +33 -0
- package/esm/cli/commands/lock/command-help.d.ts.map +1 -1
- package/esm/cli/commands/lock/command-help.js +1 -0
- package/esm/cli/commands/login/command-help.d.ts.map +1 -1
- package/esm/cli/commands/login/command-help.js +1 -0
- package/esm/cli/commands/logout/command-help.d.ts.map +1 -1
- package/esm/cli/commands/logout/command-help.js +1 -0
- package/esm/cli/commands/mcp/command-help.d.ts.map +1 -1
- package/esm/cli/commands/mcp/command-help.js +1 -0
- package/esm/cli/commands/merge/command-help.d.ts.map +1 -1
- package/esm/cli/commands/merge/command-help.js +1 -0
- package/esm/cli/commands/pull/command-help.d.ts.map +1 -1
- package/esm/cli/commands/pull/command-help.js +1 -0
- package/esm/cli/commands/push/command-help.d.ts.map +1 -1
- package/esm/cli/commands/push/command-help.js +1 -0
- package/esm/cli/commands/routes/command-help.d.ts.map +1 -1
- package/esm/cli/commands/routes/command-help.js +1 -0
- package/esm/cli/commands/schema/command-help.d.ts +3 -0
- package/esm/cli/commands/schema/command-help.d.ts.map +1 -0
- package/esm/cli/commands/schema/command-help.js +15 -0
- package/esm/cli/commands/schema/command.d.ts +30 -0
- package/esm/cli/commands/schema/command.d.ts.map +1 -0
- package/esm/cli/commands/schema/command.js +39 -0
- package/esm/cli/commands/schema/handler.d.ts +3 -0
- package/esm/cli/commands/schema/handler.d.ts.map +1 -0
- package/esm/cli/commands/schema/handler.js +25 -0
- package/esm/cli/commands/serve/command-help.d.ts.map +1 -1
- package/esm/cli/commands/serve/command-help.js +1 -0
- package/esm/cli/commands/skills/command-help.d.ts +3 -0
- package/esm/cli/commands/skills/command-help.d.ts.map +1 -0
- package/esm/cli/commands/skills/command-help.js +21 -0
- package/esm/cli/commands/skills/command.d.ts +9 -0
- package/esm/cli/commands/skills/command.d.ts.map +1 -0
- package/esm/cli/commands/skills/command.js +17 -0
- package/esm/cli/commands/skills/create.d.ts +3 -0
- package/esm/cli/commands/skills/create.d.ts.map +1 -0
- package/esm/cli/commands/skills/create.js +65 -0
- package/esm/cli/commands/skills/handler.d.ts +3 -0
- package/esm/cli/commands/skills/handler.d.ts.map +1 -0
- package/esm/cli/commands/skills/handler.js +82 -0
- package/esm/cli/commands/skills/validate.d.ts +3 -0
- package/esm/cli/commands/skills/validate.d.ts.map +1 -0
- package/esm/cli/commands/skills/validate.js +91 -0
- package/esm/cli/commands/start/command-help.d.ts.map +1 -1
- package/esm/cli/commands/start/command-help.js +1 -0
- package/esm/cli/commands/studio/command-help.d.ts.map +1 -1
- package/esm/cli/commands/studio/command-help.js +1 -0
- package/esm/cli/commands/styles/command-help.d.ts.map +1 -1
- package/esm/cli/commands/styles/command-help.js +1 -0
- package/esm/cli/commands/task/command-help.d.ts.map +1 -1
- package/esm/cli/commands/task/command-help.js +1 -0
- package/esm/cli/commands/test/command-help.d.ts +3 -0
- package/esm/cli/commands/test/command-help.d.ts.map +1 -0
- package/esm/cli/commands/test/command-help.js +16 -0
- package/esm/cli/commands/test/command.d.ts +25 -0
- package/esm/cli/commands/test/command.d.ts.map +1 -0
- package/esm/cli/commands/test/command.js +68 -0
- package/esm/cli/commands/test/handler.d.ts +3 -0
- package/esm/cli/commands/test/handler.d.ts.map +1 -0
- package/esm/cli/commands/test/handler.js +61 -0
- package/esm/cli/commands/up/command-help.d.ts.map +1 -1
- package/esm/cli/commands/up/command-help.js +1 -0
- package/esm/cli/commands/uploads/command-help.d.ts.map +1 -1
- package/esm/cli/commands/uploads/command-help.js +1 -0
- package/esm/cli/commands/whoami/command-help.d.ts.map +1 -1
- package/esm/cli/commands/whoami/command-help.js +1 -0
- package/esm/cli/commands/workflow/command-help.d.ts.map +1 -1
- package/esm/cli/commands/workflow/command-help.js +1 -0
- package/esm/cli/help/command-definitions.d.ts.map +1 -1
- package/esm/cli/help/command-definitions.js +10 -0
- package/esm/cli/help/main-help.d.ts.map +1 -1
- package/esm/cli/help/main-help.js +38 -5
- package/esm/cli/help/types.d.ts +2 -0
- package/esm/cli/help/types.d.ts.map +1 -1
- package/esm/cli/mcp/advanced-tools.d.ts.map +1 -1
- package/esm/cli/mcp/advanced-tools.js +4 -0
- package/esm/cli/mcp/server.d.ts.map +1 -1
- package/esm/cli/mcp/server.js +68 -0
- package/esm/cli/mcp/standalone.d.ts +2 -0
- package/esm/cli/mcp/standalone.d.ts.map +1 -1
- package/esm/cli/mcp/standalone.js +117 -2
- package/esm/cli/mcp/tools/cicd-tools.d.ts +3 -0
- package/esm/cli/mcp/tools/cicd-tools.d.ts.map +1 -0
- package/esm/cli/mcp/tools/cicd-tools.js +75 -0
- package/esm/cli/mcp/tools/introspection-tools.d.ts +3 -0
- package/esm/cli/mcp/tools/introspection-tools.d.ts.map +1 -0
- package/esm/cli/mcp/tools/introspection-tools.js +38 -0
- package/esm/cli/router.d.ts.map +1 -1
- package/esm/cli/router.js +35 -1
- package/esm/cli/shared/args.d.ts +4 -0
- package/esm/cli/shared/args.d.ts.map +1 -1
- package/esm/cli/shared/args.js +2 -0
- package/esm/cli/shared/interactive.d.ts +13 -0
- package/esm/cli/shared/interactive.d.ts.map +1 -0
- package/esm/cli/shared/interactive.js +26 -0
- package/esm/cli/shared/json-output.d.ts +52 -0
- package/esm/cli/shared/json-output.d.ts.map +1 -0
- package/esm/cli/shared/json-output.js +58 -0
- package/esm/cli/shared/suggest.d.ts +8 -0
- package/esm/cli/shared/suggest.d.ts.map +1 -0
- package/esm/cli/shared/suggest.js +25 -0
- package/esm/cli/skills/core-skills.d.ts +9 -0
- package/esm/cli/skills/core-skills.d.ts.map +1 -0
- package/esm/cli/skills/core-skills.js +230 -0
- package/esm/cli/skills/loader.d.ts +13 -0
- package/esm/cli/skills/loader.d.ts.map +1 -0
- package/esm/cli/skills/loader.js +87 -0
- package/esm/cli/skills/types.d.ts +29 -0
- package/esm/cli/skills/types.d.ts.map +1 -0
- package/esm/cli/skills/types.js +25 -0
- package/esm/cli/utils/index.d.ts.map +1 -1
- package/esm/cli/utils/index.js +3 -0
- package/esm/deno.d.ts +2 -0
- package/esm/deno.js +3 -1
- package/esm/src/html/dev-scripts.d.ts.map +1 -1
- package/esm/src/html/dev-scripts.js +3 -2
- package/esm/src/html/html-injection.d.ts.map +1 -1
- package/esm/src/html/html-injection.js +2 -1
- package/esm/src/html/html-shell-generator.js +1 -1
- package/esm/src/html/hydration-script-builder/dev-client-renderer.d.ts.map +1 -1
- package/esm/src/html/hydration-script-builder/dev-client-renderer.js +2 -1
- package/esm/src/html/hydration-script-builder/dev-component-manifest.d.ts.map +1 -1
- package/esm/src/html/hydration-script-builder/dev-component-manifest.js +2 -1
- package/esm/src/html/hydration-script-builder/dev-error-logger.d.ts.map +1 -1
- package/esm/src/html/hydration-script-builder/dev-error-logger.js +2 -1
- package/esm/src/html/hydration-script-builder/dev-scripts.d.ts.map +1 -1
- package/esm/src/html/hydration-script-builder/dev-scripts.js +2 -1
- package/esm/src/html/hydration-script-builder/prod-hydration.d.ts.map +1 -1
- package/esm/src/html/hydration-script-builder/prod-hydration.js +2 -1
- package/esm/src/html/hydration-script-builder/prod-scripts.d.ts.map +1 -1
- package/esm/src/html/hydration-script-builder/prod-scripts.js +2 -1
- package/esm/src/html/styles-builder/dev-styles.d.ts.map +1 -1
- package/esm/src/html/styles-builder/dev-styles.js +2 -1
- package/esm/src/modules/react-loader/ssr-module-loader/http-bundle-helpers.d.ts +10 -0
- package/esm/src/modules/react-loader/ssr-module-loader/http-bundle-helpers.d.ts.map +1 -1
- package/esm/src/modules/react-loader/ssr-module-loader/http-bundle-helpers.js +53 -26
- package/esm/src/modules/react-loader/ssr-module-loader/loader.d.ts.map +1 -1
- package/esm/src/modules/react-loader/ssr-module-loader/loader.js +1 -1
- package/esm/src/modules/react-loader/ssr-module-loader/ssr-cache-manager.js +3 -3
- package/esm/src/rendering/orchestrator/html.d.ts.map +1 -1
- package/esm/src/rendering/orchestrator/html.js +94 -5
- package/esm/src/rendering/orchestrator/module-loader/index.d.ts.map +1 -1
- package/esm/src/rendering/orchestrator/module-loader/index.js +2 -2
- package/esm/src/rendering/rsc/client-boot.ts +30 -4
- package/esm/src/rendering/snippet-renderer.js +1 -1
- package/esm/src/security/http/response/security-handler.d.ts.map +1 -1
- package/esm/src/security/http/response/security-handler.js +3 -2
- package/esm/src/server/dev-server/error-overlay/html-template.d.ts +1 -1
- package/esm/src/server/dev-server/error-overlay/html-template.d.ts.map +1 -1
- package/esm/src/server/dev-server/error-overlay/html-template.js +4 -3
- package/esm/src/server/dev-server/error-overlay/overlay-renderer.d.ts +1 -1
- package/esm/src/server/dev-server/error-overlay/overlay-renderer.d.ts.map +1 -1
- package/esm/src/server/dev-server/error-overlay/overlay-renderer.js +2 -2
- package/esm/src/server/services/rendering/ssr.service.d.ts.map +1 -1
- package/esm/src/server/services/rendering/ssr.service.js +3 -3
- package/esm/src/server/services/rsc/endpoints/rsc-bundles.generated.d.ts.map +1 -1
- package/esm/src/server/services/rsc/endpoints/rsc-bundles.generated.js +1 -1
- package/esm/src/transforms/mdx/esm-module-loader/cache/index.d.ts +1 -1
- package/esm/src/transforms/mdx/esm-module-loader/cache/index.d.ts.map +1 -1
- package/esm/src/transforms/mdx/esm-module-loader/cache/index.js +10 -5
- package/esm/src/transforms/mdx/esm-module-loader/cache-format.d.ts +2 -2
- package/esm/src/transforms/mdx/esm-module-loader/cache-format.d.ts.map +1 -1
- package/esm/src/transforms/mdx/esm-module-loader/cache-format.js +13 -10
- package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/cache-keys.d.ts +2 -2
- package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/cache-keys.d.ts.map +1 -1
- package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/cache-keys.js +4 -4
- package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/framework-validator.d.ts +2 -3
- package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/framework-validator.d.ts.map +1 -1
- package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/framework-validator.js +71 -50
- package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/index.d.ts.map +1 -1
- package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/index.js +7 -5
- package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/module-cache.d.ts +1 -1
- package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/module-cache.d.ts.map +1 -1
- package/esm/src/transforms/mdx/esm-module-loader/module-fetcher/module-cache.js +3 -2
- package/esm/src/utils/version.d.ts +1 -1
- package/esm/src/utils/version.js +1 -1
- package/package.json +1 -1
- package/src/cli/auth/login.ts +14 -0
- package/src/cli/commands/analyze-chunks/command-help.ts +1 -0
- package/src/cli/commands/build/command-help.ts +1 -0
- package/src/cli/commands/build/command.ts +47 -2
- package/src/cli/commands/clean/command-help.ts +1 -0
- package/src/cli/commands/completions/command-help.ts +15 -0
- package/src/cli/commands/completions/command.ts +163 -0
- package/src/cli/commands/completions/handler.ts +29 -0
- package/src/cli/commands/demo/command-help.ts +1 -0
- package/src/cli/commands/deploy/command-help.ts +1 -0
- package/src/cli/commands/deploy/command.ts +82 -1
- package/src/cli/commands/dev/command-help.ts +1 -0
- package/src/cli/commands/doctor/command-help.ts +1 -0
- package/src/cli/commands/files/command-help.ts +1 -0
- package/src/cli/commands/generate/command-help.ts +1 -0
- package/src/cli/commands/init/command-help.ts +1 -0
- package/src/cli/commands/install/command-help.ts +2 -0
- package/src/cli/commands/issues/command-help.ts +1 -0
- package/src/cli/commands/knowledge/command-help.ts +1 -0
- package/src/cli/commands/lint/command-help.ts +15 -0
- package/src/cli/commands/lint/command.ts +59 -0
- package/src/cli/commands/lint/handler.ts +36 -0
- package/src/cli/commands/lock/command-help.ts +1 -0
- package/src/cli/commands/login/command-help.ts +1 -0
- package/src/cli/commands/logout/command-help.ts +1 -0
- package/src/cli/commands/mcp/command-help.ts +1 -0
- package/src/cli/commands/merge/command-help.ts +1 -0
- package/src/cli/commands/pull/command-help.ts +1 -0
- package/src/cli/commands/push/command-help.ts +1 -0
- package/src/cli/commands/routes/command-help.ts +1 -0
- package/src/cli/commands/schema/command-help.ts +17 -0
- package/src/cli/commands/schema/command.ts +64 -0
- package/src/cli/commands/schema/handler.ts +32 -0
- package/src/cli/commands/serve/command-help.ts +1 -0
- package/src/cli/commands/skills/command-help.ts +23 -0
- package/src/cli/commands/skills/command.ts +23 -0
- package/src/cli/commands/skills/create.ts +87 -0
- package/src/cli/commands/skills/handler.ts +106 -0
- package/src/cli/commands/skills/validate.ts +110 -0
- package/src/cli/commands/start/command-help.ts +1 -0
- package/src/cli/commands/studio/command-help.ts +1 -0
- package/src/cli/commands/styles/command-help.ts +1 -0
- package/src/cli/commands/task/command-help.ts +1 -0
- package/src/cli/commands/test/command-help.ts +18 -0
- package/src/cli/commands/test/command.ts +90 -0
- package/src/cli/commands/test/handler.ts +70 -0
- package/src/cli/commands/up/command-help.ts +1 -0
- package/src/cli/commands/uploads/command-help.ts +1 -0
- package/src/cli/commands/whoami/command-help.ts +1 -0
- package/src/cli/commands/workflow/command-help.ts +1 -0
- package/src/cli/help/command-definitions.ts +10 -0
- package/src/cli/help/main-help.ts +48 -5
- package/src/cli/help/types.ts +9 -0
- package/src/cli/mcp/advanced-tools.ts +4 -0
- package/src/cli/mcp/server.ts +72 -0
- package/src/cli/mcp/standalone.ts +133 -1
- package/src/cli/mcp/tools/cicd-tools.ts +86 -0
- package/src/cli/mcp/tools/introspection-tools.ts +46 -0
- package/src/cli/router.ts +32 -1
- package/src/cli/shared/args.ts +2 -0
- package/src/cli/shared/interactive.ts +33 -0
- package/src/cli/shared/json-output.ts +96 -0
- package/src/cli/shared/suggest.ts +33 -0
- package/src/cli/skills/core-skills.ts +233 -0
- package/src/cli/skills/loader.ts +98 -0
- package/src/cli/skills/types.ts +39 -0
- package/src/cli/utils/index.ts +2 -0
- package/src/deno.js +3 -1
- package/src/src/html/dev-scripts.ts +4 -2
- package/src/src/html/html-injection.ts +2 -1
- package/src/src/html/html-shell-generator.ts +1 -1
- package/src/src/html/hydration-script-builder/dev-client-renderer.ts +2 -1
- package/src/src/html/hydration-script-builder/dev-component-manifest.ts +2 -1
- package/src/src/html/hydration-script-builder/dev-error-logger.ts +3 -1
- package/src/src/html/hydration-script-builder/dev-scripts.ts +2 -1
- package/src/src/html/hydration-script-builder/prod-hydration.ts +2 -1
- package/src/src/html/hydration-script-builder/prod-scripts.ts +2 -1
- package/src/src/html/styles-builder/dev-styles.ts +2 -1
- package/src/src/modules/react-loader/ssr-module-loader/http-bundle-helpers.ts +65 -31
- package/src/src/modules/react-loader/ssr-module-loader/loader.ts +1 -0
- package/src/src/modules/react-loader/ssr-module-loader/ssr-cache-manager.ts +4 -4
- package/src/src/rendering/orchestrator/html.ts +113 -4
- package/src/src/rendering/orchestrator/module-loader/index.ts +2 -1
- package/src/src/rendering/snippet-renderer.ts +1 -1
- package/src/src/security/http/response/security-handler.ts +3 -2
- package/src/src/server/dev-server/error-overlay/html-template.ts +4 -2
- package/src/src/server/dev-server/error-overlay/overlay-renderer.ts +2 -1
- package/src/src/server/services/rendering/ssr.service.ts +12 -7
- package/src/src/server/services/rsc/endpoints/rsc-bundles.generated.ts +1 -1
- package/src/src/transforms/mdx/esm-module-loader/cache/index.ts +15 -4
- package/src/src/transforms/mdx/esm-module-loader/cache-format.ts +24 -6
- package/src/src/transforms/mdx/esm-module-loader/module-fetcher/cache-keys.ts +10 -3
- package/src/src/transforms/mdx/esm-module-loader/module-fetcher/framework-validator.ts +98 -51
- package/src/src/transforms/mdx/esm-module-loader/module-fetcher/index.ts +20 -4
- package/src/src/transforms/mdx/esm-module-loader/module-fetcher/module-cache.ts +3 -1
- 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,
|
|
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 +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,
|
|
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 +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,
|
|
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 +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,
|
|
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"}
|
|
@@ -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 @@
|
|
|
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,
|
|
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 +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,
|
|
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 +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,
|
|
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 +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,
|
|
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 +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;
|
|
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":"
|
|
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
|
-
|
|
12
|
-
for (const
|
|
13
|
-
|
|
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("
|
|
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`);
|
package/esm/cli/help/types.d.ts
CHANGED
|
@@ -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;
|
|
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;
|
|
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"}
|
package/esm/cli/mcp/server.js
CHANGED
|
@@ -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;
|
|
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"}
|