create-zhin-app 1.1.7 → 1.1.9

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.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # create-zhin-app
2
2
 
3
3
  ::: warning 依赖版本
4
- 向导默认将 `zhin.js` / `@zhin.js/*` 写成 **`latest`**(政策:`pnpm check:dependency-policy`)。开箱可跟上游,但**不保证**可复现构建;生产环境请在生成后 pin 到已知好版本。
4
+ 向导将 `zhin.js` / `@zhin.js/*` 写成与 `@zhin.js/scaffold-wizard` 同一次发布的真实版本范围(如 `^1.1.11`),AI 栈第三方包使用 Zhin 声明的 peer 范围,不再写 `latest`(政策:`pnpm check:dependency-policy`)。caret 范围仍会接收补丁与次版本;生产环境请提交 lockfile。
5
5
  :::
6
6
 
7
7
  快速创建 Zhin 机器人 workspace 项目的脚手架工具,提供一键创建和配置新项目的能力。
@@ -69,7 +69,7 @@ pnpm build
69
69
  7. **生成配置文件**: 合并 wizard 结果到 `zhin.config.*`
70
70
  8. **生成 .env 文件**: 保存 Token、适配器与 AI 环境变量
71
71
  9. **自动安装依赖**: 在项目根目录执行 `pnpm install`
72
- 10. **完成提示**: 显示 Token、数据库配置和下一步操作
72
+ 10. **完成提示**: 显示 Token 的存放位置(`.env` 的 `HTTP_TOKEN`,终端里只显示打码后的长度,不打印完整值,避免进入 CI 日志)、数据库配置和下一步操作
73
73
 
74
74
  ## 支持的参数
75
75
 
package/lib/config.d.ts CHANGED
@@ -5,4 +5,3 @@ export { generateDatabaseEnvVars } from '@zhin.js/scaffold-wizard';
5
5
  * 与 packages/im/runtime/src/config-composer.ts 的 effectiveSchema 对齐)
6
6
  */
7
7
  export declare function createConfigFile(appPath: string, format: string, options: InitOptions): Promise<void>;
8
- //# sourceMappingURL=config.d.ts.map
package/lib/config.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAe,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAE3G,oEAAoE;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEnE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAe,EAAE,MAAc,EAAE,OAAoB;IAC1F,MAAM,YAAY,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IACzD,MAAM,GAAG,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,YAAY,KAAK,MAAM;QACtC,CAAC,CAAC,kBAAkB;QACpB,CAAC,CAAC,iBAAiB,CAAC;IACtB,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,sBAAsB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;AAC9F,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAe,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAE3G,oEAAoE;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEnE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAe,EAAE,MAAc,EAAE,OAAoB;IAC1F,MAAM,YAAY,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IACzD,MAAM,GAAG,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,YAAY,KAAK,MAAM;QACtC,CAAC,CAAC,kBAAkB;QACpB,CAAC,CAAC,iBAAiB,CAAC;IACtB,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,sBAAsB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;AAC9F,CAAC","sourcesContent":["import fs from 'fs-extra';\nimport path from 'path';\nimport { InitOptions, buildRuntimeConfigDocument, serializeRuntimeConfig } from '@zhin.js/scaffold-wizard';\n\n// 生成数据库环境变量(实现已收敛到 @zhin.js/scaffold-wizard,值统一走 formatEnvValue 转义)\nexport { generateDatabaseEnvVars } from '@zhin.js/scaffold-wizard';\n\n/**\n * 创建新 Plugin Runtime 配置文件(configVersion 2、plugins 包映射与顶层实例业务配置,\n * 与 packages/im/runtime/src/config-composer.ts 的 effectiveSchema 对齐)\n */\nexport async function createConfigFile(appPath: string, format: string, options: InitOptions): Promise<void> {\n const configFormat = format === 'json' ? 'json' : 'yaml';\n const doc = buildRuntimeConfigDocument(options);\n const filename = configFormat === 'json'\n ? 'zhin.config.json'\n : 'zhin.config.yml';\n await fs.writeFile(path.join(appPath, filename), serializeRuntimeConfig(doc, configFormat));\n}\n"]}
package/lib/index.d.ts CHANGED
@@ -1,3 +1,2 @@
1
1
  #!/usr/bin/env node
2
2
  export {};
3
- //# sourceMappingURL=index.d.ts.map
package/lib/index.js CHANGED
@@ -3,7 +3,7 @@ import fs from 'fs-extra';
3
3
  import path from 'path';
4
4
  import inquirer from 'inquirer';
5
5
  import chalk from 'chalk';
6
- import { generateToken, getDatabaseDisplayName, getDatabasePersistenceLabel, isValidProjectName, } from './utils.js';
6
+ import { describeStoredHttpToken, generateToken, getDatabaseDisplayName, getDatabasePersistenceLabel, isValidProjectName, } from './utils.js';
7
7
  import { configureDatabaseOptions, configureAdapters, configureAI, getAdapterSetupNotes, ensureDatabaseForAI, ensureDatabaseForAdapters, formatAIDependencyHint, DEFAULT_CREATE_BOT_HTTP_PORT, } from '@zhin.js/scaffold-wizard';
8
8
  import { createWorkspace } from './workspace.js';
9
9
  import { ensurePnpmInstalled, installDependencies, runPostInstallDoctor } from './install.js';
