@nocobase/cli 2.1.0-beta.9 → 2.2.0-alpha.1
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/assets/env-proxy/nginx/app.conf.tpl +23 -0
- package/assets/env-proxy/nginx/nocobase.conf.tpl +5 -0
- package/assets/env-proxy/nginx/snippets/dist-location.conf +5 -0
- package/assets/env-proxy/nginx/snippets/gzip.conf +17 -0
- package/assets/env-proxy/nginx/snippets/log-format-http.conf +13 -0
- package/assets/env-proxy/nginx/snippets/maps-http.conf +14 -0
- package/assets/env-proxy/nginx/snippets/mime-types.conf +98 -0
- package/assets/env-proxy/nginx/snippets/proxy-location.conf +17 -0
- package/assets/env-proxy/nginx/snippets/spa-location.conf +6 -0
- package/assets/env-proxy/nginx/snippets/uploads-location.conf +21 -0
- package/bin/run.cmd +3 -0
- package/bin/run.js +145 -0
- package/bin/session-env.js +39 -0
- package/dist/commands/api/resource/create.js +15 -0
- package/dist/commands/api/resource/destroy.js +15 -0
- package/dist/commands/api/resource/get.js +15 -0
- package/dist/commands/api/resource/index.js +20 -0
- package/dist/commands/api/resource/list.js +16 -0
- package/dist/commands/api/resource/query.js +15 -0
- package/dist/commands/api/resource/update.js +15 -0
- package/dist/commands/app/autostart/disable.js +55 -0
- package/dist/commands/app/autostart/enable.js +55 -0
- package/dist/commands/app/autostart/list.js +37 -0
- package/dist/commands/app/autostart/run.js +84 -0
- package/dist/commands/app/autostart/shared.js +49 -0
- package/dist/commands/app/destroy.js +234 -0
- package/dist/commands/app/down.js +71 -0
- package/dist/commands/app/logs.js +115 -0
- package/dist/commands/app/restart.js +229 -0
- package/dist/commands/app/shared.js +123 -0
- package/dist/commands/app/start.js +416 -0
- package/dist/commands/app/stop.js +183 -0
- package/dist/commands/app/upgrade.js +523 -0
- package/dist/commands/backup/create.js +147 -0
- package/dist/commands/backup/index.js +20 -0
- package/dist/commands/backup/restore.js +105 -0
- package/{src/cli.js → dist/commands/build.js} +4 -11
- package/dist/commands/config/delete.js +42 -0
- package/dist/commands/config/get.js +39 -0
- package/dist/commands/config/index.js +20 -0
- package/dist/commands/config/list.js +29 -0
- package/dist/commands/config/set.js +49 -0
- package/dist/commands/db/check.js +240 -0
- package/dist/commands/db/logs.js +85 -0
- package/dist/commands/db/ps.js +47 -0
- package/dist/commands/db/shared.js +96 -0
- package/dist/commands/db/start.js +86 -0
- package/dist/commands/db/stop.js +71 -0
- package/{templates/plugin/src/client/models/index.ts → dist/commands/dev.js} +4 -4
- package/{src/commands/locale/react-js-cron/index.js → dist/commands/down.js} +3 -8
- package/dist/commands/download.js +13 -0
- package/dist/commands/env/add.js +406 -0
- package/dist/commands/env/auth.js +189 -0
- package/dist/commands/env/current.js +21 -0
- package/dist/commands/env/info.js +202 -0
- package/dist/commands/env/list.js +43 -0
- package/dist/commands/env/remove.js +174 -0
- package/dist/commands/env/shared.js +204 -0
- package/dist/commands/env/status.js +93 -0
- package/dist/commands/env/update.js +448 -0
- package/dist/commands/env/use.js +38 -0
- package/dist/commands/examples/prompts-stages.js +150 -0
- package/dist/commands/examples/prompts-test.js +181 -0
- package/dist/commands/init.js +1390 -0
- package/dist/commands/install.js +2609 -0
- package/dist/commands/license/activate.js +179 -0
- package/dist/commands/license/env.js +94 -0
- package/dist/commands/license/generate-id.js +108 -0
- package/dist/commands/license/id.js +70 -0
- package/dist/commands/license/index.js +20 -0
- package/dist/commands/license/plugins/clean.js +115 -0
- package/dist/commands/license/plugins/index.js +20 -0
- package/dist/commands/license/plugins/list.js +64 -0
- package/dist/commands/license/plugins/shared.js +382 -0
- package/dist/commands/license/plugins/sync.js +314 -0
- package/dist/commands/license/shared.js +423 -0
- package/dist/commands/license/status.js +64 -0
- package/dist/commands/logs.js +12 -0
- package/dist/commands/plugin/disable.js +86 -0
- package/dist/commands/plugin/enable.js +86 -0
- package/dist/commands/plugin/import.js +108 -0
- package/dist/commands/plugin/list.js +82 -0
- package/dist/commands/pm/disable.js +12 -0
- package/dist/commands/pm/enable.js +12 -0
- package/dist/commands/pm/list.js +12 -0
- package/dist/commands/proxy/caddy/current.js +17 -0
- package/dist/commands/proxy/caddy/generate.js +69 -0
- package/dist/commands/proxy/caddy/index.js +28 -0
- package/dist/commands/proxy/caddy/info.js +31 -0
- package/dist/commands/proxy/caddy/reload.js +30 -0
- package/dist/commands/proxy/caddy/restart.js +28 -0
- package/dist/commands/proxy/caddy/start.js +30 -0
- package/dist/commands/proxy/caddy/status.js +19 -0
- package/dist/commands/proxy/caddy/stop.js +30 -0
- package/dist/commands/proxy/caddy/use.js +26 -0
- package/dist/commands/proxy/index.js +28 -0
- package/dist/commands/proxy/nginx/current.js +18 -0
- package/dist/commands/proxy/nginx/generate.js +68 -0
- package/dist/commands/proxy/nginx/index.js +28 -0
- package/dist/commands/proxy/nginx/info.js +34 -0
- package/dist/commands/proxy/nginx/reload.js +30 -0
- package/dist/commands/proxy/nginx/restart.js +28 -0
- package/dist/commands/proxy/nginx/start.js +30 -0
- package/dist/commands/proxy/nginx/status.js +19 -0
- package/dist/commands/proxy/nginx/stop.js +30 -0
- package/dist/commands/proxy/nginx/use.js +31 -0
- package/dist/commands/restart.js +12 -0
- package/dist/commands/revision/create.js +118 -0
- package/dist/commands/scaffold/migration.js +38 -0
- package/dist/commands/scaffold/plugin.js +37 -0
- package/dist/commands/self/check.js +71 -0
- package/dist/commands/self/index.js +20 -0
- package/dist/commands/self/update.js +152 -0
- package/dist/commands/session/id.js +24 -0
- package/dist/commands/session/remove.js +57 -0
- package/dist/commands/session/setup.js +62 -0
- package/dist/commands/skills/check.js +69 -0
- package/dist/commands/skills/index.js +20 -0
- package/dist/commands/skills/install.js +80 -0
- package/dist/commands/skills/remove.js +80 -0
- package/dist/commands/skills/update.js +87 -0
- package/dist/commands/source/build.js +58 -0
- package/dist/commands/source/dev.js +182 -0
- package/dist/commands/source/download.js +884 -0
- package/dist/commands/source/publish.js +109 -0
- package/dist/commands/source/registry/logs.js +70 -0
- package/dist/commands/source/registry/start.js +57 -0
- package/dist/commands/source/registry/status.js +33 -0
- package/dist/commands/source/registry/stop.js +48 -0
- package/dist/commands/source/test.js +476 -0
- package/dist/commands/start.js +12 -0
- package/dist/commands/stop.js +12 -0
- package/dist/commands/test.js +12 -0
- package/dist/commands/upgrade.js +12 -0
- package/dist/commands/v1.js +210 -0
- package/dist/generated/command-registry.js +134 -0
- package/dist/help/runtime-help.js +23 -0
- package/dist/lib/api-client.js +335 -0
- package/dist/lib/api-command-compat.js +641 -0
- package/dist/lib/app-health.js +139 -0
- package/dist/lib/app-managed-resources.js +337 -0
- package/dist/lib/app-public-path.js +80 -0
- package/dist/lib/app-runtime.js +189 -0
- package/dist/lib/auth-store.js +528 -0
- package/dist/lib/backup.js +171 -0
- package/dist/lib/bootstrap.js +409 -0
- package/dist/lib/build-config.js +18 -0
- package/dist/lib/builtin-db.js +86 -0
- package/dist/lib/cli-config.js +569 -0
- package/dist/lib/cli-entry-error.js +52 -0
- package/dist/lib/cli-home.js +47 -0
- package/dist/lib/cli-locale.js +141 -0
- package/dist/lib/command-discovery.js +39 -0
- package/dist/lib/command-log.js +284 -0
- package/dist/lib/db-connection-check.js +219 -0
- package/dist/lib/docker-env-file.js +60 -0
- package/dist/lib/docker-image.js +37 -0
- package/dist/lib/docker-log-stream.js +45 -0
- package/dist/lib/env-auth.js +963 -0
- package/dist/lib/env-command-config.js +45 -0
- package/dist/lib/env-config.js +108 -0
- package/dist/lib/env-guard.js +61 -0
- package/dist/lib/env-paths.js +101 -0
- package/dist/lib/env-proxy.js +1325 -0
- package/dist/lib/generated-command.js +203 -0
- package/dist/lib/http-request.js +49 -0
- package/dist/lib/inquirer-theme.js +17 -0
- package/dist/lib/inquirer.js +243 -0
- package/dist/lib/managed-env-file.js +101 -0
- package/dist/lib/managed-init-env.js +32 -0
- package/dist/lib/naming.js +70 -0
- package/dist/lib/object-utils.js +76 -0
- package/dist/lib/openapi.js +62 -0
- package/dist/lib/plugin-import.js +279 -0
- package/dist/lib/plugin-storage.js +64 -0
- package/dist/lib/post-processors.js +23 -0
- package/dist/lib/prompt-catalog-core.js +186 -0
- package/dist/lib/prompt-catalog-terminal.js +374 -0
- package/{src/index.js → dist/lib/prompt-catalog.js} +2 -6
- package/dist/lib/prompt-validators.js +278 -0
- package/dist/lib/prompt-web-ui.js +2234 -0
- package/dist/lib/proxy-caddy.js +274 -0
- package/dist/lib/proxy-nginx.js +330 -0
- package/dist/lib/resource-command.js +357 -0
- package/dist/lib/resource-request.js +104 -0
- package/dist/lib/run-npm.js +429 -0
- package/dist/lib/runtime-env-vars.js +32 -0
- package/dist/lib/runtime-generator.js +498 -0
- package/dist/lib/runtime-store.js +56 -0
- package/dist/lib/self-manager.js +301 -0
- package/dist/lib/session-id.js +17 -0
- package/dist/lib/session-integration.js +703 -0
- package/dist/lib/session-store.js +118 -0
- package/dist/lib/skills-manager.js +438 -0
- package/dist/lib/source-publish.js +326 -0
- package/dist/lib/source-registry.js +188 -0
- package/dist/lib/startup-update.js +309 -0
- package/dist/lib/ui.js +159 -0
- package/dist/locale/en-US.json +526 -0
- package/dist/locale/zh-CN.json +526 -0
- package/dist/post-processors/data-modeling.js +84 -0
- package/dist/post-processors/data-source-manager.js +138 -0
- package/dist/post-processors/index.js +19 -0
- package/nocobase-ctl.config.json +388 -0
- package/package.json +128 -24
- package/scripts/build.mjs +34 -0
- package/scripts/clean.mjs +9 -0
- package/tsconfig.json +19 -0
- package/bin/index.js +0 -39
- package/nocobase.conf.tpl +0 -95
- package/src/commands/benchmark.js +0 -73
- package/src/commands/build.js +0 -49
- package/src/commands/clean.js +0 -30
- package/src/commands/client.js +0 -166
- package/src/commands/create-nginx-conf.js +0 -37
- package/src/commands/create-plugin.js +0 -33
- package/src/commands/dev.js +0 -200
- package/src/commands/doc.js +0 -76
- package/src/commands/e2e.js +0 -265
- package/src/commands/global.js +0 -43
- package/src/commands/index.js +0 -45
- package/src/commands/instance-id.js +0 -47
- package/src/commands/locale/cronstrue.js +0 -122
- package/src/commands/locale/react-js-cron/en-US.json +0 -75
- package/src/commands/locale/react-js-cron/zh-CN.json +0 -33
- package/src/commands/locale/react-js-cron/zh-TW.json +0 -33
- package/src/commands/locale.js +0 -81
- package/src/commands/p-test.js +0 -88
- package/src/commands/perf.js +0 -63
- package/src/commands/pkg.js +0 -321
- package/src/commands/pm2.js +0 -37
- package/src/commands/postinstall.js +0 -88
- package/src/commands/start.js +0 -148
- package/src/commands/tar.js +0 -36
- package/src/commands/test-coverage.js +0 -55
- package/src/commands/test.js +0 -107
- package/src/commands/umi.js +0 -33
- package/src/commands/update-deps.js +0 -72
- package/src/commands/upgrade.js +0 -47
- package/src/commands/view-license-key.js +0 -44
- package/src/license.js +0 -76
- package/src/logger.js +0 -75
- package/src/plugin-generator.js +0 -80
- package/src/util.js +0 -517
- package/templates/bundle-status.html +0 -338
- package/templates/create-app-package.json +0 -39
- package/templates/plugin/.npmignore.tpl +0 -2
- package/templates/plugin/README.md.tpl +0 -1
- package/templates/plugin/client.d.ts +0 -2
- package/templates/plugin/client.js +0 -1
- package/templates/plugin/package.json.tpl +0 -11
- package/templates/plugin/server.d.ts +0 -2
- package/templates/plugin/server.js +0 -1
- package/templates/plugin/src/client/client.d.ts +0 -249
- package/templates/plugin/src/client/index.tsx.tpl +0 -1
- package/templates/plugin/src/client/locale.ts +0 -21
- package/templates/plugin/src/client/plugin.tsx.tpl +0 -10
- package/templates/plugin/src/index.ts +0 -2
- package/templates/plugin/src/locale/en-US.json +0 -1
- package/templates/plugin/src/locale/zh-CN.json +0 -1
- package/templates/plugin/src/server/collections/.gitkeep +0 -0
- package/templates/plugin/src/server/index.ts.tpl +0 -1
- package/templates/plugin/src/server/plugin.ts.tpl +0 -19
|
@@ -0,0 +1,526 @@
|
|
|
1
|
+
{
|
|
2
|
+
"promptCatalog": {
|
|
3
|
+
"common": {
|
|
4
|
+
"cancelled": "已取消。",
|
|
5
|
+
"required": "必填",
|
|
6
|
+
"mustBeInteger": "必须为整数"
|
|
7
|
+
},
|
|
8
|
+
"preset": {
|
|
9
|
+
"required": "\"{{key}}\" 为必填项;请设置非空的 values.{{key}},或移除该值以进入交互式填写。",
|
|
10
|
+
"invalidSelect": "values.{{key}} 无效:\"{{value}}\"。可选值为:{{options}}",
|
|
11
|
+
"invalidInteger": "values.{{key}} 无效:必须为整数。"
|
|
12
|
+
},
|
|
13
|
+
"nonInteractive": {
|
|
14
|
+
"textRequired": "非交互模式下,\"{{key}}\" 为必填项;请设置 initialValues.{{key}}、yesInitialValues.{{key}}、block 上的 yesInitialValue,或 initialValue。",
|
|
15
|
+
"selectMissingDefault": "非交互模式下,请为 {{key}} 设置 initialValues.{{key}}、yesInitialValues.{{key}},或在 select block 上配置 initialValue / yesInitialValue / options。",
|
|
16
|
+
"selectInvalidValue": "{{key}} 的值无效:{{value}}。可选值为:{{options}}",
|
|
17
|
+
"selectRequiredNoOptions": "下拉项 \"{{key}}\" 为必填项,但当前没有可选项。",
|
|
18
|
+
"selectRequiredInteractive": "下拉项 \"{{key}}\" 为必填项;请设置 initialValues.{{key}},或在 select block 上配置 initialValue / options。",
|
|
19
|
+
"selectMissingInteractiveDefault": "下拉项 \"{{key}}\" 没有可用默认值;请设置 initialValues.{{key}},或在 block 上配置 options。",
|
|
20
|
+
"passwordRequired": "非交互模式下,\"{{key}}\" 为必填项;请设置 initialValues.{{key}}、yesInitialValues.{{key}},或在 block 上配置 initialValue / yesInitialValue。",
|
|
21
|
+
"passwordRequiredNonEmpty": "非交互模式下,\"{{key}}\" 为必填项;请提供非空的 initialValues / yesInitialValues / initialValue / yesInitialValue。",
|
|
22
|
+
"integerRequired": "非交互模式下,\"{{key}}\" 为必填项;请设置 initialValues.{{key}}、yesInitialValues.{{key}},或在 block 上配置 initialValue / yesInitialValue。"
|
|
23
|
+
},
|
|
24
|
+
"web": {
|
|
25
|
+
"pageTitle": "参数配置(本地页面)",
|
|
26
|
+
"documentHeading": "配置参数(仅本机可访问)",
|
|
27
|
+
"documentHint": "该服务仅监听本机回环地址。提交后,CLI 会在当前终端会话中继续执行。",
|
|
28
|
+
"defaultFormTitle": "表单",
|
|
29
|
+
"defaultStepTitle": "步骤 {{index}}",
|
|
30
|
+
"stepsAriaLabel": "表单步骤",
|
|
31
|
+
"stepsSidebarAriaLabel": "步骤导航",
|
|
32
|
+
"stepNavigationAriaLabel": "步骤导航与提交",
|
|
33
|
+
"submitAriaLabel": "提交",
|
|
34
|
+
"back": "上一步",
|
|
35
|
+
"next": "下一步",
|
|
36
|
+
"submit": "提交并回到终端继续",
|
|
37
|
+
"showPassword": "显示密码",
|
|
38
|
+
"hidePassword": "隐藏密码",
|
|
39
|
+
"checking": "检查中...",
|
|
40
|
+
"sending": "提交中...",
|
|
41
|
+
"successTitle": "成功",
|
|
42
|
+
"errorTitle": "错误",
|
|
43
|
+
"savedAndClosing": "已保存。此标签页将在 5 秒后自动关闭。",
|
|
44
|
+
"savedCloseBlocked": "已保存。浏览器阻止了自动关闭,你现在可以手动关闭此标签页。",
|
|
45
|
+
"invalidValue": "无效值",
|
|
46
|
+
"invalidRequest": "请求无效",
|
|
47
|
+
"invalidStep": "步骤参数无效或缺失。",
|
|
48
|
+
"invalidField": "字段参数无效或缺失。",
|
|
49
|
+
"fieldRequired": "字段 \"{{key}}\" 为必填项。",
|
|
50
|
+
"fieldMustBeInteger": "字段 \"{{key}}\" 必须为整数。"
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"validators": {
|
|
54
|
+
"apiBaseUrl": {
|
|
55
|
+
"invalid": "请输入有效的 URL,例如 {{example}}。",
|
|
56
|
+
"invalidProtocol": "URL 必须以 http:// 或 https:// 开头,例如 {{example}}。",
|
|
57
|
+
"missingApiPrefix": "API 基础地址必须包含 /api 前缀,例如 {{example}}。",
|
|
58
|
+
"healthCheckPathNotAllowed": "API 基础地址中不要包含 /__health_check。请输入应用的 API 基础地址,例如 http://localhost:13000/api。",
|
|
59
|
+
"maintaining": "该 API 地址可以访问,但应用仍在启动或维护过程中,请稍后再试。",
|
|
60
|
+
"healthCheckFailed": "该 API 地址未通过健康检查(HTTP {{status}}),请确认它指向的是一个正在运行的 NocoBase API 地址。",
|
|
61
|
+
"timeout": "等待 API 地址健康检查超时,约 {{seconds}} 秒内未收到响应。",
|
|
62
|
+
"unreachable": "无法连接到该 API 地址,请检查地址是否正确,并确认服务可访问。详情:{{details}}"
|
|
63
|
+
},
|
|
64
|
+
"envKey": {
|
|
65
|
+
"invalid": "仅支持字母和数字。"
|
|
66
|
+
},
|
|
67
|
+
"appPublicPath": {
|
|
68
|
+
"invalid": "请输入 /,或类似 /nocobase/、/foo-bar/baz_2/ 这样的路径。每个路径段仅支持字母、数字、中划线和下划线。"
|
|
69
|
+
},
|
|
70
|
+
"tcpPort": {
|
|
71
|
+
"invalid": "请输入 1 到 65535 之间的有效 TCP 端口,例如 {{example}}。",
|
|
72
|
+
"allocateFailed": "分配可用 TCP 端口失败。",
|
|
73
|
+
"allocateNotDockerPublished": "分配未被 Docker 占用的可用 TCP 端口失败。",
|
|
74
|
+
"alreadyInUse": "端口 {{port}} 已被占用,请更换其他端口。",
|
|
75
|
+
"alreadyInUseByDocker": "端口 {{port}} 已被 Docker 容器占用,请更换其他端口。"
|
|
76
|
+
},
|
|
77
|
+
"dbConnection": {
|
|
78
|
+
"unreachable": "无法连接到数据库 {{host}}:{{port}}。请检查主机、端口和网络连通性。详情:{{details}}",
|
|
79
|
+
"timeout": "连接数据库 {{host}}:{{port}} 超时,约 {{seconds}} 秒内未成功建立连接。",
|
|
80
|
+
"authenticationFailed": "无法使用用户 \"{{user}}\" 登录数据库 \"{{database}}\"。请检查用户名和密码。",
|
|
81
|
+
"databaseNotFound": "数据库 \"{{database}}\" 不存在,或当前连接配置无权访问该数据库。",
|
|
82
|
+
"connectionFailed": "数据库连接检查失败。详情:{{details}}",
|
|
83
|
+
"lowerCaseTableNamesRequiresUnderscored": "当 MySQL 的 lower_case_table_names=1 时,必须设置 DB_UNDERSCORED=true。"
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
"commands": {
|
|
87
|
+
"envAdd": {
|
|
88
|
+
"prompts": {
|
|
89
|
+
"name": {
|
|
90
|
+
"message": "你想如何命名这个环境?",
|
|
91
|
+
"placeholder": "default"
|
|
92
|
+
},
|
|
93
|
+
"scope": {
|
|
94
|
+
"message": "这个连接要保存到哪里?",
|
|
95
|
+
"globalLabel": "全局",
|
|
96
|
+
"globalHint": "保存在用户级配置中"
|
|
97
|
+
},
|
|
98
|
+
"apiBaseUrl": {
|
|
99
|
+
"message": "API 基础地址是什么?",
|
|
100
|
+
"placeholder": "https://demo.example.com/api 或 https://demo.example.com/api/__app/<subapp>"
|
|
101
|
+
},
|
|
102
|
+
"authType": {
|
|
103
|
+
"message": "你想使用哪种认证方式?",
|
|
104
|
+
"basicLabel": "Basic 认证(用户名 + 密码)",
|
|
105
|
+
"basicHint": "保存后会用用户名和密码换取 Token",
|
|
106
|
+
"oauthLabel": "OAuth(浏览器认证)",
|
|
107
|
+
"oauthHint": "保存后会自动执行 nb env auth",
|
|
108
|
+
"tokenLabel": "API Token / API Key"
|
|
109
|
+
},
|
|
110
|
+
"username": {
|
|
111
|
+
"message": "请输入 Basic 登录用户名",
|
|
112
|
+
"placeholder": "admin"
|
|
113
|
+
},
|
|
114
|
+
"password": {
|
|
115
|
+
"message": "请输入 Basic 登录密码"
|
|
116
|
+
},
|
|
117
|
+
"accessToken": {
|
|
118
|
+
"message": "请输入 API Token 或 API Key",
|
|
119
|
+
"placeholder": "请输入你的 API Token / API Key"
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
"envProxy": {
|
|
124
|
+
"messages": {
|
|
125
|
+
"generating": "正在为 env \"{{envName}}\" 生成代理配置...",
|
|
126
|
+
"printed": "已输出 env \"{{envName}}\" 的代理配置。",
|
|
127
|
+
"saved": "已将 env \"{{envName}}\" 的生成代理配置保存到 {{outputPath}}。",
|
|
128
|
+
"savedWithAppEntryCreated": "已将 env \"{{envName}}\" 的生成代理配置保存到 {{outputPath}},并创建可编辑的入口配置 {{appConfigPath}}。",
|
|
129
|
+
"savedWithAppEntryMigrated": "已将 env \"{{envName}}\" 的生成代理配置保存到 {{outputPath}},并将入口配置迁移为 {{appConfigPath}}。",
|
|
130
|
+
"savedNginxBundleCreated": "已将 env \"{{envName}}\" 的 nginx 代理文件保存到 {{entryDir}},并创建可编辑的入口配置 {{appConfigPath}}。",
|
|
131
|
+
"savedNginxBundleUpdated": "已将 env \"{{envName}}\" 的 nginx 代理文件保存到 {{entryDir}},并刷新可编辑的入口配置 {{appConfigPath}}。",
|
|
132
|
+
"savedCaddyBundleCreated": "已将 env \"{{envName}}\" 的 caddy 代理文件保存到 {{entryDir}},并创建可编辑的入口配置 {{appConfigPath}}。",
|
|
133
|
+
"savedCaddyBundleMigrated": "已将 env \"{{envName}}\" 的 caddy 代理文件保存到 {{entryDir}},并将入口配置迁移为 {{appConfigPath}}。",
|
|
134
|
+
"savedCaddyBundleUpdated": "已将 env \"{{envName}}\" 的 caddy 代理文件保存到 {{entryDir}},并刷新可编辑的入口配置 {{appConfigPath}}。",
|
|
135
|
+
"failed": "为 env \"{{envName}}\" 生成代理配置失败。",
|
|
136
|
+
"installingProvider": "正在将共享代理配置安装到 {{provider}}...",
|
|
137
|
+
"providerInstalled": "已将共享代理配置安装到 {{provider}} 主配置 {{configPath}}。",
|
|
138
|
+
"providerAlreadyInstalled": "共享代理配置已存在于 {{provider}} 主配置 {{configPath}} 中。",
|
|
139
|
+
"installProviderFailed": "将共享代理配置安装到 {{provider}} 失败。",
|
|
140
|
+
"reloadingProvider": "正在校验并重载 {{provider}}...",
|
|
141
|
+
"providerReloaded": "已校验并重载 {{provider}}。",
|
|
142
|
+
"reloadProviderFailed": "校验并重载 {{provider}} 失败。"
|
|
143
|
+
},
|
|
144
|
+
"errors": {
|
|
145
|
+
"httpEnvUnsupported": "无法在当前机器上为 \"{{envName}}\" 生成代理配置,因为这个 env 只有 API 连接。",
|
|
146
|
+
"sshEnvUnsupported": "暂时无法为 \"{{envName}}\" 生成代理配置,因为 SSH env 还没有实现。",
|
|
147
|
+
"invalidProxyPort": "代理入口端口 \"{{port}}\" 无效。请使用 1 到 65535 之间的整数。",
|
|
148
|
+
"missingAppPort": "env \"{{envName}}\" 缺少 appPort。请先保存或更新应用端口后再生成代理配置。",
|
|
149
|
+
"missingVersion": "无法确定 env \"{{envName}}\" 的应用版本。请先运行 `nb env update {{envName}}`,然后再试一次。",
|
|
150
|
+
"appEntryMissingInclude": "可编辑入口配置 {{appConfigPath}} 没有引用 {{generatedConfigPath}}。请把托管的 generated 配置引用补回入口配置中,然后重新执行该命令。",
|
|
151
|
+
"nginxOutputUnsupported": "nginx provider 不支持 `--output`。它会把 `app.conf`、`public/index-v1.html`、`public/index-v2.html` 和 `nocobase.conf` 写入 `~/.nocobase/proxy/nginx/<env>/`。",
|
|
152
|
+
"caddyOutputUnsupported": "caddy provider 不支持 `--output`。它会把 `app.caddy`、`generated.caddy`、`public/index-v1.html`、`public/index-v2.html` 和 `nocobase.caddy` 写入 `~/.nocobase/proxy/caddy/<env>/`。",
|
|
153
|
+
"nginxAppEntryMissingManagedBlock": "可编辑的 nginx 入口配置 {{appConfigPath}} 不包含 NocoBase 的托管区块。请恢复这个托管区块,或删除该文件后重新执行 `nb proxy nginx generate`。"
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
"shared": {
|
|
157
|
+
"missingCommand": "无法执行 `{{action}}`,因为找不到 {{displayName}} 可执行文件。请先安装 {{displayName}},或更新 `nb config set {{configKey}} <path>` 后重试。",
|
|
158
|
+
"dockerDaemonUnavailable": "无法执行 `{{action}}`,因为 Docker 已安装,但 Docker daemon 尚未运行。请先启动 Docker Desktop 或 Docker daemon 服务,然后重试。详情:{{details}}",
|
|
159
|
+
"targetEnv": "正在使用 env \"{{envName}}\"。",
|
|
160
|
+
"crossEnv": {
|
|
161
|
+
"prompt": "当前 env 是 \"{{currentEnv}}\",但该命令通过 --env 指向了 \"{{requestedEnv}}\"。要在不切换当前 env 的情况下继续吗?",
|
|
162
|
+
"refusal": "拒绝对 env \"{{requestedEnv}}\" 执行该命令,因为当前 env 是 \"{{currentEnv}}\",且当前 agent 会话无法进行交互确认。\n\n出于安全考虑,agent 不会自动切换 env,也不会替你自动补上 --yes。\n\n如果要继续:\n- 请先自行执行 `nb env use {{requestedEnv}}`,然后重新运行该命令,或\n- 使用相同命令并追加 `--env {{requestedEnv}} --yes`,以确认这是一次性的跨 env 操作。"
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
"license": {
|
|
166
|
+
"activate": {
|
|
167
|
+
"interactive": {
|
|
168
|
+
"notice": {
|
|
169
|
+
"hostnameLabel": "❯ 主机名",
|
|
170
|
+
"instanceIdLabel": "❯ 实例 ID",
|
|
171
|
+
"copyHintWithHostname": "校验或激活 license key 时,请复制这个主机名和实例 ID。",
|
|
172
|
+
"copyHintWithoutHostname": "校验或激活 license key 时,请复制这个实例 ID。"
|
|
173
|
+
},
|
|
174
|
+
"prompts": {
|
|
175
|
+
"provideMethod": {
|
|
176
|
+
"message": "你想通过哪种方式提供 license key?",
|
|
177
|
+
"keyOption": "直接粘贴 license key",
|
|
178
|
+
"fileOption": "从文件读取 key"
|
|
179
|
+
},
|
|
180
|
+
"key": {
|
|
181
|
+
"message": "License Key",
|
|
182
|
+
"transformer": "已输入 {{count}} 个字符",
|
|
183
|
+
"required": "必须提供 license key。"
|
|
184
|
+
},
|
|
185
|
+
"keyFile": {
|
|
186
|
+
"message": "license key 文件路径",
|
|
187
|
+
"required": "必须提供 license key 文件路径。"
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
"errors": {
|
|
192
|
+
"provideKeyOrKeyFile": "请通过 --key 或 --key-file 继续。",
|
|
193
|
+
"emptyInput": "license key 输入为空。",
|
|
194
|
+
"activationFailed": "为 env \"{{envName}}\" 激活 license 失败:{{reason}}。",
|
|
195
|
+
"reasons": {
|
|
196
|
+
"keyStatus": "license key 状态为 {{status}}",
|
|
197
|
+
"envMismatch": "license key 与当前实例环境不匹配",
|
|
198
|
+
"domainMismatch": "license key 与当前应用域名不匹配",
|
|
199
|
+
"licenseStatus": "license 状态为 {{status}}",
|
|
200
|
+
"validationFailed": "license 校验失败"
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
"messages": {
|
|
204
|
+
"activated": "已为 env \"{{envName}}\" 激活 license。",
|
|
205
|
+
"savedLicenseKey": "已为当前 env 安全保存 license key"
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
"download": {
|
|
210
|
+
"failures": {
|
|
211
|
+
"dependencyInstall": {
|
|
212
|
+
"title": "本地 NocoBase 应用还没有准备完成。",
|
|
213
|
+
"body": "下载已经完成,但依赖安装没有成功结束。",
|
|
214
|
+
"hint": "请使用相同命令加上 `--verbose` 重试,以查看完整安装日志。"
|
|
215
|
+
},
|
|
216
|
+
"gitClone": {
|
|
217
|
+
"title": "无法通过 Git 下载 NocoBase。",
|
|
218
|
+
"body": "CLI 没有成功克隆你选择的 NocoBase 仓库。",
|
|
219
|
+
"hint": "请使用相同命令加上 `--verbose` 重试,以查看完整克隆日志。"
|
|
220
|
+
},
|
|
221
|
+
"dockerPull": {
|
|
222
|
+
"title": "无法下载 Docker 镜像。",
|
|
223
|
+
"body": "CLI 没有成功拉取你选择的 NocoBase 镜像。",
|
|
224
|
+
"hint": "请使用相同命令加上 `--verbose` 重试,以查看完整 Docker pull 日志。"
|
|
225
|
+
},
|
|
226
|
+
"dockerSave": {
|
|
227
|
+
"title": "Docker 镜像已经拉取完成,但导出 tar 文件失败了。",
|
|
228
|
+
"body": "CLI 没有成功将镜像导出到目标 tar 包路径。",
|
|
229
|
+
"hint": "请使用相同命令加上 `--verbose` 重试,以查看完整 Docker save 日志。"
|
|
230
|
+
},
|
|
231
|
+
"scaffold": {
|
|
232
|
+
"title": "无法创建本地 NocoBase 应用骨架。",
|
|
233
|
+
"body": "CLI 没有成功生成初始应用文件。",
|
|
234
|
+
"hint": "请使用相同命令加上 `--verbose` 重试,以查看完整 scaffold 日志。"
|
|
235
|
+
},
|
|
236
|
+
"build": {
|
|
237
|
+
"title": "本地 NocoBase 应用已经下载完成,但构建步骤失败了。",
|
|
238
|
+
"body": "CLI 没有成功完成已下载源码的构建。",
|
|
239
|
+
"hint": "请使用相同命令加上 `--verbose` 重试,以查看完整构建日志。"
|
|
240
|
+
},
|
|
241
|
+
"generic": {
|
|
242
|
+
"title": "无法完成 NocoBase 下载。",
|
|
243
|
+
"body": "CLI 在准备下载内容时遇到了未预期的命令失败。",
|
|
244
|
+
"hint": "请使用相同命令加上 `--verbose` 重试,以查看完整命令日志。"
|
|
245
|
+
}
|
|
246
|
+
},
|
|
247
|
+
"prompts": {
|
|
248
|
+
"source": {
|
|
249
|
+
"message": "你想通过哪种方式获取 NocoBase?",
|
|
250
|
+
"dockerLabel": "Docker 安装(推荐)",
|
|
251
|
+
"dockerHint": "适合无代码或低维护成本场景。后续升级时,拉取新镜像并重启应用即可。",
|
|
252
|
+
"npmLabel": "create-nocobase-app 安装",
|
|
253
|
+
"npmHint": "适合希望将业务代码与 NocoBase 框架保持独立的场景,同时仍然支持低代码开发。",
|
|
254
|
+
"gitLabel": "Git 源码安装",
|
|
255
|
+
"gitHint": "适合体验最新未发布版本、参与贡献,或直接修改和调试 NocoBase 源码。这个方式更偏向开发者使用。"
|
|
256
|
+
},
|
|
257
|
+
"version": {
|
|
258
|
+
"message": "你想使用哪个版本?",
|
|
259
|
+
"latestLabel": "latest",
|
|
260
|
+
"latestHint": "稳定版。适合生产环境和希望获得稳定体验的场景。当前暂不可用。",
|
|
261
|
+
"betaLabel": "beta",
|
|
262
|
+
"betaHint": "测试版。包含即将发布的新功能,适合提前体验和反馈。",
|
|
263
|
+
"alphaLabel": "alpha",
|
|
264
|
+
"alphaHint": "开发版。功能更新最快,但可能不完整或不稳定。",
|
|
265
|
+
"otherLabel": "其他",
|
|
266
|
+
"otherHint": "手动填写其他版本号、Docker tag 或 Git ref,例如分支名。"
|
|
267
|
+
},
|
|
268
|
+
"otherVersion": {
|
|
269
|
+
"message": "请输入你想使用的版本号、Docker tag 或 Git ref。",
|
|
270
|
+
"placeholder": "例如:fix/cli-v2"
|
|
271
|
+
},
|
|
272
|
+
"dockerRegistry": {
|
|
273
|
+
"message": "你想使用哪个 Docker registry?镜像 tag 请单独在 Version 中填写。",
|
|
274
|
+
"placeholder": "registry.cn-shanghai.aliyuncs.com/nocobase/nocobase"
|
|
275
|
+
},
|
|
276
|
+
"dockerPlatform": {
|
|
277
|
+
"message": "要使用哪个 Docker 镜像平台?",
|
|
278
|
+
"autoLabel": "自动",
|
|
279
|
+
"autoHint": "由 Docker 根据当前机器自动选择"
|
|
280
|
+
},
|
|
281
|
+
"dockerSave": {
|
|
282
|
+
"message": "将 Docker 镜像另存为 tar 文件"
|
|
283
|
+
},
|
|
284
|
+
"gitUrl": {
|
|
285
|
+
"message": "Git 仓库地址",
|
|
286
|
+
"placeholder": "https://github.com/nocobase/nocobase.git"
|
|
287
|
+
},
|
|
288
|
+
"outputDir": {
|
|
289
|
+
"message": "下载目录",
|
|
290
|
+
"placeholder": "例如 ./nocobase-latest"
|
|
291
|
+
},
|
|
292
|
+
"npmRegistry": {
|
|
293
|
+
"message": "npm registry 地址(可选)",
|
|
294
|
+
"placeholder": "留空则使用默认 registry"
|
|
295
|
+
},
|
|
296
|
+
"replace": {
|
|
297
|
+
"message": "如果应用目录已有文件,是否先清空再继续"
|
|
298
|
+
},
|
|
299
|
+
"devDependencies": {
|
|
300
|
+
"message": "安装开发依赖(仅 npm)"
|
|
301
|
+
},
|
|
302
|
+
"build": {
|
|
303
|
+
"message": "下载后构建应用"
|
|
304
|
+
},
|
|
305
|
+
"buildDts": {
|
|
306
|
+
"message": "生成 TypeScript 声明文件"
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
},
|
|
310
|
+
"install": {
|
|
311
|
+
"messages": {
|
|
312
|
+
"skipDownloadDockerImageMissing": "无法继续执行 `--skip-download`,因为本地不存在 Docker 镜像 \"{{imageRef}}\"。请先手动加载或拉取这个镜像,或者去掉 `--skip-download` 后重试。",
|
|
313
|
+
"skipDownloadLocalAppMissing": "无法继续执行 `--skip-download`,因为 \"{{projectRoot}}\" 不存在,或者其中缺少 package.json。请把 `--app-root-path` 指向一个现有的 NocoBase 应用目录,或者去掉 `--skip-download` 后重试。"
|
|
314
|
+
},
|
|
315
|
+
"validation": {
|
|
316
|
+
"builtinDbUnsupported": "内置数据库暂不支持 \"{{dialect}}\"。请选择 PostgreSQL、MySQL 或 MariaDB,或者关闭内置数据库。"
|
|
317
|
+
},
|
|
318
|
+
"prompts": {
|
|
319
|
+
"env": {
|
|
320
|
+
"message": "你想如何命名这个应用?",
|
|
321
|
+
"placeholder": "local"
|
|
322
|
+
},
|
|
323
|
+
"lang": {
|
|
324
|
+
"message": "你希望应用使用哪种语言?"
|
|
325
|
+
},
|
|
326
|
+
"appPath": {
|
|
327
|
+
"message": "应用要放到哪里?(相对路径基于 {{root}})",
|
|
328
|
+
"placeholder": "./<env>/"
|
|
329
|
+
},
|
|
330
|
+
"appPort": {
|
|
331
|
+
"message": "应用要使用哪个端口?",
|
|
332
|
+
"placeholder": "13000"
|
|
333
|
+
},
|
|
334
|
+
"appPublicPath": {
|
|
335
|
+
"message": "应用的子路径是什么?(例如 /nocobase/)",
|
|
336
|
+
"placeholder": "/ 或 /nocobase/"
|
|
337
|
+
},
|
|
338
|
+
"storagePath": {
|
|
339
|
+
"message": "上传文件和本地存储目录要放到哪里?",
|
|
340
|
+
"placeholder": "./<env>/storage/"
|
|
341
|
+
},
|
|
342
|
+
"dbDialect": {
|
|
343
|
+
"message": "你想使用哪种数据库?"
|
|
344
|
+
},
|
|
345
|
+
"builtinDb": {
|
|
346
|
+
"message": "是否使用内置数据库?"
|
|
347
|
+
},
|
|
348
|
+
"builtinDbImage": {
|
|
349
|
+
"message": "内置数据库要使用哪个 Docker 镜像?",
|
|
350
|
+
"placeholder": "postgres:16"
|
|
351
|
+
},
|
|
352
|
+
"dbHost": {
|
|
353
|
+
"message": "数据库主机地址是什么?",
|
|
354
|
+
"placeholder": "127.0.0.1"
|
|
355
|
+
},
|
|
356
|
+
"dbPort": {
|
|
357
|
+
"message": "数据库端口是什么?",
|
|
358
|
+
"placeholder": "5432"
|
|
359
|
+
},
|
|
360
|
+
"dbDatabase": {
|
|
361
|
+
"message": "数据库名称是什么?"
|
|
362
|
+
},
|
|
363
|
+
"dbUser": {
|
|
364
|
+
"message": "数据库用户名是什么?"
|
|
365
|
+
},
|
|
366
|
+
"dbPassword": {
|
|
367
|
+
"message": "数据库密码是什么?"
|
|
368
|
+
},
|
|
369
|
+
"dbSchema": {
|
|
370
|
+
"message": "数据库 schema 是什么?(仅 PostgreSQL,可选)",
|
|
371
|
+
"placeholder": "留空则使用默认 schema"
|
|
372
|
+
},
|
|
373
|
+
"dbTablePrefix": {
|
|
374
|
+
"message": "要使用什么数据表前缀?(可选)",
|
|
375
|
+
"placeholder": "例如:nb_"
|
|
376
|
+
},
|
|
377
|
+
"dbUnderscored": {
|
|
378
|
+
"message": "数据库表名和字段名是否使用下划线风格?"
|
|
379
|
+
},
|
|
380
|
+
"rootUsername": {
|
|
381
|
+
"message": "设置初始管理员用户名",
|
|
382
|
+
"placeholder": "nocobase"
|
|
383
|
+
},
|
|
384
|
+
"rootEmail": {
|
|
385
|
+
"message": "初始管理员邮箱是什么?",
|
|
386
|
+
"placeholder": "admin@nocobase.com"
|
|
387
|
+
},
|
|
388
|
+
"rootPassword": {
|
|
389
|
+
"message": "设置初始管理员密码"
|
|
390
|
+
},
|
|
391
|
+
"rootNickname": {
|
|
392
|
+
"message": "初始管理员显示名称是什么?",
|
|
393
|
+
"placeholder": "Super Admin"
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
},
|
|
397
|
+
"init": {
|
|
398
|
+
"validation": {
|
|
399
|
+
"envExists": "Env \"{{envName}}\" 已存在,请换一个 env name。"
|
|
400
|
+
},
|
|
401
|
+
"messages": {
|
|
402
|
+
"title": "配置供 Coding Agents 使用的 NocoBase",
|
|
403
|
+
"appNameRequiredWhenSkipped": "跳过 prompts 时必须提供 Env name。",
|
|
404
|
+
"appNameEnvHelp": "请使用 `nb init --yes --env <envName>` 继续。",
|
|
405
|
+
"resumeEnvRequired": "恢复安装时必须提供 Env name。",
|
|
406
|
+
"resumeEnvHelp": "请使用 `nb init --resume --env <envName>` 继续。",
|
|
407
|
+
"resumeAfterInstallFailure": "继续这次初始化请执行:\n {{command}}",
|
|
408
|
+
"uiOpening": "本地 setup 表单即将在浏览器中打开。这个表单需要等待人工填写。如果你正在使用 AI agent,请不要停止当前进程,CLI 会继续等待表单提交结果。",
|
|
409
|
+
"uiReady": "本地 setup 表单已就绪。",
|
|
410
|
+
"uiReadyHelp": "如果没有自动打开浏览器,请复制下面的地址到浏览器中继续。CLI 会继续等待表单提交,请保持当前终端会话继续运行。",
|
|
411
|
+
"uiOpenBrowserFallback": "无法自动打开浏览器。请复制上面的地址到浏览器中继续 setup,并保持当前终端会话继续运行。如果你正在使用 AI agent,请不要停止当前进程。",
|
|
412
|
+
"skillsSyncRegistryUnavailable": "无法访问 npm registry 来同步 NocoBase AI coding skills。将跳过 skills 安装并继续执行 init。等 registry 可访问后,再运行 `nb skills install` 即可。"
|
|
413
|
+
},
|
|
414
|
+
"prompts": {
|
|
415
|
+
"appName": {
|
|
416
|
+
"message": "这个环境要使用什么 `--env` 标识?",
|
|
417
|
+
"placeholder": "local"
|
|
418
|
+
},
|
|
419
|
+
"setupMode": {
|
|
420
|
+
"message": "你想用哪种方式配置这个环境?",
|
|
421
|
+
"installNewLabel": "新安装",
|
|
422
|
+
"installNewHint": "从零安装一个新的应用,适合首次部署、试用或新建本地开发环境。",
|
|
423
|
+
"manageLocalLabel": "本机接管",
|
|
424
|
+
"manageLocalHint": "将本机已有应用纳入 nb 管理,后续可统一执行安装、升级和启动等操作。接管过程中会重新下载应用代码或镜像并升级应用,storage 会在需要时自动创建。",
|
|
425
|
+
"connectRemoteLabel": "远程连接",
|
|
426
|
+
"connectRemoteHint": "只保存远程应用的连接信息,不在本机安装或接管应用。"
|
|
427
|
+
},
|
|
428
|
+
"installSkills": {
|
|
429
|
+
"message": "是否安装 NocoBase AI coding skills(nocobase/skills)?"
|
|
430
|
+
},
|
|
431
|
+
"apiBaseUrl": {
|
|
432
|
+
"message": "API 基础地址",
|
|
433
|
+
"placeholder": "https://demo.example.com/api 或 https://demo.example.com/api/__app/<subapp>"
|
|
434
|
+
},
|
|
435
|
+
"skipDownload": {
|
|
436
|
+
"message": "跳过下载 NocoBase,直接复用已有的本地应用文件或 Docker 镜像"
|
|
437
|
+
}
|
|
438
|
+
},
|
|
439
|
+
"webUi": {
|
|
440
|
+
"pageTitle": "配置供 Coding Agents 使用的 NocoBase",
|
|
441
|
+
"documentHeading": "配置供 Coding Agents 使用的 NocoBase",
|
|
442
|
+
"documentHint": "安装一个新的应用、接管本机已有应用,或连接远程应用,让 Coding Agents 可以在当前工作区中访问和操作 NocoBase。",
|
|
443
|
+
"gettingStarted": {
|
|
444
|
+
"title": "开始设置",
|
|
445
|
+
"description": "选择新安装、本机接管,或远程连接。"
|
|
446
|
+
},
|
|
447
|
+
"connectExistingApp": {
|
|
448
|
+
"title": "连接与认证",
|
|
449
|
+
"description": "填写应用访问地址并选择认证方式。"
|
|
450
|
+
},
|
|
451
|
+
"createNewApp": {
|
|
452
|
+
"title": "应用环境信息",
|
|
453
|
+
"description": "设置应用的基础信息、存储位置和运行端口。"
|
|
454
|
+
},
|
|
455
|
+
"downloadAppFiles": {
|
|
456
|
+
"title": "应用来源和版本",
|
|
457
|
+
"description": "选择应用的获取方式,以及要使用的来源和版本。"
|
|
458
|
+
},
|
|
459
|
+
"configureDatabase": {
|
|
460
|
+
"title": "配置数据库",
|
|
461
|
+
"description": "选择内置数据库或自定义数据库。"
|
|
462
|
+
},
|
|
463
|
+
"createAdminAccount": {
|
|
464
|
+
"title": "创建管理员账号",
|
|
465
|
+
"description": "设置第一个管理员账号。"
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
},
|
|
469
|
+
"env": {
|
|
470
|
+
"messages": {
|
|
471
|
+
"noEnvsConfigured": "尚未配置任何 env。",
|
|
472
|
+
"noEnvsConfiguredHelp": "请先运行 `nb init --ui` 创建一个。"
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
},
|
|
476
|
+
"apiCommandCompat": {
|
|
477
|
+
"refusalTitle": "拒绝执行 `nb api {{commandId}}`,因为当前 CLI 版本为 {{cliVersion}},目标应用版本为 {{appVersion}}。",
|
|
478
|
+
"refusalTitleMissingVersion": "拒绝执行 `nb api {{commandId}}`,因为 {{versionLabel}} 不可用。",
|
|
479
|
+
"refusalTitleGeneric": "拒绝执行 `nb api {{commandId}}`,因为当前版本组合不兼容。",
|
|
480
|
+
"currentVersionsLine": "当前版本:{{versions}}。",
|
|
481
|
+
"refusalBodyWithRequirements": "当 {{requirements}} 时,这个 API 命令会被拦截。",
|
|
482
|
+
"refusalBody": "这个 API 命令在当前 CLI 与应用版本组合下可能不兼容。",
|
|
483
|
+
"channel": {
|
|
484
|
+
"stable": "正式版",
|
|
485
|
+
"beta": "beta",
|
|
486
|
+
"alpha": "alpha",
|
|
487
|
+
"rc": "rc",
|
|
488
|
+
"unknownPrerelease": "不受支持的预发布"
|
|
489
|
+
},
|
|
490
|
+
"requirement": {
|
|
491
|
+
"cli": "CLI 版本 {{condition}}",
|
|
492
|
+
"app": "应用版本 {{condition}}",
|
|
493
|
+
"skills": "NocoBase AI skills 版本 {{condition}}",
|
|
494
|
+
"appChannel": "{{channelLabel}}应用版本 {{condition}}",
|
|
495
|
+
"appUnknownPrereleaseBlocked": "{{channelLabel}}应用版本会被拦截"
|
|
496
|
+
},
|
|
497
|
+
"currentVersion": {
|
|
498
|
+
"cli": "CLI {{version}}",
|
|
499
|
+
"app": "应用 {{version}}",
|
|
500
|
+
"appUnavailable": "应用版本不可用",
|
|
501
|
+
"skills": "NocoBase AI skills {{version}}",
|
|
502
|
+
"skillsUnavailable": "NocoBase AI skills 不可用"
|
|
503
|
+
},
|
|
504
|
+
"versionLabel": {
|
|
505
|
+
"cli": "CLI 版本",
|
|
506
|
+
"app": "目标应用版本",
|
|
507
|
+
"skills": "已安装的 NocoBase AI skills 版本"
|
|
508
|
+
},
|
|
509
|
+
"join": {
|
|
510
|
+
"two": "{{left}} 和 {{right}}",
|
|
511
|
+
"many": "{{head}},以及 {{tail}}"
|
|
512
|
+
},
|
|
513
|
+
"continueTitle": "如需继续:",
|
|
514
|
+
"continueUpgradeApp": "- 请将应用升级到兼容版本",
|
|
515
|
+
"continueUpgradeAppToVersion": "- 请将应用升级到 {{suggestedUpgradeTarget}}",
|
|
516
|
+
"continueUseSupportedAppVersion": "- 请使用受支持的应用版本:{{supportedTargets}}",
|
|
517
|
+
"continueRefreshAppVersion": "- 请先刷新目标 env runtime,让当前应用版本可被识别后再重试",
|
|
518
|
+
"continueUseCompatibleCli": "- 或使用兼容的 CLI 版本",
|
|
519
|
+
"continueUseCompatibleCliVersion": "- 或使用 {{suggestedCliTarget}} 的 CLI 版本",
|
|
520
|
+
"continueUpdateSkillsToVersion": "- 请安装或更新 NocoBase AI coding skills 到 {{suggestedSkillsUpgradeTarget}}。可运行 `nb skills update --yes` 刷新受管理的 skills。",
|
|
521
|
+
"continueUseCompatibleSkillsVersion": "- 或使用 {{suggestedSkillsTarget}} 的 NocoBase AI skills 版本",
|
|
522
|
+
"continueInstallOrUpdateSkillsToVersion": "- 请运行 `nb skills install --yes` 或 `nb skills update --yes`,并确保受管理的 skills 版本为 {{suggestedSkillsUpgradeTarget}} 后再重试",
|
|
523
|
+
"continueInstallOrUpdateSkills": "- 请运行 `nb skills install --yes` 或 `nb skills update --yes`,待受管理的 skills 版本可用后再重试",
|
|
524
|
+
"supportedAppTarget": "{{channelLabel}} {{target}}"
|
|
525
|
+
}
|
|
526
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
import { postProcessorRegistry } from '../lib/post-processors.js';
|
|
10
|
+
function toArray(value) {
|
|
11
|
+
if (Array.isArray(value)) {
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
14
|
+
if (Array.isArray(value?.data)) {
|
|
15
|
+
return value.data;
|
|
16
|
+
}
|
|
17
|
+
return [];
|
|
18
|
+
}
|
|
19
|
+
function pickCollectionSummary(item) {
|
|
20
|
+
return {
|
|
21
|
+
key: item?.key,
|
|
22
|
+
name: item?.name,
|
|
23
|
+
title: item?.title,
|
|
24
|
+
template: item?.template,
|
|
25
|
+
description: item?.description,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function pickFieldSummary(item) {
|
|
29
|
+
return {
|
|
30
|
+
key: item?.key,
|
|
31
|
+
name: item?.name,
|
|
32
|
+
type: item?.type,
|
|
33
|
+
title: item?.uiSchema?.title,
|
|
34
|
+
description: item?.description,
|
|
35
|
+
collectionName: item?.collectionName,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function simplifyCollectionsListResult(result) {
|
|
39
|
+
const items = toArray(result);
|
|
40
|
+
return {
|
|
41
|
+
data: items.map((item) => pickCollectionSummary(item)),
|
|
42
|
+
meta: result?.meta,
|
|
43
|
+
nextActions: [
|
|
44
|
+
'Use collections:get with filterByTk=<collectionName> to inspect one collection in detail.',
|
|
45
|
+
'Use collections:apply with --verify when you need normalized verification in the same response.',
|
|
46
|
+
],
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function simplifyFieldsListResult(result) {
|
|
50
|
+
const items = toArray(result);
|
|
51
|
+
return {
|
|
52
|
+
data: items.map((item) => pickFieldSummary(item)),
|
|
53
|
+
meta: result?.meta,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function unwrapActionData(result) {
|
|
57
|
+
return result?.data?.data !== undefined || result?.data?.verify !== undefined ? result.data : result;
|
|
58
|
+
}
|
|
59
|
+
function pickAppliedCollectionSummary(item) {
|
|
60
|
+
return {
|
|
61
|
+
...pickCollectionSummary(item),
|
|
62
|
+
filterTargetKey: item?.filterTargetKey,
|
|
63
|
+
titleField: item?.titleField,
|
|
64
|
+
fields: Array.isArray(item?.fields) ? item.fields.map((field) => pickFieldSummary(field)) : [],
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export function registerDataModelingPostProcessors() {
|
|
68
|
+
postProcessorRegistry.register('collections', 'list', simplifyCollectionsListResult);
|
|
69
|
+
postProcessorRegistry.register('collections', 'apply', (result) => {
|
|
70
|
+
const payload = unwrapActionData(result);
|
|
71
|
+
return {
|
|
72
|
+
data: pickAppliedCollectionSummary(payload?.data || {}),
|
|
73
|
+
verify: payload?.verify,
|
|
74
|
+
};
|
|
75
|
+
});
|
|
76
|
+
postProcessorRegistry.register('collections', 'verify', (result) => result);
|
|
77
|
+
postProcessorRegistry.register('fields', 'apply', (result) => {
|
|
78
|
+
const payload = unwrapActionData(result);
|
|
79
|
+
return {
|
|
80
|
+
data: pickFieldSummary(payload?.data || {}),
|
|
81
|
+
};
|
|
82
|
+
});
|
|
83
|
+
postProcessorRegistry.register('collections.fields', 'list', simplifyFieldsListResult);
|
|
84
|
+
}
|