@h-ai/cli 1.0.0-beta.3 → 1.0.0-beta.4
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 +2 -2
- package/README.ja.md +2 -2
- package/README.md +2 -2
- package/package.json +11 -11
- package/templates/base/package.json.hbs +1 -1
- package/templates/skills/hai-app-create/development.md +2 -4
- package/templates/skills/hai-core/request-access.md +1 -1
- package/templates/skills/hai-deploy/SKILL.md +1 -1
package/README.en.md
CHANGED
|
@@ -125,7 +125,7 @@ Configure `hai.json.deploy.provider.expose.https` or private environment overrid
|
|
|
125
125
|
|
|
126
126
|
Default/custom middleware configuration preserves all effective settings for the same backend, including `publicEndpoint`, pool and operation log options absent from the form. Managed services replace connection selectors and credentials. Restore fields already lost from old parent JSON before rebuilding; see [middleware settings](../deploy/README.en.md#configure-only-the-middleware-the-application-needs).
|
|
127
127
|
|
|
128
|
-
Node backends (Serv / SvelteKit SSR) reread the release `.env.runtime` on every start by default. Edit it, then run `docker restart <container>` or `podman restart <container>`; no image rebuild or extra override is needed. Existing deployments need one deployment with the new CLI. Removed settings do not survive through stale Compose injection. Managed connections in `middleware.env` retain precedence; private proxy identity and Node startup options remain deployment settings. Static Web, middleware, ports/mounts and Nginx limits keep their existing update flow. Back up manual edits and copy permanent changes into the source environment; the next backend deployment regenerates the file.
|
|
128
|
+
Node backends (Serv / SvelteKit SSR) reread the release `.env.runtime` on every start by default. Edit it, then run `docker restart <container>` or `podman restart <container>`; no image rebuild or extra override is needed. Existing deployments need one deployment with the new CLI. Removed settings do not survive through stale Compose injection. Managed connections in `middleware.env` retain precedence; private proxy identity and Node startup options remain deployment settings. Static Web, middleware, ports/mounts, and Nginx routes and limits keep their existing update flow. Gateway path, port or mount changes require a full deployment. Back up manual edits and copy permanent changes into the source environment; the next backend deployment regenerates the file.
|
|
129
129
|
|
|
130
130
|
Image builds run at most two images concurrently by default; use `--concurrency 1` to reduce resource use. Dependency installation precedes source copies, and each side copies only its required source. Runtime images omit application declaration files, source maps and README files. Packaging validates and reuses middleware archives by image content ID and hashes application archives while copying. Delivery defaults to `.tar.gz`; explicit `--output release.tar` keeps an uncompressed archive. README is only outside the archive. Successful deployment removes its incoming upload/extraction, retains recovery configuration in releases, and keeps images in the container engine.
|
|
131
131
|
|
|
@@ -186,7 +186,7 @@ The [fullstack security configuration guide template](templates/apps/fullstack/d
|
|
|
186
186
|
|
|
187
187
|
### Feedback and offline analysis
|
|
188
188
|
|
|
189
|
-
A new `hai create my-app --type fullstack --frontends web --defaults` includes feedback by default; API projects
|
|
189
|
+
A new `hai create my-app --type fullstack --frontends web --defaults` includes feedback by default; API projects also include it without additional options. Members and business operators can submit reports. Only `business_operator` sees the review menu and can read, process, reopen or export reports. Database, storage, reach and authentication dependencies are included. Fullstack provides intake, paginated review and server contracts; API projects provide the server contracts. Production uses shared DB and private S3. Notifications independently select `disabled`, `console` or `reach`; `console` defaults to `metadata` only. Select `consoleContent: summary` explicitly for summaries, or configure Reach providers and recipients for actual delivery.
|
|
190
190
|
|
|
191
191
|
Register collectEvidence through feedback.init(config, { collectEvidence }) to await business text or archives. _feedback.yml includes businessCollectionTimeoutMs and webhookUrl/webhookSecret/webhookTimeoutMs. Webhook delivery retries durably and exposes status and administrator retry in details. Keep secrets in private server environment settings; see [feedback examples](../feedback/README.en.md).
|
|
192
192
|
|
package/README.ja.md
CHANGED
|
@@ -125,7 +125,7 @@ admin・website・h5 作成時に crypto を選ぶと `_kit.yml` の transport
|
|
|
125
125
|
|
|
126
126
|
既定/カスタム設定は同じバックエンドの全有効項目を保持し、フォームにない `publicEndpoint`、接続プール、操作ログも引き継ぎます。自前/クラウド構成は接続と認証を更新します。旧親 JSON から消えた項目は復元後に再梱包してください。[ミドルウェア設定](../deploy/README.ja.md#本当に必要なミドルウェアだけを設定する)を参照してください。
|
|
127
127
|
|
|
128
|
-
Node バックエンド(Serv / SvelteKit SSR)は起動ごとに配布先の `.env.runtime` を既定で読み直します。編集後に `docker restart <コンテナー>` または `podman restart <コンテナー>` を実行し、イメージ再構築や追加 override は不要です。既存配置は新 CLI で一度デプロイしてください。削除した設定を旧 Compose 環境から復活させず、管理接続の `middleware.env` を優先します。私有プロキシ識別と Node 起動引数は配置設定のままです。静的 Web・ミドルウェア・ポート/マウント・Nginx
|
|
128
|
+
Node バックエンド(Serv / SvelteKit SSR)は起動ごとに配布先の `.env.runtime` を既定で読み直します。編集後に `docker restart <コンテナー>` または `podman restart <コンテナー>` を実行し、イメージ再構築や追加 override は不要です。既存配置は新 CLI で一度デプロイしてください。削除した設定を旧 Compose 環境から復活させず、管理接続の `middleware.env` を優先します。私有プロキシ識別と Node 起動引数は配置設定のままです。静的 Web・ミドルウェア・ポート/マウント・Nginx の経路と制限は従来手順で更新します。ゲートウェイの経路、ポート、マウントの変更は全量デプロイを行います。手動変更をバックアップし、継続する値は元の環境にも反映してください。次のバックエンド配置時に再生成されます。
|
|
129
129
|
|
|
130
130
|
イメージは既定で最大 2 件を並列構築し、`--concurrency 1` で資源使用量を抑えます。ソースの前に依存をインストールし、各端で必要なソースだけをコピーします。実行イメージからアプリの型宣言・source map・README を除去します。ミドルウェアのアーカイブはイメージ内容 ID で検証・再利用し、コピーと同時にハッシュを計算します。配布の既定は `.tar.gz`、明示的な `--output release.tar` は非圧縮です。README は外側だけに保持します。成功後に今回の incoming アップロードと展開先を削除し、release に復旧設定、エンジンにイメージを保持します。
|
|
131
131
|
|
|
@@ -188,7 +188,7 @@ fullstack 例はアプリ設定で `admin`、`audit_admin`、`config_admin`、`b
|
|
|
188
188
|
|
|
189
189
|
feedback.init(config, { collectEvidence }) で業務の本文・ZIP を非同期収集できます。_feedback.yml は businessCollectionTimeoutMs と webhookUrl/webhookSecret/webhookTimeoutMs を提供します。Webhook は永続再試行と詳細画面での状態確認・再試行に対応し、秘密はサーバー非公開環境に保存します。[feedback の例](../feedback/README.ja.md) を参照してください。
|
|
190
190
|
|
|
191
|
-
`hai create my-app --type fullstack --frontends web --defaults` は問題報告を既定で有効にし、API
|
|
191
|
+
`hai create my-app --type fullstack --frontends web --defaults` は問題報告を既定で有効にし、API 工程にも追加引数なしで feedback を含めます。一般会員と業務操作員が報告でき、管理メニューの表示と閲覧・処理・再開・エクスポートは `business_operator` に限定します。DB・ストレージ・通知・認証の依存を補い、Fullstack では収集、ページ一覧とサーバー API、API 工程ではサーバー API を生成します。本番では共有 DB と非公開 S3 を使用します。通知は `disabled`、`console`、`reach` を独立に選び、`console` の既定は `metadata` のみです。要約は `consoleContent: summary` を明示し、実送信が必要な場合に Reach 通路と受信者を設定します。
|
|
192
192
|
|
|
193
193
|
`hai feedback summary <bundle.zip>`、`inspect`、`evidence --request-id <ID> --page 1 --page-size 20`、`view` で本番へ接続せず分析できます。表示はloopbackのみで待機し、Ctrl+Cで閉じます。
|
|
194
194
|
|
package/README.md
CHANGED
|
@@ -125,7 +125,7 @@ CLI 消息支持中文、英文和日文,优先使用 `HAI_CORE_DEFAULTLOCALE`
|
|
|
125
125
|
|
|
126
126
|
部署向导的默认/自定义模式保留同后端完整配置,包括未出现在表单中的 `publicEndpoint`、连接池及操作日志;自建或云开通只重新定稿连接与认证。旧版已保存的缺字段父 JSON 需先补回再打包,见[中间件配置说明](../deploy/README.md#按应用真正需要的中间件处理)。
|
|
127
127
|
|
|
128
|
-
Node 后端(Serv / SvelteKit SSR)默认在每次启动时重读发布目录的 `.env.runtime`,修改后 `docker restart <容器名>` 或 `podman restart <容器名>` 即可,无需重建镜像或额外 override。旧部署先用新版 CLI 发布一次。删除的字段不会从旧 Compose 注入中复活;服务器托管连接的 `middleware.env` 保持原有更高优先级,私有代理标记和 Node 启动参数仍由部署装配管理。静态 Web
|
|
128
|
+
Node 后端(Serv / SvelteKit SSR)默认在每次启动时重读发布目录的 `.env.runtime`,修改后 `docker restart <容器名>` 或 `podman restart <容器名>` 即可,无需重建镜像或额外 override。旧部署先用新版 CLI 发布一次。删除的字段不会从旧 Compose 注入中复活;服务器托管连接的 `middleware.env` 保持原有更高优先级,私有代理标记和 Node 启动参数仍由部署装配管理。静态 Web、中间件、端口/挂载、Nginx 路由与限额不在该重载范围;改变网关路径、端口或挂载时使用全量部署。手工修改需备份;下一次后端发布会从工程环境重新生成,需要长期保留的配置同步回源环境。
|
|
129
129
|
|
|
130
130
|
镜像默认最多并行两项,`--concurrency 1` 可降低资源占用。Dockerfile 在复制源码前安装依赖;前后端仅复制各自必要源码,复用安装层和驱动缓存。运行镜像移除应用自身的声明文件、源码映射和说明文件。打包按镜像内容 ID 复用并校验中间件归档,复制应用镜像时同时计算摘要。默认交付压缩为 `.tar.gz`,显式 `--output release.tar` 可保留未压缩格式;README 仅保留外层一份。成功部署后清理本次 incoming 上传和解包目录,release 保留恢复配置和状态,镜像由容器引擎保存。
|
|
131
131
|
|
|
@@ -186,7 +186,7 @@ fullstack 的逐项开关、默认值、启用前提与使用影响见[配置化
|
|
|
186
186
|
|
|
187
187
|
### 问题反馈与离线分析
|
|
188
188
|
|
|
189
|
-
使用 `hai create my-app --type fullstack --frontends web --defaults` 默认启用反馈;API
|
|
189
|
+
使用 `hai create my-app --type fullstack --frontends web --defaults` 默认启用反馈;API 工程也默认包含反馈,无需额外参数。普通成员及业务操作员可提交反馈,`business_operator` 才显示管理菜单并能查看、处理、撤销和导出;自动补齐数据库、存储、触达与认证依赖。Fullstack 生成收集入口、分页管理页和服务端接口;API 工程生成服务端接口。生产使用共享 DB 和私有 S3;通知独立选择 `disabled`、`console` 或 `reach`,默认 `console` 只输出 `metadata`。需要摘要时显式设 `consoleContent: summary`,需要实际发送时再配置 Reach 通道与收件人。
|
|
190
190
|
|
|
191
191
|
业务扩展在 feedback.init(config, { collectEvidence }) 中 await 文本/ZIP 等材料;_feedback.yml 提供 businessCollectionTimeoutMs、webhookUrl/webhookSecret/webhookTimeoutMs。Webhook 独立持久重试,详情可查看状态并重试;密钥仅放服务端私有环境。见 [feedback 配置与示例](../feedback/README.md)。
|
|
192
192
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@h-ai/cli",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.0.0-beta.
|
|
4
|
+
"version": "1.0.0-beta.4",
|
|
5
5
|
"description": "Hai Framework CLI for project scaffolding and code generation.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"keywords": [
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"node": "^22.23.4 || ^24.22.1 || ^26.12.1"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@h-ai/core": "1.0.0-beta.
|
|
33
|
+
"@h-ai/core": "1.0.0-beta.4",
|
|
34
34
|
"cac": "^7.0.1",
|
|
35
35
|
"chalk": "^6.0.1",
|
|
36
36
|
"fast-wrap-ansi": "^0.2.2",
|
|
@@ -41,15 +41,15 @@
|
|
|
41
41
|
"yaml": "^2.9.1"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@h-ai/api-client": "1.0.0-beta.
|
|
45
|
-
"@h-ai/cache": "1.0.0-beta.
|
|
46
|
-
"@h-ai/crypto": "1.0.0-beta.
|
|
47
|
-
"@h-ai/deploy": "1.0.0-beta.
|
|
48
|
-
"@h-ai/feedback": "1.0.0-beta.
|
|
49
|
-
"@h-ai/iam": "1.0.0-beta.
|
|
50
|
-
"@h-ai/reach": "1.0.0-beta.
|
|
51
|
-
"@h-ai/reldb": "1.0.0-beta.
|
|
52
|
-
"@h-ai/storage": "1.0.0-beta.
|
|
44
|
+
"@h-ai/api-client": "1.0.0-beta.4",
|
|
45
|
+
"@h-ai/cache": "1.0.0-beta.4",
|
|
46
|
+
"@h-ai/crypto": "1.0.0-beta.4",
|
|
47
|
+
"@h-ai/deploy": "1.0.0-beta.4",
|
|
48
|
+
"@h-ai/feedback": "1.0.0-beta.4",
|
|
49
|
+
"@h-ai/iam": "1.0.0-beta.4",
|
|
50
|
+
"@h-ai/reach": "1.0.0-beta.4",
|
|
51
|
+
"@h-ai/reldb": "1.0.0-beta.4",
|
|
52
|
+
"@h-ai/storage": "1.0.0-beta.4",
|
|
53
53
|
"@types/fs-extra": "^11.0.4",
|
|
54
54
|
"@types/node": "^26.6.5",
|
|
55
55
|
"@types/prompts": "^2.4.9",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"engines": { "node": "^22.23.4 || ^24.22.1 || ^26.12.1" },
|
|
3
3
|
"name": "{{projectName}}",
|
|
4
|
-
"version": "1.0.0-beta.
|
|
4
|
+
"version": "1.0.0-beta.4",
|
|
5
5
|
"private": true,
|
|
6
6
|
"packageManager": "pnpm@12.11.2",
|
|
7
7
|
"description": "{{#if_eq appType 'admin'}}Enterprise management system built with hai Agent Framework{{/if_eq}}{{#if_eq appType 'website'}}Enterprise website built with hai Agent Framework{{/if_eq}}{{#if_eq appType 'h5'}}Mobile H5 app built with hai Agent Framework{{/if_eq}}{{#if_eq appType 'api'}}REST API service built with hai Agent Framework{{/if_eq}}{{#if_eq appType 'mobile-app'}}Mobile app built with hai Agent Framework{{/if_eq}}",
|
|
@@ -70,15 +70,13 @@ YAML 使用 `${HAI_DB_TYPE:sqlite}` 等显式引用,冒号后是未配置时
|
|
|
70
70
|
|
|
71
71
|
`prod` 是文件模式名,对应 `HAI_CORE_ENV=production`;环境枚举为 `development | test | production | staging`。SvelteKit adapter-node 产物使用 `node --env-file=.env --env-file=.env.prod --env-file-if-exists=.env.local build/index.js`。文件路径相对进程工作目录,公共文件随项目提交;容器通过部署平台或 `--env-file` 注入目标环境值。浏览器只接收公开白名单,构建产物和镜像不包含 `.env.local`。
|
|
72
72
|
|
|
73
|
-
Compose `env_file`
|
|
73
|
+
当前 SDK 的 Node 后端默认读取实际挂载的发布 `.env.runtime`,修改后重启容器生效;托管连接保持更高优先级,静态 Web、中间件、网关路径、端口/挂载和 Node 启动参数按部署流程更新。长期修改同步回源环境,下一次后端发布会重新生成;见[部署指引](../hai-deploy/SKILL.md#后端运行配置重载)。自行维护且只使用 Compose `env_file` 注入环境的容器,改文件后需要重新创建,通常无需重建镜像。请求策略可固定引用只读挂载 YAML,后续改文件并重启服务实例重新读取;运行中不监视文件、不逐请求读盘。完整 `HAI_SERV` / `HAI_KIT` 优先于叶子变量,不叠加覆盖。待上传归档与 SDK 策略快照不能手改;运维外部文件和 Compose override 另行备份,SDK 自动回滚不恢复外部文件。
|
|
74
74
|
|
|
75
75
|
Fullstack 的环境文件在工程根;service 脚本通过 `../../.env*` 加载,Web/App/Desktop 的 Vite 自动 dotenv 加载关闭(`envDir: false`),开发和预览由 `core.config.loadEnvFiles` 从工程根读取,构建不读取部署环境文件。API workspace 的环境文件在 `apps/<name>-serv/`。独立应用在各自根目录加载。静态 Web 通过 `runtime-config.js` 获取公开地址,部署环境覆盖无需重建镜像;原生包在复制静态资源前配置该入口。修改编译进客户端的默认值时仍需重新构建;fullstack 的公开应用元数据由 service `app.info` 返回。
|
|
76
76
|
|
|
77
|
-
Node后端的当前部署包默认重读发布.env.runtime,修改后restart容器即可;托管连接优先级不变,布局/Node参数与中间件仍需重新部署。长期修改同步回源环境;见[部署指引](../hai-deploy/SKILL.md#后端运行配置重载)。
|
|
78
|
-
|
|
79
77
|
#### 迁移已有项目
|
|
80
78
|
|
|
81
|
-
先把原来被忽略的 `.env` 私有值迁入 `.env.local`,再提交公共基础和环境文件。本机文件只保留需要覆盖的值,避免整份复制示例后固定开发环境。旧的 `
|
|
79
|
+
先把原来被忽略的 `.env` 私有值迁入 `.env.local`,再提交公共基础和环境文件。本机文件只保留需要覆盖的值,避免整份复制示例后固定开发环境。旧的 `HAI_AI_LLM_API_KEY` / `HAI_AI_LLM_BASE_URL` 改为 `HAI_AI_LLM_APIKEY` / `HAI_AI_LLM_BASEURL`;音频和图像厂商回退变量同样使用 `APIKEY` 后缀。Reach 和 deploy 凭据按当前 YAML 路径命名,以项目 `.env.example` 为准,同步迁移部署平台变量和本机文件。
|
|
82
80
|
|
|
83
81
|
原 `HAI_AI_ANTHROPIC_API_KEY` / `HAI_AI_ANTHROPIC_BASE_URL` 不再使用。默认协议为 `anthropic` 时改用标准 LLM 变量;混合模型池中有独立凭据或端点时,将 `apiKey` / `baseUrl` 配置在对应模型项。厂商回退 `ANTHROPIC_API_KEY` / `ANTHROPIC_BASE_URL` 保留,优先级以 AI 模块说明为准。
|
|
84
82
|
|
|
@@ -50,7 +50,7 @@ Node listener 使用 socket 对端;Fetch 必须传可信平台 `remoteAddress`
|
|
|
50
50
|
|
|
51
51
|
`.env.<环境>` 或私有覆盖可设置 `HAI_SERV_HTTP_ACCESS='{"file":"./config/security/request-access.yml"}'` / `HAI_KIT_ACCESS=...`。Core 父节点覆盖优先;已有 `HAI_SERV` / `HAI_KIT` 时应修改父对象,不能假定叶子变量会叠加。
|
|
52
52
|
|
|
53
|
-
部署校验当前选中后端的配置文件,规范化快照放入交付包并参加 SHA-256 校验,容器通过 `/run/hai/request-access.yml` 只读挂载。工程原始引用不回写成容器路径。仅更新前端时保留后端原文件;失败恢复使用旧发布的 Compose
|
|
53
|
+
部署校验当前选中后端的配置文件,规范化快照放入交付包并参加 SHA-256 校验,容器通过 `/run/hai/request-access.yml` 只读挂载。工程原始引用不回写成容器路径。仅更新前端时保留后端原文件;失败恢复使用旧发布的 Compose/文件。待上传归档和 SDK 策略快照不能手改;替换快照时重新打包。已部署 Node 后端挂载的 `.env.runtime` 可按[部署指引](../hai-deploy/SKILL.md#后端运行配置重载)修改后重启,注意上层 JSON 优先级;不会自动重写 Nginx 或策略文件。镜像/配置回退不能撤销数据库和业务效果。
|
|
54
54
|
|
|
55
55
|
完整 Kit 配置只留在服务端;layout data 只下发 transport 等公开字段,不把策略、代理网段和文件路径用 `?raw` 打入浏览器。
|
|
56
56
|
|
|
@@ -49,7 +49,7 @@ description: "构建并发布或交付已有镜像:完整离线包、按服务
|
|
|
49
49
|
|
|
50
50
|
## 后端运行配置重载
|
|
51
51
|
|
|
52
|
-
Node 后端(Serv / SvelteKit SSR)默认在每次启动时重读发布目录的 `.env.runtime`,修改后 `docker restart <容器名>` 或 `podman restart <容器名>` 即可,无需重建镜像或额外 override。旧部署先用新版 CLI 发布一次。删除的字段不会从旧 Compose 注入中复活;服务器托管连接的 `middleware.env` 保持原有更高优先级,私有代理标记和 Node 启动参数仍由部署装配管理。静态 Web
|
|
52
|
+
Node 后端(Serv / SvelteKit SSR)默认在每次启动时重读发布目录的 `.env.runtime`,修改后 `docker restart <容器名>` 或 `podman restart <容器名>` 即可,无需重建镜像或额外 override。旧部署先用新版 CLI 发布一次。删除的字段不会从旧 Compose 注入中复活;服务器托管连接的 `middleware.env` 保持原有更高优先级,私有代理标记和 Node 启动参数仍由部署装配管理。静态 Web、中间件、端口/挂载、Nginx 路由与限额不在该重载范围;改变网关路径、端口或挂载时使用全量部署。手工修改需备份;下一次后端发布会从工程环境重新生成,需要长期保留的配置同步回源环境。
|
|
53
53
|
|
|
54
54
|
运行文件在后端实际挂载的releases/<后端发布ID>/.env.runtime;仅更新Web/中间件后current可能指向新记录,不能据此猜测后端文件,按容器Mounts中/run/hai/.env.runtime的Source确认。只读文件挂载,上级目录0700,容器非root可读,宿主所有者可修改。dotenv字面解析不执行shell;双引号支持JSON转义。单文件≤1MiB,缺失/不可读/超限在应用导入前失败。父HAI_SERV/HAI_KIT仍优先于叶字段。重启后验健康与配置影响的业务,失败恢复文件再重启。
|
|
55
55
|
|