@66rpg/cgmaker-create 0.1.22 → 0.1.24

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
@@ -3,18 +3,20 @@
3
3
  从 cgmaker 托管模板创建带完整源码的游戏工程。
4
4
 
5
5
  ```bash
6
- npx @66rpg/cgmaker-create@latest <template_id> [目录] [data_id]
7
- npx @66rpg/cgmaker-create@latest <template_id> [目录] --data-id <data_id>
8
- npx @66rpg/cgmaker-create@latest <template_id> [目录] --skill-platform cursor
9
- npx @66rpg/cgmaker-create@latest <template_id> [目录] --skill-all
10
- npx @66rpg/cgmaker-create@latest --agent --json <template_id>
11
- npx @66rpg/cgmaker-create@latest --agent --json <template_id> <用户说的目录> --skill-platform cursor
6
+ npx @66rpg/cgmaker-create@latest <用户名/slug> [目录]
7
+ npx @66rpg/cgmaker-create@latest <用户名/slug@版本> [目录]
8
+ npx @66rpg/cgmaker-create@latest <用户名/slug@版本> [目录] --with-assets <数据包ID>
9
+ npx @66rpg/cgmaker-create@latest <模板id或版本id> [目录]
10
+ npx @66rpg/cgmaker-create@latest <引用> [目录] --skill-platform cursor
11
+ npx @66rpg/cgmaker-create@latest <引用> [目录] --skill-all
12
12
  ```
13
13
 
14
- 只要平台给的模板 ID(template_id,可 `@version_name`),不要写成 用户名/模板名。
14
+ 第一位置是模板引用,原样交给平台:`用户名/slug`(最新版)、`用户名/slug@版本`、`用户名/slug@latest`,或平台模板 id / 版本 id。不要用平台模板名 `name`。要素材时加 `--with-assets <数据包ID>`;不带则只下代码。
15
15
 
16
- 未传资源包 ID(data_id)且你在屏幕前操作时,会列出该模板版本可下载的资源包,选序号或 `data_id`(`0` 表示不下载资源)。已传第三参数 / `--data-id` 则跳过列表。脚本环境会沿用该版本默认绑定包。未指定目录时:交互会问工程建在哪个文件夹;脚本必须带目录。未指定 `--skill-platform` / `--skill-all` 时:交互会询问要把 AI 说明安装到哪个编辑器(回车无效,跳过须输入 `s`),脚本默认不安装。`--agent` 下缺目录或缺选项会停下来问用户,不要自动起文件夹名。已有工程补装:`npx cgmaker skill --platform cursor` 或 `--all`。
16
+ 未指定目录时:你在屏幕前操作会询问工程建在哪个文件夹(回车无效,必须输入名字或路径);编辑器里跑命令会停下来问你工程放哪,不要自动起文件夹名。
17
17
 
18
- 你在屏幕前操作时若检测到新版本会询问是否更新。Agent 会停下来问你要不要更新;同意后用返回结果里的 `data.apply`(空目录改用 `@latest` 重跑)。`--skip-update` 跳过询问。
18
+ 未指定 `--skill-platform` / `--skill-all` 时:交互会询问要把 AI 说明安装到哪个编辑器(回车无效,跳过须输入 `s`),脚本默认不安装。已有工程补装:`npx cgmaker skill --platform cursor` 或 `--all`。
19
19
 
