@h-ai/cli 0.1.0-alpha.56 → 0.1.0-alpha.57

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 (69) hide show
  1. package/README.en.md +205 -0
  2. package/README.ja.md +205 -0
  3. package/README.md +16 -0
  4. package/dist/chunk-MJGUBOAV.js +391 -0
  5. package/dist/chunk-MJGUBOAV.js.map +1 -0
  6. package/dist/{cli-skill-templates-ZIWYMS4Y.js → cli-skill-templates-ZYXES3NT.js} +3 -3
  7. package/dist/{cli-skill-templates-ZIWYMS4Y.js.map → cli-skill-templates-ZYXES3NT.js.map} +1 -1
  8. package/dist/index.js +32 -69
  9. package/dist/index.js.map +1 -1
  10. package/package.json +7 -7
  11. package/templates/apps/api/.gitignore.hbs +13 -0
  12. package/templates/apps/api/.npmrc.hbs +2 -0
  13. package/templates/apps/api/e2e/api-service.spec.ts.hbs +1 -1
  14. package/templates/apps/api/{eslint.config.js → eslint.config.js.hbs} +6 -8
  15. package/templates/apps/api/package.json.hbs +1 -1
  16. package/templates/apps/fullstack/.gitignore.hbs +16 -0
  17. package/templates/apps/fullstack/.npmrc.hbs +2 -0
  18. package/templates/apps/fullstack/apps/{{projectName}}-app/eslint.config.js.hbs +5 -8
  19. package/templates/apps/fullstack/apps/{{projectName}}-desktop/eslint.config.js.hbs +5 -8
  20. package/templates/apps/fullstack/apps/{{projectName}}-web/eslint.config.js.hbs +5 -8
  21. package/templates/apps/fullstack/e2e/fullstack.spec.ts.hbs +1 -1
  22. package/templates/apps/fullstack/{eslint.config.js → eslint.config.js.hbs} +6 -8
  23. package/templates/apps/fullstack/package.json.hbs +1 -1
  24. package/templates/base/.npmrc.hbs +15 -0
  25. package/templates/base/eslint-rules.js +45 -0
  26. package/templates/base/eslint.config.js.hbs +6 -8
  27. package/templates/base/package.json.hbs +1 -1
  28. package/templates/skills/AGENTS.md +9 -8
  29. package/templates/skills/CLAUDE.md +4 -0
  30. package/templates/skills/bridges/admin/AGENTS.md +8 -0
  31. package/templates/skills/bridges/admin/CLAUDE.md +4 -0
  32. package/templates/skills/bridges/admin/copilot-instructions.md +2 -0
  33. package/templates/skills/bridges/api/AGENTS.md +8 -1
  34. package/templates/skills/bridges/api/CLAUDE.md +4 -0
  35. package/templates/skills/bridges/api/copilot-instructions.md +2 -0
  36. package/templates/skills/bridges/fullstack/AGENTS.md.hbs +8 -2
  37. package/templates/skills/bridges/fullstack/CLAUDE.md.hbs +4 -0
  38. package/templates/skills/bridges/fullstack/copilot-instructions.md.hbs +2 -0
  39. package/templates/skills/bridges/h5/AGENTS.md +8 -0
  40. package/templates/skills/bridges/h5/CLAUDE.md +4 -0
  41. package/templates/skills/bridges/h5/copilot-instructions.md +2 -0
  42. package/templates/skills/bridges/mobile-app/AGENTS.md +8 -0
  43. package/templates/skills/bridges/mobile-app/CLAUDE.md +4 -0
  44. package/templates/skills/bridges/mobile-app/copilot-instructions.md +2 -0
  45. package/templates/skills/bridges/website/AGENTS.md +8 -0
  46. package/templates/skills/bridges/website/CLAUDE.md +4 -0
  47. package/templates/skills/bridges/website/copilot-instructions.md +2 -0
  48. package/templates/skills/claude-skill.md.hbs +7 -0
  49. package/templates/skills/copilot-instructions.md +2 -0
  50. package/templates/skills/hai-api-client/SKILL.md +2 -0
  51. package/templates/skills/hai-app-create/SKILL.md +9 -7
  52. package/templates/skills/hai-app-create/development.md +66 -0
  53. package/templates/skills/hai-app-create/reference.md +44 -32
  54. package/templates/skills/hai-app-review/SKILL.md +50 -144
  55. package/templates/skills/hai-app-tests/SKILL.md +3 -1
  56. package/templates/skills/hai-app-tests/reference.md +47 -27
  57. package/templates/skills/hai-build/SKILL.md +5 -4
  58. package/templates/skills/hai-build/reference.md +52 -32
  59. package/templates/skills/hai-ci/SKILL.md +8 -15
  60. package/templates/skills/hai-framework-sync/SKILL.md +8 -1
  61. package/templates/skills/hai-pr-review/SKILL.md +5 -4
  62. package/templates/skills/hai-reldb/SKILL.md +1 -0
  63. package/templates/skills/hai-reldb/reference.md +3 -0
  64. package/templates/skills/hai-scheduler/SKILL.md +3 -0
  65. package/templates/skills/hai-serv/SKILL.md +1 -0
  66. package/templates/skills/hai-serv/reference.md +16 -2
  67. package/templates/skills/hai-storage/SKILL.md +3 -1
  68. package/dist/chunk-WUYLYCW2.js +0 -237
  69. package/dist/chunk-WUYLYCW2.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { generateConfigFile } from './chunk-O3ANVICQ.js';
