@h-ai/cli 0.1.0-alpha.65 → 0.1.0-alpha.67
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 +66 -251
- package/README.ja.md +67 -252
- package/README.md +66 -251
- package/dist/{chunk-47V5OT22.js → chunk-7DSURTJ4.js} +32 -115
- package/dist/chunk-7DSURTJ4.js.map +1 -0
- package/dist/{chunk-IPG3QNYK.js → chunk-AOQ4N657.js} +212 -8
- package/dist/chunk-AOQ4N657.js.map +1 -0
- package/dist/cli-config-templates-6AHNUGBN.js +5 -0
- package/dist/{cli-config-templates-SJ2MBIR7.js.map → cli-config-templates-6AHNUGBN.js.map} +1 -1
- package/dist/{cli-skill-templates-A5VIR5J6.js → cli-skill-templates-FC3QRKDO.js} +3 -3
- package/dist/{cli-skill-templates-A5VIR5J6.js.map → cli-skill-templates-FC3QRKDO.js.map} +1 -1
- package/dist/index.js +644 -391
- package/dist/index.js.map +1 -1
- package/dist/{src-6PPBKQ6Q.js → src-2V6VP4I5.js} +972 -520
- package/dist/src-2V6VP4I5.js.map +1 -0
- package/package.json +8 -8
- package/templates/README.md +48 -145
- package/templates/apps/admin/src/routes/admin/+layout.svelte.hbs +1 -1
- package/templates/apps/api/.dockerignore.hbs +18 -12
- package/templates/apps/api/.gitignore.hbs +9 -1
- package/templates/apps/api/apps/{{projectName}}-contract/README.md.hbs +23 -2
- package/templates/apps/api/apps/{{projectName}}-service/README.md.hbs +28 -7
- package/templates/apps/api/apps/{{projectName}}-service/package.json.hbs +1 -3
- package/templates/apps/api/hai.build.json.hbs +1 -0
- package/templates/apps/api/images/app.Dockerfile.hbs +35 -0
- package/templates/apps/api/package.json.hbs +10 -8
- package/templates/apps/fullstack/.dockerignore.hbs +18 -14
- package/templates/apps/fullstack/.gitignore.hbs +9 -1
- package/templates/apps/fullstack/apps/{{projectName}}-app/README.md.hbs +23 -8
- package/templates/apps/fullstack/apps/{{projectName}}-app/index.html.hbs +1 -0
- package/templates/apps/fullstack/apps/{{projectName}}-app/package.json.hbs +0 -2
- package/templates/apps/fullstack/apps/{{projectName}}-app/public/runtime-config.js.hbs +4 -0
- package/templates/apps/fullstack/apps/{{projectName}}-app/vite.config.ts.hbs +3 -3
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/README.md.hbs +25 -10
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/package.json.hbs +2 -3
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/src-tauri/src/lib.rs.hbs +73 -2
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/src-tauri/tauri.conf.json.hbs +2 -2
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/vite.config.ts.hbs +2 -2
- package/templates/apps/fullstack/apps/{{projectName}}-miniapp/README.md.hbs +16 -6
- package/templates/apps/fullstack/apps/{{projectName}}-web/README.md.hbs +24 -10
- package/templates/apps/fullstack/apps/{{projectName}}-web/package.json.hbs +0 -2
- package/templates/apps/fullstack/apps/{{projectName}}-web/vite.config.ts.hbs +3 -3
- package/templates/apps/fullstack/e2e/fullstack.spec.ts.hbs +12 -1
- package/templates/apps/fullstack/hai.build.json.hbs +7 -0
- package/templates/apps/fullstack/images/app.Dockerfile.hbs +36 -0
- package/templates/apps/fullstack/images/web.Dockerfile.hbs +34 -0
- package/templates/apps/fullstack/package.json.hbs +7 -12
- package/templates/apps/fullstack/packages/{{projectName}}-contract/README.md.hbs +23 -2
- package/templates/apps/fullstack/packages/{{projectName}}-serv/README.md.hbs +28 -7
- package/templates/apps/fullstack/packages/{{projectName}}-serv/package.json.hbs +0 -1
- package/templates/apps/fullstack/packages/{{projectName}}-shared/.gitignore.hbs +7 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/README.md.hbs +33 -12
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/components/AppShell.svelte.hbs +2 -2
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/pages/settings.svelte.hbs +3 -3
- package/templates/apps/fullstack/packages/{{projectName}}-shared/tests/api-client.test.ts.hbs +2 -2
- package/templates/apps/h5/src/routes/+layout.svelte.hbs +2 -2
- package/templates/apps/mobile-app/index.html.hbs +1 -0
- package/templates/apps/mobile-app/public/runtime-config.js +1 -0
- package/templates/apps/mobile-app/src/App.svelte.hbs +2 -2
- package/templates/apps/mobile-app/src/lib/api.ts.hbs +2 -1
- package/templates/apps/mobile-app/src/lib/app-config.ts.hbs +3 -2
- package/templates/apps/mobile-app/src/lib/pages/home.svelte.hbs +2 -2
- package/templates/apps/website/src/routes/+layout.svelte.hbs +3 -3
- package/templates/apps/website/src/routes/services/+page.svelte.hbs +1 -1
- package/templates/base/.dockerignore.hbs +18 -13
- package/templates/base/.gitignore.hbs +9 -1
- package/templates/base/e2e/app.spec.ts.hbs +10 -0
- package/templates/base/hai.build.json.hbs +1 -0
- package/templates/base/images/app.Dockerfile.hbs +64 -0
- package/templates/base/{docker → images/web}/nginx.conf.hbs +6 -0
- package/templates/base/package.json.hbs +20 -19
- package/templates/base/svelte.config.js.hbs +2 -0
- package/templates/base/vite.config.ts.hbs +9 -3
- package/templates/shared/.gitattributes +11 -0
- package/templates/shared/container-runtime-config.sh +30 -0
- package/templates/shared/run-e2e.mjs +65 -0
- package/templates/shared/vite-runtime-config.ts +54 -0
- package/templates/skills/AGENTS.md +3 -3
- package/templates/skills/bridges/admin/AGENTS.md +1 -1
- package/templates/skills/bridges/api/AGENTS.md +1 -1
- package/templates/skills/bridges/fullstack/AGENTS.md.hbs +1 -1
- package/templates/skills/bridges/h5/AGENTS.md +1 -1
- package/templates/skills/bridges/mobile-app/AGENTS.md +1 -1
- package/templates/skills/bridges/website/AGENTS.md +1 -1
- package/templates/skills/hai-api-client/SKILL.md +14 -161
- package/templates/skills/hai-api-client/reference.md +166 -0
- package/templates/skills/hai-api-contract/SKILL.md +15 -273
- package/templates/skills/hai-api-contract/reference.md +278 -0
- package/templates/skills/hai-app-create/SKILL.md +2 -2
- package/templates/skills/hai-app-create/development.md +6 -4
- package/templates/skills/hai-app-create/reference.md +5 -4
- package/templates/skills/hai-app-review/SKILL.md +1 -1
- package/templates/skills/hai-app-tests/SKILL.md +4 -3
- package/templates/skills/hai-app-tests/reference.md +2 -2
- package/templates/skills/hai-app-tests/validation.md +31 -0
- package/templates/skills/hai-audit/SKILL.md +17 -142
- package/templates/skills/hai-audit/reference.md +145 -0
- package/templates/skills/hai-build/SKILL.md +24 -3
- package/templates/skills/hai-build/reference.md +10 -9
- package/templates/skills/hai-cache/SKILL.md +15 -182
- package/templates/skills/hai-cache/reference.md +187 -0
- package/templates/skills/hai-capacitor/SKILL.md +4 -3
- package/templates/skills/hai-capacitor/reference.md +6 -4
- package/templates/skills/hai-ci/SKILL.md +2 -0
- package/templates/skills/hai-core/SKILL.md +3 -3
- package/templates/skills/hai-crypto/SKILL.md +16 -252
- package/templates/skills/hai-crypto/reference.md +256 -0
- package/templates/skills/hai-datapipe/SKILL.md +15 -196
- package/templates/skills/hai-datapipe/reference.md +202 -0
- package/templates/skills/hai-deploy/SKILL.md +28 -271
- package/templates/skills/hai-deploy/middleware.md +6 -18
- package/templates/skills/hai-framework-sync/SKILL.md +2 -2
- package/templates/skills/hai-framework-sync/sync.md +1 -1
- package/templates/skills/hai-iam/SKILL.md +1 -3
- package/templates/skills/hai-kit/SKILL.md +12 -167
- package/templates/skills/hai-kit/reference.md +172 -0
- package/templates/skills/hai-payment/SKILL.md +19 -251
- package/templates/skills/hai-payment/reference.md +256 -0
- package/templates/skills/hai-pr-review/SKILL.md +4 -4
- package/templates/skills/hai-reach/SKILL.md +2 -2
- package/templates/skills/hai-reldb/SKILL.md +1 -1
- package/templates/skills/hai-scheduler/SKILL.md +15 -195
- package/templates/skills/hai-scheduler/reference.md +202 -0
- package/templates/skills/hai-serv/SKILL.md +2 -2
- package/templates/skills/hai-spec-implement/SKILL.md +1 -1
- package/templates/skills/hai-spec-implement/workflow.md +3 -3
- package/templates/skills/hai-storage/SKILL.md +17 -238
- package/templates/skills/hai-storage/reference.md +243 -0
- package/templates/skills/hai-ui/SKILL.md +1 -1
- package/templates/skills/hai-ui/reference.md +11 -5
- package/templates/skills/hai-vecdb/SKILL.md +2 -2
- package/dist/chunk-47V5OT22.js.map +0 -1
- package/dist/chunk-IPG3QNYK.js.map +0 -1
- package/dist/cli-config-templates-SJ2MBIR7.js +0 -5
- package/dist/src-6PPBKQ6Q.js.map +0 -1
- package/templates/apps/api/Dockerfile.hbs +0 -48
- package/templates/apps/fullstack/Dockerfile.hbs +0 -69
- package/templates/base/Dockerfile.hbs +0 -79
- /package/templates/apps/fullstack/{docker → images/web}/19-runtime-config.envsh.hbs +0 -0
- /package/templates/apps/fullstack/{docker → images/web}/nginx.conf.hbs +0 -0
- /package/templates/apps/fullstack/{docker → images/web}/runtime-config.js.template.hbs +0 -0
package/README.ja.md
CHANGED
|
@@ -1,306 +1,121 @@
|
|
|
1
1
|
# @h-ai/cli
|
|
2
2
|
|
|
3
|
-
[简体中文](
|
|
3
|
+
[简体中文](README.md) | [English](README.en.md) | [日本語](README.ja.md)
|
|
4
4
|
|
|
5
|
-
[フレームワークのホーム](../../README.ja.md)
|
|
5
|
+
[フレームワークのホーム](../../README.ja.md)
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## 概要
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
`hai deploy` はモジュール・設定不足、認証情報読み込み、走査、初期化、デプロイ、終了処理の失敗で非ゼロの終了コードを返します。スクリプトは終了コードを確認し、デプロイ全体の成功を後続処理の条件にしてください。
|
|
12
|
-
|
|
13
|
-
- **プロジェクト作成**:SvelteKit アプリ、Svelte 5 モバイル・デスクトップ画面、hai バックエンドを対話式で生成。
|
|
14
|
-
- **モジュール追加**:既存プロジェクトに機能を追加し、依存関係を自動解決。
|
|
15
|
-
- **設定初期化**:設定の完全性を検証し、不足ファイルを生成。
|
|
16
|
-
- **コード生成**:ページ、コンポーネント、API endpoint、データモデル、DB マイグレーションを生成。
|
|
17
|
-
- **テンプレート**:minimal / default / full / custom の 4 種類。
|
|
18
|
-
- **機能の組み合わせ**:IAM、DB、AI、Storage、Crypto などを必要に応じて有効化。
|
|
19
|
-
- **API サービス生成**:`@h-ai/api-contract` + `@h-ai/serv` で公開 contract / procedures を組み合わせ、`@h-ai/api-client` の型付きクライアントで利用。
|
|
20
|
-
- **依存関係の自動解決**:機能選択時に依存を追加(例:IAM が Crypto を追加)。
|
|
21
|
-
|
|
22
|
-
## AI 向け使用ガイド
|
|
23
|
-
|
|
24
|
-
Claude Code v2.1.277 以降は、優先されるプロジェクト CLAUDE ファイルがなく、標準機能が有効ならルート `AGENTS.md` を直接読めます。一行の `@AGENTS.md` ブリッジは旧版や無効なセッションも支援し、規則の重複や `.claude/` ディレクトリーを必要としません。[AGENTS.md の対応](https://code.claude.com/docs/en/memory#agentsmd)を参照してください。
|
|
25
|
-
|
|
26
|
-
CLI は選択した skill のディレクトリー全体を `templates/skills/` から生成先の `.agents/skills/` にコピーします。`SKILL.md` は機能の境界とタスク案内、`reference.md`/`guide.md` は必要時に読む例を提供します。入口だけをコピーしてはいけません。AGENTS.md にアプリの制約を置き、Claude/Copilot のブリッジから参照します。テンプレート変更は関連するリポジトリー skill と同期し、生成テストで参照ファイルの完全な提供を確認します。
|
|
27
|
-
|
|
28
|
-
すべてのアプリ種別に `hai-spec-review` を提供します。生成前に要件・設計の完全性、曖昧さ、技術・フレームワーク利用の正確性、命名の一貫性を厳密に確認し、箇所と具体的な修正案を報告します。問題が解決され、証拠が十分な場合のみ AI 生成に進めると判定します。`hai init` / `hai add` は既存のカスタムファイルを保持してこの skill も補完します。
|
|
29
|
-
|
|
30
|
-
業務動作はユーザーの現在の明示的な要求と、指定された要件・設計文書を基準にします。テンプレートの AGENTS、README、skills、生成コードとテストにあるロール・権限・フロー・上限・構成は変更可能な初期案です。レビューでは相違をテンプレートの適応項目として扱い、要件の誤りとは判定しません。実装の権限内で競合するコード・テスト・古い規則を同期します。実際のバージョンの公開 API 契約、サーバー認可、リソース分離、入力検証、認証情報の保護は引き続き必要です。既存プロジェクトには明示的にマージしてください。`hai init` は既存ファイルを上書きしません。
|
|
31
|
-
|
|
32
|
-
審査後の文書からの実装は、独立した `hai-spec-implement` が担当します。全アプリに提供し、`hai init` / `hai add` でも関連リソース全体を補完します。AI は独立して検証できる機能と実際の依存関係に基づいて分割を判断し、既定では `docs/task-list.md` と `docs/tasks/<id>-<slug>.md` を使います。各タスクは専用 Git ブランチで TDD と品質チェックを行い、ローカルでマージして実際のコミットと統合検証を記録してから完了にします。修正時は元の番号・ファイル・ブランチを再利用し、以前の証拠に関連付けた新しい実施回を追加します。Markdown、Git、既存の開発・テスト skills を使い、新しいランタイム依存やワークフローエンジンは不要です。「文書からタスク一覧だけ作成」「文書から実装」「T003 を実行」「T002 を修正してマージ」のように指定できます。計画だけの依頼では実装せず、指定タスクは依存を確認し、リモート操作はユーザーの許可範囲に従います。
|
|
33
|
-
|
|
34
|
-
要件・設計文書の変更をコミットした後は、「docs/要件.md と docs/設計.md を変更したので、実装を更新してください」と依頼できます。Skill は既存の一覧に、受入済み文書 SHA、固定した目標文書 SHA、検証済み実装 SHA を分けて記録します。文書全体の追加・削除・改名と関連影響を比較し、既存タスクの更新または新規作成を行い、対応ブランチでテスト・マージします。全差分の処理と全体の受入検証が完了してから基準を更新し、中断・部分完了では旧基準を保持します。基準がない場合は履歴の根拠または実装との照合が必要です。[文書差分と基準の手順](templates/skills/hai-spec-implement/changes.md) を参照してください。`hai init` / `hai add` は新しい参照ファイルを補完しますが、既存の入口・実行手順・タスク雛形は更新版と照合してマージしてください。
|
|
35
|
-
|
|
36
|
-
通常の機能追加・変更・修正では、`AGENTS.md` が `hai-app-create/SKILL.md` と `development.md` に案内します。要件を既存のフレームワーク機能・設定・拡張点に対応付け、インストール済みバージョンの exports と型を確認して実装します。適用できる機能を優先して再利用し、不足する能力を具体的に説明します。利用率のために無関係な依存を追加しません。Codex は `.agents/skills/` とプロジェクトルートの `AGENTS.md` を使用します。
|
|
9
|
+
`hai` でアプリ作成、モジュール追加、ひな型生成、ビルド、配布を行います。SvelteKit、独立 API、フロントとバックを分離した工程に対応します。全体の流れは[利用ガイド](../../docs/usage/README.ja.md)を参照してください。
|
|
37
10
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
Codex は `.agents/skills/` を標準で検出し、タスクに応じて Skill を選びます。必要に応じて `$hai-app-create`、`$hai-app-review` などを明示的に呼び出せます。入口と参考ファイルは必要時に読みます。追加の `.codex/skills` や Copilot 設定は不要です。根拠:[Codex skills](https://learn.chatgpt.com/docs/build-skills)、[AGENTS.md](https://learn.chatgpt.com/docs/agent-configuration/agents-md)。
|
|
41
|
-
|
|
42
|
-
生成プロジェクトは `eslint-rules.js` を共有します。lint は明示的な `any`、console、説明のない抑制、unknown を介した二重アサーション、フレームワーク内部ソースの import、既知の機密 localStorage キーへの書き込みを拒否します。必要なサードパーティーの回避策は局所的な説明を付けます。権限分離・入力安全性・トランザクション・ログのマスキングは静的規則だけでは証明できないため、テストとレビューで確認します。
|
|
43
|
-
|
|
44
|
-
既存プロジェクトは CLI を更新して `hai init` を実行すると、不足するワークフロー skill・参照リソース・入口ファイルが補完されます。`--force` を使っても既存の AI 規則は上書きしません。既存の入口・skills・ESLint 設定・scripts は新規生成プロジェクトと比較してマージし、不足する .npmrc/.gitignore も補完してください。ファイル補完だけで古い規則は更新されません。公開前は本リポジトリーでビルドした CLI で比較用プロジェクトを生成し、未公開の能力とインストール済みパッケージの能力を区別します。
|
|
45
|
-
|
|
46
|
-
AI ファイルの書き込み前に既存のファイル・ディレクトリーリンクを解決します。共有 skill とプロジェクトのブリッジはプロジェクト内に限定し、外部へのリンクでは書き込みを停止します。既存の `.claude/` ディレクトリーとリンクは生成対象外で、`hai init` / `hai add` はその内容を変更・削除しません。
|
|
47
|
-
|
|
48
|
-
配布検証はパッケージアーカイブと生成プロジェクトの両方を対象にします。`.npmrc` / `.gitignore` のテンプレート源には `.hbs` を付けて梱包時の除外を避け、生成時に通常の名前へ戻します。依存配置と機密生成物の無視規則を維持し、全テンプレートが `.tgz` に含まれることを回帰検証します。
|
|
11
|
+
## 主な機能
|
|
49
12
|
|
|
50
|
-
|
|
13
|
+
- 管理画面、企業サイト、H5、API、モバイル、fullstack の作成。
|
|
14
|
+
- 既存アプリへのモジュール・設定・AI 指引の追加。
|
|
15
|
+
- ページ、部品、API、モデル、マイグレーションのひな型生成。
|
|
16
|
+
- 選択イメージのビルド、完全オフライン配布、サービス単位の更新。
|
|
51
17
|
|
|
52
|
-
|
|
18
|
+
## 使い始める
|
|
53
19
|
|
|
54
20
|
### CLI のインストール
|
|
55
21
|
|
|
56
|
-
|
|
22
|
+
Node.js は `engines`(`^22.22.2 || ^24.15.0 || >=26.0.0`)に合わせ、pnpm 12.11.2 を使用します。PowerShell では `pnpm.cmd` を使用してください。
|
|
57
23
|
|
|
58
|
-
```
|
|
24
|
+
```sh
|
|
59
25
|
pnpm add -g @h-ai/cli
|
|
60
26
|
hai --version
|
|
27
|
+
hai --help
|
|
61
28
|
```
|
|
62
29
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
### プロジェクトの作成
|
|
66
|
-
|
|
67
|
-
生成する `@h-ai/*` 依存は CLI と同じバージョンに固定し、pnpm は `catalog:` からその完全なバージョンを参照します。更新時はフレームワークのパッケージをまとめて更新し、lockfile の実際の解決バージョンを確認してください。
|
|
68
|
-
|
|
69
|
-
アプリケーションのリポジトリーで AI に「Hai-framework を最新バージョンにアップグレードして」と伝えると、プロジェクトの指針から [hai-framework-sync](templates/skills/hai-framework-sync/SKILL.md) を読みます。公開バージョンをオンラインで確認し、累積差分とアプリへの影響を比較して、必要な選択や阻害要因の解消をユーザーに求めます。その後、依存・コード・設定を移行し、skills と AI 入口をマージして検証します。比較のみの依頼ではアプリを変更しません。`hai init` / `hai add` は元のテンプレートを特定できない旧プロジェクトにも、アップグレード skill、関連リソース、参照先の CI/PR skill を補完します。既存ファイルは保持されるため、旧版 skill と入口は別途マージしてください。
|
|
70
|
-
|
|
71
|
-
作成メッセージは端末へ直接出力します。依存のインストールが失敗した場合は、コマンド、終了コード、stdout/stderr を表示し、生成したファイルを残します。プロジェクト内でインストールを再実行できます。`prebuild-install@7.1.3` の非推奨警告は `better-sqlite3` の上流インストーラー依存によるものです。この警告だけではインストールは失敗しません。警告を隠すためにネイティブインストーラーを上書き・削除しないでください。
|
|
30
|
+
生成したフレームワーク依存は CLI と同じ厳密バージョンに固定します。インストール失敗時はコマンド・終了コード・出力を表示し、再試行できるようファイルを残します。未公開ソースは下記のローカル開発手順で検証してください。
|
|
72
31
|
|
|
73
|
-
|
|
74
|
-
# 交互式创建(推荐)
|
|
75
|
-
hai create my-admin-app
|
|
32
|
+
### アプリの作成
|
|
76
33
|
|
|
77
|
-
|
|
78
|
-
hai create my-app
|
|
79
|
-
|
|
34
|
+
```sh
|
|
35
|
+
hai create my-app --type fullstack --frontends web --yes
|
|
36
|
+
cd my-app
|
|
37
|
+
pnpm dev
|
|
80
38
|
```
|
|
81
39
|
|
|
82
|
-
|
|
40
|
+
省略した項目は対話で選択し、`--yes` は既定値を使います。依存インストールと Git 初期化は既定で有効です。`--no-install` / `--no-git` で無効化できます。デプロイツールは開発依存として既定で入り、不要なら `--no-deploy` を指定します。
|
|
83
41
|
|
|
84
|
-
|
|
85
|
-
2. テンプレートを選択(minimal / default / full / custom)。
|
|
86
|
-
3. 機能モジュールを選択(custom の場合)。
|
|
87
|
-
4. サンプルコードを追加するか選択。
|
|
88
|
-
5. パッケージマネージャーを選択(pnpm / npm / yarn)。
|
|
89
|
-
6. 依存をインストールするか選択。
|
|
90
|
-
7. Git を初期化するか選択。
|
|
42
|
+
### プロジェクトテンプレート
|
|
91
43
|
|
|
92
|
-
|
|
44
|
+
| 種類 | 生成内容 |
|
|
45
|
+
| -------------------------- | -------------------------------------------------------------------- |
|
|
46
|
+
| `admin` / `website` / `h5` | SvelteKit 管理画面・サイト・モバイル Web |
|
|
47
|
+
| `api` | 共通 contract と API service の pnpm workspace |
|
|
48
|
+
| `mobile-app` | Svelte + Vite + Capacitor |
|
|
49
|
+
| `fullstack` | contract、API、共通 UI、選択した Web/App/Desktop。miniapp は説明のみ |
|
|
93
50
|
|
|
94
|
-
|
|
95
|
-
# 交互式选择
|
|
96
|
-
hai add
|
|
51
|
+
`--template minimal|default|full|custom` で構成を選び、`--features iam,db,...` で業務モジュールを指定します。Fullstack は管理 UI に必要な IAM・DB・cache・crypto・storage・audit を保持します。AI/ONNX/CUDA は既定で入りません。
|
|
97
52
|
|
|
98
|
-
|
|
99
|
-
hai add iam
|
|
100
|
-
hai add storage
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
既存プロジェクトにモジュールを追加します。`package.json` の更新、設定生成、依存解決を自動実行します。
|
|
53
|
+
### Fullstack mini 管理画面
|
|
104
54
|
|
|
105
|
-
|
|
55
|
+
ユーザー、ロール、監査ログ、アバター、個人設定、テーマ、言語、操作ガイドとヘルプを提供します。初回は `admin` と、ルート `.env.local` のランダムな `HAI_ADMIN_DEFAULT_PASSWORD` でログインします。既存ユーザーのパスワードは変更しません。例の業務ルールは変更できますが、認可はサーバーで行います。
|
|
106
56
|
|
|
107
|
-
|
|
108
|
-
# 校验配置完整性,补全缺失配置
|
|
109
|
-
hai init
|
|
110
|
-
|
|
111
|
-
# 强制重新生成所有配置
|
|
112
|
-
hai init --force
|
|
113
|
-
```
|
|
57
|
+
### アプリ設定と表示
|
|
114
58
|
|
|
115
|
-
|
|
59
|
+
設定項目は `.env.example` を参照します。共通 `.env` と `.env.dev/.env.test/.env.prod` は Git に保存し、秘密値は `.env.local` に置きます。優先順はプロセス環境 > ローカル秘密ファイル > 選択環境 > 共通値です。API 工程はサービスディレクトリ、fullstack はルートに配置します。YAML・環境上書き・表示情報は[利用ガイド](../../docs/usage/README.ja.md)を参照してください。
|
|
116
60
|
|
|
117
|
-
|
|
61
|
+
### 既存工程とコード生成
|
|
118
62
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
hai generate
|
|
124
|
-
|
|
125
|
-
# 指定类型
|
|
126
|
-
hai generate page users
|
|
63
|
+
```sh
|
|
64
|
+
hai add storage
|
|
65
|
+
hai init
|
|
66
|
+
hai generate page dashboard
|
|
127
67
|
hai generate component UserCard
|
|
128
|
-
hai generate api
|
|
129
|
-
hai generate model
|
|
130
|
-
hai generate migration add-
|
|
131
|
-
|
|
132
|
-
# 快捷命令
|
|
133
|
-
hai g:page dashboard
|
|
134
|
-
hai g:component StatusBadge
|
|
135
|
-
hai g:api orders
|
|
136
|
-
hai g:model order
|
|
68
|
+
hai generate api orders
|
|
69
|
+
hai generate model order
|
|
70
|
+
hai generate migration add-orders
|
|
137
71
|
```
|
|
138
72
|
|
|
139
|
-
|
|
73
|
+
`hai add` は依存を解決して設定を追加します。`hai init` は不足する設定と AI ファイルを補い、独自内容は保持します。`--force` はモジュール設定を再生成するため、差分を確認して使用してください。
|
|
140
74
|
|
|
141
|
-
|
|
142
|
-
| ------------ | ---------- | --------------------------------------------------------- |
|
|
143
|
-
| `minimal` | 最小構成 | 基本的な SvelteKit/hai 構成(モバイルは Svelte 5 + Vite) |
|
|
144
|
-
| `default` | 標準構成 | IAM + DB + Cache + Crypto |
|
|
145
|
-
| `full` | 全機能構成 | すべての業務モジュール + API Service / contract の仕組み |
|
|
146
|
-
| `custom` | カスタム | 必要に応じて選択 |
|
|
75
|
+
page/api 生成は SvelteKit 向けです。Fullstack/API は既存の contract/procedure 構造を拡張します。名前にパスは指定できず、`--force` なしでは上書きしません。マイグレーションは up/down 関数を生成するだけなので、実行前にデータへの影響を確認してください。
|
|
147
76
|
|
|
148
|
-
|
|
77
|
+
### ビルドとデプロイ
|
|
149
78
|
|
|
150
|
-
|
|
79
|
+
`pnpm build` はソースのコンパイルです。イメージごとの Dockerfile を `images/` に置き、`hai.build.json` で指定します。`--images` はビルド対象、`--services` は更新サービスを選びます。自動選択は接続可能な Podman、次に Docker です。依存の取得・インストール・本番依存の収集で、パッケージと SQLite ドライバーのキャッシュを共有し、再ダウンロードを避けます。
|
|
151
80
|
|
|
152
|
-
|
|
81
|
+
標準コンテナーは CPU 実行またはリモート AI サービスへの接続向けで、追加の GPU ランタイムをダウンロードしません。デプロイ先の GPU を使う場合は、イメージとコンテナーの実行設定を個別に調整してください。
|
|
153
82
|
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
pnpm
|
|
158
|
-
pnpm.
|
|
83
|
+
```sh
|
|
84
|
+
pnpm build --target docker
|
|
85
|
+
pnpm run deploy --env prod
|
|
86
|
+
pnpm run deploy --env prod --build --services web
|
|
87
|
+
pnpm run deploy --env prod --build --bundle-only --output release-prod.tar
|
|
159
88
|
```
|
|
160
89
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
CLI はルート `.env.local` にプロジェクトごとに異なるランダムな強い `HAI_ADMIN_DEFAULT_PASSWORD` を生成するため、`dev` / `start` を直接実行できます。初回ログインは `admin` とそのパスワードを使います。同名の環境変数で上書きできます。パスワードは `_iam.yml` のポリシーに従い、既定では 8 文字以上です。違反すると起動ログに具体的な理由とエラーコードを表示します。ユーザーが存在する場合、この変数でアカウントやパスワードはリセットされません。`.env.local` は Git とコンテナビルドから除外され、`.env.example` はプレースホルダーのみです。デプロイ先ごとに別のパスワードを設定してください。
|
|
164
|
-
|
|
165
|
-
- 管理者はユーザーの検索、ページング、作成、編集、有効・無効化、削除、アバター更新を行えます。サーバーは現在の管理者を保護し、更新ロック内で認可を再確認するため、同時操作で全管理者の権限を失うことを防ぎます。
|
|
166
|
-
- 初期ロールは `admin` / `user` の 2 種類です。ロール画面は人数表示と説明編集、ユーザー画面はロール割り当てを担当します。既定では一般ユーザーは個人設定のみ利用でき、管理 API への直接アクセスもサーバーで拒否します。これらの業務規則は実際の要件に合わせて変更できます。
|
|
167
|
-
- 監査画面は操作、リソース、日付で記録を検索します。ログイン成功、ログアウト、パスワード変更、管理の書き込みを監査に記録し、パスワード、token、アバター内容は含めません。
|
|
168
|
-
- 個人設定はプロフィール、アバター、言語、テーマ、パスワード変更を提供します。設定は IAM ユーザー metadata に保存します。アバターは PNG/JPEG/WebP、最大 512 KiB で、サーバーが画像内容を検証して storage key を生成します。
|
|
169
|
-
|
|
170
|
-
型付き api-client と serv の crypto transport が、JSON 業務リクエスト、ログイン、更新を双方向に暗号化します。Web はメモリー内 access token と HttpOnly refresh Cookie を使います。App のネイティブ版は Capacitor の安全な TokenStorage、Desktop のネイティブ版はメモリーのみを使い、再起動後は再ログインします。ネイティブの refresh body 通路はクライアント識別子、明示的な通信ヘッダー、信頼する Origin を検証し、ブラウザープレビューは Cookie モードを使います。公開アバターはホワイトリスト内のバイナリー画像リソースです。
|
|
171
|
-
|
|
172
|
-
Web/App/Desktop は同じ `AdminWorkspace`、management store、型付き client を使います。現在のユーザーと refresh はフレームワーク標準 IAM procedures、テーマの保存と DOM 更新は `@h-ai/ui/theme` を使います。アプリの初期ロール、自己保護、アバター、監査は業務の例であり、実際の要件に合わせて変更できます。
|
|
173
|
-
|
|
174
|
-
既定の SQLite、ローカル storage、memory cache は単一インスタンスの mini 管理サービス向けです。管理の書き込みは単一 writer のみ対応します。複数の読み取りインスタンスには共有 DB、storage、Redis cache と transport セッションの固定ルーティングが必要で、管理の書き込みは同じ writer に送ります。Redis への変更だけでは任意の複数 writer 間で最後の管理者を原子的に保護できません。生成するルート scripts は typecheck、lint、build、test、test:e2e を提供し、Capacitor/Tauri の配布には対応するネイティブビルドとパッケージ作成も必要です。
|
|
175
|
-
|
|
176
|
-
## アプリ設定と表示
|
|
177
|
-
|
|
178
|
-
各プロジェクトの `.env.example` に用途、列挙値と範囲を記載します。[全変数一覧](../../.env.example) と [環境設定](templates/skills/hai-app-create/development.md#环境配置) に読み込み順序と共通コマンドをまとめています。
|
|
179
|
-
|
|
180
|
-
生成されるすべての `.gitignore` に `**/data/` を含め、ルートと各 workspace の実行データおよび `.gitkeep` を除外します。必要なディレクトリは実行時に作成します。
|
|
181
|
-
|
|
182
|
-
Fullstack の `packages/<project>-serv/config/` は `_core`、`_serv`、`_db`、`_cache`、`_iam`、`_storage`、`_audit`、`_reach`、`_ai`、`_vecdb`、`_payment`、`_scheduler`、`_deploy` の 13 個の `.yml` を常に生成します。使用するモジュールは既定値を有効にし、未使用のモジュール、任意項目、代替 Provider はコメントとして残します。`.env.example` も未使用モジュールの認証情報をコメントで示し、作成時に指定した設定値を保持します。
|
|
183
|
-
|
|
184
|
-
拡張時はサービスの workspace に必要なパッケージを追加し、`src/server/runtime.ts` で公開 Schema による検証、初期化、逆順の終了処理を実装してから設定を有効にします。全体がコメントのファイルは外側のコメントを一層外し、任意ブロックは必要なものだけ有効にします。設定ファイルの存在だけでは業務機能は接続されません。SQLite/Redis/S3 や Reach Provider の切り替え時は既存の接続ブロックを置き換え、Provider 名を重複させません。`crypto.init()` は設定引数を取らず、datapipe は純関数のため、架空の YAML は生成しません。
|
|
185
|
-
|
|
186
|
-
全テンプレートは `_core.yml` から `name`、`version`、`env`、`defaultLocale`、`logging` を読み、`core.config` でメタ情報を取得して `core.logger` を使います。単一アプリの設定は `config/`、API workspace は `apps/<project>-service/config/`、fullstack は `packages/<project>-serv/config/` にあります。ログレベルと形式は YAML で決め、初期化で固定の `logging` を指定して上書きしません。
|
|
90
|
+
完全配布にはアプリと自前ミドルウェアのイメージが入ります。梱包のみでは tar と Windows `deploy.ps1`、Linux/macOS `deploy.sh` を生成します。隔離 Linux サーバーでは展開して `sh apply.sh` を実行します。初回は完全配布が必要で、部分更新は他サービスとボリュームを維持します。各手順の結果を表示し、失敗は非ゼロで終了して復元を試みます。前提・キャッシュ・版管理・復元は[デプロイ説明](../deploy/README.ja.md)を参照してください。
|
|
187
91
|
|
|
188
|
-
|
|
92
|
+
デスクトップ配布は `pnpm build --target desktop --platform windows|linux|macos --arch x64|arm64` を対象 OS とツールチェーンで実行します。コンテナの Web 表示とは別にネイティブ配布を検証してください。
|
|
189
93
|
|
|
190
|
-
|
|
94
|
+
### AI による開発
|
|
191
95
|
|
|
192
|
-
|
|
96
|
+
ルート `AGENTS.md` から `.agents/skills/` を参照します。Claude・Copilot・OpenCode も共通規則を使います。日常作業は[アプリ開発](templates/skills/hai-app-create/SKILL.md)、大きな仕様は[レビュー](templates/skills/hai-spec-review/SKILL.md)と[実装](templates/skills/hai-spec-implement/SKILL.md)、更新は[フレームワーク同期](templates/skills/hai-framework-sync/SKILL.md)を使用します。
|
|
193
97
|
|
|
194
|
-
|
|
98
|
+
入口には作業の範囲を置き、詳細資料は必要時だけ読みます。`hai init` / `hai add` は不足分を補うため、既存ルールは差分を確認して統合し、同期時は skill ディレクトリ全体をコピーします。
|
|
195
99
|
|
|
196
|
-
##
|
|
100
|
+
## 開発とテスト
|
|
197
101
|
|
|
198
|
-
|
|
102
|
+
### 開発時のローカル利用
|
|
199
103
|
|
|
200
|
-
|
|
104
|
+
フレームワークのルートで実行し、現在のソースから生成します。デプロイ検証には接続可能な Podman/Docker も必要です。
|
|
201
105
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
## 共通オプション
|
|
205
|
-
|
|
206
|
-
| オプション | 説明 |
|
|
207
|
-
| ------------------ | ------------------------ |
|
|
208
|
-
| `-v, --verbose` | 詳細な出力 |
|
|
209
|
-
| `-C, --cwd <path>` | 作業ディレクトリーの指定 |
|
|
210
|
-
|
|
211
|
-
## 開発時のローカル利用
|
|
212
|
-
|
|
213
|
-
> npm 公開前に monorepo 内で CLI をローカル実行・デバッグする場合に使います。
|
|
214
|
-
|
|
215
|
-
### 1. ビルド
|
|
216
|
-
|
|
217
|
-
```bash
|
|
218
|
-
# 构建 CLI(生成 dist/)
|
|
106
|
+
```sh
|
|
219
107
|
pnpm --filter @h-ai/cli build
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
pnpm --filter @h-ai/cli
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
### 2. 直接実行(インストール不要)
|
|
226
|
-
|
|
227
|
-
ビルド後、`node` で `dist/index.js` を直接実行できます:
|
|
228
|
-
|
|
229
|
-
```bash
|
|
230
|
-
# 从仓库根目录运行
|
|
231
|
-
node packages/cli/dist/index.js create my-app
|
|
232
|
-
node packages/cli/dist/index.js create my-app --type admin --features iam,db
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
任意のディレクトリーから絶対パスでも実行できます:
|
|
236
|
-
|
|
237
|
-
```bash
|
|
238
|
-
node /path/to/hai-framework/packages/cli/dist/index.js create my-app
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
### 3. グローバルリンク(`pnpm link`)
|
|
242
|
-
|
|
243
|
-
ターミナルで `hai` を直接使うにはグローバルリンクを作成します:
|
|
244
|
-
|
|
245
|
-
```bash
|
|
246
|
-
# 在 packages/cli 目录下执行
|
|
247
|
-
cd packages/cli
|
|
248
|
-
pnpm link --global
|
|
249
|
-
|
|
250
|
-
# 验证
|
|
251
|
-
hai --version
|
|
252
|
-
hai create my-app
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
> 使用後は `pnpm unlink --global @h-ai/cli` でリンクを解除できます。
|
|
256
|
-
|
|
257
|
-
### 4. monorepo のほかの app で使用
|
|
258
|
-
|
|
259
|
-
`apps/*` は `workspace:*` でローカルパッケージを参照し、そのまま利用できます:
|
|
260
|
-
|
|
261
|
-
```bash
|
|
262
|
-
# 在仓库根目录执行,对任意 app 类型生成项目
|
|
263
|
-
node packages/cli/dist/index.js create ../my-new-project
|
|
264
|
-
```
|
|
265
|
-
|
|
266
|
-
## 5. 設定による認証画面
|
|
267
|
-
|
|
268
|
-
規約は設定の userAgreementMarkdown/privacyPolicyMarkdown または URL を使用できます。同じ規約は Markdown 本文を優先して安全な Modal で描画します。
|
|
269
|
-
|
|
270
|
-
IAM を選択した admin/h5/website は AuthPanel と標準 route を生成し、mobile と fullstack は API actions を共用します。サーバーの _iam.yml で認証方式、登録、復旧、規約 Modal、ブランドを設定します。LDAP/Reach は任意です。既定 LDAP クライアントを使用する時だけ ldapts をインストールし、login.ldap と接続設定を指定します。メール/SMS は Reach テンプレートまたは独自コールバックを使用します。フォームは header/extraFields/footer、AuthPanel は login*/register* snippet を提供します。複数ノードは DB と Redis を共有します。
|
|
271
|
-
|
|
272
|
-
[完整 IAM 配置 / IAM configuration](../iam/README.ja.md)
|
|
273
|
-
|
|
274
|
-
### 6. テスト実行
|
|
275
|
-
|
|
276
|
-
```bash
|
|
277
|
-
# 单元测试 + E2E 模板生成测试
|
|
108
|
+
node packages/cli/dist/index.js create ../my-app
|
|
109
|
+
pnpm --filter @h-ai/cli typecheck
|
|
110
|
+
pnpm --filter @h-ai/cli lint
|
|
278
111
|
pnpm --filter @h-ai/cli test
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
pnpm --filter @h-ai/cli test:
|
|
282
|
-
|
|
283
|
-
# watch 模式
|
|
284
|
-
pnpm --filter @h-ai/cli test:watch
|
|
285
|
-
|
|
286
|
-
# 覆盖率
|
|
287
|
-
pnpm --filter @h-ai/cli test:coverage
|
|
112
|
+
pnpm check:skills
|
|
113
|
+
pnpm --filter @h-ai/cli test:scaffold-gates
|
|
114
|
+
pnpm --filter @h-ai/cli test:deploy-gates
|
|
288
115
|
```
|
|
289
116
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
成功時のスクリーンショットは CLI の `test-results/scaffold-evidence/` に保存します。`HAI_AUTH_EVIDENCE_DIR` で保存先を指定でき、生成プロジェクトの削除後も残ります。fullstack E2E は選択した全 Web/App/Desktop のブラウザープレビューでログイン、ガイド、ヘルプ、個人設定を検証します。小程序とネイティブシェルは各プラットフォームで別途検証します。
|
|
293
|
-
|
|
294
|
-
失敗・縮退時の表示も国際化します。サイト API はリクエストの locale で AI 縮退・メール到達状態を表示し、未到達を受信済みと表現しません。CLI のデプロイ状態は cliM、Gallery の暗号化制限は二言語メッセージを使います。中国語・英語で未設定・失敗・成功を検証し、有料サービスの呼び出しは不要です。
|
|
295
|
-
|
|
296
|
-
クラウド設定の利用:Neon は HAI_DB(PostgreSQL JSON)、Upstash は HAI_CACHE(Redis rediss URL JSON)、R2 は HAI_STORAGE(フラットな S3 JSON)を出力します。メール・SMS は HAI_REACH_PROVIDERS を出力し、deployApp が両チャネルと YAML のメッセージテンプレートを統合して元の providers 配列を置換します。Core はオブジェクト・配列全体の上書きをサポートし、親ノードを末端より優先して Schema 検証を維持します。ビルド子プロセスと対象環境は同じ値を使います。R2 は既存の S3 accessKeyId/secretAccessKey、Resend は検証済みドメインの from、Alibaba Cloud は承認済み signName・テンプレートが必要です。アプリは対応する `_db.yml` / `_cache.yml` / `_storage.yml` / `_reach.yml` を起動時に読み込み、ネットワーククライアントには Node が必要です。
|
|
297
|
-
|
|
298
|
-
デプロイ失敗からの復旧:`ProvisionResult.resourceStatus` は created/reused を示します。`getDeployRecovery(result.error)` で projectName、stage、platformProjectId、リソース一覧を取得し、unknown は結果不明なので先にサービス側の管理画面で確認します。失敗リソースの ID が返った場合は保持します。復旧情報に envVars・元の例外・接続認証情報は含まれず、CLI が一覧と提案を表示します。同名の再試行は既存リソースを再利用し、自動削除しません。新規作成分も未使用を人が確認した後にのみ削除します。
|
|
299
|
-
|
|
300
|
-
## 生成フォームのレイアウト
|
|
301
|
-
|
|
302
|
-
website の連絡フォームと fullstack 管理画面は UI の FormLayout/FormField を使い、1列・2列、ラベルの縦・横配置、自動列結合と狭いコンテナーへの対応を共有します。ユーザー編集・プロフィール・パスワードは同じ設定と中国語・英語の検証メッセージを使用します。生成された hai-ui skill に設定を記載しています。
|
|
117
|
+
生成検証は実工程でインストール、typecheck、lint、build、test、ブラウザー操作を実行します。デプロイ検証はオフライン tar、SSH/手動配布、部分更新を扱います。テスト所有の資源は終了時に削除し、必要な証拠だけ指定先へ保存します。ネイティブと実クラウドは別途検証してください。
|
|
303
118
|
|
|
304
|
-
##
|
|
119
|
+
## ライセンス
|
|
305
120
|
|
|
306
121
|
Apache-2.0
|