@h-ai/cli 1.0.0-beta.14 → 1.0.0-beta.16

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.
Files changed (43) hide show
  1. package/README.en.md +2 -0
  2. package/README.ja.md +2 -0
  3. package/README.md +2 -0
  4. package/dist/{chunk-OGUA3OIS.js → chunk-S2ZP7BHG.js} +88 -3
  5. package/dist/chunk-S2ZP7BHG.js.map +1 -0
  6. package/dist/cli-config-templates-MKVYSK3E.js +5 -0
  7. package/dist/{cli-config-templates-TZSORUT6.js.map → cli-config-templates-MKVYSK3E.js.map} +1 -1
  8. package/dist/index.js +16 -5
  9. package/dist/index.js.map +1 -1
  10. package/dist/metafile-esm.json +1 -1
  11. package/package.json +14 -14
  12. package/templates/apps/api/apps/{{projectName}}-serv/README.md.hbs +2 -0
  13. package/templates/apps/api/apps/{{projectName}}-serv/config/_serv.yml.hbs +3 -0
  14. package/templates/apps/api/apps/{{projectName}}-serv/src/app.ts.hbs +2 -0
  15. package/templates/apps/fullstack/apps/{{projectName}}-web/README.md.hbs +2 -0
  16. package/templates/apps/fullstack/apps/{{projectName}}-web/index.html.hbs +1 -0
  17. package/templates/apps/fullstack/docs/security-configuration.md.hbs +3 -0
  18. package/templates/apps/fullstack/e2e/fullstack.spec.ts.hbs +2 -0
  19. package/templates/apps/fullstack/packages/{{projectName}}-serv/README.md.hbs +1 -0
  20. package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_reach.yml.hbs +3 -0
  21. package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_serv.yml.hbs +3 -0
  22. package/templates/base/e2e/app.spec.ts.hbs +2 -1
  23. package/templates/base/package.json.hbs +1 -1
  24. package/templates/base/src/app.html.hbs +1 -0
  25. package/templates/shared/browser-check/startup.js +89 -0
  26. package/templates/shared/browser-check/update.css +37 -0
  27. package/templates/shared/browser-check/update.html +19 -0
  28. package/templates/shared/browser-startup.spec.ts +21 -0
  29. package/templates/skills/hai-api-client/SKILL.md +1 -1
  30. package/templates/skills/hai-api-client/reference.md +1 -1
  31. package/templates/skills/hai-app-create/development.md +2 -0
  32. package/templates/skills/hai-crypto/SKILL.md +2 -2
  33. package/templates/skills/hai-crypto/reference.md +2 -2
  34. package/templates/skills/hai-deploy/SKILL.md +2 -0
  35. package/templates/skills/hai-kit/SKILL.md +1 -1
  36. package/templates/skills/hai-kit/reference.md +3 -1
  37. package/templates/skills/hai-reach/SKILL.md +1 -0
  38. package/templates/skills/hai-reach/reference.md +13 -1
  39. package/templates/skills/hai-serv/SKILL.md +1 -1
  40. package/templates/skills/hai-serv/reference.md +8 -4
  41. package/templates/skills/hai-ui/SKILL.md +1 -1
  42. package/dist/chunk-OGUA3OIS.js.map +0 -1
  43. package/dist/cli-config-templates-TZSORUT6.js +0 -5
package/README.en.md CHANGED
@@ -58,6 +58,8 @@ Each template installs only the modules it uses: admin/h5 include authentication
58
58
 
59
59
  Standalone `mobile-app` includes frontend crypto and encrypted typed-client transport. For an existing plaintext API, explicitly set `PUBLIC_API_TRANSPORT=off`. `PUBLIC_API_KEY_EXCHANGE_PATH` overrides the public exchange subpath. Handshake failures never fall back, server private keys never enter clients, and cleanup closes transport before client-owned crypto.
60
60
 
