@h-ai/cli 1.0.0-beta.2 → 1.0.0-beta.21
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/README.en.md +74 -154
- package/README.ja.md +74 -154
- package/README.md +74 -154
- package/dist/{chunk-AKV2CQZV.js → chunk-2ZL5ORQ2.js} +316 -97
- package/dist/chunk-2ZL5ORQ2.js.map +1 -0
- package/dist/{chunk-EF7WOFWZ.js → chunk-L53P43B2.js} +1312 -163
- package/dist/chunk-L53P43B2.js.map +1 -0
- package/dist/cli-config-templates-LWMD2I6V.js +5 -0
- package/dist/{cli-config-templates-HHFHNXBN.js.map → cli-config-templates-LWMD2I6V.js.map} +1 -1
- package/dist/{cli-skill-templates-PN4FLGBC.js → cli-skill-templates-D6S2OQ6X.js} +3 -3
- package/dist/{cli-skill-templates-PN4FLGBC.js.map → cli-skill-templates-D6S2OQ6X.js.map} +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +30118 -3253
- package/dist/index.js.map +1 -1
- package/dist/metafile-esm.json +1 -1
- package/package.json +22 -18
- package/templates/README.md +45 -30
- package/templates/apps/admin/src/routes/+layout.svelte.hbs +16 -10
- package/templates/apps/admin/src/routes/+page.svelte.hbs +4 -4
- package/templates/apps/admin/src/routes/admin/+layout.svelte.hbs +17 -7
- package/templates/apps/admin/src/routes/admin/+page.svelte.hbs +26 -6
- package/templates/apps/admin/src/routes/admin/settings/+page.svelte.hbs +2 -2
- package/templates/apps/api/.dockerignore.hbs +10 -0
- package/templates/apps/api/apps/{{projectName}}-contract/README.md.hbs +8 -0
- package/templates/apps/api/apps/{{projectName}}-contract/src/app-schemas.ts.hbs +6 -1
- package/templates/apps/api/apps/{{projectName}}-contract/src/{{projectName}}-contract.ts.hbs +13 -5
- package/templates/apps/api/apps/{{projectName}}-contract/tests/contract.test.ts.hbs +13 -5
- package/templates/apps/api/apps/{{projectName}}-contract/tsup.config.ts.hbs +3 -1
- package/templates/apps/api/apps/{{projectName}}-serv/README.md.hbs +6 -2
- package/templates/apps/api/apps/{{projectName}}-serv/config/_serv.yml.hbs +24 -2
- package/templates/apps/api/apps/{{projectName}}-serv/package.json.hbs +4 -4
- package/templates/apps/api/apps/{{projectName}}-serv/src/app.ts.hbs +74 -24
- package/templates/apps/api/apps/{{projectName}}-serv/src/build-metadata.ts.hbs +0 -1
- package/templates/apps/api/apps/{{projectName}}-serv/src/lib/server/init.ts.hbs +153 -37
- package/templates/apps/api/apps/{{projectName}}-serv/src/server/procedures/index.ts.hbs +39 -13
- package/templates/apps/api/apps/{{projectName}}-serv/tests/service.test.ts.hbs +106 -33
- package/templates/apps/api/apps/{{projectName}}-serv/tsup.config.ts.hbs +3 -1
- package/templates/apps/api/apps/{{projectName}}-serv/vitest.config.ts.hbs +3 -1
- package/templates/apps/api/e2e/api-serv.spec.ts.hbs +20 -3
- package/templates/apps/api/e2e/capture-evidence.ts.hbs +4 -1
- package/templates/apps/api/eslint.config.js.hbs +3 -1
- package/templates/apps/api/images/serv.Dockerfile.hbs +15 -10
- package/templates/apps/api/playwright.config.ts.hbs +23 -19
- package/templates/apps/api/pnpm-workspace.yaml.hbs +27 -16
- package/templates/apps/fullstack/.dockerignore.hbs +10 -0
- package/templates/apps/fullstack/.gitignore.hbs +7 -2
- package/templates/apps/fullstack/apps/{{projectName}}-app/README.md.hbs +14 -12
- package/templates/apps/fullstack/apps/{{projectName}}-app/capacitor.config.ts.hbs +5 -3
- package/templates/apps/fullstack/apps/{{projectName}}-app/eslint.config.js.hbs +10 -2
- package/templates/apps/fullstack/apps/{{projectName}}-app/package.json.hbs +1 -1
- package/templates/apps/fullstack/apps/{{projectName}}-app/src/App.svelte.hbs +10 -2
- package/templates/apps/fullstack/apps/{{projectName}}-app/src/build-metadata.ts.hbs +0 -1
- package/templates/apps/fullstack/apps/{{projectName}}-app/src/lib/capacitor.ts.hbs +0 -1
- package/templates/apps/fullstack/apps/{{projectName}}-app/svelte.config.js.hbs +4 -1
- package/templates/apps/fullstack/apps/{{projectName}}-app/vite.config.ts.hbs +16 -4
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/README.md.hbs +10 -8
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/package.json.hbs +3 -3
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/src/App.svelte.hbs +8 -2
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/src/build-metadata.ts.hbs +0 -1
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/src-tauri/tauri.conf.json.hbs +0 -2
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/svelte.config.js.hbs +4 -1
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/vite.config.ts.hbs +16 -4
- package/templates/apps/fullstack/apps/{{projectName}}-miniapp/README.md.hbs +2 -0
- package/templates/apps/fullstack/apps/{{projectName}}-web/README.md.hbs +9 -9
- package/templates/apps/fullstack/apps/{{projectName}}-web/eslint.config.js.hbs +10 -2
- package/templates/apps/fullstack/apps/{{projectName}}-web/index.html.hbs +1 -0
- package/templates/apps/fullstack/apps/{{projectName}}-web/src/build-metadata.ts.hbs +0 -1
- package/templates/apps/fullstack/apps/{{projectName}}-web/src/main.ts.hbs +0 -2
- package/templates/apps/fullstack/apps/{{projectName}}-web/svelte.config.js.hbs +4 -1
- package/templates/apps/fullstack/apps/{{projectName}}-web/vite.config.ts.hbs +19 -5
- package/templates/apps/fullstack/docs/security-configuration.md.hbs +4 -1
- package/templates/apps/fullstack/e2e/fullstack.spec.ts.hbs +140 -28
- package/templates/apps/fullstack/e2e/session-close.spec.ts.hbs +19 -5
- package/templates/apps/fullstack/eslint.config.js.hbs +3 -1
- package/templates/apps/fullstack/images/serv.Dockerfile.hbs +19 -11
- package/templates/apps/fullstack/images/web.Dockerfile.hbs +17 -8
- package/templates/apps/fullstack/package.json.hbs +2 -1
- package/templates/apps/fullstack/packages/{{projectName}}-contract/README.md.hbs +7 -5
- package/templates/apps/fullstack/packages/{{projectName}}-contract/src/admin-contract.ts.hbs +114 -23
- package/templates/apps/fullstack/packages/{{projectName}}-contract/src/admin-schemas.ts.hbs +57 -11
- package/templates/apps/fullstack/packages/{{projectName}}-contract/tsup.config.ts.hbs +3 -1
- package/templates/apps/fullstack/packages/{{projectName}}-serv/README.md.hbs +17 -7
- package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_reach.yml.hbs +13 -7
- package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_serv.yml.hbs +17 -7
- package/templates/apps/fullstack/packages/{{projectName}}-serv/package.json.hbs +10 -4
- package/templates/apps/fullstack/packages/{{projectName}}-serv/src/app-server.ts.hbs +65 -30
- package/templates/apps/fullstack/packages/{{projectName}}-serv/src/build-metadata.ts.hbs +0 -1
- package/templates/apps/fullstack/packages/{{projectName}}-serv/src/index.ts.hbs +1 -2
- package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/admin-service.ts.hbs +69 -21
- package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/business-settings.ts.hbs +21 -5
- package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/procedures/admin-procedures.ts.hbs +63 -11
- package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/procedures/app-procedures.ts.hbs +6 -1
- package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/procedures/index.ts.hbs +3 -1
- package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/runtime.ts.hbs +147 -33
- package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/security-roles.ts.hbs +43 -12
- package/templates/apps/fullstack/packages/{{projectName}}-serv/tests/app-server.test.ts.hbs +146 -30
- package/templates/apps/fullstack/packages/{{projectName}}-serv/tests/runtime.test.ts.hbs +33 -10
- package/templates/apps/fullstack/packages/{{projectName}}-serv/tests/security.test.ts.hbs +142 -26
- package/templates/apps/fullstack/packages/{{projectName}}-serv/tsup.config.ts.hbs +6 -2
- package/templates/apps/fullstack/packages/{{projectName}}-serv/vitest.config.ts.hbs +3 -1
- package/templates/apps/fullstack/packages/{{projectName}}-shared/README.md.hbs +48 -66
- package/templates/apps/fullstack/packages/{{projectName}}-shared/messages/en-US.json.hbs +1 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/messages/ja-JP.json.hbs +1 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/messages/zh-CN.json.hbs +1 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/api/api-client.ts.hbs +9 -2
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/api/feedback-client.ts.hbs +0 -3
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/api/sensitive-actions.svelte.ts.hbs +15 -3
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/components/AppShell.svelte.hbs +33 -7
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/components/FeedbackEntry.svelte.hbs +16 -2
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/pages/audit.svelte.hbs +104 -13
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/pages/feedback.svelte.hbs +37 -7
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/pages/roles.svelte.hbs +9 -3
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/pages/settings.svelte.hbs +25 -3
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/pages/users.svelte.hbs +133 -19
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/security/role-label.ts.hbs +14 -2
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/stores/guide-store.ts.hbs +66 -34
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/stores/management-store.svelte.ts.hbs +132 -30
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/stores/theme-store.svelte.ts.hbs +8 -2
- package/templates/apps/fullstack/packages/{{projectName}}-shared/tests/api-client.test.ts.hbs +23 -5
- package/templates/apps/fullstack/packages/{{projectName}}-shared/tests/management-store.test.ts.hbs +143 -21
- package/templates/apps/fullstack/packages/{{projectName}}-shared/vitest.config.ts.hbs +7 -2
- package/templates/apps/fullstack/playwright.config.ts.hbs +25 -3
- package/templates/apps/fullstack/pnpm-workspace.yaml.hbs +30 -14
- package/templates/apps/h5/src/routes/+layout.svelte.hbs +74 -30
- package/templates/apps/h5/src/routes/+page.svelte.hbs +2 -2
- package/templates/apps/h5/src/routes/discover/+page.svelte.hbs +2 -2
- package/templates/apps/h5/src/routes/profile/+page.svelte.hbs +2 -2
- package/templates/apps/mobile-app/capacitor.config.ts.hbs +5 -2
- package/templates/apps/mobile-app/messages/en-US.json +2 -2
- package/templates/apps/mobile-app/messages/ja-JP.json +2 -2
- package/templates/apps/mobile-app/messages/zh-CN.json +2 -2
- package/templates/apps/mobile-app/src/App.svelte.hbs +17 -5
- package/templates/apps/mobile-app/src/lib/api.ts.hbs +20 -6
- package/templates/apps/mobile-app/src/lib/app-config.ts.hbs +8 -1
- package/templates/apps/mobile-app/src/lib/pages/home.svelte.hbs +6 -2
- package/templates/apps/mobile-app/src/lib/pages/profile.svelte.hbs +13 -1
- package/templates/apps/mobile-app/src/lib/pages/tasks.svelte.hbs +5 -1
- package/templates/apps/website/scripts/static-website.mjs.hbs +19 -6
- package/templates/apps/website/src/routes/+layout.svelte.hbs +56 -29
- package/templates/apps/website/src/routes/+page.svelte.hbs +4 -4
- package/templates/apps/website/src/routes/about/+page.svelte.hbs +2 -2
- package/templates/apps/website/src/routes/contact/+page.svelte.hbs +2 -2
- package/templates/apps/website/src/routes/services/+page.svelte.hbs +20 -5
- package/templates/base/.dockerignore.hbs +10 -0
- package/templates/base/.gitignore.hbs +7 -2
- package/templates/base/e2e/app.spec.ts.hbs +130 -36
- package/templates/base/eslint-rules.js +44 -25
- package/templates/base/eslint.config.js.hbs +3 -1
- package/templates/base/images/web.Dockerfile.hbs +25 -14
- package/templates/base/package.json.hbs +13 -7
- package/templates/base/patches/daisyui-5.7.50.patch +8 -0
- package/templates/base/patches/deepmerge-4.3.1.patch +51 -0
- package/templates/base/playwright.config.ts +3 -1
- package/templates/base/pnpm-workspace.yaml.hbs +33 -16
- package/templates/base/src/app.d.ts.hbs +1 -1
- package/templates/base/src/app.html.hbs +1 -0
- package/templates/base/src/hooks.server.ts.hbs +44 -33
- package/templates/base/src/lib/build-metadata.ts.hbs +0 -1
- package/templates/base/src/lib/server/init.ts.hbs +146 -35
- package/templates/base/src/lib/server/kit-config.ts.hbs +7 -4
- package/templates/base/src/routes/+layout.server.ts.hbs +2 -2
- package/templates/base/svelte.config.js.hbs +10 -100
- package/templates/base/tests/scaffold.test.ts.hbs +12 -3
- package/templates/base/tsconfig.json.hbs +7 -4
- package/templates/base/vite.config.ts.hbs +108 -14
- package/templates/base/vitest.config.ts.hbs +6 -2
- package/templates/features/ai/routes/api/chat/+server.ts +3 -1
- package/templates/features/iam/routes-admin/(auth)/auth/forgot-password/+page.svelte.hbs +3 -3
- package/templates/features/iam/routes-admin/(auth)/auth/login/+page.svelte.hbs +3 -3
- package/templates/features/iam/routes-admin/(auth)/auth/register/+page.svelte.hbs +3 -3
- package/templates/features/iam/routes-admin/(auth)/auth/reset-password/+page.svelte.hbs +3 -3
- package/templates/features/iam/routes-h5/auth/forgot-password/+page.svelte.hbs +3 -3
- package/templates/features/iam/routes-h5/auth/login/+page.svelte.hbs +3 -3
- package/templates/features/iam/routes-h5/auth/register/+page.svelte.hbs +3 -3
- package/templates/features/iam/routes-h5/auth/reset-password/+page.svelte.hbs +3 -3
- package/templates/features/iam/routes-website/auth/forgot-password/+page.svelte.hbs +3 -3
- package/templates/features/iam/routes-website/auth/login/+page.svelte.hbs +3 -3
- package/templates/features/iam/routes-website/auth/register/+page.svelte.hbs +3 -3
- package/templates/features/iam/routes-website/auth/reset-password/+page.svelte.hbs +3 -3
- package/templates/features/payment/routes/api/v1/payment/create/+server.ts +14 -3
- package/templates/shared/browser-check/startup.js +115 -0
- package/templates/shared/browser-check/update.css +37 -0
- package/templates/shared/browser-check/update.html +19 -0
- package/templates/shared/browser-startup.spec.ts +23 -0
- package/templates/shared/build-metadata.ts +18 -4
- package/templates/shared/e2e-env.ts +22 -6
- package/templates/shared/native-name.d.mts +5 -0
- package/templates/shared/native-name.mjs +94 -0
- package/templates/shared/public-base-path.mjs +17 -4
- package/templates/shared/run-e2e.mjs +46 -12
- package/templates/shared/run-node.mjs +56 -0
- package/templates/shared/run-tauri.mjs +74 -0
- package/templates/shared/vite-runtime-config.ts +9 -3
- package/templates/skills/AGENTS.md +10 -73
- package/templates/skills/bridges/admin/AGENTS.md +9 -65
- package/templates/skills/bridges/api/AGENTS.md +8 -59
- package/templates/skills/bridges/fullstack/AGENTS.md.hbs +9 -54
- package/templates/skills/bridges/h5/AGENTS.md +8 -63
- package/templates/skills/bridges/mobile-app/AGENTS.md +8 -62
- package/templates/skills/bridges/website/AGENTS.md +8 -63
- package/templates/skills/hai-ai/SKILL.md +6 -2
- package/templates/skills/hai-ai/acp.md +153 -0
- package/templates/skills/hai-ai/guide.md +27 -12
- package/templates/skills/hai-ai/reference.md +24 -15
- package/templates/skills/hai-ai/resources.md +69 -0
- package/templates/skills/hai-api-client/SKILL.md +1 -1
- package/templates/skills/hai-api-client/reference.md +3 -1
- package/templates/skills/hai-app-create/collaboration.md +7 -0
- package/templates/skills/hai-app-create/development.md +19 -10
- package/templates/skills/hai-app-create/project.md +33 -0
- package/templates/skills/hai-app-create/reference.md +10 -10
- package/templates/skills/hai-app-tests/reference.md +1 -1
- package/templates/skills/hai-app-tests/validation.md +1 -0
- package/templates/skills/hai-build/SKILL.md +19 -9
- package/templates/skills/hai-build/paths.md +4 -2
- package/templates/skills/hai-build/reference.md +26 -8
- package/templates/skills/hai-cache/reference.md +6 -2
- package/templates/skills/hai-capacitor/SKILL.md +1 -0
- package/templates/skills/hai-capacitor/reference.md +24 -0
- package/templates/skills/hai-ci/SKILL.md +3 -0
- package/templates/skills/hai-core/SKILL.md +9 -4
- package/templates/skills/hai-core/reference.md +40 -10
- package/templates/skills/hai-core/request-access.md +2 -2
- package/templates/skills/hai-crypto/SKILL.md +2 -2
- package/templates/skills/hai-crypto/reference.md +7 -3
- package/templates/skills/hai-deploy/SKILL.md +41 -5
- package/templates/skills/hai-deploy/middleware.md +26 -14
- package/templates/skills/hai-framework-sync/SKILL.md +13 -9
- package/templates/skills/hai-framework-sync/sync.md +2 -0
- package/templates/skills/hai-iam/reference.md +2 -2
- package/templates/skills/hai-kit/SKILL.md +1 -1
- package/templates/skills/hai-kit/reference.md +19 -5
- package/templates/skills/hai-payment/reference.md +41 -17
- package/templates/skills/hai-reach/SKILL.md +3 -1
- package/templates/skills/hai-reach/reference.md +29 -9
- package/templates/skills/hai-reldb/SKILL.md +1 -1
- package/templates/skills/hai-reldb/reference.md +9 -2
- package/templates/skills/hai-scheduler/reference.md +1 -1
- package/templates/skills/hai-serv/SKILL.md +2 -1
- package/templates/skills/hai-serv/reference.md +26 -15
- package/templates/skills/hai-storage/reference.md +23 -6
- package/templates/skills/hai-ui/SKILL.md +11 -6
- package/templates/skills/hai-ui/charts.md +51 -0
- package/templates/skills/hai-ui/guide.md +1 -1
- package/templates/skills/hai-ui/reference.md +58 -38
- package/templates/skills/hai-vecdb/reference.md +8 -3
- package/dist/chunk-AKV2CQZV.js.map +0 -1
- package/dist/chunk-EF7WOFWZ.js.map +0 -1
- package/dist/chunk-MUHRBJSW.js +0 -29272
- package/dist/chunk-MUHRBJSW.js.map +0 -1
- package/dist/cli-config-templates-HHFHNXBN.js +0 -5
- package/dist/src-TEBHR5I5.js +0 -5
- package/dist/src-TEBHR5I5.js.map +0 -1
- package/templates/apps/fullstack/playwright.session-close.config.ts.hbs +0 -18
package/README.md
CHANGED
|
@@ -1,228 +1,148 @@
|
|
|
1
1
|
# @h-ai/cli
|
|
2
2
|
|
|
3
|
-
[简体中文](README.md) | [English](README.en.md) | [日本語](README.ja.md)
|
|
3
|
+
[简体中文](README.md) | [English](README.en.md) | [日本語](README.ja.md) · [框架首页](../../README.md)
|
|
4
4
|
|
|
5
|
-
[
|
|
5
|
+
用 `hai` 创建应用、添加模块、生成基础代码,并构建 Web、API 与原生制品。完整操作流程和配置含义见[使用指南](../../docs/usage/README.md)。
|
|
6
6
|
|
|
7
|
-
##
|
|
8
|
-
|
|
9
|
-
生成项目默认启用 `zh-CN`、`en-US`、`ja-JP`。交互配置可选择日语为默认语言;fullstack 可通过 `fullstack.i18n.locales` 缩小启用语言列表。CLI 终端语言按 `HAI_CORE_DEFAULTLOCALE` → `LC_ALL` → `LC_MESSAGES` → `LANG` 选择,支持中英日文。
|
|
10
|
-
|
|
11
|
-
用 `hai` 创建应用、添加模块、生成基础代码,再构建和交付应用。支持 SvelteKit、独立 API 和前后端分离工程。第一次使用可按[完整使用指南](../../docs/usage/README.md)从创建走到部署。
|
|
12
|
-
|
|
13
|
-
## 核心功能清单
|
|
14
|
-
|
|
15
|
-
- 创建管理后台、企业官网、H5、API、移动应用或多端 fullstack 工程。
|
|
16
|
-
- 为已有项目添加模块、补齐配置和 AI 开发指引。
|
|
17
|
-
- 生成页面、组件、接口、模型和迁移骨架。
|
|
18
|
-
- 按镜像构建,完整离线交付,或只更新选中的服务。
|
|
19
|
-
|
|
20
|
-
## 使用入门
|
|
7
|
+
## 快速开始
|
|
21
8
|
|
|
22
9
|
### 安装 CLI
|
|
23
10
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
以下使用目标 Beta 版;先核对实际发布渠道与 `1.0.0-beta.1` 是否可用,再安装。当前验收目标不代表已经发布;不带版本会选择 latest,不会自动选择 Beta。
|
|
11
|
+
使用符合 `engines` 的 Node.js(`^22.23.4 || ^24.22.1 || ^26.12.1`)与 pnpm 12.11.2。PowerShell 使用 `pnpm.cmd`。
|
|
27
12
|
|
|
28
13
|
```sh
|
|
29
|
-
pnpm view @h-ai/cli
|
|
30
|
-
pnpm
|
|
31
|
-
pnpm add -g @h-ai/cli@1.0.0-beta.1
|
|
14
|
+
pnpm view @h-ai/cli@latest version
|
|
15
|
+
pnpm add -g @h-ai/cli@latest
|
|
32
16
|
hai --version
|
|
33
|
-
hai --
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
生成的框架依赖固定到 CLI 对应版本;安装失败会显示命令、退出码与输出,保留已生成文件供重试。未发布的源码功能请按下方本地开发方式验证。
|
|
37
|
-
|
|
38
|
-
### 创建项目
|
|
39
|
-
|
|
40
|
-
```sh
|
|
41
|
-
hai create my-app --type fullstack --frontends web --yes
|
|
17
|
+
hai create my-app --type fullstack --frontends web
|
|
42
18
|
cd my-app
|
|
43
19
|
pnpm dev
|
|
44
20
|
```
|
|
45
21
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
### 项目模板
|
|
49
|
-
|
|
50
|
-
| 类型 | 生成内容 |
|
|
51
|
-
| -------------------------- | ----------------------------------------------------------------- |
|
|
52
|
-
| `admin` / `website` / `h5` | SvelteKit 管理后台、官网、移动网页 |
|
|
53
|
-
| `api` | 共享 contract + API service 的 pnpm workspace |
|
|
54
|
-
| `mobile-app` | Svelte + Vite + Capacitor |
|
|
55
|
-
| `fullstack` | contract、API、共享界面与所选 Web/App/Desktop;miniapp 仅预留说明 |
|
|
22
|
+
输入项目名称与模板类型,输出工程文件;默认安装依赖并初始化 Git。`--defaults` 采用默认选择,`--no-install`、`--no-git`、`--no-deploy` 分别关闭安装、Git 初始化和部署开发依赖。省略名称或类型时交互选择。每个命令的选项以 `hai <command> --help` 为准。
|
|
56
23
|
|
|
57
|
-
|
|
24
|
+
## 功能
|
|
58
25
|
|
|
59
|
-
|
|
26
|
+
### 命令、输入与输出
|
|
60
27
|
|
|
61
|
-
|
|
28
|
+
这些是终端命令,不需要先初始化框架服务。按实际输出与退出码判断结果。TARGET_VERSION需替换为pnpm view刚查询到的已发布精确版本,不原样输入占位词。
|
|
62
29
|
|
|
63
|
-
|
|
30
|
+
| 命令 | 用途与输入 | 输出与示例 |
|
|
31
|
+
| -------------- | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
|
|
32
|
+
| create | 创建项目;名称、type、fullstack前端选择 | `hai create orders --type admin --defaults` 生成可运行的管理应用 |
|
|
33
|
+
| add | 给已有工程增加模块;模块名及当前目录 | `hai add ai` 补依赖、配置和技能,保留已有业务内容;应用仍需接入初始化、关闭和路由 |
|
|
34
|
+
| init | 补齐已有工程的配置与AI入口 | `hai init` 补缺失文件;`--force` 可重建模块配置,执行前核对差异 |
|
|
35
|
+
| generate / g | 生成业务骨架;类型、名称、目标workspace | `hai generate api orders --workspace orders-serv` 生成路由或contract/procedure;同类快捷命令为 g:page/g:component/g:api/g:model |
|
|
36
|
+
| build | 编译或打包;target、镜像/平台与源码 | `hai build --target image --json` 输出本次制品JSON;build不接收部署环境 |
|
|
37
|
+
| deploy | 计划、打包或发布;环境、制品、所选服务 | `hai deploy --env prod --plan` 输出只读计划;去掉plan才进入交付流程 |
|
|
38
|
+
| upgrade | 检查目标完整发布;精确版本、工程目录 | `hai upgrade TARGET_VERSION` 输出依赖、完整性、配置和技能漂移报告,不自动安装或覆盖 |
|
|
39
|
+
| deploy-secrets | 受控导入服务器已有凭据;目录、私有JSON | `hai deploy-secrets /srv/orders --import /private/orders.json --runtime docker` 默认预检,显式 `--apply` 才保存 |
|
|
40
|
+
| feedback | 查看离线诊断ZIP;action、包路径和过滤条件 | `hai feedback summary feedback.zip` 输出摘要;inspect/evidence/view分别输出清单、证据或本机查看器 |
|
|
64
41
|
|
|
65
|
-
|
|
42
|
+
全局 `--cwd/-C` 指定工程目录,`--verbose/-v` 开启详细诊断。CLI消息按 `HAI_CORE_DEFAULTLOCALE` → `LC_ALL` → `LC_MESSAGES` → `LANG` 选择中英日文;生成应用的默认语言独立配置。
|
|
66
43
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
website联系表单是界面示例,尚未接入留言服务。提交后通过Toast说明尚未开通并保留输入;投入使用前应连接实际服务并验证加载、成功和失败状态。
|
|
70
|
-
|
|
71
|
-
### 网站部署到子目录
|
|
72
|
-
|
|
73
|
-
SvelteKit的admin/h5/website通过构建进程`PUBLIC_BASE_PATH=/yyy`设置`kit.paths.base`,默认空字符串;改变目录需要重新构建,网关保留前缀。Vite Web默认`base: './'`,入口和runtime-config.js使用相对地址,hash路由可经剥离目录的网关挂载到`/yyy/`;显式设置PUBLIC_BASE_PATH时固定Vite基址。API地址独立配置,不能从网页目录推断。
|
|
74
|
-
|
|
75
|
-
Docker构建时同样显式设置PUBLIC_BASE_PATH;非根目录生成格式5制品,记录webBasePath,由部署SDK生成匹配代理、健康检查和访问URL,额外网关保留前缀。根目录继续使用格式4。全量和部分构建须保持相同目录,即使只构建serv;改变目录使用全量部署。格式5需匹配的CLI/Deploy,旧工具明确拒绝。操作、默认值、反代差异与实际截图见[网站子目录配置](../../docs/usage/configuration/delivery.md#网站部署在子目录)。
|
|
76
|
-
|
|
77
|
-
### Fullstack mini 管理后台
|
|
78
|
-
|
|
79
|
-
提供用户管理、角色、审计日志、头像和个人设置,以及主题、语言、引导和帮助中心。首次登录使用 `admin`,随机密码在当前环境 `.env.dev/.env.test/.env.prod` 的 `HAI_ADMIN_DEFAULT_PASSWORD`;已有用户时不会重设密码。模板业务可按需求修改,权限检查始终在服务端执行。
|
|
80
|
-
|
|
81
|
-
生成时为 `.env.dev/.env.test/.env.prod` 分别生成独立的初始管理员密码和传输密钥环;环境文件随项目提交,克隆后可共享,并可通过本机私有文件或进程环境覆盖。启用 transport 的应用缺少/错误配置 `HAI_CRYPTO_TRANSPORT_SERVERKEYRING` 时,部署在上传前指出配置来源;同一环境的所有节点复用同一有效密钥环,可直接加载环境文件,也可通过 Secret Manager 覆盖;不为每个节点临时生成。CLI 完成部署后提示 `HAI_ADMIN_DEFAULT_PASSWORD` 的实际来源,不打印密码,不依赖日志级别;该密码仅在首次创建管理员时生效。 离线入口也会提示服务器私有 `.env.runtime` 中的密码变量位置。
|
|
82
|
-
|
|
83
|
-
### 应用配置与显示
|
|
44
|
+
### 项目模板
|
|
84
45
|
|
|
85
|
-
|
|
46
|
+
| type | 生成内容与场景 |
|
|
47
|
+
| -------------------- | ----------------------------------------------------------------- |
|
|
48
|
+
| admin / website / h5 | SvelteKit管理后台、展示网站或移动网页;website默认只接Core/Kit/UI |
|
|
49
|
+
| api | contract与独立Serv服务的pnpm workspace |
|
|
50
|
+
| mobile-app | Svelte/Vite/Capacitor客户端,连接独立API |
|
|
51
|
+
| fullstack | contract、Serv、共享UI及所选Web/App/Desktop;miniapp仅为预留说明 |
|
|
86
52
|
|
|
87
|
-
|
|
53
|
+
模板只安装实际使用的模块,同时保留注释中的可选配置和 `.env.example`。取消配置注释不等于完成业务接入。AI/payment/vecdb/datapipe按需添加;生产使用共享数据库、Redis和文件后端。项目中默认启用中英日文,fullstack可用 `fullstack.i18n.locales` 选择子集。
|
|
88
54
|
|
|
89
|
-
|
|
55
|
+
带浏览器界面的模板在加载前检查已知低版本浏览器;最低要求为Chrome/Edge111、Firefox114、Safari及iOS/iPadOS16.4。[浏览器入口](../../docs/usage/getting-started/build.md#浏览器启动检测)
|
|
90
56
|
|
|
91
|
-
|
|
57
|
+
### 生成页面、组件、API、模型与迁移
|
|
92
58
|
|
|
93
59
|
```sh
|
|
94
|
-
hai add storage
|
|
95
|
-
hai init
|
|
96
|
-
hai generate
|
|
97
60
|
hai generate page dashboard
|
|
98
61
|
hai generate component UserCard
|
|
99
|
-
hai generate api orders
|
|
62
|
+
hai generate api orders --workspace orders-serv
|
|
100
63
|
hai generate model order
|
|
101
64
|
hai generate migration add-orders
|
|
102
65
|
```
|
|
103
66
|
|
|
104
|
-
`
|
|
105
|
-
|
|
106
|
-
page 只支持 SvelteKit 文件路由;api 会按目标应用选择 SvelteKit 文件路由或 serv 的共享 contract/procedure。API/fullstack 根目录可自动选择唯一后端;多应用用 `--workspace <包名或相对路径>`,也可进入目标 workspace。纯 Vite 的 page/api 组合明确拒绝;serv 不接受 `--output`,SvelteKit 路由输出须位于 `src/routes` 内,定制 `kit.files` 时明确拒绝猜测;API 目标须已安装 `@h-ai/kit` 与 `zod`。serv 只改写带 `@hai-generator` 标记的既有聚合入口,未知结构要求手动扩展,不创建平行路由。名称不能包含路径;默认拒绝覆盖,`--force` 只替换生成文件,不覆盖已有业务领域注册。整批预检,写入失败回滚本次修改。迁移只生成 up/down 函数,不自动执行;运行前确认数据影响。
|
|
107
|
-
|
|
108
|
-
CLI 消息支持中文、英文和日文,优先使用 `HAI_CORE_DEFAULTLOCALE`,再按 `LC_ALL` → `LC_MESSAGES` → `LANG` 选择非空终端语言;`en`/`zh`/`ja` 地区变体映射到现有字典,`C`/`POSIX` 使用英文。未知语言保留 core 当前语言(默认中文)。例如 PowerShell 先执行 `$env:HAI_CORE_DEFAULTLOCALE='en-US'`,再执行 `hai generate`。CLI 内部命令也响应 `core.i18n.setGlobalLocale('en-US')` 的同进程语言切换;省略类型或名称会交互,取消后不写文件。生成源码的中文注释和用户指定名称保留原样。
|
|
109
|
-
|
|
110
|
-
`create`、`add`、`init` 与 `generate` 的提示、校验、模块/模板名称、描述和完成信息均使用当前 CLI 语言。静态选择目录在读取时翻译,同一进程切换 locale 也会生效。CLI 语言与生成应用的 `core.defaultLocale` 分开配置;生成的中文 README、配置/源码注释、用户输入和外部工具原始诊断保留原样。
|
|
111
|
-
|
|
112
|
-
### SvelteKit 接口安全配置
|
|
113
|
-
|
|
114
|
-
创建 admin、website 或 h5 时选择 crypto,可在 `_kit.yml` 中开启 transport;默认仍为 false。服务端从各环境独立生成的密钥环装配加密,根布局只向浏览器提供公开 transport 配置,私有 IP/时段规则不下发。选择 db 后使用数据库 registry;无 db 的内存 registry 仅限开发/测试。静态网站没有这些动态接口。
|
|
67
|
+
名称不含路径,默认不覆盖业务文件。`--workspace` 选包名或相对目录;SvelteKit的 `--output` 必须位于src/routes,Serv生成器不接受该参数。page仅用于文件路由;纯Vite页面/API组合明确拒绝。Serv只更新带 `@hai-generator` 标记的聚合入口。整批预检,写入失败回滚本次修改;`--force` 仅替换生成文件。迁移输出up/down函数,不执行数据变更。
|
|
115
68
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
### 构建与部署
|
|
119
|
-
|
|
120
|
-
数据库连接保存前使用所选后端的真实公开 Schema 校验:MySQL `ssl` 仅 `false` 或严格 TLS 对象,`{}` 默认校验证书链和 DNS 身份;PostgreSQL 保留其模式。CLI 已内联纯 Schema 和 Zod,配置校验不要求目标应用安装数据库包/驱动;实际运行应用仍需相应依赖。部署功能仍须能解析已安装的 `@h-ai/deploy`(生成工程将其作为开发依赖)。
|
|
121
|
-
|
|
122
|
-
`pnpm build` 只编译源码。镜像使用 `images/` 中独立 Dockerfile,由项目根 `hai.json` 的 `build.images` 指定文件,部署参数放在同文件的 `deploy`;`--images` 决定构建哪些镜像,`--services` 决定更新哪些服务。容器引擎 auto 优先 Podman,再尝试 Docker。下载、安装和整理生产依赖共用包缓存与 SQLite 驱动缓存,避免重复下载。
|
|
123
|
-
|
|
124
|
-
默认容器用于 CPU 运行或连接远程 AI 服务,不额外下载 GPU 运行库。需要使用部署机器上的 GPU 时,自行定制镜像和容器运行参数。
|
|
125
|
-
|
|
126
|
-
CLI 在过滤调用者的 `HAI_/PUBLIC_/VITE_` 后,只注入内部生成的 `HAI_BUILD_ID/HAI_BUILD_COMMIT`,Docker 将同一镜像批次标识传入实际编译。生成应用的反馈分别读取前后端自己的 `appVersion/buildId/commit`,版本来自各自 manifest,同次 SSR 共用构建 ID;无所属 Git 提交时明确 `unknown`。三字段 `build-metadata.json` 与代码内联值一致,用于与 API/ZIP 实际证据核对。
|
|
127
|
-
|
|
128
|
-
交付角色统一为 `serv`(独立 API 后端)、`web`(静态或 SSR 浏览器站点)、`app`(Android/iOS 手机安装包)、`desktop`(桌面安装包)。Fullstack 容器为 serv + 可选 web,API 为 serv,admin/website/h5/mobile-app 的浏览器镜像为 web;原生 app/desktop 不作为服务器 Compose 服务。`--images` 与 `--services` 使用 serv/web,`--target app` 与 `--target desktop` 生成原生包。API workspace 的服务目录为 `apps/<项目>-serv`。镜像与容器共用工程根 `package.json.name` 的归一化身份(去 scope、转小写、非法字符合并为连字符);名称缺失或无效时报错,不回退目录名。镜像为 `localhost/hai-<项目>-<角色>:<buildId>`,容器为 `hai-<项目>-<环境>-<角色>`,镜像可跨环境复用。
|
|
69
|
+
### 构建、静态站与原生包
|
|
129
70
|
|
|
130
71
|
```sh
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
# 多个服务共用一个 --services,用英文逗号分隔;加引号兼容 PowerShell
|
|
135
|
-
pnpm run deploy --env prod --build --services "serv,web"
|
|
136
|
-
pnpm run deploy --env prod --build --bundle-only
|
|
72
|
+
hai build --target image --images "serv,web" --concurrency 1
|
|
73
|
+
hai build --target app --platform android --runtime auto --debug
|
|
74
|
+
hai build --target desktop --platform windows --arch x64
|
|
137
75
|
```
|
|
138
76
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
制品格式4和5都记录 primaryService(serv/web),hasWeb 表示完整工程是否包含浏览器端;格式5另记录非根目录webBasePath。只有 serv + web 才生成同源 API 代理。格式1至3制品须重新构建。旧部署先备份并核对项目名、数据卷和受管凭据,再切换到新的完整部署基线;工具不自动跨项目迁移数据。完整部署仍会按 Compose 规则清理同项目的旧服务容器,不能仅修改 deploy-target.json.directory 完成迁移。
|
|
77
|
+
target默认compile,其他目标为image/app/desktop。镜像角色为serv/web;原生app/desktop不作为Compose服务。镜像默认最多并行2项,runtime的auto优先可用Podman、再选Docker,显式选择不降级。Android省略runtime时使用本机工具链;iOS需macOS/Xcode与签名。
|
|
142
78
|
|
|
143
|
-
|
|
79
|
+
输出在 `.hai/build/` 的独立批次目录,成功归档后更新相对 `latest`。`--json` 的stdout仅包含本次镜像构建JSON,`artifactDir` 可供后续部署使用;进度和失败写stderr。Git来源为unknown或dirty未知时不能当干净制品。[命名、签名和自动化](../../docs/usage/getting-started/build.md)
|
|
144
80
|
|
|
145
|
-
|
|
81
|
+
website静态构建在构建进程设置 `HAI_BUILD_STATIC=1` 与实际 `PUBLIC_BASE_PATH`,再执行 `pnpm build`,只发布build目录并保留.nojekyll。静态构建拒绝动态API/actions、服务端业务初始化、私密资产及链接;联系表单未接服务时只提示并保留输入。网站目录变化需要重建;API地址独立配置。[静态与子目录部署](../../docs/usage/configuration/delivery.md)
|
|
146
82
|
|
|
147
|
-
|
|
83
|
+
### 部署、离线交付与恢复
|
|
148
84
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
正常前台部署及同步失败恢复收尾、发布终态后显式释放 `.deploy.lock`,后台服务继续运行不阻塞后续发布。HUP/INT/TERM 中断或父 shell 被强杀时,继承描述符的活跃子命令仍持锁,全部 holder 退出或服务器重启后才释放;锁文件永久保留,不删除或替换。
|
|
156
|
-
|
|
157
|
-
桌面安装包用 `pnpm build --target desktop --platform windows|linux|macos --arch x64|arm64`,在对应系统准备工具链并验证。容器里的 Web 页面不代替原生安装包。
|
|
158
|
-
|
|
159
|
-
### 使用 AI 辅助开发
|
|
85
|
+
```sh
|
|
86
|
+
hai deploy --env prod --plan
|
|
87
|
+
hai deploy --env prod --plan --inspect-remote
|
|
88
|
+
hai deploy --env prod --build --bundle-only
|
|
89
|
+
hai deploy --env prod --build --services "serv,web"
|
|
90
|
+
```
|
|
160
91
|
|
|
161
|
-
|
|
92
|
+
plan只校验并输出计划;inspect-remote另通过SSH读取基线事实,not-inspected不表示通过。bundle-only不连接目标,输出归档、目标描述、上传/本机部署脚本和说明;归档中的APPLY.txt解释手工入口。首次安装和拓扑变化使用完整包,部分服务更新要求匹配服务器成功基线。
|
|
162
93
|
|
|
163
|
-
|
|
94
|
+
工程根 `package.json.name` 决定项目身份,再附加环境后缀。完整包保存当前服务组合与私有配置;服务器凭据、后端绑定账本和数据卷成套保护。失败可能恢复上一成功服务,但不撤销数据写入、迁移、通知或支付。SSH结果unknown时先只读核对远端,不能自动重复发布。[部署与恢复](../deploy/README.md)
|
|
164
95
|
|
|
165
|
-
|
|
96
|
+
HTTPS支持已有普通PEM文件或Let’s Encrypt。证书/私钥每份最多1MiB、拒绝链接;ACME需要真实域名、邮箱、条款确认和公网80端口。证书状态在服务器,启停或改变布局需全量部署。[HTTPS配置](../../docs/usage/configuration/delivery.md#可选https证书)
|
|
166
97
|
|
|
167
|
-
|
|
98
|
+
### 诊断、升级预检与凭据导入
|
|
168
99
|
|
|
169
|
-
|
|
100
|
+
```sh
|
|
101
|
+
hai feedback evidence feedback.zip --request-id request-42 --page 1 --page-size 20
|
|
102
|
+
hai feedback view feedback.zip
|
|
103
|
+
hai upgrade TARGET_VERSION
|
|
104
|
+
```
|
|
170
105
|
|
|
171
|
-
|
|
106
|
+
离线包必须是普通单链接文件,最多64MiB;view仅监听loopback,使用随机访问路径。浏览器只运行框架内置查看器,不执行包内同名脚本。过滤结果不代表证据完整,继续按请求/错误编号检查上下文。
|
|
172
107
|
|
|
173
|
-
|
|
108
|
+
upgrade比较实际消费者的框架包、CLI/deploy制品、catalog/lock/安装状态及技能定制;不执行迁移。deploy-secrets需在Linux服务器提供Node,JSON最多64KiB且为私有普通单链接文件,默认只读;导入不恢复数据库或建立成功发布基线。[凭据输入与恢复边界](../deploy/docs/credential-import.md)
|
|
174
109
|
|
|
175
|
-
###
|
|
110
|
+
### AI指引与应用体验
|
|
176
111
|
|
|
177
|
-
|
|
112
|
+
生成应用的共享入口是AGENTS.md和 `.agents/skills/`;Claude/Copilot/OpenCode引用共享规范。添加模块补齐相关技能引用,已有自定义文件保留。任务按能力选择skill,公共契约以安装版本类型为准。[模板组成](templates/README.md)
|
|
178
113
|
|
|
179
|
-
|
|
114
|
+
Fullstack提供用户/角色、审计、反馈、个人设置和主题语言界面;初始账号密码只在环境私有文件或Secret中分发,CLI不打印值。密码只创建缺失账号,不重置已有账号。原生展示名来自Core配置,文件名使用工程标识。
|
|
180
115
|
|
|
181
|
-
|
|
116
|
+
## 配置
|
|
182
117
|
|
|
183
|
-
|
|
118
|
+
`hai.json.build.images` 指定角色、context、Dockerfile和端口,build.sources/build.proxy控制下载,deploy控制目标。镜像与npm源分别选择official/cn/custom,代理选择inherit/system/custom/none。命令参数覆盖本次操作;详细输入和效果见[配置手册](../../docs/usage/configuration/delivery.md)。
|
|
184
119
|
|
|
185
|
-
|
|
120
|
+
全部HAI配置来源为进程 > 模式私有 > 全局私有 > 模式公共 > 基础env > YAML。同来源先父JSON后细项;高来源父对象清除低来源细项。运行配置、密钥和SSH凭据存私有文件,构建不读取部署秘密。修改普通后端运行配置后重启;端口、挂载、网关、HTTPS或网站构建目录变化需要部署/重建。[运行配置](../../docs/usage/configuration/runtime.md)
|
|
186
121
|
|
|
187
|
-
|
|
122
|
+
镜像context必须可信且稳定。依赖输入及缓存要求普通单链接文件,缓存祖先拒绝symlink/junction;清单最多16MiB,归档按64KiB块比较/复制。文件不变保留mtime,更新原子替换;异常提示路径、原因与诊断码,不回显清单内容。
|
|
188
123
|
|
|
189
|
-
|
|
124
|
+
pnpm工程保留适用的deepmerge/DaisyUI补丁实体及patchedDependencies注册;仅安装框架npm包不会继承仓库补丁配置。[补丁目录](../../patches/)
|
|
190
125
|
|
|
191
|
-
|
|
126
|
+
## 错误处理
|
|
192
127
|
|
|
193
|
-
|
|
128
|
+
命令失败显示安全原因、路径或步骤并以非零码退出。安装失败保留已生成文件便于重试;构建失败不更新成功latest。密钥不放命令参数或日志。计划、预检和导入回执各有明确范围,不能当部署成功。失败后按诊断修复配置、权限或前置依赖,再重试原步骤;结果未知先查事实。
|
|
194
129
|
|
|
195
130
|
## 开发测试
|
|
196
131
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
在框架仓库根执行,用当前源码生成项目。完整测试命令如下,部署门禁另需可用 Podman/Docker。
|
|
132
|
+
在框架仓库使用当前源码:
|
|
200
133
|
|
|
201
134
|
```sh
|
|
202
|
-
pnpm --filter @h-ai/cli build
|
|
203
|
-
node packages/cli/dist/index.js create ../my-app
|
|
204
135
|
pnpm --filter @h-ai/cli typecheck
|
|
205
136
|
pnpm --filter @h-ai/cli lint
|
|
137
|
+
pnpm --filter @h-ai/cli build
|
|
138
|
+
node packages/cli/dist/index.js create ../my-app
|
|
206
139
|
pnpm --filter @h-ai/cli test
|
|
207
140
|
pnpm check:skills
|
|
208
141
|
pnpm --filter @h-ai/cli test:scaffold-gates
|
|
209
|
-
pnpm --filter @h-ai/cli test:scaffold-gates --list --json
|
|
210
142
|
pnpm --filter @h-ai/cli test:deploy-gates
|
|
211
143
|
```
|
|
212
144
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
脚手架门禁生成真实项目,执行安装、typecheck、lint、build、test 和浏览器测试,同时覆盖生成路由的实际 HTTP 入口、CLI 进程语言选择和环境文件消费;`--generate`、`--i18n` 可分别定向复测。部署门禁覆盖实际资源拥有权、动态宿主端口隔离,以及离线包、SSH/人工发布、增量更新和回滚。只回收本轮已记录的容器 ID 和私有镜像 tag;安全元数据报告保留在 ignored `tmp/validation/module-review/VERIFY-05/`。已生成的浏览器截图、trace 和报告默认保留在 ignored `tmp/validation/module-review/scaffold-browser/` 或 `deploy-browser/`;也可显式指定证据、HTML 报告和输出目录。临时工程、密钥、数据及进程仍自动回收。原生壳和真实云服务单独验收。
|
|
216
|
-
|
|
217
|
-
可选 Windows 安装包验收需准备 Rust 的 `x86_64-pc-windows-msvc` 目标和 MSVC 构建工具。设置 `HAI_CLI_NATIVE_BUILD=1` 后运行 `pnpm --filter @h-ai/cli test:scaffold-gates`,现有 fullstack 场景会构建 NSIS 安装包并核对应用根版本与产物文件名。可用 `CARGO_BUILD_JOBS=2` 限制 Rust 编译并发。原生 UI 交互与设备能力另行验收。
|
|
218
|
-
|
|
219
|
-
部署夹具先检查固定公开基础镜像,仅明确缺失时拉取,可沿用 HAI_DEPLOY_E2E_MIRROR;公共缓存不进入清理账本。成功 create 后先登记容器 ID,再在其私有 PID namespace 内异步安装 APT/pip 并启动 sshd。准备失败、超时或合作式取消会等待本地客户端退出,按已登记 ID 回收并确认消失;仅重型嵌套 Podman 夹具使用特权。HAI_DEPLOY_E2E_APT_MIRROR 只接受镜像站主机名并保留 HTTPS。拥有权测试用固定公开镜像的本轮私有 tag,保留同内容外部 tag、重指向保护、动态端口和外部 sentinel 检查。create 回执丢失且未获得可信 ID、测试进程被强制终止等情况仍需记录未知状态,不能按名称或 label 认领清理。
|
|
220
|
-
|
|
221
|
-
`--generate` 是定向路由门禁:复用仓库已安装依赖,实际生成、构建并访问 SvelteKit、serv API、fullstack 后端的新路由(含 transport)。它不替代上面的完整安装与浏览器矩阵。
|
|
222
|
-
|
|
223
|
-
`test:e2e` 为本轮服务显式选择隔离的测试后端及绝对数据目录,服务子进程不继承外部 `HAI_*` / `PUBLIC_*` / `VITE_*` 配置或读取用户 `.env.local`。测试专用 `HAI_E2E=1` 不改变普通开发、生产 dotenv 或共享后端要求;启用 transport 的场景使用新建可信 SM2 ring 与实际 registry。样板浏览器阶段另用独立 TCP 计数进程核验外部数据库配置未被触达。完整部署验收仍保留 fullstack 的真实 Redis/S3、增量发布与回滚。
|
|
224
|
-
|
|
225
|
-
`--i18n` 定向门禁构建 CLI 后,在独立进程中验证语言优先级、help、生成成功与失败,并重放中英日文选择/名称校验/取消交互。
|
|
145
|
+
脚手架门禁实际安装、编译并运行生成项目的测试和浏览器流程;部署门禁需Podman/Docker。`--generate` 和 `--i18n` 分别定向检查生成路由及终端语言。测试后端与用户配置隔离,夹具通过不表示实际生产数据或第三方服务验收。Windows原生门禁另需Rust/MSVC并显式设置HAI_CLI_NATIVE_BUILD=1;真实设备交互独立验证。
|
|
226
146
|
|
|
227
147
|
## 许可证
|
|
228
148
|
|