@h-ai/cli 1.0.0-beta.3 → 1.0.0-beta.5

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.
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- export { DEPLOY_MIDDLEWARE, DeployConfigSchema, DeploymentArtifactSchema, HaiDeployError, ProviderConfigSchema, artifactChecksum, createDeploymentPlan, deploy, describeMiddlewareBackend, getDeployCommandState, getDeployRecovery, importDeploymentSecrets, loadDeploymentConfig, loadDeploymentEnvironment, mergeEnvironmentLayers, normalizeProjectName, readDeploymentArtifact, saveDeploymentEnvironment } from './chunk-K6RWTTHD.js';
2
+ export { DEPLOY_MIDDLEWARE, DeployConfigSchema, DeploymentArtifactSchema, HaiDeployError, ProviderConfigSchema, artifactChecksum, createDeploymentPlan, deploy, describeMiddlewareBackend, getDeployCommandState, getDeployRecovery, importDeploymentSecrets, loadDeploymentConfig, loadDeploymentEnvironment, mergeEnvironmentLayers, normalizeProjectName, readDeploymentArtifact, saveDeploymentEnvironment } from './chunk-VUWM43KR.js';
3
3
  import './chunk-ZSDEVXZ7.js';
4
- //# sourceMappingURL=src-IR5AU43K.js.map
5
- //# sourceMappingURL=src-IR5AU43K.js.map
4
+ //# sourceMappingURL=src-24PXSKE6.js.map
5
+ //# sourceMappingURL=src-24PXSKE6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"src-24PXSKE6.js"}
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.3",
4
+ "version": "1.0.0-beta.5",
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.3",
33
+ "@h-ai/core": "1.0.0-beta.5",
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.3",
45
- "@h-ai/cache": "1.0.0-beta.3",
46
- "@h-ai/crypto": "1.0.0-beta.3",
47
- "@h-ai/deploy": "1.0.0-beta.3",
48
- "@h-ai/feedback": "1.0.0-beta.3",
49
- "@h-ai/iam": "1.0.0-beta.3",
50
- "@h-ai/reach": "1.0.0-beta.3",
51
- "@h-ai/reldb": "1.0.0-beta.3",
52
- "@h-ai/storage": "1.0.0-beta.3",
44
+ "@h-ai/api-client": "1.0.0-beta.5",
45
+ "@h-ai/cache": "1.0.0-beta.5",
46
+ "@h-ai/crypto": "1.0.0-beta.5",
47
+ "@h-ai/deploy": "1.0.0-beta.5",
48
+ "@h-ai/feedback": "1.0.0-beta.5",
49
+ "@h-ai/iam": "1.0.0-beta.5",
50
+ "@h-ai/reach": "1.0.0-beta.5",
51
+ "@h-ai/reldb": "1.0.0-beta.5",
52
+ "@h-ai/storage": "1.0.0-beta.5",
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.3",
4
+ "version": "1.0.0-beta.5",
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` 的变量在创建容器时固定,改文件后 `restart` 不会更新,应沿用原项目名/文件列表重新创建容器,通常无需重建镜像。请求策略可固定引用只读挂载 YAML,后续改文件并重启服务实例重新读取;运行中不监视文件、不逐请求读盘。完整 `HAI_SERV` / `HAI_KIT` 优先于叶子变量,不叠加覆盖。SDK 交付的 `.env.runtime` 与策略快照不可手改;运维外部文件和 Compose override 必须另行备份、纳入后续发布,SDK 自动回滚不恢复外部文件。
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`,再提交公共基础和环境文件。本机文件只保留需要覆盖的值,避免整份复制示例后固定开发环境。旧的 `HAI_AI_LLM_PROTOCOL_KEY` / `HAI_AI_LLM_BASE_URL` 改为 `HAI_AI_LLM_APIKEY` / `HAI_AI_LLM_BASEURL`;音频和图像厂商回退变量同样使用 `APIKEY` 后缀。Reach 和 deploy 凭据按当前 YAML 路径命名,以项目 `.env.example` 为准,同步迁移部署平台变量和本机文件。
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
 
@@ -25,6 +25,8 @@
25
25
  - SDK生成匹配的Nginx目录、运行配置入口、健康检查和访问URL。外部网关转发到此入口时保留目录,避免再次剥离。
26
26
  - 每次完整或部分构建保持同一PUBLIC_BASE_PATH,即使只构建serv。目录变化须全量部署;遗漏或改变目录的增量包会在替换前拒绝。失败恢复使用旧发布的健康路径;容器恢复不撤销业务数据。
27
27
 