61
+ Admin, website, h5 and Fullstack Web check browser versions before loading the application. The standalone upgrade page shows the current version, the minimum and official update instructions. The minimum is Chrome/Edge 111, Firefox 114, Safari 16.4 or iOS/iPadOS 16.4. See the [browser startup check](../../docs/usage/getting-started/build.md#浏览器启动检测) for existing projects.
62
+
61
63
  ### Static websites and GitHub Pages
62
64
 
63
65
  New websites default to Node SSR and install only Core/Kit/UI, so they can use the static build below directly. Remove any server business dependencies, initialization or custom APIs/actions added later before publishing statically. Commented configuration and environment references do not affect static builds.
package/README.ja.md CHANGED
@@ -58,6 +58,8 @@ pnpm dev
58
58
 
59
59
  独立した `mobile-app` は frontend crypto と暗号化 typed client transport を含みます。既存の平文 API には `PUBLIC_API_TRANSPORT=off` を明示します。`PUBLIC_API_KEY_EXCHANGE_PATH` は公開鍵交換パスの上書きです。失敗時に平文へ切り替えず、サーバー秘密鍵はクライアントに渡しません。終了時は transport、その後に自身の crypto を解放します。
60
60
 
61
+ admin、website、h5、Fullstack Web はアプリケーションの読み込み前にブラウザーのバージョンを確認します。独立した更新ページに現在のバージョン、最低要件、公式の更新手順を表示します。最低要件は Chrome/Edge 111、Firefox 114、Safari 16.4、または iOS/iPadOS 16.4 です。既存プロジェクトは[起動時のブラウザーチェック](../../docs/usage/getting-started/build.md#浏览器启动检测)を参照してください。
62
+
61
63
  ### 静的websiteとGitHub Pages
62
64
 
63
65
  新規 website は既定で Node SSR、依存は Core/Kit/UI のみで、下記の静的構築をそのまま利用できます。後から追加したサーバー業務依存・初期化・独自 API/actions は静的公開前に除去します。コメントの設定と環境変数の参考例は静的構築に影響しません。
package/README.md CHANGED
@@ -58,6 +58,8 @@ pnpm dev
58
58
 
59
59
  独立 `mobile-app` 默认包含前端 crypto,并启用 typed client 加密传输。已有明文 API 可显式使用 `PUBLIC_API_TRANSPORT=off`;`PUBLIC_API_KEY_EXCHANGE_PATH` 只覆盖公开协商子路径。握手失败不会降级,服务端私钥不进入客户端。客户端先关闭 transport,再释放自身初始化的 crypto。
60
60
 
61
+ admin、website、h5 和 Fullstack Web 在主应用加载前检测低版本浏览器,独立升级页显示当前版本、最低要求和官方更新入口。最低版本为 Chrome/Edge 111、Firefox 114、Safari 16.4,iOS/iPadOS 使用系统 16.4。迁移已有工程见[浏览器启动检测](../../docs/usage/getting-started/build.md#浏览器启动检测)。
62
+
61
63
  ### 纯静态 website 与 GitHub Pages
62
64
 
63
65
  新建 website 默认 Node SSR,只安装展示站所需的 Core/Kit/UI,可以直接使用下述静态构建。以后接入了服务端业务模块、初始化或 API/actions 时,静态发布前须移除这些动态能力;保留的注释配置和变量示例不影响静态构建。
@@ -5003,6 +5003,14 @@ var cli_config_catalog_default = [
5003
5003
  value: "/api/_hai/key-exchange",
5004
5004
  constraint: "\u5B57\u7B26\u4E32\uFF1B\u4EE5 / \u5F00\u5934\u7684\u8DEF\u5F84\u5B57\u7B26\u4E32"
5005
5005
  },
5006
+ {
5007
+ name: "HAI_KIT_TRANSPORT_MAXFUTURESKEWSECONDS",
5008
+ module: "kit",
5009
+ path: "kit.transport.maxFutureSkewSeconds",
5010
+ description: "\u5141\u8BB8\u5BA2\u6237\u7AEF\u8BF7\u6C42\u65F6\u95F4\u9886\u5148\u670D\u52A1\u5668\u7684\u79D2\u6570",
5011
+ value: "30",
5012
+ constraint: "\u6574\u6570\uFF1B>= 0\uFF1B<= 300"
5013
+ },
5006
5014
  {
5007
5015
  name: "HAI_KIT_TRANSPORT_MAXPLAINTEXTBYTES",
5008
5016
  module: "kit",
@@ -5011,6 +5019,14 @@ var cli_config_catalog_default = [
5011
5019
  value: "auto",
5012
5020
  constraint: "\u6574\u6570\uFF1B>= 1024\uFF1B<= 67108864\uFF1B\u5B57\u7B26\u4E32\uFF1B\u53D6\u503C\uFF1Aauto"
5013
5021
  },
5022
+ {
5023
+ name: "HAI_KIT_TRANSPORT_MAXREQUESTAGESECONDS",
5024
+ module: "kit",
5025
+ path: "kit.transport.maxRequestAgeSeconds",
5026
+ description: "\u8BF7\u6C42\u4ECE\u7B7E\u53D1\u8D77\u7684\u6709\u6548\u79D2\u6570",
5027
+ value: "300",
5028
+ constraint: "\u6574\u6570\uFF1B>= 1\uFF1B<= 600"
5029
+ },
5014
5030
  {
5015
5031
  name: "HAI_KIT_TRANSPORT_ROUTEPLAINTEXTBYTES",
5016
5032
  module: "kit",
@@ -5375,7 +5391,7 @@ var cli_config_catalog_default = [
5375
5391
  name: "HAI_REACH_PROVIDERS_0_ENDPOINT",
5376
5392
  module: "reach",
5377
5393
  path: "reach.providers.0.endpoint",
5378
- description: "API \u7AEF\u70B9\uFF08\u9ED8\u8BA4 dysmsapi.aliyuncs.com\uFF09",
5394
+ description: "\u76F4\u8FDE API \u7AEF\u70B9\uFF08\u9ED8\u8BA4 dysmsapi.aliyuncs.com\uFF09\uFF1B\u914D\u7F6E\u7F51\u5173\u65F6\u4F7F\u7528\u7F51\u5173 URL\u3002",
5379
5395
  value: "dysmsapi.aliyuncs.com",
5380
5396
  constraint: "\u5B57\u7B26\u4E32"
5381
5397
  },
@@ -5387,6 +5403,46 @@ var cli_config_catalog_default = [
5387
5403
  value: "noreply@example.com",
5388
5404
  constraint: "\u5B57\u7B26\u4E32\uFF1B\u6700\u5C0F\u5B57\u7B26\u6570 1"
5389
5405
  },
5406
+ {
5407
+ name: "HAI_REACH_PROVIDERS_0_GATEWAY",
5408
+ module: "reach",
5409
+ path: "reach.providers.0.gateway",
5410
+ description: "\u53EF\u9009\u7684\u77ED\u4FE1\u9694\u79BB\u7F51\u5173\uFF0C\u4EE5 POST \u8BF7\u6C42\u8F6C\u53D1\u5DF2\u7B7E\u540D\u7684\u67E5\u8BE2\u53C2\u6570\u3002",
5411
+ value: "",
5412
+ constraint: "JSON \u5BF9\u8C61\uFF1B\u6574\u4F53\u8986\u76D6\u65F6\u66FF\u6362\u8BE5\u8282\u70B9"
5413
+ },
5414
+ {
5415
+ name: "HAI_REACH_PROVIDERS_0_GATEWAY_ALLOWINSECUREHTTP",
5416
+ module: "reach",
5417
+ path: "reach.providers.0.gateway.allowInsecureHttp",
5418
+ description: "\u4EC5\u5728\u53D7\u4FE1\u5185\u7F51\u663E\u5F0F\u5141\u8BB8\u660E\u6587 HTTP\u3002",
5419
+ value: "false",
5420
+ constraint: "true | false"
5421
+ },
5422
+ {
5423
+ name: "HAI_REACH_PROVIDERS_0_GATEWAY_BODY",
5424
+ module: "reach",
5425
+ path: "reach.providers.0.gateway.body",
5426
+ description: "\u7F51\u5173\u8BF7\u6C42\u4F53\uFF1B\u5BF9\u8C61\u548C\u6570\u7EC4\u5E8F\u5217\u5316\u4E3A JSON\uFF0C\u5B57\u7B26\u4E32\u539F\u6837\u53D1\u9001\u3002\u7701\u7565\u65F6\u4E0D\u53D1\u8BF7\u6C42\u4F53\u3002",
5427
+ value: "",
5428
+ constraint: "JSON \u5BF9\u8C61\u3001\u6570\u7EC4\u6216\u539F\u59CB\u6587\u672C"
5429
+ },
5430
+ {
5431
+ name: "HAI_REACH_PROVIDERS_0_GATEWAY_HEADERS",
5432
+ module: "reach",
5433
+ path: "reach.providers.0.gateway.headers",
5434
+ description: "\u7F51\u5173\u81EA\u5B9A\u4E49\u8BF7\u6C42\u5934\uFF1B\u8FDE\u63A5\u4E0E\u6D88\u606F\u957F\u5EA6\u76F8\u5173\u7684\u5934\u7531 HTTP \u5BA2\u6237\u7AEF\u7BA1\u7406\u3002",
5435
+ value: "",
5436
+ constraint: "JSON \u5BF9\u8C61\uFF1B\u6574\u4F53\u8986\u76D6\u65F6\u66FF\u6362\u8BE5\u8282\u70B9"
5437
+ },
5438
+ {
5439
+ name: "HAI_REACH_PROVIDERS_0_GATEWAY_URL",
5440
+ module: "reach",
5441
+ path: "reach.providers.0.gateway.url",
5442
+ description: "\u7F51\u5173\u7684\u5B8C\u6574 HTTP(S) URL\uFF1B\u5305\u542B\u8DEF\u5F84\uFF0C\u4E0D\u5141\u8BB8\u51ED\u636E\u3001\u67E5\u8BE2\u53C2\u6570\u6216\u7247\u6BB5\u3002",
5443
+ value: "",
5444
+ constraint: "\u5B57\u7B26\u4E32\uFF1B\u683C\u5F0F uri"
5445
+ },
5390
5446
  {
5391
5447
  name: "HAI_REACH_PROVIDERS_0_HEADERS",
5392
5448
  module: "reach",
@@ -6763,6 +6819,14 @@ var cli_config_catalog_default = [
6763
6819
  value: "",
6764
6820
  constraint: "\u5B57\u7B26\u4E32\uFF1B\u683C\u5F0F ipv4\uFF1B\u6B63\u5219 ^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$\uFF1B\u683C\u5F0F ipv6\uFF1B\u6B63\u5219 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$\uFF1B\u683C\u5F0F cidrv4\uFF1B\u6B63\u5219 ^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$\uFF1B\u683C\u5F0F cidrv6\uFF1B\u6B63\u5219 ^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$"
6765
6821
  },
6822
+ {
6823
+ name: "HAI_SERV_REFRESH_COOKIE_SECURE",
6824
+ module: "serv",
6825
+ path: "HAI_SERV_REFRESH_COOKIE_SECURE",
6826
+ description: "Serv \u5237\u65B0 Cookie \u7684 Secure \u5C5E\u6027\uFF1B\u7559\u7A7A\u6CBF\u7528\u73AF\u5883\u9ED8\u8BA4\u503C\uFF0C\u751F\u4EA7\u9ED8\u8BA4\u5F00\u542F",
6827
+ value: "",
6828
+ constraint: "true | false\uFF1B\u4EC5\u5728\u53D7\u63A7\u5185\u7F51\u6216 VPN \u7684 HTTP \u5165\u53E3\u4F7F\u7528 false"
6829
+ },
6766
6830
  {
6767
6831
  name: "HAI_SERV_SERVER",
6768
6832
  module: "serv",
@@ -6851,6 +6915,14 @@ var cli_config_catalog_default = [
6851
6915
  value: "/_hai/key-exchange",
6852
6916
  constraint: "\u5B57\u7B26\u4E32\uFF1B\u4EE5 / \u5F00\u5934\u7684\u8DEF\u5F84\u5B57\u7B26\u4E32"
6853
6917
  },
6918
+ {
6919
+ name: "HAI_SERV_TRANSPORT_MAXFUTURESKEWSECONDS",
6920
+ module: "serv",
6921
+ path: "serv.transport.maxFutureSkewSeconds",
6922
+ description: "\u5141\u8BB8\u5BA2\u6237\u7AEF\u8BF7\u6C42\u65F6\u95F4\u9886\u5148\u670D\u52A1\u5668\u7684\u79D2\u6570",
6923
+ value: "30",
6924
+ constraint: "\u6574\u6570\uFF1B>= 0\uFF1B<= 300"
6925
+ },
6854
6926
  {
6855
6927
  name: "HAI_SERV_TRANSPORT_MAXPLAINTEXTBYTES",
6856
6928
  module: "serv",
@@ -6859,6 +6931,14 @@ var cli_config_catalog_default = [
6859
6931
  value: "1048576",
6860
6932
  constraint: "\u6574\u6570\uFF1B>= 1024\uFF1B<= 67108864\uFF1B\u5B57\u7B26\u4E32\uFF1B\u53D6\u503C\uFF1Aauto"
6861
6933
  },
6934
+ {
6935
+ name: "HAI_SERV_TRANSPORT_MAXREQUESTAGESECONDS",
6936
+ module: "serv",
6937
+ path: "serv.transport.maxRequestAgeSeconds",
6938
+ description: "\u8BF7\u6C42\u4ECE\u7B7E\u53D1\u8D77\u7684\u6709\u6548\u79D2\u6570",
6939
+ value: "300",
6940
+ constraint: "\u6574\u6570\uFF1B>= 1\uFF1B<= 600"
6941
+ },
6862
6942
  {
6863
6943
  name: "HAI_SERV_TRANSPORT_ROUTEPLAINTEXTBYTES",
6864
6944
  module: "serv",
@@ -8314,6 +8394,11 @@ providers:
8314
8394
  # accessKeySecret: \${HAI_REACH_PROVIDERS_1_ACCESSKEYSECRET}
8315
8395
  # signName: MyApp
8316
8396
  # endpoint: dysmsapi.aliyuncs.com
8397
+ # gateway: # \u53EF\u9009\uFF1B\u914D\u7F6E\u540E\u5411\u5B8C\u6574 URL \u53D1\u9001 POST
8398
+ # url: https://sms-gateway.example.com/dx
8399
+ # headers:
8400
+ # X-Gateway-Client: delivery
8401
+ # body: {}
8317
8402
 
8318
8403
  # \u901A\u7528 API\uFF08\u6309\u9700\u5F00\u542F\uFF1B\u53EF\u5BF9\u63A5\u5E94\u7528\u81EA\u6709\u6295\u9012\u670D\u52A1\uFF09
8319
8404
  # - name: custom
@@ -8511,5 +8596,5 @@ envAllowlist:
8511
8596
  }
8512
8597
 
8513
8598
  export { documentConfig, generateConfigFile, generateEnvExample, generateProductionEnvironment, moduleEnvironmentVariables, parameterizeConfig, renderEnvironment, runtimeEnvironmentVariables };
8514
- //# sourceMappingURL=chunk-OGUA3OIS.js.map
8515
- //# sourceMappingURL=chunk-OGUA3OIS.js.map
8599
+ //# sourceMappingURL=chunk-S2ZP7BHG.js.map
8600
+ //# sourceMappingURL=chunk-S2ZP7BHG.js.map