@nocobase/cli 2.1.0-beta.2 → 2.1.0-beta.20
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/LICENSE.txt +107 -0
- package/README.md +367 -19
- package/README.zh-CN.md +336 -0
- package/bin/run.cmd +3 -0
- package/bin/run.js +116 -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/build.js +57 -0
- package/dist/commands/db/logs.js +85 -0
- package/dist/commands/db/ps.js +60 -0
- package/dist/commands/db/shared.js +81 -0
- package/dist/commands/db/start.js +70 -0
- package/dist/commands/db/stop.js +70 -0
- package/dist/commands/dev.js +149 -0
- package/dist/commands/down.js +193 -0
- package/dist/commands/download.js +865 -0
- package/dist/commands/env/add.js +327 -0
- package/dist/commands/env/auth.js +62 -0
- package/dist/commands/env/list.js +41 -0
- package/dist/commands/env/remove.js +65 -0
- package/dist/commands/env/update.js +73 -0
- package/dist/commands/env/use.js +36 -0
- package/dist/commands/init.js +822 -0
- package/dist/commands/install.js +1888 -0
- package/dist/commands/logs.js +90 -0
- package/dist/commands/pm/disable.js +63 -0
- package/dist/commands/pm/enable.js +63 -0
- package/dist/commands/pm/list.js +54 -0
- package/dist/commands/prompts-stages.js +150 -0
- package/dist/commands/prompts-test.js +181 -0
- package/dist/commands/ps.js +116 -0
- package/dist/commands/restart.js +74 -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 +76 -0
- package/dist/commands/skills/check.js +63 -0
- package/dist/commands/skills/index.js +20 -0
- package/dist/commands/skills/install.js +58 -0
- package/dist/commands/skills/update.js +58 -0
- package/dist/commands/start.js +211 -0
- package/dist/commands/stop.js +90 -0
- package/dist/commands/test.js +466 -0
- package/dist/commands/upgrade.js +583 -0
- package/dist/generated/command-registry.js +133 -0
- package/dist/help/runtime-help.js +20 -0
- package/dist/lib/api-client.js +243 -0
- package/dist/lib/app-runtime.js +142 -0
- package/dist/lib/auth-store.js +241 -0
- package/dist/lib/bootstrap.js +387 -0
- package/dist/lib/build-config.js +10 -0
- package/dist/lib/cli-home.js +30 -0
- package/dist/lib/cli-locale.js +115 -0
- package/dist/lib/command-discovery.js +39 -0
- package/dist/lib/env-auth.js +872 -0
- package/dist/lib/generated-command.js +142 -0
- package/dist/lib/naming.js +70 -0
- package/dist/lib/openapi.js +62 -0
- package/dist/lib/post-processors.js +23 -0
- package/dist/lib/prompt-catalog.js +581 -0
- package/dist/lib/prompt-validators.js +185 -0
- package/dist/lib/prompt-web-ui.js +2096 -0
- package/dist/lib/resource-command.js +335 -0
- package/dist/lib/resource-request.js +104 -0
- package/dist/lib/run-npm.js +197 -0
- package/dist/lib/runtime-generator.js +419 -0
- package/dist/lib/runtime-store.js +56 -0
- package/dist/lib/self-manager.js +246 -0
- package/dist/lib/skills-manager.js +202 -0
- package/dist/lib/ui.js +175 -0
- package/dist/locale/en-US.json +333 -0
- package/dist/locale/zh-CN.json +333 -0
- package/dist/post-processors/data-modeling.js +66 -0
- package/dist/post-processors/data-source-manager.js +114 -0
- package/dist/post-processors/index.js +19 -0
- package/nocobase-ctl.config.json +287 -0
- package/package.json +60 -26
- package/LICENSE +0 -661
- package/bin/index.js +0 -39
- package/nocobase.conf.tpl +0 -95
- package/src/cli.js +0 -19
- 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/index.js +0 -17
- 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/index.js +0 -14
- 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/models/index.ts +0 -12
- 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,333 @@
|
|
|
1
|
+
{
|
|
2
|
+
"promptCatalog": {
|
|
3
|
+
"common": {
|
|
4
|
+
"cancelled": "Cancelled.",
|
|
5
|
+
"required": "Required",
|
|
6
|
+
"mustBeInteger": "Must be an integer"
|
|
7
|
+
},
|
|
8
|
+
"preset": {
|
|
9
|
+
"required": "\"{{key}}\" is required; set a non-empty values.{{key}} or omit it to prompt.",
|
|
10
|
+
"invalidSelect": "Invalid values.{{key}}: \"{{value}}\". Expected one of: {{options}}",
|
|
11
|
+
"invalidInteger": "Invalid values.{{key}}: must be an integer."
|
|
12
|
+
},
|
|
13
|
+
"nonInteractive": {
|
|
14
|
+
"textRequired": "Non-interactive: \"{{key}}\" is required; set initialValues.{{key}}, yesInitialValues.{{key}}, yesInitialValue on the block, or initialValue.",
|
|
15
|
+
"selectMissingDefault": "Non-interactive: set initialValues.{{key}}, yesInitialValues.{{key}}, or select.initialValue / yesInitialValue / options on the catalog block.",
|
|
16
|
+
"selectInvalidValue": "Invalid value for {{key}}: {{value}}. Expected one of: {{options}}",
|
|
17
|
+
"selectRequiredNoOptions": "Select \"{{key}}\" is required but has no options.",
|
|
18
|
+
"selectRequiredInteractive": "Select \"{{key}}\" is required; set initialValues.{{key}} or select.initialValue / options on the catalog block.",
|
|
19
|
+
"selectMissingInteractiveDefault": "Select \"{{key}}\" has no valid default; set initialValues.{{key}} or options on the catalog block.",
|
|
20
|
+
"passwordRequired": "Non-interactive: \"{{key}}\" is required; set initialValues.{{key}}, yesInitialValues.{{key}}, or initialValue / yesInitialValue on the block.",
|
|
21
|
+
"passwordRequiredNonEmpty": "Non-interactive: \"{{key}}\" is required; set a non-empty initialValues / yesInitialValues / initialValue / yesInitialValue.",
|
|
22
|
+
"integerRequired": "Non-interactive: \"{{key}}\" is required; set initialValues.{{key}}, yesInitialValues.{{key}}, or initialValue / yesInitialValue on the block."
|
|
23
|
+
},
|
|
24
|
+
"web": {
|
|
25
|
+
"pageTitle": "Prompt catalog (local UI)",
|
|
26
|
+
"documentHeading": "Configure parameters (localhost only)",
|
|
27
|
+
"documentHint": "This server is only bound to the loopback interface. After submit, the CLI continues in the same terminal session.",
|
|
28
|
+
"defaultFormTitle": "Form",
|
|
29
|
+
"defaultStepTitle": "Step {{index}}",
|
|
30
|
+
"stepsAriaLabel": "Form steps",
|
|
31
|
+
"stepsSidebarAriaLabel": "Steps",
|
|
32
|
+
"stepNavigationAriaLabel": "Step navigation and submit",
|
|
33
|
+
"submitAriaLabel": "Submit",
|
|
34
|
+
"back": "Back",
|
|
35
|
+
"next": "Next",
|
|
36
|
+
"submit": "Submit & continue in terminal",
|
|
37
|
+
"checking": "Checking...",
|
|
38
|
+
"sending": "Sending...",
|
|
39
|
+
"successTitle": "Success",
|
|
40
|
+
"errorTitle": "Error",
|
|
41
|
+
"savedAndClosing": "Saved. This tab will close automatically in 5 seconds.",
|
|
42
|
+
"savedCloseBlocked": "Saved. Automatic close was blocked by the browser. You can close this tab now.",
|
|
43
|
+
"invalidValue": "Invalid value",
|
|
44
|
+
"invalidRequest": "Invalid request",
|
|
45
|
+
"invalidStep": "Invalid or missing wizard step.",
|
|
46
|
+
"invalidField": "Invalid or missing field key.",
|
|
47
|
+
"fieldRequired": "Field \"{{key}}\" is required.",
|
|
48
|
+
"fieldMustBeInteger": "Field \"{{key}}\" must be an integer."
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"validators": {
|
|
52
|
+
"apiBaseUrl": {
|
|
53
|
+
"invalid": "Enter a valid URL, for example {{example}}.",
|
|
54
|
+
"invalidProtocol": "URL must start with http:// or https://, for example {{example}}."
|
|
55
|
+
},
|
|
56
|
+
"envKey": {
|
|
57
|
+
"invalid": "Use letters and numbers only."
|
|
58
|
+
},
|
|
59
|
+
"tcpPort": {
|
|
60
|
+
"invalid": "Enter a valid TCP port between 1 and 65535, for example {{example}}.",
|
|
61
|
+
"allocateFailed": "Failed to allocate an available TCP port.",
|
|
62
|
+
"allocateNotDockerPublished": "Failed to allocate an available TCP port that is not already published by Docker.",
|
|
63
|
+
"alreadyInUse": "Port {{port}} is already in use. Choose another port.",
|
|
64
|
+
"alreadyInUseByDocker": "Port {{port}} is already in use by a Docker container. Choose another port."
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"commands": {
|
|
68
|
+
"envAdd": {
|
|
69
|
+
"prompts": {
|
|
70
|
+
"name": {
|
|
71
|
+
"message": "What would you like to call this environment?",
|
|
72
|
+
"placeholder": "default"
|
|
73
|
+
},
|
|
74
|
+
"scope": {
|
|
75
|
+
"message": "Where should this connection be saved?",
|
|
76
|
+
"projectLabel": "Project",
|
|
77
|
+
"projectHint": ".nocobase in this repo",
|
|
78
|
+
"globalLabel": "Global",
|
|
79
|
+
"globalHint": "user-level config"
|
|
80
|
+
},
|
|
81
|
+
"apiBaseUrl": {
|
|
82
|
+
"message": "What is the API base URL?",
|
|
83
|
+
"placeholder": "http://localhost:13000/api"
|
|
84
|
+
},
|
|
85
|
+
"authType": {
|
|
86
|
+
"message": "How would you like to sign in?",
|
|
87
|
+
"oauthLabel": "OAuth (browser login)",
|
|
88
|
+
"oauthHint": "runs nb env auth after save",
|
|
89
|
+
"tokenLabel": "API token / API key"
|
|
90
|
+
},
|
|
91
|
+
"accessToken": {
|
|
92
|
+
"message": "Enter an API token or API key",
|
|
93
|
+
"placeholder": "Enter your API token / API key"
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
"download": {
|
|
98
|
+
"failures": {
|
|
99
|
+
"dependencyInstall": {
|
|
100
|
+
"title": "Couldn't finish preparing the local NocoBase app.",
|
|
101
|
+
"body": "The download completed, but dependency installation did not finish successfully.",
|
|
102
|
+
"hint": "Run the same command again with `--verbose` to see the full install logs."
|
|
103
|
+
},
|
|
104
|
+
"gitClone": {
|
|
105
|
+
"title": "Couldn't download NocoBase from Git.",
|
|
106
|
+
"body": "The CLI was not able to clone the selected NocoBase repository.",
|
|
107
|
+
"hint": "Run the same command again with `--verbose` to see the full clone logs."
|
|
108
|
+
},
|
|
109
|
+
"dockerPull": {
|
|
110
|
+
"title": "Couldn't download the Docker image.",
|
|
111
|
+
"body": "The CLI was not able to pull the selected NocoBase image.",
|
|
112
|
+
"hint": "Run the same command again with `--verbose` to see the full Docker pull logs."
|
|
113
|
+
},
|
|
114
|
+
"dockerSave": {
|
|
115
|
+
"title": "The Docker image was pulled, but saving the tar file failed.",
|
|
116
|
+
"body": "The CLI could not finish exporting the image to the target tarball path.",
|
|
117
|
+
"hint": "Run the same command again with `--verbose` to see the full Docker save logs."
|
|
118
|
+
},
|
|
119
|
+
"scaffold": {
|
|
120
|
+
"title": "Couldn't create the local NocoBase app scaffold.",
|
|
121
|
+
"body": "The CLI was not able to finish generating the initial app files.",
|
|
122
|
+
"hint": "Run the same command again with `--verbose` to see the full scaffold logs."
|
|
123
|
+
},
|
|
124
|
+
"build": {
|
|
125
|
+
"title": "The local NocoBase app was downloaded, but the build step failed.",
|
|
126
|
+
"body": "The CLI could not finish building the downloaded source code.",
|
|
127
|
+
"hint": "Run the same command again with `--verbose` to see the full build logs."
|
|
128
|
+
},
|
|
129
|
+
"generic": {
|
|
130
|
+
"title": "Couldn't finish downloading NocoBase.",
|
|
131
|
+
"body": "The CLI hit an unexpected command failure while preparing the download.",
|
|
132
|
+
"hint": "Run the same command again with `--verbose` to see the full command logs."
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
"prompts": {
|
|
136
|
+
"source": {
|
|
137
|
+
"message": "How would you like to get NocoBase?",
|
|
138
|
+
"dockerLabel": "Docker install (Recommended)",
|
|
139
|
+
"dockerHint": "Best for no-code and low-maintenance setups. You can upgrade later by pulling a newer image and restarting the app.",
|
|
140
|
+
"npmLabel": "create-nocobase-app install",
|
|
141
|
+
"npmHint": "Best when you want an app project with business code kept separate from the NocoBase framework, while still supporting low-code development.",
|
|
142
|
+
"gitLabel": "Git source install",
|
|
143
|
+
"gitHint": "Best when you want to try the latest unreleased changes, contribute code, or debug and modify NocoBase source directly. This option is more developer-oriented."
|
|
144
|
+
},
|
|
145
|
+
"version": {
|
|
146
|
+
"message": "Which version would you like to use?",
|
|
147
|
+
"latestLabel": "latest",
|
|
148
|
+
"latestHint": "Stable release. Best for production use and the most predictable experience. Currently unavailable.",
|
|
149
|
+
"betaLabel": "beta",
|
|
150
|
+
"betaHint": "Preview release. Good for trying upcoming features before general release.",
|
|
151
|
+
"alphaLabel": "alpha",
|
|
152
|
+
"alphaHint": "Development release. Includes the newest changes, but may be incomplete or unstable.",
|
|
153
|
+
"otherLabel": "Other",
|
|
154
|
+
"otherHint": "Enter another package version, Docker tag, or Git ref manually, such as a branch name."
|
|
155
|
+
},
|
|
156
|
+
"otherVersion": {
|
|
157
|
+
"message": "Enter the version, Docker tag, or Git ref you want to use.",
|
|
158
|
+
"placeholder": "For example: fix/cli-v2"
|
|
159
|
+
},
|
|
160
|
+
"dockerRegistry": {
|
|
161
|
+
"message": "Which Docker registry would you like to use? The image tag is set separately in Version.",
|
|
162
|
+
"placeholder": "nocobase/nocobase"
|
|
163
|
+
},
|
|
164
|
+
"dockerPlatform": {
|
|
165
|
+
"message": "Which Docker image platform should be used?",
|
|
166
|
+
"autoLabel": "Auto",
|
|
167
|
+
"autoHint": "Use Docker default for this machine"
|
|
168
|
+
},
|
|
169
|
+
"dockerSave": {
|
|
170
|
+
"message": "Save the Docker image as a tar file"
|
|
171
|
+
},
|
|
172
|
+
"gitUrl": {
|
|
173
|
+
"message": "Git repository URL",
|
|
174
|
+
"placeholder": "https://github.com/nocobase/nocobase.git"
|
|
175
|
+
},
|
|
176
|
+
"outputDir": {
|
|
177
|
+
"message": "Download location",
|
|
178
|
+
"placeholder": "e.g. ./nocobase-latest"
|
|
179
|
+
},
|
|
180
|
+
"npmRegistry": {
|
|
181
|
+
"message": "npm registry URL (optional)",
|
|
182
|
+
"placeholder": "Leave empty to use the default registry"
|
|
183
|
+
},
|
|
184
|
+
"replace": {
|
|
185
|
+
"message": "Clear the app directory if it already contains files"
|
|
186
|
+
},
|
|
187
|
+
"devDependencies": {
|
|
188
|
+
"message": "Install development dependencies (npm only)"
|
|
189
|
+
},
|
|
190
|
+
"build": {
|
|
191
|
+
"message": "Build the app after download"
|
|
192
|
+
},
|
|
193
|
+
"buildDts": {
|
|
194
|
+
"message": "Generate TypeScript declaration files"
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
"install": {
|
|
199
|
+
"validation": {
|
|
200
|
+
"builtinDbUnsupported": "Built-in database does not support \"{{dialect}}\" yet. Choose PostgreSQL, MySQL, or MariaDB, or turn off built-in database."
|
|
201
|
+
},
|
|
202
|
+
"prompts": {
|
|
203
|
+
"env": {
|
|
204
|
+
"message": "What would you like to call this app?",
|
|
205
|
+
"placeholder": "local"
|
|
206
|
+
},
|
|
207
|
+
"lang": {
|
|
208
|
+
"message": "Which language would you like to use?"
|
|
209
|
+
},
|
|
210
|
+
"appRootPath": {
|
|
211
|
+
"message": "Where should this app be stored?",
|
|
212
|
+
"placeholder": "./<env>/source/"
|
|
213
|
+
},
|
|
214
|
+
"appPort": {
|
|
215
|
+
"message": "Which port should this app use?",
|
|
216
|
+
"placeholder": "13000"
|
|
217
|
+
},
|
|
218
|
+
"storagePath": {
|
|
219
|
+
"message": "Where should uploads and local files be stored?",
|
|
220
|
+
"placeholder": "./<env>/storage/"
|
|
221
|
+
},
|
|
222
|
+
"fetchSource": {
|
|
223
|
+
"message": "Download NocoBase automatically if the app directory is empty?"
|
|
224
|
+
},
|
|
225
|
+
"dbDialect": {
|
|
226
|
+
"message": "Which database would you like to use?"
|
|
227
|
+
},
|
|
228
|
+
"builtinDb": {
|
|
229
|
+
"message": "Would you like to use the built-in database?"
|
|
230
|
+
},
|
|
231
|
+
"builtinDbImage": {
|
|
232
|
+
"message": "Which Docker image should be used for the built-in database?",
|
|
233
|
+
"placeholder": "postgres:16"
|
|
234
|
+
},
|
|
235
|
+
"dbHost": {
|
|
236
|
+
"message": "What is the database host?",
|
|
237
|
+
"placeholder": "127.0.0.1"
|
|
238
|
+
},
|
|
239
|
+
"dbPort": {
|
|
240
|
+
"message": "What is the database port?",
|
|
241
|
+
"placeholder": "5432"
|
|
242
|
+
},
|
|
243
|
+
"dbDatabase": {
|
|
244
|
+
"message": "What is the database name?"
|
|
245
|
+
},
|
|
246
|
+
"dbUser": {
|
|
247
|
+
"message": "What is the database username?"
|
|
248
|
+
},
|
|
249
|
+
"dbPassword": {
|
|
250
|
+
"message": "What is the database password?"
|
|
251
|
+
},
|
|
252
|
+
"rootUsername": {
|
|
253
|
+
"message": "Choose the initial admin username",
|
|
254
|
+
"placeholder": "nocobase"
|
|
255
|
+
},
|
|
256
|
+
"rootEmail": {
|
|
257
|
+
"message": "What is the initial admin email?",
|
|
258
|
+
"placeholder": "admin@nocobase.com"
|
|
259
|
+
},
|
|
260
|
+
"rootPassword": {
|
|
261
|
+
"message": "Choose the initial admin password"
|
|
262
|
+
},
|
|
263
|
+
"rootNickname": {
|
|
264
|
+
"message": "What display name should the initial admin use?",
|
|
265
|
+
"placeholder": "Super Admin"
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
},
|
|
269
|
+
"init": {
|
|
270
|
+
"validation": {
|
|
271
|
+
"envExists": "Env \"{{envName}}\" already exists in this workspace. Choose another env name."
|
|
272
|
+
},
|
|
273
|
+
"messages": {
|
|
274
|
+
"title": "Set Up Your NocoBase AI Workspace",
|
|
275
|
+
"appNameRequiredWhenSkipped": "Env name is required when prompts are skipped.",
|
|
276
|
+
"appNameEnvHelp": "Use `nb init --yes --env <envName>` to continue.",
|
|
277
|
+
"resumeEnvRequired": "Env name is required when resuming setup.",
|
|
278
|
+
"resumeEnvHelp": "Use `nb init --resume --env <envName>` to continue.",
|
|
279
|
+
"uiOpening": "A local setup form will open in your browser. That form needs a person to fill it in. If you are using an AI agent, do not stop this process while the CLI waits for the submission.",
|
|
280
|
+
"uiReady": "Local setup form is ready.",
|
|
281
|
+
"uiReadyHelp": "If your browser does not open automatically, copy the URL below into your browser to continue. Keep this terminal session running while the CLI waits for the submission.",
|
|
282
|
+
"uiOpenBrowserFallback": "We could not open your browser automatically. Copy the URL above into your browser to continue setup, and keep this terminal session running. If you are using an AI agent, do not stop the current process."
|
|
283
|
+
},
|
|
284
|
+
"prompts": {
|
|
285
|
+
"appName": {
|
|
286
|
+
"message": "What should this environment use for `--env`?",
|
|
287
|
+
"placeholder": "local"
|
|
288
|
+
},
|
|
289
|
+
"hasNocobase": {
|
|
290
|
+
"message": "Do you already have a NocoBase application?",
|
|
291
|
+
"noLabel": "I don't have a NocoBase application yet",
|
|
292
|
+
"yesLabel": "I already have a NocoBase application"
|
|
293
|
+
},
|
|
294
|
+
"installSkills": {
|
|
295
|
+
"message": "Install NocoBase AI coding skills (nocobase/skills)?"
|
|
296
|
+
},
|
|
297
|
+
"apiBaseUrl": {
|
|
298
|
+
"message": "API base URL",
|
|
299
|
+
"placeholder": "http://localhost:13000/api"
|
|
300
|
+
}
|
|
301
|
+
},
|
|
302
|
+
"webUi": {
|
|
303
|
+
"pageTitle": "Set Up Your NocoBase AI Workspace",
|
|
304
|
+
"documentHeading": "Set Up Your NocoBase AI Workspace",
|
|
305
|
+
"documentHint": "Connect an existing NocoBase app, or install a new one and connect it, so coding agents can work with NocoBase in this workspace.",
|
|
306
|
+
"gettingStarted": {
|
|
307
|
+
"title": "Getting started",
|
|
308
|
+
"description": "Pick your setup path."
|
|
309
|
+
},
|
|
310
|
+
"connectExistingApp": {
|
|
311
|
+
"title": "Connect an existing app",
|
|
312
|
+
"description": "Add your app connection."
|
|
313
|
+
},
|
|
314
|
+
"createNewApp": {
|
|
315
|
+
"title": "Create a new app",
|
|
316
|
+
"description": "Set project basics."
|
|
317
|
+
},
|
|
318
|
+
"downloadAppFiles": {
|
|
319
|
+
"title": "Download app files",
|
|
320
|
+
"description": "Choose source and options."
|
|
321
|
+
},
|
|
322
|
+
"configureDatabase": {
|
|
323
|
+
"title": "Configure the database",
|
|
324
|
+
"description": "Use built-in or custom."
|
|
325
|
+
},
|
|
326
|
+
"createAdminAccount": {
|
|
327
|
+
"title": "Create an admin account",
|
|
328
|
+
"description": "Set up the first admin."
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
@@ -0,0 +1,333 @@
|
|
|
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
|
+
"checking": "检查中...",
|
|
38
|
+
"sending": "提交中...",
|
|
39
|
+
"successTitle": "成功",
|
|
40
|
+
"errorTitle": "错误",
|
|
41
|
+
"savedAndClosing": "已保存。此标签页将在 5 秒后自动关闭。",
|
|
42
|
+
"savedCloseBlocked": "已保存。浏览器阻止了自动关闭,你现在可以手动关闭此标签页。",
|
|
43
|
+
"invalidValue": "无效值",
|
|
44
|
+
"invalidRequest": "请求无效",
|
|
45
|
+
"invalidStep": "步骤参数无效或缺失。",
|
|
46
|
+
"invalidField": "字段参数无效或缺失。",
|
|
47
|
+
"fieldRequired": "字段 \"{{key}}\" 为必填项。",
|
|
48
|
+
"fieldMustBeInteger": "字段 \"{{key}}\" 必须为整数。"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"validators": {
|
|
52
|
+
"apiBaseUrl": {
|
|
53
|
+
"invalid": "请输入有效的 URL,例如 {{example}}。",
|
|
54
|
+
"invalidProtocol": "URL 必须以 http:// 或 https:// 开头,例如 {{example}}。"
|
|
55
|
+
},
|
|
56
|
+
"envKey": {
|
|
57
|
+
"invalid": "仅支持字母和数字。"
|
|
58
|
+
},
|
|
59
|
+
"tcpPort": {
|
|
60
|
+
"invalid": "请输入 1 到 65535 之间的有效 TCP 端口,例如 {{example}}。",
|
|
61
|
+
"allocateFailed": "分配可用 TCP 端口失败。",
|
|
62
|
+
"allocateNotDockerPublished": "分配未被 Docker 占用的可用 TCP 端口失败。",
|
|
63
|
+
"alreadyInUse": "端口 {{port}} 已被占用,请更换其他端口。",
|
|
64
|
+
"alreadyInUseByDocker": "端口 {{port}} 已被 Docker 容器占用,请更换其他端口。"
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"commands": {
|
|
68
|
+
"envAdd": {
|
|
69
|
+
"prompts": {
|
|
70
|
+
"name": {
|
|
71
|
+
"message": "你想如何命名这个环境?",
|
|
72
|
+
"placeholder": "default"
|
|
73
|
+
},
|
|
74
|
+
"scope": {
|
|
75
|
+
"message": "这个连接要保存到哪里?",
|
|
76
|
+
"projectLabel": "项目内",
|
|
77
|
+
"projectHint": "保存在当前仓库的 .nocobase 中",
|
|
78
|
+
"globalLabel": "全局",
|
|
79
|
+
"globalHint": "保存在用户级配置中"
|
|
80
|
+
},
|
|
81
|
+
"apiBaseUrl": {
|
|
82
|
+
"message": "API 基础地址是什么?",
|
|
83
|
+
"placeholder": "http://localhost:13000/api"
|
|
84
|
+
},
|
|
85
|
+
"authType": {
|
|
86
|
+
"message": "你想使用哪种登录方式?",
|
|
87
|
+
"oauthLabel": "OAuth(浏览器登录)",
|
|
88
|
+
"oauthHint": "保存后会自动执行 nb env auth",
|
|
89
|
+
"tokenLabel": "API Token / API Key"
|
|
90
|
+
},
|
|
91
|
+
"accessToken": {
|
|
92
|
+
"message": "请输入 API Token 或 API Key",
|
|
93
|
+
"placeholder": "请输入你的 API Token / API Key"
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
"download": {
|
|
98
|
+
"failures": {
|
|
99
|
+
"dependencyInstall": {
|
|
100
|
+
"title": "本地 NocoBase 应用还没有准备完成。",
|
|
101
|
+
"body": "下载已经完成,但依赖安装没有成功结束。",
|
|
102
|
+
"hint": "请使用相同命令加上 `--verbose` 重试,以查看完整安装日志。"
|
|
103
|
+
},
|
|
104
|
+
"gitClone": {
|
|
105
|
+
"title": "无法通过 Git 下载 NocoBase。",
|
|
106
|
+
"body": "CLI 没有成功克隆你选择的 NocoBase 仓库。",
|
|
107
|
+
"hint": "请使用相同命令加上 `--verbose` 重试,以查看完整克隆日志。"
|
|
108
|
+
},
|
|
109
|
+
"dockerPull": {
|
|
110
|
+
"title": "无法下载 Docker 镜像。",
|
|
111
|
+
"body": "CLI 没有成功拉取你选择的 NocoBase 镜像。",
|
|
112
|
+
"hint": "请使用相同命令加上 `--verbose` 重试,以查看完整 Docker pull 日志。"
|
|
113
|
+
},
|
|
114
|
+
"dockerSave": {
|
|
115
|
+
"title": "Docker 镜像已经拉取完成,但导出 tar 文件失败了。",
|
|
116
|
+
"body": "CLI 没有成功将镜像导出到目标 tar 包路径。",
|
|
117
|
+
"hint": "请使用相同命令加上 `--verbose` 重试,以查看完整 Docker save 日志。"
|
|
118
|
+
},
|
|
119
|
+
"scaffold": {
|
|
120
|
+
"title": "无法创建本地 NocoBase 应用骨架。",
|
|
121
|
+
"body": "CLI 没有成功生成初始应用文件。",
|
|
122
|
+
"hint": "请使用相同命令加上 `--verbose` 重试,以查看完整 scaffold 日志。"
|
|
123
|
+
},
|
|
124
|
+
"build": {
|
|
125
|
+
"title": "本地 NocoBase 应用已经下载完成,但构建步骤失败了。",
|
|
126
|
+
"body": "CLI 没有成功完成已下载源码的构建。",
|
|
127
|
+
"hint": "请使用相同命令加上 `--verbose` 重试,以查看完整构建日志。"
|
|
128
|
+
},
|
|
129
|
+
"generic": {
|
|
130
|
+
"title": "无法完成 NocoBase 下载。",
|
|
131
|
+
"body": "CLI 在准备下载内容时遇到了未预期的命令失败。",
|
|
132
|
+
"hint": "请使用相同命令加上 `--verbose` 重试,以查看完整命令日志。"
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
"prompts": {
|
|
136
|
+
"source": {
|
|
137
|
+
"message": "你想通过哪种方式获取 NocoBase?",
|
|
138
|
+
"dockerLabel": "Docker 安装(推荐)",
|
|
139
|
+
"dockerHint": "适合无代码或低维护成本场景。后续升级时,拉取新镜像并重启应用即可。",
|
|
140
|
+
"npmLabel": "create-nocobase-app 安装",
|
|
141
|
+
"npmHint": "适合希望将业务代码与 NocoBase 框架保持独立的场景,同时仍然支持低代码开发。",
|
|
142
|
+
"gitLabel": "Git 源码安装",
|
|
143
|
+
"gitHint": "适合体验最新未发布版本、参与贡献,或直接修改和调试 NocoBase 源码。这个方式更偏向开发者使用。"
|
|
144
|
+
},
|
|
145
|
+
"version": {
|
|
146
|
+
"message": "你想使用哪个版本?",
|
|
147
|
+
"latestLabel": "latest",
|
|
148
|
+
"latestHint": "稳定版。适合生产环境和希望获得稳定体验的场景。当前暂不可用。",
|
|
149
|
+
"betaLabel": "beta",
|
|
150
|
+
"betaHint": "测试版。包含即将发布的新功能,适合提前体验和反馈。",
|
|
151
|
+
"alphaLabel": "alpha",
|
|
152
|
+
"alphaHint": "开发版。功能更新最快,但可能不完整或不稳定。",
|
|
153
|
+
"otherLabel": "其他",
|
|
154
|
+
"otherHint": "手动填写其他版本号、Docker tag 或 Git ref,例如分支名。"
|
|
155
|
+
},
|
|
156
|
+
"otherVersion": {
|
|
157
|
+
"message": "请输入你想使用的版本号、Docker tag 或 Git ref。",
|
|
158
|
+
"placeholder": "例如:fix/cli-v2"
|
|
159
|
+
},
|
|
160
|
+
"dockerRegistry": {
|
|
161
|
+
"message": "你想使用哪个 Docker registry?镜像 tag 请单独在 Version 中填写。",
|
|
162
|
+
"placeholder": "registry.cn-shanghai.aliyuncs.com/nocobase/nocobase"
|
|
163
|
+
},
|
|
164
|
+
"dockerPlatform": {
|
|
165
|
+
"message": "要使用哪个 Docker 镜像平台?",
|
|
166
|
+
"autoLabel": "自动",
|
|
167
|
+
"autoHint": "由 Docker 根据当前机器自动选择"
|
|
168
|
+
},
|
|
169
|
+
"dockerSave": {
|
|
170
|
+
"message": "将 Docker 镜像另存为 tar 文件"
|
|
171
|
+
},
|
|
172
|
+
"gitUrl": {
|
|
173
|
+
"message": "Git 仓库地址",
|
|
174
|
+
"placeholder": "https://github.com/nocobase/nocobase.git"
|
|
175
|
+
},
|
|
176
|
+
"outputDir": {
|
|
177
|
+
"message": "下载目录",
|
|
178
|
+
"placeholder": "例如 ./nocobase-latest"
|
|
179
|
+
},
|
|
180
|
+
"npmRegistry": {
|
|
181
|
+
"message": "npm registry 地址(可选)",
|
|
182
|
+
"placeholder": "留空则使用默认 registry"
|
|
183
|
+
},
|
|
184
|
+
"replace": {
|
|
185
|
+
"message": "如果应用目录已有文件,是否先清空再继续"
|
|
186
|
+
},
|
|
187
|
+
"devDependencies": {
|
|
188
|
+
"message": "安装开发依赖(仅 npm)"
|
|
189
|
+
},
|
|
190
|
+
"build": {
|
|
191
|
+
"message": "下载后构建应用"
|
|
192
|
+
},
|
|
193
|
+
"buildDts": {
|
|
194
|
+
"message": "生成 TypeScript 声明文件"
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
"install": {
|
|
199
|
+
"validation": {
|
|
200
|
+
"builtinDbUnsupported": "内置数据库暂不支持 \"{{dialect}}\"。请选择 PostgreSQL、MySQL 或 MariaDB,或者关闭内置数据库。"
|
|
201
|
+
},
|
|
202
|
+
"prompts": {
|
|
203
|
+
"env": {
|
|
204
|
+
"message": "你想如何命名这个应用?",
|
|
205
|
+
"placeholder": "local"
|
|
206
|
+
},
|
|
207
|
+
"lang": {
|
|
208
|
+
"message": "你想使用哪种语言?"
|
|
209
|
+
},
|
|
210
|
+
"appRootPath": {
|
|
211
|
+
"message": "应用代码要放到哪里?",
|
|
212
|
+
"placeholder": "./<env>/source/"
|
|
213
|
+
},
|
|
214
|
+
"appPort": {
|
|
215
|
+
"message": "应用要使用哪个端口?",
|
|
216
|
+
"placeholder": "13000"
|
|
217
|
+
},
|
|
218
|
+
"storagePath": {
|
|
219
|
+
"message": "上传文件和本地存储目录要放到哪里?",
|
|
220
|
+
"placeholder": "./<env>/storage/"
|
|
221
|
+
},
|
|
222
|
+
"fetchSource": {
|
|
223
|
+
"message": "如果应用目录为空,是否自动下载 NocoBase?"
|
|
224
|
+
},
|
|
225
|
+
"dbDialect": {
|
|
226
|
+
"message": "你想使用哪种数据库?"
|
|
227
|
+
},
|
|
228
|
+
"builtinDb": {
|
|
229
|
+
"message": "是否使用内置数据库?"
|
|
230
|
+
},
|
|
231
|
+
"builtinDbImage": {
|
|
232
|
+
"message": "内置数据库要使用哪个 Docker 镜像?",
|
|
233
|
+
"placeholder": "postgres:16"
|
|
234
|
+
},
|
|
235
|
+
"dbHost": {
|
|
236
|
+
"message": "数据库主机地址是什么?",
|
|
237
|
+
"placeholder": "127.0.0.1"
|
|
238
|
+
},
|
|
239
|
+
"dbPort": {
|
|
240
|
+
"message": "数据库端口是什么?",
|
|
241
|
+
"placeholder": "5432"
|
|
242
|
+
},
|
|
243
|
+
"dbDatabase": {
|
|
244
|
+
"message": "数据库名称是什么?"
|
|
245
|
+
},
|
|
246
|
+
"dbUser": {
|
|
247
|
+
"message": "数据库用户名是什么?"
|
|
248
|
+
},
|
|
249
|
+
"dbPassword": {
|
|
250
|
+
"message": "数据库密码是什么?"
|
|
251
|
+
},
|
|
252
|
+
"rootUsername": {
|
|
253
|
+
"message": "设置初始管理员用户名",
|
|
254
|
+
"placeholder": "nocobase"
|
|
255
|
+
},
|
|
256
|
+
"rootEmail": {
|
|
257
|
+
"message": "初始管理员邮箱是什么?",
|
|
258
|
+
"placeholder": "admin@nocobase.com"
|
|
259
|
+
},
|
|
260
|
+
"rootPassword": {
|
|
261
|
+
"message": "设置初始管理员密码"
|
|
262
|
+
},
|
|
263
|
+
"rootNickname": {
|
|
264
|
+
"message": "初始管理员显示名称是什么?",
|
|
265
|
+
"placeholder": "Super Admin"
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
},
|
|
269
|
+
"init": {
|
|
270
|
+
"validation": {
|
|
271
|
+
"envExists": "Env \"{{envName}}\" 已存在于当前 workspace 中,请换一个 env name。"
|
|
272
|
+
},
|
|
273
|
+
"messages": {
|
|
274
|
+
"title": "初始化你的 NocoBase AI 工作区",
|
|
275
|
+
"appNameRequiredWhenSkipped": "跳过 prompts 时必须提供 Env name。",
|
|
276
|
+
"appNameEnvHelp": "请使用 `nb init --yes --env <envName>` 继续。",
|
|
277
|
+
"resumeEnvRequired": "恢复安装时必须提供 Env name。",
|
|
278
|
+
"resumeEnvHelp": "请使用 `nb init --resume --env <envName>` 继续。",
|
|
279
|
+
"uiOpening": "本地 setup 表单即将在浏览器中打开。这个表单需要等待人工填写。如果你正在使用 AI agent,请不要停止当前进程,CLI 会继续等待表单提交结果。",
|
|
280
|
+
"uiReady": "本地 setup 表单已就绪。",
|
|
281
|
+
"uiReadyHelp": "如果没有自动打开浏览器,请复制下面的地址到浏览器中继续。CLI 会继续等待表单提交,请保持当前终端会话继续运行。",
|
|
282
|
+
"uiOpenBrowserFallback": "无法自动打开浏览器。请复制上面的地址到浏览器中继续 setup,并保持当前终端会话继续运行。如果你正在使用 AI agent,请不要停止当前进程。"
|
|
283
|
+
},
|
|
284
|
+
"prompts": {
|
|
285
|
+
"appName": {
|
|
286
|
+
"message": "这个环境要使用什么 `--env` 标识?",
|
|
287
|
+
"placeholder": "local"
|
|
288
|
+
},
|
|
289
|
+
"hasNocobase": {
|
|
290
|
+
"message": "你是否已经有一个 NocoBase 应用?",
|
|
291
|
+
"noLabel": "还没有 NocoBase 应用",
|
|
292
|
+
"yesLabel": "已经有 NocoBase 应用"
|
|
293
|
+
},
|
|
294
|
+
"installSkills": {
|
|
295
|
+
"message": "是否安装 NocoBase AI coding skills(nocobase/skills)?"
|
|
296
|
+
},
|
|
297
|
+
"apiBaseUrl": {
|
|
298
|
+
"message": "API 基础地址",
|
|
299
|
+
"placeholder": "http://localhost:13000/api"
|
|
300
|
+
}
|
|
301
|
+
},
|
|
302
|
+
"webUi": {
|
|
303
|
+
"pageTitle": "初始化你的 NocoBase AI 工作区",
|
|
304
|
+
"documentHeading": "初始化你的 NocoBase AI 工作区",
|
|
305
|
+
"documentHint": "连接已有的 NocoBase 应用,或安装一个新的应用后再完成连接,让 Coding Agents 可以在当前工作区中结合 NocoBase 协同工作。",
|
|
306
|
+
"gettingStarted": {
|
|
307
|
+
"title": "开始设置",
|
|
308
|
+
"description": "选择你的配置路径。"
|
|
309
|
+
},
|
|
310
|
+
"connectExistingApp": {
|
|
311
|
+
"title": "连接已有应用",
|
|
312
|
+
"description": "添加现有应用连接。"
|
|
313
|
+
},
|
|
314
|
+
"createNewApp": {
|
|
315
|
+
"title": "创建新应用",
|
|
316
|
+
"description": "设置项目基础信息。"
|
|
317
|
+
},
|
|
318
|
+
"downloadAppFiles": {
|
|
319
|
+
"title": "下载应用文件",
|
|
320
|
+
"description": "选择来源和下载选项。"
|
|
321
|
+
},
|
|
322
|
+
"configureDatabase": {
|
|
323
|
+
"title": "配置数据库",
|
|
324
|
+
"description": "选择内置数据库或自定义数据库。"
|
|
325
|
+
},
|
|
326
|
+
"createAdminAccount": {
|
|
327
|
+
"title": "创建管理员账号",
|
|
328
|
+
"description": "设置第一个管理员账号。"
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|