28
+ 全站统一目录时,复用 `PUBLIC_BASE_PATH`、Serv `http.apiPrefix`、健康/就绪和文档路径及存储 `publicEndpoint` 的显式配置。额外 SDK 网关保留此前缀,根路径业务可全部拒绝;内部探活和 HTTP-01 验证入口单独处理。配置步骤见上述手册的“所有对外业务路径必须带同一目录”。浏览器验收须覆盖根 API 不可达时仍能登录和上传下载。
29
+
28
30
  ## 验收与同步
29
31
 
30
32
  核对根路径回归、带目录的加载/刷新/认证/权限、公开配置无缓存、API目标与390px布局;确认所有真实前置已成功,区分浏览器、Nginx和服务器恢复证据。修改目录能力时同步构建清单、部署读取方、健康检查、回滚、模板、用例、三语说明和使用截图。
@@ -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/文件。交付 `.env.runtime` 不可随意编辑,配置变化重新打包发布;镜像/配置回退不能撤销数据库和业务效果。
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,13 @@ 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、中间件、端口/挂载和 Nginx 限额不在该重载范围。手工修改需备份;下一次后端发布会从工程环境重新生成,需要长期保留的配置同步回源环境。
52
+ 交付 README 仅列初始账号变量名及所选环境文件或 `process.env` 来源,不打印密码。Fullstack 初始密码在创建工程时生成,部署带入已有值;已有账号不因环境变量变更重置密码或恢复旧职责,自定义应用以实际引导逻辑为准。
53
+
54
+ 独立读取的核心环境、职责账号初始密码和传输密钥环保留进程语义,不能仅按前缀判定已失效;Node 启动参数及私有代理标记由部署装配提供,不在运行文件重复保留无效项。
55
+
56
+ 交付配置清理所有被 HAI 父级变量遮蔽的子项,并从 `.env.runtime` 移除由 `middleware.env` 提供的重复项;不据清理后的交付变量反向覆盖工程源环境。
57
+
58
+ Node 后端(Serv / SvelteKit SSR)默认在每次启动时重读发布目录的 `.env.runtime`,修改后 `docker restart <容器名>` 或 `podman restart <容器名>` 即可,无需重建镜像或额外 override。旧部署先用新版 CLI 发布一次。删除的字段不会从旧 Compose 注入中复活;服务器托管连接的 `middleware.env` 保持原有更高优先级,私有代理标记和 Node 启动参数仍由部署装配管理。静态 Web、中间件、端口/挂载、Nginx 路由与限额不在该重载范围;改变网关路径、端口或挂载时使用全量部署。手工修改需备份;下一次后端发布会从工程环境重新生成,需要长期保留的配置同步回源环境。
53
59
 
54
60
  运行文件在后端实际挂载的releases/<后端发布ID>/.env.runtime;仅更新Web/中间件后current可能指向新记录,不能据此猜测后端文件,按容器Mounts中/run/hai/.env.runtime的Source确认。只读文件挂载,上级目录0700,容器非root可读,宿主所有者可修改。dotenv字面解析不执行shell;双引号支持JSON转义。单文件≤1MiB,缺失/不可读/超限在应用导入前失败。父HAI_SERV/HAI_KIT仍优先于叶字段。重启后验健康与配置影响的业务,失败恢复文件再重启。
55
61
 
@@ -26,6 +26,7 @@ transport 仅支持 v2:SM2 发送方签名、独立密钥的 Encrypt-then-HMAC
26
26
  - AI 默认 feature 以可信 session.userId 绑定 objectId,所有读写和记忆按主体隔离;跨主体访问必须显式 authorizeObject,同名 sessionId 不代表同一用户。
27
27
  - 认证绑定 route 的 auth/permission/role;启动配置错误与正常请求领域错误分别处理。
28
28
  - 普通 procedure 的失败 HaiResult 默认通过 HTTP 200 返回,必须检查 success 与 error.code;error.httpStatus 是领域错误元数据。contract 输入校验失败为 HTTP 400,HTTP middleware、刷新 cookie 等响应另按自身契约处理,不能混为同一种状态映射。
29
+ - `http.apiPrefix` 默认 `/api/v1`,支持 `/somepath/api/v1` 等完整合法绝对路径;与前端 base、健康/文档及存储路径成套配置,网关保留 API 前缀。拒绝末尾斜杠、空路径段、路径穿越、查询和片段。
29
30
  - 浏览器 Cookie、CORS、apiPrefix、transport 须与 api-client 同步;语音 ticket 单独核验。
30
31
  - transport 服务端显式注入受管 serverKeyRing 和共享 keyStore;请求带协商 serverKeyId。私钥只从 Secret/私有环境加载,不放公开配置;轮换、重启与跨节点要求见 hai-crypto。
31
32
  - 缺失路由返回本地化 HaiResult JSON 404;加密传输保留该状态。默认 feature 可按需选用,contract 与挂载的 procedures 保持一致。