20
- 暂无云端种子时用 `--from-dir`。从本地文件夹拷来的工程还没连上平台,不能 `publish-template`。
20
+ 你在屏幕前操作时若检测到新版本会询问是否更新。编辑器里跑命令会停下来问你要不要更新;同意后再按提示继续。
21
+
22
+ 暂无云端种子时用 `--from-dir`(不能同时 `--with-assets`)。从本地文件夹拷来的工程还没连上平台,不能 `publish-template`。
package/dist/index.js CHANGED
@@ -1,28 +1,33 @@
1
- import u from"node:fs";import p from"node:path";import Ce from"node:readline";import{fileURLToPath as Et}from"node:url";import{spawnSync as wt}from"node:child_process";import{spawnSync as De}from"node:child_process";var se={_comment:"cgmaker-create \u7528\u6237\u53EF\u89C1\u6587\u6848\u3002\u5360\u4F4D\u7B26 {name}\u3002",help:{body:{code:"",text:`cgmaker-create \u2014 \u4ECE\u6258\u7BA1\u6A21\u677F\u521B\u5EFA\u5E26\u5B8C\u6574\u6E90\u7801\u7684\u6E38\u620F\u5DE5\u7A0B
1
+ import f from"node:fs";import g from"node:path";import ct from"node:readline";import{fileURLToPath as On}from"node:url";import{spawnSync as Fn}from"node:child_process";import{spawnSync as yt}from"node:child_process";var Ae={_comment:"cgmaker-create \u7528\u6237\u53EF\u89C1\u6587\u6848\u3002\u5360\u4F4D\u7B26 {name}\u3002",help:{body:{code:"",text:`cgmaker-create \u2014 \u4ECE\u6258\u7BA1\u6A21\u677F\u521B\u5EFA\u5E26\u5B8C\u6574\u6E90\u7801\u7684\u6E38\u620F\u5DE5\u7A0B
2
2
 
3
3
  \u7528\u6CD5:
4
- npx @66rpg/cgmaker-create@latest <template_id> [\u76EE\u5F55] [data_id]
5
- npx @66rpg/cgmaker-create@latest <template_id> [\u76EE\u5F55] --data-id <data_id>
6
- npx @66rpg/cgmaker-create@latest <template_id> [\u76EE\u5F55] --from-dir <\u672C\u5730\u6A21\u677F\u76EE\u5F55>
7
- npx @66rpg/cgmaker-create@latest <template_id> [\u76EE\u5F55] --skill-platform cursor
8
- npx @66rpg/cgmaker-create@latest <template_id> [\u76EE\u5F55] --skill-all
4
+ npx @66rpg/cgmaker-create@latest <\u7528\u6237\u540D/slug> [\u76EE\u5F55]
5
+ npx @66rpg/cgmaker-create@latest <\u7528\u6237\u540D/slug@\u7248\u672C> [\u76EE\u5F55]
6
+ npx @66rpg/cgmaker-create@latest <\u7528\u6237\u540D/slug@\u7248\u672C> [\u76EE\u5F55] --with-assets <\u6570\u636E\u5305ID>
7
+ npx @66rpg/cgmaker-create@latest <\u6A21\u677Fid\u6216\u7248\u672Cid> [\u76EE\u5F55]
8
+ npx @66rpg/cgmaker-create@latest <\u5F15\u7528> [\u76EE\u5F55] --from-dir <\u672C\u5730\u6A21\u677F\u76EE\u5F55>
9
+ npx @66rpg/cgmaker-create@latest <\u5F15\u7528> [\u76EE\u5F55] --skill-platform cursor
10
+ npx @66rpg/cgmaker-create@latest <\u5F15\u7528> [\u76EE\u5F55] --skill-all
9
11
 
10
- \u6A21\u677F ID\uFF08template_id\uFF09\u662F\u5E73\u53F0\u7ED9\u7684\u5B57\u7B26\u4E32 id\uFF08\u5B57\u6BCD\u6570\u5B57\uFF09\uFF0C\u53EF\u5E26 @version_name\u3002\u4E0D\u8981\u5199\u6210 \u7528\u6237\u540D/\u6A21\u677F\u540D\u3002
11
- data_id \u4E3A\u8BE5\u6A21\u677F\u4E0B\u7684\u8D44\u6E90\u5305 ID\uFF08data_id\uFF09\uFF1B\u4F60\u5728\u5C4F\u5E55\u524D\u64CD\u4F5C\u4E14\u6CA1\u4F20\u65F6\uFF0C\u4F1A\u5217\u51FA\u53EF\u4E0B\u8F7D\u7248\u672C\u4F9B\u9009\u62E9\u3002\u4E5F\u53EF\u7528 --data-id\u3002
12
- \u672A\u6307\u5B9A skill \u65F6\uFF1A\u4EA4\u4E92\u7EC8\u7AEF\u4F1A\u8BE2\u95EE\u8981\u628A AI \u8BF4\u660E\u5B89\u88C5\u5230\u54EA\u4E2A\u7F16\u8F91\u5668\uFF08\u56DE\u8F66\u65E0\u6548\uFF0C\u8DF3\u8FC7\u987B\u8F93\u5165 s\uFF1B\u4E4B\u540E\u53EF\u5728\u5DE5\u7A0B\u76EE\u5F55\u6267\u884C cgmaker skill\uFF09\uFF1B\u811A\u672C\u73AF\u5883\u9ED8\u8BA4\u4E0D\u5B89\u88C5\u3002\u672A\u6307\u5B9A\u76EE\u5F55\u65F6\uFF1A\u4EA4\u4E92\u4F1A\u95EE\u5DE5\u7A0B\u5EFA\u5728\u54EA\u4E2A\u6587\u4EF6\u5939\uFF08\u56DE\u8F66\u53EF\u7528\u62EC\u53F7\u91CC\u7684\u5EFA\u8BAE\u540D\uFF09\uFF1B\u811A\u672C\u5FC5\u987B\u5E26\u76EE\u5F55\u3002Agent \u8BF7\u52A0 --agent --json\uFF1A\u7F3A\u76EE\u5F55/\u7F3A\u53C2/\u65B0\u7248\u672C\u4F1A\u505C\u4E0B\u8BA9\u5BF9\u8BDD\u8BE2\u95EE\u7528\u6237\uFF0C\u4E0D\u8981\u81EA\u52A8\u8D77\u6587\u4EF6\u5939\u540D\u3002
12
+ \u7B2C\u4E00\u4F4D\u7F6E\u662F\u6A21\u677F\u5F15\u7528\uFF0C\u539F\u6837\u4EA4\u7ED9\u5E73\u53F0\u89E3\u6790\uFF1A\u7528\u6237\u540D/slug\uFF08\u6700\u65B0\u7248\uFF09\u3001\u7528\u6237\u540D/slug@\u7248\u672C\u3001\u7528\u6237\u540D/slug@latest\uFF0C\u6216\u5E73\u53F0\u6A21\u677F id / \u7248\u672C id\u3002\u4E0D\u8981\u7528\u5E73\u53F0\u6A21\u677F\u540D name\u3002
13
+ \u8981\u4E0B\u8F7D\u7D20\u6750\u5305\u65F6\u5FC5\u987B\u5E26 --with-assets <\u6570\u636E\u5305ID>\u3002\u4E0D\u5E26\u5219\u53EA\u4E0B\u4EE3\u7801\uFF0C\u4E0D\u4F1A\u5217\u51FA\u6216\u9ED8\u8BA4\u4E0B\u8F7D\u7D20\u6750\u3002
14
+ \u672A\u6307\u5B9A\u76EE\u5F55\u65F6\uFF1A\u4F60\u5728\u5C4F\u5E55\u524D\u64CD\u4F5C\u4F1A\u8BE2\u95EE\u5DE5\u7A0B\u5EFA\u5728\u54EA\u4E2A\u6587\u4EF6\u5939\uFF08\u56DE\u8F66\u65E0\u6548\uFF0C\u5FC5\u987B\u8F93\u5165\u540D\u5B57\u6216\u8DEF\u5F84\uFF09\uFF1B\u7F16\u8F91\u5668\u91CC\u8DD1\u547D\u4EE4\u4F1A\u81EA\u52A8\u8D70\u4FE1\u5C01\uFF0C\u7F3A\u76EE\u5F55\u4F1A\u505C\u4E0B\u8BA9\u5BF9\u8BDD\u8BE2\u95EE\uFF0C\u4E0D\u8981\u81EA\u52A8\u8D77\u6587\u4EF6\u5939\u540D\u3002
15
+ \u672A\u6307\u5B9A skill \u65F6\uFF1A\u4EA4\u4E92\u7EC8\u7AEF\u4F1A\u8BE2\u95EE\u8981\u628A AI \u8BF4\u660E\u5B89\u88C5\u5230\u54EA\u4E2A\u7F16\u8F91\u5668\uFF08\u56DE\u8F66\u65E0\u6548\uFF0C\u8DF3\u8FC7\u987B\u8F93\u5165 s\uFF1B\u4E4B\u540E\u53EF\u5728\u5DE5\u7A0B\u76EE\u5F55\u6267\u884C cgmaker skill\uFF09\uFF1B\u811A\u672C\u73AF\u5883\u9ED8\u8BA4\u4E0D\u5B89\u88C5\u3002
13
16
  --skill-platform \u53EA\u5B89\u88C5\u5230\u8BE5\u7F16\u8F91\u5668\uFF08\u5982 cursor\uFF09\uFF1B--skill-all \u5B89\u88C5\u5230\u5168\u90E8\u7F16\u8F91\u5668\u3002\u5DF2\u6709\u5DE5\u7A0B\u8865\u88C5\u7528 npx cgmaker skill --platform cursor \u6216 --all\u3002
17
+ \u672C\u5305\u5185\u7F6E skill \u5728 skill/cgmaker-create/SKILL.md\uFF0C\u8BF4\u660E\u53C2\u6570\u3001\u7528\u6CD5\u548C\u7EA6\u675F\u3002
14
18
  \u6682\u65E0\u4E91\u7AEF\u6A21\u677F\u79CD\u5B50\u65F6\uFF0C\u7528 --from-dir\u3002\u53D1\u73B0\u65B0\u7248\uFF1A\u4F60\u5728\u5C4F\u5E55\u524D\u64CD\u4F5C\u65F6\u4F1A\u95EE\u662F\u5426\u66F4\u65B0\uFF1BAgent \u4F1A\u505C\u4E0B\u6765\u95EE\u4F60\u8981\u4E0D\u8981\u66F4\u65B0\uFF0C\u540C\u610F\u540E --apply-update\uFF0C\u62D2\u7EDD --skip-update\u3002
15
- `,comment:"\u6574\u6BB5 --help"}},err:{from_dir_need_path:{code:"",text:"--from-dir \u9700\u8981\u6A21\u677F\u76EE\u5F55\u8DEF\u5F84",comment:"\u53C2\u6570\u9519\u8BEF"},data_id_need:{code:"",text:"--data-id \u9700\u8981\u8D44\u6E90\u5305 ID\uFF08data_id\uFF09",comment:"\u53C2\u6570\u9519\u8BEF"},skill_platform_need:{code:"",text:"--skill-platform \u9700\u8981\u7F16\u8F91\u5668\u540D\uFF08\u5982 cursor\uFF09",comment:"\u53C2\u6570\u9519\u8BEF"},skill_conflict:{code:"",text:"--skill-platform \u4E0E --skill-all \u4E0D\u80FD\u540C\u65F6\u4F7F\u7528",comment:"\u53C2\u6570\u9519\u8BEF"},cleared:{code:"",text:"\u5DF2\u6E05\u7A7A {dir}",comment:"\u5931\u8D25\u56DE\u6EDA"},clear_failed:{code:"",text:"\u65E0\u6CD5\u6E05\u7A7A {dir}\uFF1A{e}",comment:"\u5931\u8D25\u56DE\u6EDA\uFF1B{e} \u4E3A\u4E2D\u6587\u539F\u56E0\uFF0C\u4E0D\u8981\u586B\u7CFB\u7EDF Error.message"},sys_denied:{code:"",text:"\u6CA1\u6709\u6743\u9650\uFF0C\u6216\u6587\u4EF6\u88AB\u5360\u7528",comment:"EPERM / EACCES\uFF0C\u4E0D\u6253\u5370\u7CFB\u7EDF\u8DEF\u5F84"},sys_missing:{code:"",text:"\u8DEF\u5F84\u4E0D\u5B58\u5728",comment:"ENOENT"},sys_busy:{code:"",text:"\u76EE\u5F55\u975E\u7A7A\u6216\u6587\u4EF6\u6B63\u5728\u4F7F\u7528",comment:"EBUSY / ENOTEMPTY"},sys_type:{code:"",text:"\u8DEF\u5F84\u7C7B\u578B\u4E0D\u6B63\u786E",comment:"ENOTDIR / EISDIR"},sys_invalid:{code:"",text:"\u8DEF\u5F84\u65E0\u6548",comment:"EINVAL"},sys_too_many:{code:"",text:"\u6253\u5F00\u7684\u6587\u4EF6\u8FC7\u591A",comment:"EMFILE / ENFILE"},sys_unknown:{code:"",text:"\u7CFB\u7EDF\u62D2\u7EDD\u4E86\u8FD9\u6B21\u64CD\u4F5C",comment:"\u5176\u5B83\u7CFB\u7EDF\u9519\u8BEF\uFF0C\u4E0D\u6253\u5370 Error.message \u4EE5\u514D\u4E71\u7801"},owner_slug:{code:"",text:"\u4E0D\u8981\u5199\u6210 \u7528\u6237\u540D/\u6A21\u677F\u540D\u3002\u8BF7\u4F7F\u7528\u5E73\u53F0\u6A21\u677F ID\uFF08template_id\uFF0C\u5B57\u6BCD\u6570\u5B57\uFF09\uFF0C\u4F8B\u5982 k8n2x4m7q1w5",comment:"\u53C2\u6570\u9519\u8BEF"},data_id_from_dir:{code:"",text:"--data-id \u4E0D\u80FD\u4E0E --from-dir \u540C\u65F6\u4F7F\u7528",comment:"\u53C2\u6570\u9519\u8BEF"},invalid_data_id:{code:"",text:"\u65E0\u6548\u7684\u8D44\u6E90\u5305 ID\uFF08data_id\uFF09: {id}",comment:"\u53C2\u6570\u9519\u8BEF"},from_dir_not_template:{code:"",text:"--from-dir \u4E0D\u662F\u6A21\u677F\u76EE\u5F55: {dir}",comment:"\u53C2\u6570\u9519\u8BEF"},need_dest_no_tty:{code:"",text:"\u8BF7\u6307\u5B9A\u8981\u628A\u5DE5\u7A0B\u5EFA\u5728\u54EA\u4E2A\u6587\u4EF6\u5939\u3002",comment:"\u53C2\u6570\u9519\u8BEF"},dest_exists:{code:"",text:"\u8FD9\u4E2A\u6587\u4EF6\u5939\u5DF2\u7ECF\u6709\u4E1C\u897F\u4E86\uFF0C\u6362\u4E2A\u540D\u5B57\u6216\u8DEF\u5F84\u518D\u521B\u5EFA\uFF1A{dir}",comment:"\u53C2\u6570\u9519\u8BEF"},npm_install:{code:"",text:"npm install \u5931\u8D25",comment:"\u843D\u5730\u5931\u8D25"},bin_missing:{code:"",text:"\u627E\u4E0D\u5230 {js}",comment:"\u843D\u5730\u5931\u8D25"},run_js:{code:"",text:"\u65E0\u6CD5\u8FD0\u884C {js}: {e}",comment:"\u843D\u5730\u5931\u8D25"},init_failed:{code:"",text:"cgmaker init \u5931\u8D25",comment:"\u843D\u5730\u5931\u8D25"},npm_install_again:{code:"",text:"init \u540E npm install \u5931\u8D25",comment:"\u843D\u5730\u5931\u8D25"},run_npm:{code:"",text:"\u65E0\u6CD5\u8FD0\u884C {cmd}: {e}",comment:"npm \u542F\u52A8\u5931\u8D25"},need_input:{code:"11",text:"\u7F3A\u5C11\u9700\u8981\u5411\u7528\u6237\u786E\u8BA4\u7684\u53C2\u6570\u3002\u8BF7\u8BE2\u95EE\u7528\u6237\u540E\uFF0C\u628A\u7B54\u6848\u53D8\u6210\u547D\u4EE4\u884C\u65D7\u6807\u518D\u91CD\u8DD1\u3002",comment:"Agent \u9000\u51FA\u7801 11"},update_available:{code:"10",text:"\u68C0\u6D4B\u5230 cgmaker \u65B0\u7248\u672C\uFF0C\u63A8\u8350\u66F4\u65B0\u3002\u8BF7\u8BE2\u95EE\u7528\u6237\u662F\u5426\u73B0\u5728\u66F4\u65B0\u3002",comment:"Agent \u9000\u51FA\u7801 10"},update_use_latest:{code:"",text:"\u5F53\u524D\u76EE\u5F55\u6CA1\u6709 package.json\uFF0C\u65E0\u6CD5\u5199\u5165\u5DE5\u7A0B\u4F9D\u8D56\u3002\u8BF7\u6539\u7528 npx @66rpg/cgmaker-create@latest \u518D\u6267\u884C\u3002",comment:"create --apply-update \u65E0\u5DE5\u7A0B"},update_failed:{code:"",text:"\u66F4\u65B0\u5931\u8D25\uFF0C\u5DF2\u8DF3\u8FC7\uFF0C\u7EE7\u7EED\u6267\u884C\u539F\u547D\u4EE4\u3002",comment:"npm install \u5931\u8D25"}},prompt:{dest_dir:{code:"",text:"\u5DE5\u7A0B\u8981\u5EFA\u5728\u54EA\u4E2A\u6587\u4EF6\u5939\uFF1F\u8BF7\u8BF4\u4E00\u4E2A\u65B0\u6587\u4EF6\u5939\u7684\u540D\u5B57\uFF0C\u6216\u5B8C\u6574\u8DEF\u5F84\u3002",comment:"\u8BE2\u95EE\u843D\u5730\u76EE\u5F55"},skill:{code:"",text:"\u8981\u628A AI \u8BF4\u660E\u5B89\u88C5\u5230\u54EA\u4E2A\u7F16\u8F91\u5668\uFF1F",comment:"Agent / TTY \u9009\u5E73\u53F0"},skill_detected:{code:"",text:"\u68C0\u6D4B\u5230\u5F53\u524D\u4F7F\u7528\u7684\u7F16\u8F91\u5668\u662F {id}\u3002\u8981\u628A AI \u8BF4\u660E\u5B89\u88C5\u5230\u54EA\u4E2A\u7F16\u8F91\u5668\uFF1F",comment:"Agent \u9009\u5E73\u53F0\uFF0C\u5DF2\u63A2\u6D4B\u5230\u5BBF\u4E3B"},skill_current_suffix:{code:"",text:"\uFF08\u5F53\u524D\uFF09",comment:"\u63A2\u6D4B\u5230\u7684\u7F16\u8F91\u5668\u9009\u9879\u540E\u7F00"},skill_item:{code:"",text:" {n}) {id}",comment:"TTY skill \u9009\u9879"},skill_item_current:{code:"",text:" {n}) {id}{mark}",comment:"TTY skill \u5F53\u524D\u7F16\u8F91\u5668\u9009\u9879"},skill_all:{code:"",text:" 0) \u5168\u90E8\u7F16\u8F91\u5668",comment:"TTY skill \u5168\u90E8"},skill_skip:{code:"",text:" s) \u8DF3\u8FC7\uFF08\u4E4B\u540E\u53EF\u5728\u5DE5\u7A0B\u76EE\u5F55\u6267\u884C cgmaker skill \u518D\u5B89\u88C5\uFF09",comment:"TTY skill \u8DF3\u8FC7"},skill_ask:{code:"",text:"\u8BF7\u8F93\u5165\u5E8F\u53F7\u3001\u7F16\u8F91\u5668\u540D\u30010\uFF08\u5168\u90E8\uFF09\u6216 s\uFF08\u8DF3\u8FC7\uFF09\u3002\u76F4\u63A5\u56DE\u8F66\u65E0\u6548\uFF1A",comment:"TTY skill \u8F93\u5165\u63D0\u793A"},skill_empty:{code:"",text:"\u56DE\u8F66\u4E0D\u4F1A\u8DF3\u8FC7\u3002\u8BF7\u8F93\u5165\u5E8F\u53F7\u3001\u7F16\u8F91\u5668\u540D\u30010 \u6216 s\u3002",comment:"TTY skill \u7A7A\u56DE\u8F66"},skill_invalid:{code:"",text:"\u65E0\u6548\u9009\u62E9\u3002\u8BF7\u8F93\u5165\u5217\u8868\u4E2D\u7684\u5E8F\u53F7\u3001\u7F16\u8F91\u5668\u540D\u30010 \u6216 s\u3002",comment:"TTY skill \u65E0\u6548\u8F93\u5165"},ask:{code:"",text:"{question} ({fallback}): ",comment:"readline \u63D0\u95EE\u683C\u5F0F"},update_ask:{code:"",text:"\u68C0\u6D4B\u5230\u65B0\u7248\u672C\uFF0C\u63A8\u8350\u66F4\u65B0\uFF0C\u662F\u5426\u73B0\u5728\u66F4\u65B0\uFF1F\uFF08\u56DE\u8F66=\u662F\uFF0Cn=\u5426\uFF09",comment:"TTY \u66F4\u65B0\u786E\u8BA4"}},ok:{written:{code:"",text:"\u5DF2\u5199\u5165\u5DE5\u7A0B {dir}",comment:"\u843D\u5730\u6210\u529F"},installed:{code:"",text:"\u5DF2\u5B89\u88C5 @66rpg/cgmaker \u5E76\u6267\u884C cgmaker init\u3002",comment:"\u843D\u5730\u6210\u529F"},local_origin:{code:"",text:"\u672C\u5730 --from-dir \u7684\u6A21\u677F ID\uFF08origin.template_id\uFF09\u4E3A local\uFF0C\u4E0D\u80FD\u76F4\u63A5 publish-template \u5230\u5E73\u53F0\u3002",comment:"\u672C\u5730\u6A21\u677F\u63D0\u9192"},next:{code:"",text:"\u63A5\u7740: cd \u8BE5\u76EE\u5F55 && npm run dev",comment:"\u843D\u5730\u6210\u529F\u4E0B\u4E00\u6B65"},update_installing:{code:"",text:"\u6B63\u5728\u628A cgmaker \u76F8\u5173\u5305\u66F4\u65B0\u5230\u6700\u65B0\u2026",comment:"npm install \u524D"},update_done:{code:"",text:"\u5DF2\u66F4\u65B0\u3002\u5F53\u524D\u8FDB\u7A0B\u4ECD\u662F\u65E7\u4EE3\u7801\uFF0C\u8BF7\u91CD\u65B0\u6267\u884C\u521A\u624D\u7684\u547D\u4EE4\u3002",comment:"\u66F4\u65B0\u6210\u529F\u540E\u9000\u51FA"}}};function Te(){let e={...se};return delete e._comment,e}var Pe=Te();function o(e,t,n){let r=Pe[e]?.[t];if(!r?.text)throw new Error(`missing create message ${e}.${t}`);let s=r.text;if(n)for(let[i,a]of Object.entries(n))s=s.split(`{${i}}`).join(String(a));return s}function Oe(e){return e&&typeof e=="object"&&"code"in e&&typeof e.code=="string"?e.code:(e instanceof Error?e.message:String(e)).match(/\b(EPERM|EACCES|ENOENT|EBUSY|ENOTEMPTY|ENOTDIR|EISDIR|EINVAL|EMFILE|ENFILE)\b/)?.[1]??""}function je(e){return e?e.includes("\uFFFD")||e.includes("\\\\?\\"):!1}function C(e){switch(Oe(e)){case"EPERM":case"EACCES":return o("err","sys_denied");case"ENOENT":return o("err","sys_missing");case"EBUSY":case"ENOTEMPTY":return o("err","sys_busy");case"ENOTDIR":case"EISDIR":return o("err","sys_type");case"EINVAL":return o("err","sys_invalid");case"EMFILE":case"ENFILE":return o("err","sys_too_many");default:return o("err","sys_unknown")}}function ie(e){let t=e instanceof Error?e.message:String(e??"");return je(t)?C(e):t}function oe(){return process.platform==="win32"?"npm.cmd":"npm"}function R(e,t={}){let n=process.platform==="win32",r=De(oe(),e,{windowsHide:n,...t,shell:n});if(r.error)throw new Error(o("err","run_npm",{cmd:oe(),e:C(r.error)}));return r}import N from"node:fs";import Fe from"node:os";import A from"node:path";import Me from"node:readline";import{fileURLToPath as Le}from"node:url";var le=["@66rpg/cgmaker","@66rpg/cgmaker-create","@66rpg/cgmaker-win32-x64"],Ue=1440*60*1e3;function $e(e,t){let n=e.split(".").map(i=>Number.parseInt(i,10)||0),r=t.split(".").map(i=>Number.parseInt(i,10)||0),s=Math.max(n.length,r.length);for(let i=0;i<s;i++){let a=n[i]??0,f=r[i]??0;if(a>f)return!0;if(a<f)return!1}return!1}function V(e=Fe.homedir()){return A.join(e,".cgmaker","update-check.json")}function Ge(e=V()){try{let t=JSON.parse(N.readFileSync(e,"utf8"));return!t||typeof t.checkedAt!="number"||typeof t.latest!="object"?null:t}catch{return null}}function M(e,t=V()){N.mkdirSync(A.dirname(t),{recursive:!0}),N.writeFileSync(t,`${JSON.stringify(e,null,2)}
16
- `)}function Je(){return A.resolve(A.dirname(Le(import.meta.url)),"..")}function Ke(e,t=process.cwd()){if(e==="@66rpg/cgmaker-create")try{let n=JSON.parse(N.readFileSync(A.join(Je(),"package.json"),"utf8"));if(n.version)return n.version}catch{}try{return JSON.parse(N.readFileSync(A.join(t,"node_modules",e,"package.json"),"utf8")).version||null}catch{return null}}function ce(e,t=process.cwd(),n={}){let r=[];for(let s of le){let i=e[s];if(!i||n[s]===i)continue;let a=Ke(s,t);a&&$e(i,a)&&r.push({name:s,current:a,latest:i})}return r}function Ye(e=process.cwd()){let t={};for(let n of le)try{let r=R(["view",n,"version"],{cwd:e,encoding:"utf8",timeout:2e3}),s=(r.stdout??"").toString().trim().split(`
17
- `)[0]?.trim();r.status===0&&s&&(t[n]=s)}catch{}return t}function Be(){return process.env.CI==="true"||process.env.CGMAKER_NO_INTERACTIVE==="1"||process.env.CGMAKER_SKIP_UPDATE==="1"}function qe(){return process.platform==="win32"?["@66rpg/cgmaker-win32-x64"]:[]}function Ve(e){process.stdout.write(`${JSON.stringify({success:!1,code:10,command:"update-available",message:o("err","update_available"),data:{packages:e,apply:"npx @66rpg/cgmaker-create@latest --apply-update",skip:"npx @66rpg/cgmaker-create@latest --skip-update <\u539F\u547D\u4EE4\u4E0E\u53C2\u6570>"}},null,2)}
18
- `)}function ze(e,t){let n=Me.createInterface({input:process.stdin,output:process.stdout});return new Promise(r=>{n.question(`${e} [${t}]: `,s=>{n.close(),r(s.trim()||t)})})}async function de(e){if(Be())return"continue";let t=e.cwd??process.cwd(),n=e.now??Date.now(),r=e.ppid??process.ppid,s=e.cacheFile??V(),i=Ge(s)??{checkedAt:0,latest:{}};if(n-i.checkedAt>=Ue){let d={};try{d=e.fetch?e.fetch():Ye(t)}catch{d={}}i={...i,checkedAt:n,latest:{...i.latest,...d}},M(i,s)}if(e.apply)return ae(i.latest,t);if(e.skip){let d={...i.declined};for(let g of ce(i.latest,t))d[g.name]=g.latest;return M({...i,declined:d,promptedPpid:r},s),"continue"}let a=ce(i.latest,t,i.declined??{});if(a.length===0)return"continue";if(e.agent)return Ve(a),"agent-block";if(!e.tty||i.promptedPpid===r)return"continue";let f=a.map(d=>`${d.name} ${d.current} \u2192 ${d.latest}`).join(`
19
- `),y=await ze(`${o("prompt","update_ask")}
20
- ${f}`,"Y");if(M({...i,promptedPpid:r},s),/^(n|no|否)$/i.test(y)){let d={...i.declined};for(let g of a)d[g.name]=g.latest;return M({...i,declined:d,promptedPpid:r},s),"continue"}return ae(i.latest,t)}function ae(e,t){let n=A.join(t,"package.json");if(!N.existsSync(n))return console.error(o("err","update_use_latest")),"updated-exit";let r=[];for(let s of["@66rpg/cgmaker","@66rpg/cgmaker-create",...qe()]){let i=e[s];r.push(i?`${s}@${i}`:`${s}@latest`)}console.error(o("ok","update_installing"));try{if(R(["install","-D",...r],{cwd:t,stdio:"inherit"}).status!==0)return console.error(o("err","update_failed")),"continue"}catch{return console.error(o("err","update_failed")),"continue"}return console.error(o("ok","update_done")),"updated-exit"}var He=[{id:"workbuddy",tokens:["workbuddy"]},{id:"codebuddy",tokens:["codebuddy"]},{id:"cursor",tokens:["cursor"]},{id:"opencode",tokens:["opencode"]},{id:"claude",tokens:["claudecode","claude"]},{id:"codex",tokens:["codex"]},{id:"trae",tokens:["trae"]},{id:"kimi",tokens:["kimi"]},{id:"qwen",tokens:["qwen"]}],z=["agents","cursor","claude","codex","opencode","codebuddy","workbuddy","trae","kimi","qwen"];function We(e){let t=[" "];for(let n of e){let r="";for(let s of n.toLowerCase())s>="a"&&s<="z"||s>="0"&&s<="9"?r+=s:r?(t.push(r," "),r=""):t[t.length-1]!==" "&&t.push(" ");r&&t.push(r," ")}return t.join("")}function Xe(e){let t=[];for(let[n,r]of Object.entries(e))n&&t.push(n),typeof r=="string"&&r&&t.push(r);return t}function H(e=process.env){let t=We(Xe(e));for(let{id:n,tokens:r}of He)if(r.some(s=>t.includes(` ${s} `)))return n}function W(e,t){return!t||!e.includes(t)?[...e]:[t,...e.filter(n=>n!==t)]}function ue(e,t){let n=e.trim();if(!n)return{kind:"empty"};if(n.toLowerCase()==="s")return{kind:"skip"};if(n==="0")return{kind:"all"};if(/^\d+$/.test(n)){let s=Number(n);if(s>=1&&s<=t.length){let i=t[s-1];if(i)return{kind:"platform",id:i}}return{kind:"invalid"}}let r=n.replace(/^[.\\/]+/,"").split(/[\\/]/)[0]?.toLowerCase()??"";return t.includes(r)?{kind:"platform",id:r}:{kind:"invalid"}}import j from"node:fs";import X from"node:path";function pe(e){if(!j.existsSync(e)||!j.statSync(e).isDirectory()||j.existsSync(X.join(e,".cgmaker","origin.json")))return!1;let t=X.join(e,"package.json");if(!j.existsSync(t))return!1;try{let n=JSON.parse(j.readFileSync(t,"utf8"));return!!(n.devDependencies?.["@66rpg/cgmaker"]||n.dependencies?.["@66rpg/cgmaker"])}catch{return!1}}function fe(e){return X.join(e,"node_modules/@66rpg/cgmaker/bin/cgmaker.js")}var Z={CliCreateResult:"CliCreateResult"},Ze=new Set(["usage","need_input","update","dest_exists","from_dir_invalid","npm_install","bin_missing","init_failed","fail"]);function me(e){if(e)return Ze.has(e)?e:void 0}function Q(e){return e===0?"ok":e===10?"update":e===11?"need_input":e===12?"login_required":e===2?"usage":"fail"}import I from"node:fs";import ut from"node:os";import ye from"node:path";import U from"node:fs";import Qe from"node:os";import D from"node:path";import{fileURLToPath as et}from"node:url";var $="huanguang",ge="cgmaker_npm",_e="cgmaker_create",tt=`https://fx-it.66rpg.com:8206/sa?project=${$}`;function ee(e,t=$){try{let n=new URL(e);return n.protocol==="https:"&&n.hostname==="fx-it.66rpg.com"&&n.port==="8206"&&n.pathname==="/sa"&&n.searchParams.get("project")===t&&!n.username&&!n.password}catch{return!1}}function L(e,t){return String(e[t]??"").trim().toLowerCase()}function nt(e){let t=L(e,"CGMAKER_NO_ANALYTICS");if(t==="1"||t==="true")return!0;let n=L(e,"CGMAKER_ANALYTICS");if(n==="0"||n==="false")return!0;let r=L(e,"CI");return!!(r==="true"||r==="1"||e.NODE_TEST_CONTEXT)}function rt(){let e=D.dirname(et(import.meta.url));for(;;){if(U.existsSync(D.join(e,"package.json")))return e;let t=D.dirname(e);if(t===e)return e;e=t}}function st(){try{let e=JSON.parse(U.readFileSync(D.join(rt(),"package.json"),"utf8"));return typeof e.version=="string"?e.version:""}catch{return""}}function it(e){try{let t=D.join(e,".cgmaker","config.json");if(!U.existsSync(t))return;let n=JSON.parse(U.readFileSync(t,"utf8"));return n&&typeof n=="object"?n:void 0}catch{return}}function ot(e){let t=e?.web_config,n=typeof t?.type=="string"?t.type:"",r=typeof t?.base_cg=="string"?t.base_cg:"";return n&&n!=="1"||r.toLowerCase().includes("test")?"test":"release"}function ct(e){let t=e?.env??process.env,n=e?.homeDir??Qe.homedir(),r=e?.fileConfig??(e?.skipFile?void 0:it(n)),s=ot(r),i=r?.sensorsAnalytics,a=!0;typeof i?.enabled=="boolean"&&(a=i.enabled),nt(t)&&(a=!1);let f=tt,y=typeof i?.serverUrl=="string"?i.serverUrl.trim():"";y&&ee(y)&&(f=y);let d=typeof t.CGMAKER_SENSORS_URL=="string"?t.CGMAKER_SENSORS_URL.trim():"";d&&ee(d)&&(f=d),ee(f)||(a=!1);let g=L(t,"CGMAKER_ANALYTICS_LOG"),h=s!=="release"&&(i?.showLog===!0||g==="1"||g==="true");return{enabled:a,serverUrl:f,showLog:h,deployEnv:s,releaseId:e?.releaseId??st()}}var te;function G(){return te||(te=ct()),te}var at=/^\$?[A-Za-z][A-Za-z0-9_]{0,99}$/,lt=new Set(["access_token","token","cookie","authorization","phone","mobile","wechat","qq","content","body","draft_title","search","query","error","message","stack","order_no","password","refresh_token","nick_name","nickname","username","lumi_username","dest","dest_dir","cwd","argv","from_dir","path","filepath"]);function dt(e){if(e!=null){if(typeof e=="string")return e.slice(0,256);if(typeof e=="number")return Number.isFinite(e)?e:void 0;if(typeof e=="boolean"||e instanceof Date)return e;if(Array.isArray(e))return e.slice(0,20).map(t=>t.slice(0,256))}}function ke(e){let t={};for(let[n,r]of Object.entries(e)){if(!at.test(n)||lt.has(n.toLowerCase()))continue;let s=dt(r);s!==void 0&&(t[n]=s)}return t}var pt=100,ft=600,mt=700,gt="analytics-device-id",J=[],K=new Set,b,ne=!1;function he(e){try{return`${e}-${crypto.randomUUID()}`}catch{return`${e}-${Date.now()}-${Math.random().toString(36).slice(2,12)}`}}function Se(e=ut.homedir()){if(b)return b;let t=ye.join(e,".cgmaker"),n=ye.join(t,gt);try{if(I.existsSync(n)){let s=I.readFileSync(n,"utf8").trim();if(s)return b=s,s}let r=he("cli");return I.mkdirSync(t,{recursive:!0}),I.writeFileSync(n,`${r}
21
- `,{encoding:"utf8",flag:"wx"}),b=r,r}catch{try{if(I.existsSync(n)){let r=I.readFileSync(n,"utf8").trim();if(r)return b=r,r}}catch{}return b=he("session"),b}}function _t(){let e=Number.parseInt(process.versions.node,10);return Number.isFinite(e)?e:void 0}function kt(){let e=G();return{product:ge,app_id:_e,deploy_env:e.deployEnv,env:e.deployEnv==="release"?"production":"development",release_id:e.releaseId,surface:"cli",device_type:"desktop",device_code:Se(),event_schema_version:1,os_platform:process.platform,os_arch:process.arch,node_major:_t()}}function yt(e){K.add(e),e.finally(()=>K.delete(e))}async function ht(e,t){let n=G();if(!n.enabled)return;let r={distinct_id:Se(),time:Date.now(),type:"track",event:e,project:$,properties:{$lib:"Node",$lib_version:n.releaseId||"0",$lib_method:"code",...ke({...kt(),...t})}};n.showLog&&console.error(`[cgmaker analytics] ${e}`);let s=Buffer.from(JSON.stringify(r),"utf8").toString("base64"),i=`data=${encodeURIComponent(s)}&gzip=0`,a=await fetch(n.serverUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:i,redirect:"error",signal:AbortSignal.timeout(ft)});n.showLog&&console.error(`[cgmaker analytics] ${e} ${a.status}`)}function xe(){if(ne)return;ne=!0;let e=J.splice(0);for(let t of e)yt(ht(t.name,t.properties).catch(()=>{}));ne=!1}function Ee(e,t={}){try{if(!G().enabled)return;J.length>=pt&&J.shift(),J.push({name:e,properties:t}),xe()}catch{}}async function we(e=mt){try{if(xe(),K.size===0)return;await Promise.race([Promise.allSettled([...K]),new Promise(t=>{setTimeout(t,e).unref?.()})])}catch{}}function St(e){return!!(e&&/^[a-zA-Z0-9]+$/.test(e))}function xt(e,t={}){let n=t.outcome??Q(e),r=t.success??(e===0&&n==="ok");Ee(Z.CliCreateResult,{package:"cgmaker-create",success:r,outcome:n,reason:me(t.reason)??(n==="ok"?void 0:n),source:t.source,has_data_id:t.has_data_id,skill:t.skill,agent:!!t.agent,content_id:St(t.content_id)?t.content_id:void 0})}async function Y(e,t={}){try{t.skip||xt(e,t),await we()}catch{}process.exit(e)}function T(){return o("help","body")}function vt(){return p.resolve(p.dirname(Et(import.meta.url)),"..")}function Re(e=process.cwd()){let t=e;for(;;){let n=p.join(t,"templates"),r=p.join(t,"package.json");if(u.existsSync(n)&&u.existsSync(r))try{if(JSON.parse(u.readFileSync(r,"utf8")).workspaces?.some(a=>a.includes("templates")))return t}catch{}let s=p.dirname(t);if(s===t)return null;t=s}}function At(){return JSON.parse(u.readFileSync(p.join(vt(),"package.json"),"utf8"))}function Ne(){let e=Re();if(e){let t=p.join(e,"packages/cgmaker");if(u.existsSync(t))return`file:${t.replace(/\\/g,"/")}`}return`^${At().version}`}function bt(e){let t=e.split("@")[0]??e;return((t.includes("/")?t.split("/").pop():t)||"game").replace(/^tmpl_/,"tmpl-")}function ve(e){return/^[a-zA-Z0-9]+$/.test(e)}function Ct(e){let t=e.filter(h=>h!=="--"),n,r,s,i=!1,a=!1,f=!1,y=!1,d=!1,g=[];for(let h=0;h<t.length;h++){let c=t[h];if(c==="--from-dir"){let m=t[++h];if(!m||m.startsWith("-"))throw new Error(o("err","from_dir_need_path"));n=m;continue}if(c.startsWith("--from-dir=")){if(n=c.slice(11),!n)throw new Error(o("err","from_dir_need_path"));continue}if(c==="--data-id"||c==="--data-ver-id"){let m=t[++h];if(!m||m.startsWith("-"))throw new Error(o("err","data_id_need"));r=m;continue}if(c.startsWith("--data-id=")){if(r=c.slice(10),!r)throw new Error(o("err","data_id_need"));continue}if(c.startsWith("--data-ver-id=")){if(r=c.slice(14),!r)throw new Error(o("err","data_id_need"));continue}if(c==="--skill-all"){i=!0;continue}if(c==="--skill-skip"||c==="--skip-skill"){a=!0;continue}if(c==="--agent"){f=!0;continue}if(c==="--apply-update"){y=!0;continue}if(c==="--skip-update"){d=!0;continue}if(c!=="--json"){if(c==="--skill-platform"){let m=t[++h];if(!m||m.startsWith("-"))throw new Error(o("err","skill_platform_need"));s=m;continue}if(c.startsWith("--skill-platform=")){if(s=c.slice(17),!s)throw new Error(o("err","skill_platform_need"));continue}g.push(c)}}if(i&&s)throw new Error(o("err","skill_conflict"));if(a&&(i||s))throw new Error(o("err","skill_conflict"));return{rest:g,fromDir:n,dataId:r,skillPlatform:s,skillAll:i,skillSkip:a,agent:f,applyUpdate:y,skipUpdateFlag:d}}function Rt(e,t){process.stdout.write(`${JSON.stringify({success:!1,code:11,command:"need-input",message:e,data:{questions:t}},null,2)}
22
- `)}function Nt(e){return process.env.CI==="true"||process.env.CGMAKER_NO_INTERACTIVE==="1"?!1:e||process.env.CGMAKER_AGENT==="1"}function Ae(e,t){try{if(!u.existsSync(e))return;if(!t)u.rmSync(e,{recursive:!0,force:!0});else for(let n of u.readdirSync(e))u.rmSync(p.join(e,n),{recursive:!0,force:!0});console.error(o("err","cleared",{dir:e}))}catch(n){console.error(o("err","clear_failed",{dir:e,e:C(n)}))}}function It(e,t){let n=Ce.createInterface({input:process.stdin,output:process.stdout});return new Promise(r=>{n.question(o("prompt","ask",{question:e,fallback:t}),s=>{n.close(),r(s.trim()||t)})})}function Tt(e,t){return new Promise(n=>{t.question(e,r=>n(r))})}async function Pt(){let e=H(),t=W([...z],e),n=e&&t.includes(e)?e:void 0,r=o("prompt","skill_current_suffix");console.log(n?o("prompt","skill_detected",{id:n}):o("prompt","skill"));for(let i=0;i<t.length;i++){let a=t[i];console.log(a===n?o("prompt","skill_item_current",{n:String(i+1),id:a,mark:r}):o("prompt","skill_item",{n:String(i+1),id:a}))}console.log(o("prompt","skill_all")),console.log(o("prompt","skill_skip"));let s=Ce.createInterface({input:process.stdin,output:process.stdout});try{for(;;){let i=ue(await Tt(o("prompt","skill_ask"),s),t);if(i.kind==="empty"){console.log(o("prompt","skill_empty"));continue}if(i.kind==="invalid"){console.log(o("prompt","skill_invalid"));continue}return i.kind==="skip"?"skip":i.kind==="all"?"all":i.id}}finally{s.close()}}function B(){return!!(process.stdin.isTTY&&process.stdout.isTTY)}function Ot(e,t){u.mkdirSync(e,{recursive:!0});let n={name:t,private:!0,type:"module",engines:{node:">=20"},devDependencies:{"@66rpg/cgmaker":Ne()}};u.writeFileSync(p.join(e,"package.json"),`${JSON.stringify(n,null,2)}
23
- `),u.writeFileSync(p.join(e,".gitignore"),`node_modules/
19
+ `,comment:"\u6574\u6BB5 --help"},contact:{code:"",text:"\u9700\u8981\u8054\u7CFB\u5BA2\u670D{contact}",comment:"\u5E2E\u52A9\u9875\u5E95\u90E8\uFF1A\u65E0\u72EC\u7ACB\u8054\u7CFB\u6E20\u9053\u9875\uFF0C\u5F15\u5BFC\u8054\u7CFB\u5BA2\u670D"}},err:{from_dir_need_path:{code:"",text:"--from-dir \u9700\u8981\u6A21\u677F\u76EE\u5F55\u8DEF\u5F84",comment:"\u53C2\u6570\u9519\u8BEF"},data_id_removed:{code:"",text:"\u8BF7\u7528 --with-assets <\u6570\u636E\u5305ID>\uFF0C\u5DF2\u4E0D\u518D\u652F\u6301 --data-id",comment:"\u53C2\u6570\u9519\u8BEF"},with_assets_need:{code:"",text:"--with-assets \u9700\u8981\u8D44\u6E90\u5305 ID",comment:"\u53C2\u6570\u9519\u8BEF"},skill_platform_need:{code:"",text:"--skill-platform \u9700\u8981\u7F16\u8F91\u5668\u540D\uFF08\u5982 cursor\uFF09",comment:"\u53C2\u6570\u9519\u8BEF"},skill_conflict:{code:"",text:"--skill-platform \u4E0E --skill-all \u4E0D\u80FD\u540C\u65F6\u4F7F\u7528",comment:"\u53C2\u6570\u9519\u8BEF"},cleared:{code:"",text:"\u5DF2\u6E05\u7A7A {dir}",comment:"\u5931\u8D25\u56DE\u6EDA"},clear_failed:{code:"",text:"\u65E0\u6CD5\u6E05\u7A7A {dir}\uFF1A{e}",comment:"\u5931\u8D25\u56DE\u6EDA\uFF1B{e} \u4E3A\u4E2D\u6587\u539F\u56E0\uFF0C\u4E0D\u8981\u586B\u7CFB\u7EDF Error.message"},sys_denied:{code:"",text:"\u6CA1\u6709\u6743\u9650\uFF0C\u6216\u6587\u4EF6\u88AB\u5360\u7528",comment:"EPERM / EACCES\uFF0C\u4E0D\u6253\u5370\u7CFB\u7EDF\u8DEF\u5F84"},sys_missing:{code:"",text:"\u8DEF\u5F84\u4E0D\u5B58\u5728",comment:"ENOENT"},sys_busy:{code:"",text:"\u76EE\u5F55\u975E\u7A7A\u6216\u6587\u4EF6\u6B63\u5728\u4F7F\u7528",comment:"EBUSY / ENOTEMPTY"},sys_type:{code:"",text:"\u8DEF\u5F84\u7C7B\u578B\u4E0D\u6B63\u786E",comment:"ENOTDIR / EISDIR"},sys_invalid:{code:"",text:"\u8DEF\u5F84\u65E0\u6548",comment:"EINVAL"},sys_too_many:{code:"",text:"\u6253\u5F00\u7684\u6587\u4EF6\u8FC7\u591A",comment:"EMFILE / ENFILE"},sys_unknown:{code:"",text:"\u7CFB\u7EDF\u62D2\u7EDD\u4E86\u8FD9\u6B21\u64CD\u4F5C",comment:"\u5176\u5B83\u7CFB\u7EDF\u9519\u8BEF\uFF0C\u4E0D\u6253\u5370 Error.message \u4EE5\u514D\u4E71\u7801"},owner_slug:{code:"",text:"\u6A21\u677F\u5F15\u7528\u65E0\u6548\u3002\u8BF7\u7528 \u7528\u6237\u540D/slug\uFF0C\u6216\u5E73\u53F0\u6A21\u677F id / \u7248\u672C id",comment:"\u53C2\u6570\u9519\u8BEF"},data_id_from_dir:{code:"",text:"--with-assets \u4E0D\u80FD\u4E0E --from-dir \u540C\u65F6\u4F7F\u7528",comment:"\u53C2\u6570\u9519\u8BEF"},invalid_data_id:{code:"",text:"\u65E0\u6548\u7684\u8D44\u6E90\u5305 ID\uFF08data_id\uFF09: {id}",comment:"\u53C2\u6570\u9519\u8BEF"},from_dir_not_template:{code:"",text:"--from-dir \u4E0D\u662F\u6A21\u677F\u76EE\u5F55: {dir}",comment:"\u53C2\u6570\u9519\u8BEF"},need_dest_no_tty:{code:"",text:"\u8BF7\u6307\u5B9A\u8981\u628A\u5DE5\u7A0B\u5EFA\u5728\u54EA\u4E2A\u6587\u4EF6\u5939\u3002",comment:"\u53C2\u6570\u9519\u8BEF"},dest_exists:{code:"",text:"\u8FD9\u4E2A\u6587\u4EF6\u5939\u5DF2\u7ECF\u6709\u4E1C\u897F\u4E86\uFF0C\u6362\u4E2A\u540D\u5B57\u6216\u8DEF\u5F84\u518D\u521B\u5EFA\uFF1A{dir}",comment:"\u53C2\u6570\u9519\u8BEF"},npm_install:{code:"",text:"npm install \u5931\u8D25",comment:"\u843D\u5730\u5931\u8D25"},bin_missing:{code:"",text:"\u627E\u4E0D\u5230 {js}",comment:"\u843D\u5730\u5931\u8D25"},run_js:{code:"",text:"\u65E0\u6CD5\u8FD0\u884C {js}: {e}",comment:"\u843D\u5730\u5931\u8D25"},init_failed:{code:"",text:"cgmaker init \u5931\u8D25",comment:"\u843D\u5730\u5931\u8D25"},npm_install_again:{code:"",text:"init \u540E npm install \u5931\u8D25",comment:"\u843D\u5730\u5931\u8D25"},run_npm:{code:"",text:"\u65E0\u6CD5\u8FD0\u884C {cmd}: {e}",comment:"npm \u542F\u52A8\u5931\u8D25"},need_input:{code:"11",text:"\u7F3A\u5C11\u9700\u8981\u5411\u7528\u6237\u786E\u8BA4\u7684\u53C2\u6570\u3002\u8BF7\u8BE2\u95EE\u7528\u6237\u540E\uFF0C\u628A\u7B54\u6848\u53D8\u6210\u547D\u4EE4\u884C\u65D7\u6807\u518D\u91CD\u8DD1\u3002",comment:"Agent \u9000\u51FA\u7801 11"},update_available:{code:"10",text:"\u68C0\u6D4B\u5230 cgmaker \u65B0\u7248\u672C\uFF0C\u63A8\u8350\u66F4\u65B0\u3002\u8BF7\u8BE2\u95EE\u7528\u6237\u662F\u5426\u73B0\u5728\u66F4\u65B0\u3002",comment:"Agent \u9000\u51FA\u7801 10"},update_use_latest:{code:"",text:"\u5F53\u524D\u76EE\u5F55\u6CA1\u6709 package.json\uFF0C\u65E0\u6CD5\u5199\u5165\u5DE5\u7A0B\u4F9D\u8D56\u3002\u8BF7\u6539\u7528 npx @66rpg/cgmaker-create@latest \u518D\u6267\u884C\u3002",comment:"create --apply-update \u65E0\u5DE5\u7A0B"},update_failed:{code:"",text:"\u66F4\u65B0\u5931\u8D25\uFF0C\u5DF2\u8DF3\u8FC7\uFF0C\u7EE7\u7EED\u6267\u884C\u539F\u547D\u4EE4\u3002",comment:"npm install \u5931\u8D25"}},prompt:{dest_dir:{code:"",text:"\u5DE5\u7A0B\u8981\u5EFA\u5728\u54EA\u4E2A\u6587\u4EF6\u5939\uFF1F\u8BF7\u8BF4\u4E00\u4E2A\u65B0\u6587\u4EF6\u5939\u7684\u540D\u5B57\uFF0C\u6216\u5B8C\u6574\u8DEF\u5F84\u3002\u4E0D\u8981\u7528\u6A21\u677F id \u5F53\u6587\u4EF6\u5939\u540D\uFF0C\u9664\u975E\u7528\u6237\u81EA\u5DF1\u8FD9\u4E48\u8BF4\u3002",comment:"Agent \u8BE2\u95EE\u843D\u5730\u76EE\u5F55"},dest_dir_ask:{code:"",text:"\u5DE5\u7A0B\u8981\u5EFA\u5728\u54EA\u4E2A\u6587\u4EF6\u5939\uFF1F\u8BF7\u8F93\u5165\u65B0\u6587\u4EF6\u5939\u7684\u540D\u5B57\u6216\u5B8C\u6574\u8DEF\u5F84\uFF08\u4F8B\u5982 {suggested}\uFF09\u3002\u76F4\u63A5\u56DE\u8F66\u65E0\u6548\uFF1A",comment:"TTY \u8BE2\u95EE\u843D\u5730\u76EE\u5F55"},dest_empty:{code:"",text:"\u5FC5\u987B\u6307\u5B9A\u6587\u4EF6\u5939\u3002\u8BF7\u8F93\u5165\u540D\u5B57\u6216\u5B8C\u6574\u8DEF\u5F84\uFF0C\u4E0D\u8981\u76F4\u63A5\u56DE\u8F66\u3002",comment:"TTY \u76EE\u5F55\u7A7A\u56DE\u8F66"},dest_invalid:{code:"",text:"\u8FD9\u4E2A\u4E0D\u50CF\u6587\u4EF6\u5939\u540D\u5B57\u3002\u8BF7\u8F93\u5165\u65B0\u6587\u4EF6\u5939\u7684\u540D\u5B57\uFF0C\u6216\u5B8C\u6574\u8DEF\u5F84\u3002",comment:"TTY \u76EE\u5F55\u65E0\u6548"},skill:{code:"",text:"\u8981\u628A AI \u8BF4\u660E\u5B89\u88C5\u5230\u54EA\u4E2A\u7F16\u8F91\u5668\uFF1F",comment:"Agent / TTY \u9009\u5E73\u53F0"},skill_detected:{code:"",text:"\u68C0\u6D4B\u5230\u5F53\u524D\u4F7F\u7528\u7684\u7F16\u8F91\u5668\u662F {id}\u3002\u8981\u628A AI \u8BF4\u660E\u5B89\u88C5\u5230\u54EA\u4E2A\u7F16\u8F91\u5668\uFF1F",comment:"Agent \u9009\u5E73\u53F0\uFF0C\u5DF2\u63A2\u6D4B\u5230\u5BBF\u4E3B"},skill_current_suffix:{code:"",text:"\uFF08\u5F53\u524D\uFF09",comment:"\u63A2\u6D4B\u5230\u7684\u7F16\u8F91\u5668\u9009\u9879\u540E\u7F00"},skill_item:{code:"",text:" {n}) {id}",comment:"TTY skill \u9009\u9879"},skill_item_current:{code:"",text:" {n}) {id}{mark}",comment:"TTY skill \u5F53\u524D\u7F16\u8F91\u5668\u9009\u9879"},skill_all:{code:"",text:" 0) \u5168\u90E8\u7F16\u8F91\u5668",comment:"TTY skill \u5168\u90E8"},skill_skip:{code:"",text:" s) \u8DF3\u8FC7\uFF08\u4E4B\u540E\u53EF\u5728\u5DE5\u7A0B\u76EE\u5F55\u6267\u884C cgmaker skill \u518D\u5B89\u88C5\uFF09",comment:"TTY skill \u8DF3\u8FC7"},skill_ask:{code:"",text:"\u8BF7\u8F93\u5165\u5E8F\u53F7\u3001\u7F16\u8F91\u5668\u540D\u30010\uFF08\u5168\u90E8\uFF09\u6216 s\uFF08\u8DF3\u8FC7\uFF09\u3002\u76F4\u63A5\u56DE\u8F66\u65E0\u6548\uFF1A",comment:"TTY skill \u8F93\u5165\u63D0\u793A"},skill_empty:{code:"",text:"\u56DE\u8F66\u4E0D\u4F1A\u8DF3\u8FC7\u3002\u8BF7\u8F93\u5165\u5E8F\u53F7\u3001\u7F16\u8F91\u5668\u540D\u30010 \u6216 s\u3002",comment:"TTY skill \u7A7A\u56DE\u8F66"},skill_invalid:{code:"",text:"\u65E0\u6548\u9009\u62E9\u3002\u8BF7\u8F93\u5165\u5217\u8868\u4E2D\u7684\u5E8F\u53F7\u3001\u7F16\u8F91\u5668\u540D\u30010 \u6216 s\u3002",comment:"TTY skill \u65E0\u6548\u8F93\u5165"},ask:{code:"",text:"{question} ({fallback}): ",comment:"readline \u63D0\u95EE\u683C\u5F0F"},update_ask:{code:"",text:"\u68C0\u6D4B\u5230\u65B0\u7248\u672C\uFF0C\u63A8\u8350\u66F4\u65B0\uFF0C\u662F\u5426\u73B0\u5728\u66F4\u65B0\uFF1F\uFF08\u56DE\u8F66=\u662F\uFF0Cn=\u5426\uFF09",comment:"TTY \u66F4\u65B0\u786E\u8BA4"}},ok:{written:{code:"",text:"\u5DF2\u5199\u5165\u5DE5\u7A0B {dir}",comment:"\u843D\u5730\u6210\u529F"},installed:{code:"",text:"\u5DF2\u5B89\u88C5 @66rpg/cgmaker \u5E76\u6267\u884C cgmaker init\u3002",comment:"\u843D\u5730\u6210\u529F"},local_origin:{code:"",text:"\u672C\u5730 --from-dir \u7684\u6A21\u677F ID\uFF08origin.template_id\uFF09\u4E3A local\uFF0C\u4E0D\u80FD\u76F4\u63A5 publish-template \u5230\u5E73\u53F0\u3002",comment:"\u672C\u5730\u6A21\u677F\u63D0\u9192"},next:{code:"",text:"\u63A5\u7740: cd \u8BE5\u76EE\u5F55 && npm run dev",comment:"\u843D\u5730\u6210\u529F\u4E0B\u4E00\u6B65"},update_installing:{code:"",text:"\u6B63\u5728\u628A cgmaker \u76F8\u5173\u5305\u66F4\u65B0\u5230\u6700\u65B0\u2026",comment:"npm install \u524D"},update_done:{code:"",text:"\u5DF2\u66F4\u65B0\u3002\u5F53\u524D\u8FDB\u7A0B\u4ECD\u662F\u65E7\u4EE3\u7801\uFF0C\u8BF7\u91CD\u65B0\u6267\u884C\u521A\u624D\u7684\u547D\u4EE4\u3002",comment:"\u66F4\u65B0\u6210\u529F\u540E\u9000\u51FA"}}};function mt(){let e={...Ae};return delete e._comment,e}var gt=mt();function o(e,t,n){let r=gt[e]?.[t];if(!r?.text)throw new Error(`missing create message ${e}.${t}`);let i=r.text;if(n)for(let[s,c]of Object.entries(n))i=i.split(`{${s}}`).join(String(c));return i}function kt(e){return e&&typeof e=="object"&&"code"in e&&typeof e.code=="string"?e.code:(e instanceof Error?e.message:String(e)).match(/\b(EPERM|EACCES|ENOENT|EBUSY|ENOTEMPTY|ENOTDIR|EISDIR|EINVAL|EMFILE|ENFILE)\b/)?.[1]??""}function _t(e){return e?e.includes("\uFFFD")||e.includes("\\\\?\\"):!1}function P(e){switch(kt(e)){case"EPERM":case"EACCES":return o("err","sys_denied");case"ENOENT":return o("err","sys_missing");case"EBUSY":case"ENOTEMPTY":return o("err","sys_busy");case"ENOTDIR":case"EISDIR":return o("err","sys_type");case"EINVAL":return o("err","sys_invalid");case"EMFILE":case"ENFILE":return o("err","sys_too_many");default:return o("err","sys_unknown")}}function be(e){let t=e instanceof Error?e.message:String(e??"");return _t(t)?P(e):t}function ve(){return process.platform==="win32"?"npm.cmd":"npm"}function j(e,t={}){let n=process.platform==="win32",r=yt(ve(),e,{windowsHide:n,...t,shell:n});if(r.error)throw new Error(o("err","run_npm",{cmd:ve(),e:P(r.error)}));return r}import Y from"node:fs";import St from"node:os";import U from"node:path";import{fileURLToPath as ht}from"node:url";var J="huanguang",Re="cgmaker_npm",Te="cgmaker_create",xt=`https://fx-it.66rpg.com:8206/sa?project=${J}`;function Z(e,t=J){try{let n=new URL(e);return n.protocol==="https:"&&n.hostname==="fx-it.66rpg.com"&&n.port==="8206"&&n.pathname==="/sa"&&n.searchParams.get("project")===t&&!n.username&&!n.password}catch{return!1}}function B(e,t){return String(e[t]??"").trim().toLowerCase()}function wt(e){let t=B(e,"CGMAKER_NO_ANALYTICS");if(t==="1"||t==="true")return!0;let n=B(e,"CGMAKER_ANALYTICS");if(n==="0"||n==="false")return!0;let r=B(e,"CI");return!!(r==="true"||r==="1"||e.NODE_TEST_CONTEXT)}function Et(){let e=U.dirname(ht(import.meta.url));for(;;){if(Y.existsSync(U.join(e,"package.json")))return e;let t=U.dirname(e);if(t===e)return e;e=t}}function Ct(){try{let e=JSON.parse(Y.readFileSync(U.join(Et(),"package.json"),"utf8"));return typeof e.version=="string"?e.version:""}catch{return""}}function At(e){try{let t=U.join(e,".cgmaker","config.json");if(!Y.existsSync(t))return;let n=JSON.parse(Y.readFileSync(t,"utf8"));return n&&typeof n=="object"?n:void 0}catch{return}}function bt(e){let t=e?.web_config,n=typeof t?.type=="string"?t.type:"",r=typeof t?.base_cg=="string"?t.base_cg:"";return n&&n!=="1"||r.toLowerCase().includes("test")?"test":"release"}function vt(e){let t=e?.env??process.env,n=e?.homeDir??St.homedir(),r=e?.fileConfig??(e?.skipFile?void 0:At(n)),i=bt(r),s=r?.sensorsAnalytics,c=!0;typeof s?.enabled=="boolean"&&(c=s.enabled),wt(t)&&(c=!1);let u=xt,y=typeof s?.serverUrl=="string"?s.serverUrl.trim():"";y&&Z(y)&&(u=y);let p=typeof t.CGMAKER_SENSORS_URL=="string"?t.CGMAKER_SENSORS_URL.trim():"";p&&Z(p)&&(u=p),Z(u)||(c=!1);let d=B(t,"CGMAKER_ANALYTICS_LOG"),a=i!=="release"&&(s?.showLog===!0||d==="1"||d==="true");return{enabled:c,serverUrl:u,showLog:a,deployEnv:i,releaseId:e?.releaseId??Ct()}}var ee;function R(){return ee||(ee=vt()),ee}var Rt="https://test-cg-maker.66rpg.com/common/public-info/test.json",Tt="https://cg-maker.66rpg.com/common/public-info/release.json",It="https://test-lumi.66rpg.com",Nt="https://lumi.66rpg.com",Pt=5e3,M,te;function jt(e=R().deployEnv){return e==="test"?Rt:Tt}function Ot(e=R().deployEnv){return`${e==="test"?It:Nt}/`}var Ne=new WeakMap,Ft=new Set(["template","templates","works","edit-works","edit-template","edit-game","projects","edit-projects","edit-project"]),Dt=new Set(["version","environment","updatedat","updated_at","status","id","description","effectiveat","expireat"]);function Pe(e){let t=e.trim().toLowerCase();return t==="email"||t==="mail"||t==="e-mail"||t==="\u90AE\u7BB1"||t==="\u516C\u5F00\u90AE\u7BB1"?"email":t==="qq"||t==="qq\u53F7"||t==="qq_number"||t==="qqnumber"?"qq":t}function ie(e,t){return e==="email"?"\u90AE\u7BB1":e==="qq"?"QQ":t.trim()||e}function Lt(e){return!!e&&!Ft.has(e)&&!Dt.has(e)}function se(e,t){!t.value||!Lt(t.key)||e.some(n=>n.key===t.key)||e.push(t)}function Ut(e){let t=[];for(let[n,r]of Object.entries(e))se(t,{key:n,label:ie(n,n),value:r.trim()});return t}function Mt(e){let t=n=>n==="email"?0:n==="qq"?1:2;return[...e].sort((n,r)=>t(n.key)-t(r.key))}function $t(e){let t=Mt(e).map(n=>`${n.label.trim()} ${n.value.trim()}`.trim()).filter(Boolean);return t.length?`\uFF08${t.join("\uFF0C")}\uFF09`:""}function Gt(e){let t=e.trim().replace(/^\uFEFF/,"").trim();if(!t||t.startsWith("<"))return ne({},[]);let n=t;for(let s=0;s<3&&typeof n=="string";s+=1)try{n=JSON.parse(n.trim())}catch{return ne({},[])}let r=[],i={};return je(n,i,r),ne(i,r)}function ne(e,t){return Ne.set(e,t),e}function je(e,t,n){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let i of e)Ie(t,n,i);return}let r=e;if(Array.isArray(r.items))for(let i of r.items)Ie(t,n,i);for(let i of["data","list","result","content","payload"]){let s=r[i];s&&typeof s=="object"&&je(s,t,n)}for(let[i,s]of Object.entries(r)){if(i==="items"||i==="data"||i==="list"||i==="result"||i==="content"||i==="payload")continue;let c=re(s);if(!c)continue;let u=Pe(i);t[u]||=c,se(n,{key:u,label:ie(u,i),value:c})}}function Ie(e,t,n){if(!n||typeof n!="object"||Array.isArray(n))return;let r=n,i=String(r.keyName??r.key_name??""),s=Pe(i);if(!s)return;let c=re(r.keyValue??r.key_value??r[s]);if(!c)return;e[s]||=c;let u=re(r.name)||ie(s,i);se(t,{key:s,label:u,value:c})}function re(e){return typeof e=="string"?e.trim():typeof e=="number"&&Number.isFinite(e)?String(e):""}function qt(e=M??{}){return $t(Ne.get(e)??Ut(e))}function Oe(e,t){return e.split("{contact}").join(qt(t??M??{}))}async function oe(){if(M===void 0){if(process.env.NODE_TEST_CONTEXT){M={};return}te||(te=Kt()),M=await te}}async function Kt(){let e=new AbortController,t=setTimeout(()=>e.abort(),Pt);try{let n=await fetch(jt(),{signal:e.signal,headers:{Accept:"application/json,text/plain,*/*","User-Agent":"cgmaker",Referer:Ot()}});return n.ok?Gt(await n.text()):{}}catch{return{}}finally{clearTimeout(t)}}import O from"node:fs";import Bt from"node:os";import T from"node:path";import Yt from"node:readline";import{fileURLToPath as Jt}from"node:url";var Le=["@66rpg/cgmaker","@66rpg/cgmaker-create","@66rpg/cgmaker-win32-x64"],Vt=1440*60*1e3;function Wt(e,t){let n=e.split(".").map(s=>Number.parseInt(s,10)||0),r=t.split(".").map(s=>Number.parseInt(s,10)||0),i=Math.max(n.length,r.length);for(let s=0;s<i;s++){let c=n[s]??0,u=r[s]??0;if(c>u)return!0;if(c<u)return!1}return!1}function ce(e=Bt.homedir()){return T.join(e,".cgmaker","update-check.json")}function Ht(e=ce()){try{let t=JSON.parse(O.readFileSync(e,"utf8"));return!t||typeof t.checkedAt!="number"||typeof t.latest!="object"?null:t}catch{return null}}function V(e,t=ce()){O.mkdirSync(T.dirname(t),{recursive:!0}),O.writeFileSync(t,`${JSON.stringify(e,null,2)}
20
+ `)}function zt(){return T.resolve(T.dirname(Jt(import.meta.url)),"..")}function Xt(e,t=process.cwd()){if(e==="@66rpg/cgmaker-create")try{let n=JSON.parse(O.readFileSync(T.join(zt(),"package.json"),"utf8"));if(n.version)return n.version}catch{}try{return JSON.parse(O.readFileSync(T.join(t,"node_modules",e,"package.json"),"utf8")).version||null}catch{return null}}function Fe(e,t=process.cwd(),n={}){let r=[];for(let i of Le){let s=e[i];if(!s||n[i]===s)continue;let c=Xt(i,t);c&&Wt(s,c)&&r.push({name:i,current:c,latest:s})}return r}function Qt(e=process.cwd()){let t={};for(let n of Le)try{let r=j(["view",n,"version"],{cwd:e,encoding:"utf8",timeout:2e3}),i=(r.stdout??"").toString().trim().split(`
21
+ `)[0]?.trim();r.status===0&&i&&(t[n]=i)}catch{}return t}function Zt(){return process.env.CI==="true"||process.env.CGMAKER_NO_INTERACTIVE==="1"||process.env.CGMAKER_SKIP_UPDATE==="1"}function en(){return process.platform==="win32"?["@66rpg/cgmaker-win32-x64"]:[]}function tn(e){process.stdout.write(`${JSON.stringify({success:!1,code:10,command:"update-available",message:o("err","update_available"),data:{packages:e,apply:"npx @66rpg/cgmaker-create@latest --apply-update",skip:"npx @66rpg/cgmaker-create@latest --skip-update <\u539F\u547D\u4EE4\u4E0E\u53C2\u6570>"}},null,2)}
22
+ `)}function nn(e,t){let n=Yt.createInterface({input:process.stdin,output:process.stdout});return new Promise(r=>{n.question(`${e} [${t}]: `,i=>{n.close(),r(i.trim()||t)})})}async function Ue(e){if(Zt())return"continue";let t=e.cwd??process.cwd(),n=e.now??Date.now(),r=e.ppid??process.ppid,i=e.cacheFile??ce(),s=Ht(i)??{checkedAt:0,latest:{}};if(n-s.checkedAt>=Vt){let p={};try{p=e.fetch?e.fetch():Qt(t)}catch{p={}}s={...s,checkedAt:n,latest:{...s.latest,...p}},V(s,i)}if(e.apply)return De(s.latest,t);if(e.skip){let p={...s.declined};for(let d of Fe(s.latest,t))p[d.name]=d.latest;return V({...s,declined:p,promptedPpid:r},i),"continue"}let c=Fe(s.latest,t,s.declined??{});if(c.length===0)return"continue";if(e.agent)return tn(c),"agent-block";if(!e.tty||s.promptedPpid===r)return"continue";let u=c.map(p=>`${p.name} ${p.current} \u2192 ${p.latest}`).join(`
23
+ `),y=await nn(`${o("prompt","update_ask")}
24
+ ${u}`,"Y");if(V({...s,promptedPpid:r},i),/^(n|no|否)$/i.test(y)){let p={...s.declined};for(let d of c)p[d.name]=d.latest;return V({...s,declined:p,promptedPpid:r},i),"continue"}return De(s.latest,t)}function De(e,t){let n=T.join(t,"package.json");if(!O.existsSync(n))return console.error(o("err","update_use_latest")),"updated-exit";let r=[];for(let i of["@66rpg/cgmaker","@66rpg/cgmaker-create",...en()]){let s=e[i];r.push(s?`${i}@${s}`:`${i}@latest`)}console.error(o("ok","update_installing"));try{if(j(["install","-D",...r],{cwd:t,stdio:"inherit"}).status!==0)return console.error(o("err","update_failed")),"continue"}catch{return console.error(o("err","update_failed")),"continue"}return console.error(o("ok","update_done")),"updated-exit"}var rn=[{id:"workbuddy",tokens:["workbuddy"]},{id:"codebuddy",tokens:["codebuddy"]},{id:"cursor",tokens:["cursor"]},{id:"opencode",tokens:["opencode"]},{id:"claude",tokens:["claudecode","claude"]},{id:"codex",tokens:["codex"]},{id:"trae",tokens:["trae"]},{id:"kimi",tokens:["kimi"]},{id:"qwen",tokens:["qwen"]}],ae=["agents","cursor","claude","codex","opencode","codebuddy","workbuddy","trae","kimi","qwen"];function sn(e){let t=[" "];for(let n of e){let r="";for(let i of n.toLowerCase())i>="a"&&i<="z"||i>="0"&&i<="9"?r+=i:r?(t.push(r," "),r=""):t[t.length-1]!==" "&&t.push(" ");r&&t.push(r," ")}return t.join("")}function on(e){let t=[];for(let[n,r]of Object.entries(e))n&&t.push(n),typeof r=="string"&&r&&t.push(r);return t}function W(e=process.env){let t=sn(on(e));for(let{id:n,tokens:r}of rn)if(r.some(i=>t.includes(` ${i} `)))return n}function le(e,t){return!t||!e.includes(t)?[...e]:[t,...e.filter(n=>n!==t)]}function Me(e,t){let n=e.trim();if(!n)return{kind:"empty"};if(n.toLowerCase()==="s")return{kind:"skip"};if(n==="0")return{kind:"all"};if(/^\d+$/.test(n)){let i=Number(n);if(i>=1&&i<=t.length){let s=t[i-1];if(s)return{kind:"platform",id:s}}return{kind:"invalid"}}let r=n.replace(/^[.\\/]+/,"").split(/[\\/]/)[0]?.toLowerCase()??"";return t.includes(r)?{kind:"platform",id:r}:{kind:"invalid"}}import $ from"node:fs";import ue from"node:path";function de(e){if(!$.existsSync(e)||!$.statSync(e).isDirectory()||$.existsSync(ue.join(e,".cgmaker","origin.json")))return!1;let t=ue.join(e,"package.json");if(!$.existsSync(t))return!1;try{let n=JSON.parse($.readFileSync(t,"utf8"));return!!(n.devDependencies?.["@66rpg/cgmaker"]||n.dependencies?.["@66rpg/cgmaker"])}catch{return!1}}function $e(e){return ue.join(e,"node_modules/@66rpg/cgmaker/bin/cgmaker.js")}function Ge(e){let t=e.trim();return!(!t||t.startsWith("-"))}import G from"node:fs";import w from"node:path";import{fileURLToPath as cn}from"node:url";var pe="cgmaker-create";function fe(){return w.resolve(w.dirname(cn(import.meta.url)),"..")}function an(e=fe()){return w.join(e,"skill",pe)}function ln(e){return(e.replace(/\\/g,"/").split("/").filter(Boolean)[0]??"").replace(/^\./,"").toLowerCase()}function un(e=fe()){let t=JSON.parse(G.readFileSync(w.join(e,"skill-targets.json"),"utf8"));return(Array.isArray(t.projectSkillDirs)?t.projectSkillDirs:[]).filter(r=>typeof r=="string"&&r.trim().length>0).map(r=>r.trim()).filter(r=>!w.isAbsolute(r)&&!r.split(/[\\/]/).includes(".."))}function dn(e,t){if("all"in t)return[...e];let n=t.platform.trim().replace(/^[.\\/]+/,"").split(/[\\/]/)[0]?.toLowerCase()??"";return e.filter(r=>ln(r)===n)}function qe(e,t){G.mkdirSync(t,{recursive:!0});for(let n of G.readdirSync(e,{withFileTypes:!0})){let r=w.join(e,n.name),i=w.join(t,n.name);n.isDirectory()?qe(r,i):G.copyFileSync(r,i)}}function Ke(e,t,n=fe()){let r=an(n);if(!G.existsSync(w.join(r,"SKILL.md")))return[];let i=dn(un(n),t),s=[];for(let c of i)qe(r,w.join(e,c,pe)),s.push(`${c.replace(/\\/g,"/")}/${pe}`);return s}function me(e,t,n){let r=e[t+1];if(!r||r.startsWith("-"))throw new Error(o("err",n));return{value:r,next:t+1}}function ge(e,t,n){let r=e.slice(t.length);if(!r)throw new Error(o("err",n));return r}function Be(e){let t=e.filter(d=>d!=="--"),n,r,i,s=!1,c=!1,u=!1,y=!1,p=[];for(let d=0;d<t.length;d++){let a=t[d];if(a==="--from-dir"){let m=me(t,d,"from_dir_need_path");n=m.value,d=m.next;continue}if(a.startsWith("--from-dir=")){n=ge(a,"--from-dir=","from_dir_need_path");continue}if(a==="--with-assets"){let m=me(t,d,"with_assets_need");r=m.value,d=m.next;continue}if(a.startsWith("--with-assets=")){r=ge(a,"--with-assets=","with_assets_need");continue}if(a==="--data-id"||a==="--data-ver-id"||a.startsWith("--data-id=")||a.startsWith("--data-ver-id="))throw new Error(o("err","data_id_removed"));if(a==="--skill-all"){s=!0;continue}if(a==="--skill-skip"||a==="--skip-skill"){c=!0;continue}if(!(a==="--agent"||a==="--json")){if(a==="--apply-update"){u=!0;continue}if(a==="--skip-update"){y=!0;continue}if(a==="--skill-platform"){let m=me(t,d,"skill_platform_need");i=m.value,d=m.next;continue}if(a.startsWith("--skill-platform=")){i=ge(a,"--skill-platform=","skill_platform_need");continue}p.push(a)}}if(s&&i)throw new Error(o("err","skill_conflict"));if(c&&(s||i))throw new Error(o("err","skill_conflict"));return{rest:p,fromDir:n,dataId:r,skillPlatform:i,skillAll:s,skillSkip:c,applyUpdate:u,skipUpdateFlag:y}}function Ye(e){let t=e.trim();if(!t||t.startsWith("-")||t.startsWith("@")||[...t].filter(r=>r==="/").length>1)return!1;let n=t.indexOf("@");if(n!==-1&&(n===0||n===t.length-1))return!1;if(t.includes("/")){let r=t.indexOf("/"),i=t.slice(0,r),s=t.slice(r+1),c=s.includes("@")?s.slice(0,s.indexOf("@")):s;if(!i||!c)return!1}return!0}var q={CliCreateStart:"CliCreateStart",CliCreateStep:"CliCreateStep",CliCreateResult:"CliCreateResult"},pn=["dest","skill","scaffold","npm_install","init","npm_install_again"],fn=new Set(pn);function Je(e){if(e)return fn.has(e)?e:void 0}var mn=new Set(["usage","need_input","update","dest_exists","from_dir_invalid","npm_install","bin_missing","init_failed","login_required","fail"]);function ke(e){if(e)return mn.has(e)?e:void 0}function _e(e){return e===0?"ok":e===10?"update":e===11?"need_input":e===12?"login_required":e===2?"usage":"fail"}import F from"node:fs";import wn from"node:os";import Xe from"node:path";import Ve from"node:fs";import We from"node:os";import gn from"node:path";var kn="analytics-identity.json";function _n(e){return gn.join(e,".cgmaker",kn)}function yn(e){if(typeof e=="number"&&Number.isFinite(e)&&e>0)return String(Math.trunc(e));if(typeof e=="string"){let t=e.trim();if(/^[1-9][0-9]{0,18}$/.test(t))return t}}function ye(e=We.homedir()){try{let t=_n(e);if(!Ve.existsSync(t))return;let n=JSON.parse(Ve.readFileSync(t,"utf8"));return yn(n?.uid)}catch{return}}function He(e=We.homedir()){let t=ye(e);return t?{uid:t,logged_in:!0}:{logged_in:!1}}var Sn=/^\$?[A-Za-z][A-Za-z0-9_]{0,99}$/,hn=new Set(["access_token","token","cookie","authorization","phone","mobile","wechat","qq","content","body","draft_title","search","query","error","message","stack","order_no","password","refresh_token","nick_name","nickname","username","lumi_username","dest","dest_dir","cwd","argv","from_dir","path","filepath"]);function xn(e){if(e!=null){if(typeof e=="string")return e.slice(0,256);if(typeof e=="number")return Number.isFinite(e)?e:void 0;if(typeof e=="boolean"||e instanceof Date)return e;if(Array.isArray(e))return e.slice(0,20).map(t=>t.slice(0,256))}}function ze(e){let t={};for(let[n,r]of Object.entries(e)){if(!Sn.test(n)||hn.has(n.toLowerCase()))continue;let i=xn(r);i!==void 0&&(t[n]=i)}return t}var En=100,Cn=600,An=700,bn="analytics-device-id",H=[],z=new Set,I,Se=!1;function Qe(e){try{return`${e}-${crypto.randomUUID()}`}catch{return`${e}-${Date.now()}-${Math.random().toString(36).slice(2,12)}`}}function Ze(e=wn.homedir()){if(I)return I;let t=Xe.join(e,".cgmaker"),n=Xe.join(t,bn);try{if(F.existsSync(n)){let i=F.readFileSync(n,"utf8").trim();if(i)return I=i,i}let r=Qe("cli");return F.mkdirSync(t,{recursive:!0}),F.writeFileSync(n,`${r}
25
+ `,{encoding:"utf8",flag:"wx"}),I=r,r}catch{try{if(F.existsSync(n)){let r=F.readFileSync(n,"utf8").trim();if(r)return I=r,r}}catch{}return I=Qe("session"),I}}function vn(){let e=Number.parseInt(process.versions.node,10);return Number.isFinite(e)?e:void 0}function Rn(){return ye()??Ze()}function Tn(){let e=R(),t=He();return{product:Re,app_id:Te,deploy_env:e.deployEnv,env:e.deployEnv==="release"?"production":"development",release_id:e.releaseId,surface:"cli",device_type:"desktop",device_code:Ze(),event_schema_version:2,os_platform:process.platform,os_arch:process.arch,node_major:vn(),logged_in:t.logged_in,uid:t.uid,$is_login_id:!!t.uid}}function In(e){z.add(e),e.finally(()=>z.delete(e))}async function Nn(e,t){let n=R();if(!n.enabled)return;let r={distinct_id:Rn(),time:Date.now(),type:"track",event:e,project:J,properties:{$lib:"Node",$lib_version:n.releaseId||"0",$lib_method:"code",...ze({...Tn(),...t})}};n.showLog&&console.error(`[cgmaker analytics] ${e}`);let i=Buffer.from(JSON.stringify(r),"utf8").toString("base64"),s=`data=${encodeURIComponent(i)}&gzip=0`,c=await fetch(n.serverUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:s,redirect:"error",signal:AbortSignal.timeout(Cn)});n.showLog&&console.error(`[cgmaker analytics] ${e} ${c.status}`)}function et(){if(Se)return;Se=!0;let e=H.splice(0);for(let t of e)In(Nn(t.name,t.properties).catch(()=>{}));Se=!1}function X(e,t={}){try{if(!R().enabled)return;H.length>=En&&H.shift(),H.push({name:e,properties:t}),et()}catch{}}async function tt(e=An){try{if(et(),z.size===0)return;await Promise.race([Promise.allSettled([...z]),new Promise(t=>{setTimeout(t,e).unref?.()})])}catch{}}function Pn(e){return!!(e&&/^[a-zA-Z0-9]+$/.test(e))}function he(e){return{package:"cgmaker-create",source:e.source,has_data_id:e.has_data_id,skill:e.skill,agent:!!e.agent,content_id:Pn(e.content_id)?e.content_id:void 0}}function xe(e={}){X(q.CliCreateStart,he(e))}function we(e,t={}){let n=Je(e);n&&X(q.CliCreateStep,{...he(t),step:n,success:t.success!==!1,reason:ke(t.reason),resume:t.resume,skipped:t.skipped})}function jn(e,t={}){let n=t.outcome??_e(e),r=t.success??(e===0&&n==="ok");X(q.CliCreateResult,{...he(t),success:r,outcome:n,reason:ke(t.reason)??(n==="ok"?void 0:n)})}async function Q(e,t={}){try{t.skip||jn(e,t),await tt()}catch{}process.exit(e)}function D(){return`${o("help","body")}${Oe(o("help","contact"))}
26
+ `}function at(){return g.resolve(g.dirname(On(import.meta.url)),"..")}function lt(e=process.cwd()){let t=e;for(;;){let n=g.join(t,"templates"),r=g.join(t,"package.json");if(f.existsSync(n)&&f.existsSync(r))try{if(JSON.parse(f.readFileSync(r,"utf8")).workspaces?.some(c=>c.includes("templates")))return t}catch{}let i=g.dirname(t);if(i===t)return null;t=i}}function Dn(){return JSON.parse(f.readFileSync(g.join(at(),"package.json"),"utf8"))}function ut(){let e=lt();if(e){let t=g.join(e,"packages/cgmaker");if(f.existsSync(t))return`file:${t.replace(/\\/g,"/")}`}return`^${Dn().version}`}function nt(e){let t=e.split("@")[0]??e;return((t.includes("/")?t.split("/").pop():t)||"game").replace(/^tmpl_/,"tmpl-")}function rt(e){return/^[a-zA-Z0-9]+$/.test(e)}function Ln(e){return Be(e)}function Un(e,t){process.stdout.write(`${JSON.stringify({success:!1,code:11,command:"need-input",message:e,data:{questions:t}},null,2)}
27
+ `)}function dt(){return process.env.CI==="true"||process.env.CGMAKER_NO_INTERACTIVE==="1"}function Mn(){return dt()||N()?!1:!!W()}function it(e,t){try{if(!f.existsSync(e))return;if(!t)f.rmSync(e,{recursive:!0,force:!0});else for(let n of f.readdirSync(e))f.rmSync(g.join(e,n),{recursive:!0,force:!0});console.error(o("err","cleared",{dir:e}))}catch(n){console.error(o("err","clear_failed",{dir:e,e:P(n)}))}}function pt(e,t){return new Promise(n=>{t.question(e,r=>n(r))})}async function st(e){let t=ct.createInterface({input:process.stdin,output:process.stdout});try{for(;;){let n=(await pt(o("prompt","dest_dir_ask",{suggested:e}),t)).trim();if(!n){console.log(o("prompt","dest_empty"));continue}if(!Ge(n)){console.log(o("prompt","dest_invalid"));continue}return n}}finally{t.close()}}async function $n(){let e=W(),t=le([...ae],e),n=e&&t.includes(e)?e:void 0,r=o("prompt","skill_current_suffix");console.log(n?o("prompt","skill_detected",{id:n}):o("prompt","skill"));for(let s=0;s<t.length;s++){let c=t[s];console.log(c===n?o("prompt","skill_item_current",{n:String(s+1),id:c,mark:r}):o("prompt","skill_item",{n:String(s+1),id:c}))}console.log(o("prompt","skill_all")),console.log(o("prompt","skill_skip"));let i=ct.createInterface({input:process.stdin,output:process.stdout});try{for(;;){let s=Me(await pt(o("prompt","skill_ask"),i),t);if(s.kind==="empty"){console.log(o("prompt","skill_empty"));continue}if(s.kind==="invalid"){console.log(o("prompt","skill_invalid"));continue}return s.kind==="skip"?"skip":s.kind==="all"?"all":s.id}}finally{i.close()}}function N(){return!!(process.stdin.isTTY&&process.stdout.isTTY)}function Gn(e,t){f.mkdirSync(e,{recursive:!0});let n={name:t,private:!0,type:"module",engines:{node:">=20"},devDependencies:{"@66rpg/cgmaker":ut()}};f.writeFileSync(g.join(e,"package.json"),`${JSON.stringify(n,null,2)}
28
+ `),f.writeFileSync(g.join(e,".gitignore"),`node_modules/
24
29
  dist/
25
30
  .DS_Store
26
- `);let r=n.devDependencies["@66rpg/cgmaker"],s=process.env.CGMAKER_NPM_SCOPE_REGISTRY?.trim();s&&typeof r=="string"&&!r.startsWith("file:")&&u.writeFileSync(p.join(e,".npmrc"),`@66rpg:registry=${s}
27
- `)}function be(e,t){let n=p.join(e,"package.json"),r=JSON.parse(u.readFileSync(n,"utf8"));r.name=t,r.devDependencies=r.devDependencies??{},r.devDependencies["@66rpg/cgmaker"]||(r.devDependencies["@66rpg/cgmaker"]=Ne()),u.writeFileSync(n,`${JSON.stringify(r,null,2)}
28
- `)}function jt(){return process.platform==="win32"?"cgmaker.exe":"cgmaker"}function Dt(){let e=process.platform,t=process.arch;return e==="darwin"&&t==="arm64"?["aarch64-apple-darwin"]:e==="darwin"&&t==="x64"?["x86_64-apple-darwin"]:e==="win32"&&t==="x64"?["x86_64-pc-windows-gnu","x86_64-pc-windows-msvc"]:e==="linux"&&t==="x64"?["x86_64-unknown-linux-gnu","x86_64-unknown-linux-musl"]:e==="linux"&&t==="arm64"?["aarch64-unknown-linux-gnu","aarch64-unknown-linux-musl"]:[]}function Ft(e){let t=jt(),n=[];for(let r of["release","debug"]){for(let s of Dt())n.push(p.join(e,s,r,t));n.push(p.join(e,r,t))}return n}function Mt(){if(process.env.CG_MAKER_CLI_BIN&&u.existsSync(process.env.CG_MAKER_CLI_BIN))return process.env.CG_MAKER_CLI_BIN;if(process.env.CGMAKER_BIN&&u.existsSync(process.env.CGMAKER_BIN))return process.env.CGMAKER_BIN;let e=[];process.env.CARGO_TARGET_DIR&&e.push(process.env.CARGO_TARGET_DIR);let t=Re();t&&e.push(p.join(t,"target"));for(let n of e)for(let r of Ft(n))if(u.existsSync(r))return r}async function Lt(){let e=Ct(process.argv.slice(2)),{rest:t,fromDir:n,dataId:r,agent:s,applyUpdate:i,skipUpdateFlag:a}=e,{skillPlatform:f,skillAll:y,skillSkip:d}=e;if(t.includes("-h")||t.includes("--help")){process.stdout.write(T());return}let g=Nt(s);g&&(process.env.CGMAKER_AGENT="1");let h={agent:g,source:n?"from_dir":"template_id",has_data_id:!!r,skill:y?"all":d?"skip":f?"platform":"none",content_id:void 0},c=(l,k={})=>Y(l,{...h,...k});if(i||a||t.length>0){let l=await de({apply:i,skip:a,agent:g,tty:B()});if(l==="updated-exit")return c(0,{reason:"update",outcome:"update"});if(l==="agent-block")return c(10,{reason:"update"})}if(t.length===0)return process.stdout.write(T()),c(1,{reason:"usage"});let m=t[0],P=t[1],w=r??t[2];if(ve(m)&&!n&&(h.content_id=m),h.has_data_id=!!w,t.length>3)return process.stderr.write(T()),c(1,{reason:"usage"});if(!m||m.startsWith("-"))return process.stderr.write(T()),c(1,{reason:"usage"});if(m.includes("/"))return console.error(o("err","owner_slug")),c(1,{reason:"usage"});if(P?.startsWith("-"))return process.stderr.write(T()),c(1,{reason:"usage"});if(n&&w)return console.error(o("err","data_id_from_dir")),c(1,{reason:"usage"});if(w&&w!=="0"&&!ve(w))return console.error(o("err","invalid_data_id",{id:w})),c(1,{reason:"usage"});if(g){let l=[];if(P||l.push({id:"create.dest",kind:"text",question:o("prompt","dest_dir")}),!f&&!y&&!d){let k=[...z],v=H(),x=v&&k.includes(v)?v:void 0,S=o("prompt","skill_current_suffix");l.push({id:"create.skill",kind:"select",question:x?o("prompt","skill_detected",{id:x}):o("prompt","skill"),recommended:!0,default:x,options:[...W(k,x).map(E=>({value:E,label:E===x?`${E}${S}`:E,flag:`--skill-platform ${E}`,recommended:E===x})),{value:"__all__",label:"all",flag:"--skill-all"},{value:"skip",label:"skip",flag:"--skill-skip",optional:!0}]})}if(l.some(k=>k.optional!==!0))return Rt(o("err","need_input"),l),c(11,{reason:"need_input"})}if(n){let l=p.resolve(n);if(!u.existsSync(p.join(l,"package.json")))return console.error(o("err","from_dir_not_template",{dir:l})),c(1,{reason:"from_dir_invalid"})}if(!P){let l=bt(m);if(!B())return console.error(o("err","need_dest_no_tty")),process.stderr.write(T()),c(1,{reason:"usage"});P=await It(o("prompt","dest_dir"),l)}let _=p.resolve(P),q=u.existsSync(_),F=pe(_);if(q&&u.readdirSync(_).length&&!F)return console.error(o("err","dest_exists",{dir:_})),c(1,{reason:"dest_exists"});if(!f&&!y&&!d&&B()){let l=await Pt();l==="all"?y=!0:l==="skip"?d=!0:f=l,h.skill=y?"all":d?"skip":"platform"}let O=async(l,k=1,v="fail")=>(F||Ae(_,q),console.error(l),c(k,{reason:v}));try{F?be(_,p.basename(_)):Ot(_,p.basename(_));let l=fe(_);if(!u.existsSync(l)){let re=R(["install"],{cwd:_,stdio:"inherit"});re.status!==0&&await O(o("err","npm_install"),re.status??1,"npm_install")}u.existsSync(l)||await O(o("err","bin_missing",{js:l}),1,"bin_missing");let k=[l,"init",m];n&&k.push("--from-dir",p.resolve(n)),w&&k.push("--data-id",w),y&&k.push("--all"),f&&k.push("--platform",f),d&&k.push("--skip-skill"),g&&k.push("--agent","--json");let v=Mt(),x={...process.env};v&&(x.CGMAKER_BIN=v),g&&(x.CGMAKER_AGENT="1"),x.CGMAKER_SKIP_UPDATE="1";let S=wt(process.execPath,k,{cwd:_,stdio:"inherit",windowsHide:!B(),env:x});if(S.error&&await O(o("err","run_js",{js:l,e:C(S.error)}),1,"init_failed"),S.status===10||S.status===11||S.status===12)return c(S.status,{reason:S.status===10?"update":S.status===11?"need_input":"fail"});S.status!==0&&await O(o("err","init_failed"),S.status??1,"init_failed"),be(_,p.basename(_));let E=R(["install"],{cwd:_,stdio:"inherit"});E.status!==0&&await O(o("err","npm_install_again"),E.status??1,"npm_install")}catch(l){throw F||Ae(_,q),l}return console.log(o("ok","written",{dir:_})),console.log(o("ok","installed")),n&&console.log(o("ok","local_origin")),console.log(o("ok","next")),c(0,{success:!0,outcome:"ok"})}Lt().catch(async e=>{console.error(ie(e)),await Y(1,{reason:"fail"})});
31
+ `);let r=n.devDependencies["@66rpg/cgmaker"],i=process.env.CGMAKER_NPM_SCOPE_REGISTRY?.trim();i&&typeof r=="string"&&!r.startsWith("file:")&&f.writeFileSync(g.join(e,".npmrc"),`@66rpg:registry=${i}
32
+ `)}function ot(e,t){let n=g.join(e,"package.json"),r=JSON.parse(f.readFileSync(n,"utf8"));r.name=t,r.devDependencies=r.devDependencies??{},r.devDependencies["@66rpg/cgmaker"]||(r.devDependencies["@66rpg/cgmaker"]=ut()),f.writeFileSync(n,`${JSON.stringify(r,null,2)}
33
+ `)}function qn(){return process.platform==="win32"?"cgmaker.exe":"cgmaker"}function Kn(){let e=process.platform,t=process.arch;return e==="darwin"&&t==="arm64"?["aarch64-apple-darwin"]:e==="darwin"&&t==="x64"?["x86_64-apple-darwin"]:e==="win32"&&t==="x64"?["x86_64-pc-windows-gnu","x86_64-pc-windows-msvc"]:e==="linux"&&t==="x64"?["x86_64-unknown-linux-gnu","x86_64-unknown-linux-musl"]:e==="linux"&&t==="arm64"?["aarch64-unknown-linux-gnu","aarch64-unknown-linux-musl"]:[]}function Bn(e){let t=qn(),n=[];for(let r of["release","debug"]){for(let i of Kn())n.push(g.join(e,i,r,t));n.push(g.join(e,r,t))}return n}function Yn(){if(process.env.CG_MAKER_CLI_BIN&&f.existsSync(process.env.CG_MAKER_CLI_BIN))return process.env.CG_MAKER_CLI_BIN;if(process.env.CGMAKER_BIN&&f.existsSync(process.env.CGMAKER_BIN))return process.env.CGMAKER_BIN;let e=[];process.env.CARGO_TARGET_DIR&&e.push(process.env.CARGO_TARGET_DIR);let t=lt();t&&e.push(g.join(t,"target"));for(let n of e)for(let r of Bn(n))if(f.existsSync(r))return r}async function Jn(){let e=Ln(process.argv.slice(2));oe();let{rest:t,fromDir:n,dataId:r,applyUpdate:i,skipUpdateFlag:s}=e,{skillPlatform:c,skillAll:u,skillSkip:y}=e;if(t.includes("-h")||t.includes("--help")){await oe(),process.stdout.write(D());return}let p=Mn();p&&(process.env.CGMAKER_AGENT="1");let d={agent:p,source:n?"from_dir":"template_id",has_data_id:!!r,skill:u?"all":y?"skip":c?"platform":"none",content_id:void 0},a=(l,_={})=>Q(l,{...d,..._}),m=(l,_={})=>{try{we(l,{...d,..._})}catch{}};if(i||s||t.length>0){let l=await Ue({apply:i,skip:s,agent:p,tty:N()});if(l==="updated-exit")return a(0,{reason:"update",outcome:"update"});if(l==="agent-block")return a(10,{reason:"update"})}if(t.length===0)return process.stdout.write(D()),a(1,{reason:"usage"});let E=t[0],C=t[1],A=r;if(rt(E)&&!n&&(d.content_id=E),d.has_data_id=!!A,t.length>2)return process.stderr.write(D()),a(1,{reason:"usage"});if(!E||E.startsWith("-"))return process.stderr.write(D()),a(1,{reason:"usage"});if(!Ye(E))return console.error(o("err","owner_slug")),a(1,{reason:"usage"});if(C?.startsWith("-"))return process.stderr.write(D()),a(1,{reason:"usage"});if(n&&A)return console.error(o("err","data_id_from_dir")),a(1,{reason:"usage"});if(A&&A!=="0"&&!rt(A))return console.error(o("err","invalid_data_id",{id:A})),a(1,{reason:"usage"});try{xe(d)}catch{}if(p||!N()&&!dt()){let l=[];if(C||l.push({id:"create.dest",kind:"text",question:o("prompt","dest_dir"),recommended:!0}),!c&&!u&&!y){let _=[...ae],b=W(),h=b&&_.includes(b)?b:void 0,S=o("prompt","skill_current_suffix");l.push({id:"create.skill",kind:"select",question:h?o("prompt","skill_detected",{id:h}):o("prompt","skill"),recommended:!0,default:h,options:[...le(_,h).map(x=>({value:x,label:x===h?`${x}${S}`:x,flag:`--skill-platform ${x}`,recommended:x===h})),{value:"__all__",label:"all",flag:"--skill-all"},{value:"skip",label:"skip",flag:"--skill-skip",optional:!0}]})}if(l.some(_=>_.optional!==!0))return Un(o("err","need_input"),l),a(11,{reason:"need_input"})}if(n){let l=g.resolve(n);if(!f.existsSync(g.join(l,"package.json")))return console.error(o("err","from_dir_not_template",{dir:l})),a(1,{reason:"from_dir_invalid"})}let Ee=!!C;if(!C){if(!N())return console.error(o("err","need_dest_no_tty")),process.stderr.write(D()),a(1,{reason:"usage"});C=await st(nt(E)),Ee=!1}let k=g.resolve(C),K=f.existsSync(k),v=de(k);for(;K&&f.readdirSync(k).length&&!v;){if(console.error(o("err","dest_exists",{dir:k})),m("dest",{success:!1,reason:"dest_exists"}),Ee||!N())return a(1,{reason:"dest_exists"});C=await st(nt(E)),k=g.resolve(C),K=f.existsSync(k),v=de(k)}if(m("dest",{success:!0,resume:v}),!c&&!u&&!y&&N()){let l=await $n();l==="all"?u=!0:l==="skip"?y=!0:c=l,d.skill=u?"all":y?"skip":"platform"}m("skill",{success:!0});let L=async(l,_=1,b="fail")=>(v||it(k,K),console.error(l),a(_,{reason:b}));try{if(v?ot(k,g.basename(k)):Gn(k,g.basename(k)),m("scaffold",{success:!0,resume:v}),!y&&(u||c))try{Ke(k,u?{all:!0}:{platform:c},at())}catch{}let l=$e(k);if(f.existsSync(l))m("npm_install",{success:!0,skipped:!0});else{let Ce=j(["install"],{cwd:k,stdio:"inherit"});Ce.status!==0&&(m("npm_install",{success:!1,reason:"npm_install"}),await L(o("err","npm_install"),Ce.status??1,"npm_install")),m("npm_install",{success:!0})}f.existsSync(l)||(m("init",{success:!1,reason:"bin_missing"}),await L(o("err","bin_missing",{js:l}),1,"bin_missing"));let _=[l,"init",E];n&&_.push("--from-dir",g.resolve(n)),A&&_.push("--with-assets",A),u&&_.push("--all"),c&&_.push("--platform",c),y&&_.push("--skip-skill");let b=Yn(),h={...process.env};b&&(h.CGMAKER_BIN=b),p&&(h.CGMAKER_AGENT="1"),h.CGMAKER_SKIP_UPDATE="1";let S=Fn(process.execPath,_,{cwd:k,stdio:"inherit",windowsHide:!N(),env:h});if(S.error&&(m("init",{success:!1,reason:"init_failed"}),await L(o("err","run_js",{js:l,e:P(S.error)}),1,"init_failed")),S.status===10||S.status===11||S.status===12)return m("init",{success:!1,reason:S.status===10?"update":S.status===11?"need_input":"login_required"}),a(S.status,{reason:S.status===10?"update":S.status===11?"need_input":"login_required"});S.status!==0&&(m("init",{success:!1,reason:"init_failed"}),await L(o("err","init_failed"),S.status??1,"init_failed")),m("init",{success:!0}),ot(k,g.basename(k));let x=j(["install"],{cwd:k,stdio:"inherit"});x.status!==0&&(m("npm_install_again",{success:!1,reason:"npm_install"}),await L(o("err","npm_install_again"),x.status??1,"npm_install")),m("npm_install_again",{success:!0})}catch(l){throw v||it(k,K),l}return console.log(o("ok","written",{dir:k})),console.log(o("ok","installed")),n&&console.log(o("ok","local_origin")),console.log(o("ok","next")),a(0,{success:!0,outcome:"ok"})}Jn().catch(async e=>{console.error(be(e)),await Q(1,{reason:"fail"})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@66rpg/cgmaker-create",
3
- "version": "0.1.22",
3
+ "version": "0.1.24",
4
4
  "description": "从 cgmaker 托管模板创建带完整源码的游戏工程",
5
5
  "type": "module",
6
6
  "bin": {
@@ -8,7 +8,9 @@
8
8
  },
9
9
  "files": [
10
10
  "dist",
11
- "bin"
11
+ "bin",
12
+ "skill",
13
+ "skill-targets.json"
12
14
  ],
13
15
  "scripts": {
14
16
  "build": "tsc --noEmit -p tsconfig.json && node ../../scripts/bundle.mjs",
@@ -0,0 +1,116 @@
1
+ ---
2
+ name: cgmaker-create
3
+ description: 从橙光托管模板创建游戏工程。用户说开工程、从模板创建、cgmaker-create、npx @66rpg/cgmaker-create 时使用。工程建好后用口语引导去用 cgmaker 登录、检查、发到平台。不要编造工程目录名,不要 npm login / npm publish。
4
+ ---
5
+
6
+ # cgmaker-create(给 Agent)
7
+
8
+ `npx @66rpg/cgmaker-create` **只装本包**,此时工程里还没有 `@66rpg/cgmaker` 的平台 skill。按本文决策,不要去找 kit 里的 `cgmaker` skill。
9
+
10
+ 目前只保证 Windows x64。不要把私有 npm registry、内网 IP、镜像域名写进回复或命令示例。
11
+
12
+ ## 怎么问用户
13
+
14
+ 不要问用户过于专业的技术问题,除非你清楚知道对方具备专业能力(例如他自己先说出了命令、旗标、字段名)。
15
+
16
+ 所有问用户的问题,都用更口语、易懂的方式。信封里的 `data.questions`、旗标名、包名、路径术语只给你自己对照,转述时改成白话,再把答案翻译成参数后重跑。
17
+
18
+ - 问:「工程要建在哪个文件夹?」不要问:「dest 填什么?」「目录参数是哪个?」
19
+ - 问:「要把说明装到你现在用的这个编辑器吗?」不要问:「`--skill-platform` 选 cursor 还是 all?」
20
+ - 问:「网页命令里如果带了素材包编号,就原样带上;没有就先只下代码。」不要主动问:「data_id 填哪个?」也不要擅自加 `--with-assets`
21
+ - 问:「要打开浏览器登录橙光账号吗?」不要问:「是否执行 login / 是否 12?」
22
+
23
+ ## 缺参时先问人(输出模式由程序判断)
24
+
25
+ 不要给命令加输出格式开关。人在终端走交互;你在编辑器里跑命令会自动走信封。不要猜用户没给的参数。
26
+
27
+ 见到下面退出码,**先问用户,禁止擅自填默认、禁止擅自 `--skip-update`**:
28
+
29
+ | 退出码 | `command` | 你要做的 |
30
+ |---|---|---|
31
+ | 10 | `update-available` | 列出 `data.packages`,问「推荐更新,是否现在更新?」同意:执行信封 `data.apply`。空目录没有 `package.json` 时不要 `npm install`,直接用 `@latest` 重跑原命令。拒绝:原命令加 `--skip-update` |
32
+ | 11 | `need-input` | 按 `data.questions` 逐项问人(`recommended` 标推荐)。**用口语问**,不要把旗标名念给用户。把答案变成位置参数或旗标后重跑 |
33
+ | 12 | `login-required` | 问「要不要打开浏览器登录橙光账号?」同意:工程落地后再 `npx cgmaker login`,等人完成后再用同一目录重跑 create |
34
+
35
+ ## 用法
36
+
37
+ ```text
38
+ npx @66rpg/cgmaker-create@latest <用户名/slug>
39
+ npx @66rpg/cgmaker-create@latest <用户名/slug> <用户说的目录>
40
+ npx @66rpg/cgmaker-create@latest <用户名/slug@版本>
41
+ npx @66rpg/cgmaker-create@latest <用户名/slug@版本> --with-assets <数据包ID>
42
+ npx @66rpg/cgmaker-create@latest <模板id或版本id>
43
+ npx @66rpg/cgmaker-create@latest <引用> <用户说的目录> --skill-platform <编辑器>
44
+ npx @66rpg/cgmaker-create@latest <引用> <用户说的目录> --skill-all
45
+ npx @66rpg/cgmaker-create@latest <引用> <用户说的目录> --from-dir <本地模板目录>
46
+ ```
47
+
48
+ 网页默认命令是 `用户名/slug`(最新版)、`用户名/slug@版本`、以及带素材时再加 `--with-assets <数据包ID>`。第一位置整段原样交给平台,不要自己拆成模板 id 还是版本 id。不要用平台模板名 `name`。命令里唯一可能出现的 ID 是数据包 ID。
49
+
50
+ ## 参数
51
+
52
+ | 参数 | 必填 | 说明 |
53
+ |---|---|---|
54
+ | `<引用>` | 是 | `用户名/slug`、`用户名/slug@版本`、`用户名/slug@latest`,或平台模板 id / 版本 id |
55
+ | `<目录>` | 用户没说就省略 | 工程要建在哪个文件夹。用户没说时**不要自己编**(不要 `my-game`,不要用模板 id) |
56
+ | `--with-assets <数据包ID>` | 否 | 下载该素材包。值必填。不带则只下代码,不要再问要不要素材 |
57
+ | `--from-dir` | 否 | 暂无云端种子时从本地模板目录拷。不能与 `--with-assets` 一起用。落地 origin 为 `local`,之后不能把这份模板发到平台 |
58
+ | `--skill-platform` | 否 | 只把说明装到该编辑器(如 `cursor`、`workbuddy`) |
59
+ | `--skill-all` | 否 | 装到全部编辑器 |
60
+ | `--apply-update` / `--skip-update` | 否 | 只在退出码 10 之后按用户答复使用 |
61
+
62
+ `--skill-platform` 与 `--skill-all` 不能同时用。未指定时 CLI 会探测当前编辑器并询问(信封会标明「当前」),**不要擅自写成 cursor**。
63
+
64
+ ## 约束
65
+
66
+ - 用户没说工程放哪时,省略目录参数,让 create 退出 11,用口语问「工程要建在哪个文件夹?」。用户回答后再把名字写进命令重跑。
67
+ - 不要假设「脚本环境会用模板 id 当文件夹名」或「回车沿用建议名」——那不是 Agent 路径。
68
+ - 缺目录或缺编辑器选项时退出 11。随后若还没登录(12),脚手架会留在用户说的目录里,**不要换文件夹、不要删目录**。登录后用同一目录重跑原 create 命令即可续跑。
69
+ - 用户粘贴的网页命令如果没有 `--with-assets`,就不要补素材包,也不要问要不要带素材。
70
+ - 目录已有内容且不是可续跑的脚手架时会失败;换个名字再问用户。
71
+ - 不要编造模板引用或数据包 ID。网页给了 `用户名/slug` 就原样用,不要改成平台模板名 `name`。
72
+ - 本包只负责把工程放到电脑上。文件夹建好之前,不要讲发布、不要提前跑 `cgmaker`。
73
+
74
+ ## 工程建好之后:引导去用 cgmaker
75
+
76
+ create 成功后,工程里已经装好 `@66rpg/cgmaker`。后面登录橙光、检查工程、发游戏/模板/开源,都进这个文件夹用 `npx cgmaker`。发布规则以工程里的 `cgmaker` skill 为准;本 skill 只负责把人从「还没有文件夹」带到「已经有工程」,并用白话告诉他还能做什么。
77
+
78
+ 先进入用户说的那个文件夹,再跑 cgmaker。不要 `npm login` / `npm publish`。
79
+
80
+ ### 刚建完时跟用户说
81
+
82
+ 用接近下面的口语收尾,不要念包名和旗标:
83
+
84
+ > 工程已经放进你刚才说的文件夹了。后面如果要登录橙光、检查这份工程齐不齐、把游戏或模板发到平台,直接告诉我就行。这些都在这个工程里做,不用再开一次工程。
85
+
86
+ 用户还没说下一步时,只追问一句:
87
+
88
+ > 你接下来更想先在电脑上跑起来看看、登录账号,还是准备发到平台?
89
+
90
+ ### 用户意图 → 你怎么接
91
+
92
+ 把用户的话听成日常说法。确认时继续用白话;命令只给你自己用,不要念给用户听。
93
+
94
+ | 用户大概会说 | 你怎么确认 | 你进工程目录后跑 |
95
+ |---|---|---|
96
+ | 登录 / 换账号 | 「要打开浏览器登录橙光账号吗?网页里点一下就行。」 | `npx cgmaker login`(换号加 `--force`) |
97
+ | 登出 | 「要退出当前橙光账号吗?」 | `npx cgmaker logout` |
98
+ | 我登录了没 / 现在是谁 | 「我帮你看一下当前登录的是哪个账号。」 | `npx cgmaker whoami` |
99
+ | 检查一下 / 合不合格 / 能不能发 | 「发之前我按平台要求看一眼工程齐不齐。」 | `npx cgmaker validate-template`,数据用 `npm run validate`(或 `npx cgmaker validate` 转调它;有试玩数据时同一条检查两份) |
100
+ | 发出去给人玩 / 上线 / 发正式版 | 「你是要发正式给玩家玩的版本,还是先发一个试玩?」 | 先 `npm run build`,再 `npx cgmaker publish` |
101
+ | 先发试玩 / 演示版 | 「试玩是单独一份,可以先发试玩,以后再补正式版。」 | 先 `npm run build:demo`,再 `npx cgmaker publish --demo` |
102
+ | 把模板发到平台 / 给别人用这个模板 | 「这是把模板发到平台,让别人用它开工程。第一版先发代码,配套素材要等下一版。」 | `npx cgmaker publish-template` |
103
+ | 只改关卡素材、不改代码 | 「只更新素材包,不发新的代码版本。」 | `npx cgmaker publish-template-data` |
104
+ | 把源码开源到平台 | 「这是把整份源码发到平台做开源工程,不是发成品游戏。」 | `npx cgmaker publish-project` |
105
+ | 改名字 / 改介绍 / 先下架 | 「改帖子请到网页上操作,不用在命令行里改。」 | 不要跑命令行改帖 |
106
+ | 补装 AI 说明 / 换编辑器 | 「要把说明装到哪个编辑器?当前检测到的会标出来。」 | `npx cgmaker skill` |
107
+ | 我的游戏/模板/开源列表 | 「请到网页上看已发布的列表和详情。」 | 不要用命令行列出 |
108
+
109
+ 从本地文件夹拷来的工程还没连上平台,不能发模板。这时要老实说:「这份是从本地拷来的,还没接到橙光模板上,不能当模板发出去。」
110
+
111
+ ### 不要跟用户说的
112
+
113
+ - 不要说「已经上线」「已经通过审核」,除非命令成功且结果里明确是审核通过。
114
+ - 不要把「提交成功」说成「已经给玩家玩了」。提交之后还要等审核。
115
+ - 版本号怎么写、第一版为什么不能带素材、试玩和正式版不是同一个通道:切到 `cgmaker` skill 再按那边做,这里不要展开成说明书。
116
+ - 用户没提出发布时,不要主动把上面整张表背一遍。
@@ -0,0 +1,14 @@
1
+ {
2
+ "projectSkillDirs": [
3
+ ".agents/skills",
4
+ ".cursor/skills",
5
+ ".claude/skills",
6
+ ".codex/skills",
7
+ ".opencode/skills",
8
+ ".codebuddy/skills",
9
+ ".workbuddy/skills",
10
+ ".trae/skills",
11
+ ".kimi/skills",
12
+ ".qwen/skills"
13
+ ]
14
+ }