@66rpg/cgmaker-create 0.1.21 → 0.1.23

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,22 @@
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 <用户名/模板名> [目录]
7
+ npx @66rpg/cgmaker-create@latest <用户名/模板名@版本> [目录]
8
+ npx @66rpg/cgmaker-create@latest <用户名/模板名@版本> [目录] --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
+ npx @66rpg/cgmaker-create@latest --agent --json <用户名/模板名>
13
+ npx @66rpg/cgmaker-create@latest --agent --json <用户名/模板名> <用户说的目录> --skill-platform cursor
12
14
  ```
13
15
 
14
- 只要平台给的模板 ID(template_id,可 `@version_name`),不要写成 用户名/模板名。
16
+ 第一位置是模板引用,原样交给平台:`用户名/模板名`(最新版)、`用户名/模板名@版本`、`用户名/模板名@latest`,或平台模板 id / 版本 id。要素材时加 `--with-assets <数据包ID>`;不带则只下代码。
15
17
 
16
- 未传资源包 ID(data_id)且你在屏幕前操作时,会列出该模板版本可下载的资源包,选序号或 `data_id`(`0` 表示不下载资源)。已传第三参数 / `--data-id` 则跳过列表。脚本环境会沿用该版本默认绑定包。未指定目录时:交互会问工程建在哪个文件夹;脚本必须带目录。未指定 `--skill-platform` / `--skill-all` 时:交互会询问要把 AI 说明安装到哪个编辑器(回车无效,跳过须输入 `s`),脚本默认不安装。`--agent` 下缺目录或缺选项会停下来问用户,不要自动起文件夹名。已有工程补装:`npx cgmaker skill --platform cursor` 或 `--all`。
18
+ 未指定目录时:你在屏幕前操作会询问工程建在哪个文件夹(回车无效,必须输入名字或路径);Agent 必须加 `--agent --json`,缺目录会停下来问用户,不要自动起文件夹名。给 Agent 的参数、用法和约束见本包 `skill/cgmaker-create/SKILL.md`。
19
+
20
+ 未指定 `--skill-platform` / `--skill-all` 时:交互会询问要把 AI 说明安装到哪个编辑器(回车无效,跳过须输入 `s`),脚本默认不安装。已有工程补装:`npx cgmaker skill --platform cursor` 或 `--all`。
17
21
 
18
22
  你在屏幕前操作时若检测到新版本会询问是否更新。Agent 会停下来问你要不要更新;同意后用返回结果里的 `data.apply`(空目录改用 `@latest` 重跑)。`--skip-update` 跳过询问。
19
23
 
20
- 暂无云端种子时用 `--from-dir`。从本地文件夹拷来的工程还没连上平台,不能 `publish-template`。
24
+ 暂无云端种子时用 `--from-dir`(不能同时 `--with-assets`)。从本地文件夹拷来的工程还没连上平台,不能 `publish-template`。
package/dist/index.js CHANGED
@@ -1,28 +1,33 @@
1
- import p from"node:fs";import u from"node:path";import ft from"node:readline";import{fileURLToPath as mt}from"node:url";import{spawnSync as gt}from"node:child_process";import{spawnSync as be}from"node:child_process";var X={_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 d from"node:fs";import f from"node:path";import rt from"node:readline";import{fileURLToPath as wn}from"node:url";import{spawnSync as En}from"node:child_process";import{spawnSync as mt}from"node:child_process";var we={_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/\u6A21\u677F\u540D> [\u76EE\u5F55]
5
+ npx @66rpg/cgmaker-create@latest <\u7528\u6237\u540D/\u6A21\u677F\u540D@\u7248\u672C> [\u76EE\u5F55]
6
+ npx @66rpg/cgmaker-create@latest <\u7528\u6237\u540D/\u6A21\u677F\u540D@\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/\u6A21\u677F\u540D\uFF08\u6700\u65B0\u7248\uFF09\u3001\u7528\u6237\u540D/\u6A21\u677F\u540D@\u7248\u672C\u3001\u7528\u6237\u540D/\u6A21\u677F\u540D@latest\uFF0C\u6216\u5E73\u53F0\u6A21\u677F id / \u7248\u672C id\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\uFF1BAgent \u8BF7\u52A0 --agent --json\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"},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 we(){let e={...X};return delete e._comment,e}var xe=we();function i(e,t,n){let r=xe[e]?.[t];if(!r?.text)throw new Error(`missing create message ${e}.${t}`);let s=r.text;if(n)for(let[o,a]of Object.entries(n))s=s.split(`{${o}}`).join(String(a));return s}function Ae(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 ve(e){return e?e.includes("\uFFFD")||e.includes("\\\\?\\"):!1}function R(e){switch(Ae(e)){case"EPERM":case"EACCES":return i("err","sys_denied");case"ENOENT":return i("err","sys_missing");case"EBUSY":case"ENOTEMPTY":return i("err","sys_busy");case"ENOTDIR":case"EISDIR":return i("err","sys_type");case"EINVAL":return i("err","sys_invalid");case"EMFILE":case"ENFILE":return i("err","sys_too_many");default:return i("err","sys_unknown")}}function Z(e){let t=e instanceof Error?e.message:String(e??"");return ve(t)?R(e):t}function Q(){return process.platform==="win32"?"npm.cmd":"npm"}function C(e,t={}){let n=process.platform==="win32",r=be(Q(),e,{windowsHide:n,...t,shell:n});if(r.error)throw new Error(i("err","run_npm",{cmd:Q(),e:R(r.error)}));return r}import N from"node:fs";import Re from"node:os";import A from"node:path";import Ce from"node:readline";import{fileURLToPath as Ne}from"node:url";var ne=["@66rpg/cgmaker","@66rpg/cgmaker-create","@66rpg/cgmaker-win32-x64"],Ie=1440*60*1e3;function Te(e,t){let n=e.split(".").map(o=>Number.parseInt(o,10)||0),r=t.split(".").map(o=>Number.parseInt(o,10)||0),s=Math.max(n.length,r.length);for(let o=0;o<s;o++){let a=n[o]??0,_=r[o]??0;if(a>_)return!0;if(a<_)return!1}return!1}function J(e=Re.homedir()){return A.join(e,".cgmaker","update-check.json")}function Pe(e=J()){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 D(e,t=J()){N.mkdirSync(A.dirname(t),{recursive:!0}),N.writeFileSync(t,`${JSON.stringify(e,null,2)}
16
- `)}function Oe(){return A.resolve(A.dirname(Ne(import.meta.url)),"..")}function je(e,t=process.cwd()){if(e==="@66rpg/cgmaker-create")try{let n=JSON.parse(N.readFileSync(A.join(Oe(),"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 ee(e,t=process.cwd(),n={}){let r=[];for(let s of ne){let o=e[s];if(!o||n[s]===o)continue;let a=je(s,t);a&&Te(o,a)&&r.push({name:s,current:a,latest:o})}return r}function De(e=process.cwd()){let t={};for(let n of ne)try{let r=C(["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 Fe(){return process.env.CI==="true"||process.env.CGMAKER_NO_INTERACTIVE==="1"||process.env.CGMAKER_SKIP_UPDATE==="1"}function Me(){return process.platform==="win32"?["@66rpg/cgmaker-win32-x64"]:[]}function Ue(e){process.stdout.write(`${JSON.stringify({success:!1,code:10,command:"update-available",message:i("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 Le(e,t){let n=Ce.createInterface({input:process.stdin,output:process.stdout});return new Promise(r=>{n.question(`${e} [${t}]: `,s=>{n.close(),r(s.trim()||t)})})}async function re(e){if(Fe())return"continue";let t=e.cwd??process.cwd(),n=e.now??Date.now(),r=e.ppid??process.ppid,s=e.cacheFile??J(),o=Pe(s)??{checkedAt:0,latest:{}};if(n-o.checkedAt>=Ie){let l={};try{l=e.fetch?e.fetch():De(t)}catch{l={}}o={...o,checkedAt:n,latest:{...o.latest,...l}},D(o,s)}if(e.apply)return te(o.latest,t);if(e.skip){let l={...o.declined};for(let y of ee(o.latest,t))l[y.name]=y.latest;return D({...o,declined:l,promptedPpid:r},s),"continue"}let a=ee(o.latest,t,o.declined??{});if(a.length===0)return"continue";if(e.agent)return Ue(a),"agent-block";if(!e.tty||o.promptedPpid===r)return"continue";let _=a.map(l=>`${l.name} ${l.current} \u2192 ${l.latest}`).join(`
19
- `),S=await Le(`${i("prompt","update_ask")}
20
- ${_}`,"Y");if(D({...o,promptedPpid:r},s),/^(n|no|否)$/i.test(S)){let l={...o.declined};for(let y of a)l[y.name]=y.latest;return D({...o,declined:l,promptedPpid:r},s),"continue"}return te(o.latest,t)}function te(e,t){let n=A.join(t,"package.json");if(!N.existsSync(n))return console.error(i("err","update_use_latest")),"updated-exit";let r=[];for(let s of["@66rpg/cgmaker","@66rpg/cgmaker-create",...Me()]){let o=e[s];r.push(o?`${s}@${o}`:`${s}@latest`)}console.error(i("ok","update_installing"));try{if(C(["install","-D",...r],{cwd:t,stdio:"inherit"}).status!==0)return console.error(i("err","update_failed")),"continue"}catch{return console.error(i("err","update_failed")),"continue"}return console.error(i("ok","update_done")),"updated-exit"}var $e=[{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"]}],se=["agents","cursor","claude","codex","opencode","codebuddy","workbuddy","trae","kimi","qwen"];function Ge(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 Ke(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 oe(e=process.env){let t=Ge(Ke(e));for(let{id:n,tokens:r}of $e)if(r.some(s=>t.includes(` ${s} `)))return n}function ie(e,t){return!t||!e.includes(t)?[...e]:[t,...e.filter(n=>n!==t)]}var B={CliCreateResult:"CliCreateResult"},Je=new Set(["usage","need_input","update","dest_exists","from_dir_invalid","npm_install","bin_missing","init_failed","fail"]);function ae(e){if(e)return Je.has(e)?e:void 0}function Y(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 nt from"node:os";import ue from"node:path";import M from"node:fs";import Be from"node:os";import O from"node:path";import{fileURLToPath as Ye}from"node:url";var U="huanguang",ce="cgmaker_npm",le="cgmaker_create",Ve=`https://fx-it.66rpg.com:8206/sa?project=${U}`;function V(e,t=U){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 F(e,t){return String(e[t]??"").trim().toLowerCase()}function qe(e){let t=F(e,"CGMAKER_NO_ANALYTICS");if(t==="1"||t==="true")return!0;let n=F(e,"CGMAKER_ANALYTICS");if(n==="0"||n==="false")return!0;let r=F(e,"CI");return!!(r==="true"||r==="1"||e.NODE_TEST_CONTEXT)}function ze(){let e=O.dirname(Ye(import.meta.url));for(;;){if(M.existsSync(O.join(e,"package.json")))return e;let t=O.dirname(e);if(t===e)return e;e=t}}function He(){try{let e=JSON.parse(M.readFileSync(O.join(ze(),"package.json"),"utf8"));return typeof e.version=="string"?e.version:""}catch{return""}}function We(e){try{let t=O.join(e,".cgmaker","config.json");if(!M.existsSync(t))return;let n=JSON.parse(M.readFileSync(t,"utf8"));return n&&typeof n=="object"?n:void 0}catch{return}}function Xe(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 Ze(e){let t=e?.env??process.env,n=e?.homeDir??Be.homedir(),r=e?.fileConfig??(e?.skipFile?void 0:We(n)),s=Xe(r),o=r?.sensorsAnalytics,a=!0;typeof o?.enabled=="boolean"&&(a=o.enabled),qe(t)&&(a=!1);let _=Ve,S=typeof o?.serverUrl=="string"?o.serverUrl.trim():"";S&&V(S)&&(_=S);let l=typeof t.CGMAKER_SENSORS_URL=="string"?t.CGMAKER_SENSORS_URL.trim():"";l&&V(l)&&(_=l),V(_)||(a=!1);let y=F(t,"CGMAKER_ANALYTICS_LOG"),d=s!=="release"&&(o?.showLog===!0||y==="1"||y==="true");return{enabled:a,serverUrl:_,showLog:d,deployEnv:s,releaseId:e?.releaseId??He()}}var q;function L(){return q||(q=Ze()),q}var Qe=/^\$?[A-Za-z][A-Za-z0-9_]{0,99}$/,et=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 tt(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 de(e){let t={};for(let[n,r]of Object.entries(e)){if(!Qe.test(n)||et.has(n.toLowerCase()))continue;let s=tt(r);s!==void 0&&(t[n]=s)}return t}var rt=100,st=600,ot=700,it="analytics-device-id",$=[],G=new Set,v,z=!1;function pe(e){try{return`${e}-${crypto.randomUUID()}`}catch{return`${e}-${Date.now()}-${Math.random().toString(36).slice(2,12)}`}}function fe(e=nt.homedir()){if(v)return v;let t=ue.join(e,".cgmaker"),n=ue.join(t,it);try{if(I.existsSync(n)){let s=I.readFileSync(n,"utf8").trim();if(s)return v=s,s}let r=pe("cli");return I.mkdirSync(t,{recursive:!0}),I.writeFileSync(n,`${r}
21
- `,{encoding:"utf8",flag:"wx"}),v=r,r}catch{try{if(I.existsSync(n)){let r=I.readFileSync(n,"utf8").trim();if(r)return v=r,r}}catch{}return v=pe("session"),v}}function at(){let e=Number.parseInt(process.versions.node,10);return Number.isFinite(e)?e:void 0}function ct(){let e=L();return{product:ce,app_id:le,deploy_env:e.deployEnv,env:e.deployEnv==="release"?"production":"development",release_id:e.releaseId,surface:"cli",device_type:"desktop",device_code:fe(),event_schema_version:1,os_platform:process.platform,os_arch:process.arch,node_major:at()}}function lt(e){G.add(e),e.finally(()=>G.delete(e))}async function dt(e,t){let n=L();if(!n.enabled)return;let r={distinct_id:fe(),time:Date.now(),type:"track",event:e,project:U,properties:{$lib:"Node",$lib_version:n.releaseId||"0",$lib_method:"code",...de({...ct(),...t})}};n.showLog&&console.error(`[cgmaker analytics] ${e}`);let s=Buffer.from(JSON.stringify(r),"utf8").toString("base64"),o=`data=${encodeURIComponent(s)}&gzip=0`,a=await fetch(n.serverUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:o,redirect:"error",signal:AbortSignal.timeout(st)});n.showLog&&console.error(`[cgmaker analytics] ${e} ${a.status}`)}function me(){if(z)return;z=!0;let e=$.splice(0);for(let t of e)lt(dt(t.name,t.properties).catch(()=>{}));z=!1}function ge(e,t={}){try{if(!L().enabled)return;$.length>=rt&&$.shift(),$.push({name:e,properties:t}),me()}catch{}}async function _e(e=ot){try{if(me(),G.size===0)return;await Promise.race([Promise.allSettled([...G]),new Promise(t=>{setTimeout(t,e).unref?.()})])}catch{}}function ut(e){return!!(e&&/^[a-zA-Z0-9]+$/.test(e))}function pt(e,t={}){let n=t.outcome??Y(e),r=t.success??(e===0&&n==="ok");ge(B.CliCreateResult,{package:"cgmaker-create",success:r,outcome:n,reason:ae(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:ut(t.content_id)?t.content_id:void 0})}async function K(e,t={}){try{t.skip||pt(e,t),await _e()}catch{}process.exit(e)}function T(){return i("help","body")}function _t(){return u.resolve(u.dirname(mt(import.meta.url)),"..")}function he(e=process.cwd()){let t=e;for(;;){let n=u.join(t,"templates"),r=u.join(t,"package.json");if(p.existsSync(n)&&p.existsSync(r))try{if(JSON.parse(p.readFileSync(r,"utf8")).workspaces?.some(a=>a.includes("templates")))return t}catch{}let s=u.dirname(t);if(s===t)return null;t=s}}function yt(){return JSON.parse(p.readFileSync(u.join(_t(),"package.json"),"utf8"))}function Ee(){let e=he();if(e){let t=u.join(e,"packages/cgmaker");if(p.existsSync(t))return`file:${t.replace(/\\/g,"/")}`}return`^${yt().version}`}function kt(e){let t=e.split("@")[0]??e;return((t.includes("/")?t.split("/").pop():t)||"game").replace(/^tmpl_/,"tmpl-")}function ye(e){return/^[a-zA-Z0-9]+$/.test(e)}function ht(e){let t=e.filter(d=>d!=="--"),n,r,s,o=!1,a=!1,_=!1,S=!1,l=!1,y=[];for(let d=0;d<t.length;d++){let c=t[d];if(c==="--from-dir"){let m=t[++d];if(!m||m.startsWith("-"))throw new Error(i("err","from_dir_need_path"));n=m;continue}if(c.startsWith("--from-dir=")){if(n=c.slice(11),!n)throw new Error(i("err","from_dir_need_path"));continue}if(c==="--data-id"||c==="--data-ver-id"){let m=t[++d];if(!m||m.startsWith("-"))throw new Error(i("err","data_id_need"));r=m;continue}if(c.startsWith("--data-id=")){if(r=c.slice(10),!r)throw new Error(i("err","data_id_need"));continue}if(c.startsWith("--data-ver-id=")){if(r=c.slice(14),!r)throw new Error(i("err","data_id_need"));continue}if(c==="--skill-all"){o=!0;continue}if(c==="--skill-skip"||c==="--skip-skill"){a=!0;continue}if(c==="--agent"){_=!0;continue}if(c==="--apply-update"){S=!0;continue}if(c==="--skip-update"){l=!0;continue}if(c!=="--json"){if(c==="--skill-platform"){let m=t[++d];if(!m||m.startsWith("-"))throw new Error(i("err","skill_platform_need"));s=m;continue}if(c.startsWith("--skill-platform=")){if(s=c.slice(17),!s)throw new Error(i("err","skill_platform_need"));continue}y.push(c)}}if(o&&s)throw new Error(i("err","skill_conflict"));if(a&&(o||s))throw new Error(i("err","skill_conflict"));return{rest:y,fromDir:n,dataId:r,skillPlatform:s,skillAll:o,skillSkip:a,agent:_,applyUpdate:S,skipUpdateFlag:l}}function Et(e,t){process.stdout.write(`${JSON.stringify({success:!1,code:11,command:"need-input",message:e,data:{questions:t}},null,2)}
22
- `)}function St(e){return process.env.CI==="true"||process.env.CGMAKER_NO_INTERACTIVE==="1"?!1:e||process.env.CGMAKER_AGENT==="1"}function H(e,t){try{if(!p.existsSync(e))return;if(!t)p.rmSync(e,{recursive:!0,force:!0});else for(let n of p.readdirSync(e))p.rmSync(u.join(e,n),{recursive:!0,force:!0});console.error(i("err","cleared",{dir:e}))}catch(n){console.error(i("err","clear_failed",{dir:e,e:R(n)}))}}function wt(e,t){let n=ft.createInterface({input:process.stdin,output:process.stdout});return new Promise(r=>{n.question(i("prompt","ask",{question:e,fallback:t}),s=>{n.close(),r(s.trim()||t)})})}function ke(){return!!(process.stdin.isTTY&&process.stdout.isTTY)}function xt(e,t){p.mkdirSync(e,{recursive:!0});let n={name:t,private:!0,type:"module",engines:{node:">=20"},devDependencies:{"@66rpg/cgmaker":Ee()}};p.writeFileSync(u.join(e,"package.json"),`${JSON.stringify(n,null,2)}
23
- `),p.writeFileSync(u.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/\u6A21\u677F\u540D\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 ut(){let e={...we};return delete e._comment,e}var dt=ut();function o(e,t,n){let r=dt[e]?.[t];if(!r?.text)throw new Error(`missing create message ${e}.${t}`);let s=r.text;if(n)for(let[i,c]of Object.entries(n))s=s.split(`{${i}}`).join(String(c));return s}function pt(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 ft(e){return e?e.includes("\uFFFD")||e.includes("\\\\?\\"):!1}function N(e){switch(pt(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 Ee(e){let t=e instanceof Error?e.message:String(e??"");return ft(t)?N(e):t}function Ce(){return process.platform==="win32"?"npm.cmd":"npm"}function P(e,t={}){let n=process.platform==="win32",r=mt(Ce(),e,{windowsHide:n,...t,shell:n});if(r.error)throw new Error(o("err","run_npm",{cmd:Ce(),e:N(r.error)}));return r}import q from"node:fs";import gt from"node:os";import M from"node:path";import{fileURLToPath as kt}from"node:url";var V="huanguang",Ae="cgmaker_npm",be="cgmaker_create",_t=`https://fx-it.66rpg.com:8206/sa?project=${V}`;function Z(e,t=V){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 Y(e,t){return String(e[t]??"").trim().toLowerCase()}function yt(e){let t=Y(e,"CGMAKER_NO_ANALYTICS");if(t==="1"||t==="true")return!0;let n=Y(e,"CGMAKER_ANALYTICS");if(n==="0"||n==="false")return!0;let r=Y(e,"CI");return!!(r==="true"||r==="1"||e.NODE_TEST_CONTEXT)}function St(){let e=M.dirname(kt(import.meta.url));for(;;){if(q.existsSync(M.join(e,"package.json")))return e;let t=M.dirname(e);if(t===e)return e;e=t}}function ht(){try{let e=JSON.parse(q.readFileSync(M.join(St(),"package.json"),"utf8"));return typeof e.version=="string"?e.version:""}catch{return""}}function xt(e){try{let t=M.join(e,".cgmaker","config.json");if(!q.existsSync(t))return;let n=JSON.parse(q.readFileSync(t,"utf8"));return n&&typeof n=="object"?n:void 0}catch{return}}function wt(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 Et(e){let t=e?.env??process.env,n=e?.homeDir??gt.homedir(),r=e?.fileConfig??(e?.skipFile?void 0:xt(n)),s=wt(r),i=r?.sensorsAnalytics,c=!0;typeof i?.enabled=="boolean"&&(c=i.enabled),yt(t)&&(c=!1);let m=_t,S=typeof i?.serverUrl=="string"?i.serverUrl.trim():"";S&&Z(S)&&(m=S);let l=typeof t.CGMAKER_SENSORS_URL=="string"?t.CGMAKER_SENSORS_URL.trim():"";l&&Z(l)&&(m=l),Z(m)||(c=!1);let _=Y(t,"CGMAKER_ANALYTICS_LOG"),k=s!=="release"&&(i?.showLog===!0||_==="1"||_==="true");return{enabled:c,serverUrl:m,showLog:k,deployEnv:s,releaseId:e?.releaseId??ht()}}var ee;function j(){return ee||(ee=Et()),ee}var Ct="https://test-cg-maker.66rpg.com/common/public-info/test.json",At="https://cg-maker.66rpg.com/common/public-info/release.json",bt=5e3,$,te;function vt(e=j().deployEnv){return e==="test"?Ct:At}function Rt(e){let t=e.trim().replace(/^\uFEFF/,"").trim();if(!t||t.startsWith("<"))return{};let n=t;for(let r=0;r<3&&typeof n=="string";r+=1)try{n=JSON.parse(n.trim())}catch{return{}}return Tt(n)}function Tt(e){let t={};return Re(e,t),t}function Re(e,t){if(!e||typeof e!="object")return;if(Array.isArray(e)){for(let r of e)ve(t,r);return}let n=e;if(Array.isArray(n.items))for(let r of n.items)ve(t,r);for(let r of["data","list","result","content","payload"]){let s=n[r];s&&typeof s=="object"&&Re(s,t)}for(let[r,s]of Object.entries(n)){if(r==="items"||r==="data"||r==="list"||r==="result"||r==="content"||r==="payload")continue;let i=Te(s);i&&(t[r.trim().toLowerCase()]||=i)}}function ve(e,t){if(!t||typeof t!="object"||Array.isArray(t))return;let n=t,r=String(n.keyName??n.key_name??"").trim().toLowerCase();if(!r)return;let s=Te(n.keyValue??n.key_value??n[r]);s&&(e[r]||=s)}function Te(e){return typeof e=="string"?e.trim():typeof e=="number"&&Number.isFinite(e)?String(e):""}function It(e=$??{}){let t=(e.email??"").trim(),n=(e.qq??"").trim();return t&&n?`\uFF08\u90AE\u7BB1 ${t}\uFF0CQQ ${n}\uFF09`:t?`\uFF08\u90AE\u7BB1 ${t}\uFF09`:n?`\uFF08QQ ${n}\uFF09`:""}function Ie(e,t){return e.split("{contact}").join(It(t??$??{}))}async function ne(){if($===void 0){if(process.env.NODE_TEST_CONTEXT){$={};return}te||(te=Nt()),$=await te}}async function Nt(){let e=new AbortController,t=setTimeout(()=>e.abort(),bt);try{let n=await fetch(vt(),{signal:e.signal,headers:{Accept:"application/json,text/plain,*/*","User-Agent":"cgmaker"}});return n.ok?Rt(await n.text()):{}}catch{return{}}finally{clearTimeout(t)}}import O from"node:fs";import Pt from"node:os";import T from"node:path";import jt from"node:readline";import{fileURLToPath as Ot}from"node:url";var je=["@66rpg/cgmaker","@66rpg/cgmaker-create","@66rpg/cgmaker-win32-x64"],Ft=1440*60*1e3;function Dt(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 c=n[i]??0,m=r[i]??0;if(c>m)return!0;if(c<m)return!1}return!1}function re(e=Pt.homedir()){return T.join(e,".cgmaker","update-check.json")}function Lt(e=re()){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 W(e,t=re()){O.mkdirSync(T.dirname(t),{recursive:!0}),O.writeFileSync(t,`${JSON.stringify(e,null,2)}
20
+ `)}function Ut(){return T.resolve(T.dirname(Ot(import.meta.url)),"..")}function Mt(e,t=process.cwd()){if(e==="@66rpg/cgmaker-create")try{let n=JSON.parse(O.readFileSync(T.join(Ut(),"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 Ne(e,t=process.cwd(),n={}){let r=[];for(let s of je){let i=e[s];if(!i||n[s]===i)continue;let c=Mt(s,t);c&&Dt(i,c)&&r.push({name:s,current:c,latest:i})}return r}function $t(e=process.cwd()){let t={};for(let n of je)try{let r=P(["view",n,"version"],{cwd:e,encoding:"utf8",timeout:2e3}),s=(r.stdout??"").toString().trim().split(`
21
+ `)[0]?.trim();r.status===0&&s&&(t[n]=s)}catch{}return t}function Gt(){return process.env.CI==="true"||process.env.CGMAKER_NO_INTERACTIVE==="1"||process.env.CGMAKER_SKIP_UPDATE==="1"}function Jt(){return process.platform==="win32"?["@66rpg/cgmaker-win32-x64"]:[]}function Bt(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 Kt(e,t){let n=jt.createInterface({input:process.stdin,output:process.stdout});return new Promise(r=>{n.question(`${e} [${t}]: `,s=>{n.close(),r(s.trim()||t)})})}async function Oe(e){if(Gt())return"continue";let t=e.cwd??process.cwd(),n=e.now??Date.now(),r=e.ppid??process.ppid,s=e.cacheFile??re(),i=Lt(s)??{checkedAt:0,latest:{}};if(n-i.checkedAt>=Ft){let l={};try{l=e.fetch?e.fetch():$t(t)}catch{l={}}i={...i,checkedAt:n,latest:{...i.latest,...l}},W(i,s)}if(e.apply)return Pe(i.latest,t);if(e.skip){let l={...i.declined};for(let _ of Ne(i.latest,t))l[_.name]=_.latest;return W({...i,declined:l,promptedPpid:r},s),"continue"}let c=Ne(i.latest,t,i.declined??{});if(c.length===0)return"continue";if(e.agent)return Bt(c),"agent-block";if(!e.tty||i.promptedPpid===r)return"continue";let m=c.map(l=>`${l.name} ${l.current} \u2192 ${l.latest}`).join(`
23
+ `),S=await Kt(`${o("prompt","update_ask")}
24
+ ${m}`,"Y");if(W({...i,promptedPpid:r},s),/^(n|no|否)$/i.test(S)){let l={...i.declined};for(let _ of c)l[_.name]=_.latest;return W({...i,declined:l,promptedPpid:r},s),"continue"}return Pe(i.latest,t)}function Pe(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 s of["@66rpg/cgmaker","@66rpg/cgmaker-create",...Jt()]){let i=e[s];r.push(i?`${s}@${i}`:`${s}@latest`)}console.error(o("ok","update_installing"));try{if(P(["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 Yt=[{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"]}],se=["agents","cursor","claude","codex","opencode","codebuddy","workbuddy","trae","kimi","qwen"];function qt(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 Vt(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 ie(e=process.env){let t=qt(Vt(e));for(let{id:n,tokens:r}of Yt)if(r.some(s=>t.includes(` ${s} `)))return n}function oe(e,t){return!t||!e.includes(t)?[...e]:[t,...e.filter(n=>n!==t)]}function Fe(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 G from"node:fs";import ce from"node:path";function ae(e){if(!G.existsSync(e)||!G.statSync(e).isDirectory()||G.existsSync(ce.join(e,".cgmaker","origin.json")))return!1;let t=ce.join(e,"package.json");if(!G.existsSync(t))return!1;try{let n=JSON.parse(G.readFileSync(t,"utf8"));return!!(n.devDependencies?.["@66rpg/cgmaker"]||n.dependencies?.["@66rpg/cgmaker"])}catch{return!1}}function De(e){return ce.join(e,"node_modules/@66rpg/cgmaker/bin/cgmaker.js")}function Le(e){let t=e.trim();return!(!t||t.startsWith("-"))}import J from"node:fs";import E from"node:path";import{fileURLToPath as Wt}from"node:url";var le="cgmaker-create";function ue(){return E.resolve(E.dirname(Wt(import.meta.url)),"..")}function zt(e=ue()){return E.join(e,"skill",le)}function Ht(e){return(e.replace(/\\/g,"/").split("/").filter(Boolean)[0]??"").replace(/^\./,"").toLowerCase()}function Qt(e=ue()){let t=JSON.parse(J.readFileSync(E.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=>!E.isAbsolute(r)&&!r.split(/[\\/]/).includes(".."))}function Xt(e,t){if("all"in t)return[...e];let n=t.platform.trim().replace(/^[.\\/]+/,"").split(/[\\/]/)[0]?.toLowerCase()??"";return e.filter(r=>Ht(r)===n)}function Ue(e,t){J.mkdirSync(t,{recursive:!0});for(let n of J.readdirSync(e,{withFileTypes:!0})){let r=E.join(e,n.name),s=E.join(t,n.name);n.isDirectory()?Ue(r,s):J.copyFileSync(r,s)}}function Me(e,t,n=ue()){let r=zt(n);if(!J.existsSync(E.join(r,"SKILL.md")))return[];let s=Xt(Qt(n),t),i=[];for(let c of s)Ue(r,E.join(e,c,le)),i.push(`${c.replace(/\\/g,"/")}/${le}`);return i}function de(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 pe(e,t,n){let r=e.slice(t.length);if(!r)throw new Error(o("err",n));return r}function $e(e){let t=e.filter(k=>k!=="--"),n,r,s,i=!1,c=!1,m=!1,S=!1,l=!1,_=[];for(let k=0;k<t.length;k++){let a=t[k];if(a==="--from-dir"){let p=de(t,k,"from_dir_need_path");n=p.value,k=p.next;continue}if(a.startsWith("--from-dir=")){n=pe(a,"--from-dir=","from_dir_need_path");continue}if(a==="--with-assets"){let p=de(t,k,"with_assets_need");r=p.value,k=p.next;continue}if(a.startsWith("--with-assets=")){r=pe(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"){i=!0;continue}if(a==="--skill-skip"||a==="--skip-skill"){c=!0;continue}if(a==="--agent"){m=!0;continue}if(a==="--apply-update"){S=!0;continue}if(a==="--skip-update"){l=!0;continue}if(a!=="--json"){if(a==="--skill-platform"){let p=de(t,k,"skill_platform_need");s=p.value,k=p.next;continue}if(a.startsWith("--skill-platform=")){s=pe(a,"--skill-platform=","skill_platform_need");continue}_.push(a)}}if(i&&s)throw new Error(o("err","skill_conflict"));if(c&&(i||s))throw new Error(o("err","skill_conflict"));return{rest:_,fromDir:n,dataId:r,skillPlatform:s,skillAll:i,skillSkip:c,agent:m,applyUpdate:S,skipUpdateFlag:l}}function Ge(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("/"),s=t.slice(0,r),i=t.slice(r+1),c=i.includes("@")?i.slice(0,i.indexOf("@")):i;if(!s||!c)return!1}return!0}var B={CliCreateStart:"CliCreateStart",CliCreateStep:"CliCreateStep",CliCreateResult:"CliCreateResult"},Zt=["dest","skill","scaffold","npm_install","init","npm_install_again"],en=new Set(Zt);function Je(e){if(e)return en.has(e)?e:void 0}var tn=new Set(["usage","need_input","update","dest_exists","from_dir_invalid","npm_install","bin_missing","init_failed","login_required","fail"]);function fe(e){if(e)return tn.has(e)?e:void 0}function me(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 un from"node:os";import Ve from"node:path";import Be from"node:fs";import Ke from"node:os";import nn from"node:path";var rn="analytics-identity.json";function sn(e){return nn.join(e,".cgmaker",rn)}function on(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 ge(e=Ke.homedir()){try{let t=sn(e);if(!Be.existsSync(t))return;let n=JSON.parse(Be.readFileSync(t,"utf8"));return on(n?.uid)}catch{return}}function Ye(e=Ke.homedir()){let t=ge(e);return t?{uid:t,logged_in:!0}:{logged_in:!1}}var cn=/^\$?[A-Za-z][A-Za-z0-9_]{0,99}$/,an=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 ln(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 qe(e){let t={};for(let[n,r]of Object.entries(e)){if(!cn.test(n)||an.has(n.toLowerCase()))continue;let s=ln(r);s!==void 0&&(t[n]=s)}return t}var dn=100,pn=600,fn=700,mn="analytics-device-id",z=[],H=new Set,I,ke=!1;function We(e){try{return`${e}-${crypto.randomUUID()}`}catch{return`${e}-${Date.now()}-${Math.random().toString(36).slice(2,12)}`}}function ze(e=un.homedir()){if(I)return I;let t=Ve.join(e,".cgmaker"),n=Ve.join(t,mn);try{if(F.existsSync(n)){let s=F.readFileSync(n,"utf8").trim();if(s)return I=s,s}let r=We("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=We("session"),I}}function gn(){let e=Number.parseInt(process.versions.node,10);return Number.isFinite(e)?e:void 0}function kn(){return ge()??ze()}function _n(){let e=j(),t=Ye();return{product:Ae,app_id:be,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:gn(),logged_in:t.logged_in,uid:t.uid,$is_login_id:!!t.uid}}function yn(e){H.add(e),e.finally(()=>H.delete(e))}async function Sn(e,t){let n=j();if(!n.enabled)return;let r={distinct_id:kn(),time:Date.now(),type:"track",event:e,project:V,properties:{$lib:"Node",$lib_version:n.releaseId||"0",$lib_method:"code",...qe({..._n(),...t})}};n.showLog&&console.error(`[cgmaker analytics] ${e}`);let s=Buffer.from(JSON.stringify(r),"utf8").toString("base64"),i=`data=${encodeURIComponent(s)}&gzip=0`,c=await fetch(n.serverUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:i,redirect:"error",signal:AbortSignal.timeout(pn)});n.showLog&&console.error(`[cgmaker analytics] ${e} ${c.status}`)}function He(){if(ke)return;ke=!0;let e=z.splice(0);for(let t of e)yn(Sn(t.name,t.properties).catch(()=>{}));ke=!1}function Q(e,t={}){try{if(!j().enabled)return;z.length>=dn&&z.shift(),z.push({name:e,properties:t}),He()}catch{}}async function Qe(e=fn){try{if(He(),H.size===0)return;await Promise.race([Promise.allSettled([...H]),new Promise(t=>{setTimeout(t,e).unref?.()})])}catch{}}function hn(e){return!!(e&&/^[a-zA-Z0-9]+$/.test(e))}function _e(e){return{package:"cgmaker-create",source:e.source,has_data_id:e.has_data_id,skill:e.skill,agent:!!e.agent,content_id:hn(e.content_id)?e.content_id:void 0}}function ye(e={}){Q(B.CliCreateStart,_e(e))}function Se(e,t={}){let n=Je(e);n&&Q(B.CliCreateStep,{..._e(t),step:n,success:t.success!==!1,reason:fe(t.reason),resume:t.resume,skipped:t.skipped})}function xn(e,t={}){let n=t.outcome??me(e),r=t.success??(e===0&&n==="ok");Q(B.CliCreateResult,{..._e(t),success:r,outcome:n,reason:fe(t.reason)??(n==="ok"?void 0:n)})}async function X(e,t={}){try{t.skip||xn(e,t),await Qe()}catch{}process.exit(e)}function D(){return`${o("help","body")}${Ie(o("help","contact"))}
26
+ `}function st(){return f.resolve(f.dirname(wn(import.meta.url)),"..")}function it(e=process.cwd()){let t=e;for(;;){let n=f.join(t,"templates"),r=f.join(t,"package.json");if(d.existsSync(n)&&d.existsSync(r))try{if(JSON.parse(d.readFileSync(r,"utf8")).workspaces?.some(c=>c.includes("templates")))return t}catch{}let s=f.dirname(t);if(s===t)return null;t=s}}function Cn(){return JSON.parse(d.readFileSync(f.join(st(),"package.json"),"utf8"))}function ot(){let e=it();if(e){let t=f.join(e,"packages/cgmaker");if(d.existsSync(t))return`file:${t.replace(/\\/g,"/")}`}return`^${Cn().version}`}function Xe(e){let t=e.split("@")[0]??e;return((t.includes("/")?t.split("/").pop():t)||"game").replace(/^tmpl_/,"tmpl-")}function Ze(e){return/^[a-zA-Z0-9]+$/.test(e)}function An(e){return $e(e)}function bn(e,t){process.stdout.write(`${JSON.stringify({success:!1,code:11,command:"need-input",message:e,data:{questions:t}},null,2)}
27
+ `)}function ct(){return process.env.CI==="true"||process.env.CGMAKER_NO_INTERACTIVE==="1"}function vn(e){return ct()?!1:e||process.env.CGMAKER_AGENT==="1"}function et(e,t){try{if(!d.existsSync(e))return;if(!t)d.rmSync(e,{recursive:!0,force:!0});else for(let n of d.readdirSync(e))d.rmSync(f.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:N(n)}))}}function at(e,t){return new Promise(n=>{t.question(e,r=>n(r))})}async function tt(e){let t=rt.createInterface({input:process.stdin,output:process.stdout});try{for(;;){let n=(await at(o("prompt","dest_dir_ask",{suggested:e}),t)).trim();if(!n){console.log(o("prompt","dest_empty"));continue}if(!Le(n)){console.log(o("prompt","dest_invalid"));continue}return n}}finally{t.close()}}async function Rn(){let e=ie(),t=oe([...se],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 c=t[i];console.log(c===n?o("prompt","skill_item_current",{n:String(i+1),id:c,mark:r}):o("prompt","skill_item",{n:String(i+1),id:c}))}console.log(o("prompt","skill_all")),console.log(o("prompt","skill_skip"));let s=rt.createInterface({input:process.stdin,output:process.stdout});try{for(;;){let i=Fe(await at(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 L(){return!!(process.stdin.isTTY&&process.stdout.isTTY)}function Tn(e,t){d.mkdirSync(e,{recursive:!0});let n={name:t,private:!0,type:"module",engines:{node:">=20"},devDependencies:{"@66rpg/cgmaker":ot()}};d.writeFileSync(f.join(e,"package.json"),`${JSON.stringify(n,null,2)}
28
+ `),d.writeFileSync(f.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:")&&p.writeFileSync(u.join(e,".npmrc"),`@66rpg:registry=${s}
27
- `)}function At(e,t){let n=u.join(e,"package.json"),r=JSON.parse(p.readFileSync(n,"utf8"));r.name=t,r.devDependencies=r.devDependencies??{},r.devDependencies["@66rpg/cgmaker"]||(r.devDependencies["@66rpg/cgmaker"]=Ee()),p.writeFileSync(n,`${JSON.stringify(r,null,2)}
28
- `)}function vt(){return process.platform==="win32"?"cgmaker.exe":"cgmaker"}function bt(){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 Rt(e){let t=vt(),n=[];for(let r of["release","debug"]){for(let s of bt())n.push(u.join(e,s,r,t));n.push(u.join(e,r,t))}return n}function Ct(){if(process.env.CG_MAKER_CLI_BIN&&p.existsSync(process.env.CG_MAKER_CLI_BIN))return process.env.CG_MAKER_CLI_BIN;if(process.env.CGMAKER_BIN&&p.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=he();t&&e.push(u.join(t,"target"));for(let n of e)for(let r of Rt(n))if(p.existsSync(r))return r}async function Nt(){let{rest:e,fromDir:t,dataId:n,skillPlatform:r,skillAll:s,skillSkip:o,agent:a,applyUpdate:_,skipUpdateFlag:S}=ht(process.argv.slice(2));if(e.includes("-h")||e.includes("--help")){process.stdout.write(T());return}let l=St(a);l&&(process.env.CGMAKER_AGENT="1");let y={agent:l,source:t?"from_dir":"template_id",has_data_id:!!n,skill:s?"all":o?"skip":r?"platform":"none",content_id:void 0},d=(f,h={})=>K(f,{...y,...h});if(_||S||e.length>0){let f=await re({apply:_,skip:S,agent:l,tty:ke()});if(f==="updated-exit")return d(0,{reason:"update",outcome:"update"});if(f==="agent-block")return d(10,{reason:"update"})}if(e.length===0)return process.stdout.write(T()),d(1,{reason:"usage"});let c=e[0],m=e[1],x=n??e[2];if(ye(c)&&!t&&(y.content_id=c),y.has_data_id=!!x,e.length>3)return process.stderr.write(T()),d(1,{reason:"usage"});if(!c||c.startsWith("-"))return process.stderr.write(T()),d(1,{reason:"usage"});if(c.includes("/"))return console.error(i("err","owner_slug")),d(1,{reason:"usage"});if(m?.startsWith("-"))return process.stderr.write(T()),d(1,{reason:"usage"});if(t&&x)return console.error(i("err","data_id_from_dir")),d(1,{reason:"usage"});if(x&&x!=="0"&&!ye(x))return console.error(i("err","invalid_data_id",{id:x})),d(1,{reason:"usage"});if(l){let f=[];if(m||f.push({id:"create.dest",kind:"text",question:i("prompt","dest_dir")}),!r&&!s&&!o){let h=[...se],E=oe(),w=E&&h.includes(E)?E:void 0,b=i("prompt","skill_current_suffix");f.push({id:"create.skill",kind:"select",question:w?i("prompt","skill_detected",{id:w}):i("prompt","skill"),recommended:!0,default:w,options:[...ie(h,w).map(g=>({value:g,label:g===w?`${g}${b}`:g,flag:`--skill-platform ${g}`,recommended:g===w})),{value:"__all__",label:"all",flag:"--skill-all"},{value:"skip",label:"skip",flag:"--skill-skip",optional:!0}]})}if(f.some(h=>h.optional!==!0))return Et(i("err","need_input"),f),d(11,{reason:"need_input"})}if(t){let f=u.resolve(t);if(!p.existsSync(u.join(f,"package.json")))return console.error(i("err","from_dir_not_template",{dir:f})),d(1,{reason:"from_dir_invalid"})}if(!m){let f=kt(c);if(!ke())return console.error(i("err","need_dest_no_tty")),process.stderr.write(T()),d(1,{reason:"usage"});m=await wt(i("prompt","dest_dir"),f)}let k=u.resolve(m),j=p.existsSync(k);if(j&&p.readdirSync(k).length)return console.error(i("err","dest_exists",{dir:k})),d(1,{reason:"dest_exists"});let P=async(f,h=1,E="fail")=>(H(k,j),console.error(f),d(h,{reason:E}));try{xt(k,u.basename(k));let f=C(["install"],{cwd:k,stdio:"inherit"});f.status!==0&&await P(i("err","npm_install"),f.status??1,"npm_install");let h=u.join(k,"node_modules/@66rpg/cgmaker/bin/cgmaker.js");p.existsSync(h)||await P(i("err","bin_missing",{js:h}),1,"bin_missing");let E=[h,"init",c];t&&E.push("--from-dir",u.resolve(t)),x&&E.push("--data-id",x),s&&E.push("--all"),r&&E.push("--platform",r),o&&E.push("--skip-skill"),l&&E.push("--agent","--json");let w=Ct(),b={...process.env};w&&(b.CGMAKER_BIN=w),l&&(b.CGMAKER_AGENT="1"),b.CGMAKER_SKIP_UPDATE="1";let g=gt(process.execPath,E,{cwd:k,stdio:"inherit",windowsHide:!0,env:b});if(g.error&&await P(i("err","run_js",{js:h,e:R(g.error)}),1,"init_failed"),g.status===10||g.status===11||g.status===12)return H(k,j),d(g.status,{reason:g.status===10?"update":g.status===11?"need_input":"fail"});g.status!==0&&await P(i("err","init_failed"),g.status??1,"init_failed"),At(k,u.basename(k));let W=C(["install"],{cwd:k,stdio:"inherit"});W.status!==0&&await P(i("err","npm_install_again"),W.status??1,"npm_install")}catch(f){throw H(k,j),f}return console.log(i("ok","written",{dir:k})),console.log(i("ok","installed")),t&&console.log(i("ok","local_origin")),console.log(i("ok","next")),d(0,{success:!0,outcome:"ok"})}Nt().catch(async e=>{console.error(Z(e)),await K(1,{reason:"fail"})});
31
+ `);let r=n.devDependencies["@66rpg/cgmaker"],s=process.env.CGMAKER_NPM_SCOPE_REGISTRY?.trim();s&&typeof r=="string"&&!r.startsWith("file:")&&d.writeFileSync(f.join(e,".npmrc"),`@66rpg:registry=${s}
32
+ `)}function nt(e,t){let n=f.join(e,"package.json"),r=JSON.parse(d.readFileSync(n,"utf8"));r.name=t,r.devDependencies=r.devDependencies??{},r.devDependencies["@66rpg/cgmaker"]||(r.devDependencies["@66rpg/cgmaker"]=ot()),d.writeFileSync(n,`${JSON.stringify(r,null,2)}
33
+ `)}function In(){return process.platform==="win32"?"cgmaker.exe":"cgmaker"}function Nn(){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 Pn(e){let t=In(),n=[];for(let r of["release","debug"]){for(let s of Nn())n.push(f.join(e,s,r,t));n.push(f.join(e,r,t))}return n}function jn(){if(process.env.CG_MAKER_CLI_BIN&&d.existsSync(process.env.CG_MAKER_CLI_BIN))return process.env.CG_MAKER_CLI_BIN;if(process.env.CGMAKER_BIN&&d.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=it();t&&e.push(f.join(t,"target"));for(let n of e)for(let r of Pn(n))if(d.existsSync(r))return r}async function On(){let e=An(process.argv.slice(2));ne();let{rest:t,fromDir:n,dataId:r,agent:s,applyUpdate:i,skipUpdateFlag:c}=e,{skillPlatform:m,skillAll:S,skillSkip:l}=e;if(t.includes("-h")||t.includes("--help")){await ne(),process.stdout.write(D());return}let _=vn(s);_&&(process.env.CGMAKER_AGENT="1");let k={agent:_,source:n?"from_dir":"template_id",has_data_id:!!r,skill:S?"all":l?"skip":m?"platform":"none",content_id:void 0},a=(u,y={})=>X(u,{...k,...y}),p=(u,y={})=>{try{Se(u,{...k,...y})}catch{}};if(i||c||t.length>0){let u=await Oe({apply:i,skip:c,agent:_,tty:L()});if(u==="updated-exit")return a(0,{reason:"update",outcome:"update"});if(u==="agent-block")return a(10,{reason:"update"})}if(t.length===0)return process.stdout.write(D()),a(1,{reason:"usage"});let C=t[0],A=t[1],b=r;if(Ze(C)&&!n&&(k.content_id=C),k.has_data_id=!!b,t.length>2)return process.stderr.write(D()),a(1,{reason:"usage"});if(!C||C.startsWith("-"))return process.stderr.write(D()),a(1,{reason:"usage"});if(!Ge(C))return console.error(o("err","owner_slug")),a(1,{reason:"usage"});if(A?.startsWith("-"))return process.stderr.write(D()),a(1,{reason:"usage"});if(n&&b)return console.error(o("err","data_id_from_dir")),a(1,{reason:"usage"});if(b&&b!=="0"&&!Ze(b))return console.error(o("err","invalid_data_id",{id:b})),a(1,{reason:"usage"});try{ye(k)}catch{}if(_||!L()&&!ct()){let u=[];if(A||u.push({id:"create.dest",kind:"text",question:o("prompt","dest_dir"),recommended:!0}),!m&&!S&&!l){let y=[...se],v=ie(),x=v&&y.includes(v)?v:void 0,h=o("prompt","skill_current_suffix");u.push({id:"create.skill",kind:"select",question:x?o("prompt","skill_detected",{id:x}):o("prompt","skill"),recommended:!0,default:x,options:[...oe(y,x).map(w=>({value:w,label:w===x?`${w}${h}`:w,flag:`--skill-platform ${w}`,recommended:w===x})),{value:"__all__",label:"all",flag:"--skill-all"},{value:"skip",label:"skip",flag:"--skill-skip",optional:!0}]})}if(u.some(y=>y.optional!==!0))return bn(o("err","need_input"),u),a(11,{reason:"need_input"})}if(n){let u=f.resolve(n);if(!d.existsSync(f.join(u,"package.json")))return console.error(o("err","from_dir_not_template",{dir:u})),a(1,{reason:"from_dir_invalid"})}let he=!!A;if(!A){if(!L())return console.error(o("err","need_dest_no_tty")),process.stderr.write(D()),a(1,{reason:"usage"});A=await tt(Xe(C)),he=!1}let g=f.resolve(A),K=d.existsSync(g),R=ae(g);for(;K&&d.readdirSync(g).length&&!R;){if(console.error(o("err","dest_exists",{dir:g})),p("dest",{success:!1,reason:"dest_exists"}),he||!L())return a(1,{reason:"dest_exists"});A=await tt(Xe(C)),g=f.resolve(A),K=d.existsSync(g),R=ae(g)}if(p("dest",{success:!0,resume:R}),!m&&!S&&!l&&L()){let u=await Rn();u==="all"?S=!0:u==="skip"?l=!0:m=u,k.skill=S?"all":l?"skip":"platform"}p("skill",{success:!0});let U=async(u,y=1,v="fail")=>(R||et(g,K),console.error(u),a(y,{reason:v}));try{if(R?nt(g,f.basename(g)):Tn(g,f.basename(g)),p("scaffold",{success:!0,resume:R}),!l&&(S||m))try{Me(g,S?{all:!0}:{platform:m},st())}catch{}let u=De(g);if(d.existsSync(u))p("npm_install",{success:!0,skipped:!0});else{let xe=P(["install"],{cwd:g,stdio:"inherit"});xe.status!==0&&(p("npm_install",{success:!1,reason:"npm_install"}),await U(o("err","npm_install"),xe.status??1,"npm_install")),p("npm_install",{success:!0})}d.existsSync(u)||(p("init",{success:!1,reason:"bin_missing"}),await U(o("err","bin_missing",{js:u}),1,"bin_missing"));let y=[u,"init",C];n&&y.push("--from-dir",f.resolve(n)),b&&y.push("--with-assets",b),S&&y.push("--all"),m&&y.push("--platform",m),l&&y.push("--skip-skill"),_&&y.push("--agent","--json");let v=jn(),x={...process.env};v&&(x.CGMAKER_BIN=v),_&&(x.CGMAKER_AGENT="1"),x.CGMAKER_SKIP_UPDATE="1";let h=En(process.execPath,y,{cwd:g,stdio:"inherit",windowsHide:!L(),env:x});if(h.error&&(p("init",{success:!1,reason:"init_failed"}),await U(o("err","run_js",{js:u,e:N(h.error)}),1,"init_failed")),h.status===10||h.status===11||h.status===12)return p("init",{success:!1,reason:h.status===10?"update":h.status===11?"need_input":"login_required"}),a(h.status,{reason:h.status===10?"update":h.status===11?"need_input":"login_required"});h.status!==0&&(p("init",{success:!1,reason:"init_failed"}),await U(o("err","init_failed"),h.status??1,"init_failed")),p("init",{success:!0}),nt(g,f.basename(g));let w=P(["install"],{cwd:g,stdio:"inherit"});w.status!==0&&(p("npm_install_again",{success:!1,reason:"npm_install"}),await U(o("err","npm_install_again"),w.status??1,"npm_install")),p("npm_install_again",{success:!0})}catch(u){throw R||et(g,K),u}return console.log(o("ok","written",{dir:g})),console.log(o("ok","installed")),n&&console.log(o("ok","local_origin")),console.log(o("ok","next")),a(0,{success:!0,outcome:"ok"})}On().catch(async e=>{console.error(Ee(e)),await X(1,{reason:"fail"})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@66rpg/cgmaker-create",
3
- "version": "0.1.21",
3
+ "version": "0.1.23",
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,119 @@
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
+ ## 必须带 `--agent --json`,缺参时先问人
24
+
25
+ 每条命令都加 `--agent --json`。不要猜用户没给的参数。
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
+ `--agent` 只给 Agent 用。
36
+
37
+ ## 用法
38
+
39
+ ```text
40
+ npx @66rpg/cgmaker-create@latest --agent --json <用户名/模板名>
41
+ npx @66rpg/cgmaker-create@latest --agent --json <用户名/模板名> <用户说的目录>
42
+ npx @66rpg/cgmaker-create@latest --agent --json <用户名/模板名@版本>
43
+ npx @66rpg/cgmaker-create@latest --agent --json <用户名/模板名@版本> --with-assets <数据包ID>
44
+ npx @66rpg/cgmaker-create@latest --agent --json <模板id或版本id>
45
+ npx @66rpg/cgmaker-create@latest --agent --json <引用> <用户说的目录> --skill-platform <编辑器>
46
+ npx @66rpg/cgmaker-create@latest --agent --json <引用> <用户说的目录> --skill-all
47
+ npx @66rpg/cgmaker-create@latest --agent --json <引用> <用户说的目录> --from-dir <本地模板目录>
48
+ ```
49
+
50
+ 网页默认命令是 `用户名/模板名`(最新版)、`用户名/模板名@版本`、以及带素材时再加 `--with-assets <数据包ID>`。第一位置整段原样交给平台,不要自己拆成模板 id 还是版本 id。命令里唯一可能出现的 ID 是数据包 ID。
51
+
52
+ ## 参数
53
+
54
+ | 参数 | 必填 | 说明 |
55
+ |---|---|---|
56
+ | `<引用>` | 是 | `用户名/模板名`、`用户名/模板名@版本`、`用户名/模板名@latest`,或平台模板 id / 版本 id |
57
+ | `<目录>` | 用户没说就省略 | 工程要建在哪个文件夹。用户没说时**不要自己编**(不要 `my-game`,不要用模板 id) |
58
+ | `--with-assets <数据包ID>` | 否 | 下载该素材包。值必填。不带则只下代码,不要再问要不要素材 |
59
+ | `--from-dir` | 否 | 暂无云端种子时从本地模板目录拷。不能与 `--with-assets` 一起用。落地 origin 为 `local`,之后不能把这份模板发到平台 |
60
+ | `--skill-platform` | 否 | 只把说明装到该编辑器(如 `cursor`、`workbuddy`) |
61
+ | `--skill-all` | 否 | 装到全部编辑器 |
62
+ | `--skill-skip` | 否 | 本次不装。之后可在工程目录补装 |
63
+ | `--apply-update` / `--skip-update` | 否 | 只在退出码 10 之后按用户答复使用 |
64
+
65
+ `--skill-platform` 与 `--skill-all` / `--skill-skip` 不能同时用。未指定时 CLI 会探测当前编辑器并询问(信封会标明「当前」),**不要擅自写成 cursor**。
66
+
67
+ ## 约束
68
+
69
+ - 用户没说工程放哪时,省略目录参数,让 create 退出 11,用口语问「工程要建在哪个文件夹?」。用户回答后再把名字写进命令重跑。
70
+ - 不要假设「脚本环境会用模板 id 当文件夹名」或「回车沿用建议名」——那不是 Agent 路径。
71
+ - 缺目录或缺编辑器选项时退出 11。随后若还没登录(12),脚手架会留在用户说的目录里,**不要换文件夹、不要删目录**。登录后用同一目录重跑原 create 命令即可续跑。
72
+ - 用户粘贴的网页命令如果没有 `--with-assets`,就不要补素材包,也不要问要不要带素材。
73
+ - 目录已有内容且不是可续跑的脚手架时会失败;换个名字再问用户。
74
+ - 不要编造模板引用或数据包 ID。网页给了 `用户名/模板名` 就原样用。
75
+ - 本包只负责把工程放到电脑上。文件夹建好之前,不要讲发布、不要提前跑 `cgmaker`。
76
+
77
+ ## 工程建好之后:引导去用 cgmaker
78
+
79
+ create 成功后,工程里已经装好 `@66rpg/cgmaker`。后面登录橙光、检查工程、发游戏/模板/开源、改帖子,都进这个文件夹用 `npx cgmaker`。发布规则以工程里的 `cgmaker` skill 为准;本 skill 只负责把人从「还没有文件夹」带到「已经有工程」,并用白话告诉他还能做什么。
80
+
81
+ 先进入用户说的那个文件夹,再跑 cgmaker。每条 `npx cgmaker` 都加 `--agent --json`。不要 `npm login` / `npm publish`。
82
+
83
+ ### 刚建完时跟用户说
84
+
85
+ 用接近下面的口语收尾,不要念包名和旗标:
86
+
87
+ > 工程已经放进你刚才说的文件夹了。后面如果要登录橙光、检查这份工程齐不齐、把游戏或模板发到平台、改帖子名字,直接告诉我就行。这些都在这个工程里做,不用再开一次工程。
88
+
89
+ 用户还没说下一步时,只追问一句:
90
+
91
+ > 你接下来更想先在电脑上跑起来看看、登录账号,还是准备发到平台?
92
+
93
+ ### 用户意图 → 你怎么接
94
+
95
+ 把用户的话听成日常说法。确认时继续用白话;命令只给你自己用,不要念给用户听。
96
+
97
+ | 用户大概会说 | 你怎么确认 | 你进工程目录后跑 |
98
+ |---|---|---|
99
+ | 登录 / 换账号 | 「要打开浏览器登录橙光账号吗?网页里点一下就行。」 | `npx cgmaker login`(换号加 `--force`) |
100
+ | 登出 | 「要退出当前橙光账号吗?」 | `npx cgmaker logout` |
101
+ | 我登录了没 / 现在是谁 | 「我帮你看一下当前登录的是哪个账号。」 | `npx cgmaker whoami` |
102
+ | 检查一下 / 合不合格 / 能不能发 | 「发之前我按平台要求看一眼工程齐不齐。」 | `npx cgmaker validate-template`(游戏成品用 `validate`) |
103
+ | 发出去给人玩 / 上线 / 发正式版 | 「你是要发正式给玩家玩的版本,还是先发一个试玩?」 | 先 `npm run build`,再 `npx cgmaker publish --version …` |
104
+ | 先发试玩 / 演示版 | 「试玩是单独一份,可以先发试玩,以后再补正式版。」 | 先 `npm run build:demo`,再 `npx cgmaker publish --demo --version …` |
105
+ | 把模板发到平台 / 给别人用这个模板 | 「这是把模板发到平台,让别人用它开工程。第一版先发代码,配套素材要等下一版。」 | `npx cgmaker publish-template --version …` |
106
+ | 只改关卡素材、不改代码 | 「只更新素材包,不发新的代码版本。」 | `npx cgmaker publish-template-data` |
107
+ | 把源码开源到平台 | 「这是把整份源码发到平台做开源工程,不是发成品游戏。」 | `npx cgmaker publish-project --version …` |
108
+ | 改名字 / 改介绍 / 先下架 | 「改帖子不用重新上传文件。你是要改名字、改说明,还是暂时从货架拿下来?」 | `npx cgmaker games\|templates\|projects update …` |
109
+ | 补装 AI 说明 / 换编辑器 | 「要把说明装到哪个编辑器?当前检测到的会标出来。」 | `npx cgmaker skill` |
110
+ | 我的游戏/模板/开源列表 | 「我帮你把平台上已有的列出来。」 | `npx cgmaker games` / `templates` / `projects` |
111
+
112
+ 从本地文件夹拷来的工程还没连上平台,不能发模板。这时要老实说:「这份是从本地拷来的,还没接到橙光模板上,不能当模板发出去。」
113
+
114
+ ### 不要跟用户说的
115
+
116
+ - 不要说「已经上线」「已经通过审核」,除非命令成功且结果里明确是审核通过。
117
+ - 不要把「提交成功」说成「已经给玩家玩了」。提交之后还要等审核。
118
+ - 版本号怎么写、第一版为什么不能带素材、试玩和正式版不是同一个通道:切到 `cgmaker` skill 再按那边做,这里不要展开成说明书。
119
+ - 用户没提出发布时,不要主动把上面整张表背一遍。
@@ -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
+ }