3
- import './chunk-WUYLYCW2.js';
3
+ import { cliM } from './chunk-MJGUBOAV.js';
4
4
  import './chunk-2H7UOFLK.js';
5
5
  import process3 from 'process';
6
6
  import { core } from '@h-ai/core';
@@ -680,6 +680,8 @@ async function generateFromTemplates(projectPath, context) {
680
680
  const includeBaseTemplate = context.appType !== "fullstack" && !context.isApiWorkspace;
681
681
  if (includeBaseTemplate) {
682
682
  await copyStaticDir(path2.join(root, "base"), projectPath);
683
+ } else {
684
+ await fse.copy(path2.join(root, "base", "eslint-rules.js"), path2.join(projectPath, "eslint-rules.js"));
683
685
  }
684
686
  const appDir = path2.join(root, "apps", context.appType);
685
687
  if (await fse.pathExists(appDir)) {
@@ -1102,7 +1104,7 @@ PORT=3000
1102
1104
  ` : generateEnvExample(resolvedOptions.features, configs);
1103
1105
  await writeFile(envExamplePath, envExample);
1104
1106
  }
1105
- const { generateSkillFiles } = await import('./cli-skill-templates-ZIWYMS4Y.js');
1107
+ const { generateSkillFiles } = await import('./cli-skill-templates-ZYXES3NT.js');
1106
1108
  await generateSkillFiles(
1107
1109
  projectPath,
1108
1110
  resolvedOptions.features,
@@ -1612,6 +1614,19 @@ function normalizeChildOutput(output) {
1612
1614
  }
1613
1615
  return "";
1614
1616
  }
1617
+ function generateAiDevelopmentReadme() {
1618
+ return `## AI \u8F85\u52A9\u5F00\u53D1
1619
+
1620
+ \u4ECE\u672C\u9879\u76EE\u6839\u76EE\u5F55\u6253\u5F00\u6240\u7528\u7F16\u7801\u5DE5\u5177\uFF0C\u5148\u8BFB\u53D6 [AGENTS.md](./AGENTS.md)\u3002Claude Code \u901A\u8FC7 [CLAUDE.md](./CLAUDE.md) \u52A0\u8F7D\u9879\u76EE\u89C4\u5219\uFF1BGitHub Copilot \u4F7F\u7528 [.github/copilot-instructions.md](./.github/copilot-instructions.md)\uFF0COpenCode \u4F7F\u7528 AGENTS.md \u548C [opencode.json](./opencode.json)\u3002
1621
+
1622
+ Codex\u3001Cursor\u3001Copilot\u3001OpenCode \u4ECE .agents/skills/ \u53D1\u73B0\u5171\u4EAB\u6280\u80FD\uFF1BClaude Code \u4ECE .claude/skills/ \u7684\u539F\u751F\u5165\u53E3\u8BFB\u53D6\u540C\u4E00\u4EFD\u5171\u4EAB\u6B63\u6587\u3002\u666E\u901A\u65B0\u589E\u3001\u4FEE\u6539\u3001\u4FEE\u590D\u4EFB\u52A1\u4F7F\u7528 [\u5E94\u7528\u5F00\u53D1 Skill](./.agents/skills/hai-app-create/SKILL.md) \u548C [\u5F00\u53D1\u89C4\u8303\u4E0E\u6846\u67B6\u80FD\u529B\u8DEF\u7531](./.agents/skills/hai-app-create/development.md)\uFF1B\u5177\u4F53\u6A21\u5757\u518D\u6309\u9700\u8BFB\u53D6\uFF0C\u4E0D\u80FD\u628A Skill \u5DF2\u4EA4\u4ED8\u5F53\u6210\u4F9D\u8D56\u5DF2\u5B89\u88C5\u6216\u914D\u7F6E\u5DF2\u542F\u7528\u3002
1623
+
1624
+ \u4F18\u5148\u590D\u7528\u9002\u7528\u7684 hai-framework \u516C\u5F00 API \u4E0E\u5DF2\u6709\u4E1A\u52A1\u5B9E\u73B0\u3002\u5B8C\u6210\u65F6\u8BF4\u660E\u590D\u7528\u7684\u80FD\u529B\u3001\u76F8\u5173\u80FD\u529B\u672A\u91C7\u7528\u7684\u539F\u56E0\uFF0C\u4EE5\u53CA\u5B89\u5168\u8FB9\u754C\u548C\u7C7B\u578B\u3001\u914D\u7F6E\u3001\u6587\u6848\u3001\u8C03\u7528\u65B9\u7684\u540C\u6B65\u60C5\u51B5\u3002\u8D28\u91CF\u9A8C\u8BC1\u6309\u5F53\u524D package.json \u6267\u884C typecheck \u2192 lint \u2192 build \u2192 test\uFF1BUI\u3001\u8DEF\u7531\u4E0E\u7AEF\u5230\u7AEF\u6D41\u7A0B\u53E6\u8FD0\u884C test:e2e\uFF0C\u672A\u8FD0\u884C\u9879\u8BF4\u660E\u539F\u56E0\u3002\u5B89\u5168\u4E0E\u8D28\u91CF\u89C4\u5219\u65E2\u8981\u6309\u89C4\u8303\u5BA1\u67E5\uFF0C\u4E5F\u8981\u8FD0\u884C\u95E8\u7981\u9A8C\u8BC1\u3002
1625
+
1626
+ \u5DF2\u6709 hai \u9879\u76EE\u53EF\u8FD0\u884C hai init \u8865\u9F50\u7F3A\u5931\u7684 AI \u652F\u6301\u6587\u4EF6\u4E0E\u53C2\u8003\u8D44\u6E90\uFF1B\u5DF2\u6709 AGENTS.md\u3001Skill \u548C\u81EA\u5B9A\u4E49\u89C4\u5219\u4F1A\u4FDD\u7559\uFF0C\u5347\u7EA7\u65F6\u9700\u5C06\u4E0A\u8FF0\u666E\u901A\u5F00\u53D1\u5165\u53E3\u4E0E\u89C4\u8303\u663E\u5F0F\u5408\u5E76\u5230\u65E7\u6307\u5F15\u3002
1627
+
1628
+ `;
1629
+ }
1615
1630
  function generateReadme(name, appTypeLabel, pm, appType) {
1616
1631
  const install = getInstallCommand(pm);
1617
1632
  const isStaticImage = appType === "mobile-app";
@@ -1676,7 +1691,7 @@ docker stop ${name}
1676
1691
 
1677
1692
  ${runtimeNotes}
1678
1693
 
1679
- ## \u6587\u6863
1694
+ ${generateAiDevelopmentReadme()}## \u6587\u6863
1680
1695
 
1681
1696
  - [hai Agent Framework](https://github.com/hai-series/hai-framework)
1682
1697
  - [Svelte 5](https://svelte.dev/)
@@ -1760,7 +1775,7 @@ docker stop ${name}
1760
1775
  - \u5728 \`${name}-service\` \u4E2D\u6269\u5C55 procedures\u3001\u6A21\u5757\u521D\u59CB\u5316\u4E0E\u914D\u7F6E\u3002
1761
1776
  - \u9700\u8981 IAM / storage / ai \u65F6\uFF0C\u4F18\u5148\u590D\u7528 \`@h-ai/api-contract\` \u4E0E \`@h-ai/serv/features/*\`\u3002
1762
1777
 
1763
- ## \u6587\u6863
1778
+ ${generateAiDevelopmentReadme()}## \u6587\u6863
1764
1779
 
1765
1780
  - [hai Agent Framework](https://github.com/hai-series/hai-framework)
1766
1781
  - [@h-ai/serv](./.agents/skills/hai-serv/SKILL.md)
@@ -1892,11 +1907,12 @@ ${frontends.includes("web") ? `- Web \u4F7F\u7528\u72EC\u7ACB\u9759\u6001\u955C\
1892
1907
  \`\`\`bash
1893
1908
  ${pm} typecheck
1894
1909
  ${pm} lint
1910
+ ${pm} build
1895
1911
  ${pm} test
1896
1912
  ${pm} test:e2e
1897
1913
  \`\`\`
1898
1914
 
1899
- ## \u6587\u6863
1915
+ ${generateAiDevelopmentReadme()}## \u6587\u6863
1900
1916
 
1901
1917
  - [hai Agent Framework](https://github.com/hai-series/hai-framework)
1902
1918
  - [@h-ai/serv](./.agents/skills/hai-serv/SKILL.md)
@@ -2012,7 +2028,7 @@ async function addModule(options) {
2012
2028
  core.logger.info(`\u53EF\u7528\u6A21\u5757: ${Object.keys(MODULE_MAP).join(", ")}`);
2013
2029
  return;
2014
2030
  }
2015
- const { generateProjectAiSupport, resolveSkillNamesForPackages } = await import('./cli-skill-templates-ZIWYMS4Y.js');
2031
+ const { generateProjectAiSupport, resolveSkillNamesForPackages } = await import('./cli-skill-templates-ZYXES3NT.js');
2016
2032
  if (moduleDef.packages.every((p) => project.haiPackages.includes(p))) {
2017
2033
  const generatedFiles2 = await generateProjectAiSupport(
2018
2034
  cwd,
@@ -2118,69 +2134,6 @@ async function addModule(options) {
2118
2134
  throw error;
2119
2135
  }
2120
2136
  }
2121
-
2122
- // messages/en-US.json
2123
- var en_US_default = {
2124
- cli_invalidGenerateName: "Use a name starting with a letter, with only letters, digits, hyphens or underscores",
2125
- cli_generateOutsideWorkspace: "Generated files must remain inside the workspace, including symbolic link targets",
2126
- cli_generateExists: "File already exists: {path}. Use --force to overwrite it",
2127
- cli_deploy_module_missing: "Deploy module not found. Install @h-ai/deploy first:",
2128
- cli_deploy_load_credentials: "Loading credentials...",
2129
- cli_deploy_credentials_failed: "Failed to load credentials: {message}",
2130
- cli_deploy_credentials_loaded: "Loaded {count} credentials",
2131
- cli_deploy_load_config: "Loading deploy config...",
2132
- cli_deploy_config_missing: "Deploy config not found: {path}",
2133
- cli_deploy_config_hint: "Run: hai add deploy to generate config template",
2134
- cli_deploy_config_loaded: "Deploy config loaded",
2135
- cli_deploy_scanning: "Scanning application...",
2136
- cli_deploy_scan_failed: "Scan failed: {message}",
2137
- cli_deploy_scanned: "Scanned: {name} (SvelteKit: {sveltekit}, Services: {services})",
2138
- cli_deploy_none: "none",
2139
- cli_deploy_initializing: "Initializing deploy module...",
2140
- cli_deploy_init_failed: "Init failed: {message}",
2141
- cli_deploy_initialized: "Deploy module initialized",
2142
- cli_deploy_deploying: "Deploying application...",
2143
- cli_deploy_failed: "Deploy failed: {message}",
2144
- cli_deploy_success: "Deployment successful!",
2145
- cli_deploy_url: " URL: {url}",
2146
- cli_deploy_id: " ID: {id}",
2147
- cli_deploy_env: " Env: {names}",
2148
- cli_deploy_command_failed: "Deploy command failed"
2149
- };
2150
-
2151
- // messages/zh-CN.json
2152
- var zh_CN_default = {
2153
- cli_invalidGenerateName: "\u540D\u79F0\u5FC5\u987B\u4EE5\u5B57\u6BCD\u5F00\u5934\uFF0C\u4E14\u4EC5\u5305\u542B\u5B57\u6BCD\u3001\u6570\u5B57\u3001\u77ED\u6A2A\u7EBF\u6216\u4E0B\u5212\u7EBF",
2154
- cli_generateOutsideWorkspace: "\u751F\u6210\u6587\u4EF6\u5FC5\u987B\u4F4D\u4E8E\u5DE5\u4F5C\u76EE\u5F55\u5185\uFF0C\u7B26\u53F7\u94FE\u63A5\u76EE\u6807\u4E5F\u4E0D\u5F97\u8D8A\u754C",
2155
- cli_generateExists: "\u6587\u4EF6\u5DF2\u5B58\u5728\uFF1A{path}\u3002\u4F7F\u7528 --force \u624D\u53EF\u8986\u76D6",
2156
- cli_deploy_module_missing: "\u672A\u627E\u5230\u90E8\u7F72\u6A21\u5757\uFF0C\u8BF7\u5148\u5B89\u88C5 @h-ai/deploy\uFF1A",
2157
- cli_deploy_load_credentials: "\u6B63\u5728\u52A0\u8F7D\u51ED\u8BC1\u2026",
2158
- cli_deploy_credentials_failed: "\u52A0\u8F7D\u51ED\u8BC1\u5931\u8D25\uFF1A{message}",
2159
- cli_deploy_credentials_loaded: "\u5DF2\u52A0\u8F7D {count} \u9879\u51ED\u8BC1",
2160
- cli_deploy_load_config: "\u6B63\u5728\u52A0\u8F7D\u90E8\u7F72\u914D\u7F6E\u2026",
2161
- cli_deploy_config_missing: "\u672A\u627E\u5230\u90E8\u7F72\u914D\u7F6E\uFF1A{path}",
2162
- cli_deploy_config_hint: "\u8FD0\u884C hai add deploy \u751F\u6210\u90E8\u7F72\u914D\u7F6E\u6A21\u677F",
2163
- cli_deploy_config_loaded: "\u90E8\u7F72\u914D\u7F6E\u5DF2\u52A0\u8F7D",
2164
- cli_deploy_scanning: "\u6B63\u5728\u626B\u63CF\u5E94\u7528\u2026",
2165
- cli_deploy_scan_failed: "\u626B\u63CF\u5931\u8D25\uFF1A{message}",
2166
- cli_deploy_scanned: "\u5DF2\u626B\u63CF\uFF1A{name}\uFF08SvelteKit\uFF1A{sveltekit}\uFF0C\u670D\u52A1\uFF1A{services}\uFF09",
2167
- cli_deploy_none: "\u65E0",
2168
- cli_deploy_initializing: "\u6B63\u5728\u521D\u59CB\u5316\u90E8\u7F72\u6A21\u5757\u2026",
2169
- cli_deploy_init_failed: "\u521D\u59CB\u5316\u5931\u8D25\uFF1A{message}",
2170
- cli_deploy_initialized: "\u90E8\u7F72\u6A21\u5757\u5DF2\u521D\u59CB\u5316",
2171
- cli_deploy_deploying: "\u6B63\u5728\u90E8\u7F72\u5E94\u7528\u2026",
2172
- cli_deploy_failed: "\u90E8\u7F72\u5931\u8D25\uFF1A{message}",
2173
- cli_deploy_success: "\u90E8\u7F72\u6210\u529F\uFF01",
2174
- cli_deploy_url: " \u5730\u5740\uFF1A{url}",
2175
- cli_deploy_id: " \u6807\u8BC6\uFF1A{id}",
2176
- cli_deploy_env: " \u73AF\u5883\u53D8\u91CF\uFF1A{names}",
2177
- cli_deploy_command_failed: "\u90E8\u7F72\u547D\u4EE4\u5931\u8D25"
2178
- };
2179
-
2180
- // src/cli-i18n.ts
2181
- var cliM = core.i18n.createMessageGetter({ "en-US": en_US_default, "zh-CN": zh_CN_default });
2182
-
2183
- // src/commands/cli-deploy.ts
2184
2137
  async function deployCommand(options) {
2185
2138
  const spinner = ora();
2186
2139
  const cwd = options.cwd ?? process3.cwd();
@@ -2609,6 +2562,16 @@ async function initProject(options) {
2609
2562
  }
2610
2563
  const { project, existing, missing } = result;
2611
2564
  spinner.succeed(`\u68C0\u6D4B\u5230\u9879\u76EE: ${chalk.cyan(project.name)}`);
2565
+ if (project.isHaiProject) {
2566
+ const { generateProjectAiSupport, resolveSkillNamesForPackages } = await import('./cli-skill-templates-ZYXES3NT.js');
2567
+ const generatedFiles = await generateProjectAiSupport(cwd, resolveSkillNamesForPackages(project.haiPackages), {
2568
+ overwriteSkills: false,
2569
+ overwriteBridgeFiles: false
2570
+ });
2571
+ for (const generatedFile of generatedFiles) {
2572
+ core.logger.info(chalk.gray(` + ${generatedFile}`));
2573
+ }
2574
+ }
2612
2575
  core.logger.info("");
2613
2576
  core.logger.info(chalk.bold("\u9879\u76EE\u72B6\u6001:"));
2614
2577
  core.logger.info(` \u540D\u79F0: ${chalk.cyan(project.name)}`);