@next-vibe/checker 1.0.11 → 1.0.12
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/.dist/bin/vibe-runtime.js +10 -19
- package/.dist/bin/vibe-runtime.js.map +3 -3
- package/check.config.ts +4 -4
- package/package.json +2 -9
- package/src/app/api/[locale]/LICENSE +674 -0
- package/src/app/api/[locale]/i18n/de/index.ts +13 -0
- package/src/app/api/[locale]/i18n/en/index.ts +12 -0
- package/src/app/api/[locale]/i18n/pl/index.ts +11 -0
- package/src/app/api/[locale]/shared/i18n/de/index.ts +85 -0
- package/src/app/api/[locale]/shared/i18n/en/index.ts +83 -0
- package/src/app/api/[locale]/shared/i18n/pl/index.ts +85 -0
- package/src/app/api/[locale]/shared/stats-filtering.ts +202 -0
- package/src/app/api/[locale]/shared/types/common.schema.ts +55 -0
- package/src/app/api/[locale]/shared/types/response.schema.ts +372 -0
- package/src/app/api/[locale]/shared/types/stats-filtering.schema.ts +375 -0
- package/src/app/api/[locale]/shared/types/utils.ts +190 -0
- package/src/app/api/[locale]/shared/utils/base64.ts +49 -0
- package/src/app/api/[locale]/shared/utils/env-util.ts +40 -0
- package/src/app/api/[locale]/shared/utils/i18n/de/index.ts +21 -0
- package/src/app/api/[locale]/shared/utils/i18n/en/index.ts +19 -0
- package/src/app/api/[locale]/shared/utils/i18n/pl/index.ts +21 -0
- package/src/app/api/[locale]/shared/utils/index.ts +11 -0
- package/src/app/api/[locale]/shared/utils/object-path.ts +41 -0
- package/src/app/api/[locale]/shared/utils/object.test.ts +82 -0
- package/src/app/api/[locale]/shared/utils/object.ts +75 -0
- package/src/app/api/[locale]/shared/utils/parse-error.ts +134 -0
- package/src/app/api/[locale]/shared/utils/parse-json.ts +70 -0
- package/src/app/api/[locale]/shared/utils/time.ts +53 -0
- package/src/app/api/[locale]/shared/utils/validation.ts +127 -0
- package/src/app/api/[locale]/shared/utils/zod-required-fields.ts +116 -0
- package/src/app/api/[locale]/system/builder/definition.ts +1942 -0
- package/src/app/api/[locale]/system/builder/enum.ts +77 -0
- package/src/app/api/[locale]/system/builder/i18n/de/index.ts +677 -0
- package/src/app/api/[locale]/system/builder/i18n/en/index.ts +665 -0
- package/src/app/api/[locale]/system/builder/i18n/pl/index.ts +668 -0
- package/src/app/api/[locale]/system/builder/repository/build-executor.test.ts +182 -0
- package/src/app/api/[locale]/system/builder/repository/build-executor.ts +583 -0
- package/src/app/api/[locale]/system/builder/repository/bun-compiler.ts +261 -0
- package/src/app/api/[locale]/system/builder/repository/bundle-analyzer.ts +197 -0
- package/src/app/api/[locale]/system/builder/repository/config-loader.ts +159 -0
- package/src/app/api/[locale]/system/builder/repository/config-validator.ts +97 -0
- package/src/app/api/[locale]/system/builder/repository/constants.ts +125 -0
- package/src/app/api/[locale]/system/builder/repository/error-suggester.ts +75 -0
- package/src/app/api/[locale]/system/builder/repository/file-copier.ts +98 -0
- package/src/app/api/[locale]/system/builder/repository/folder-cleaner.ts +80 -0
- package/src/app/api/[locale]/system/builder/repository/index.ts +2 -0
- package/src/app/api/[locale]/system/builder/repository/npm-package-generator.ts +146 -0
- package/src/app/api/[locale]/system/builder/repository/output-formatter.ts +104 -0
- package/src/app/api/[locale]/system/builder/repository/profile-service.ts +79 -0
- package/src/app/api/[locale]/system/builder/repository/report-generator.ts +125 -0
- package/src/app/api/[locale]/system/builder/repository/vite-compiler.ts +291 -0
- package/src/app/api/[locale]/system/builder/route.ts +21 -0
- package/src/app/api/[locale]/system/builder/test-files/file1.ts +2 -0
- package/src/app/api/[locale]/system/builder/test-files/file2.tsx +10 -0
- package/src/app/api/[locale]/system/builder/test-files/file3.tsx +16 -0
- package/src/app/api/[locale]/system/builder/test-files/folderToCopy/fileInFolder.ts +2 -0
- package/src/app/api/[locale]/system/builder/test-files/test-config.ts +38 -0
- package/src/app/api/[locale]/system/builder/test-files/test-delete-config.ts +8 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/package.json +24 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/src/constants.ts +6 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/src/greet.ts +18 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/src/index.ts +7 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/src/utils/calculate.ts +27 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/tsconfig.json +19 -0
- package/src/app/api/[locale]/system/builder/test-files/test-project/tsconfig.tsbuildinfo +1 -0
- package/src/app/api/[locale]/system/builder/test-files/test3.css +1 -0
- package/src/app/api/[locale]/system/check/config/repository.ts +819 -0
- package/src/app/api/[locale]/system/check/config/shared.ts +396 -0
- package/src/app/api/[locale]/system/check/config/types.ts +616 -0
- package/src/app/api/[locale]/system/check/config/utils.ts +171 -0
- package/src/app/api/[locale]/system/check/i18n/de/index.ts +15 -0
- package/src/app/api/[locale]/system/check/i18n/en/index.ts +14 -0
- package/src/app/api/[locale]/system/check/i18n/pl/index.ts +15 -0
- package/src/app/api/[locale]/system/check/lint/definition.ts +414 -0
- package/src/app/api/[locale]/system/check/lint/enum.ts +37 -0
- package/src/app/api/[locale]/system/check/lint/i18n/de/index.ts +164 -0
- package/src/app/api/[locale]/system/check/lint/i18n/en/index.ts +162 -0
- package/src/app/api/[locale]/system/check/lint/i18n/pl/index.ts +164 -0
- package/src/app/api/[locale]/system/check/lint/repository.ts +753 -0
- package/src/app/api/[locale]/system/check/lint/route.ts +21 -0
- package/src/app/api/[locale]/system/check/oxlint/README.md +190 -0
- package/src/app/api/[locale]/system/check/oxlint/definition.ts +414 -0
- package/src/app/api/[locale]/system/check/oxlint/enum.ts +37 -0
- package/src/app/api/[locale]/system/check/oxlint/i18n/de/index.ts +171 -0
- package/src/app/api/[locale]/system/check/oxlint/i18n/en/index.ts +168 -0
- package/src/app/api/[locale]/system/check/oxlint/i18n/pl/index.ts +172 -0
- package/src/app/api/[locale]/system/check/oxlint/plugins/i18n/src/index.ts +372 -0
- package/src/app/api/[locale]/system/check/oxlint/plugins/jsx-capitalization/README.md +246 -0
- package/src/app/api/[locale]/system/check/oxlint/plugins/jsx-capitalization/src/index.ts +583 -0
- package/src/app/api/[locale]/system/check/oxlint/plugins/restricted-syntax/src/index.ts +500 -0
- package/src/app/api/[locale]/system/check/oxlint/plugins/restricted-syntax/test.tsx +74 -0
- package/src/app/api/[locale]/system/check/oxlint/plugins/shared/config-loader.ts +305 -0
- package/src/app/api/[locale]/system/check/oxlint/repository.ts +959 -0
- package/src/app/api/[locale]/system/check/oxlint/route.ts +21 -0
- package/src/app/api/[locale]/system/check/oxlint/types.ts +193 -0
- package/src/app/api/[locale]/system/check/test-project/bun.lock +449 -0
- package/src/app/api/[locale]/system/check/test-project/check.config.ts +989 -0
- package/src/app/api/[locale]/system/check/test-project/package.json +20 -0
- package/src/app/api/[locale]/system/check/test-project/src/constants.ts +6 -0
- package/src/app/api/[locale]/system/check/test-project/src/greet.ts +18 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/a11y-issues.tsx +107 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/eslint-issues.tsx +37 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/general-issues.ts +137 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/i18n-issues.tsx +129 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/jsx-capitalization-issues.tsx +131 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/nextjs-issues.tsx +95 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/promise-issues.ts +76 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/react-issues.tsx +95 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/restricted-syntax-issues.tsx +61 -0
- package/src/app/api/[locale]/system/check/test-project/src/test-issues/typescript-issues.ts +80 -0
- package/src/app/api/[locale]/system/check/test-project/src/utils/calculate.ts +27 -0
- package/src/app/api/[locale]/system/check/test-project/tsconfig.json +38 -0
- package/src/app/api/[locale]/system/check/test-project/tsconfig.tsbuildinfo +1 -0
- package/src/app/api/[locale]/system/check/typecheck/definition.ts +369 -0
- package/src/app/api/[locale]/system/check/typecheck/enum.ts +37 -0
- package/src/app/api/[locale]/system/check/typecheck/i18n/de/index.ts +159 -0
- package/src/app/api/[locale]/system/check/typecheck/i18n/en/index.ts +150 -0
- package/src/app/api/[locale]/system/check/typecheck/i18n/pl/index.ts +155 -0
- package/src/app/api/[locale]/system/check/typecheck/repository.ts +919 -0
- package/src/app/api/[locale]/system/check/typecheck/route.ts +22 -0
- package/src/app/api/[locale]/system/check/typecheck/utils.ts +168 -0
- package/src/app/api/[locale]/system/check/vibe-check/definition.ts +568 -0
- package/src/app/api/[locale]/system/check/vibe-check/enum.ts +69 -0
- package/src/app/api/[locale]/system/check/vibe-check/i18n/de/index.ts +192 -0
- package/src/app/api/[locale]/system/check/vibe-check/i18n/en/index.ts +189 -0
- package/src/app/api/[locale]/system/check/vibe-check/i18n/pl/index.ts +192 -0
- package/src/app/api/[locale]/system/check/vibe-check/repository.ts +545 -0
- package/src/app/api/[locale]/system/check/vibe-check/route.test.ts +1142 -0
- package/src/app/api/[locale]/system/check/vibe-check/route.ts +21 -0
- package/src/app/api/[locale]/system/generated/endpoint.ts +313 -0
- package/src/app/api/[locale]/system/generated/endpoints.ts +156 -0
- package/src/app/api/[locale]/system/generated/route-handlers.ts +224 -0
- package/src/app/api/[locale]/system/generators/endpoint/definition.ts +193 -0
- package/src/app/api/[locale]/system/generators/endpoint/i18n/de/index.ts +48 -0
- package/src/app/api/[locale]/system/generators/endpoint/i18n/en/index.ts +48 -0
- package/src/app/api/[locale]/system/generators/endpoint/i18n/pl/index.ts +50 -0
- package/src/app/api/[locale]/system/generators/endpoint/repository.ts +291 -0
- package/src/app/api/[locale]/system/generators/endpoint/route.ts +21 -0
- package/src/app/api/[locale]/system/generators/endpoints/definition.ts +246 -0
- package/src/app/api/[locale]/system/generators/endpoints/i18n/de/index.ts +54 -0
- package/src/app/api/[locale]/system/generators/endpoints/i18n/en/index.ts +52 -0
- package/src/app/api/[locale]/system/generators/endpoints/i18n/pl/index.ts +54 -0
- package/src/app/api/[locale]/system/generators/endpoints/options-repository.ts +463 -0
- package/src/app/api/[locale]/system/generators/endpoints/repository.ts +383 -0
- package/src/app/api/[locale]/system/generators/endpoints/route.ts +18 -0
- package/src/app/api/[locale]/system/generators/endpoints-index/definition.ts +194 -0
- package/src/app/api/[locale]/system/generators/endpoints-index/i18n/de/index.ts +71 -0
- package/src/app/api/[locale]/system/generators/endpoints-index/i18n/en/index.ts +69 -0
- package/src/app/api/[locale]/system/generators/endpoints-index/i18n/pl/index.ts +71 -0
- package/src/app/api/[locale]/system/generators/endpoints-index/repository.ts +294 -0
- package/src/app/api/[locale]/system/generators/endpoints-index/route.ts +18 -0
- package/src/app/api/[locale]/system/generators/generate-all/definition.ts +355 -0
- package/src/app/api/[locale]/system/generators/generate-all/i18n/de/index.ts +96 -0
- package/src/app/api/[locale]/system/generators/generate-all/i18n/en/index.ts +94 -0
- package/src/app/api/[locale]/system/generators/generate-all/i18n/pl/index.ts +96 -0
- package/src/app/api/[locale]/system/generators/generate-all/repository.ts +257 -0
- package/src/app/api/[locale]/system/generators/generate-all/route.ts +20 -0
- package/src/app/api/[locale]/system/generators/i18n/de/index.ts +15 -0
- package/src/app/api/[locale]/system/generators/i18n/en/index.ts +14 -0
- package/src/app/api/[locale]/system/generators/i18n/pl/index.ts +15 -0
- package/src/app/api/[locale]/system/generators/route-handlers/definition.ts +198 -0
- package/src/app/api/[locale]/system/generators/route-handlers/i18n/de/index.ts +48 -0
- package/src/app/api/[locale]/system/generators/route-handlers/i18n/en/index.ts +48 -0
- package/src/app/api/[locale]/system/generators/route-handlers/i18n/pl/index.ts +50 -0
- package/src/app/api/[locale]/system/generators/route-handlers/repository.ts +277 -0
- package/src/app/api/[locale]/system/generators/route-handlers/route.ts +17 -0
- package/src/app/api/[locale]/system/generators/shared/utils.ts +233 -0
- package/src/app/api/[locale]/system/help/definition.ts +445 -0
- package/src/app/api/[locale]/system/help/i18n/de/index.ts +267 -0
- package/src/app/api/[locale]/system/help/i18n/en/index.ts +262 -0
- package/src/app/api/[locale]/system/help/i18n/pl/index.ts +265 -0
- package/src/app/api/[locale]/system/help/interactive/definition.ts +125 -0
- package/src/app/api/[locale]/system/help/interactive/i18n/de/index.ts +22 -0
- package/src/app/api/[locale]/system/help/interactive/i18n/en/index.ts +19 -0
- package/src/app/api/[locale]/system/help/interactive/i18n/pl/index.ts +22 -0
- package/src/app/api/[locale]/system/help/interactive/repository.ts +1025 -0
- package/src/app/api/[locale]/system/help/interactive/route.ts +53 -0
- package/src/app/api/[locale]/system/help/list/definition.ts +372 -0
- package/src/app/api/[locale]/system/help/list/repository.ts +110 -0
- package/src/app/api/[locale]/system/help/list/route.ts +21 -0
- package/src/app/api/[locale]/system/help/repository.ts +212 -0
- package/src/app/api/[locale]/system/help/route.ts +16 -0
- package/src/app/api/[locale]/system/i18n/de/index.ts +68 -0
- package/src/app/api/[locale]/system/i18n/en/index.ts +65 -0
- package/src/app/api/[locale]/system/i18n/pl/index.ts +66 -0
- package/src/app/api/[locale]/system/release-tool/definition.ts +3104 -0
- package/src/app/api/[locale]/system/release-tool/i18n/de/index.ts +813 -0
- package/src/app/api/[locale]/system/release-tool/i18n/en/index.ts +797 -0
- package/src/app/api/[locale]/system/release-tool/i18n/pl/index.ts +810 -0
- package/src/app/api/[locale]/system/release-tool/repository/asset-zipper.ts +128 -0
- package/src/app/api/[locale]/system/release-tool/repository/changelog-generator.ts +212 -0
- package/src/app/api/[locale]/system/release-tool/repository/ci-detector.ts +566 -0
- package/src/app/api/[locale]/system/release-tool/repository/config.ts +113 -0
- package/src/app/api/[locale]/system/release-tool/repository/constants.ts +407 -0
- package/src/app/api/[locale]/system/release-tool/repository/dependency-manager.ts +527 -0
- package/src/app/api/[locale]/system/release-tool/repository/git-service.ts +403 -0
- package/src/app/api/[locale]/system/release-tool/repository/hook-runner.ts +100 -0
- package/src/app/api/[locale]/system/release-tool/repository/index.ts +1 -0
- package/src/app/api/[locale]/system/release-tool/repository/notification-service.ts +638 -0
- package/src/app/api/[locale]/system/release-tool/repository/package-service.ts +169 -0
- package/src/app/api/[locale]/system/release-tool/repository/publisher.ts +253 -0
- package/src/app/api/[locale]/system/release-tool/repository/quality-runner.ts +428 -0
- package/src/app/api/[locale]/system/release-tool/repository/release-creator.ts +293 -0
- package/src/app/api/[locale]/system/release-tool/repository/release-executor.ts +1198 -0
- package/src/app/api/[locale]/system/release-tool/repository/snyk-service.ts +136 -0
- package/src/app/api/[locale]/system/release-tool/repository/utils.ts +642 -0
- package/src/app/api/[locale]/system/release-tool/repository/validation.ts +288 -0
- package/src/app/api/[locale]/system/release-tool/repository/version-service.ts +297 -0
- package/src/app/api/[locale]/system/release-tool/route.ts +21 -0
- package/src/app/api/[locale]/system/unified-interface/README.md +328 -0
- package/src/app/api/[locale]/system/unified-interface/cli/README.md +349 -0
- package/src/app/api/[locale]/system/unified-interface/cli/auth/cli-handler.ts +95 -0
- package/src/app/api/[locale]/system/unified-interface/cli/auth/cli-user.ts +146 -0
- package/src/app/api/[locale]/system/unified-interface/cli/auth/session-file.ts +266 -0
- package/src/app/api/[locale]/system/unified-interface/cli/env.ts +26 -0
- package/src/app/api/[locale]/system/unified-interface/cli/i18n/de/index.ts +157 -0
- package/src/app/api/[locale]/system/unified-interface/cli/i18n/en/index.ts +155 -0
- package/src/app/api/[locale]/system/unified-interface/cli/i18n/pl/index.ts +158 -0
- package/src/app/api/[locale]/system/unified-interface/cli/runtime/debug.ts +595 -0
- package/src/app/api/[locale]/system/unified-interface/cli/runtime/entry-point.ts +129 -0
- package/src/app/api/[locale]/system/unified-interface/cli/runtime/environment.ts +155 -0
- package/src/app/api/[locale]/system/unified-interface/cli/runtime/execution-errors.ts +452 -0
- package/src/app/api/[locale]/system/unified-interface/cli/runtime/parsing.ts +297 -0
- package/src/app/api/[locale]/system/unified-interface/cli/runtime/route-executor.ts +859 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/de/index.ts +12 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/en/index.ts +11 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/i18n/pl/index.ts +12 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/install/definition.ts +262 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/de/index.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/en/index.ts +52 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/install/i18n/pl/index.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/install/repository.ts +421 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/install/route.ts +25 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/status/definition.ts +181 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/de/index.ts +61 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/en/index.ts +59 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/status/i18n/pl/index.ts +61 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/status/repository.ts +195 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/status/route.ts +22 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/definition.ts +188 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/de/index.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/en/index.ts +52 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/i18n/pl/index.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/repository.ts +209 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/uninstall/route.ts +24 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/update/definition.ts +200 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/de/index.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/en/index.ts +52 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/update/i18n/pl/index.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/update/repository.ts +113 -0
- package/src/app/api/[locale]/system/unified-interface/cli/setup/update/route.ts +22 -0
- package/src/app/api/[locale]/system/unified-interface/cli/vibe-runtime.ts +304 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/base-renderer.ts +270 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/registry.ts +309 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/core/types.ts +126 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/de/index.ts +67 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/en/index.ts +65 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/i18n/pl/index.ts +67 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/accordion.ts +74 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/avatar.ts +39 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/badge.ts +54 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-output.ts +298 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-files.ts +89 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-list.ts +298 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/code-quality-summary.ts +96 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/container.ts +186 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-card.ts +65 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-cards.ts +570 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-list.ts +80 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/data-table.ts +385 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/editable-text.ts +99 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/empty-state.ts +55 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/errors.ts +67 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/grouped-list.ts +729 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link-card.ts +87 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link-list.ts +112 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/link.ts +59 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/loading.ts +50 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/markdown.ts +131 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/metric.ts +291 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/section.ts +120 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/stats-grid.ts +149 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/tabs.ts +61 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/text.ts +78 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/implementations/title.ts +42 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/renderers/response-renderer.ts +418 -0
- package/src/app/api/[locale]/system/unified-interface/cli/widgets/renderers/schema-handler.ts +534 -0
- package/src/app/api/[locale]/system/unified-interface/i18n/de/index.ts +42 -0
- package/src/app/api/[locale]/system/unified-interface/i18n/en/index.ts +40 -0
- package/src/app/api/[locale]/system/unified-interface/i18n/pl/index.ts +43 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/README.md +114 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/converter.ts +146 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/i18n/de/index.ts +182 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/i18n/en/index.ts +179 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/i18n/pl/index.ts +181 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/registry.ts +343 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/serve/definition.ts +147 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/serve/repository.ts +38 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/serve/route.ts +14 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/server/protocol-handler.ts +309 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/server/server.ts +154 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/server/stdio-transport.ts +193 -0
- package/src/app/api/[locale]/system/unified-interface/mcp/types.ts +246 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/create-form.ts +1510 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/create.ts +581 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/endpoint-to-metadata.ts +52 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definition/loader.ts +152 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/definitions/registry.ts +265 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/permissions/registry.ts +680 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/executor.ts +220 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/handler.ts +325 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/multi.ts +184 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/request-validator.ts +201 -0
- package/src/app/api/[locale]/system/unified-interface/shared/endpoints/route/single.ts +58 -0
- package/src/app/api/[locale]/system/unified-interface/shared/env/define-env-client.ts +49 -0
- package/src/app/api/[locale]/system/unified-interface/shared/env/define-env.ts +47 -0
- package/src/app/api/[locale]/system/unified-interface/shared/env/validation-logger.ts +58 -0
- package/src/app/api/[locale]/system/unified-interface/shared/field/enum.ts +110 -0
- package/src/app/api/[locale]/system/unified-interface/shared/field/specialized.ts +339 -0
- package/src/app/api/[locale]/system/unified-interface/shared/field/utils.test.ts +408 -0
- package/src/app/api/[locale]/system/unified-interface/shared/field/utils.ts +1349 -0
- package/src/app/api/[locale]/system/unified-interface/shared/field-config/endpoint-field-types.ts +107 -0
- package/src/app/api/[locale]/system/unified-interface/shared/field-config/field-config-types.ts +268 -0
- package/src/app/api/[locale]/system/unified-interface/shared/logger/colors.ts +114 -0
- package/src/app/api/[locale]/system/unified-interface/shared/logger/endpoint.ts +169 -0
- package/src/app/api/[locale]/system/unified-interface/shared/logger/file-logger.ts +88 -0
- package/src/app/api/[locale]/system/unified-interface/shared/logger/formatters.ts +177 -0
- package/src/app/api/[locale]/system/unified-interface/shared/server-only/auth/base-auth-handler.ts +82 -0
- package/src/app/api/[locale]/system/unified-interface/shared/server-only/auth/factory.ts +33 -0
- package/src/app/api/[locale]/system/unified-interface/shared/server-only/server-only.ts +4 -0
- package/src/app/api/[locale]/system/unified-interface/shared/types/actions.ts +289 -0
- package/src/app/api/[locale]/system/unified-interface/shared/types/endpoint.ts +1167 -0
- package/src/app/api/[locale]/system/unified-interface/shared/types/enums.ts +382 -0
- package/src/app/api/[locale]/system/unified-interface/shared/types/platform.ts +34 -0
- package/src/app/api/[locale]/system/unified-interface/shared/types/types.ts +80 -0
- package/src/app/api/[locale]/system/unified-interface/shared/types/ui-config.ts +76 -0
- package/src/app/api/[locale]/system/unified-interface/shared/utils/error-types.ts +27 -0
- package/src/app/api/[locale]/system/unified-interface/shared/utils/path.ts +63 -0
- package/src/app/api/[locale]/system/unified-interface/shared/utils/scanner.ts +241 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/actions.ts +256 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/configs.ts +1158 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/helpers.ts +80 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/accordion.ts +82 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/avatar.ts +75 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/badge.ts +89 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/code-output.ts +302 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/code-quality-list.ts +202 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/container.ts +129 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-card.ts +81 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-cards.ts +258 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-list.ts +123 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/data-table.ts +387 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/editable-text.ts +89 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/empty-state.ts +78 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/errors.ts +93 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/grouped-list.ts +448 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/index.ts +38 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link-card.ts +130 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link-list.ts +127 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/link.ts +68 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/loading.ts +81 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/markdown.ts +176 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/metric-card.ts +241 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/section.ts +90 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/stats-grid.ts +71 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/tabs.ts +80 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/text.ts +105 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/logic/title.ts +72 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/types.ts +240 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/field-helpers.ts +137 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/formatting.ts +437 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/url.ts +40 -0
- package/src/app/api/[locale]/system/unified-interface/shared/widgets/utils/widget-helpers.ts +465 -0
- package/src/app/api/[locale]/user/auth/enum.ts +16 -0
- package/src/app/api/[locale]/user/auth/i18n/de/index.ts +227 -0
- package/src/app/api/[locale]/user/auth/i18n/en/index.ts +205 -0
- package/src/app/api/[locale]/user/auth/i18n/pl/index.ts +219 -0
- package/src/app/api/[locale]/user/auth/types.ts +110 -0
- package/src/app/api/[locale]/user/enum.ts +64 -0
- package/src/app/api/[locale]/user/private/i18n/de/index.ts +3 -0
- package/src/app/api/[locale]/user/private/i18n/en/index.ts +1 -0
- package/src/app/api/[locale]/user/private/i18n/pl/index.ts +3 -0
- package/src/app/api/[locale]/user/types.ts +118 -0
- package/src/app/api/[locale]/user/user-roles/enum.ts +112 -0
- package/src/app/api/[locale]/user/user-roles/i18n/de/index.ts +85 -0
- package/src/app/api/[locale]/user/user-roles/i18n/en/index.ts +83 -0
- package/src/app/api/[locale]/user/user-roles/i18n/pl/index.ts +86 -0
- package/src/app/api/[locale]/user/user-roles/types.ts +34 -0
- package/src/app/api/i18n/de/index.ts +6 -0
- package/src/app/api/i18n/en/index.ts +5 -0
- package/src/app/api/i18n/pl/index.ts +5 -0
- package/src/app/i18n/de/index.ts +6 -0
- package/src/app/i18n/en/index.ts +5 -0
- package/src/app/i18n/pl/index.ts +5 -0
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
# Unified UI System
|
|
2
|
+
|
|
3
|
+
> **Part of NextVibe Framework** (GPL-3.0) - Located in `src/app/api/[locale]/system/unified-interface/`
|
|
4
|
+
|
|
5
|
+
**One Definition, All Platforms**
|
|
6
|
+
|
|
7
|
+
## What Is This?
|
|
8
|
+
|
|
9
|
+
The Unified UI System lets you write **one endpoint definition** and automatically get:
|
|
10
|
+
|
|
11
|
+
- ✅ **AI Tools** - Your AI assistant can call your APIs
|
|
12
|
+
- ✅ **CLI Commands** - Run from terminal with `vibe command-name`
|
|
13
|
+
- ✅ **MCP Tools** - Works in Claude Desktop, Cline, and other MCP clients
|
|
14
|
+
- ✅ **React Hooks** - Type-safe hooks for your web app
|
|
15
|
+
- ✅ **React Native** - Same hooks work on mobile
|
|
16
|
+
- ✅ **Widget-Based UI** - Results render beautifully everywhere
|
|
17
|
+
|
|
18
|
+
## Why Use This?
|
|
19
|
+
|
|
20
|
+
**Before**: Write separate code for AI tools, CLI, web UI, mobile UI
|
|
21
|
+
**After**: Write one `definition.ts` file, get everything automatically
|
|
22
|
+
|
|
23
|
+
**Benefits**:
|
|
24
|
+
|
|
25
|
+
- 🚀 **10x Faster Development** - One definition instead of 5+ implementations
|
|
26
|
+
- 🔒 **Type-Safe** - Full TypeScript inference everywhere
|
|
27
|
+
- 🎨 **Beautiful UI** - Automatic widget-based rendering
|
|
28
|
+
- 🔐 **Secure** - Permission system built-in
|
|
29
|
+
- 💰 **Cost Tracking** - Credit system integrated
|
|
30
|
+
- 🌍 **i18n Ready** - Multi-language support
|
|
31
|
+
|
|
32
|
+
## Quick Example
|
|
33
|
+
|
|
34
|
+
### 1. Write One Definition
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
// definition.ts
|
|
38
|
+
const { POST } = createEndpoint({
|
|
39
|
+
method: Methods.POST,
|
|
40
|
+
path: ["user", "create"],
|
|
41
|
+
credits: 0, // Free operation
|
|
42
|
+
|
|
43
|
+
fields: objectField(
|
|
44
|
+
{ type: WidgetType.CONTAINER },
|
|
45
|
+
{ request: "data", response: true },
|
|
46
|
+
{
|
|
47
|
+
email: requestDataField({ type: WidgetType.TEXT }, z.string().email()),
|
|
48
|
+
name: requestDataField({ type: WidgetType.TEXT }, z.string().min(1)),
|
|
49
|
+
},
|
|
50
|
+
),
|
|
51
|
+
});
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 2. Use Everywhere Automatically
|
|
55
|
+
|
|
56
|
+
**Terminal (CLI)**:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
vibe create-user --email=john@example.com --name="John Doe"
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**AI Chat**:
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
User: "Create a user account for john@example.com named John Doe"
|
|
66
|
+
AI: *calls create-user tool automatically*
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**Claude Desktop (MCP)**:
|
|
70
|
+
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"mcpServers": {
|
|
74
|
+
"Vibe": { "command": "npx", "args": ["vibe", "mcp"] }
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**React App**:
|
|
80
|
+
|
|
81
|
+
```typescript
|
|
82
|
+
const { mutate } = useEndpoint(definition);
|
|
83
|
+
mutate({ email: "john@example.com", name: "John Doe" });
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**React Native App**:
|
|
87
|
+
|
|
88
|
+
```typescript
|
|
89
|
+
// Same hook works on mobile!
|
|
90
|
+
const { mutate } = useEndpoint(definition);
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## How It Works
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
┌─────────────────────────────────────────┐
|
|
97
|
+
│ definition.ts │
|
|
98
|
+
│ • Method, path, fields │
|
|
99
|
+
│ • Widget types for UI │
|
|
100
|
+
│ • Permissions & credits │
|
|
101
|
+
└─────────────────────────────────────────┘
|
|
102
|
+
│
|
|
103
|
+
┌─────────────┼─────────────┬─────────────┐
|
|
104
|
+
▼ ▼ ▼ ▼
|
|
105
|
+
┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐
|
|
106
|
+
│ AI │ │ CLI │ │ MCP │ │ React │
|
|
107
|
+
│ Tool │ │Command │ │ Tool │ │ Hook │
|
|
108
|
+
└────────┘ └────────┘ └────────┘ └────────┘
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Widget System
|
|
112
|
+
|
|
113
|
+
Define how data should be displayed:
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
// Text display
|
|
117
|
+
{
|
|
118
|
+
type: WidgetType.TEXT;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// Clickable link
|
|
122
|
+
{
|
|
123
|
+
type: WidgetType.LINK;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// Data table with sorting
|
|
127
|
+
{
|
|
128
|
+
type: WidgetType.DATA_TABLE;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// Card grid
|
|
132
|
+
{
|
|
133
|
+
type: WidgetType.DATA_CARDS;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// Search results
|
|
137
|
+
{
|
|
138
|
+
type: WidgetType.LINK_LIST;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Code with syntax highlighting
|
|
142
|
+
{
|
|
143
|
+
type: WidgetType.CODE_OUTPUT;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// Markdown content
|
|
147
|
+
{
|
|
148
|
+
type: WidgetType.MARKDOWN;
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Results automatically render beautifully in:
|
|
153
|
+
|
|
154
|
+
- AI chat interface
|
|
155
|
+
- CLI terminal (colored output)
|
|
156
|
+
- React components
|
|
157
|
+
- React Native apps
|
|
158
|
+
|
|
159
|
+
## Permission System
|
|
160
|
+
|
|
161
|
+
Control who can access your endpoints:
|
|
162
|
+
|
|
163
|
+
```typescript
|
|
164
|
+
allowedRoles: [UserRole.ADMIN]; // Only admins
|
|
165
|
+
allowedRoles: [UserRole.CUSTOMER]; // Authenticated users
|
|
166
|
+
allowedRoles: [UserRole.PUBLIC]; // Everyone
|
|
167
|
+
allowedRoles: [UserRole.CLI_OFF]; // Disable CLI access
|
|
168
|
+
allowedRoles: [UserRole.AI_TOOL_OFF]; // Disable AI access
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
Permissions enforced automatically everywhere.
|
|
172
|
+
|
|
173
|
+
## Credit System
|
|
174
|
+
|
|
175
|
+
Set credit costs for your endpoints:
|
|
176
|
+
|
|
177
|
+
```typescript
|
|
178
|
+
credits: 0; // Free
|
|
179
|
+
credits: 0.65; // Web search (calculated from FEATURE_COSTS)
|
|
180
|
+
credits: 0.52; // Text-to-speech per 1000 chars (calculated)
|
|
181
|
+
credits: 10; // Expensive (e.g., GPT-4 message)
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Credits automatically:
|
|
185
|
+
|
|
186
|
+
- Checked before execution
|
|
187
|
+
- Deducted after success
|
|
188
|
+
- Logged in database
|
|
189
|
+
- Displayed in UI
|
|
190
|
+
|
|
191
|
+
## Type Safety
|
|
192
|
+
|
|
193
|
+
Full TypeScript inference everywhere:
|
|
194
|
+
|
|
195
|
+
```typescript
|
|
196
|
+
// Types automatically inferred from definition
|
|
197
|
+
export type RequestInput = typeof POST.types.RequestInput;
|
|
198
|
+
export type ResponseOutput = typeof POST.types.ResponseOutput;
|
|
199
|
+
|
|
200
|
+
// Use in your code with full autocomplete
|
|
201
|
+
const result: ResponseOutput = await endpoint.mutate(input);
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## i18n Support
|
|
205
|
+
|
|
206
|
+
All user-facing text uses translation keys:
|
|
207
|
+
|
|
208
|
+
```typescript
|
|
209
|
+
title: "app.api.user.create.post.title";
|
|
210
|
+
description: "app.api.user.create.post.description";
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
Automatically translated in:
|
|
214
|
+
|
|
215
|
+
- AI tool descriptions
|
|
216
|
+
- CLI help text
|
|
217
|
+
- MCP tool descriptions
|
|
218
|
+
- React UI labels
|
|
219
|
+
- Error messages
|
|
220
|
+
|
|
221
|
+
## Real-World Example: Web Search
|
|
222
|
+
|
|
223
|
+
```typescript
|
|
224
|
+
// brave-search/definition.ts
|
|
225
|
+
const { GET } = createEndpoint({
|
|
226
|
+
method: Methods.GET,
|
|
227
|
+
path: ["agent", "web", "brave-search"],
|
|
228
|
+
credits: FEATURE_COSTS.BRAVE_SEARCH, // 0.65 credits per search
|
|
229
|
+
|
|
230
|
+
aiTool: {
|
|
231
|
+
displayName: "Search the Web",
|
|
232
|
+
icon: "search",
|
|
233
|
+
instructions: "Use this to find current information online",
|
|
234
|
+
},
|
|
235
|
+
|
|
236
|
+
fields: objectField(
|
|
237
|
+
{ type: WidgetType.CONTAINER },
|
|
238
|
+
{ request: "urlPathParams", response: true },
|
|
239
|
+
{
|
|
240
|
+
query: requestUrlParamField({ type: WidgetType.TEXT }, z.string().min(1)),
|
|
241
|
+
results: responseArrayField(
|
|
242
|
+
{ type: WidgetType.LINK_LIST }, // Renders as clickable links!
|
|
243
|
+
objectField(
|
|
244
|
+
{ type: WidgetType.LINK_CARD },
|
|
245
|
+
{ response: true },
|
|
246
|
+
{
|
|
247
|
+
title: responseField({ type: WidgetType.TEXT }, z.string()),
|
|
248
|
+
url: responseField({ type: WidgetType.LINK }, z.string()),
|
|
249
|
+
snippet: responseField({ type: WidgetType.MARKDOWN }, z.string()),
|
|
250
|
+
},
|
|
251
|
+
),
|
|
252
|
+
),
|
|
253
|
+
},
|
|
254
|
+
),
|
|
255
|
+
});
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
**Result**: AI can search the web, and results display as beautiful, clickable link cards in the chat interface!
|
|
259
|
+
|
|
260
|
+
## Best Practices
|
|
261
|
+
|
|
262
|
+
### For Developers
|
|
263
|
+
|
|
264
|
+
1. **Choose Appropriate Widget Types**
|
|
265
|
+
- Match widget to data type
|
|
266
|
+
- Use LINK for URLs
|
|
267
|
+
- Use DATA_TABLE for tabular data
|
|
268
|
+
- Use MARKDOWN for rich text
|
|
269
|
+
|
|
270
|
+
2. **Set Reasonable Credit Costs**
|
|
271
|
+
- Free for simple operations
|
|
272
|
+
- 1-5 credits for API calls
|
|
273
|
+
- 10+ credits for expensive operations
|
|
274
|
+
|
|
275
|
+
3. **Write Clear AI Instructions**
|
|
276
|
+
- Tell AI when to use your tool
|
|
277
|
+
- Provide examples
|
|
278
|
+
- Explain parameters
|
|
279
|
+
|
|
280
|
+
4. **Use Semantic Aliases**
|
|
281
|
+
- Multiple ways to call same command
|
|
282
|
+
- User-friendly names
|
|
283
|
+
- Namespace related commands
|
|
284
|
+
|
|
285
|
+
5. **Handle Errors Gracefully**
|
|
286
|
+
- Return clear error messages
|
|
287
|
+
- Suggest fixes
|
|
288
|
+
- Log for debugging
|
|
289
|
+
|
|
290
|
+
## Troubleshooting
|
|
291
|
+
|
|
292
|
+
**Tool not showing in AI chat**:
|
|
293
|
+
|
|
294
|
+
- Check `allowedRoles` includes user's role
|
|
295
|
+
- Verify `aiTool` metadata is defined
|
|
296
|
+
- Check user has enough credits
|
|
297
|
+
|
|
298
|
+
**CLI command not found**:
|
|
299
|
+
|
|
300
|
+
- Check `aliases` are defined
|
|
301
|
+
- Run `vibe list` to see all commands
|
|
302
|
+
- Verify permissions
|
|
303
|
+
|
|
304
|
+
**Widget not rendering**:
|
|
305
|
+
|
|
306
|
+
- Check widget type is registered
|
|
307
|
+
- Verify data structure matches widget
|
|
308
|
+
- Check browser console for errors
|
|
309
|
+
|
|
310
|
+
**Type errors**:
|
|
311
|
+
|
|
312
|
+
- Run `npx vibe check` to validate
|
|
313
|
+
- Check Zod schemas match data
|
|
314
|
+
- Verify imports are correct
|
|
315
|
+
|
|
316
|
+
## Learn More
|
|
317
|
+
|
|
318
|
+
- **PLAN.md** - Implementation roadmap for contributors
|
|
319
|
+
- **shared/widgets/** - Widget component documentation
|
|
320
|
+
- **ai-tool/** - AI tool system details
|
|
321
|
+
- **cli/** - CLI system details
|
|
322
|
+
- **mcp/** - MCP integration details
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
**Status**: Production Ready
|
|
327
|
+
**Version**: 1.0.0
|
|
328
|
+
**Last Updated**: 2025-01-30
|
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
# CLI System
|
|
2
|
+
|
|
3
|
+
**Command-line interface for all API endpoints**
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The CLI System automatically converts your API endpoints into terminal commands. Uses the same endpoint registry as AI tools and MCP.
|
|
8
|
+
|
|
9
|
+
## Quick Start
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Install globally
|
|
13
|
+
npm install -g vibe
|
|
14
|
+
|
|
15
|
+
# Or use npx
|
|
16
|
+
npx vibe <command>
|
|
17
|
+
|
|
18
|
+
# Run a command
|
|
19
|
+
vibe create-user --email=john@example.com --name="John Doe"
|
|
20
|
+
|
|
21
|
+
# Use aliases
|
|
22
|
+
vibe user:new --email=john@example.com
|
|
23
|
+
vibe signup --email=john@example.com
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## How It Works
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
1. Discovery
|
|
30
|
+
└─> Scans definition.ts files
|
|
31
|
+
└─> Extracts CLI metadata (aliases, params)
|
|
32
|
+
|
|
33
|
+
2. Command Registration
|
|
34
|
+
└─> Registers commands with Commander.js
|
|
35
|
+
└─> Maps aliases to endpoints
|
|
36
|
+
|
|
37
|
+
3. Execution
|
|
38
|
+
└─> Parses CLI arguments
|
|
39
|
+
└─> Validates parameters
|
|
40
|
+
└─> Calls endpoint via route handler
|
|
41
|
+
└─> Formats output (pretty or JSON)
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Command Naming
|
|
45
|
+
|
|
46
|
+
Commands use path segments or aliases:
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
API Path: /user/create
|
|
50
|
+
Command: vibe core:user:create
|
|
51
|
+
|
|
52
|
+
Aliases: ["create-user", "user:new", "signup"]
|
|
53
|
+
Commands: vibe create-user
|
|
54
|
+
vibe user:new
|
|
55
|
+
vibe signup
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Defining CLI Metadata
|
|
59
|
+
|
|
60
|
+
```typescript
|
|
61
|
+
// definition.ts
|
|
62
|
+
const { POST } = createEndpoint({
|
|
63
|
+
method: Methods.POST,
|
|
64
|
+
path: ["user", "create"],
|
|
65
|
+
aliases: ["create-user", "user:new", "signup"],
|
|
66
|
+
|
|
67
|
+
cli: {
|
|
68
|
+
firstCliArgument: "email", // First positional arg
|
|
69
|
+
examples: [
|
|
70
|
+
{
|
|
71
|
+
command: "create-user john@example.com --name='John Doe'",
|
|
72
|
+
description: "Create a user with email and name",
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
},
|
|
76
|
+
|
|
77
|
+
// ... rest of definition
|
|
78
|
+
});
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## CLI Arguments
|
|
82
|
+
|
|
83
|
+
### Positional Arguments
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# First argument is email (defined by firstCliArgument)
|
|
87
|
+
vibe create-user john@example.com --name="John Doe"
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Named Arguments
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# All fields can be named arguments
|
|
94
|
+
vibe create-user --email=john@example.com --name="John Doe"
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Boolean Flags
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
# Boolean fields become flags
|
|
101
|
+
vibe migrate --force
|
|
102
|
+
vibe migrate --no-force
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Arrays
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
# Arrays use comma-separated values
|
|
109
|
+
vibe send-email --to=john@example.com,jane@example.com
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### JSON Objects
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
# Complex objects use JSON
|
|
116
|
+
vibe create-user --metadata='{"source":"cli","version":"1.0"}'
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Output Formats
|
|
120
|
+
|
|
121
|
+
### Pretty (Default)
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
vibe create-user --email=john@example.com
|
|
125
|
+
|
|
126
|
+
✓ User created successfully
|
|
127
|
+
ID: 550e8400-e29b-41d4-a716-446655440000
|
|
128
|
+
Email: john@example.com
|
|
129
|
+
Name: John Doe
|
|
130
|
+
Created: 2024-01-15 10:30:00
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### JSON
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
vibe create-user --email=john@example.com --output=json
|
|
137
|
+
|
|
138
|
+
{
|
|
139
|
+
"success": true,
|
|
140
|
+
"data": {
|
|
141
|
+
"id": "550e8400-e29b-41d4-a716-446655440000",
|
|
142
|
+
"email": "john@example.com",
|
|
143
|
+
"name": "John Doe",
|
|
144
|
+
"createdAt": "2024-01-15T10:30:00Z"
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Authentication
|
|
150
|
+
|
|
151
|
+
CLI authentication flow:
|
|
152
|
+
|
|
153
|
+
1. Check `.vibe.session` file (from login/signup)
|
|
154
|
+
2. If no session, check `VIBE_CLI_USER_EMAIL` env var and authenticate from DB
|
|
155
|
+
3. If `VIBE_CLI_USER_EMAIL` is empty, create public user with new lead
|
|
156
|
+
4. If email is set but user not found in DB, return error
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
# Use authenticated user from DB
|
|
160
|
+
export VIBE_CLI_USER_EMAIL=admin@example.com
|
|
161
|
+
vibe create-user --email=john@example.com
|
|
162
|
+
|
|
163
|
+
# Use public user (no env var set)
|
|
164
|
+
unset VIBE_CLI_USER_EMAIL
|
|
165
|
+
vibe create-user --email=john@example.com
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Permission System
|
|
169
|
+
|
|
170
|
+
Commands respect endpoint permissions:
|
|
171
|
+
|
|
172
|
+
```typescript
|
|
173
|
+
// definition.ts
|
|
174
|
+
allowedRoles: [UserRole.ADMIN, UserRole.CLI_OFF];
|
|
175
|
+
|
|
176
|
+
// user must have ADMIN; disabled for CLI
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Special role `WEB_OFF` and `AI_TOOL_OFF` for CLI-only operations:
|
|
180
|
+
|
|
181
|
+
- Database migrations
|
|
182
|
+
- System maintenance
|
|
183
|
+
- Dangerous operations
|
|
184
|
+
|
|
185
|
+
## Built-in Commands
|
|
186
|
+
|
|
187
|
+
### Help
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
# List all commands
|
|
191
|
+
vibe --help
|
|
192
|
+
|
|
193
|
+
# Command-specific help
|
|
194
|
+
vibe create-user --help
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Version
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
vibe --version
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### Setup
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
# Install CLI globally
|
|
207
|
+
vibe setup:install
|
|
208
|
+
|
|
209
|
+
# Check installation
|
|
210
|
+
vibe setup:status
|
|
211
|
+
|
|
212
|
+
# Update CLI
|
|
213
|
+
vibe setup:update
|
|
214
|
+
|
|
215
|
+
# Uninstall CLI
|
|
216
|
+
vibe setup:uninstall
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### Vibe Check
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
# Check all files
|
|
223
|
+
vibe check
|
|
224
|
+
|
|
225
|
+
# Check specific path
|
|
226
|
+
vibe check src/app/api/[locale]/user
|
|
227
|
+
|
|
228
|
+
# Lint only
|
|
229
|
+
vibe lint
|
|
230
|
+
|
|
231
|
+
# Type check only
|
|
232
|
+
vibe typecheck
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
## Configuration
|
|
236
|
+
|
|
237
|
+
```typescript
|
|
238
|
+
// config/platform-config.ts
|
|
239
|
+
export const CLI_CONFIG: PlatformConfig = {
|
|
240
|
+
platform: Platform.CLI,
|
|
241
|
+
rootDir: "src/app/api/[locale]",
|
|
242
|
+
excludePaths: [], // CLI can access everything
|
|
243
|
+
cache: {
|
|
244
|
+
enabled: true,
|
|
245
|
+
ttl: 10 * 60 * 1000, // 10 minutes
|
|
246
|
+
},
|
|
247
|
+
rateLimit: {
|
|
248
|
+
enabled: false, // No rate limiting for CLI
|
|
249
|
+
},
|
|
250
|
+
};
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
## Best Practices
|
|
254
|
+
|
|
255
|
+
### 1. Use Semantic Aliases
|
|
256
|
+
|
|
257
|
+
```typescript
|
|
258
|
+
aliases: [
|
|
259
|
+
"create-user", // Imperative
|
|
260
|
+
"user:new", // Namespaced
|
|
261
|
+
"signup", // User-facing term
|
|
262
|
+
];
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### 2. Define First Argument
|
|
266
|
+
|
|
267
|
+
```typescript
|
|
268
|
+
cli: {
|
|
269
|
+
firstCliArgument: "email", // Most common argument
|
|
270
|
+
}
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
### 3. Provide Examples
|
|
274
|
+
|
|
275
|
+
```typescript
|
|
276
|
+
cli: {
|
|
277
|
+
examples: [
|
|
278
|
+
{
|
|
279
|
+
command: "create-user john@example.com --name='John Doe'",
|
|
280
|
+
description: "Create a user with email and name",
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
command: "create-user --email=john@example.com --role=ADMIN",
|
|
284
|
+
description: "Create an admin user",
|
|
285
|
+
},
|
|
286
|
+
],
|
|
287
|
+
}
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
### 4. Handle Errors Gracefully
|
|
291
|
+
|
|
292
|
+
```typescript
|
|
293
|
+
errorTypes: {
|
|
294
|
+
[EndpointErrorTypes.VALIDATION_FAILED]: {
|
|
295
|
+
title: "Invalid input",
|
|
296
|
+
description: "Please check that email is valid and name is not empty"
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
## Scripting
|
|
302
|
+
|
|
303
|
+
CLI is perfect for automation:
|
|
304
|
+
|
|
305
|
+
```bash
|
|
306
|
+
#!/bin/bash
|
|
307
|
+
|
|
308
|
+
# Create multiple users
|
|
309
|
+
for email in john@example.com jane@example.com; do
|
|
310
|
+
vibe create-user --email=$email --name="Test User"
|
|
311
|
+
done
|
|
312
|
+
|
|
313
|
+
# Check status
|
|
314
|
+
if vibe db:ping --output=json | jq -r '.success' | grep -q 'true'; then
|
|
315
|
+
echo "Database is healthy"
|
|
316
|
+
else
|
|
317
|
+
echo "Database is down"
|
|
318
|
+
exit 1
|
|
319
|
+
fi
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
## Troubleshooting
|
|
323
|
+
|
|
324
|
+
**"Command not found: vibe"**
|
|
325
|
+
|
|
326
|
+
```bash
|
|
327
|
+
npm install -g vibe
|
|
328
|
+
# or use npx
|
|
329
|
+
npx vibe <command>
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
**"Permission denied"**
|
|
333
|
+
|
|
334
|
+
- Check CLI user's role in database
|
|
335
|
+
- Verify endpoint's allowedRoles
|
|
336
|
+
- Use correct VIBE_CLI_USER_EMAIL
|
|
337
|
+
|
|
338
|
+
**"Invalid arguments"**
|
|
339
|
+
|
|
340
|
+
- Check command help: `vibe <command> --help`
|
|
341
|
+
- Verify argument names match definition
|
|
342
|
+
- Use quotes for strings with spaces
|
|
343
|
+
|
|
344
|
+
## Related
|
|
345
|
+
|
|
346
|
+
- [Main README](../README.md)
|
|
347
|
+
- [Shared README](../shared/README.md)
|
|
348
|
+
- [AI Tool README](../ai-tool/README.md)
|
|
349
|
+
- [MCP README](../mcp/README.md)
|