@@ -209,7 +209,7 @@ async function main() {
209
209
  console.log(chalk.blue('🔐 Remote Console 登录信息:'));
210
210
  console.log(` ${chalk.gray('UI:')} ${chalk.cyan('https://console.zhin.dev')}`);
211
211
  console.log(` ${chalk.gray('API Base:')} ${chalk.cyan(`http://127.0.0.1:${DEFAULT_CREATE_BOT_HTTP_PORT}`)}`);
212
- console.log(` ${chalk.gray('Token:')} ${chalk.cyan(options.httpToken)}`);
212
+ console.log(` ${chalk.gray('Token:')} ${chalk.cyan(describeStoredHttpToken(options.httpToken ?? ''))}`);
213
213
  console.log(` ${chalk.gray('Sandbox:')} ${chalk.cyan('打开 Console 后进入 Sandbox / 沙盒页,连接后发送 /hello')}`);
214
214
  console.log(` ${chalk.yellow('⚠ Token 已保存到')} ${chalk.cyan('.env')} ${chalk.yellow('文件,用于 Bearer Token 或 Console 登录页')}`);
215
215
  // 显示数据库配置信息
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,sBAAsB,EACtB,2BAA2B,EAC3B,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,WAAW,EACX,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,KAAK,UAAU,IAAI;IACjB,uBAAuB,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAEpD,MAAM,OAAO,GAAgB;QAC3B,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;KACnD,CAAC;IAEF,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAE9D,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QACxB,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;QACzB,OAAO,CAAC,SAAS,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,aAAa;IACb,IAAI,CAAC,WAAW;QAAE,MAAM,mBAAmB,EAAE,CAAC;IAE9C,IAAI,CAAC;QACH,IAAI,IAAI,GAAG,cAAc,CAAC;QAE1B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;gBACvD;oBACE,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,aAAa;oBACnB,OAAO,EAAE,UAAU;oBACnB,OAAO,EAAE,aAAa;oBACtB,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;wBAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;4BAAE,OAAO,UAAU,CAAC;wBACrC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;4BAC/B,OAAO,sBAAsB,CAAC;wBAChC,CAAC;wBACD,OAAO,IAAI,CAAC;oBACd,CAAC;iBACF;aACF,CAAC,CAAC;YACH,IAAI,GAAG,SAAS,CAAC;QACnB,CAAC;aAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO;QACP,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACrC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;gBACzC;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE,OAAO;oBAChB,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,SAAS,EAAE;wBAC/C,EAAE,IAAI,EAAE,gCAAgC,EAAE,KAAK,EAAE,gBAAgB,EAAE;qBACpE;oBACD,OAAO,EAAE,SAAS;iBACnB;aACF,CAAC,CAAC;YACH,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACtB,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC/B,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;gBACxC;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,QAAQ;oBACjB,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE;wBACvC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;qBAC9B;oBACD,OAAO,EAAE,MAAM;iBAChB;aACF,CAAC,CAAC;YACH,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;QAC5B,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;gBAC7C;oBACE,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,WAAW;oBACpB,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE;wBACpC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;qBAChC;oBACD,OAAO,EAAE,MAAM;iBAChB;aACF,CAAC,CAAC;YACH,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC;QAChC,CAAC;QAED,kBAAkB;QAClB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;YAEjD,MAAM,YAAY,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;YAEvC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;gBACtC;oBACE,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,wDAAwD;oBACjE,OAAO,EAAE,YAAY;oBACrB,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;wBAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;4BAAE,OAAO,YAAY,CAAC;wBACvC,OAAO,IAAI,CAAC;oBACd,CAAC;iBACF;aACF,CAAC,CAAC;YAEH,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;QAC5B,CAAC;QAED,kCAAkC;QAClC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAEtC,MAAM,cAAc,GAAG,MAAM,wBAAwB,EAAE,CAAC;YACxD,OAAO,CAAC,QAAQ,GAAG,cAAc,CAAC;QACpC,CAAC;QAED,8BAA8B;QAC9B,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACtB,OAAO,CAAC,QAAQ,GAAG,MAAM,iBAAiB,EAAE,CAAC;YAC/C,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;gBAChB,OAAO,CAAC,EAAE,GAAG,MAAM,WAAW,EAAE,CAAC;YACnC,CAAC;QACH,CAAC;QAED,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC7B,yBAAyB,CAAC,OAAO,CAAC,CAAC;QAEnC,cAAc;QACd,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;YAEnD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;gBAC1C;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,4BAA4B;oBACrC,OAAO,EAAE,KAAK;iBACf;aACF,CAAC,CAAC;YACH,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;QACvC,CAAC;QAED,gBAAgB;QAChB,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YAC3C,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC;QACnC,CAAC;QAED,WAAW;QACX,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,CAAC;YACtE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;YAExD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;gBAC1C;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,uBAAuB;oBAChC,OAAO,EAAE,IAAI;iBACd;aACF,CAAC,CAAC;YACH,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;QAChC,CAAC;QAED,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACjD,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAE5C,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,QAAQ,MAAM,CAAC,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,QAAQ,KAAK,CAAC,CAAC,CAAC;QAEjE,MAAM,eAAe,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YACxC,MAAM,mBAAmB,CAAC,WAAW,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,MAAM,oBAAoB,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;QAChF,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,oBAAoB,4BAA4B,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9G,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACzG,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,EAAE,CAAC,CAAC;QACtG,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,kCAAkC,CAAC,EAAE,CAAC,CAAC;QAE3H,YAAY;QACZ,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;YAEtG,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAC/E,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC3F,CAAC;YACH,CAAC;iBAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC9F,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;gBACnD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;QAED,UAAU;QACV,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YACtC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAC9C,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;gBAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YACjE,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9F,CAAC;YACD,MAAM,YAAY,GAAG,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC5D,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBACnC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;oBAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;QACH,CAAC;QAED,aAAa;QACb,IAAI,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC;YACxB,MAAM,aAAa,GAAG,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;YAC7E,IAAI,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;gBACvB,MAAM,QAAQ,GAAa,EAAE,CAAC;gBAC9B,IAAI,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW;oBAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1D,IAAI,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,gBAAgB;oBAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7D,IAAI,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;oBAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACzG,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5E,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACpE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;YAChG,IAAI,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;YAC3F,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,KAAK,EAAE,CAAC;gBACnE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/G,CAAC;YACD,MAAM,WAAW,GAAG,OAAO,CAAC,EAAE,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACnF,IAAI,WAAW,IAAK,WAAmC,CAAC,MAAM,EAAE,CAAC;gBAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAC7G,CAAC;iBAAM,IAAI,aAAa,KAAK,QAAQ,EAAE,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QAED,WAAW;QACX,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAChG,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;YAC5G,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAChG,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAClG,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YACpG,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrF,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,EAAE,CAAC,CAAC;QACnH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC;QAC7F,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;QACpF,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,EAAE,CAAC,CAAC;QACpL,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAClF,IAAI,OAAO,CAAC,QAAQ,EAAE,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,2DAA2D,CAAC,EAAE,CAAC,CAAC;QAC9F,CAAC;QAGD,uBAAuB;QACvB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,EAAE,CAAC,CAAC;YACtG,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,EAAE,CAAC,CAAC;YACpG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;YACzH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YAChF,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;QACzG,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,EAAE,CAAC,CAAC;YAC1G,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,EAAE,CAAC,CAAC;YACxG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,EAAE,CAAC,CAAC;YAC7H,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YAChF,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;YAC3G,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;QACnF,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAExD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,MAAM,UAAU,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAEpE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,YAAY,EAAE,CAAC,CAAC,CAAC;QACpD,IAAI,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC","sourcesContent":["#!/usr/bin/env node\n\nimport fs from 'fs-extra';\nimport path from 'path';\nimport inquirer from 'inquirer';\nimport chalk from 'chalk';\n\nimport { InitOptions } from './types.js';\nimport {\n describeStoredHttpToken,\n generateToken,\n getDatabaseDisplayName,\n getDatabasePersistenceLabel,\n isValidProjectName,\n} from './utils.js';\nimport {\n configureDatabaseOptions,\n configureAdapters,\n configureAI,\n getAdapterSetupNotes,\n ensureDatabaseForAI,\n ensureDatabaseForAdapters,\n formatAIDependencyHint,\n DEFAULT_CREATE_BOT_HTTP_PORT,\n} from '@zhin.js/scaffold-wizard';\nimport { createWorkspace } from './workspace.js';\nimport { ensurePnpmInstalled, installDependencies, runPostInstallDoctor } from './install.js';\nimport { applyStableYesDefaults } from './stable-yes-defaults.js';\nimport { assertCreateNodeVersion } from './node-requirement.js';\n\nasync function main() {\n assertCreateNodeVersion();\n const args = process.argv.slice(2);\n const skipInstall = args.includes('--skip-install');\n \n const options: InitOptions = {\n yes: args.includes('-y') || args.includes('--yes')\n };\n \n const projectNameArg = args.find(arg => !arg.startsWith('-'));\n \n if (options.yes) {\n options.config = 'yaml';\n options.runtime = 'node';\n options.httpToken = generateToken(16);\n }\n \n // 检测并安装 pnpm\n if (!skipInstall) await ensurePnpmInstalled();\n \n try {\n let name = projectNameArg;\n \n if (!name) {\n const { projectName: inputName } = await inquirer.prompt([\n {\n type: 'input',\n name: 'projectName',\n message: '请输入项目名称:',\n default: 'my-zhin-bot',\n validate: (input: string) => {\n if (!input.trim()) return '项目名称不能为空';\n if (!isValidProjectName(input)) {\n return '项目名称只能包含字母、数字、横线和下划线';\n }\n return true;\n }\n }\n ]);\n name = inputName;\n } else if (!isValidProjectName(name)) {\n console.error(chalk.red('项目名称只能包含字母、数字、横线和下划线'));\n process.exit(1);\n }\n\n // 模板选择\n if (!options.template && !options.yes) {\n console.log('');\n console.log(chalk.blue('📋 选择项目模板'));\n const { template } = await inquirer.prompt([\n {\n type: 'select',\n name: 'template',\n message: '选择模板:',\n choices: [\n { name: '默认 — 最小配置,适合首跑和学习', value: 'default' },\n { name: '生活助手 — AI 对话 + 知识库 + 记忆 + 定时提醒', value: 'life-assistant' },\n ],\n default: 'default',\n },\n ]);\n options.template = template;\n }\n if (!options.template) {\n options.template = 'default';\n }\n \n if (!options.runtime) {\n const { runtime } = await inquirer.prompt([\n {\n type: 'select',\n name: 'runtime',\n message: '选择运行时:',\n choices: [\n { name: 'Node.js (推荐)', value: 'node' },\n { name: 'Bun', value: 'bun' }\n ],\n default: 'node'\n }\n ]);\n options.runtime = runtime;\n }\n \n if (!options.config) {\n const { configFormat } = await inquirer.prompt([\n {\n type: 'select',\n name: 'configFormat',\n message: '选择配置文件格式:',\n choices: [\n { name: 'YAML (推荐)', value: 'yaml' },\n { name: 'JSON', value: 'json' }\n ],\n default: 'yaml'\n }\n ]);\n options.config = configFormat;\n }\n \n // HTTP Token 认证配置\n if (!options.httpToken) {\n console.log('');\n console.log(chalk.blue('🔐 配置 Web 控制台访问 Token'));\n \n const defaultToken = generateToken(16);\n \n const { token } = await inquirer.prompt([\n {\n type: 'input',\n name: 'token',\n message: 'Web 控制台 Token (用于 Authorization: Bearer 或 ?token= 认证):',\n default: defaultToken,\n validate: (input: string) => {\n if (!input.trim()) return 'Token 不能为空';\n return true;\n }\n }\n ]);\n \n options.httpToken = token;\n }\n \n // 数据库配置(-y Stable 默认无数据库 / inbox)\n if (!options.database && !options.yes) {\n console.log('');\n console.log(chalk.blue('🗄️ 配置数据库'));\n \n const databaseConfig = await configureDatabaseOptions();\n options.database = databaseConfig;\n }\n\n // 适配器 + AI(-y 对齐 minimal-bot)\n if (options.yes) {\n applyStableYesDefaults(options);\n } else {\n if (!options.adapters) {\n options.adapters = await configureAdapters();\n }\n if (!options.ai) {\n options.ai = await configureAI();\n }\n }\n\n ensureDatabaseForAI(options);\n ensureDatabaseForAdapters(options);\n\n // 全局 CLI 安装选项\n if (options.installGlobalCli === undefined && !options.yes) {\n console.log('');\n console.log(chalk.blue('🌍 全局 CLI 安装'));\n console.log(chalk.gray('这将允许你在任何目录下使用 \"zhin\" 命令'));\n \n const { globalCli } = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'globalCli',\n message: '是否全局安装 @zhin.js/cli 命令行工具?',\n default: false\n }\n ]);\n options.installGlobalCli = globalCli;\n }\n\n // -y 模式下默认不全局安装\n if (options.installGlobalCli === undefined) {\n options.installGlobalCli = false;\n }\n\n // 开发技能安装选项\n if (options.devSkills === undefined && !options.yes) {\n console.log('');\n console.log(chalk.blue('🛠️ Zhin 插件开发技能'));\n console.log(chalk.gray('安装一组 AI 技能,帮助你通过 AI 助手高质量地开发、测试和发布 Zhin 插件'));\n console.log(chalk.gray('包含:插件初始化、功能开发、测试编写、质量审查、发布指南'));\n \n const { devSkills } = await inquirer.prompt([\n {\n type: 'confirm',\n name: 'devSkills',\n message: '是否安装 Zhin 插件开发技能?(推荐)',\n default: true\n }\n ]);\n options.devSkills = devSkills;\n }\n\n if (options.devSkills === undefined) {\n options.devSkills = options.yes ? false : true;\n }\n\n if (!name?.trim()) {\n console.error(chalk.red('项目名称不能为空'));\n process.exit(1);\n }\n\n const projectPath = path.resolve(process.cwd(), name);\n const realName = path.basename(projectPath);\n \n if (fs.existsSync(projectPath)) {\n console.error(chalk.red(`目录 ${realName} 已存在`));\n process.exit(1);\n }\n\n console.log(chalk.blue(`正在创建 pnpm workspace 项目 ${realName}...`));\n \n await createWorkspace(projectPath, realName, options);\n \n console.log(chalk.green(`✓ 项目结构创建成功!`));\n console.log('');\n \n if (!skipInstall) {\n console.log(chalk.blue('📦 正在安装依赖...'));\n await installDependencies(projectPath);\n console.log('');\n await runPostInstallDoctor(projectPath);\n } else {\n console.log('已跳过安装;进入项目后运行 pnpm install,再运行 pnpm dev。');\n }\n \n console.log('');\n console.log(chalk.green('🎉 项目初始化完成!'));\n console.log('');\n console.log(chalk.blue('🔐 Remote Console 登录信息:'));\n console.log(` ${chalk.gray('UI:')} ${chalk.cyan('https://console.zhin.dev')}`);\n console.log(` ${chalk.gray('API Base:')} ${chalk.cyan(`http://127.0.0.1:${DEFAULT_CREATE_BOT_HTTP_PORT}`)}`);\n console.log(` ${chalk.gray('Token:')} ${chalk.cyan(describeStoredHttpToken(options.httpToken ?? ''))}`);\n console.log(` ${chalk.gray('Sandbox:')} ${chalk.cyan('打开 Console 后进入 Sandbox / 沙盒页,连接后发送 /hello')}`);\n console.log(` ${chalk.yellow('⚠ Token 已保存到')} ${chalk.cyan('.env')} ${chalk.yellow('文件,用于 Bearer Token 或 Console 登录页')}`);\n \n // 显示数据库配置信息\n if (options.database) {\n console.log('');\n console.log(chalk.blue('🗄️ 数据库配置:'));\n console.log(` ${chalk.gray('类型:')} ${chalk.cyan(getDatabaseDisplayName(options.database.dialect))}`);\n \n if (options.database.dialect === 'sqlite') {\n console.log(` ${chalk.gray('文件:')} ${chalk.cyan(options.database.filename)}`);\n if (options.database.mode) {\n console.log(` ${chalk.gray('模式:')} ${chalk.cyan(options.database.mode.toUpperCase())}`);\n }\n } else if (options.database.dialect === 'memory') {\n console.log(` ${chalk.yellow('⚠ 仅用于测试,进程退出后数据不会保留')}`);\n } else {\n console.log(` ${chalk.yellow('⚠ 数据库连接信息已保存到')} ${chalk.cyan('.env')} ${chalk.yellow('文件')}`);\n console.log(` ${chalk.gray('请根据实际情况修改数据库连接参数')}`);\n console.log(` ${chalk.gray('启动前校验:')} ${chalk.cyan('npx zhin config check')}`);\n }\n }\n\n // 显示适配器信息\n if (options.adapters && options.adapters.plugins.length > 0) {\n console.log('');\n console.log(chalk.blue('🔌 已配置适配器:'));\n for (const plugin of options.adapters.plugins) {\n const adapterName = plugin.replace('@zhin.js/adapter-', '');\n console.log(` ${chalk.gray('•')} ${chalk.cyan(adapterName)}`);\n }\n if (Object.keys(options.adapters.envVars).length > 0) {\n console.log(` ${chalk.yellow('⚠ 适配器凭据已保存到')} ${chalk.cyan('.env')} ${chalk.yellow('文件')}`);\n }\n const adapterNotes = getAdapterSetupNotes(options.adapters);\n if (adapterNotes.length > 0) {\n console.log('');\n console.log(chalk.gray(' 后续步骤:'));\n for (const note of adapterNotes) {\n console.log(chalk.gray(` • ${note}`));\n }\n }\n }\n\n // 显示 AI 配置信息\n if (options.ai?.enabled) {\n const agentProvider = options.ai.agentProvider;\n console.log('');\n console.log(chalk.blue('🤖 AI 智能体配置:'));\n console.log(` ${chalk.gray('提供商:')} ${chalk.cyan(agentProvider || 'N/A')}`);\n if (options.ai.trigger) {\n const triggers: string[] = [];\n if (options.ai.trigger.respondToAt) triggers.push('@机器人');\n if (options.ai.trigger.respondToPrivate) triggers.push('私聊');\n if (options.ai.trigger.prefixes.length > 0) triggers.push(`前缀 ${options.ai.trigger.prefixes.join('/')}`);\n console.log(` ${chalk.gray('触发方式:')} ${chalk.cyan(triggers.join('、'))}`);\n }\n console.log(` ${chalk.gray('会话/上下文:')} ${chalk.cyan('已启用推荐默认值')}`);\n console.log(` ${chalk.gray('执行安全:')} ${chalk.cyan(options.ai.agent?.execSecurity || 'deny')}`);\n if (options.ai.memoryMcp) {\n console.log(` ${chalk.gray('Memory MCP:')} ${chalk.cyan('已启用')}`);\n }\n console.log(` ${chalk.gray('依赖:')} ${chalk.cyan(formatAIDependencyHint(agentProvider))}`);\n if (options.database && options.ai.sessions?.useDatabase !== false) {\n console.log(` ${chalk.gray('会话存储:')} ${chalk.cyan(getDatabasePersistenceLabel(options.database.dialect))}`);\n }\n const providerKey = options.ai.providers && Object.values(options.ai.providers)[0];\n if (providerKey && (providerKey as { apiKey?: string }).apiKey) {\n console.log(` ${chalk.yellow('⚠ API Key 已保存到')} ${chalk.cyan('.env')} ${chalk.yellow('文件(AI_API_KEY)')}`);\n } else if (agentProvider === 'ollama') {\n console.log(` ${chalk.gray('提示:')} 请确保 Ollama 已启动且模型已 pull`);\n }\n }\n\n // 显示开发技能信息\n if (options.devSkills) {\n console.log('');\n console.log(chalk.blue('🛠️ 插件开发技能:'));\n console.log(` ${chalk.gray('•')} ${chalk.cyan('plugin-init')} ${chalk.gray('初始化插件项目结构')}`);\n console.log(` ${chalk.gray('•')} ${chalk.cyan('plugin-develop')} ${chalk.gray('开发插件功能(命令、中间件、AI 工具等)')}`);\n console.log(` ${chalk.gray('•')} ${chalk.cyan('plugin-test')} ${chalk.gray('编写和运行测试用例')}`);\n console.log(` ${chalk.gray('•')} ${chalk.cyan('plugin-quality')} ${chalk.gray('代码质量审查与规范检查')}`);\n console.log(` ${chalk.gray('•')} ${chalk.cyan('plugin-publish')} ${chalk.gray('发布到 npm 和插件市场')}`);\n console.log(` ${chalk.gray('位置:')} ${chalk.cyan('skills/')} ${chalk.gray('目录')}`);\n }\n \n console.log('');\n console.log('📝 下一步操作:');\n console.log(` ${chalk.cyan(`cd ${realName}`)}`);\n console.log(` ${chalk.cyan('pnpm dev')} ${chalk.gray('# zhin runtime start,然后打开 Console 的 Sandbox 页发送 /hello')}`);\n console.log('');\n console.log(chalk.blue('下一步(任选):'));\n console.log(` ${chalk.gray('接 QQ/Discord')} ${chalk.cyan('npx zhin setup --adapters')}`);\n console.log(` ${chalk.gray('启用 AI 对话')} ${chalk.cyan('npx zhin setup --ai')}`);\n console.log(` ${chalk.gray('写插件')} ${chalk.cyan('npx @zhin.js/cli new my-plugin --standalone')} ${chalk.gray('(文档 https://zhin.js.org/getting-started/first-plugin)')}`);\n console.log(` ${chalk.gray('诊断')} ${chalk.cyan('npx zhin doctor')}`);\n if (options.database?.dialect === 'sqlite') {\n console.log(` ${chalk.gray('# SQLite 使用 Node 内置 node:sqlite,请使用 Node.js 22.5+(推荐 24+)')}`);\n }\n\n\n // 根据是否全局安装 CLI,显示不同的命令\n if (options.installGlobalCli) {\n console.log('');\n console.log(chalk.green('✓ 已为你配置全局 CLI'));\n console.log(` ${chalk.cyan('pnpm link')} ${chalk.gray('# 执行一次以链接全局 CLI')}`);\n console.log('');\n console.log(chalk.yellow('开发环境:'));\n console.log(` ${chalk.cyan('zhin runtime start')} ${chalk.gray('# 或 pnpm dev - 开发模式(自动监听,支持热重载)')}`);\n console.log(` ${chalk.cyan('zhin doctor')} ${chalk.gray('# 检查 Console / Host / Sandbox / 依赖状态')}`);\n console.log('');\n console.log(chalk.yellow('生产环境:'));\n console.log(` ${chalk.cyan('zhin runtime start --mode production --no-watch')} ${chalk.gray('# 或 pnpm start - 前台运行')}`);\n console.log('');\n console.log(chalk.yellow('PM2 进程管理(推荐生产环境):'));\n console.log(` ${chalk.cyan('pnpm pm2:start')} ${chalk.gray('# 启动 PM2 守护进程')}`);\n console.log(` ${chalk.cyan('pnpm pm2:stop')} ${chalk.gray('# 停止服务')}`);\n console.log(` ${chalk.cyan('pnpm pm2:restart')} ${chalk.gray('# 重启服务')}`);\n console.log(` ${chalk.cyan('pnpm pm2:logs')} ${chalk.gray('# 查看日志')}`);\n console.log('');\n console.log(chalk.yellow('插件开发:'));\n console.log(` ${chalk.cyan('zhin new <plugin-name>')} ${chalk.gray('# 创建项目内插件;独立插件加 --standalone')}`);\n } else {\n console.log('');\n console.log(chalk.blue('💡 使用 pnpm 和 npx 运行命令:'));\n console.log('');\n console.log(chalk.yellow('开发环境:'));\n console.log(` ${chalk.cyan('pnpm dev')} ${chalk.gray('# 或 npx zhin runtime start - 开发模式(自动监听,支持热重载)')}`);\n console.log(` ${chalk.cyan('npx zhin doctor')} ${chalk.gray('# 检查 Console / Host / Sandbox / 依赖状态')}`);\n console.log('');\n console.log(chalk.yellow('生产环境:'));\n console.log(` ${chalk.cyan('pnpm start')} ${chalk.gray('# 或 npx zhin runtime start --mode production --no-watch - 前台运行')}`);\n console.log('');\n console.log(chalk.yellow('PM2 进程管理(推荐生产环境):'));\n console.log(` ${chalk.cyan('pnpm pm2:start')} ${chalk.gray('# 启动 PM2 守护进程')}`);\n console.log(` ${chalk.cyan('pnpm pm2:stop')} ${chalk.gray('# 停止服务')}`);\n console.log(` ${chalk.cyan('pnpm pm2:restart')} ${chalk.gray('# 重启服务')}`);\n console.log(` ${chalk.cyan('pnpm pm2:logs')} ${chalk.gray('# 查看日志')}`);\n console.log('');\n console.log(chalk.yellow('插件开发:'));\n console.log(` ${chalk.cyan('npx zhin new <plugin-name>')} ${chalk.gray('# 创建项目内插件;独立插件加 --standalone')}`);\n console.log('');\n console.log(chalk.gray('💡 后续如需全局安装 CLI,可运行:'));\n console.log(` ${chalk.cyan('pnpm link')} ${chalk.gray('# 在项目根目录执行,链接全局 CLI')}`);\n }\n \n console.log('');\n console.log('📚 相关文档:');\n console.log(` ${chalk.cyan('https://github.com/zhinjs/zhin')}`);\n console.log(` ${chalk.cyan('https://zhin.js.org')}`);\n \n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n const errorStack = error instanceof Error ? error.stack : undefined;\n \n console.error(chalk.red(`创建项目失败: ${errorMessage}`));\n if (errorStack && process.env.DEBUG) {\n console.error(chalk.gray(errorStack));\n }\n process.exit(1);\n }\n}\n\nmain().catch((error: unknown) => {\n console.error(error instanceof Error ? error.message : String(error));\n process.exitCode = 1;\n});\n"]}
package/lib/install.d.ts CHANGED
@@ -6,4 +6,3 @@ export declare function installDependencies(projectPath: string): Promise<void>;
6
6
  * 自检失败(含 doctor 检出 error 的退出码)不阻断创建流程。
7
7
  */
8
8
  export declare function runPostInstallDoctor(projectPath: string): Promise<void>;
9
- //# sourceMappingURL=install.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,IAAI,CAAC;QACH,QAAQ,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;YACrD,QAAQ,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,YAAY,EAAE,CAAC;YACtB,MAAM,YAAY,GAAG,YAAY,YAAY,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACjG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAC/C,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,YAAY,EAAE,CAAC,CAAC,CAAC;YACrD,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;YAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,WAAmB;IAC3D,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC5C,QAAQ,CAAC,cAAc,EAAE;YACvB,GAAG,EAAE,WAAW;YAChB,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QACtC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,YAAY,EAAE,CAAC,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,wBAAwB,YAAY,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,WAAmB;IAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,IAAI,CAAC;QACH,QAAQ,CAAC,uBAAuB,EAAE;YAChC,GAAG,EAAE,WAAW;YAChB,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;IACrD,CAAC;AACH,CAAC","sourcesContent":["import { execSync } from 'node:child_process';\nimport chalk from 'chalk';\nimport path from 'path';\n\nexport async function ensurePnpmInstalled(): Promise<void> {\n try {\n execSync('pnpm --version', { stdio: 'ignore' });\n console.log(chalk.green('✓ 检测到 pnpm 已安装'));\n } catch (error) {\n console.log(chalk.yellow('⚠ 未检测到 pnpm,正在自动安装...'));\n try {\n console.log(chalk.blue('正在执行: npm install -g pnpm'));\n execSync('npm install -g pnpm', { stdio: 'inherit' });\n console.log(chalk.green('✓ pnpm 安装成功!'));\n } catch (installError) {\n const errorMessage = installError instanceof Error ? installError.message : String(installError);\n console.error(chalk.red('✗ pnpm 安装失败,请手动安装:'));\n if (process.env.DEBUG) {\n console.error(chalk.gray(`错误详情: ${errorMessage}`));\n }\n console.log(chalk.cyan(' npm install -g pnpm'));\n console.log(chalk.gray('或访问: https://pnpm.io/installation'));\n process.exit(1);\n }\n }\n}\n\nexport async function installDependencies(projectPath: string): Promise<void> {\n try {\n console.log(chalk.gray('执行: pnpm install'));\n execSync('pnpm install', {\n cwd: projectPath,\n stdio: 'inherit'\n });\n console.log(chalk.green('✓ 依赖安装成功!'));\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n console.log('');\n console.log(chalk.yellow('⚠ 依赖安装失败'));\n if (process.env.DEBUG) {\n console.log(chalk.gray(`错误详情: ${errorMessage}`));\n }\n console.log(chalk.gray('你可以稍后手动安装:'));\n console.log(chalk.cyan(` cd ${path.basename(projectPath)}`));\n console.log(chalk.cyan(' pnpm install'));\n throw new Error(`pnpm install failed: ${errorMessage}`);\n }\n}\n\n/**\n * 安装后自检:复用项目内刚装好的 @zhin.js/cli 的 `zhin doctor`\n *(Node 版本 / pnpm / 配置 / Console 登录条件 / 端口占用,彩色 ✅/⚠️/❌ 输出)。\n * 自检失败(含 doctor 检出 error 的退出码)不阻断创建流程。\n */\nexport async function runPostInstallDoctor(projectPath: string): Promise<void> {\n console.log(chalk.blue('🩺 安装后自检(zhin doctor)...'));\n console.log('');\n try {\n execSync('pnpm exec zhin doctor', {\n cwd: projectPath,\n stdio: 'inherit'\n });\n } catch {\n console.log('');\n console.log(chalk.yellow('⚠ 自检发现问题(见上方 ❌/⚠️),可按提示修复后重新运行:'));\n console.log(chalk.cyan(` cd ${path.basename(projectPath)}`));\n console.log(chalk.cyan(' pnpm exec zhin doctor'));\n }\n}"]}
@@ -4,4 +4,3 @@
4
4
  */
5
5
  export declare const CREATE_NODE_REQUIREMENT = ">=22.19.0";
6
6
  export declare function assertCreateNodeVersion(version?: string): void;
7
- //# sourceMappingURL=node-requirement.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node-requirement.js","sourceRoot":"","sources":["../src/node-requirement.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,WAAW,CAAC;AAEnD,MAAM,UAAU,uBAAuB,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrE,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QAC1F,MAAM,IAAI,KAAK,CAAC,oCAAoC,uBAAuB,cAAc,OAAO,8CAA8C,CAAC,CAAC;IAClJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"node-requirement.js","sourceRoot":"","sources":["../src/node-requirement.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,WAAW,CAAC;AAEnD,MAAM,UAAU,uBAAuB,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrE,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QAC1F,MAAM,IAAI,KAAK,CAAC,oCAAoC,uBAAuB,cAAc,OAAO,8CAA8C,CAAC,CAAC;IAClJ,CAAC;AACH,CAAC","sourcesContent":["/**\n * Generated projects execute TypeScript through Plugin Runtime, and @zhin.js/ai depends on\n * undici 8, whose engines require Node >=22.19.0.\n */\nexport const CREATE_NODE_REQUIREMENT = '>=22.19.0';\n\nexport function assertCreateNodeVersion(version = process.versions.node): void {\n const match = /^(\\d+)\\.(\\d+)\\.(\\d+)$/.exec(version);\n if (!match || Number(match[1]) < 22 || (Number(match[1]) === 22 && Number(match[2]) < 19)) {\n throw new Error(`create-zhin-app requires Node.js ${CREATE_NODE_REQUIREMENT}; current: ${version}. Upgrade Node.js before creating a project.`);\n }\n}\n"]}
@@ -5,4 +5,3 @@ import type { InitOptions } from '@zhin.js/scaffold-wizard';
5
5
  * AI/Ollama 走首跑成功后的 `zhin setup --ai` opt-in,避免本地模型前置条件阻塞新手。
6
6
  */
7
7
  export declare function applyStableYesDefaults(options: InitOptions): void;
8
- //# sourceMappingURL=stable-yes-defaults.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stable-yes-defaults.js","sourceRoot":"","sources":["../src/stable-yes-defaults.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAoB;IACzD,IAAI,CAAC,OAAO,CAAC,GAAG;QAAE,OAAO;IAEzB,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC7B,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;IAE1B,OAAO,CAAC,QAAQ,GAAG;QACjB,QAAQ,EAAE,CAAC,0BAA0B,CAAC;QACtC,OAAO,EAAE,CAAC,0BAA0B,CAAC;QACrC,SAAS,EAAE,CAAC;gBACV,OAAO,EAAE,0BAA0B;gBACnC,WAAW,EAAE,SAAS;gBACtB,2DAA2D;gBAC3D,8BAA8B;gBAC9B,MAAM,EAAE;oBACN,aAAa,EAAE,GAAG;oBAClB,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;iBAC1D;aACF,CAAC;QACF,OAAO,EAAE,EAAE;KACZ,CAAC;IAEF,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"stable-yes-defaults.js","sourceRoot":"","sources":["../src/stable-yes-defaults.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAoB;IACzD,IAAI,CAAC,OAAO,CAAC,GAAG;QAAE,OAAO;IAEzB,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC7B,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;IAE1B,OAAO,CAAC,QAAQ,GAAG;QACjB,QAAQ,EAAE,CAAC,0BAA0B,CAAC;QACtC,OAAO,EAAE,CAAC,0BAA0B,CAAC;QACrC,SAAS,EAAE,CAAC;gBACV,OAAO,EAAE,0BAA0B;gBACnC,WAAW,EAAE,SAAS;gBACtB,2DAA2D;gBAC3D,8BAA8B;gBAC9B,MAAM,EAAE;oBACN,aAAa,EAAE,GAAG;oBAClB,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;iBAC1D;aACF,CAAC;QACF,OAAO,EAAE,EAAE;KACZ,CAAC;IAEF,OAAO,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAClC,CAAC","sourcesContent":["import type { InitOptions } from '@zhin.js/scaffold-wizard';\n\n/**\n * `create-zhin -y` 的 Stable 黄金路径:IM-only + Sandbox + Remote Console。\n *\n * AI/Ollama 走首跑成功后的 `zhin setup --ai` opt-in,避免本地模型前置条件阻塞新手。\n */\nexport function applyStableYesDefaults(options: InitOptions): void {\n if (!options.yes) return;\n\n options.database = undefined;\n options.devSkills = false;\n\n options.adapters = {\n packages: ['@zhin.js/adapter-sandbox'],\n plugins: ['@zhin.js/adapter-sandbox'],\n instances: [{\n package: '@zhin.js/adapter-sandbox',\n instanceKey: 'sandbox',\n // 对齐 examples/minimal-bot 的 Stable 黄金路径:命令保留 / 前缀(/hello);\n // 无前缀文本落入 unmatched(AI 对话)路径。\n config: {\n commandPrefix: '/',\n endpoints: [{ id: 'sandbox-bot', owner: 'sandbox-user' }],\n },\n }],\n envVars: {},\n };\n\n options.ai = { enabled: false };\n}\n"]}
@@ -7,4 +7,3 @@ export declare const TOOLS_MD_TEMPLATE = "# Tools Guide\n\n- After skill activat
7
7
  export declare const AGENTS_MD_TEMPLATE = "# Agent Instructions\n\nHelpful AI assistant. Be concise, accurate, and action-oriented.\n\n## Guidelines\n\n- Briefly state what you're doing before acting\n- Clarify ambiguous requests before executing\n- Use tools to accomplish tasks; persist important info to memory\n\n## Reminders\n\nUse `cron_add` for scheduled reminders \u2014 do NOT just write to memory files.\n\n## Heartbeat\n\nIf enabled, `HEARTBEAT.md` is checked periodically. Manage task lists via `edit_file` / `write_file`. Keep the file small to save tokens.\n\n---\n\n# Agent Memory\n\nLong-term memory for conversation history, user preferences, and system state.\n\n## User Preferences\n\n- Language: Simplified Chinese (\u7B80\u4F53\u4E2D\u6587)\n- Style: concise, action-first, execute over explain\n\n## Important Records\n\n*(AI can append here via write_file / write_memory)*\n\n## TODO\n\n*(Track pending work here)*\n";
8
8
  /** Advanced:可选 Assistant Profile 示例(见 docs/advanced/assistant-profile.md) */
9
9
  export declare const ASSISTANT_PROFILE_YML_EXAMPLE = "# Assistant Profile (optional, Advanced)\n# Runtime only: Job routines + default notify. Persona/tools \u2192 SOUL.md / AGENTS.md / TOOLS.md\n# Enable: zhin.config.yml \u2192 assistant.profile.enabled: true\nversion: 1\n\ndefaults:\n notify:\n channel: im\n target:\n channel: im\n scene:\n platform: icqq\n endpointKey: \"<endpoint_id>\"\n sceneId: \"<master_user_id>\"\n kind: private\n notifyOnFailure: false\n\nroutines:\n heartbeat:\n enabled: false\n everyMs: 1800000\n notify:\n channel: silent\n morningBrief:\n enabled: false\n cron: \"0 8 * * *\"\n prompt: |\n \u6C47\u603B\u4ECA\u65E5\u5F85\u529E\u4E0E\u63D0\u9192\uFF0C\u751F\u6210\u7B80\u77ED\u65E9\u62A5\u3002\n notify:\n channel: im\n";
10
- //# sourceMappingURL=bootstrap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/templates/bootstrap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;CA0B/B,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;CAOhC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCjC,CAAC;AAEF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8B5C,CAAC"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/templates/bootstrap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;CA0B/B,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;CAOhC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCjC,CAAC;AAEF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8B5C,CAAC","sourcesContent":["/**\n * Bootstrap file templates for new projects.\n * Generated by create-zhin during project scaffolding.\n */\n\nexport const SOUL_MD_TEMPLATE = `# Soul\n\nAction-oriented AI assistant living in chat channels.\n\n## Personality\n\n- Prefer action over discussion. Execute first, explain after.\n- Direct and concise. No filler or unnecessary disclaimers.\n- Calm confidence. Honest about limitations without being dramatic.\n- Adapt to the user's tone — casual when they're casual, precise when they need precision.\n- Light humor when appropriate, but never at the expense of getting things done.\n- Default optimistic. Problems are puzzles, errors are clues, setbacks are plot twists.\n\n## Values\n\n- Reliability over cleverness\n- Transparency — report failures honestly, with a plan for next steps\n- Respect context — remember what matters to the user\n- Efficiency — no unnecessary back-and-forth\n\n## Work Style\n\n- Break complex tasks into tracked steps\n- Verify by executing tools, never guess\n- Report results, not intentions — \"done\" beats \"I'll try\"\n- On failure: report, propose next step, no drama\n`;\n\nexport const TOOLS_MD_TEMPLATE = `# Tools Guide\n\n- After skill activation, call its declared tools immediately — no explaining or waiting\n- Answers must be based on actual tool results, never guess\n- On tool failure, try alternatives instead of reporting raw errors\n- Use \\`spawn_task\\` for complex/long-running background tasks\n- Persist important info to \\`memory/MEMORY.md\\`, periodic tasks to \\`HEARTBEAT.md\\`\n`;\n\nexport const AGENTS_MD_TEMPLATE = `# Agent Instructions\n\nHelpful AI assistant. Be concise, accurate, and action-oriented.\n\n## Guidelines\n\n- Briefly state what you're doing before acting\n- Clarify ambiguous requests before executing\n- Use tools to accomplish tasks; persist important info to memory\n\n## Reminders\n\nUse \\`cron_add\\` for scheduled reminders — do NOT just write to memory files.\n\n## Heartbeat\n\nIf enabled, \\`HEARTBEAT.md\\` is checked periodically. Manage task lists via \\`edit_file\\` / \\`write_file\\`. Keep the file small to save tokens.\n\n---\n\n# Agent Memory\n\nLong-term memory for conversation history, user preferences, and system state.\n\n## User Preferences\n\n- Language: Simplified Chinese (简体中文)\n- Style: concise, action-first, execute over explain\n\n## Important Records\n\n*(AI can append here via write_file / write_memory)*\n\n## TODO\n\n*(Track pending work here)*\n`;\n\n/** Advanced:可选 Assistant Profile 示例(见 docs/advanced/assistant-profile.md) */\nexport const ASSISTANT_PROFILE_YML_EXAMPLE = `# Assistant Profile (optional, Advanced)\n# Runtime only: Job routines + default notify. Persona/tools → SOUL.md / AGENTS.md / TOOLS.md\n# Enable: zhin.config.yml → assistant.profile.enabled: true\nversion: 1\n\ndefaults:\n notify:\n channel: im\n target:\n channel: im\n scene:\n platform: icqq\n endpointKey: \"<endpoint_id>\"\n sceneId: \"<master_user_id>\"\n kind: private\n notifyOnFailure: false\n\nroutines:\n heartbeat:\n enabled: false\n everyMs: 1800000\n notify:\n channel: silent\n morningBrief:\n enabled: false\n cron: \"0 8 * * *\"\n prompt: |\n 汇总今日待办与提醒,生成简短早报。\n notify:\n channel: im\n`;\n"]}
package/lib/types.d.ts CHANGED
@@ -1,3 +1,2 @@
1
1
  export { DATABASE_PACKAGES } from '@zhin.js/scaffold-wizard';
2
2
  export type { InitOptions, DatabaseConfig, AISetupConfig, AdapterSetupResult } from '@zhin.js/scaffold-wizard';
3
- //# sourceMappingURL=types.d.ts.map
package/lib/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC","sourcesContent":["import type { InitOptions } from '@zhin.js/scaffold-wizard';\nexport { DATABASE_PACKAGES } from '@zhin.js/scaffold-wizard';\nexport type { InitOptions, DatabaseConfig, AISetupConfig, AdapterSetupResult } from '@zhin.js/scaffold-wizard';\n"]}
package/lib/utils.d.ts CHANGED
@@ -1,6 +1,12 @@
1
1
  export declare const PROJECT_NAME_PATTERN: RegExp;
2
2
  export declare function isValidProjectName(name: string): boolean;
3
3
  export declare function generateToken(bytes?: number): string;
4
+ /**
5
+ * 终端里展示密钥时只说明长度,不显示任何字符:create 的输出常被 CI 日志收集。
6
+ * 完整值只写入 `.env`。
7
+ */
8
+ export declare function maskSecret(secret: string): string;
9
+ /** Remote Console 登录提示里的 Token 行:打码,并指出完整值的存放位置。 */
10
+ export declare function describeStoredHttpToken(httpToken: string): string;
4
11
  export declare function getDatabaseDisplayName(dialect: string): string;
5
12
  export declare function getDatabasePersistenceLabel(dialect: string): string;
6
- //# sourceMappingURL=utils.d.ts.map
package/lib/utils.js CHANGED
@@ -11,6 +11,17 @@ export function generateToken(bytes = 16) {
11
11
  }
12
12
  return randomBytes(bytes).toString('hex');
13
13
  }
14
+ /**
15
+ * 终端里展示密钥时只说明长度,不显示任何字符:create 的输出常被 CI 日志收集。
16
+ * 完整值只写入 `.env`。
17
+ */
18
+ export function maskSecret(secret) {
19
+ return `********(${secret.length} 位,已隐藏)`;
20
+ }
21
+ /** Remote Console 登录提示里的 Token 行:打码,并指出完整值的存放位置。 */
22
+ export function describeStoredHttpToken(httpToken) {
23
+ return `${maskSecret(httpToken)},完整值见项目根目录 .env 的 HTTP_TOKEN`;
24
+ }
14
25
  // 获取数据库显示名称
15
26
  export function getDatabaseDisplayName(dialect) {
16
27
  const names = {
package/lib/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,uBAAuB;AACvB,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAEvD,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,qBAAqB;AACrB,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE;IAC9C,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,YAAY;AACZ,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,MAAM,KAAK,GAAG;QACZ,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,OAAO;QACd,EAAE,EAAE,YAAY;QAChB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,QAAQ;KACjB,CAAC;IACF,OAAO,KAAK,CAAC,OAA6B,CAAC,IAAI,OAAO,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAAe;IACzD,IAAI,OAAO,KAAK,QAAQ;QAAE,OAAO,mBAAmB,CAAC;IACrD,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,uBAAuB;AACvB,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AAEvD,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,qBAAqB;AACrB,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE;IAC9C,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,OAAO,YAAY,MAAM,CAAC,MAAM,SAAS,CAAC;AAC5C,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,uBAAuB,CAAC,SAAiB;IACvD,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,8BAA8B,CAAC;AAChE,CAAC;AAED,YAAY;AACZ,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,MAAM,KAAK,GAAG;QACZ,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,OAAO;QACd,EAAE,EAAE,YAAY;QAChB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,QAAQ;KACjB,CAAC;IACF,OAAO,KAAK,CAAC,OAA6B,CAAC,IAAI,OAAO,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAAe;IACzD,IAAI,OAAO,KAAK,QAAQ;QAAE,OAAO,mBAAmB,CAAC;IACrD,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC;AAClD,CAAC","sourcesContent":["import { randomBytes } from 'node:crypto';\n\n// 项目名称只能包含字母、数字、横线和下划线\nexport const PROJECT_NAME_PATTERN = /^[a-zA-Z0-9-_]+$/;\n\nexport function isValidProjectName(name: string): boolean {\n return PROJECT_NAME_PATTERN.test(name);\n}\n\n// 生成随机 token(hex 格式)\nexport function generateToken(bytes: number = 16): string {\n if (bytes < 1) {\n throw new Error('bytes 必须大于 0');\n }\n return randomBytes(bytes).toString('hex');\n}\n\n/**\n * 终端里展示密钥时只说明长度,不显示任何字符:create 的输出常被 CI 日志收集。\n * 完整值只写入 `.env`。\n */\nexport function maskSecret(secret: string): string {\n return `********(${secret.length} 位,已隐藏)`;\n}\n\n/** Remote Console 登录提示里的 Token 行:打码,并指出完整值的存放位置。 */\nexport function describeStoredHttpToken(httpToken: string): string {\n return `${maskSecret(httpToken)},完整值见项目根目录 .env 的 HTTP_TOKEN`;\n}\n\n// 获取数据库显示名称\nexport function getDatabaseDisplayName(dialect: string): string {\n const names = {\n sqlite: 'SQLite',\n mysql: 'MySQL',\n pg: 'PostgreSQL', \n mongodb: 'MongoDB',\n redis: 'Redis',\n memory: 'Memory'\n };\n return names[dialect as keyof typeof names] || dialect;\n}\n\nexport function getDatabasePersistenceLabel(dialect: string): string {\n if (dialect === 'memory') return 'Memory(仅进程内,不持久化)';\n return `${getDatabaseDisplayName(dialect)} 持久化`;\n}\n"]}
@@ -2,4 +2,3 @@ import { type InitOptions } from '@zhin.js/scaffold-wizard';
2
2
  export declare const BASE_SKILL_NAMES: readonly ["skill-creator", "summarize", "github"];
3
3
  export declare const DEV_SKILL_NAMES: readonly ["plugin-init", "plugin-develop", "plugin-test", "plugin-quality", "plugin-publish"];
4
4
  export declare function createWorkspace(projectPath: string, projectName: string, options: InitOptions): Promise<void>;
5
- //# sourceMappingURL=workspace.d.ts.map
package/lib/workspace.js CHANGED
@@ -2,7 +2,7 @@ import fs from 'fs-extra';
2
2
  import path from 'path';
3
3
  import { fileURLToPath } from 'url';
4
4
  import { stringify } from 'yaml';
5
- import { DATABASE_PACKAGES, DATABASE_DRIVER_VERSIONS, ZHIN_STACK_VERSIONS, formatEnvValue, generateAdapterEnvVars, generateAIEnvVars, generateDatabaseEnvExample, getAdapterDependencies, getAIDependencies, getCreateBotBaseDependencies, CREATE_BOT_PACKAGE_MANAGER, getCreateBotPnpmWorkspaceConfig, } from '@zhin.js/scaffold-wizard';
5
+ import { DATABASE_PACKAGES, DATABASE_DRIVER_VERSIONS, ZHIN_STACK_VERSIONS, formatEnvValue, generateAdapterEnvVars, generateAIEnvVars, generateDatabaseEnvExample, getAdapterDependencies, getAIDependencies, getCreateBotBaseDependencies, CREATE_BOT_PACKAGE_MANAGER, getCreateBotPnpmWorkspaceConfig, withScaffoldVersionRanges, } from '@zhin.js/scaffold-wizard';
6
6
  import { createConfigFile, generateDatabaseEnvVars } from './config.js';
7
7
  import { CREATE_NODE_REQUIREMENT } from './node-requirement.js';
8
8
  import { SOUL_MD_TEMPLATE, TOOLS_MD_TEMPLATE, AGENTS_MD_TEMPLATE, ASSISTANT_PROFILE_YML_EXAMPLE } from './templates/bootstrap.js';
@@ -136,20 +136,21 @@ export async function createWorkspace(projectPath, projectName, options) {
136
136
  'pm2:logs': 'pm2 logs',
137
137
  'pm2:monit': 'pm2 monit'
138
138
  },
139
- dependencies: {
139
+ // Zhin packages get the caret range of the release this scaffold ships with, not `latest`.
140
+ dependencies: withScaffoldVersionRanges({
140
141
  ...getCreateBotBaseDependencies(),
141
142
  ...adapterDeps,
142
143
  ...databaseDeps,
143
144
  ...aiDeps,
144
145
  ...cardDeps,
145
146
  ...consoleFeatureDeps,
146
- },
147
- devDependencies: {
147
+ }),
148
+ devDependencies: withScaffoldVersionRanges({
148
149
  '@zhin.js/cli': ZHIN_STACK_VERSIONS['@zhin.js/cli'],
149
150
  '@types/node': '^25.0.0',
150
151
  'typescript': '^6.0.0',
151
152
  'pm2': '^6.0.0'
152
- },
153
+ }),
153
154
  engines: {
154
155
  node: CREATE_NODE_REQUIREMENT
155
156
  },
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from 'fs-extra';\nimport path from 'path';\nimport { fileURLToPath } from 'url';\nimport { stringify } from 'yaml';\nimport {\n DATABASE_PACKAGES,\n DATABASE_DRIVER_VERSIONS,\n ZHIN_STACK_VERSIONS,\n formatEnvValue,\n generateAdapterEnvVars,\n generateAIEnvVars,\n generateDatabaseEnvExample,\n getAdapterDependencies,\n getAIDependencies,\n getCreateBotBaseDependencies,\n CREATE_BOT_PACKAGE_MANAGER,\n getCreateBotPnpmWorkspaceConfig,\n withScaffoldVersionRanges,\n type AdapterSetupResult,\n type DatabaseConfig,\n type InitOptions,\n} from '@zhin.js/scaffold-wizard';\nimport { createConfigFile, generateDatabaseEnvVars } from './config.js';\nimport { CREATE_NODE_REQUIREMENT } from './node-requirement.js';\nimport { SOUL_MD_TEMPLATE, TOOLS_MD_TEMPLATE, AGENTS_MD_TEMPLATE, ASSISTANT_PROFILE_YML_EXAMPLE } from './templates/bootstrap.js';\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\n\nexport const BASE_SKILL_NAMES = ['skill-creator', 'summarize', 'github'] as const;\nexport const DEV_SKILL_NAMES = ['plugin-init', 'plugin-develop', 'plugin-test', 'plugin-quality', 'plugin-publish'] as const;\n\nasync function copySkillTemplate(projectPath: string, skillName: string): Promise<void> {\n const skillDir = path.join(projectPath, 'skills', skillName);\n const skillSrcPath = path.join(__dirname, '../template/skills', skillName, 'SKILL.md');\n if (!fs.existsSync(skillSrcPath)) {\n throw new Error(`Missing create-zhin skill template: ${skillName}`);\n }\n await fs.ensureDir(skillDir);\n await fs.copy(skillSrcPath, path.join(skillDir, 'SKILL.md'));\n}\n\nfunction getConfigFilename(format: InitOptions['config']): string {\n switch (format) {\n case 'json':\n return 'zhin.config.json';\n case 'yaml':\n default:\n return 'zhin.config.yml';\n }\n}\n\nfunction renderDatabaseReadme(database: DatabaseConfig | undefined, configFilename: string): string {\n if (!database) return '';\n if (database.dialect === 'sqlite') {\n return `\n## 🗄️ 数据库\n\n当前使用 SQLite,文件路径在 \\`${configFilename}\\` 的 \\`database.filename\\` 中配置,不需要连接环境变量。\n如需切换数据库,运行 \\`npx zhin setup --database\\`。\n`;\n }\n if (database.dialect === 'memory') {\n return `\n## 🗄️ 数据库\n\n当前使用进程内 Memory 数据库,仅适合测试,进程退出后数据不会保留。需要持久化时运行\n\\`npx zhin setup --database\\` 切换到 SQLite 或网络数据库。\n`;\n }\n return `\n## 🗄️ 数据库\n\n当前使用 \\`${database.dialect}\\`。连接字段在 \\`${configFilename}\\` 中引用环境变量,实际值保存在项目根目录 \\`.env\\`;\n\\`.env.example\\` 列出了该方言需要的变量,可复制后填写。启动前先确认数据库服务已创建目标数据库并允许当前机器连接,然后执行:\n\n\\`\\`\\`bash\nnpx zhin config check\npnpm dev\n\\`\\`\\`\n\n若端口、主机或数据库名为空,重新运行 \\`npx zhin setup --database\\`。PostgreSQL 的方言名固定为 \\`pg\\`。\n`;\n}\n\n/** 未显式配置适配器时默认挂载 Sandbox(对齐 examples/test-bot 的 sandbox 实例) */\nfunction resolveAdapterResult(options: InitOptions): AdapterSetupResult {\n if (options.adapters) return options.adapters;\n return {\n packages: ['@zhin.js/adapter-sandbox'],\n plugins: ['@zhin.js/adapter-sandbox'],\n instances: [{\n package: '@zhin.js/adapter-sandbox',\n instanceKey: 'sandbox',\n // 对齐 examples/minimal-bot 的 Stable 黄金路径:命令保留 / 前缀(/hello)\n config: {\n commandPrefix: '/',\n endpoints: [{ id: 'sandbox-bot', owner: 'sandbox-user' }],\n },\n }],\n envVars: {},\n };\n}\n\nexport async function createWorkspace(projectPath: string, projectName: string, options: InitOptions): Promise<void> {\n const configFilename = getConfigFilename(options.config);\n const adapters = resolveAdapterResult(options);\n const aiEnabled = options.ai?.enabled === true;\n\n await fs.ensureDir(projectPath);\n\n await fs.writeFile(\n path.join(projectPath, 'pnpm-workspace.yaml'),\n stringify(getCreateBotPnpmWorkspaceConfig()),\n );\n\n // 根据数据库类型添加相应依赖\n const databaseDeps: Record<string, string> = {};\n if (options.database) {\n const dbPackage = DATABASE_PACKAGES[options.database.dialect];\n if (dbPackage) {\n databaseDeps[dbPackage] = DATABASE_DRIVER_VERSIONS[dbPackage];\n }\n databaseDeps['@zhin.js/database'] = 'latest';\n }\n\n // 根据适配器选择添加依赖\n const adapterDeps: Record<string, string> = { ...getAdapterDependencies(adapters) };\n if (!adapterDeps['@zhin.js/adapter-sandbox']) {\n adapterDeps['@zhin.js/adapter-sandbox'] = 'latest';\n }\n\n // AI 依赖(agent 栈 + 所选 @ai-sdk/*)及 AI authoring Features\n const aiDeps: Record<string, string> = { ...getAIDependencies(options.ai) };\n if (aiEnabled) {\n aiDeps['@zhin.js/tool'] = ZHIN_STACK_VERSIONS['@zhin.js/tool'];\n aiDeps['@zhin.js/prompt-section'] = ZHIN_STACK_VERSIONS['@zhin.js/prompt-section'];\n }\n // 脚手架默认生成统一 JSX 卡片组件示例\n const cardDeps = {\n '@zhin.js/components': ZHIN_STACK_VERSIONS['@zhin.js/components'],\n };\n // Page/Layout Features only discover client modules. Their compiler remains\n // owned by the optional Console Host, so the IM project itself adds no\n // browser compiler or UI runtime dependency.\n const consoleFeatureDeps = {\n '@zhin.js/console-contract': ZHIN_STACK_VERSIONS['@zhin.js/console-contract'],\n '@zhin.js/layout': ZHIN_STACK_VERSIONS['@zhin.js/layout'],\n '@zhin.js/page': ZHIN_STACK_VERSIONS['@zhin.js/page'],\n };\n\n // package.json:zhin 清单是 Plugin Runtime 拓扑 SSOT(features + plugins)\n await fs.writeJson(path.join(projectPath, 'package.json'), {\n name: projectName,\n private: true,\n version: '0.1.0',\n packageManager: CREATE_BOT_PACKAGE_MANAGER,\n type: 'module',\n description: `${projectName} - Zhin.js Bot`,\n scripts: {\n dev: 'zhin runtime start',\n start: 'zhin runtime start --mode production --no-watch',\n build: 'tsc --noEmit',\n 'pm2:start': 'pm2 start ecosystem.config.cjs',\n 'pm2:stop': 'pm2 stop ecosystem.config.cjs',\n 'pm2:restart': 'pm2 restart ecosystem.config.cjs',\n 'pm2:delete': 'pm2 delete ecosystem.config.cjs',\n 'pm2:logs': 'pm2 logs',\n 'pm2:monit': 'pm2 monit'\n },\n // Zhin packages get the caret range of the release this scaffold ships with, not `latest`.\n dependencies: withScaffoldVersionRanges({\n ...getCreateBotBaseDependencies(),\n ...adapterDeps,\n ...databaseDeps,\n ...aiDeps,\n ...cardDeps,\n ...consoleFeatureDeps,\n }),\n devDependencies: withScaffoldVersionRanges({\n '@zhin.js/cli': ZHIN_STACK_VERSIONS['@zhin.js/cli'],\n '@types/node': '^25.0.0',\n 'typescript': '^6.0.0',\n 'pm2': '^6.0.0'\n }),\n engines: {\n node: CREATE_NODE_REQUIREMENT\n },\n zhin: {\n protocol: 1,\n type: 'plugin',\n entry: './plugin.ts',\n engine: '^1.0.0',\n runtime: 'trusted',\n // Stable Features(adapter/command/component/middleware)由 @zhin.js/core 的 package.json#zhin.features 继承\n features: [\n { package: '@zhin.js/page', api: '^1.0.0' },\n { package: '@zhin.js/layout', api: '^1.0.0' },\n { package: '@zhin.js/skill', api: '^1.0.0' },\n ...(aiEnabled ? [{ package: '@zhin.js/tool', api: '^1.0.0' }] : []),\n ...(aiEnabled ? [{ package: '@zhin.js/prompt-section', api: '^1.0.0' }] : []),\n ],\n plugins: [],\n }\n }, { spaces: 2 });\n\n // Plugin Runtime 项目骨架(对齐 examples/minimal-bot)\n await createRuntimeProjectFiles(projectPath, projectName, { ...options, adapters });\n\n // AI 引导文件(人格 / 工具约定 / 记忆),仅启用 AI 时生成\n if (aiEnabled) {\n await fs.writeFile(path.join(projectPath, 'SOUL.md'), SOUL_MD_TEMPLATE);\n await fs.writeFile(path.join(projectPath, 'TOOLS.md'), TOOLS_MD_TEMPLATE);\n await fs.writeFile(path.join(projectPath, 'AGENTS.md'), AGENTS_MD_TEMPLATE);\n await fs.writeFile(path.join(projectPath, 'assistant.profile.yml.example'), ASSISTANT_PROFILE_YML_EXAMPLE);\n }\n\n // 创建内置技能\n for (const skillName of BASE_SKILL_NAMES) {\n await copySkillTemplate(projectPath, skillName);\n }\n\n // 创建插件开发技能(可选)\n if (options.devSkills) {\n for (const skillName of DEV_SKILL_NAMES) {\n await copySkillTemplate(projectPath, skillName);\n }\n }\n\n // 创建 systemd service 配置(Linux):当前目录用 npx 启动,不写死 nvm/node 路径\n await fs.writeFile(path.join(projectPath, `${projectName}.service`),\n`[Unit]\nDescription=${projectName} - Zhin.js Endpoint\nAfter=network.target\n\n[Service]\nType=simple\nUser=%i\nWorkingDirectory=${path.resolve(projectPath)}\nExecStart=/usr/bin/env npx zhin runtime start --mode production --no-watch\nRestart=always\nRestartSec=10s\nStandardOutput=journal\nStandardError=journal\nSyslogIdentifier=${projectName}\n\n# 环境变量(确保 PATH 含 node/npx,如 /usr/local/bin)\nEnvironment=\"NODE_ENV=production\"\nEnvironmentFile=${path.resolve(projectPath, '.env')}\n\n# 资源限制\nLimitNOFILE=65536\nMemoryMax=2G\n\n[Install]\nWantedBy=multi-user.target\n`);\n\n // 创建 launchd plist 配置(macOS):当前目录用 npx 启动,不写死 nvm/node 路径\n await fs.writeFile(path.join(projectPath, `com.zhinjs.${projectName}.plist`),\n`<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n <key>Label</key>\n <string>com.zhinjs.${projectName}</string>\n\n <key>ProgramArguments</key>\n <array>\n <string>/usr/bin/env</string>\n <string>npx</string>\n <string>zhin</string>\n <string>runtime</string>\n <string>start</string>\n <string>--mode</string>\n <string>production</string>\n <string>--no-watch</string>\n </array>\n\n <key>WorkingDirectory</key>\n <string>${path.resolve(projectPath)}</string>\n\n <key>EnvironmentVariables</key>\n <dict>\n <key>NODE_ENV</key>\n <string>production</string>\n <key>PATH</key>\n <string>/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>\n </dict>\n\n <key>RunAtLoad</key>\n <true/>\n\n <key>KeepAlive</key>\n <true/>\n\n <key>StandardOutPath</key>\n <string>${path.resolve(projectPath, 'logs/launchd-stdout.log')}</string>\n\n <key>StandardErrorPath</key>\n <string>${path.resolve(projectPath, 'logs/launchd-stderr.log')}</string>\n\n <key>ThrottleInterval</key>\n <integer>10</integer>\n</dict>\n</plist>\n`);\n\n // 创建 Windows NSSM 安装脚本(PowerShell)\n await fs.writeFile(path.join(projectPath, 'install-service.ps1'),\n`# Windows 服务安装脚本(使用 NSSM)\n# 需要管理员权限运行\n\n$ServiceName = '${projectName}'\n$ProjectPath = '${path.resolve(projectPath)}'\n\n# 当前目录使用 npx 启动,不依赖 nvm 等固定 node 路径\n$NpxArgs = \"runtime start --mode production --no-watch\"\n\n# 检查 NSSM 是否安装\nif (-not (Get-Command nssm -ErrorAction SilentlyContinue)) {\n Write-Host \"❌ 未找到 NSSM,请先安装:\" -ForegroundColor Red\n Write-Host \"\"\n Write-Host \"方式一:使用 Chocolatey\" -ForegroundColor Yellow\n Write-Host \" choco install nssm\" -ForegroundColor Cyan\n Write-Host \"\"\n Write-Host \"方式二:使用 Scoop\" -ForegroundColor Yellow\n Write-Host \" scoop install nssm\" -ForegroundColor Cyan\n Write-Host \"\"\n Write-Host \"方式三:手动下载\" -ForegroundColor Yellow\n Write-Host \" https://nssm.cc/download\" -ForegroundColor Cyan\n exit 1\n}\n\nWrite-Host \"🔧 安装 Windows 服务: $ServiceName\" -ForegroundColor Green\n\n# 停止并删除已存在的服务\n$existingService = Get-Service -Name $ServiceName -ErrorAction SilentlyContinue\nif ($existingService) {\n Write-Host \"⚠️ 服务已存在,先删除...\" -ForegroundColor Yellow\n nssm stop $ServiceName\n nssm remove $ServiceName confirm\n}\n\n# 安装服务(npx 在项目目录下启动)\nnssm install $ServiceName npx zhin $NpxArgs\n\n# 配置服务\nnssm set $ServiceName AppDirectory $ProjectPath\nnssm set $ServiceName AppEnvironmentExtra \"NODE_ENV=production\"\nnssm set $ServiceName DisplayName \"Zhin.js Endpoint - $ServiceName\"\nnssm set $ServiceName Description \"Zhin.js 聊天机器人服务\"\nnssm set $ServiceName Start SERVICE_AUTO_START\nnssm set $ServiceName AppStdout \"$ProjectPath\\\\logs\\\\nssm-stdout.log\"\nnssm set $ServiceName AppStderr \"$ProjectPath\\\\logs\\\\nssm-stderr.log\"\nnssm set $ServiceName AppRotateFiles 1\nnssm set $ServiceName AppRotateOnline 1\nnssm set $ServiceName AppRotateBytes 10485760\n\nWrite-Host \"\"\nWrite-Host \"✅ 服务安装成功!\" -ForegroundColor Green\nWrite-Host \"\"\nWrite-Host \"📝 管理命令:\" -ForegroundColor Yellow\nWrite-Host \" 启动服务: nssm start $ServiceName\" -ForegroundColor Cyan\nWrite-Host \" 停止服务: nssm stop $ServiceName\" -ForegroundColor Cyan\nWrite-Host \" 重启服务: nssm restart $ServiceName\" -ForegroundColor Cyan\nWrite-Host \" 查看状态: nssm status $ServiceName\" -ForegroundColor Cyan\nWrite-Host \" 卸载服务: nssm remove $ServiceName confirm\" -ForegroundColor Cyan\nWrite-Host \"\"\nWrite-Host \"🚀 启动服务:\" -ForegroundColor Yellow\nWrite-Host \" nssm start $ServiceName\" -ForegroundColor Cyan\n`);\n\n // 创建 Windows Task Scheduler XML(备选方案)\n await fs.writeFile(path.join(projectPath, `${projectName}-task.xml`),\n`<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Task version=\"1.2\" xmlns=\"http://schemas.microsoft.com/windows/2004/02/mit/task\">\n <RegistrationInfo>\n <Description>Zhin.js Endpoint - ${projectName}</Description>\n <URI>\\\\${projectName}</URI>\n </RegistrationInfo>\n <Triggers>\n <BootTrigger>\n <Enabled>true</Enabled>\n </BootTrigger>\n </Triggers>\n <Principals>\n <Principal id=\"Author\">\n <LogonType>InteractiveToken</LogonType>\n <RunLevel>LeastPrivilege</RunLevel>\n </Principal>\n </Principals>\n <Settings>\n <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>\n <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>\n <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>\n <AllowHardTerminate>true</AllowHardTerminate>\n <StartWhenAvailable>true</StartWhenAvailable>\n <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>\n <IdleSettings>\n <StopOnIdleEnd>false</StopOnIdleEnd>\n <RestartOnIdle>false</RestartOnIdle>\n </IdleSettings>\n <AllowStartOnDemand>true</AllowStartOnDemand>\n <Enabled>true</Enabled>\n <Hidden>false</Hidden>\n <RunOnlyIfIdle>false</RunOnlyIfIdle>\n <WakeToRun>false</WakeToRun>\n <ExecutionTimeLimit>PT0S</ExecutionTimeLimit>\n <Priority>7</Priority>\n <RestartOnFailure>\n <Interval>PT1M</Interval>\n <Count>3</Count>\n </RestartOnFailure>\n </Settings>\n <Actions Context=\"Author\">\n <Exec>\n <Command>npx</Command>\n <Arguments>zhin runtime start --mode production --no-watch</Arguments>\n <WorkingDirectory>${path.resolve(projectPath).replace(/\\\\/g, '\\\\\\\\')}</WorkingDirectory>\n </Exec>\n </Actions>\n</Task>\n`);\n\n // 创建 PM2 配置文件\n await fs.writeFile(path.join(projectPath, 'ecosystem.config.cjs'),\n`module.exports = {\n apps: [\n {\n name: '${projectName}',\n script: 'node_modules/.bin/zhin',\n args: 'runtime start --mode production --no-watch',\n cwd: './',\n instances: 1,\n autorestart: true,\n watch: false,\n max_memory_restart: '1G',\n env: {\n NODE_ENV: 'production',\n },\n env_development: {\n NODE_ENV: 'development',\n },\n error_file: './logs/pm2-error.log',\n out_file: './logs/pm2-out.log',\n log_date_format: 'YYYY-MM-DD HH:mm:ss Z',\n merge_logs: true,\n min_uptime: '10s',\n max_restarts: 10,\n restart_delay: 4000,\n },\n ],\n};\n`);\n\n // 创建 .gitignore\n await fs.writeFile(path.join(projectPath, '.gitignore'),\n`node_modules/\ndist/\nlib/\n*.log\nlogs/\n.env\n.env.*\n!.env.development\n!.env.production\n!.env.example\n.DS_Store\ndata/\n.pm2/\n.zhin/\n`);\n\n // 创建 README.md\n await fs.writeFile(path.join(projectPath, 'README.md'),\n`# ${projectName}\n\n使用 Zhin.js Plugin Runtime 创建的机器人项目(约定式插件:\\`plugin.ts\\` + \\`commands/\\` + \\`components/\\`)。\n\n## 📁 项目结构\n\n\\`\\`\\`\n${projectName}/\n├── plugin.ts # definePlugin(),根插件入口\n├── schema.json # 根插件配置契约(JSON Schema)\n├── ${configFilename} # Host 配置 + plugins 包映射 + 顶层实例配置\n├── commands/\n│ ├── hello/index.ts # /hello 命令(defineCommand)\n│ └── card/index.ts # /card -> component(\"status-card\")\n├── components/\n│ └── status-card/index.tsx # defineComponent(),JSX 状态卡片\n├── middlewares/ # 消息中间件(约定目录)\n├── pages/\n│ ├── index/index.tsx # Console 页面(/)\n│ ├── nav/index.tsx # 最近插件导航布局\n│ └── footer/index.tsx # 最近插件页脚布局\n├── tools/ # <name>/index.ts AI 工具入口\n├── skills/ # <name>/SKILL.md,可同目录放参考资料与脚本\n├── agents/ # <name>/agent.json + 核心 Markdown 子 Agent 目录\n├── plugins/ # 本地子插件 workspace(仅一级)\n├── packages/ # 贡献给 Zhin 的 Feature workspace\n├── package.json # zhin 清单(protocol 1 / features)\n├── tsconfig.json\n└── pnpm-workspace.yaml\n\\`\\`\\`\n\n\\`package.json#zhin.features\\` 声明包所需的 Feature provider。\n\\`${configFilename}\\` 使用 \\`configVersion: 2\\`:\\`plugins\\` 映射实例名到插件包,\\`disable_plugins\\` 列出停用实例,业务参数放在顶层同名实例块。\n根项目默认声明 page/layout Feature;它们只提供发现与拓扑契约,浏览器构建器并不作为项目依赖安装。\n\n${renderDatabaseReadme(options.database, configFilename)}\n\n## 🚀 快速开始\n\n### 开发模式\n\n\\`\\`\\`bash\npnpm dev # zhin runtime start(监听文件变更,热重载)\n\\`\\`\\`\n\n1. 确认终端里 Runtime 已启动(HTTP Host 一般为 \\`http://127.0.0.1:8068\\`)。\n2. 打开 **[Remote Console](https://console.zhin.dev)**,API Base 填 \\`http://127.0.0.1:8068\\`,Token 填 \\`.env\\` 的 \\`HTTP_TOKEN\\`。\n3. 进入 **Sandbox / 沙盒** 页并连接,发送 \\`/hello\\`;收到回复即首跑成功。\n4. 若连接失败,先运行 \\`npx zhin doctor\\` 查看修复建议。\n\n### 生产模式\n\n\\`\\`\\`bash\npnpm start # zhin runtime start --mode production --no-watch(前台)\npnpm pm2:start # 或使用 PM2 守护\n\\`\\`\\`\n\n也可以使用随项目生成的 systemd / launchd / NSSM 服务配置(命令均为 \\`zhin runtime start --mode production --no-watch\\`)。\n\n### 启用 AI(可选)\n\n首跑默认是 IM-only,不依赖 Ollama 或任何云模型。跑通 Sandbox 后再启用 AI:\n\n\\`\\`\\`bash\nnpx zhin setup --ai\npnpm install\npnpm dev\n\\`\\`\\`\n\n本地模型用户请先启动 Ollama 并 pull 对应模型;云模型用户按向导把 API Key 写入 \\`.env\\`。\n\n## 🔌 插件开发\n\n### 新增命令\n\n在 \\`commands/<name>/index.ts\\` 创建入口文件(默认导出 \\`defineCommand\\`)。同目录其他文件是普通模块,可以被入口自由导入:\n\n\\`\\`\\`typescript\nimport { defineCommand } from 'zhin.js/command';\n\nexport default defineCommand({\n description: '打招呼',\n execute: () => '你好!',\n});\n\\`\\`\\`\n\n### Console 页面与布局\n\n在 \\`pages/<name>/index.tsx\\` 新增页面:\\`pages/index/index.tsx\\` 映射到插件路径,其他页面映射为 \\`/p-<name>\\`。\n\\`pages/nav/index.tsx\\` 与 \\`pages/footer/index.tsx\\` 分别覆盖当前插件及其子插件的最近导航、页脚布局。\n页面元数据必须用 \\`@zhin.js/console-contract\\` 的 \\`definePage\\` 声明;默认示例不依赖 React 或浏览器构建工具。\n\n### 接入更多平台\n\n\\`\\`\\`bash\nnpx zhin setup --adapters # 选择平台并写入主配置的插件声明与同名业务配置\n\\`\\`\\`\n\n## 🤖 AI Agent\n\n如果初始化时启用了 AI,配置会写入 \\`${configFilename}\\` 的 \\`ai:\\` 段,API Key 会写入 \\`.env\\`。\n启用后 \\`tools/<name>/index.ts\\` 默认导出的 \\`defineAgentTool\\` 会被 Agent 自动发现;辅助模块与入口共置在命名目录中。\n\n## ✅ 验证项目\n\n\\`\\`\\`bash\npnpm build # tsc --noEmit 类型检查\npnpm dev -- --once # 启动一个 generation 自检后退出\n\\`\\`\\`\n\n## 📚 文档\n\n- [官方文档](https://zhin.js.org)\n- [GitHub](https://github.com/zhinjs/zhin)\n\n## 许可证\n\nMIT License\n`);\n}\n\nasync function createRuntimeProjectFiles(projectPath: string, projectName: string, options: InitOptions): Promise<void> {\n const aiEnabled = options.ai?.enabled === true;\n\n await Promise.all([\n fs.ensureDir(path.join(projectPath, 'commands')),\n fs.ensureDir(path.join(projectPath, 'components')),\n fs.ensureDir(path.join(projectPath, 'pages')),\n fs.ensureDir(path.join(projectPath, 'skills')),\n fs.ensureDir(path.join(projectPath, 'data')),\n ...['agents', 'hooks', 'middlewares', 'plugins', 'packages', 'prompt-sections', 'tools'].map(async (directory) => {\n await fs.outputFile(path.join(projectPath, directory, '.gitkeep'), '');\n }),\n ]);\n\n // 创建 .env 文件(使用简单的变量名)\n const databaseEnvVars = options.database ? generateDatabaseEnvVars(options.database) : '';\n const databaseEnvExample = options.database ? generateDatabaseEnvExample(options.database) : '';\n const adapterEnvVars = options.adapters ? generateAdapterEnvVars(options.adapters) : '';\n const aiEnvVars = options.ai ? generateAIEnvVars(options.ai) : '';\n await fs.writeFile(path.join(projectPath, '.env'),\n`# HTTP 服务配置(Web 控制台 Token 认证)\nHTTP_TOKEN=${formatEnvValue(options.httpToken)}${databaseEnvVars}${adapterEnvVars}${aiEnvVars}\n`);\n await fs.writeFile(path.join(projectPath, '.env.development'),\n`# 调试模式\nDEBUG=true\nNODE_ENV=development\n`);\n await fs.writeFile(path.join(projectPath, '.env.production'),\n`# 调试模式\nDEBUG=false\nNODE_ENV=production\n`);\n await fs.writeFile(path.join(projectPath, '.env.example'),\n`# HTTP 服务配置(复制为 .env 后填写真实 Token)\nHTTP_TOKEN=change-me${databaseEnvExample}\n`);\n\n // tsconfig.json(独立项目,对齐 examples/minimal-bot 的编译选项)\n await fs.writeJson(path.join(projectPath, 'tsconfig.json'), {\n \"compilerOptions\": {\n \"target\": \"ES2022\",\n \"module\": \"ESNext\",\n \"moduleResolution\": \"bundler\",\n \"strict\": true,\n \"esModuleInterop\": true,\n \"skipLibCheck\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"resolveJsonModule\": true,\n \"isolatedModules\": true,\n \"jsx\": \"react-jsx\",\n \"jsxImportSource\": \"zhin.js\",\n \"noEmit\": true,\n \"types\": [\"node\"]\n },\n \"include\": [\n \"plugin.ts\",\n \"commands/**/*.ts\",\n \"commands/**/*.tsx\",\n \"components/**/*.ts\",\n \"components/**/*.tsx\",\n \"middlewares/**/*.ts\",\n \"middlewares/**/*.tsx\",\n \"tools/**/*.ts\",\n \"tools/**/*.tsx\",\n \"hooks/**/*.ts\",\n \"agents/**/*.ts\",\n \"skills/**/*.ts\",\n \"pages/**/*.ts\",\n \"pages/**/*.tsx\"\n ],\n \"exclude\": [\n \"node_modules\"\n ]\n }, { spaces: 2 });\n\n // plugin.ts(根插件入口)\n await fs.writeFile(path.join(projectPath, 'plugin.ts'),\n`import { definePlugin } from 'zhin.js';\n\nexport default definePlugin({\n name: '${projectName}',\n metadata: {\n displayName: '${projectName}',\n },\n});\n`);\n\n // schema.json(根插件配置契约,暂无可配置项)\n await fs.writeJson(path.join(projectPath, 'schema.json'), {\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"type\": \"object\",\n \"additionalProperties\": false,\n \"properties\": {}\n }, { spaces: 2 });\n\n // pages/ follows the Feature conventions. These components deliberately\n // return text, keeping the initial IM project free of a browser UI runtime.\n await fs.outputFile(path.join(projectPath, 'pages', 'index', 'index.tsx'),\n`import { definePage } from '@zhin.js/console-contract';\n\nexport const meta = definePage({\n title: '${projectName}',\n order: 10,\n});\n\nexport default function HomePage() {\n return 'Zhin Console is ready. Add pages in pages/ to extend this plugin.';\n}\n`);\n await fs.outputFile(path.join(projectPath, 'pages', 'nav', 'index.tsx'),\n`import type { NavSlotProps } from '@zhin.js/console-contract';\n\nexport default function ProjectNavigation({ current }: NavSlotProps) {\n return current ? \\`Current page: \\${current}\\` : '${projectName}';\n}\n`);\n await fs.outputFile(path.join(projectPath, 'pages', 'footer', 'index.tsx'),\n`import type { FooterSlotProps } from '@zhin.js/console-contract';\n\nexport default function ProjectFooter({ owner }: FooterSlotProps) {\n return \\`Plugin: \\${owner}\\`;\n}\n`);\n\n // commands/hello/index.ts\n await fs.outputFile(path.join(projectPath, 'commands', 'hello', 'index.ts'),\n`import { defineCommand } from 'zhin.js/command';\n\nexport default defineCommand({\n description: '打招呼',\n execute: () => [\n '你好!欢迎使用 Zhin.js!',\n '试试 /card 查看状态卡片。',\n '启用 AI:npx zhin setup --ai,然后在 Sandbox 发 ai: 你好',\n ].join('\\\\n'),\n});\n`);\n\n // commands/card/index.ts(组件渲染示例,对齐 examples/minimal-bot)\n await fs.outputFile(path.join(projectPath, 'commands', 'card', 'index.ts'),\n`import { defineCommand } from 'zhin.js/command';\nimport { component } from 'zhin.js/component';\n\nexport default defineCommand({\n description: '渲染 JSX 状态卡片',\n execute: () => {\n const memory = process.memoryUsage();\n return component('status-card', {\n title: '${projectName}',\n lines: [\n { label: 'RSS', value: \\`\\${Math.round(memory.rss / 1024 / 1024)}MB\\` },\n { label: 'Heap', value: \\`\\${Math.round(memory.heapUsed / 1024 / 1024)}MB\\` },\n ],\n });\n },\n});\n`);\n\n // components/status-card/index.tsx\n await fs.outputFile(path.join(projectPath, 'components', 'status-card', 'index.tsx'),\n`import { defineComponent } from 'zhin.js/component';\nimport type { JSXRenderable } from 'zhin.js/jsx';\nimport { CardCanvas, Card, CardHeader, Row, StatChip } from '@zhin.js/components';\n\ninterface StatusCardProps {\n readonly title: JSXRenderable;\n readonly lines: readonly { readonly label: JSXRenderable; readonly value: JSXRenderable }[];\n}\n\nexport default defineComponent<StatusCardProps>({\n previewProps: { title: '服务状态', lines: [{ label: 'RSS', value: '42MB' }, { label: '任务', value: 0 }] },\n render({ title, lines }) {\n return (\n <html><CardCanvas>\n <Card>\n <CardHeader title={title} subtitle=\"${projectName}\" />\n <Row gap={8}>\n {lines.map((line) => <StatChip label={line.label} value={line.value} />)}\n </Row>\n </Card>\n </CardCanvas></html>\n );\n },\n});\n`);\n\n // tools/echo/index.ts(AI 启用时生成,defineAgentTool 约定目录)\n if (aiEnabled) {\n await fs.ensureDir(path.join(projectPath, 'tools', 'echo'));\n await fs.writeFile(path.join(projectPath, 'tools', 'echo', 'index.ts'),\n`import { defineAgentTool } from '@zhin.js/tool';\nimport { z } from 'zod';\n\nexport default defineAgentTool<{ message: string }>({\n description: '回显一条消息(defineAgentTool 示例)',\n inputSchema: z.object({ message: z.string().min(1) }),\n async execute({ message }) {\n return \\`echo: \\${message}\\`;\n },\n});\n`);\n }\n\n // 生活助手模板额外文件\n if (options.template === 'life-assistant') {\n // knowledge 目录\n await fs.ensureDir(path.join(projectPath, 'knowledge'));\n await fs.writeFile(path.join(projectPath, 'knowledge', 'faq.md'),\n`# 常见问题\n\n## 如何添加新知识?\n\n在 \\`knowledge/\\` 目录下创建 \\`.md\\` 文件即可。下次查询时自动发现。\n\n## 如何更换 AI 模型?\n\n修改 \\`zhin.config.yml\\` 中 \\`ai.agents.zhin.model\\` 字段。\n`);\n\n // 三层记忆目录骨架\n await fs.ensureDir(path.join(projectPath, 'data', 'memory', 'global'));\n await fs.ensureDir(path.join(projectPath, 'data', 'memory', 'platforms'));\n await fs.ensureDir(path.join(projectPath, 'data', 'memory', 'sessions'));\n\n // 覆盖 SOUL.md 为生活助手人设\n await fs.writeFile(path.join(projectPath, 'SOUL.md'),\n`# 你是谁\n\n你是一个生活助手。你善于聊天、记住用户喜好、查询知识库、设置提醒。\n\n## 性格\n\n- 友好、耐心、有条理\n- 回答简洁,不啰嗦\n- 遇到不确定的事情会诚实说\"我不确定\"\n\n## 能力\n\n1. **日常聊天** — 回答问题、闲聊、推荐\n2. **知识检索** — 使用 \\`knowledge_search\\` 查询本地知识库\n3. **记忆** — 记住用户告诉你的偏好和事实\n4. **时间感知** — 使用 \\`get_current_time\\` 了解当前时间\n\n## 限制\n\n- 你不是代码助手,不写代码\n- 你不执行危险的 bash 命令\n`);\n\n // 生活助手命令与工具(工具需 AI 启用才挂载 @zhin.js/tool feature)\n await fs.outputFile(path.join(projectPath, 'commands', 'remind', 'index.ts'),\n`import { defineCommand } from 'zhin.js/command';\n\nexport default defineCommand({\n description: '设置提醒',\n execute: ({ args }) => \\`✅ 已记录提醒:\\${args.join(' ')}\\`,\n});\n`);\n\n if (aiEnabled) {\n await fs.ensureDir(path.join(projectPath, 'tools', 'get_current_time'));\n await fs.writeFile(path.join(projectPath, 'tools', 'get_current_time', 'index.ts'),\n`import { defineAgentTool } from '@zhin.js/tool';\nimport { z } from 'zod';\n\nexport default defineAgentTool({\n description: '获取当前日期和时间',\n inputSchema: z.object({}),\n async execute() {\n return new Date().toLocaleString('zh-CN', { timeZone: 'Asia/Shanghai' });\n },\n});\n`);\n }\n }\n\n // 创建配置文件(新 Plugin Runtime 格式)\n await createConfigFile(projectPath, options.config!, options);\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-zhin-app",
3
- "version": "1.1.7",
3
+ "version": "1.1.9",
4
4
  "description": "Create a new zhin bot project",
5
5
  "type": "module",
6
6
  "bin": {
@@ -15,7 +15,7 @@
15
15
  "fs-extra": "^11.4.0",
16
16
  "inquirer": "^14.0.2",
17
17
  "yaml": "^2.9.0",
18
- "@zhin.js/scaffold-wizard": "1.1.6"
18
+ "@zhin.js/scaffold-wizard": "1.1.8"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@types/fs-extra": "^11.0.4",
@@ -60,7 +60,7 @@ tags:
60
60
  ```
61
61
  plugins/{name}/
62
62
  ├── package.json # 含 "zhin" manifest
63
- ├── schema.json # 可选:插件配置
63
+ ├── schema.json # 可选:插件配置(与 definePlugin({ config }) 二选一,同时存在会拒绝启动)
64
64
  ├── plugin.ts # definePlugin 入口(只做装配)
65
65
  ├── tsconfig.json
66
66
  ├── README.md
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAsD,MAAM,0BAA0B,CAAC;AAG3G,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEnE;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAO3G"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAIA,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAqBzD;AAED,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB5E;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAc7E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"node-requirement.d.ts","sourceRoot":"","sources":["../src/node-requirement.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,uBAAuB,cAAc,CAAC;AAEnD,wBAAgB,uBAAuB,CAAC,OAAO,SAAwB,GAAG,IAAI,CAK7E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"stable-yes-defaults.d.ts","sourceRoot":"","sources":["../src/stable-yes-defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAuBjE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/templates/bootstrap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,gBAAgB,g/BA0B5B,CAAC;AAEF,eAAO,MAAM,iBAAiB,uYAO7B,CAAC;AAEF,eAAO,MAAM,kBAAkB,q4BAoC9B,CAAC;AAEF,6EAA6E;AAC7E,eAAO,MAAM,6BAA6B,oxBA8BzC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,oBAAoB,QAAqB,CAAC;AAEvD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAGD,wBAAgB,aAAa,CAAC,KAAK,GAAE,MAAW,GAAG,MAAM,CAKxD;AAGD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAU9D;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGnE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"AAIA,OAAO,EAeL,KAAK,WAAW,EACjB,MAAM,0BAA0B,CAAC;AAOlC,eAAO,MAAM,gBAAgB,mDAAoD,CAAC;AAClF,eAAO,MAAM,eAAe,+FAAgG,CAAC;AA0E7H,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA0enH"}