@nullplatform/mcp 0.1.9 → 0.1.11
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/dist/i18n.js +204 -204
- package/dist/render.js +15 -3
- package/dist/surfaces/developer.js +1 -1
- package/dist/tools/create-app.js +56 -12
- package/package.json +1 -1
- package/widgets-dist/approvals.html +1 -1
- package/widgets-dist/builds.html +1 -1
- package/widgets-dist/create-app.html +14 -14
- package/widgets-dist/deployments.html +2 -2
- package/widgets-dist/find-apps.html +2 -2
- package/widgets-dist/logs.html +1 -1
- package/widgets-dist/manifest.json +16 -16
- package/widgets-dist/metrics.html +7 -7
- package/widgets-dist/np-panel.html +2 -2
- package/widgets-dist/overview.html +2 -2
- package/widgets-dist/params.html +14 -14
- package/widgets-dist/releases.html +2 -2
- package/widgets-dist/service-action.html +10 -10
- package/widgets-dist/service-create.html +1 -1
- package/widgets-dist/service-delete.html +1 -1
- package/widgets-dist/service-link.html +1 -1
- package/widgets-dist/services.html +1 -1
package/dist/i18n.js
CHANGED
|
@@ -13,19 +13,19 @@ const english = {
|
|
|
13
13
|
"resolve.ambiguous": "Several applications match — say which one (name or `#id`):",
|
|
14
14
|
"resolve.noId": "No application with id {id}.",
|
|
15
15
|
"resolve.noMatch": 'No application matching "{ref}".',
|
|
16
|
-
"resolve.repoUnlinked": 'This repo ({url}) isn\'t linked to any nullplatform application. Pass app:"<name>" or
|
|
16
|
+
"resolve.repoUnlinked": 'This repo ({url}) isn\'t linked to any nullplatform application. Pass app:"<name>" or link it as a new application.',
|
|
17
17
|
"resolve.noInput": 'No app given and no git remote found in the workspace. Pass app:"<name>" (or an id like "#123").',
|
|
18
18
|
"resolve.noNrn": "Can't resolve the application NRN for **{app}**.",
|
|
19
19
|
// — scope selection —
|
|
20
20
|
"scope.which": "Which scope?",
|
|
21
21
|
"scope.none": "This app has no scopes yet.",
|
|
22
|
-
"scope.noneHint":
|
|
22
|
+
"scope.noneHint": "create a scope (e.g. a “dev” scope) first, then deploy.",
|
|
23
23
|
"scope.noMatch": 'No scope matching "{wanted}". Scopes: {names}.',
|
|
24
24
|
"scope.noMatchDetailed": 'No scope matching "{wanted}" (by name or dimension). Scopes:',
|
|
25
|
-
"scope.createHint":
|
|
26
|
-
"scope.deployHint":
|
|
25
|
+
"scope.createHint": "create the **{name}** scope first.",
|
|
26
|
+
"scope.deployHint": "name the scope or dimension to deploy onto (e.g. environment=production).",
|
|
27
27
|
"scope.perScope": "{noun} are per scope — which one?",
|
|
28
|
-
"scope.readHint":
|
|
28
|
+
"scope.readHint": "read it for the **{name}** scope.",
|
|
29
29
|
// — table headers —
|
|
30
30
|
"header.app": "App",
|
|
31
31
|
"header.id": "Id",
|
|
@@ -100,25 +100,25 @@ const english = {
|
|
|
100
100
|
"render.now": "now",
|
|
101
101
|
"render.desired": "→ desired {pct}%",
|
|
102
102
|
// — next-step hints (status) —
|
|
103
|
-
"hint.rolloutTraffic":
|
|
104
|
-
"hint.rolloutStatus": "deployment #{id} on **{scope}** is {status} —
|
|
105
|
-
"hint.noScopes":
|
|
106
|
-
"hint.buildNewer": "build #{id} ({branch} @{commit}) is newer than release {semver} —
|
|
107
|
-
"hint.buildUnreleased": "build #{id} has no release yet —
|
|
108
|
-
"hint.releaseNotLive": "release {semver} isn't live yet —
|
|
109
|
-
"hint.noBuilds": "no builds yet — push a commit so CI produces one, then
|
|
103
|
+
"hint.rolloutTraffic": "deployment #{id} on **{scope}** is at {traffic}% traffic — move traffic up to advance, finalize once it's at 100%, or roll back to back out.",
|
|
104
|
+
"hint.rolloutStatus": "deployment #{id} on **{scope}** is {status} — keep watching it roll out.",
|
|
105
|
+
"hint.noScopes": "no scopes yet — create one (e.g. a “dev” scope) to get a place to deploy.",
|
|
106
|
+
"hint.buildNewer": "build #{id} ({branch} @{commit}) is newer than release {semver} — deploy it to ship the new code (the release is cut for you).",
|
|
107
|
+
"hint.buildUnreleased": "build #{id} has no release yet — deploy it to ship (the release is cut for you).",
|
|
108
|
+
"hint.releaseNotLive": "release {semver} isn't live yet — deploy it to ship.",
|
|
109
|
+
"hint.noBuilds": "no builds yet — push a commit so CI produces one, then deploy.",
|
|
110
110
|
"hint.upToDate": "everything is up to date ✅",
|
|
111
|
-
"hint.watch": "
|
|
111
|
+
"hint.watch": "keep watching the rollout to see it land.",
|
|
112
112
|
// — next-step hints (rollout) —
|
|
113
|
-
"rollout.full":
|
|
114
|
-
"rollout.moving": "traffic moving {from}% → {to}% —
|
|
115
|
-
"rollout.at":
|
|
116
|
-
"rollout.instances": "instances are coming up —
|
|
117
|
-
"rollout.switching": "traffic is switching —
|
|
113
|
+
"rollout.full": "all traffic on the new version — finalize to retire the old one.",
|
|
114
|
+
"rollout.moving": "traffic moving {from}% → {to}% — keep watching it land.",
|
|
115
|
+
"rollout.at": "traffic at {traffic}% — move it up to advance (marks: 1, 5, 10, 25, 50, 75, 90, 95, 99, 100%), or roll back to back out.",
|
|
116
|
+
"rollout.instances": "instances are coming up — keep watching.",
|
|
117
|
+
"rollout.switching": "traffic is switching — keep watching.",
|
|
118
118
|
"rollout.finalizing": "finalizing — old instances are being retired.",
|
|
119
119
|
"rollout.done": "done — the release is fully live ✅",
|
|
120
120
|
"rollout.approval": "waiting for an approval ✋ — an approver must allow this deployment (dashboard → Approvals).",
|
|
121
|
-
"rollout.failed":
|
|
121
|
+
"rollout.failed": "deployment failed — check the logs for output, and roll back if traffic moved.",
|
|
122
122
|
"rollout.rolledBack": "rolled back — previous version is serving all traffic.",
|
|
123
123
|
// — application_get tool —
|
|
124
124
|
"status.errorLabel": "Couldn't load status",
|
|
@@ -126,21 +126,21 @@ const english = {
|
|
|
126
126
|
"findApps.noneMatching": "No applications{matching}{inNamespace}.",
|
|
127
127
|
"findApps.matching": ' matching "{query}"',
|
|
128
128
|
"findApps.inNamespace": ' in namespaces ~"{namespace}"',
|
|
129
|
-
"findApps.createHint": "
|
|
129
|
+
"findApps.createHint": "link this repo as a new application.",
|
|
130
130
|
"findApps.count.one": "1 application",
|
|
131
131
|
"findApps.count.many": "{count} applications",
|
|
132
|
-
"findApps.statusHint":
|
|
132
|
+
"findApps.statusHint": "ask for one by name to see its full picture.",
|
|
133
133
|
"findApps.truncated": "Showing the first {shown} — narrow with a query or namespace to see the rest.",
|
|
134
134
|
"findApps.errorLabel": "Search failed",
|
|
135
135
|
// — application_parameter_list tool —
|
|
136
|
-
"params.unavailable": "Parameter listing isn't available here
|
|
136
|
+
"params.unavailable": "Parameter listing isn't available here, but setting parameters still works.",
|
|
137
137
|
"params.viewInDashboard": "view in dashboard",
|
|
138
138
|
"params.none": "**{app}** has no parameters.",
|
|
139
|
-
"params.noneHint": "
|
|
139
|
+
"params.noneHint": "add an env var or file parameter to get started.",
|
|
140
140
|
"params.count.one": "**{app}** · 1 parameter",
|
|
141
141
|
"params.count.many": "**{app}** · {count} parameters",
|
|
142
142
|
"params.unset": "_unset_",
|
|
143
|
-
"params.applyHint": "changed values apply on the next
|
|
143
|
+
"params.applyHint": "changed values apply on the next deploy.",
|
|
144
144
|
"params.effectiveFor": "**{app}** · effective parameters for **{scope}**",
|
|
145
145
|
"params.ctxApplication": "Application",
|
|
146
146
|
"params.ctxScope": "{scope} (scope)",
|
|
@@ -148,7 +148,7 @@ const english = {
|
|
|
148
148
|
// — application_log_list tool —
|
|
149
149
|
"logs.noun": "Logs",
|
|
150
150
|
"logs.noScopes": "**{app}** has no scopes, so there are no runtime logs yet.",
|
|
151
|
-
"logs.noScopesHint": "
|
|
151
|
+
"logs.noScopesHint": "create a scope and deploy — logs appear once something runs.",
|
|
152
152
|
"logs.empty": "No log lines returned for **{app}**{scope}.",
|
|
153
153
|
"logs.openInDashboard": "open logs in dashboard",
|
|
154
154
|
"logs.lastLines.one": "**{app}**{scope} — last line",
|
|
@@ -158,7 +158,7 @@ const english = {
|
|
|
158
158
|
// — application_metric_list tool —
|
|
159
159
|
"metrics.noun": "Metrics",
|
|
160
160
|
"metrics.noScopes": "**{app}** has no scopes, so there are no runtime metrics yet.",
|
|
161
|
-
"metrics.noScopesHint": "
|
|
161
|
+
"metrics.noScopesHint": "create a scope and deploy to start collecting metrics.",
|
|
162
162
|
"metrics.empty": "No metric datapoints for **{app}** · {scope} in the last {window} — the scope may be young or the metrics agent not wired.",
|
|
163
163
|
"metrics.openInDashboard": "performance in dashboard",
|
|
164
164
|
"metrics.title": "**{app}** · {scope} — last {window}",
|
|
@@ -171,9 +171,9 @@ const english = {
|
|
|
171
171
|
"builds.released": "Released",
|
|
172
172
|
"builds.none": "**{app}** has no builds yet.",
|
|
173
173
|
"builds.noneForCommit": "No build in **{app}** for commit `{commit}` — it may not have built yet, or the commit isn't on a built branch.",
|
|
174
|
-
"builds.noneHint": "push a commit so CI produces one, then
|
|
175
|
-
"builds.deployHint": "
|
|
176
|
-
"builds.waiting": "build #{build} is still running —
|
|
174
|
+
"builds.noneHint": "push a commit so CI produces one, then deploy.",
|
|
175
|
+
"builds.deployHint": "deploy build #{build} to ship it (the release is cut for you).",
|
|
176
|
+
"builds.waiting": "build #{build} is still running — check again in a moment.",
|
|
177
177
|
"builds.upToDate": "the latest successful build is already released.",
|
|
178
178
|
"builds.assetsTitle": "Assets of build #{build}",
|
|
179
179
|
"builds.noAssets": "Build #{build} has no assets.",
|
|
@@ -183,23 +183,23 @@ const english = {
|
|
|
183
183
|
"releaseList.title.one": "**{app}** · 1 release",
|
|
184
184
|
"releaseList.title.many": "**{app}** · {count} releases",
|
|
185
185
|
"releaseList.none": "**{app}** has no releases yet.",
|
|
186
|
-
"releaseList.noneHint": "cut one from a successful build
|
|
187
|
-
"releaseList.deployHint":
|
|
186
|
+
"releaseList.noneHint": "cut one from a successful build, or just deploy (it cuts the release for you).",
|
|
187
|
+
"releaseList.deployHint": "deploy an active release by version (e.g. x.y.z).",
|
|
188
188
|
"releaseList.errorLabel": "Couldn't list releases",
|
|
189
189
|
"deploymentList.title.one": "**{app}** · 1 deployment",
|
|
190
190
|
"deploymentList.title.many": "**{app}** · {count} deployments",
|
|
191
191
|
"deploymentList.none": "**{app}** has no deployments yet.",
|
|
192
192
|
"deploymentList.group": "{count} scopes (group)",
|
|
193
|
-
"deploymentList.hint": "
|
|
193
|
+
"deploymentList.hint": "ask for the app's status to see the live picture, or drive a rollout's traffic.",
|
|
194
194
|
"deploymentList.errorLabel": "Couldn't list deployments",
|
|
195
195
|
// — organization_get tool —
|
|
196
196
|
"overview.title.one": "Organization overview · 1 application scanned",
|
|
197
197
|
"overview.title.many": "Organization overview · {count} applications scanned",
|
|
198
|
-
"overview.truncated":
|
|
198
|
+
"overview.truncated": "_(showing the first {count} — narrow with a query to see more)_",
|
|
199
199
|
"overview.activeRollouts": "Active rollouts ({count})",
|
|
200
200
|
"overview.trouble": "Needs attention ({count})",
|
|
201
|
-
"overview.hintActive":
|
|
202
|
-
"overview.hintTrouble":
|
|
201
|
+
"overview.hintActive": "open **{app}** to watch a rollout, or drive its traffic.",
|
|
202
|
+
"overview.hintTrouble": "check the logs of **{app}** to investigate, and roll back if needed.",
|
|
203
203
|
"overview.hintCalm": "everything is steady — nothing rolling out, nothing failed.",
|
|
204
204
|
"overview.errorLabel": "Couldn't build the overview",
|
|
205
205
|
// — application_approval_list tool —
|
|
@@ -210,10 +210,10 @@ const english = {
|
|
|
210
210
|
"approvals.requestedBy": "Requested by",
|
|
211
211
|
"approvals.none": "No pending approvals for **{app}**.",
|
|
212
212
|
"approvals.needId": "Pass `approval_id` together with the action.",
|
|
213
|
-
"approvals.invalidId": "That doesn't look like a valid approval id — copy it from the
|
|
213
|
+
"approvals.invalidId": "That doesn't look like a valid approval id — copy it from the approvals list.",
|
|
214
214
|
"approvals.approved": "Approved {id} — the gated action can proceed.",
|
|
215
215
|
"approvals.cancelled": "Cancelled approval {id}.",
|
|
216
|
-
"approvals.actHint":
|
|
216
|
+
"approvals.actHint": "approve {id} to let it proceed (uses your permissions).",
|
|
217
217
|
"approvals.errorLabel": "Couldn't load approvals",
|
|
218
218
|
// — application_service_list tool —
|
|
219
219
|
"services.attached.one": "**{app}** · 1 dependency service",
|
|
@@ -230,19 +230,19 @@ const english = {
|
|
|
230
230
|
"createService.matchAmbiguous": 'Several dependencies match "{query}" — pick one:',
|
|
231
231
|
"createService.category": "Category",
|
|
232
232
|
"createService.provider": "Provider",
|
|
233
|
-
"createService.pickHint":
|
|
233
|
+
"createService.pickHint": "name a dependency type to provision one.",
|
|
234
234
|
"createService.form": "Ready to provision **{spec}** for **{app}** — submit to create it (this creates real cloud resources).",
|
|
235
235
|
"createService.formHint": "submit the panel to provision, or pass `provision:true` with the parameters.",
|
|
236
236
|
"createService.provisioning": "Provisioning **{spec}** as **{name}** — {status}. Real resources are being created.",
|
|
237
237
|
"createService.reused": "**{name}** already exists ({status}) — reusing it, not provisioning a second one.",
|
|
238
|
-
"createService.provisioningHint": "
|
|
238
|
+
"createService.provisioningHint": "link **{name}** to a scope — its connection parameters appear after the link, on the next deploy.",
|
|
239
239
|
// — application_link_create tool —
|
|
240
240
|
"createLink.errorLabel": "Couldn't create the link",
|
|
241
241
|
"createLink.noServices": "**{app}** has no provisioned services to link yet.",
|
|
242
|
-
"createLink.noServicesHint": "
|
|
242
|
+
"createLink.noServicesHint": "provision a dependency service first.",
|
|
243
243
|
"createLink.pickService": "Which service to link to **{app}**?",
|
|
244
244
|
"createLink.matchAmbiguous": "Several services match — pick one:",
|
|
245
|
-
"createLink.pickHint":
|
|
245
|
+
"createLink.pickHint": "name a service to link one.",
|
|
246
246
|
"createLink.noLinkSpec": "No link specification is available for **{service}** in this org.",
|
|
247
247
|
"createLink.form": "Ready to link **{service}** to **{app}** — submit to create the link (a credential link provisions a database user).",
|
|
248
248
|
"createLink.formHint": "submit the panel to create the link, or pass `create:true` with the parameters.",
|
|
@@ -252,15 +252,15 @@ const english = {
|
|
|
252
252
|
// — application_service_update / application_link_update (run a custom action) —
|
|
253
253
|
"runAction.errorLabel": "Couldn't run the action",
|
|
254
254
|
"runAction.noServices": "**{app}** has no provisioned services to run an action on.",
|
|
255
|
-
"runAction.noServicesHint": "
|
|
255
|
+
"runAction.noServicesHint": "provision a dependency service first.",
|
|
256
256
|
"runAction.noLinks": "**{app}** has no links to run an action on.",
|
|
257
|
-
"runAction.noLinksHint": "
|
|
257
|
+
"runAction.noLinksHint": "link a service first.",
|
|
258
258
|
"runAction.pickService": "Which service to run an action on, in **{app}**?",
|
|
259
259
|
"runAction.serviceAmbiguous": "Several services match — pick one:",
|
|
260
|
-
"runAction.pickServiceHint":
|
|
260
|
+
"runAction.pickServiceHint": "name a service to choose one.",
|
|
261
261
|
"runAction.pickLink": "Which link to run an action on, in **{app}**?",
|
|
262
262
|
"runAction.linkAmbiguous": "Several links match — pick one:",
|
|
263
|
-
"runAction.pickLinkHint":
|
|
263
|
+
"runAction.pickLinkHint": "name a link to choose one.",
|
|
264
264
|
"runAction.noActions": "**{name}** exposes no runnable actions.",
|
|
265
265
|
"runAction.pickAction": "Which action to run on **{name}**?",
|
|
266
266
|
"runAction.matchAmbiguous": "Several actions match — pick one:",
|
|
@@ -277,12 +277,12 @@ const english = {
|
|
|
277
277
|
"deleteEntity.noLinks": "**{app}** has no links to delete.",
|
|
278
278
|
"deleteEntity.pickService": "Which service to delete, in **{app}**?",
|
|
279
279
|
"deleteEntity.serviceAmbiguous": "Several services match — pick one:",
|
|
280
|
-
"deleteEntity.pickServiceHint":
|
|
280
|
+
"deleteEntity.pickServiceHint": "name a service to choose one.",
|
|
281
281
|
"deleteEntity.pickLink": "Which link to delete, in **{app}**?",
|
|
282
282
|
"deleteEntity.linkAmbiguous": "Several links match — pick one:",
|
|
283
|
-
"deleteEntity.pickLinkHint":
|
|
283
|
+
"deleteEntity.pickLinkHint": "name a link to choose one.",
|
|
284
284
|
"deleteEntity.hasLinks": "**{name}** still has {count} active link(s) — they'd be orphaned.",
|
|
285
|
-
"deleteEntity.hasLinksHint": "delete the links first
|
|
285
|
+
"deleteEntity.hasLinksHint": "delete the links first, then the service.",
|
|
286
286
|
"deleteEntity.confirm": "Ready to delete **{name}** and destroy its resources — submit to confirm.",
|
|
287
287
|
"deleteEntity.confirmHint": "submit the panel to delete, or pass `confirm:true`.",
|
|
288
288
|
"deleteEntity.removed": "**{name}** was deleted.",
|
|
@@ -292,7 +292,7 @@ const english = {
|
|
|
292
292
|
"deleteParam.errorLabel": "Couldn't delete the parameter",
|
|
293
293
|
"deleteParam.absent": "**{name}** isn't set on **{app}** — nothing to delete.",
|
|
294
294
|
"deleteParam.readOnly": "**{name}** is read-only — a service link injects it.",
|
|
295
|
-
"deleteParam.readOnlyHint": "delete the link that exports it
|
|
295
|
+
"deleteParam.readOnlyHint": "delete the link that exports it instead.",
|
|
296
296
|
"deleteParam.confirm": "Ready to delete **{name}** from **{app}** — submit to confirm.",
|
|
297
297
|
"deleteParam.confirmHint": "submit the panel to delete, or pass `confirm:true`.",
|
|
298
298
|
"deleteParam.deleted": "Deleted **{name}** from **{app}**.",
|
|
@@ -300,22 +300,22 @@ const english = {
|
|
|
300
300
|
"deleteParam.failed": "Couldn't delete **{name}**: {message}",
|
|
301
301
|
// — application_deployment_create tool —
|
|
302
302
|
"deploy.noScopeTypes": "This app has no scopes yet. Available scope types: {types}.",
|
|
303
|
-
"deploy.createScopeHint":
|
|
303
|
+
"deploy.createScopeHint": "create a scope first (e.g. a “dev” scope of type {type}).",
|
|
304
304
|
"deploy.usingRelease": "Using existing release **{semver}** (#{id}). ",
|
|
305
305
|
"deploy.createdRelease": "Created release **{semver}** from build #{build}. ",
|
|
306
306
|
"deploy.createdReleaseFrom": "Created release **{semver}** from build #{build} ({branch} @{commit}). ",
|
|
307
307
|
"deploy.noSuchVersion": "No release **{version}** exists{known} and there's no successful build to cut it from.",
|
|
308
308
|
"deploy.knownVersions": " (known: {versions})",
|
|
309
309
|
"deploy.nothing": "Nothing to deploy: no active releases and no successful builds.",
|
|
310
|
-
"deploy.nothingHint": "push a commit so CI produces a build, then
|
|
310
|
+
"deploy.nothingHint": "push a commit so CI produces a build, then deploy again.",
|
|
311
311
|
"deploy.multiAsset": "Build #{build} has several assets — which one ships to **{scope}** ({type})?",
|
|
312
|
-
"deploy.assetHint":
|
|
312
|
+
"deploy.assetHint": "deploy again, naming the asset to ship (e.g. {name}).",
|
|
313
313
|
"deploy.errorLabel": "Deploy failed",
|
|
314
314
|
"deploy.alreadyRolling": "This release is already rolling out on **{scope}** — showing that deployment.",
|
|
315
|
-
"deploy.rejected":
|
|
315
|
+
"deploy.rejected": "Deploy rejected: {message}\nThis usually means the asset choice, not the ids — the build likely has several assets. Retry naming the asset to ship (the status view lists them).",
|
|
316
316
|
// — application_deployment_update tool —
|
|
317
|
-
"traffic.sayWhat":
|
|
318
|
-
"traffic.noActive": "No active rollout on **{app}** —
|
|
317
|
+
"traffic.sayWhat": "Tell me what to do: set a traffic percentage (0–100), finalize, or roll back.",
|
|
318
|
+
"traffic.noActive": "No active rollout on **{app}** — deploy to start one.",
|
|
319
319
|
"traffic.several": "Several rollouts are active — pass deployment_id:",
|
|
320
320
|
"traffic.snapped": "({requested}% snapped to {snapped}%)",
|
|
321
321
|
"traffic.errorLabel": "Traffic action failed",
|
|
@@ -324,7 +324,7 @@ const english = {
|
|
|
324
324
|
"createRelease.done": "Release **{semver}** created{from}.",
|
|
325
325
|
"createRelease.exists": "Release **{semver}** already exists for build #{build} — reusing it.",
|
|
326
326
|
"createRelease.from": " from build #{build} ({branch} @{commit}, {when})",
|
|
327
|
-
"createRelease.deployHint": "
|
|
327
|
+
"createRelease.deployHint": "deploy release #{id} to ship it.",
|
|
328
328
|
"createRelease.errorLabel": "Couldn't create release",
|
|
329
329
|
// — application_parameter_create tool —
|
|
330
330
|
"setParams.created.one": "Set 1 new parameter on **{app}**: {names}.",
|
|
@@ -332,9 +332,9 @@ const english = {
|
|
|
332
332
|
"setParams.updated.one": "Updated 1 existing parameter on **{app}**: {names}.",
|
|
333
333
|
"setParams.updated.many": "Updated {count} existing parameters on **{app}**: {names}.",
|
|
334
334
|
"setParams.mixed": "Set {total} parameters on **{app}** (new: {created}, updated: {updated}): {names}.",
|
|
335
|
-
"setParams.applyHint": "values apply on the next
|
|
335
|
+
"setParams.applyHint": "values apply on the next deploy.",
|
|
336
336
|
"setParams.scopeDimConflict": "Can't target both a scope and dimensions for `{name}` — a scope already locates the value. Pick one.",
|
|
337
|
-
"setParams.partial": "Parameter update failed partway: {message}\nAlready-created parameters remain —
|
|
337
|
+
"setParams.partial": "Parameter update failed partway: {message}\nAlready-created parameters remain — list them to inspect.",
|
|
338
338
|
"setParams.errorLabel": "Parameter update failed",
|
|
339
339
|
// — application_create tool —
|
|
340
340
|
"createApp.form": "To create an application I need a git repository URL and a name (the form collects them).\nNamespaces: {namespaces}.",
|
|
@@ -343,24 +343,24 @@ const english = {
|
|
|
343
343
|
"createApp.noAccountMatch": 'No account matching "{account}". Accounts: {names}.',
|
|
344
344
|
"createApp.whichNamespace": "Which namespace?",
|
|
345
345
|
"createApp.whichNamespaceFor": "Which namespace should own **{name}**?",
|
|
346
|
-
"createApp.namespaceHint":
|
|
346
|
+
"createApp.namespaceHint": "name the namespace to create it in.",
|
|
347
347
|
"createApp.noNamespaces": "This organization has no namespaces yet — create one in the dashboard first.",
|
|
348
348
|
"createApp.created": "**{name}** created (#{id}) in namespace **{namespace}**, linked to {repo}.",
|
|
349
349
|
"createApp.alreadyLinked": "**{name}** (#{id}) is already linked to {repo} — nothing to create.",
|
|
350
|
-
"createApp.createdHint": "push a commit to trigger the first build, then
|
|
351
|
-
"createApp.createdHintNew": "the repo was scaffolded for you — clone {repo} into a folder, add your code there, and push so CI builds it, then
|
|
350
|
+
"createApp.createdHint": "push a commit to trigger the first build, then deploy.",
|
|
351
|
+
"createApp.createdHintNew": "the repo was scaffolded for you — clone {repo} into a folder, add your code there, and push so CI builds it, then deploy.",
|
|
352
352
|
"createApp.pending": "⏳ **{name}** created (#{id}), provisioning is still running (status: {status}).",
|
|
353
|
-
"createApp.pendingHint":
|
|
353
|
+
"createApp.pendingHint": "check on application #{id} to see its progress.",
|
|
354
354
|
"createApp.errorLabel": "Couldn't create the application",
|
|
355
355
|
// — playbook_get tool —
|
|
356
356
|
"playbook.errorLabel": "Couldn't load the playbook",
|
|
357
357
|
// — application_scope_create tool —
|
|
358
358
|
"createScope.whichType": "Which scope type for **{name}**?",
|
|
359
|
-
"createScope.typeHint":
|
|
359
|
+
"createScope.typeHint": "name a scope type for **{name}** to create it.",
|
|
360
360
|
"createScope.noTypes": 'No scope types available — pass type explicitly (e.g. type:"web_pool").',
|
|
361
361
|
"createScope.provisioning": "⏳ Scope **{name}** (#{id}, {type}{dimensions}) is provisioning — infrastructure is being created.",
|
|
362
362
|
"createScope.exists": "Scope **{name}** (#{id}) already exists ({status}) — nothing to create.",
|
|
363
|
-
"createScope.provisioningHint":
|
|
363
|
+
"createScope.provisioningHint": "its status shows it; once active, deploy to the **{name}** scope.",
|
|
364
364
|
"createScope.errorLabel": "Couldn't create scope",
|
|
365
365
|
// — auth & transport —
|
|
366
366
|
"error.credentialRejected": "nullplatform rejected the credential ({status}) — check your NP_API_KEY",
|
|
@@ -382,32 +382,32 @@ const english = {
|
|
|
382
382
|
"prompt.ship.toScope": ' to the "{scope}" scope',
|
|
383
383
|
"prompt.thisRepoApp": "the application linked to this repo",
|
|
384
384
|
"prompt.setup": `Connect this repository to nullplatform:
|
|
385
|
-
1.
|
|
386
|
-
2. If it isn't linked,
|
|
387
|
-
3. If none exists,
|
|
385
|
+
1. Check this app's status — if the repo is already linked to an application, just show me where I stand.
|
|
386
|
+
2. If it isn't linked, search for an app matching this repo's name before creating anything.
|
|
387
|
+
3. If none exists, create the application to link it, then show its status and tell me what happens next (first build via CI, then deploy).`,
|
|
388
388
|
"prompt.health": `Give me a health check of {app}:
|
|
389
389
|
1. status — what's live where, anything mid-rollout?
|
|
390
390
|
2. metrics (3h window) — call out anything unusual in throughput, response time, error rate, CPU or memory.
|
|
391
391
|
3. logs — scan the recent lines for errors or warnings.
|
|
392
392
|
Finish with a one-paragraph verdict: healthy / degraded / in trouble, and the single most useful next action.`,
|
|
393
|
-
"prompt.rollback": `Something is wrong — roll back {app} right now: find its active rollout,
|
|
393
|
+
"prompt.rollback": `Something is wrong — roll back {app} right now: find its active rollout, roll it back, then confirm from its status that the previous version is serving traffic and summarize what was rolled back.`,
|
|
394
394
|
};
|
|
395
395
|
const spanish = {
|
|
396
396
|
"resolve.ambiguous": "Varias aplicaciones coinciden — decime cuál (nombre o `#id`):",
|
|
397
397
|
"resolve.noId": "No hay ninguna aplicación con id {id}.",
|
|
398
398
|
"resolve.noMatch": 'No hay ninguna aplicación que coincida con "{ref}".',
|
|
399
|
-
"resolve.repoUnlinked": 'Este repo ({url}) no está vinculado a ninguna aplicación de nullplatform. Pasá app:"<nombre>" o
|
|
399
|
+
"resolve.repoUnlinked": 'Este repo ({url}) no está vinculado a ninguna aplicación de nullplatform. Pasá app:"<nombre>" o vinculalo como una aplicación nueva.',
|
|
400
400
|
"resolve.noInput": 'No se indicó app y no hay git remote en el workspace. Pasá app:"<nombre>" (o un id como "#123").',
|
|
401
401
|
"resolve.noNrn": "No puedo resolver el NRN de la aplicación **{app}**.",
|
|
402
402
|
"scope.which": "¿Qué scope?",
|
|
403
403
|
"scope.none": "Esta app todavía no tiene scopes.",
|
|
404
|
-
"scope.noneHint":
|
|
404
|
+
"scope.noneHint": "creá un scope (por ejemplo un scope “dev”) primero, después deployá.",
|
|
405
405
|
"scope.noMatch": 'Ningún scope coincide con "{wanted}". Scopes: {names}.',
|
|
406
406
|
"scope.noMatchDetailed": 'Ningún scope coincide con "{wanted}" (por nombre o dimensión). Scopes:',
|
|
407
|
-
"scope.createHint":
|
|
408
|
-
"scope.deployHint":
|
|
407
|
+
"scope.createHint": "creá el scope **{name}** primero.",
|
|
408
|
+
"scope.deployHint": "nombrá el scope o dimensión donde deployar (p. ej. environment=production).",
|
|
409
409
|
"scope.perScope": "{noun} son por scope — ¿cuál?",
|
|
410
|
-
"scope.readHint":
|
|
410
|
+
"scope.readHint": "leelo para el scope **{name}**.",
|
|
411
411
|
"header.app": "App",
|
|
412
412
|
"header.id": "Id",
|
|
413
413
|
"header.namespace": "Namespace",
|
|
@@ -477,50 +477,50 @@ const spanish = {
|
|
|
477
477
|
"render.started": "empezó {when}",
|
|
478
478
|
"render.now": "ahora",
|
|
479
479
|
"render.desired": "→ deseado {pct}%",
|
|
480
|
-
"hint.rolloutTraffic":
|
|
481
|
-
"hint.rolloutStatus": "el deployment #{id} en **{scope}** está {status} —
|
|
482
|
-
"hint.noScopes":
|
|
483
|
-
"hint.buildNewer": "el build #{id} ({branch} @{commit}) es más nuevo que la release {semver} —
|
|
484
|
-
"hint.buildUnreleased": "el build #{id} no tiene release —
|
|
485
|
-
"hint.releaseNotLive": "la release {semver} no está en vivo —
|
|
486
|
-
"hint.noBuilds": "sin builds todavía — pusheá un commit para que CI genere uno, después
|
|
480
|
+
"hint.rolloutTraffic": "el deployment #{id} en **{scope}** está al {traffic}% de tráfico — subí el tráfico para avanzar, finalizá cuando llegue a 100%, o volvé atrás con un rollback.",
|
|
481
|
+
"hint.rolloutStatus": "el deployment #{id} en **{scope}** está {status} — seguí el rollout para ver cómo avanza.",
|
|
482
|
+
"hint.noScopes": "sin scopes todavía — creá uno (por ejemplo un scope “dev”) para tener dónde deployar.",
|
|
483
|
+
"hint.buildNewer": "el build #{id} ({branch} @{commit}) es más nuevo que la release {semver} — deployalo para publicar el código nuevo (la release se crea sola).",
|
|
484
|
+
"hint.buildUnreleased": "el build #{id} todavía no tiene release — deployalo para publicarlo (la release se crea sola).",
|
|
485
|
+
"hint.releaseNotLive": "la release {semver} todavía no está en vivo — deployala para publicarla.",
|
|
486
|
+
"hint.noBuilds": "sin builds todavía — pusheá un commit para que CI genere uno, después deployá.",
|
|
487
487
|
"hint.upToDate": "todo está al día ✅",
|
|
488
|
-
"hint.watch": "
|
|
489
|
-
"rollout.full":
|
|
490
|
-
"rollout.moving": "el tráfico va de {from}% → {to}% —
|
|
491
|
-
"rollout.at":
|
|
492
|
-
"rollout.instances": "las instancias están levantando —
|
|
493
|
-
"rollout.switching": "el tráfico se está moviendo —
|
|
488
|
+
"hint.watch": "seguí el rollout para verlo aterrizar.",
|
|
489
|
+
"rollout.full": "todo el tráfico en la versión nueva — finalizá para retirar la vieja.",
|
|
490
|
+
"rollout.moving": "el tráfico va de {from}% → {to}% — seguí cómo aterriza.",
|
|
491
|
+
"rollout.at": "tráfico al {traffic}% — subilo para avanzar (marcas: 1, 5, 10, 25, 50, 75, 90, 95, 99, 100%), o volvé atrás con un rollback.",
|
|
492
|
+
"rollout.instances": "las instancias están levantando — seguí el rollout.",
|
|
493
|
+
"rollout.switching": "el tráfico se está moviendo — seguí el rollout.",
|
|
494
494
|
"rollout.finalizing": "finalizando — se están retirando las instancias viejas.",
|
|
495
495
|
"rollout.done": "listo — la release está completamente en vivo ✅",
|
|
496
496
|
"rollout.approval": "esperando una aprobación ✋ — alguien tiene que aprobar este deployment (dashboard → Approvals).",
|
|
497
|
-
"rollout.failed":
|
|
497
|
+
"rollout.failed": "el deployment falló — revisá los logs para ver la salida, y volvé atrás con un rollback si se movió tráfico.",
|
|
498
498
|
"rollout.rolledBack": "revertido — la versión anterior está sirviendo todo el tráfico.",
|
|
499
499
|
"status.errorLabel": "No pude cargar el estado",
|
|
500
500
|
"findApps.noneMatching": "No hay aplicaciones{matching}{inNamespace}.",
|
|
501
501
|
"findApps.matching": ' que coincidan con "{query}"',
|
|
502
502
|
"findApps.inNamespace": ' en namespaces ~"{namespace}"',
|
|
503
|
-
"findApps.createHint": "
|
|
503
|
+
"findApps.createHint": "vinculá este repo como una aplicación nueva.",
|
|
504
504
|
"findApps.count.one": "1 aplicación",
|
|
505
505
|
"findApps.count.many": "{count} aplicaciones",
|
|
506
|
-
"findApps.statusHint":
|
|
506
|
+
"findApps.statusHint": "pedí una por nombre para ver su panorama completo.",
|
|
507
507
|
"findApps.truncated": "Mostrando las primeras {shown} — afiná con una búsqueda o namespace para ver el resto.",
|
|
508
508
|
"findApps.errorLabel": "Falló la búsqueda",
|
|
509
|
-
"params.unavailable": "El listado de parámetros no está disponible ac
|
|
509
|
+
"params.unavailable": "El listado de parámetros no está disponible acá, pero setear parámetros igual funciona.",
|
|
510
510
|
"params.viewInDashboard": "ver en el dashboard",
|
|
511
511
|
"params.none": "**{app}** no tiene parámetros.",
|
|
512
|
-
"params.noneHint": "
|
|
512
|
+
"params.noneHint": "agregá una variable de entorno o un archivo para empezar.",
|
|
513
513
|
"params.count.one": "**{app}** · 1 parámetro",
|
|
514
514
|
"params.count.many": "**{app}** · {count} parámetros",
|
|
515
515
|
"params.unset": "_sin valor_",
|
|
516
|
-
"params.applyHint": "los valores cambiados aplican en el próximo
|
|
516
|
+
"params.applyHint": "los valores cambiados aplican en el próximo deploy.",
|
|
517
517
|
"params.effectiveFor": "**{app}** · parámetros efectivos para **{scope}**",
|
|
518
518
|
"params.ctxApplication": "Aplicación",
|
|
519
519
|
"params.ctxScope": "{scope} (scope)",
|
|
520
520
|
"params.errorLabel": "No pude listar los parámetros",
|
|
521
521
|
"logs.noun": "Los logs",
|
|
522
522
|
"logs.noScopes": "**{app}** no tiene scopes, así que todavía no hay logs de runtime.",
|
|
523
|
-
"logs.noScopesHint": "
|
|
523
|
+
"logs.noScopesHint": "creá un scope y deployá — los logs aparecen cuando algo corre.",
|
|
524
524
|
"logs.empty": "No hay líneas de log para **{app}**{scope}.",
|
|
525
525
|
"logs.openInDashboard": "abrir logs en el dashboard",
|
|
526
526
|
"logs.lastLines.one": "**{app}**{scope} — última línea",
|
|
@@ -529,7 +529,7 @@ const spanish = {
|
|
|
529
529
|
"logs.errorSuffix": "La vista Logs del dashboard puede tenerlos igual.",
|
|
530
530
|
"metrics.noun": "Las métricas",
|
|
531
531
|
"metrics.noScopes": "**{app}** no tiene scopes, así que todavía no hay métricas de runtime.",
|
|
532
|
-
"metrics.noScopesHint": "
|
|
532
|
+
"metrics.noScopesHint": "creá un scope y deployá para empezar a juntar métricas.",
|
|
533
533
|
"metrics.empty": "No hay datapoints de métricas para **{app}** · {scope} en las últimas {window} — el scope puede ser muy nuevo o el agente de métricas no estar conectado.",
|
|
534
534
|
"metrics.openInDashboard": "performance en el dashboard",
|
|
535
535
|
"metrics.title": "**{app}** · {scope} — últimas {window}",
|
|
@@ -542,9 +542,9 @@ const spanish = {
|
|
|
542
542
|
"builds.released": "Released",
|
|
543
543
|
"builds.none": "**{app}** todavía no tiene builds.",
|
|
544
544
|
"builds.noneForCommit": "Ningún build en **{app}** para el commit `{commit}` — puede que todavía no haya buildeado, o que el commit no esté en una branch que buildea.",
|
|
545
|
-
"builds.noneHint": "pusheá un commit para que CI genere uno, después
|
|
546
|
-
"builds.deployHint": "
|
|
547
|
-
"builds.waiting": "el build #{build} sigue corriendo —
|
|
545
|
+
"builds.noneHint": "pusheá un commit para que CI genere uno, después deployá.",
|
|
546
|
+
"builds.deployHint": "deployá el build #{build} para publicarlo (la release se crea sola).",
|
|
547
|
+
"builds.waiting": "el build #{build} sigue corriendo — chequeá de nuevo en un momento.",
|
|
548
548
|
"builds.upToDate": "el último build exitoso ya está publicado.",
|
|
549
549
|
"builds.assetsTitle": "Assets del build #{build}",
|
|
550
550
|
"builds.noAssets": "El build #{build} no tiene assets.",
|
|
@@ -554,23 +554,23 @@ const spanish = {
|
|
|
554
554
|
"releaseList.title.one": "**{app}** · 1 release",
|
|
555
555
|
"releaseList.title.many": "**{app}** · {count} releases",
|
|
556
556
|
"releaseList.none": "**{app}** todavía no tiene releases.",
|
|
557
|
-
"releaseList.noneHint": "cortá
|
|
558
|
-
"releaseList.deployHint":
|
|
557
|
+
"releaseList.noneHint": "cortá una desde un build exitoso, o directamente deployá (corta la release por vos).",
|
|
558
|
+
"releaseList.deployHint": "deployá una release activa por versión (ej. x.y.z).",
|
|
559
559
|
"releaseList.errorLabel": "No pude listar los releases",
|
|
560
560
|
"deploymentList.title.one": "**{app}** · 1 deployment",
|
|
561
561
|
"deploymentList.title.many": "**{app}** · {count} deployments",
|
|
562
562
|
"deploymentList.none": "**{app}** todavía no tiene deployments.",
|
|
563
563
|
"deploymentList.group": "{count} scopes (grupo)",
|
|
564
|
-
"deploymentList.hint": "
|
|
564
|
+
"deploymentList.hint": "pedí el estado de la app para la foto en vivo, o manejá el tráfico de un rollout.",
|
|
565
565
|
"deploymentList.errorLabel": "No pude listar los deployments",
|
|
566
566
|
// — organization_get tool —
|
|
567
567
|
"overview.title.one": "Panorama de la organización · 1 aplicación escaneada",
|
|
568
568
|
"overview.title.many": "Panorama de la organización · {count} aplicaciones escaneadas",
|
|
569
|
-
"overview.truncated":
|
|
569
|
+
"overview.truncated": "_(muestro las primeras {count} — acotá con una búsqueda para ver más)_",
|
|
570
570
|
"overview.activeRollouts": "Rollouts activos ({count})",
|
|
571
571
|
"overview.trouble": "Requiere atención ({count})",
|
|
572
|
-
"overview.hintActive":
|
|
573
|
-
"overview.hintTrouble":
|
|
572
|
+
"overview.hintActive": "abrí **{app}** para seguir un rollout, o manejá su tráfico.",
|
|
573
|
+
"overview.hintTrouble": "revisá los logs de **{app}** para investigar, y volvé atrás con un rollback si hace falta.",
|
|
574
574
|
"overview.hintCalm": "todo tranquilo — nada desplegándose, nada falló.",
|
|
575
575
|
"overview.errorLabel": "No pude armar el panorama",
|
|
576
576
|
// — application_approval_list tool —
|
|
@@ -581,10 +581,10 @@ const spanish = {
|
|
|
581
581
|
"approvals.requestedBy": "Solicitada por",
|
|
582
582
|
"approvals.none": "No hay aprobaciones pendientes para **{app}**.",
|
|
583
583
|
"approvals.needId": "Pasá `approval_id` junto con la acción.",
|
|
584
|
-
"approvals.invalidId": "Eso no parece un approval id válido — copialo de la lista de
|
|
584
|
+
"approvals.invalidId": "Eso no parece un approval id válido — copialo de la lista de aprobaciones.",
|
|
585
585
|
"approvals.approved": "Aprobé {id} — la acción bloqueada puede continuar.",
|
|
586
586
|
"approvals.cancelled": "Cancelé la aprobación {id}.",
|
|
587
|
-
"approvals.actHint":
|
|
587
|
+
"approvals.actHint": "aprobá {id} para dejarla continuar (usa tus permisos).",
|
|
588
588
|
"approvals.errorLabel": "No pude cargar las aprobaciones",
|
|
589
589
|
// — application_service_list tool —
|
|
590
590
|
"services.attached.one": "**{app}** · 1 servicio de dependencia",
|
|
@@ -601,19 +601,19 @@ const spanish = {
|
|
|
601
601
|
"createService.matchAmbiguous": 'Varias dependencias coinciden con "{query}" — elegí una:',
|
|
602
602
|
"createService.category": "Categoría",
|
|
603
603
|
"createService.provider": "Proveedor",
|
|
604
|
-
"createService.pickHint":
|
|
604
|
+
"createService.pickHint": "nombrá un tipo de dependencia para provisionar una.",
|
|
605
605
|
"createService.form": "Listo para provisionar **{spec}** en **{app}** — confirmá para crearlo (crea recursos cloud reales).",
|
|
606
606
|
"createService.formHint": "confirmá en el panel para provisionar, o pasá `provision:true` con los parámetros.",
|
|
607
607
|
"createService.provisioning": "Provisionando **{spec}** como **{name}** — {status}. Se están creando recursos reales.",
|
|
608
608
|
"createService.reused": "**{name}** ya existe ({status}) — lo reuso, no provisiono un segundo.",
|
|
609
|
-
"createService.provisioningHint": "
|
|
609
|
+
"createService.provisioningHint": "linkeá **{name}** a un scope — sus parámetros de conexión aparecen después del link, en el próximo deploy.",
|
|
610
610
|
// — application_link_create tool —
|
|
611
611
|
"createLink.errorLabel": "No pude crear el link",
|
|
612
612
|
"createLink.noServices": "**{app}** todavía no tiene servicios provisionados para linkear.",
|
|
613
|
-
"createLink.noServicesHint": "
|
|
613
|
+
"createLink.noServicesHint": "provisioná un servicio de dependencia primero.",
|
|
614
614
|
"createLink.pickService": "¿Qué servicio linkear a **{app}**?",
|
|
615
615
|
"createLink.matchAmbiguous": "Varios servicios coinciden — elegí uno:",
|
|
616
|
-
"createLink.pickHint":
|
|
616
|
+
"createLink.pickHint": "nombrá un servicio para linkear uno.",
|
|
617
617
|
"createLink.noLinkSpec": "No hay link specification disponible para **{service}** en esta org.",
|
|
618
618
|
"createLink.form": "Listo para linkear **{service}** a **{app}** — confirmá para crear el link (un link de credenciales provisiona un usuario de base de datos).",
|
|
619
619
|
"createLink.formHint": "confirmá en el panel para crear el link, o pasá `create:true` con los parámetros.",
|
|
@@ -623,15 +623,15 @@ const spanish = {
|
|
|
623
623
|
// — application_service_update / application_link_update (correr una custom action) —
|
|
624
624
|
"runAction.errorLabel": "No pude correr la acción",
|
|
625
625
|
"runAction.noServices": "**{app}** no tiene servicios provisionados para correr una acción.",
|
|
626
|
-
"runAction.noServicesHint": "
|
|
626
|
+
"runAction.noServicesHint": "provisioná un servicio de dependencia primero.",
|
|
627
627
|
"runAction.noLinks": "**{app}** no tiene links para correr una acción.",
|
|
628
|
-
"runAction.noLinksHint": "
|
|
628
|
+
"runAction.noLinksHint": "linkeá un servicio primero.",
|
|
629
629
|
"runAction.pickService": "¿En qué servicio correr una acción, en **{app}**?",
|
|
630
630
|
"runAction.serviceAmbiguous": "Varios servicios coinciden — elegí uno:",
|
|
631
|
-
"runAction.pickServiceHint":
|
|
631
|
+
"runAction.pickServiceHint": "nombrá un servicio para elegir uno.",
|
|
632
632
|
"runAction.pickLink": "¿En qué link correr una acción, en **{app}**?",
|
|
633
633
|
"runAction.linkAmbiguous": "Varios links coinciden — elegí uno:",
|
|
634
|
-
"runAction.pickLinkHint":
|
|
634
|
+
"runAction.pickLinkHint": "nombrá un link para elegir uno.",
|
|
635
635
|
"runAction.noActions": "**{name}** no expone acciones ejecutables.",
|
|
636
636
|
"runAction.pickAction": "¿Qué acción correr en **{name}**?",
|
|
637
637
|
"runAction.matchAmbiguous": "Varias acciones coinciden — elegí una:",
|
|
@@ -648,12 +648,12 @@ const spanish = {
|
|
|
648
648
|
"deleteEntity.noLinks": "**{app}** no tiene links para borrar.",
|
|
649
649
|
"deleteEntity.pickService": "¿Qué servicio borrar, en **{app}**?",
|
|
650
650
|
"deleteEntity.serviceAmbiguous": "Varios servicios coinciden — elegí uno:",
|
|
651
|
-
"deleteEntity.pickServiceHint":
|
|
651
|
+
"deleteEntity.pickServiceHint": "nombrá un servicio para elegir uno.",
|
|
652
652
|
"deleteEntity.pickLink": "¿Qué link borrar, en **{app}**?",
|
|
653
653
|
"deleteEntity.linkAmbiguous": "Varios links coinciden — elegí uno:",
|
|
654
|
-
"deleteEntity.pickLinkHint":
|
|
654
|
+
"deleteEntity.pickLinkHint": "nombrá un link para elegir uno.",
|
|
655
655
|
"deleteEntity.hasLinks": "**{name}** todavía tiene {count} link(s) activo(s) — quedarían huérfanos.",
|
|
656
|
-
"deleteEntity.hasLinksHint": "borrá los links primero
|
|
656
|
+
"deleteEntity.hasLinksHint": "borrá los links primero, después el servicio.",
|
|
657
657
|
"deleteEntity.confirm": "Listo para borrar **{name}** y destruir sus recursos — confirmá para borrar.",
|
|
658
658
|
"deleteEntity.confirmHint": "confirmá en el panel para borrar, o pasá `confirm:true`.",
|
|
659
659
|
"deleteEntity.removed": "**{name}** fue borrado.",
|
|
@@ -663,28 +663,28 @@ const spanish = {
|
|
|
663
663
|
"deleteParam.errorLabel": "No pude borrar el parámetro",
|
|
664
664
|
"deleteParam.absent": "**{name}** no está seteado en **{app}** — nada que borrar.",
|
|
665
665
|
"deleteParam.readOnly": "**{name}** es de solo lectura — lo inyecta un link de servicio.",
|
|
666
|
-
"deleteParam.readOnlyHint": "borrá el link que lo exporta
|
|
666
|
+
"deleteParam.readOnlyHint": "borrá el link que lo exporta.",
|
|
667
667
|
"deleteParam.confirm": "Listo para borrar **{name}** de **{app}** — confirmá para borrar.",
|
|
668
668
|
"deleteParam.confirmHint": "confirmá en el panel para borrar, o pasá `confirm:true`.",
|
|
669
669
|
"deleteParam.deleted": "Borré **{name}** de **{app}**.",
|
|
670
670
|
"deleteParam.deletedHint": "el cambio aplica en el próximo deploy.",
|
|
671
671
|
"deleteParam.failed": "No pude borrar **{name}**: {message}",
|
|
672
672
|
"deploy.noScopeTypes": "Esta app no tiene scopes todavía. Tipos de scope disponibles: {types}.",
|
|
673
|
-
"deploy.createScopeHint":
|
|
673
|
+
"deploy.createScopeHint": "creá un scope primero (por ejemplo un scope “dev” de tipo {type}).",
|
|
674
674
|
"deploy.usingRelease": "Usando la release existente **{semver}** (#{id}). ",
|
|
675
675
|
"deploy.createdRelease": "Creé la release **{semver}** desde el build #{build}. ",
|
|
676
676
|
"deploy.createdReleaseFrom": "Creé la release **{semver}** desde el build #{build} ({branch} @{commit}). ",
|
|
677
677
|
"deploy.noSuchVersion": "No existe la release **{version}**{known} y no hay un build exitoso del cual cortarla.",
|
|
678
678
|
"deploy.knownVersions": " (conocidas: {versions})",
|
|
679
679
|
"deploy.nothing": "Nada para deployar: no hay releases activas ni builds exitosos.",
|
|
680
|
-
"deploy.nothingHint": "pusheá un commit para que CI genere un build y después
|
|
680
|
+
"deploy.nothingHint": "pusheá un commit para que CI genere un build y después deployá de nuevo.",
|
|
681
681
|
"deploy.multiAsset": "El build #{build} tiene varios assets — ¿cuál va a **{scope}** ({type})?",
|
|
682
|
-
"deploy.assetHint":
|
|
682
|
+
"deploy.assetHint": "deployá de nuevo, nombrando el asset a publicar (ej. {name}).",
|
|
683
683
|
"deploy.errorLabel": "Falló el deploy",
|
|
684
684
|
"deploy.alreadyRolling": "Esta release ya se está desplegando en **{scope}** — muestro ese deployment.",
|
|
685
|
-
"deploy.rejected":
|
|
686
|
-
"traffic.sayWhat":
|
|
687
|
-
"traffic.noActive": "No hay rollout activo en **{app}** —
|
|
685
|
+
"deploy.rejected": "Deploy rechazado: {message}\nEsto suele ser la elección de asset, no los ids — el build probablemente tiene varios assets. Reintentá nombrando el asset a publicar (los ves en el estado de la app).",
|
|
686
|
+
"traffic.sayWhat": "Decime qué hacer: poné un porcentaje de tráfico (0–100), finalizá, o volvé atrás con un rollback.",
|
|
687
|
+
"traffic.noActive": "No hay rollout activo en **{app}** — deployá para arrancar uno.",
|
|
688
688
|
"traffic.several": "Hay varios rollouts activos — pasá deployment_id:",
|
|
689
689
|
"traffic.snapped": "({requested}% ajustado a {snapped}%)",
|
|
690
690
|
"traffic.errorLabel": "Falló la acción de tráfico",
|
|
@@ -692,16 +692,16 @@ const spanish = {
|
|
|
692
692
|
"createRelease.done": "Release **{semver}** creada{from}.",
|
|
693
693
|
"createRelease.exists": "La release **{semver}** ya existe para el build #{build} — la reuso.",
|
|
694
694
|
"createRelease.from": " desde el build #{build} ({branch} @{commit}, {when})",
|
|
695
|
-
"createRelease.deployHint": "
|
|
695
|
+
"createRelease.deployHint": "deployá la release #{id} para publicarla.",
|
|
696
696
|
"createRelease.errorLabel": "No pude crear la release",
|
|
697
697
|
"setParams.created.one": "Configuré 1 parámetro nuevo en **{app}**: {names}.",
|
|
698
698
|
"setParams.created.many": "Configuré {count} parámetros nuevos en **{app}**: {names}.",
|
|
699
699
|
"setParams.updated.one": "Actualicé 1 parámetro existente en **{app}**: {names}.",
|
|
700
700
|
"setParams.updated.many": "Actualicé {count} parámetros existentes en **{app}**: {names}.",
|
|
701
701
|
"setParams.mixed": "Configuré {total} parámetros en **{app}** (nuevos: {created}, actualizados: {updated}): {names}.",
|
|
702
|
-
"setParams.applyHint": "los valores aplican en el próximo
|
|
702
|
+
"setParams.applyHint": "los valores aplican en el próximo deploy.",
|
|
703
703
|
"setParams.scopeDimConflict": "No se puede apuntar a un scope y dimensiones a la vez para `{name}` — el scope ya ubica el valor. Elegí uno.",
|
|
704
|
-
"setParams.partial": "La actualización de parámetros falló a mitad de camino: {message}\nLos parámetros ya creados quedan —
|
|
704
|
+
"setParams.partial": "La actualización de parámetros falló a mitad de camino: {message}\nLos parámetros ya creados quedan — listalos para inspeccionar.",
|
|
705
705
|
"setParams.errorLabel": "Falló la actualización de parámetros",
|
|
706
706
|
"createApp.form": "Para crear una aplicación necesito la URL de un repo git y un nombre (el formulario los pide).\nNamespaces: {namespaces}.",
|
|
707
707
|
"createApp.noName": "No pude derivar un nombre desde {url} — pasá name.",
|
|
@@ -709,23 +709,23 @@ const spanish = {
|
|
|
709
709
|
"createApp.noAccountMatch": 'Ninguna cuenta coincide con "{account}". Cuentas: {names}.',
|
|
710
710
|
"createApp.whichNamespace": "¿Qué namespace?",
|
|
711
711
|
"createApp.whichNamespaceFor": "¿Qué namespace debería ser dueño de **{name}**?",
|
|
712
|
-
"createApp.namespaceHint":
|
|
712
|
+
"createApp.namespaceHint": "nombrá el namespace donde crearla.",
|
|
713
713
|
"createApp.noNamespaces": "Esta organización no tiene namespaces — creá uno en el dashboard primero.",
|
|
714
714
|
"createApp.created": "**{name}** creada (#{id}) en el namespace **{namespace}**, vinculada a {repo}.",
|
|
715
715
|
"createApp.alreadyLinked": "**{name}** (#{id}) ya está vinculada a {repo} — no hay nada que crear.",
|
|
716
|
-
"createApp.createdHint": "pusheá un commit para disparar el primer build y después
|
|
717
|
-
"createApp.createdHintNew": "el repo fue scaffoldeado — cloná {repo} en una carpeta, agregá tu código ahí y pusheá para que CI buildee, después
|
|
716
|
+
"createApp.createdHint": "pusheá un commit para disparar el primer build y después deployá.",
|
|
717
|
+
"createApp.createdHintNew": "el repo fue scaffoldeado — cloná {repo} en una carpeta, agregá tu código ahí y pusheá para que CI buildee, después deployá.",
|
|
718
718
|
"createApp.pending": "⏳ **{name}** creada (#{id}), el aprovisionamiento sigue corriendo (estado: {status}).",
|
|
719
|
-
"createApp.pendingHint":
|
|
719
|
+
"createApp.pendingHint": "revisá la aplicación #{id} para ver cómo va.",
|
|
720
720
|
"createApp.errorLabel": "No pude crear la aplicación",
|
|
721
721
|
// — playbook_get tool —
|
|
722
722
|
"playbook.errorLabel": "No pude cargar el playbook",
|
|
723
723
|
"createScope.whichType": "¿Qué tipo de scope para **{name}**?",
|
|
724
|
-
"createScope.typeHint":
|
|
724
|
+
"createScope.typeHint": "nombrá un tipo de scope para **{name}** para crearlo.",
|
|
725
725
|
"createScope.noTypes": 'No hay tipos de scope disponibles — pasá type explícito (p. ej. type:"web_pool").',
|
|
726
726
|
"createScope.provisioning": "⏳ El scope **{name}** (#{id}, {type}{dimensions}) se está aprovisionando — se está creando infraestructura.",
|
|
727
727
|
"createScope.exists": "El scope **{name}** (#{id}) ya existe ({status}) — no hay nada que crear.",
|
|
728
|
-
"createScope.provisioningHint":
|
|
728
|
+
"createScope.provisioningHint": "el estado de la app lo muestra; cuando esté activo, deployá al scope **{name}**.",
|
|
729
729
|
"createScope.errorLabel": "No pude crear el scope",
|
|
730
730
|
"error.credentialRejected": "nullplatform rechazó la credencial ({status}) — revisá tu NP_API_KEY",
|
|
731
731
|
"error.permission": "tu usuario de nullplatform no tiene permisos para esta acción (403)",
|
|
@@ -745,34 +745,34 @@ const spanish = {
|
|
|
745
745
|
"prompt.ship.toScope": ' al scope "{scope}"',
|
|
746
746
|
"prompt.thisRepoApp": "la aplicación vinculada a este repo",
|
|
747
747
|
"prompt.setup": `Conectá este repositorio a nullplatform:
|
|
748
|
-
1.
|
|
749
|
-
2. Si no está vinculado, buscá
|
|
750
|
-
3. Si no existe ninguna,
|
|
748
|
+
1. Mostrame el estado de esta app — si el repo ya está vinculado a una aplicación, mostrame dónde estoy parado.
|
|
749
|
+
2. Si no está vinculado, buscá una app que coincida con el nombre del repo antes de crear nada.
|
|
750
|
+
3. Si no existe ninguna, creá la aplicación para vincularlo; después mostrá su estado y decime qué sigue (primer build vía CI, después deploy).`,
|
|
751
751
|
"prompt.health": `Dame un chequeo de salud de {app}:
|
|
752
752
|
1. status — ¿qué está en vivo y dónde? ¿algo a mitad de rollout?
|
|
753
753
|
2. metrics (ventana de 3h) — marcá cualquier cosa rara en throughput, tiempo de respuesta, tasa de errores, CPU o memoria.
|
|
754
754
|
3. logs — escaneá las líneas recientes buscando errores o warnings.
|
|
755
755
|
Cerrá con un veredicto de un párrafo: sano / degradado / en problemas, y la próxima acción más útil.`,
|
|
756
|
-
"prompt.rollback": `Algo está mal — revertí {app} ya mismo: encontrá su rollout activo,
|
|
756
|
+
"prompt.rollback": `Algo está mal — revertí {app} ya mismo: encontrá su rollout activo, revertilo y confirmá desde su estado que la versión anterior está sirviendo tráfico; resumí qué se revirtió.`,
|
|
757
757
|
};
|
|
758
758
|
const portuguese = {
|
|
759
759
|
// — resolution (which app?) —
|
|
760
760
|
"resolve.ambiguous": "Várias aplicações coincidem — diga qual (nome ou `#id`):",
|
|
761
761
|
"resolve.noId": "Nenhuma aplicação com id {id}.",
|
|
762
762
|
"resolve.noMatch": 'Nenhuma aplicação correspondente a "{ref}".',
|
|
763
|
-
"resolve.repoUnlinked": 'Este repositório ({url}) não está vinculado a nenhuma aplicação nullplatform. Passe app:"<nome>" ou
|
|
763
|
+
"resolve.repoUnlinked": 'Este repositório ({url}) não está vinculado a nenhuma aplicação nullplatform. Passe app:"<nome>" ou vincule-o como uma nova aplicação.',
|
|
764
764
|
"resolve.noInput": 'Nenhuma app informada e nenhum remote git encontrado no workspace. Passe app:"<nome>" (ou um id como "#123").',
|
|
765
765
|
"resolve.noNrn": "Não consigo resolver o NRN da aplicação para **{app}**.",
|
|
766
766
|
// — scope selection —
|
|
767
767
|
"scope.which": "Qual scope?",
|
|
768
768
|
"scope.none": "Esta app ainda não tem scopes.",
|
|
769
|
-
"scope.noneHint":
|
|
769
|
+
"scope.noneHint": "crie um scope (por exemplo um scope “dev”) primeiro, depois faça o deploy.",
|
|
770
770
|
"scope.noMatch": 'Nenhum scope correspondente a "{wanted}". Scopes: {names}.',
|
|
771
771
|
"scope.noMatchDetailed": 'Nenhum scope correspondente a "{wanted}" (por nome ou dimensão). Scopes:',
|
|
772
|
-
"scope.createHint":
|
|
773
|
-
"scope.deployHint":
|
|
772
|
+
"scope.createHint": "crie o scope **{name}** primeiro.",
|
|
773
|
+
"scope.deployHint": "informe o scope ou a dimensão onde fazer o deploy (ex. environment=production).",
|
|
774
774
|
"scope.perScope": "{noun} são por scope — qual?",
|
|
775
|
-
"scope.readHint":
|
|
775
|
+
"scope.readHint": "leia para o scope **{name}**.",
|
|
776
776
|
// — table headers —
|
|
777
777
|
"header.app": "App",
|
|
778
778
|
"header.id": "Id",
|
|
@@ -847,25 +847,25 @@ const portuguese = {
|
|
|
847
847
|
"render.now": "agora",
|
|
848
848
|
"render.desired": "→ desejado {pct}%",
|
|
849
849
|
// — next-step hints (status) —
|
|
850
|
-
"hint.rolloutTraffic":
|
|
851
|
-
"hint.rolloutStatus": "deployment #{id} em **{scope}** está {status} —
|
|
852
|
-
"hint.noScopes":
|
|
853
|
-
"hint.buildNewer": "build #{id} ({branch} @{commit}) é mais novo que a release {semver} —
|
|
854
|
-
"hint.buildUnreleased": "build #{id} ainda não tem release —
|
|
855
|
-
"hint.releaseNotLive": "a release {semver} ainda não está no ar —
|
|
856
|
-
"hint.noBuilds": "ainda sem builds — faça push de um commit para o CI gerar um, depois
|
|
850
|
+
"hint.rolloutTraffic": "deployment #{id} em **{scope}** está com {traffic}% de tráfego — aumente o tráfego para avançar, finalize quando chegar a 100%, ou reverta para voltar atrás.",
|
|
851
|
+
"hint.rolloutStatus": "deployment #{id} em **{scope}** está {status} — acompanhe o rollout para ver como avança.",
|
|
852
|
+
"hint.noScopes": "ainda sem scopes — crie um (por exemplo um scope “dev”) para ter onde fazer deploy.",
|
|
853
|
+
"hint.buildNewer": "build #{id} ({branch} @{commit}) é mais novo que a release {semver} — faça o deploy para publicar o código novo (a release é criada para você).",
|
|
854
|
+
"hint.buildUnreleased": "build #{id} ainda não tem release — faça o deploy para publicá-lo (a release é criada para você).",
|
|
855
|
+
"hint.releaseNotLive": "a release {semver} ainda não está no ar — faça o deploy para publicá-la.",
|
|
856
|
+
"hint.noBuilds": "ainda sem builds — faça push de um commit para o CI gerar um, depois faça o deploy.",
|
|
857
857
|
"hint.upToDate": "está tudo atualizado ✅",
|
|
858
|
-
"hint.watch": "
|
|
858
|
+
"hint.watch": "acompanhe o rollout para vê-lo concluir.",
|
|
859
859
|
// — next-step hints (rollout) —
|
|
860
|
-
"rollout.full":
|
|
861
|
-
"rollout.moving": "tráfego indo de {from}% → {to}% —
|
|
862
|
-
"rollout.at":
|
|
863
|
-
"rollout.instances": "as instâncias estão subindo —
|
|
864
|
-
"rollout.switching": "o tráfego está sendo trocado —
|
|
860
|
+
"rollout.full": "todo o tráfego na nova versão — finalize para aposentar a antiga.",
|
|
861
|
+
"rollout.moving": "tráfego indo de {from}% → {to}% — acompanhe a conclusão.",
|
|
862
|
+
"rollout.at": "tráfego em {traffic}% — aumente para avançar (marcas: 1, 5, 10, 25, 50, 75, 90, 95, 99, 100%), ou reverta para voltar atrás.",
|
|
863
|
+
"rollout.instances": "as instâncias estão subindo — acompanhe o rollout.",
|
|
864
|
+
"rollout.switching": "o tráfego está sendo trocado — acompanhe o rollout.",
|
|
865
865
|
"rollout.finalizing": "finalizando — as instâncias antigas estão sendo aposentadas.",
|
|
866
866
|
"rollout.done": "pronto — a release está totalmente no ar ✅",
|
|
867
867
|
"rollout.approval": "aguardando uma aprovação ✋ — um aprovador precisa liberar este deployment (dashboard → Aprovações).",
|
|
868
|
-
"rollout.failed":
|
|
868
|
+
"rollout.failed": "o deployment falhou — verifique os logs para ver a saída, e reverta se o tráfego se moveu.",
|
|
869
869
|
"rollout.rolledBack": "revertido — a versão anterior está atendendo todo o tráfego.",
|
|
870
870
|
// — application_get tool —
|
|
871
871
|
"status.errorLabel": "Não foi possível carregar o status",
|
|
@@ -873,21 +873,21 @@ const portuguese = {
|
|
|
873
873
|
"findApps.noneMatching": "Nenhuma aplicação{matching}{inNamespace}.",
|
|
874
874
|
"findApps.matching": ' correspondente a "{query}"',
|
|
875
875
|
"findApps.inNamespace": ' nos namespaces ~"{namespace}"',
|
|
876
|
-
"findApps.createHint": "
|
|
876
|
+
"findApps.createHint": "vincule este repositório como uma nova aplicação.",
|
|
877
877
|
"findApps.count.one": "1 aplicação",
|
|
878
878
|
"findApps.count.many": "{count} aplicações",
|
|
879
|
-
"findApps.statusHint":
|
|
879
|
+
"findApps.statusHint": "peça uma pelo nome para ver o panorama completo.",
|
|
880
880
|
"findApps.truncated": "Mostrando as primeiras {shown} — refine com uma query ou namespace para ver o resto.",
|
|
881
881
|
"findApps.errorLabel": "Busca falhou",
|
|
882
882
|
// — application_parameter_list tool —
|
|
883
|
-
"params.unavailable": "A listagem de parâmetros não está disponível aqui
|
|
883
|
+
"params.unavailable": "A listagem de parâmetros não está disponível aqui, mas definir parâmetros ainda funciona.",
|
|
884
884
|
"params.viewInDashboard": "ver no dashboard",
|
|
885
885
|
"params.none": "**{app}** não tem parâmetros.",
|
|
886
|
-
"params.noneHint": "
|
|
886
|
+
"params.noneHint": "adicione uma variável de ambiente ou arquivo para começar.",
|
|
887
887
|
"params.count.one": "**{app}** · 1 parâmetro",
|
|
888
888
|
"params.count.many": "**{app}** · {count} parâmetros",
|
|
889
889
|
"params.unset": "_não definido_",
|
|
890
|
-
"params.applyHint": "valores alterados aplicam no próximo
|
|
890
|
+
"params.applyHint": "valores alterados aplicam no próximo deploy.",
|
|
891
891
|
"params.effectiveFor": "**{app}** · parâmetros efetivos para **{scope}**",
|
|
892
892
|
"params.ctxApplication": "Aplicação",
|
|
893
893
|
"params.ctxScope": "{scope} (scope)",
|
|
@@ -895,7 +895,7 @@ const portuguese = {
|
|
|
895
895
|
// — application_log_list tool —
|
|
896
896
|
"logs.noun": "Logs",
|
|
897
897
|
"logs.noScopes": "**{app}** não tem scopes, então ainda não há logs de runtime.",
|
|
898
|
-
"logs.noScopesHint": "
|
|
898
|
+
"logs.noScopesHint": "crie um scope e faça o deploy — os logs aparecem quando algo roda.",
|
|
899
899
|
"logs.empty": "Nenhuma linha de log retornada para **{app}**{scope}.",
|
|
900
900
|
"logs.openInDashboard": "abrir logs no dashboard",
|
|
901
901
|
"logs.lastLines.one": "**{app}**{scope} — última linha",
|
|
@@ -905,7 +905,7 @@ const portuguese = {
|
|
|
905
905
|
// — application_metric_list tool —
|
|
906
906
|
"metrics.noun": "Métricas",
|
|
907
907
|
"metrics.noScopes": "**{app}** não tem scopes, então ainda não há métricas de runtime.",
|
|
908
|
-
"metrics.noScopesHint": "
|
|
908
|
+
"metrics.noScopesHint": "crie um scope e faça o deploy para começar a coletar métricas.",
|
|
909
909
|
"metrics.empty": "Nenhum datapoint de métrica para **{app}** · {scope} nos últimos {window} — o scope pode ser recente ou o agente de métricas não está configurado.",
|
|
910
910
|
"metrics.openInDashboard": "performance no dashboard",
|
|
911
911
|
"metrics.title": "**{app}** · {scope} — últimos {window}",
|
|
@@ -918,9 +918,9 @@ const portuguese = {
|
|
|
918
918
|
"builds.released": "Com release",
|
|
919
919
|
"builds.none": "**{app}** ainda não tem builds.",
|
|
920
920
|
"builds.noneForCommit": "Nenhum build em **{app}** para o commit `{commit}` — pode não ter buildado ainda, ou o commit não está em uma branch buildada.",
|
|
921
|
-
"builds.noneHint": "faça push de um commit para o CI gerar um, depois
|
|
922
|
-
"builds.deployHint": "
|
|
923
|
-
"builds.waiting": "o build #{build} ainda está rodando —
|
|
921
|
+
"builds.noneHint": "faça push de um commit para o CI gerar um, depois faça o deploy.",
|
|
922
|
+
"builds.deployHint": "faça o deploy do build #{build} para publicá-lo (a release é criada para você).",
|
|
923
|
+
"builds.waiting": "o build #{build} ainda está rodando — verifique de novo em instantes.",
|
|
924
924
|
"builds.upToDate": "o último build bem-sucedido já tem release.",
|
|
925
925
|
"builds.assetsTitle": "Assets do build #{build}",
|
|
926
926
|
"builds.noAssets": "O build #{build} não tem assets.",
|
|
@@ -930,23 +930,23 @@ const portuguese = {
|
|
|
930
930
|
"releaseList.title.one": "**{app}** · 1 release",
|
|
931
931
|
"releaseList.title.many": "**{app}** · {count} releases",
|
|
932
932
|
"releaseList.none": "**{app}** ainda não tem releases.",
|
|
933
|
-
"releaseList.noneHint": "corte uma a partir de um build bem-sucedido
|
|
934
|
-
"releaseList.deployHint":
|
|
933
|
+
"releaseList.noneHint": "corte uma a partir de um build bem-sucedido, ou simplesmente faça o deploy (ele corta a release para você).",
|
|
934
|
+
"releaseList.deployHint": "faça o deploy de uma release ativa por versão (ex. x.y.z).",
|
|
935
935
|
"releaseList.errorLabel": "Não foi possível listar as releases",
|
|
936
936
|
"deploymentList.title.one": "**{app}** · 1 deployment",
|
|
937
937
|
"deploymentList.title.many": "**{app}** · {count} deployments",
|
|
938
938
|
"deploymentList.none": "**{app}** ainda não tem deployments.",
|
|
939
939
|
"deploymentList.group": "{count} scopes (grupo)",
|
|
940
|
-
"deploymentList.hint": "
|
|
940
|
+
"deploymentList.hint": "peça o status da app para o panorama ao vivo, ou conduza o tráfego de um rollout.",
|
|
941
941
|
"deploymentList.errorLabel": "Não foi possível listar os deployments",
|
|
942
942
|
// — organization_get tool —
|
|
943
943
|
"overview.title.one": "Visão geral da organização · 1 aplicação escaneada",
|
|
944
944
|
"overview.title.many": "Visão geral da organização · {count} aplicações escaneadas",
|
|
945
|
-
"overview.truncated":
|
|
945
|
+
"overview.truncated": "_(mostrando as primeiras {count} — refine com uma query para ver mais)_",
|
|
946
946
|
"overview.activeRollouts": "Rollouts ativos ({count})",
|
|
947
947
|
"overview.trouble": "Precisa de atenção ({count})",
|
|
948
|
-
"overview.hintActive":
|
|
949
|
-
"overview.hintTrouble":
|
|
948
|
+
"overview.hintActive": "abra **{app}** para acompanhar um rollout, ou conduza o tráfego dele.",
|
|
949
|
+
"overview.hintTrouble": "verifique os logs de **{app}** para investigar, e reverta se necessário.",
|
|
950
950
|
"overview.hintCalm": "está tudo estável — nada em rollout, nada falhou.",
|
|
951
951
|
"overview.errorLabel": "Não foi possível montar a visão geral",
|
|
952
952
|
// — application_approval_list tool —
|
|
@@ -957,10 +957,10 @@ const portuguese = {
|
|
|
957
957
|
"approvals.requestedBy": "Solicitado por",
|
|
958
958
|
"approvals.none": "Nenhuma aprovação pendente para **{app}**.",
|
|
959
959
|
"approvals.needId": "Passe `approval_id` junto com a ação.",
|
|
960
|
-
"approvals.invalidId": "Isso não parece um approval id válido — copie-o da lista
|
|
960
|
+
"approvals.invalidId": "Isso não parece um approval id válido — copie-o da lista de aprovações.",
|
|
961
961
|
"approvals.approved": "Aprovado {id} — a ação bloqueada pode prosseguir.",
|
|
962
962
|
"approvals.cancelled": "Aprovação {id} cancelada.",
|
|
963
|
-
"approvals.actHint":
|
|
963
|
+
"approvals.actHint": "aprove {id} para liberá-la (usa suas permissões).",
|
|
964
964
|
"approvals.errorLabel": "Não foi possível carregar as aprovações",
|
|
965
965
|
// — application_service_list tool —
|
|
966
966
|
"services.attached.one": "**{app}** · 1 serviço de dependência",
|
|
@@ -977,19 +977,19 @@ const portuguese = {
|
|
|
977
977
|
"createService.matchAmbiguous": 'Várias dependências coincidem com "{query}" — escolha uma:',
|
|
978
978
|
"createService.category": "Categoria",
|
|
979
979
|
"createService.provider": "Provider",
|
|
980
|
-
"createService.pickHint":
|
|
980
|
+
"createService.pickHint": "informe um tipo de dependência para provisionar uma.",
|
|
981
981
|
"createService.form": "Pronto para provisionar **{spec}** para **{app}** — confirme para criar (isso cria recursos cloud reais).",
|
|
982
982
|
"createService.formHint": "confirme no painel para provisionar, ou passe `provision:true` com os parâmetros.",
|
|
983
983
|
"createService.provisioning": "Provisionando **{spec}** como **{name}** — {status}. Recursos reais estão sendo criados.",
|
|
984
984
|
"createService.reused": "**{name}** já existe ({status}) — reusando, não provisionando um segundo.",
|
|
985
|
-
"createService.provisioningHint": "
|
|
985
|
+
"createService.provisioningHint": "linke **{name}** a um scope — seus parâmetros de conexão aparecem após o link, no próximo deploy.",
|
|
986
986
|
// — application_link_create tool —
|
|
987
987
|
"createLink.errorLabel": "Não foi possível criar o link",
|
|
988
988
|
"createLink.noServices": "**{app}** ainda não tem serviços provisionados para linkar.",
|
|
989
|
-
"createLink.noServicesHint": "
|
|
989
|
+
"createLink.noServicesHint": "provisione um serviço de dependência primeiro.",
|
|
990
990
|
"createLink.pickService": "Qual serviço linkar a **{app}**?",
|
|
991
991
|
"createLink.matchAmbiguous": "Vários serviços coincidem — escolha um:",
|
|
992
|
-
"createLink.pickHint":
|
|
992
|
+
"createLink.pickHint": "informe um serviço para linkar um.",
|
|
993
993
|
"createLink.noLinkSpec": "Nenhuma link specification disponível para **{service}** nesta org.",
|
|
994
994
|
"createLink.form": "Pronto para linkar **{service}** a **{app}** — confirme para criar o link (um link de credenciais provisiona um usuário de banco de dados).",
|
|
995
995
|
"createLink.formHint": "confirme no painel para criar o link, ou passe `create:true` com os parâmetros.",
|
|
@@ -999,15 +999,15 @@ const portuguese = {
|
|
|
999
999
|
// — application_service_update / application_link_update (run a custom action) —
|
|
1000
1000
|
"runAction.errorLabel": "Não foi possível rodar a ação",
|
|
1001
1001
|
"runAction.noServices": "**{app}** não tem serviços provisionados para rodar uma ação.",
|
|
1002
|
-
"runAction.noServicesHint": "
|
|
1002
|
+
"runAction.noServicesHint": "provisione um serviço de dependência primeiro.",
|
|
1003
1003
|
"runAction.noLinks": "**{app}** não tem links para rodar uma ação.",
|
|
1004
|
-
"runAction.noLinksHint": "
|
|
1004
|
+
"runAction.noLinksHint": "linke um serviço primeiro.",
|
|
1005
1005
|
"runAction.pickService": "Em qual serviço rodar uma ação, em **{app}**?",
|
|
1006
1006
|
"runAction.serviceAmbiguous": "Vários serviços coincidem — escolha um:",
|
|
1007
|
-
"runAction.pickServiceHint":
|
|
1007
|
+
"runAction.pickServiceHint": "informe um serviço para escolher um.",
|
|
1008
1008
|
"runAction.pickLink": "Em qual link rodar uma ação, em **{app}**?",
|
|
1009
1009
|
"runAction.linkAmbiguous": "Vários links coincidem — escolha um:",
|
|
1010
|
-
"runAction.pickLinkHint":
|
|
1010
|
+
"runAction.pickLinkHint": "informe um link para escolher um.",
|
|
1011
1011
|
"runAction.noActions": "**{name}** não expõe ações executáveis.",
|
|
1012
1012
|
"runAction.pickAction": "Qual ação rodar em **{name}**?",
|
|
1013
1013
|
"runAction.matchAmbiguous": "Várias ações coincidem — escolha uma:",
|
|
@@ -1024,12 +1024,12 @@ const portuguese = {
|
|
|
1024
1024
|
"deleteEntity.noLinks": "**{app}** não tem links para deletar.",
|
|
1025
1025
|
"deleteEntity.pickService": "Qual serviço deletar, em **{app}**?",
|
|
1026
1026
|
"deleteEntity.serviceAmbiguous": "Vários serviços coincidem — escolha um:",
|
|
1027
|
-
"deleteEntity.pickServiceHint":
|
|
1027
|
+
"deleteEntity.pickServiceHint": "informe um serviço para escolher um.",
|
|
1028
1028
|
"deleteEntity.pickLink": "Qual link deletar, em **{app}**?",
|
|
1029
1029
|
"deleteEntity.linkAmbiguous": "Vários links coincidem — escolha um:",
|
|
1030
|
-
"deleteEntity.pickLinkHint":
|
|
1030
|
+
"deleteEntity.pickLinkHint": "informe um link para escolher um.",
|
|
1031
1031
|
"deleteEntity.hasLinks": "**{name}** ainda tem {count} link(s) ativo(s) — ficariam órfãos.",
|
|
1032
|
-
"deleteEntity.hasLinksHint": "delete os links primeiro
|
|
1032
|
+
"deleteEntity.hasLinksHint": "delete os links primeiro, depois o serviço.",
|
|
1033
1033
|
"deleteEntity.confirm": "Pronto para deletar **{name}** e destruir seus recursos — confirme para prosseguir.",
|
|
1034
1034
|
"deleteEntity.confirmHint": "confirme no painel para deletar, ou passe `confirm:true`.",
|
|
1035
1035
|
"deleteEntity.removed": "**{name}** foi deletado.",
|
|
@@ -1039,7 +1039,7 @@ const portuguese = {
|
|
|
1039
1039
|
"deleteParam.errorLabel": "Não foi possível deletar o parâmetro",
|
|
1040
1040
|
"deleteParam.absent": "**{name}** não está definido em **{app}** — nada para deletar.",
|
|
1041
1041
|
"deleteParam.readOnly": "**{name}** é somente leitura — um link de serviço o injeta.",
|
|
1042
|
-
"deleteParam.readOnlyHint": "delete o link que o exporta
|
|
1042
|
+
"deleteParam.readOnlyHint": "delete o link que o exporta.",
|
|
1043
1043
|
"deleteParam.confirm": "Pronto para deletar **{name}** de **{app}** — confirme para prosseguir.",
|
|
1044
1044
|
"deleteParam.confirmHint": "confirme no painel para deletar, ou passe `confirm:true`.",
|
|
1045
1045
|
"deleteParam.deleted": "Deletei **{name}** de **{app}**.",
|
|
@@ -1047,22 +1047,22 @@ const portuguese = {
|
|
|
1047
1047
|
"deleteParam.failed": "Não foi possível deletar **{name}**: {message}",
|
|
1048
1048
|
// — application_deployment_create tool —
|
|
1049
1049
|
"deploy.noScopeTypes": "Esta app ainda não tem scopes. Tipos de scope disponíveis: {types}.",
|
|
1050
|
-
"deploy.createScopeHint":
|
|
1050
|
+
"deploy.createScopeHint": "crie um scope primeiro (por exemplo um scope “dev” do tipo {type}).",
|
|
1051
1051
|
"deploy.usingRelease": "Usando a release existente **{semver}** (#{id}). ",
|
|
1052
1052
|
"deploy.createdRelease": "Criei a release **{semver}** a partir do build #{build}. ",
|
|
1053
1053
|
"deploy.createdReleaseFrom": "Criei a release **{semver}** a partir do build #{build} ({branch} @{commit}). ",
|
|
1054
1054
|
"deploy.noSuchVersion": "Não existe a release **{version}**{known} e não há build bem-sucedido para cortá-la.",
|
|
1055
1055
|
"deploy.knownVersions": " (conhecidas: {versions})",
|
|
1056
1056
|
"deploy.nothing": "Nada para fazer deploy: nenhuma release ativa e nenhum build bem-sucedido.",
|
|
1057
|
-
"deploy.nothingHint": "faça push de um commit para o CI gerar um build, depois
|
|
1057
|
+
"deploy.nothingHint": "faça push de um commit para o CI gerar um build, depois faça o deploy de novo.",
|
|
1058
1058
|
"deploy.multiAsset": "O build #{build} tem vários assets — qual vai para **{scope}** ({type})?",
|
|
1059
|
-
"deploy.assetHint":
|
|
1059
|
+
"deploy.assetHint": "faça o deploy de novo, informando o asset a publicar (ex. {name}).",
|
|
1060
1060
|
"deploy.errorLabel": "Deploy falhou",
|
|
1061
1061
|
"deploy.alreadyRolling": "Esta release já está em rollout em **{scope}** — mostrando esse deployment.",
|
|
1062
|
-
"deploy.rejected":
|
|
1062
|
+
"deploy.rejected": "Deploy rejeitado: {message}\nIsso geralmente é a escolha do asset, não os ids — o build provavelmente tem vários assets. Tente de novo informando o asset a publicar (veja-os no status da app).",
|
|
1063
1063
|
// — application_deployment_update tool —
|
|
1064
|
-
"traffic.sayWhat":
|
|
1065
|
-
"traffic.noActive": "Nenhum rollout ativo em **{app}** —
|
|
1064
|
+
"traffic.sayWhat": "Diga o que fazer: defina uma porcentagem de tráfego (0–100), finalize, ou reverta.",
|
|
1065
|
+
"traffic.noActive": "Nenhum rollout ativo em **{app}** — faça o deploy para iniciar um.",
|
|
1066
1066
|
"traffic.several": "Vários rollouts estão ativos — passe deployment_id:",
|
|
1067
1067
|
"traffic.snapped": "({requested}% ajustado para {snapped}%)",
|
|
1068
1068
|
"traffic.errorLabel": "Ação de tráfego falhou",
|
|
@@ -1071,7 +1071,7 @@ const portuguese = {
|
|
|
1071
1071
|
"createRelease.done": "Release **{semver}** criada{from}.",
|
|
1072
1072
|
"createRelease.exists": "A release **{semver}** já existe para o build #{build} — reusando.",
|
|
1073
1073
|
"createRelease.from": " a partir do build #{build} ({branch} @{commit}, {when})",
|
|
1074
|
-
"createRelease.deployHint": "
|
|
1074
|
+
"createRelease.deployHint": "faça o deploy da release #{id} para publicá-la.",
|
|
1075
1075
|
"createRelease.errorLabel": "Não foi possível criar a release",
|
|
1076
1076
|
// — application_parameter_create tool —
|
|
1077
1077
|
"setParams.created.one": "Defini 1 novo parâmetro em **{app}**: {names}.",
|
|
@@ -1079,9 +1079,9 @@ const portuguese = {
|
|
|
1079
1079
|
"setParams.updated.one": "Atualizei 1 parâmetro existente em **{app}**: {names}.",
|
|
1080
1080
|
"setParams.updated.many": "Atualizei {count} parâmetros existentes em **{app}**: {names}.",
|
|
1081
1081
|
"setParams.mixed": "Defini {total} parâmetros em **{app}** (novos: {created}, atualizados: {updated}): {names}.",
|
|
1082
|
-
"setParams.applyHint": "os valores aplicam no próximo
|
|
1082
|
+
"setParams.applyHint": "os valores aplicam no próximo deploy.",
|
|
1083
1083
|
"setParams.scopeDimConflict": "Não dá para mirar um scope e dimensões ao mesmo tempo para `{name}` — um scope já localiza o valor. Escolha um.",
|
|
1084
|
-
"setParams.partial": "A atualização de parâmetros falhou no meio: {message}\nOs parâmetros já criados permanecem —
|
|
1084
|
+
"setParams.partial": "A atualização de parâmetros falhou no meio: {message}\nOs parâmetros já criados permanecem — liste-os para inspecionar.",
|
|
1085
1085
|
"setParams.errorLabel": "Atualização de parâmetros falhou",
|
|
1086
1086
|
// — application_create tool —
|
|
1087
1087
|
"createApp.form": "Para criar uma aplicação eu preciso de uma URL de repositório git e um nome (o formulário os coleta).\nNamespaces: {namespaces}.",
|
|
@@ -1090,24 +1090,24 @@ const portuguese = {
|
|
|
1090
1090
|
"createApp.noAccountMatch": 'Nenhuma conta correspondente a "{account}". Contas: {names}.',
|
|
1091
1091
|
"createApp.whichNamespace": "Qual namespace?",
|
|
1092
1092
|
"createApp.whichNamespaceFor": "Qual namespace deve conter **{name}**?",
|
|
1093
|
-
"createApp.namespaceHint":
|
|
1093
|
+
"createApp.namespaceHint": "informe o namespace onde criá-la.",
|
|
1094
1094
|
"createApp.noNamespaces": "Esta organização ainda não tem namespaces — crie um no dashboard primeiro.",
|
|
1095
1095
|
"createApp.created": "**{name}** criada (#{id}) no namespace **{namespace}**, vinculada a {repo}.",
|
|
1096
1096
|
"createApp.alreadyLinked": "**{name}** (#{id}) já está vinculada a {repo} — nada para criar.",
|
|
1097
|
-
"createApp.createdHint": "faça push de um commit para disparar o primeiro build, depois
|
|
1098
|
-
"createApp.createdHintNew": "o repo foi scaffoldado para você — clone {repo} em uma pasta, adicione seu código lá e faça push para o CI buildar, depois
|
|
1097
|
+
"createApp.createdHint": "faça push de um commit para disparar o primeiro build, depois faça o deploy.",
|
|
1098
|
+
"createApp.createdHintNew": "o repo foi scaffoldado para você — clone {repo} em uma pasta, adicione seu código lá e faça push para o CI buildar, depois faça o deploy.",
|
|
1099
1099
|
"createApp.pending": "⏳ **{name}** criada (#{id}), o provisionamento ainda está rodando (status: {status}).",
|
|
1100
|
-
"createApp.pendingHint":
|
|
1100
|
+
"createApp.pendingHint": "verifique a aplicação #{id} para ver o progresso.",
|
|
1101
1101
|
"createApp.errorLabel": "Não foi possível criar a aplicação",
|
|
1102
1102
|
// — playbook_get tool —
|
|
1103
1103
|
"playbook.errorLabel": "Não foi possível carregar o playbook",
|
|
1104
1104
|
// — application_scope_create tool —
|
|
1105
1105
|
"createScope.whichType": "Qual tipo de scope para **{name}**?",
|
|
1106
|
-
"createScope.typeHint":
|
|
1106
|
+
"createScope.typeHint": "informe um tipo de scope para **{name}** para criá-lo.",
|
|
1107
1107
|
"createScope.noTypes": 'Nenhum tipo de scope disponível — passe type explicitamente (ex. type:"web_pool").',
|
|
1108
1108
|
"createScope.provisioning": "⏳ O scope **{name}** (#{id}, {type}{dimensions}) está provisionando — a infraestrutura está sendo criada.",
|
|
1109
1109
|
"createScope.exists": "O scope **{name}** (#{id}) já existe ({status}) — nada para criar.",
|
|
1110
|
-
"createScope.provisioningHint":
|
|
1110
|
+
"createScope.provisioningHint": "o status da app o mostra; quando ativo, faça o deploy no scope **{name}**.",
|
|
1111
1111
|
"createScope.errorLabel": "Não foi possível criar o scope",
|
|
1112
1112
|
// — auth & transport —
|
|
1113
1113
|
"error.credentialRejected": "nullplatform rejeitou a credencial ({status}) — verifique sua NP_API_KEY",
|
|
@@ -1129,15 +1129,15 @@ const portuguese = {
|
|
|
1129
1129
|
"prompt.ship.toScope": ' para o scope "{scope}"',
|
|
1130
1130
|
"prompt.thisRepoApp": "a aplicação vinculada a este repositório",
|
|
1131
1131
|
"prompt.setup": `Conecte este repositório à nullplatform:
|
|
1132
|
-
1.
|
|
1133
|
-
2. Se não estiver vinculado,
|
|
1134
|
-
3. Se nenhuma existir,
|
|
1132
|
+
1. Mostre o status desta app — se o repositório já estiver vinculado a uma aplicação, apenas me mostre onde estou.
|
|
1133
|
+
2. Se não estiver vinculado, procure uma app com o nome deste repositório antes de criar qualquer coisa.
|
|
1134
|
+
3. Se nenhuma existir, crie a aplicação para vinculá-lo, depois mostre o status dela e me diga o que acontece a seguir (primeiro build via CI, depois deploy).`,
|
|
1135
1135
|
"prompt.health": `Me dê um health check de {app}:
|
|
1136
1136
|
1. status — o que está no ar e onde, algo em rollout?
|
|
1137
1137
|
2. métricas (janela de 3h) — aponte qualquer coisa incomum em throughput, tempo de resposta, taxa de erro, CPU ou memória.
|
|
1138
1138
|
3. logs — escaneie as linhas recentes por erros ou avisos.
|
|
1139
1139
|
Termine com um veredito de um parágrafo: saudável / degradado / com problemas, e a única ação seguinte mais útil.`,
|
|
1140
|
-
"prompt.rollback": `Algo está errado — reverta {app} agora mesmo: encontre seu rollout ativo,
|
|
1140
|
+
"prompt.rollback": `Algo está errado — reverta {app} agora mesmo: encontre seu rollout ativo, reverta-o, depois confirme pelo status dele que a versão anterior está atendendo o tráfego e resuma o que foi revertido.`,
|
|
1141
1141
|
};
|
|
1142
1142
|
const catalogs = { en: english, es: spanish, pt: portuguese };
|
|
1143
1143
|
const SUPPORTED = ["en", "es", "pt"];
|