@nullplatform/mcp 0.1.6 → 0.1.8
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 +599 -24
- package/dist/np/client.js +3 -0
- package/dist/np/journey.js +236 -24
- package/dist/tool-names.js +7 -0
- package/dist/tools/action-flow.js +94 -0
- package/dist/tools/approvals.js +2 -2
- package/dist/tools/builds.js +23 -6
- package/dist/tools/create-app.js +37 -9
- package/dist/tools/create-link.js +163 -0
- package/dist/tools/create-service.js +149 -0
- package/dist/tools/delete-flow.js +30 -0
- package/dist/tools/delete-link.js +95 -0
- package/dist/tools/delete-param.js +76 -0
- package/dist/tools/delete-service.js +108 -0
- package/dist/tools/deployments.js +2 -2
- package/dist/tools/index.js +14 -0
- package/dist/tools/logs.js +2 -2
- package/dist/tools/metrics.js +4 -1
- package/dist/tools/overview.js +2 -2
- package/dist/tools/params.js +78 -17
- package/dist/tools/playbook.js +2 -1
- package/dist/tools/releases.js +2 -2
- package/dist/tools/services.js +2 -2
- package/dist/tools/set-params.js +61 -11
- package/dist/tools/shared.js +4 -0
- package/dist/tools/update-link.js +87 -0
- package/dist/tools/update-service.js +92 -0
- package/dist/ui.js +4 -1
- package/package.json +3 -1
- package/skills/starting-a-new-app/SKILL.md +84 -0
- package/widgets-dist/approvals.html +261 -57
- package/widgets-dist/builds.html +261 -57
- package/widgets-dist/create-app.html +257 -53
- package/widgets-dist/deployments.html +251 -47
- package/widgets-dist/find-apps.html +257 -53
- package/widgets-dist/logs.html +256 -52
- package/widgets-dist/manifest.json +16 -13
- package/widgets-dist/metrics.html +261 -57
- package/widgets-dist/np-panel.html +257 -53
- package/widgets-dist/overview.html +257 -53
- package/widgets-dist/params.html +261 -57
- package/widgets-dist/releases.html +257 -53
- package/widgets-dist/service-action.html +1118 -0
- package/widgets-dist/service-create.html +1117 -0
- package/widgets-dist/{playbook.html → service-delete.html} +258 -58
- package/widgets-dist/service-link.html +1117 -0
- package/widgets-dist/services.html +256 -52
package/dist/i18n.js
CHANGED
|
@@ -39,6 +39,8 @@ const english = {
|
|
|
39
39
|
"header.type": "Type",
|
|
40
40
|
"header.secret": "Secret",
|
|
41
41
|
"header.value": "Value",
|
|
42
|
+
"header.values": "Values",
|
|
43
|
+
"header.source": "Source",
|
|
42
44
|
"header.metric": "Metric",
|
|
43
45
|
"header.now": "Now",
|
|
44
46
|
"header.avg": "Avg",
|
|
@@ -139,6 +141,9 @@ const english = {
|
|
|
139
141
|
"params.count.many": "**{app}** · {count} parameters",
|
|
140
142
|
"params.unset": "_unset_",
|
|
141
143
|
"params.applyHint": "changed values apply on the next `application_deployment_create`.",
|
|
144
|
+
"params.effectiveFor": "**{app}** · effective parameters for **{scope}**",
|
|
145
|
+
"params.ctxApplication": "Application",
|
|
146
|
+
"params.ctxScope": "{scope} (scope)",
|
|
142
147
|
"params.errorLabel": "Couldn't list parameters",
|
|
143
148
|
// — application_log_list tool —
|
|
144
149
|
"logs.noun": "Logs",
|
|
@@ -146,7 +151,8 @@ const english = {
|
|
|
146
151
|
"logs.noScopesHint": "`application_deployment_create` after creating a scope — logs appear once something runs.",
|
|
147
152
|
"logs.empty": "No log lines returned for **{app}**{scope}.",
|
|
148
153
|
"logs.openInDashboard": "open logs in dashboard",
|
|
149
|
-
"logs.lastLines": "**{app}**{scope} — last
|
|
154
|
+
"logs.lastLines.one": "**{app}**{scope} — last line",
|
|
155
|
+
"logs.lastLines.many": "**{app}**{scope} — last {count} lines",
|
|
150
156
|
"logs.errorLabel": "Couldn't read logs",
|
|
151
157
|
"logs.errorSuffix": "The dashboard's Logs view may still have them.",
|
|
152
158
|
// — application_metric_list tool —
|
|
@@ -158,7 +164,8 @@ const english = {
|
|
|
158
164
|
"metrics.title": "**{app}** · {scope} — last {window}",
|
|
159
165
|
"metrics.errorLabel": "Couldn't load metrics",
|
|
160
166
|
// — application_build_list tool —
|
|
161
|
-
"builds.title": "**{app}** ·
|
|
167
|
+
"builds.title.one": "**{app}** · 1 recent build",
|
|
168
|
+
"builds.title.many": "**{app}** · {count} recent builds",
|
|
162
169
|
"builds.branch": "Branch",
|
|
163
170
|
"builds.commit": "Commit",
|
|
164
171
|
"builds.released": "Released",
|
|
@@ -169,20 +176,25 @@ const english = {
|
|
|
169
176
|
"builds.waiting": "build #{build} is still running — `application_build_list` again in a moment to check.",
|
|
170
177
|
"builds.upToDate": "the latest successful build is already released.",
|
|
171
178
|
"builds.assetsTitle": "Assets of build #{build}",
|
|
172
|
-
"builds.noAssets": "Build #{build} has no assets
|
|
179
|
+
"builds.noAssets": "Build #{build} has no assets.",
|
|
180
|
+
"builds.noAssetsRunning": "Build #{build} has no assets yet — it's still building.",
|
|
181
|
+
"builds.noAssetsFailed": "Build #{build} failed before producing any assets.",
|
|
173
182
|
"builds.errorLabel": "Couldn't list builds",
|
|
174
|
-
"releaseList.title": "**{app}** ·
|
|
183
|
+
"releaseList.title.one": "**{app}** · 1 release",
|
|
184
|
+
"releaseList.title.many": "**{app}** · {count} releases",
|
|
175
185
|
"releaseList.none": "**{app}** has no releases yet.",
|
|
176
186
|
"releaseList.noneHint": "cut one from a successful build with `application_release_create`, or just `application_deployment_create`.",
|
|
177
187
|
"releaseList.deployHint": 'deploy an active release with `application_deployment_create version:"x.y.z"`.',
|
|
178
188
|
"releaseList.errorLabel": "Couldn't list releases",
|
|
179
|
-
"deploymentList.title": "**{app}** ·
|
|
189
|
+
"deploymentList.title.one": "**{app}** · 1 deployment",
|
|
190
|
+
"deploymentList.title.many": "**{app}** · {count} deployments",
|
|
180
191
|
"deploymentList.none": "**{app}** has no deployments yet.",
|
|
181
192
|
"deploymentList.group": "{count} scopes (group)",
|
|
182
193
|
"deploymentList.hint": "`application_get` for the live picture, or `application_deployment_update` to drive a rollout.",
|
|
183
194
|
"deploymentList.errorLabel": "Couldn't list deployments",
|
|
184
195
|
// — organization_get tool —
|
|
185
|
-
"overview.title": "Organization overview ·
|
|
196
|
+
"overview.title.one": "Organization overview · 1 application scanned",
|
|
197
|
+
"overview.title.many": "Organization overview · {count} applications scanned",
|
|
186
198
|
"overview.truncated": '_(showing the first {count} — narrow with `organization_get query:"..."`)_',
|
|
187
199
|
"overview.activeRollouts": "Active rollouts ({count})",
|
|
188
200
|
"overview.trouble": "Needs attention ({count})",
|
|
@@ -191,7 +203,8 @@ const english = {
|
|
|
191
203
|
"overview.hintCalm": "everything is steady — nothing rolling out, nothing failed.",
|
|
192
204
|
"overview.errorLabel": "Couldn't build the overview",
|
|
193
205
|
// — application_approval_list tool —
|
|
194
|
-
"approvals.title": "**{app}** ·
|
|
206
|
+
"approvals.title.one": "**{app}** · 1 approval",
|
|
207
|
+
"approvals.title.many": "**{app}** · {count} approvals",
|
|
195
208
|
"approvals.action": "Action",
|
|
196
209
|
"approvals.entity": "Entity",
|
|
197
210
|
"approvals.requestedBy": "Requested by",
|
|
@@ -203,12 +216,88 @@ const english = {
|
|
|
203
216
|
"approvals.actHint": '`application_approval_list action:"approve" approval_id:"{id}"` to let it proceed (uses your permissions).',
|
|
204
217
|
"approvals.errorLabel": "Couldn't load approvals",
|
|
205
218
|
// — application_service_list tool —
|
|
206
|
-
"services.attached": "**{app}** ·
|
|
219
|
+
"services.attached.one": "**{app}** · 1 dependency service",
|
|
220
|
+
"services.attached.many": "**{app}** · {count} dependency services",
|
|
207
221
|
"services.specification": "Type",
|
|
208
222
|
"services.none": "**{app}** has no dependency services attached.",
|
|
209
223
|
"services.catalog": "Available to provision: {catalog}.",
|
|
210
224
|
"services.provisionHint": "provisioning a dependency is a guided flow — create one in the dashboard.",
|
|
211
225
|
"services.errorLabel": "Couldn't load services",
|
|
226
|
+
// — application_service_create tool —
|
|
227
|
+
"createService.errorLabel": "Couldn't provision the service",
|
|
228
|
+
"createService.noSpecs": "**{app}** has no dependency types available to provision here.",
|
|
229
|
+
"createService.pickSpec": "**{app}** — which dependency to provision? ({count} available)",
|
|
230
|
+
"createService.matchAmbiguous": 'Several dependencies match "{query}" — pick one:',
|
|
231
|
+
"createService.category": "Category",
|
|
232
|
+
"createService.provider": "Provider",
|
|
233
|
+
"createService.pickHint": '`application_service_create type:"<name>"` to provision one.',
|
|
234
|
+
"createService.form": "Ready to provision **{spec}** for **{app}** — submit to create it (this creates real cloud resources).",
|
|
235
|
+
"createService.formHint": "submit the panel to provision, or pass `provision:true` with the parameters.",
|
|
236
|
+
"createService.provisioning": "Provisioning **{spec}** as **{name}** — {status}. Real resources are being created.",
|
|
237
|
+
"createService.reused": "**{name}** already exists ({status}) — reusing it, not provisioning a second one.",
|
|
238
|
+
"createService.provisioningHint": "`application_link_create` to link **{name}** to a scope — its connection parameters appear after the link, on the next deploy.",
|
|
239
|
+
// — application_link_create tool —
|
|
240
|
+
"createLink.errorLabel": "Couldn't create the link",
|
|
241
|
+
"createLink.noServices": "**{app}** has no provisioned services to link yet.",
|
|
242
|
+
"createLink.noServicesHint": "`application_service_create` to provision a dependency first.",
|
|
243
|
+
"createLink.pickService": "Which service to link to **{app}**?",
|
|
244
|
+
"createLink.matchAmbiguous": "Several services match — pick one:",
|
|
245
|
+
"createLink.pickHint": '`application_link_create service:"<name>"` to link one.',
|
|
246
|
+
"createLink.noLinkSpec": "No link specification is available for **{service}** in this org.",
|
|
247
|
+
"createLink.form": "Ready to link **{service}** to **{app}** — submit to create the link (a credential link provisions a database user).",
|
|
248
|
+
"createLink.formHint": "submit the panel to create the link, or pass `create:true` with the parameters.",
|
|
249
|
+
"createLink.linking": "Linking **{service}** to {target} — {status}.",
|
|
250
|
+
"createLink.reused": "**{service}** is already linked to {target} ({status}) — reusing that link.",
|
|
251
|
+
"createLink.linkedHint": "redeploy the scope so the new connection parameters reach the runtime.",
|
|
252
|
+
// — application_service_update / application_link_update (run a custom action) —
|
|
253
|
+
"runAction.errorLabel": "Couldn't run the action",
|
|
254
|
+
"runAction.noServices": "**{app}** has no provisioned services to run an action on.",
|
|
255
|
+
"runAction.noServicesHint": "`application_service_create` to provision a dependency first.",
|
|
256
|
+
"runAction.noLinks": "**{app}** has no links to run an action on.",
|
|
257
|
+
"runAction.noLinksHint": "`application_link_create` to link a service first.",
|
|
258
|
+
"runAction.pickService": "Which service to run an action on, in **{app}**?",
|
|
259
|
+
"runAction.serviceAmbiguous": "Several services match — pick one:",
|
|
260
|
+
"runAction.pickServiceHint": '`application_service_update service:"<name>"` to choose one.',
|
|
261
|
+
"runAction.pickLink": "Which link to run an action on, in **{app}**?",
|
|
262
|
+
"runAction.linkAmbiguous": "Several links match — pick one:",
|
|
263
|
+
"runAction.pickLinkHint": '`application_link_update link:"<name>"` to choose one.',
|
|
264
|
+
"runAction.noActions": "**{name}** exposes no runnable actions.",
|
|
265
|
+
"runAction.pickAction": "Which action to run on **{name}**?",
|
|
266
|
+
"runAction.matchAmbiguous": "Several actions match — pick one:",
|
|
267
|
+
"runAction.paramsHeader": "Parameters",
|
|
268
|
+
"runAction.pickHint": 'Pass `action:"<name>"` to choose one.',
|
|
269
|
+
"runAction.form": "Ready to run **{action}** on **{name}** — submit to run it.",
|
|
270
|
+
"runAction.formHint": "submit the panel to run it, or pass `run:true` with the parameters.",
|
|
271
|
+
"runAction.running": "Running **{action}** on **{name}** — {status}.",
|
|
272
|
+
"runAction.ranHint": "the action runs asynchronously; its result appears when it finishes.",
|
|
273
|
+
// — application_service_delete / application_link_delete (deprovision) —
|
|
274
|
+
"deleteEntity.serviceErrorLabel": "Couldn't delete the service",
|
|
275
|
+
"deleteEntity.linkErrorLabel": "Couldn't delete the link",
|
|
276
|
+
"deleteEntity.noServices": "**{app}** has no provisioned services to delete.",
|
|
277
|
+
"deleteEntity.noLinks": "**{app}** has no links to delete.",
|
|
278
|
+
"deleteEntity.pickService": "Which service to delete, in **{app}**?",
|
|
279
|
+
"deleteEntity.serviceAmbiguous": "Several services match — pick one:",
|
|
280
|
+
"deleteEntity.pickServiceHint": '`application_service_delete service:"<name>"` to choose one.',
|
|
281
|
+
"deleteEntity.pickLink": "Which link to delete, in **{app}**?",
|
|
282
|
+
"deleteEntity.linkAmbiguous": "Several links match — pick one:",
|
|
283
|
+
"deleteEntity.pickLinkHint": '`application_link_delete link:"<name>"` to choose one.',
|
|
284
|
+
"deleteEntity.hasLinks": "**{name}** still has {count} active link(s) — they'd be orphaned.",
|
|
285
|
+
"deleteEntity.hasLinksHint": "delete the links first with `application_link_delete`, then the service.",
|
|
286
|
+
"deleteEntity.confirm": "Ready to delete **{name}** and destroy its resources — submit to confirm.",
|
|
287
|
+
"deleteEntity.confirmHint": "submit the panel to delete, or pass `confirm:true`.",
|
|
288
|
+
"deleteEntity.removed": "**{name}** was deleted.",
|
|
289
|
+
"deleteEntity.deprovisioning": "Deleting **{name}** — an agent is deprovisioning its resources.",
|
|
290
|
+
"deleteEntity.deprovisioningHint": "the record is removed once deprovisioning finishes.",
|
|
291
|
+
// — application_parameter_delete tool —
|
|
292
|
+
"deleteParam.errorLabel": "Couldn't delete the parameter",
|
|
293
|
+
"deleteParam.absent": "**{name}** isn't set on **{app}** — nothing to delete.",
|
|
294
|
+
"deleteParam.readOnly": "**{name}** is read-only — a service link injects it.",
|
|
295
|
+
"deleteParam.readOnlyHint": "delete the link that exports it with `application_link_delete`.",
|
|
296
|
+
"deleteParam.confirm": "Ready to delete **{name}** from **{app}** — submit to confirm.",
|
|
297
|
+
"deleteParam.confirmHint": "submit the panel to delete, or pass `confirm:true`.",
|
|
298
|
+
"deleteParam.deleted": "Deleted **{name}** from **{app}**.",
|
|
299
|
+
"deleteParam.deletedHint": "the change applies on the next deploy.",
|
|
300
|
+
"deleteParam.failed": "Couldn't delete **{name}**: {message}",
|
|
212
301
|
// — application_deployment_create tool —
|
|
213
302
|
"deploy.noScopeTypes": "This app has no scopes yet. Available scope types: {types}.",
|
|
214
303
|
"deploy.createScopeHint": '`application_scope_create name:"dev" type:"{type}"`',
|
|
@@ -238,16 +327,20 @@ const english = {
|
|
|
238
327
|
"createRelease.deployHint": "`application_deployment_create release_id:{id}` to ship it.",
|
|
239
328
|
"createRelease.errorLabel": "Couldn't create release",
|
|
240
329
|
// — application_parameter_create tool —
|
|
241
|
-
"setParams.created": "Set
|
|
242
|
-
"setParams.
|
|
243
|
-
"setParams.
|
|
330
|
+
"setParams.created.one": "Set 1 new parameter on **{app}**: {names}.",
|
|
331
|
+
"setParams.created.many": "Set {count} new parameters on **{app}**: {names}.",
|
|
332
|
+
"setParams.updated.one": "Updated 1 existing parameter on **{app}**: {names}.",
|
|
333
|
+
"setParams.updated.many": "Updated {count} existing parameters on **{app}**: {names}.",
|
|
334
|
+
"setParams.mixed": "Set {total} parameters on **{app}** (new: {created}, updated: {updated}): {names}.",
|
|
244
335
|
"setParams.applyHint": "values apply on the next `application_deployment_create`.",
|
|
336
|
+
"setParams.scopeDimConflict": "Can't target both a scope and dimensions for `{name}` — a scope already locates the value. Pick one.",
|
|
245
337
|
"setParams.partial": "Parameter update failed partway: {message}\nAlready-created parameters remain — `application_parameter_list` to inspect.",
|
|
246
338
|
"setParams.errorLabel": "Parameter update failed",
|
|
247
339
|
// — application_create tool —
|
|
248
340
|
"createApp.form": "To create an application I need a git repository URL and a name (the form collects them).\nNamespaces: {namespaces}.",
|
|
249
341
|
"createApp.noName": "Couldn't derive a name from {url} — pass name.",
|
|
250
342
|
"createApp.noNamespaceMatch": 'No namespace matching "{namespace}". Namespaces: {names}.',
|
|
343
|
+
"createApp.noAccountMatch": 'No account matching "{account}". Accounts: {names}.',
|
|
251
344
|
"createApp.whichNamespace": "Which namespace?",
|
|
252
345
|
"createApp.whichNamespaceFor": "Which namespace should own **{name}**?",
|
|
253
346
|
"createApp.namespaceHint": '`application_create namespace:"<name>"`',
|
|
@@ -255,6 +348,7 @@ const english = {
|
|
|
255
348
|
"createApp.created": "**{name}** created (#{id}) in namespace **{namespace}**, linked to {repo}.",
|
|
256
349
|
"createApp.alreadyLinked": "**{name}** (#{id}) is already linked to {repo} — nothing to create.",
|
|
257
350
|
"createApp.createdHint": "push a commit to trigger the first build, then `application_deployment_create`.",
|
|
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 `application_deployment_create`.",
|
|
258
352
|
"createApp.pending": "⏳ **{name}** created (#{id}), provisioning is still running (status: {status}).",
|
|
259
353
|
"createApp.pendingHint": '`application_get app:"#{id}"` to check on it.',
|
|
260
354
|
"createApp.errorLabel": "Couldn't create the application",
|
|
@@ -326,6 +420,8 @@ const spanish = {
|
|
|
326
420
|
"header.type": "Tipo",
|
|
327
421
|
"header.secret": "Secreto",
|
|
328
422
|
"header.value": "Valor",
|
|
423
|
+
"header.values": "Valores",
|
|
424
|
+
"header.source": "Origen",
|
|
329
425
|
"header.metric": "Métrica",
|
|
330
426
|
"header.now": "Ahora",
|
|
331
427
|
"header.avg": "Prom",
|
|
@@ -418,13 +514,17 @@ const spanish = {
|
|
|
418
514
|
"params.count.many": "**{app}** · {count} parámetros",
|
|
419
515
|
"params.unset": "_sin valor_",
|
|
420
516
|
"params.applyHint": "los valores cambiados aplican en el próximo `application_deployment_create`.",
|
|
517
|
+
"params.effectiveFor": "**{app}** · parámetros efectivos para **{scope}**",
|
|
518
|
+
"params.ctxApplication": "Aplicación",
|
|
519
|
+
"params.ctxScope": "{scope} (scope)",
|
|
421
520
|
"params.errorLabel": "No pude listar los parámetros",
|
|
422
521
|
"logs.noun": "Los logs",
|
|
423
522
|
"logs.noScopes": "**{app}** no tiene scopes, así que todavía no hay logs de runtime.",
|
|
424
523
|
"logs.noScopesHint": "`application_deployment_create` después de crear un scope — los logs aparecen cuando algo corre.",
|
|
425
524
|
"logs.empty": "No hay líneas de log para **{app}**{scope}.",
|
|
426
525
|
"logs.openInDashboard": "abrir logs en el dashboard",
|
|
427
|
-
"logs.lastLines": "**{app}**{scope} —
|
|
526
|
+
"logs.lastLines.one": "**{app}**{scope} — última línea",
|
|
527
|
+
"logs.lastLines.many": "**{app}**{scope} — últimas {count} líneas",
|
|
428
528
|
"logs.errorLabel": "No pude leer los logs",
|
|
429
529
|
"logs.errorSuffix": "La vista Logs del dashboard puede tenerlos igual.",
|
|
430
530
|
"metrics.noun": "Las métricas",
|
|
@@ -435,7 +535,8 @@ const spanish = {
|
|
|
435
535
|
"metrics.title": "**{app}** · {scope} — últimas {window}",
|
|
436
536
|
"metrics.errorLabel": "No pude cargar las métricas",
|
|
437
537
|
// — application_build_list tool —
|
|
438
|
-
"builds.title": "**{app}** ·
|
|
538
|
+
"builds.title.one": "**{app}** · 1 build reciente",
|
|
539
|
+
"builds.title.many": "**{app}** · {count} builds recientes",
|
|
439
540
|
"builds.branch": "Branch",
|
|
440
541
|
"builds.commit": "Commit",
|
|
441
542
|
"builds.released": "Released",
|
|
@@ -446,20 +547,25 @@ const spanish = {
|
|
|
446
547
|
"builds.waiting": "el build #{build} sigue corriendo — `application_build_list` de nuevo en un momento para chequear.",
|
|
447
548
|
"builds.upToDate": "el último build exitoso ya está publicado.",
|
|
448
549
|
"builds.assetsTitle": "Assets del build #{build}",
|
|
449
|
-
"builds.noAssets": "El build #{build} no tiene assets
|
|
550
|
+
"builds.noAssets": "El build #{build} no tiene assets.",
|
|
551
|
+
"builds.noAssetsRunning": "El build #{build} todavía no tiene assets — sigue compilando.",
|
|
552
|
+
"builds.noAssetsFailed": "El build #{build} falló antes de producir assets.",
|
|
450
553
|
"builds.errorLabel": "No pude listar los builds",
|
|
451
|
-
"releaseList.title": "**{app}** ·
|
|
554
|
+
"releaseList.title.one": "**{app}** · 1 release",
|
|
555
|
+
"releaseList.title.many": "**{app}** · {count} releases",
|
|
452
556
|
"releaseList.none": "**{app}** todavía no tiene releases.",
|
|
453
557
|
"releaseList.noneHint": "cortá uno desde un build exitoso con `application_release_create`, o directamente `application_deployment_create`.",
|
|
454
558
|
"releaseList.deployHint": 'deployá un release activo con `application_deployment_create version:"x.y.z"`.',
|
|
455
559
|
"releaseList.errorLabel": "No pude listar los releases",
|
|
456
|
-
"deploymentList.title": "**{app}** ·
|
|
560
|
+
"deploymentList.title.one": "**{app}** · 1 deployment",
|
|
561
|
+
"deploymentList.title.many": "**{app}** · {count} deployments",
|
|
457
562
|
"deploymentList.none": "**{app}** todavía no tiene deployments.",
|
|
458
563
|
"deploymentList.group": "{count} scopes (grupo)",
|
|
459
564
|
"deploymentList.hint": "`application_get` para la foto en vivo, o `application_deployment_update` para conducir un rollout.",
|
|
460
565
|
"deploymentList.errorLabel": "No pude listar los deployments",
|
|
461
566
|
// — organization_get tool —
|
|
462
|
-
"overview.title": "Panorama de la organización ·
|
|
567
|
+
"overview.title.one": "Panorama de la organización · 1 aplicación escaneada",
|
|
568
|
+
"overview.title.many": "Panorama de la organización · {count} aplicaciones escaneadas",
|
|
463
569
|
"overview.truncated": '_(muestro las primeras {count} — acotá con `organization_get query:"..."`)_',
|
|
464
570
|
"overview.activeRollouts": "Rollouts activos ({count})",
|
|
465
571
|
"overview.trouble": "Requiere atención ({count})",
|
|
@@ -468,7 +574,8 @@ const spanish = {
|
|
|
468
574
|
"overview.hintCalm": "todo tranquilo — nada desplegándose, nada falló.",
|
|
469
575
|
"overview.errorLabel": "No pude armar el panorama",
|
|
470
576
|
// — application_approval_list tool —
|
|
471
|
-
"approvals.title": "**{app}** ·
|
|
577
|
+
"approvals.title.one": "**{app}** · 1 aprobación",
|
|
578
|
+
"approvals.title.many": "**{app}** · {count} aprobaciones",
|
|
472
579
|
"approvals.action": "Acción",
|
|
473
580
|
"approvals.entity": "Entidad",
|
|
474
581
|
"approvals.requestedBy": "Solicitada por",
|
|
@@ -480,12 +587,88 @@ const spanish = {
|
|
|
480
587
|
"approvals.actHint": '`application_approval_list action:"approve" approval_id:"{id}"` para dejarla continuar (usa tus permisos).',
|
|
481
588
|
"approvals.errorLabel": "No pude cargar las aprobaciones",
|
|
482
589
|
// — application_service_list tool —
|
|
483
|
-
"services.attached": "**{app}** ·
|
|
590
|
+
"services.attached.one": "**{app}** · 1 servicio de dependencia",
|
|
591
|
+
"services.attached.many": "**{app}** · {count} servicios de dependencia",
|
|
484
592
|
"services.specification": "Tipo",
|
|
485
593
|
"services.none": "**{app}** no tiene servicios de dependencia conectados.",
|
|
486
594
|
"services.catalog": "Disponibles para aprovisionar: {catalog}.",
|
|
487
595
|
"services.provisionHint": "aprovisionar una dependencia es un flujo guiado — creala en el dashboard.",
|
|
488
596
|
"services.errorLabel": "No pude cargar los servicios",
|
|
597
|
+
// — application_service_create tool —
|
|
598
|
+
"createService.errorLabel": "No pude provisionar el servicio",
|
|
599
|
+
"createService.noSpecs": "**{app}** no tiene tipos de dependencia disponibles para provisionar acá.",
|
|
600
|
+
"createService.pickSpec": "**{app}** — ¿qué dependencia provisionar? ({count} disponibles)",
|
|
601
|
+
"createService.matchAmbiguous": 'Varias dependencias coinciden con "{query}" — elegí una:',
|
|
602
|
+
"createService.category": "Categoría",
|
|
603
|
+
"createService.provider": "Proveedor",
|
|
604
|
+
"createService.pickHint": '`application_service_create type:"<nombre>"` para provisionar una.',
|
|
605
|
+
"createService.form": "Listo para provisionar **{spec}** en **{app}** — confirmá para crearlo (crea recursos cloud reales).",
|
|
606
|
+
"createService.formHint": "confirmá en el panel para provisionar, o pasá `provision:true` con los parámetros.",
|
|
607
|
+
"createService.provisioning": "Provisionando **{spec}** como **{name}** — {status}. Se están creando recursos reales.",
|
|
608
|
+
"createService.reused": "**{name}** ya existe ({status}) — lo reuso, no provisiono un segundo.",
|
|
609
|
+
"createService.provisioningHint": "`application_link_create` para linkear **{name}** a un scope — sus parámetros de conexión aparecen después del link, en el próximo deploy.",
|
|
610
|
+
// — application_link_create tool —
|
|
611
|
+
"createLink.errorLabel": "No pude crear el link",
|
|
612
|
+
"createLink.noServices": "**{app}** todavía no tiene servicios provisionados para linkear.",
|
|
613
|
+
"createLink.noServicesHint": "`application_service_create` para provisionar una dependencia primero.",
|
|
614
|
+
"createLink.pickService": "¿Qué servicio linkear a **{app}**?",
|
|
615
|
+
"createLink.matchAmbiguous": "Varios servicios coinciden — elegí uno:",
|
|
616
|
+
"createLink.pickHint": '`application_link_create service:"<nombre>"` para linkear uno.',
|
|
617
|
+
"createLink.noLinkSpec": "No hay link specification disponible para **{service}** en esta org.",
|
|
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
|
+
"createLink.formHint": "confirmá en el panel para crear el link, o pasá `create:true` con los parámetros.",
|
|
620
|
+
"createLink.linking": "Linkeando **{service}** a {target} — {status}.",
|
|
621
|
+
"createLink.reused": "**{service}** ya está linkeado a {target} ({status}) — reuso ese link.",
|
|
622
|
+
"createLink.linkedHint": "redeployá el scope para que los nuevos parámetros de conexión lleguen al runtime.",
|
|
623
|
+
// — application_service_update / application_link_update (correr una custom action) —
|
|
624
|
+
"runAction.errorLabel": "No pude correr la acción",
|
|
625
|
+
"runAction.noServices": "**{app}** no tiene servicios provisionados para correr una acción.",
|
|
626
|
+
"runAction.noServicesHint": "`application_service_create` para provisionar una dependencia primero.",
|
|
627
|
+
"runAction.noLinks": "**{app}** no tiene links para correr una acción.",
|
|
628
|
+
"runAction.noLinksHint": "`application_link_create` para linkear un servicio primero.",
|
|
629
|
+
"runAction.pickService": "¿En qué servicio correr una acción, en **{app}**?",
|
|
630
|
+
"runAction.serviceAmbiguous": "Varios servicios coinciden — elegí uno:",
|
|
631
|
+
"runAction.pickServiceHint": '`application_service_update service:"<nombre>"` para elegir uno.',
|
|
632
|
+
"runAction.pickLink": "¿En qué link correr una acción, en **{app}**?",
|
|
633
|
+
"runAction.linkAmbiguous": "Varios links coinciden — elegí uno:",
|
|
634
|
+
"runAction.pickLinkHint": '`application_link_update link:"<nombre>"` para elegir uno.',
|
|
635
|
+
"runAction.noActions": "**{name}** no expone acciones ejecutables.",
|
|
636
|
+
"runAction.pickAction": "¿Qué acción correr en **{name}**?",
|
|
637
|
+
"runAction.matchAmbiguous": "Varias acciones coinciden — elegí una:",
|
|
638
|
+
"runAction.paramsHeader": "Parámetros",
|
|
639
|
+
"runAction.pickHint": 'Pasá `action:"<nombre>"` para elegir una.',
|
|
640
|
+
"runAction.form": "Listo para correr **{action}** en **{name}** — confirmá para ejecutarla.",
|
|
641
|
+
"runAction.formHint": "confirmá en el panel para correrla, o pasá `run:true` con los parámetros.",
|
|
642
|
+
"runAction.running": "Corriendo **{action}** en **{name}** — {status}.",
|
|
643
|
+
"runAction.ranHint": "la acción corre de forma asíncrona; su resultado aparece cuando termina.",
|
|
644
|
+
// — application_service_delete / application_link_delete (deprovision) —
|
|
645
|
+
"deleteEntity.serviceErrorLabel": "No pude borrar el servicio",
|
|
646
|
+
"deleteEntity.linkErrorLabel": "No pude borrar el link",
|
|
647
|
+
"deleteEntity.noServices": "**{app}** no tiene servicios provisionados para borrar.",
|
|
648
|
+
"deleteEntity.noLinks": "**{app}** no tiene links para borrar.",
|
|
649
|
+
"deleteEntity.pickService": "¿Qué servicio borrar, en **{app}**?",
|
|
650
|
+
"deleteEntity.serviceAmbiguous": "Varios servicios coinciden — elegí uno:",
|
|
651
|
+
"deleteEntity.pickServiceHint": '`application_service_delete service:"<nombre>"` para elegir uno.',
|
|
652
|
+
"deleteEntity.pickLink": "¿Qué link borrar, en **{app}**?",
|
|
653
|
+
"deleteEntity.linkAmbiguous": "Varios links coinciden — elegí uno:",
|
|
654
|
+
"deleteEntity.pickLinkHint": '`application_link_delete link:"<nombre>"` para elegir uno.',
|
|
655
|
+
"deleteEntity.hasLinks": "**{name}** todavía tiene {count} link(s) activo(s) — quedarían huérfanos.",
|
|
656
|
+
"deleteEntity.hasLinksHint": "borrá los links primero con `application_link_delete`, después el servicio.",
|
|
657
|
+
"deleteEntity.confirm": "Listo para borrar **{name}** y destruir sus recursos — confirmá para borrar.",
|
|
658
|
+
"deleteEntity.confirmHint": "confirmá en el panel para borrar, o pasá `confirm:true`.",
|
|
659
|
+
"deleteEntity.removed": "**{name}** fue borrado.",
|
|
660
|
+
"deleteEntity.deprovisioning": "Borrando **{name}** — un agente está desaprovisionando sus recursos.",
|
|
661
|
+
"deleteEntity.deprovisioningHint": "el registro se elimina cuando termina el desaprovisionamiento.",
|
|
662
|
+
// — application_parameter_delete tool —
|
|
663
|
+
"deleteParam.errorLabel": "No pude borrar el parámetro",
|
|
664
|
+
"deleteParam.absent": "**{name}** no está seteado en **{app}** — nada que borrar.",
|
|
665
|
+
"deleteParam.readOnly": "**{name}** es de solo lectura — lo inyecta un link de servicio.",
|
|
666
|
+
"deleteParam.readOnlyHint": "borrá el link que lo exporta con `application_link_delete`.",
|
|
667
|
+
"deleteParam.confirm": "Listo para borrar **{name}** de **{app}** — confirmá para borrar.",
|
|
668
|
+
"deleteParam.confirmHint": "confirmá en el panel para borrar, o pasá `confirm:true`.",
|
|
669
|
+
"deleteParam.deleted": "Borré **{name}** de **{app}**.",
|
|
670
|
+
"deleteParam.deletedHint": "el cambio aplica en el próximo deploy.",
|
|
671
|
+
"deleteParam.failed": "No pude borrar **{name}**: {message}",
|
|
489
672
|
"deploy.noScopeTypes": "Esta app no tiene scopes todavía. Tipos de scope disponibles: {types}.",
|
|
490
673
|
"deploy.createScopeHint": '`application_scope_create name:"dev" type:"{type}"`',
|
|
491
674
|
"deploy.usingRelease": "Usando la release existente **{semver}** (#{id}). ",
|
|
@@ -511,15 +694,19 @@ const spanish = {
|
|
|
511
694
|
"createRelease.from": " desde el build #{build} ({branch} @{commit}, {when})",
|
|
512
695
|
"createRelease.deployHint": "`application_deployment_create release_id:{id}` para publicarla.",
|
|
513
696
|
"createRelease.errorLabel": "No pude crear la release",
|
|
514
|
-
"setParams.created": "Configuré
|
|
515
|
-
"setParams.
|
|
516
|
-
"setParams.
|
|
697
|
+
"setParams.created.one": "Configuré 1 parámetro nuevo en **{app}**: {names}.",
|
|
698
|
+
"setParams.created.many": "Configuré {count} parámetros nuevos en **{app}**: {names}.",
|
|
699
|
+
"setParams.updated.one": "Actualicé 1 parámetro existente en **{app}**: {names}.",
|
|
700
|
+
"setParams.updated.many": "Actualicé {count} parámetros existentes en **{app}**: {names}.",
|
|
701
|
+
"setParams.mixed": "Configuré {total} parámetros en **{app}** (nuevos: {created}, actualizados: {updated}): {names}.",
|
|
517
702
|
"setParams.applyHint": "los valores aplican en el próximo `application_deployment_create`.",
|
|
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.",
|
|
518
704
|
"setParams.partial": "La actualización de parámetros falló a mitad de camino: {message}\nLos parámetros ya creados quedan — `application_parameter_list` para inspeccionar.",
|
|
519
705
|
"setParams.errorLabel": "Falló la actualización de parámetros",
|
|
520
706
|
"createApp.form": "Para crear una aplicación necesito la URL de un repo git y un nombre (el formulario los pide).\nNamespaces: {namespaces}.",
|
|
521
707
|
"createApp.noName": "No pude derivar un nombre desde {url} — pasá name.",
|
|
522
708
|
"createApp.noNamespaceMatch": 'Ningún namespace coincide con "{namespace}". Namespaces: {names}.',
|
|
709
|
+
"createApp.noAccountMatch": 'Ninguna cuenta coincide con "{account}". Cuentas: {names}.',
|
|
523
710
|
"createApp.whichNamespace": "¿Qué namespace?",
|
|
524
711
|
"createApp.whichNamespaceFor": "¿Qué namespace debería ser dueño de **{name}**?",
|
|
525
712
|
"createApp.namespaceHint": '`application_create namespace:"<nombre>"`',
|
|
@@ -527,6 +714,7 @@ const spanish = {
|
|
|
527
714
|
"createApp.created": "**{name}** creada (#{id}) en el namespace **{namespace}**, vinculada a {repo}.",
|
|
528
715
|
"createApp.alreadyLinked": "**{name}** (#{id}) ya está vinculada a {repo} — no hay nada que crear.",
|
|
529
716
|
"createApp.createdHint": "pusheá un commit para disparar el primer build y después `application_deployment_create`.",
|
|
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 `application_deployment_create`.",
|
|
530
718
|
"createApp.pending": "⏳ **{name}** creada (#{id}), el aprovisionamiento sigue corriendo (estado: {status}).",
|
|
531
719
|
"createApp.pendingHint": '`application_get app:"#{id}"` para revisarla.',
|
|
532
720
|
"createApp.errorLabel": "No pude crear la aplicación",
|
|
@@ -567,8 +755,392 @@ const spanish = {
|
|
|
567
755
|
Cerrá con un veredicto de un párrafo: sano / degradado / en problemas, y la próxima acción más útil.`,
|
|
568
756
|
"prompt.rollback": `Algo está mal — revertí {app} ya mismo: encontrá su rollout activo, corré application_deployment_update action:"rollback" y confirmá con application_get que la versión anterior está sirviendo tráfico; resumí qué se revirtió.`,
|
|
569
757
|
};
|
|
570
|
-
const
|
|
571
|
-
|
|
758
|
+
const portuguese = {
|
|
759
|
+
// — resolution (which app?) —
|
|
760
|
+
"resolve.ambiguous": "Várias aplicações coincidem — diga qual (nome ou `#id`):",
|
|
761
|
+
"resolve.noId": "Nenhuma aplicação com id {id}.",
|
|
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 rode application_create para vinculá-lo.',
|
|
764
|
+
"resolve.noInput": 'Nenhuma app informada e nenhum remote git encontrado no workspace. Passe app:"<nome>" (ou um id como "#123").',
|
|
765
|
+
"resolve.noNrn": "Não consigo resolver o NRN da aplicação para **{app}**.",
|
|
766
|
+
// — scope selection —
|
|
767
|
+
"scope.which": "Qual scope?",
|
|
768
|
+
"scope.none": "Esta app ainda não tem scopes.",
|
|
769
|
+
"scope.noneHint": '`application_scope_create name:"dev"` primeiro — depois `application_deployment_create`.',
|
|
770
|
+
"scope.noMatch": 'Nenhum scope correspondente a "{wanted}". Scopes: {names}.',
|
|
771
|
+
"scope.noMatchDetailed": 'Nenhum scope correspondente a "{wanted}" (por nome ou dimensão). Scopes:',
|
|
772
|
+
"scope.createHint": '`application_scope_create name:"{name}"` para criá-lo.',
|
|
773
|
+
"scope.deployHint": '`application_deployment_create scope:"<nome ou dimensão, ex. environment=production>"`',
|
|
774
|
+
"scope.perScope": "{noun} são por scope — qual?",
|
|
775
|
+
"scope.readHint": '`{tool} scope:"{name}"`',
|
|
776
|
+
// — table headers —
|
|
777
|
+
"header.app": "App",
|
|
778
|
+
"header.id": "Id",
|
|
779
|
+
"header.namespace": "Namespace",
|
|
780
|
+
"header.account": "Conta",
|
|
781
|
+
"header.status": "Status",
|
|
782
|
+
"header.scope": "Scope",
|
|
783
|
+
"header.dimensions": "Dimensões",
|
|
784
|
+
"header.name": "Nome",
|
|
785
|
+
"header.variable": "Variável",
|
|
786
|
+
"header.type": "Tipo",
|
|
787
|
+
"header.secret": "Secret",
|
|
788
|
+
"header.value": "Valor",
|
|
789
|
+
"header.values": "Valores",
|
|
790
|
+
"header.source": "Origem",
|
|
791
|
+
"header.metric": "Métrica",
|
|
792
|
+
"header.now": "Agora",
|
|
793
|
+
"header.avg": "Méd",
|
|
794
|
+
"header.max": "Máx",
|
|
795
|
+
"header.trend": "Tendência",
|
|
796
|
+
"header.asset": "Asset",
|
|
797
|
+
"header.platform": "Plataforma",
|
|
798
|
+
"header.deployment": "Deployment",
|
|
799
|
+
"header.provider": "Provider",
|
|
800
|
+
"header.live": "No ar",
|
|
801
|
+
"header.traffic": "Tráfego",
|
|
802
|
+
"header.when": "Quando",
|
|
803
|
+
"header.version": "Versão",
|
|
804
|
+
"header.build": "Build",
|
|
805
|
+
"header.release": "Release",
|
|
806
|
+
// — markdown design language —
|
|
807
|
+
"md.next": "Próximo",
|
|
808
|
+
"md.none": "_nenhum_",
|
|
809
|
+
"md.justNow": "agora mesmo",
|
|
810
|
+
"md.minutesAgo": "há {count}m",
|
|
811
|
+
"md.hoursAgo": "há {count}h",
|
|
812
|
+
"md.daysAgo": "há {count}d",
|
|
813
|
+
"md.dashboard": "dashboard",
|
|
814
|
+
"md.unknown": "desconhecido",
|
|
815
|
+
// — platform status words (fallback: raw status with underscores spaced) —
|
|
816
|
+
"status.active": "ativo",
|
|
817
|
+
"status.successful": "bem-sucedido",
|
|
818
|
+
"status.finalized": "finalizado",
|
|
819
|
+
"status.running": "em execução",
|
|
820
|
+
"status.pending": "pendente",
|
|
821
|
+
"status.creating": "criando",
|
|
822
|
+
"status.updating": "atualizando",
|
|
823
|
+
"status.building": "em build",
|
|
824
|
+
"status.waiting_for_instances": "aguardando instâncias",
|
|
825
|
+
"status.switching_traffic": "trocando tráfego",
|
|
826
|
+
"status.finalizing": "finalizando",
|
|
827
|
+
"status.cancelling": "cancelando",
|
|
828
|
+
"status.rolling_back": "revertendo",
|
|
829
|
+
"status.creating_approval": "aguardando aprovação",
|
|
830
|
+
"status.failed": "falhou",
|
|
831
|
+
"status.cancelled": "cancelado",
|
|
832
|
+
"status.rolled_back": "revertido",
|
|
833
|
+
"status.deleted": "deletado",
|
|
834
|
+
"status.inactive": "inativo",
|
|
835
|
+
"status.creating_approval_denied": "aprovação negada",
|
|
836
|
+
// — status view —
|
|
837
|
+
"render.noScopes": "_Ainda sem scopes — nada para fazer deploy._",
|
|
838
|
+
"render.nothingDeployed": "_nada em deploy_",
|
|
839
|
+
"render.noBuilds": "_nenhum — faça push para o CI_",
|
|
840
|
+
"render.latestBuild": "Último build",
|
|
841
|
+
"render.releases": "Releases",
|
|
842
|
+
"render.liveOn": "no ar em {scopes}",
|
|
843
|
+
"render.deployment": "**Deployment**",
|
|
844
|
+
"render.deploying": "🚀 **Fazendo deploy**",
|
|
845
|
+
"render.release": "Release",
|
|
846
|
+
"render.started": "iniciado {when}",
|
|
847
|
+
"render.now": "agora",
|
|
848
|
+
"render.desired": "→ desejado {pct}%",
|
|
849
|
+
// — next-step hints (status) —
|
|
850
|
+
"hint.rolloutTraffic": 'deployment #{id} em **{scope}** está com {traffic}% de tráfego — `application_deployment_update percent:<n>` para avançar, `application_deployment_update action:"finalize"` quando pronto, `application_deployment_update action:"rollback"` para reverter.',
|
|
851
|
+
"hint.rolloutStatus": "deployment #{id} em **{scope}** está {status} — `application_get deployment:{id}` para acompanhar.",
|
|
852
|
+
"hint.noScopes": 'ainda sem scopes — `application_scope_create name:"dev"` para ter onde fazer deploy.',
|
|
853
|
+
"hint.buildNewer": "build #{id} ({branch} @{commit}) é mais novo que a release {semver} — `application_deployment_create` faz o deploy (cria a release para você).",
|
|
854
|
+
"hint.buildUnreleased": "build #{id} ainda não tem release — `application_deployment_create` faz o deploy (cria a release para você).",
|
|
855
|
+
"hint.releaseNotLive": "a release {semver} ainda não está no ar — `application_deployment_create` para publicá-la.",
|
|
856
|
+
"hint.noBuilds": "ainda sem builds — faça push de um commit para o CI gerar um, depois `application_deployment_create`.",
|
|
857
|
+
"hint.upToDate": "está tudo atualizado ✅",
|
|
858
|
+
"hint.watch": "`application_get deployment:{id}` para acompanhar.",
|
|
859
|
+
// — next-step hints (rollout) —
|
|
860
|
+
"rollout.full": 'todo o tráfego na nova versão — `application_deployment_update action:"finalize"` para aposentar a antiga.',
|
|
861
|
+
"rollout.moving": "tráfego indo de {from}% → {to}% — `application_get deployment:{id}` para acompanhar.",
|
|
862
|
+
"rollout.at": 'tráfego em {traffic}% — `application_deployment_update percent:<n>` para avançar (marcas: 1,5,10,25,50,75,90,95,99,100), `application_deployment_update action:"rollback"` para reverter.',
|
|
863
|
+
"rollout.instances": "as instâncias estão subindo — `application_get deployment:{id}` para acompanhar.",
|
|
864
|
+
"rollout.switching": "o tráfego está sendo trocado — `application_get deployment:{id}` para acompanhar.",
|
|
865
|
+
"rollout.finalizing": "finalizando — as instâncias antigas estão sendo aposentadas.",
|
|
866
|
+
"rollout.done": "pronto — a release está totalmente no ar ✅",
|
|
867
|
+
"rollout.approval": "aguardando uma aprovação ✋ — um aprovador precisa liberar este deployment (dashboard → Aprovações).",
|
|
868
|
+
"rollout.failed": 'o deployment falhou — `application_log_list` para ver a saída, `application_deployment_update action:"rollback"` se o tráfego se moveu.',
|
|
869
|
+
"rollout.rolledBack": "revertido — a versão anterior está atendendo todo o tráfego.",
|
|
870
|
+
// — application_get tool —
|
|
871
|
+
"status.errorLabel": "Não foi possível carregar o status",
|
|
872
|
+
// — application_list tool —
|
|
873
|
+
"findApps.noneMatching": "Nenhuma aplicação{matching}{inNamespace}.",
|
|
874
|
+
"findApps.matching": ' correspondente a "{query}"',
|
|
875
|
+
"findApps.inNamespace": ' nos namespaces ~"{namespace}"',
|
|
876
|
+
"findApps.createHint": "`application_create` vincula este repositório como uma nova aplicação.",
|
|
877
|
+
"findApps.count.one": "1 aplicação",
|
|
878
|
+
"findApps.count.many": "{count} aplicações",
|
|
879
|
+
"findApps.statusHint": '`application_get app:"<nome>"` para o panorama completo de uma.',
|
|
880
|
+
"findApps.truncated": "Mostrando as primeiras {shown} — refine com uma query ou namespace para ver o resto.",
|
|
881
|
+
"findApps.errorLabel": "Busca falhou",
|
|
882
|
+
// — application_parameter_list tool —
|
|
883
|
+
"params.unavailable": "A listagem de parâmetros não está disponível aqui. `application_parameter_create` ainda funciona.",
|
|
884
|
+
"params.viewInDashboard": "ver no dashboard",
|
|
885
|
+
"params.none": "**{app}** não tem parâmetros.",
|
|
886
|
+
"params.noneHint": "`application_parameter_create` para adicionar variáveis de ambiente ou arquivos.",
|
|
887
|
+
"params.count.one": "**{app}** · 1 parâmetro",
|
|
888
|
+
"params.count.many": "**{app}** · {count} parâmetros",
|
|
889
|
+
"params.unset": "_não definido_",
|
|
890
|
+
"params.applyHint": "valores alterados aplicam no próximo `application_deployment_create`.",
|
|
891
|
+
"params.effectiveFor": "**{app}** · parâmetros efetivos para **{scope}**",
|
|
892
|
+
"params.ctxApplication": "Aplicação",
|
|
893
|
+
"params.ctxScope": "{scope} (scope)",
|
|
894
|
+
"params.errorLabel": "Não foi possível listar os parâmetros",
|
|
895
|
+
// — application_log_list tool —
|
|
896
|
+
"logs.noun": "Logs",
|
|
897
|
+
"logs.noScopes": "**{app}** não tem scopes, então ainda não há logs de runtime.",
|
|
898
|
+
"logs.noScopesHint": "`application_deployment_create` depois de criar um scope — os logs aparecem quando algo roda.",
|
|
899
|
+
"logs.empty": "Nenhuma linha de log retornada para **{app}**{scope}.",
|
|
900
|
+
"logs.openInDashboard": "abrir logs no dashboard",
|
|
901
|
+
"logs.lastLines.one": "**{app}**{scope} — última linha",
|
|
902
|
+
"logs.lastLines.many": "**{app}**{scope} — últimas {count} linhas",
|
|
903
|
+
"logs.errorLabel": "Não foi possível ler os logs",
|
|
904
|
+
"logs.errorSuffix": "A visão de Logs do dashboard ainda pode tê-los.",
|
|
905
|
+
// — application_metric_list tool —
|
|
906
|
+
"metrics.noun": "Métricas",
|
|
907
|
+
"metrics.noScopes": "**{app}** não tem scopes, então ainda não há métricas de runtime.",
|
|
908
|
+
"metrics.noScopesHint": "`application_deployment_create` depois de criar um scope.",
|
|
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
|
+
"metrics.openInDashboard": "performance no dashboard",
|
|
911
|
+
"metrics.title": "**{app}** · {scope} — últimos {window}",
|
|
912
|
+
"metrics.errorLabel": "Não foi possível carregar as métricas",
|
|
913
|
+
// — application_build_list tool —
|
|
914
|
+
"builds.title.one": "**{app}** · 1 build recente",
|
|
915
|
+
"builds.title.many": "**{app}** · {count} builds recentes",
|
|
916
|
+
"builds.branch": "Branch",
|
|
917
|
+
"builds.commit": "Commit",
|
|
918
|
+
"builds.released": "Com release",
|
|
919
|
+
"builds.none": "**{app}** ainda não tem builds.",
|
|
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 `application_deployment_create`.",
|
|
922
|
+
"builds.deployHint": "`application_deployment_create build_id:{build}` faz o deploy (corta a release para você).",
|
|
923
|
+
"builds.waiting": "o build #{build} ainda está rodando — `application_build_list` de novo em instantes para checar.",
|
|
924
|
+
"builds.upToDate": "o último build bem-sucedido já tem release.",
|
|
925
|
+
"builds.assetsTitle": "Assets do build #{build}",
|
|
926
|
+
"builds.noAssets": "O build #{build} não tem assets.",
|
|
927
|
+
"builds.noAssetsRunning": "O build #{build} ainda não tem assets — ainda está buildando.",
|
|
928
|
+
"builds.noAssetsFailed": "O build #{build} falhou antes de produzir qualquer asset.",
|
|
929
|
+
"builds.errorLabel": "Não foi possível listar os builds",
|
|
930
|
+
"releaseList.title.one": "**{app}** · 1 release",
|
|
931
|
+
"releaseList.title.many": "**{app}** · {count} releases",
|
|
932
|
+
"releaseList.none": "**{app}** ainda não tem releases.",
|
|
933
|
+
"releaseList.noneHint": "corte uma a partir de um build bem-sucedido com `application_release_create`, ou simplesmente `application_deployment_create`.",
|
|
934
|
+
"releaseList.deployHint": 'faça deploy de uma release ativa com `application_deployment_create version:"x.y.z"`.',
|
|
935
|
+
"releaseList.errorLabel": "Não foi possível listar as releases",
|
|
936
|
+
"deploymentList.title.one": "**{app}** · 1 deployment",
|
|
937
|
+
"deploymentList.title.many": "**{app}** · {count} deployments",
|
|
938
|
+
"deploymentList.none": "**{app}** ainda não tem deployments.",
|
|
939
|
+
"deploymentList.group": "{count} scopes (grupo)",
|
|
940
|
+
"deploymentList.hint": "`application_get` para o panorama ao vivo, ou `application_deployment_update` para conduzir um rollout.",
|
|
941
|
+
"deploymentList.errorLabel": "Não foi possível listar os deployments",
|
|
942
|
+
// — organization_get tool —
|
|
943
|
+
"overview.title.one": "Visão geral da organização · 1 aplicação escaneada",
|
|
944
|
+
"overview.title.many": "Visão geral da organização · {count} aplicações escaneadas",
|
|
945
|
+
"overview.truncated": '_(mostrando as primeiras {count} — refine com `organization_get query:"..."`)_',
|
|
946
|
+
"overview.activeRollouts": "Rollouts ativos ({count})",
|
|
947
|
+
"overview.trouble": "Precisa de atenção ({count})",
|
|
948
|
+
"overview.hintActive": '`application_get app:"{app}"` para acompanhar um rollout, ou `application_deployment_update` para conduzir um.',
|
|
949
|
+
"overview.hintTrouble": '`application_log_list app:"{app}"` para investigar, `application_deployment_update action:"rollback"` se necessário.',
|
|
950
|
+
"overview.hintCalm": "está tudo estável — nada em rollout, nada falhou.",
|
|
951
|
+
"overview.errorLabel": "Não foi possível montar a visão geral",
|
|
952
|
+
// — application_approval_list tool —
|
|
953
|
+
"approvals.title.one": "**{app}** · 1 aprovação",
|
|
954
|
+
"approvals.title.many": "**{app}** · {count} aprovações",
|
|
955
|
+
"approvals.action": "Ação",
|
|
956
|
+
"approvals.entity": "Entidade",
|
|
957
|
+
"approvals.requestedBy": "Solicitado por",
|
|
958
|
+
"approvals.none": "Nenhuma aprovação pendente para **{app}**.",
|
|
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 do `application_approval_list`.",
|
|
961
|
+
"approvals.approved": "Aprovado {id} — a ação bloqueada pode prosseguir.",
|
|
962
|
+
"approvals.cancelled": "Aprovação {id} cancelada.",
|
|
963
|
+
"approvals.actHint": '`application_approval_list action:"approve" approval_id:"{id}"` para liberá-la (usa suas permissões).',
|
|
964
|
+
"approvals.errorLabel": "Não foi possível carregar as aprovações",
|
|
965
|
+
// — application_service_list tool —
|
|
966
|
+
"services.attached.one": "**{app}** · 1 serviço de dependência",
|
|
967
|
+
"services.attached.many": "**{app}** · {count} serviços de dependência",
|
|
968
|
+
"services.specification": "Tipo",
|
|
969
|
+
"services.none": "**{app}** não tem serviços de dependência anexados.",
|
|
970
|
+
"services.catalog": "Disponíveis para provisionar: {catalog}.",
|
|
971
|
+
"services.provisionHint": "provisionar uma dependência é um fluxo guiado — crie uma no dashboard.",
|
|
972
|
+
"services.errorLabel": "Não foi possível carregar os serviços",
|
|
973
|
+
// — application_service_create tool —
|
|
974
|
+
"createService.errorLabel": "Não foi possível provisionar o serviço",
|
|
975
|
+
"createService.noSpecs": "**{app}** não tem tipos de dependência disponíveis para provisionar aqui.",
|
|
976
|
+
"createService.pickSpec": "**{app}** — qual dependência provisionar? ({count} disponíveis)",
|
|
977
|
+
"createService.matchAmbiguous": 'Várias dependências coincidem com "{query}" — escolha uma:',
|
|
978
|
+
"createService.category": "Categoria",
|
|
979
|
+
"createService.provider": "Provider",
|
|
980
|
+
"createService.pickHint": '`application_service_create type:"<nome>"` para provisionar uma.',
|
|
981
|
+
"createService.form": "Pronto para provisionar **{spec}** para **{app}** — confirme para criar (isso cria recursos cloud reais).",
|
|
982
|
+
"createService.formHint": "confirme no painel para provisionar, ou passe `provision:true` com os parâmetros.",
|
|
983
|
+
"createService.provisioning": "Provisionando **{spec}** como **{name}** — {status}. Recursos reais estão sendo criados.",
|
|
984
|
+
"createService.reused": "**{name}** já existe ({status}) — reusando, não provisionando um segundo.",
|
|
985
|
+
"createService.provisioningHint": "`application_link_create` para linkar **{name}** a um scope — seus parâmetros de conexão aparecem após o link, no próximo deploy.",
|
|
986
|
+
// — application_link_create tool —
|
|
987
|
+
"createLink.errorLabel": "Não foi possível criar o link",
|
|
988
|
+
"createLink.noServices": "**{app}** ainda não tem serviços provisionados para linkar.",
|
|
989
|
+
"createLink.noServicesHint": "`application_service_create` para provisionar uma dependência primeiro.",
|
|
990
|
+
"createLink.pickService": "Qual serviço linkar a **{app}**?",
|
|
991
|
+
"createLink.matchAmbiguous": "Vários serviços coincidem — escolha um:",
|
|
992
|
+
"createLink.pickHint": '`application_link_create service:"<nome>"` para linkar um.',
|
|
993
|
+
"createLink.noLinkSpec": "Nenhuma link specification disponível para **{service}** nesta org.",
|
|
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
|
+
"createLink.formHint": "confirme no painel para criar o link, ou passe `create:true` com os parâmetros.",
|
|
996
|
+
"createLink.linking": "Linkando **{service}** a {target} — {status}.",
|
|
997
|
+
"createLink.reused": "**{service}** já está linkado a {target} ({status}) — reusando esse link.",
|
|
998
|
+
"createLink.linkedHint": "refaça o deploy do scope para que os novos parâmetros de conexão cheguem ao runtime.",
|
|
999
|
+
// — application_service_update / application_link_update (run a custom action) —
|
|
1000
|
+
"runAction.errorLabel": "Não foi possível rodar a ação",
|
|
1001
|
+
"runAction.noServices": "**{app}** não tem serviços provisionados para rodar uma ação.",
|
|
1002
|
+
"runAction.noServicesHint": "`application_service_create` para provisionar uma dependência primeiro.",
|
|
1003
|
+
"runAction.noLinks": "**{app}** não tem links para rodar uma ação.",
|
|
1004
|
+
"runAction.noLinksHint": "`application_link_create` para linkar um serviço primeiro.",
|
|
1005
|
+
"runAction.pickService": "Em qual serviço rodar uma ação, em **{app}**?",
|
|
1006
|
+
"runAction.serviceAmbiguous": "Vários serviços coincidem — escolha um:",
|
|
1007
|
+
"runAction.pickServiceHint": '`application_service_update service:"<nome>"` para escolher um.',
|
|
1008
|
+
"runAction.pickLink": "Em qual link rodar uma ação, em **{app}**?",
|
|
1009
|
+
"runAction.linkAmbiguous": "Vários links coincidem — escolha um:",
|
|
1010
|
+
"runAction.pickLinkHint": '`application_link_update link:"<nome>"` para escolher um.',
|
|
1011
|
+
"runAction.noActions": "**{name}** não expõe ações executáveis.",
|
|
1012
|
+
"runAction.pickAction": "Qual ação rodar em **{name}**?",
|
|
1013
|
+
"runAction.matchAmbiguous": "Várias ações coincidem — escolha uma:",
|
|
1014
|
+
"runAction.paramsHeader": "Parâmetros",
|
|
1015
|
+
"runAction.pickHint": 'Passe `action:"<nome>"` para escolher uma.',
|
|
1016
|
+
"runAction.form": "Pronto para rodar **{action}** em **{name}** — confirme para executar.",
|
|
1017
|
+
"runAction.formHint": "confirme no painel para executar, ou passe `run:true` com os parâmetros.",
|
|
1018
|
+
"runAction.running": "Rodando **{action}** em **{name}** — {status}.",
|
|
1019
|
+
"runAction.ranHint": "a ação roda de forma assíncrona; seu resultado aparece quando termina.",
|
|
1020
|
+
// — application_service_delete / application_link_delete (deprovision) —
|
|
1021
|
+
"deleteEntity.serviceErrorLabel": "Não foi possível deletar o serviço",
|
|
1022
|
+
"deleteEntity.linkErrorLabel": "Não foi possível deletar o link",
|
|
1023
|
+
"deleteEntity.noServices": "**{app}** não tem serviços provisionados para deletar.",
|
|
1024
|
+
"deleteEntity.noLinks": "**{app}** não tem links para deletar.",
|
|
1025
|
+
"deleteEntity.pickService": "Qual serviço deletar, em **{app}**?",
|
|
1026
|
+
"deleteEntity.serviceAmbiguous": "Vários serviços coincidem — escolha um:",
|
|
1027
|
+
"deleteEntity.pickServiceHint": '`application_service_delete service:"<nome>"` para escolher um.',
|
|
1028
|
+
"deleteEntity.pickLink": "Qual link deletar, em **{app}**?",
|
|
1029
|
+
"deleteEntity.linkAmbiguous": "Vários links coincidem — escolha um:",
|
|
1030
|
+
"deleteEntity.pickLinkHint": '`application_link_delete link:"<nome>"` para escolher um.',
|
|
1031
|
+
"deleteEntity.hasLinks": "**{name}** ainda tem {count} link(s) ativo(s) — ficariam órfãos.",
|
|
1032
|
+
"deleteEntity.hasLinksHint": "delete os links primeiro com `application_link_delete`, depois o serviço.",
|
|
1033
|
+
"deleteEntity.confirm": "Pronto para deletar **{name}** e destruir seus recursos — confirme para prosseguir.",
|
|
1034
|
+
"deleteEntity.confirmHint": "confirme no painel para deletar, ou passe `confirm:true`.",
|
|
1035
|
+
"deleteEntity.removed": "**{name}** foi deletado.",
|
|
1036
|
+
"deleteEntity.deprovisioning": "Deletando **{name}** — um agente está desprovisionando seus recursos.",
|
|
1037
|
+
"deleteEntity.deprovisioningHint": "o registro é removido quando o desprovisionamento termina.",
|
|
1038
|
+
// — application_parameter_delete tool —
|
|
1039
|
+
"deleteParam.errorLabel": "Não foi possível deletar o parâmetro",
|
|
1040
|
+
"deleteParam.absent": "**{name}** não está definido em **{app}** — nada para deletar.",
|
|
1041
|
+
"deleteParam.readOnly": "**{name}** é somente leitura — um link de serviço o injeta.",
|
|
1042
|
+
"deleteParam.readOnlyHint": "delete o link que o exporta com `application_link_delete`.",
|
|
1043
|
+
"deleteParam.confirm": "Pronto para deletar **{name}** de **{app}** — confirme para prosseguir.",
|
|
1044
|
+
"deleteParam.confirmHint": "confirme no painel para deletar, ou passe `confirm:true`.",
|
|
1045
|
+
"deleteParam.deleted": "Deletei **{name}** de **{app}**.",
|
|
1046
|
+
"deleteParam.deletedHint": "a mudança aplica no próximo deploy.",
|
|
1047
|
+
"deleteParam.failed": "Não foi possível deletar **{name}**: {message}",
|
|
1048
|
+
// — application_deployment_create tool —
|
|
1049
|
+
"deploy.noScopeTypes": "Esta app ainda não tem scopes. Tipos de scope disponíveis: {types}.",
|
|
1050
|
+
"deploy.createScopeHint": '`application_scope_create name:"dev" type:"{type}"`',
|
|
1051
|
+
"deploy.usingRelease": "Usando a release existente **{semver}** (#{id}). ",
|
|
1052
|
+
"deploy.createdRelease": "Criei a release **{semver}** a partir do build #{build}. ",
|
|
1053
|
+
"deploy.createdReleaseFrom": "Criei a release **{semver}** a partir do build #{build} ({branch} @{commit}). ",
|
|
1054
|
+
"deploy.noSuchVersion": "Não existe a release **{version}**{known} e não há build bem-sucedido para cortá-la.",
|
|
1055
|
+
"deploy.knownVersions": " (conhecidas: {versions})",
|
|
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 `application_deployment_create` de novo.",
|
|
1058
|
+
"deploy.multiAsset": "O build #{build} tem vários assets — qual vai para **{scope}** ({type})?",
|
|
1059
|
+
"deploy.assetHint": '`application_deployment_create asset:"{name}"`',
|
|
1060
|
+
"deploy.errorLabel": "Deploy falhou",
|
|
1061
|
+
"deploy.alreadyRolling": "Esta release já está em rollout em **{scope}** — mostrando esse deployment.",
|
|
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 com `application_deployment_create asset:"<nome>"` (veja-os via `application_get`).',
|
|
1063
|
+
// — application_deployment_update tool —
|
|
1064
|
+
"traffic.sayWhat": 'Diga o que fazer: `percent:<0-100>`, `action:"finalize"` ou `action:"rollback"`.',
|
|
1065
|
+
"traffic.noActive": "Nenhum rollout ativo em **{app}** — `application_deployment_create` inicia um.",
|
|
1066
|
+
"traffic.several": "Vários rollouts estão ativos — passe deployment_id:",
|
|
1067
|
+
"traffic.snapped": "({requested}% ajustado para {snapped}%)",
|
|
1068
|
+
"traffic.errorLabel": "Ação de tráfego falhou",
|
|
1069
|
+
// — application_release_create tool —
|
|
1070
|
+
"createRelease.noBuilds": "Nenhum build bem-sucedido em **{app}** — faça push de um commit para o CI gerar um.",
|
|
1071
|
+
"createRelease.done": "Release **{semver}** criada{from}.",
|
|
1072
|
+
"createRelease.exists": "A release **{semver}** já existe para o build #{build} — reusando.",
|
|
1073
|
+
"createRelease.from": " a partir do build #{build} ({branch} @{commit}, {when})",
|
|
1074
|
+
"createRelease.deployHint": "`application_deployment_create release_id:{id}` para fazer o deploy.",
|
|
1075
|
+
"createRelease.errorLabel": "Não foi possível criar a release",
|
|
1076
|
+
// — application_parameter_create tool —
|
|
1077
|
+
"setParams.created.one": "Defini 1 novo parâmetro em **{app}**: {names}.",
|
|
1078
|
+
"setParams.created.many": "Defini {count} novos parâmetros em **{app}**: {names}.",
|
|
1079
|
+
"setParams.updated.one": "Atualizei 1 parâmetro existente em **{app}**: {names}.",
|
|
1080
|
+
"setParams.updated.many": "Atualizei {count} parâmetros existentes em **{app}**: {names}.",
|
|
1081
|
+
"setParams.mixed": "Defini {total} parâmetros em **{app}** (novos: {created}, atualizados: {updated}): {names}.",
|
|
1082
|
+
"setParams.applyHint": "os valores aplicam no próximo `application_deployment_create`.",
|
|
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 — `application_parameter_list` para inspecionar.",
|
|
1085
|
+
"setParams.errorLabel": "Atualização de parâmetros falhou",
|
|
1086
|
+
// — application_create tool —
|
|
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}.",
|
|
1088
|
+
"createApp.noName": "Não consegui derivar um nome de {url} — passe name.",
|
|
1089
|
+
"createApp.noNamespaceMatch": 'Nenhum namespace correspondente a "{namespace}". Namespaces: {names}.',
|
|
1090
|
+
"createApp.noAccountMatch": 'Nenhuma conta correspondente a "{account}". Contas: {names}.',
|
|
1091
|
+
"createApp.whichNamespace": "Qual namespace?",
|
|
1092
|
+
"createApp.whichNamespaceFor": "Qual namespace deve conter **{name}**?",
|
|
1093
|
+
"createApp.namespaceHint": '`application_create namespace:"<nome>"`',
|
|
1094
|
+
"createApp.noNamespaces": "Esta organização ainda não tem namespaces — crie um no dashboard primeiro.",
|
|
1095
|
+
"createApp.created": "**{name}** criada (#{id}) no namespace **{namespace}**, vinculada a {repo}.",
|
|
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 `application_deployment_create`.",
|
|
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 `application_deployment_create`.",
|
|
1099
|
+
"createApp.pending": "⏳ **{name}** criada (#{id}), o provisionamento ainda está rodando (status: {status}).",
|
|
1100
|
+
"createApp.pendingHint": '`application_get app:"#{id}"` para checá-la.',
|
|
1101
|
+
"createApp.errorLabel": "Não foi possível criar a aplicação",
|
|
1102
|
+
// — playbook_get tool —
|
|
1103
|
+
"playbook.errorLabel": "Não foi possível carregar o playbook",
|
|
1104
|
+
// — application_scope_create tool —
|
|
1105
|
+
"createScope.whichType": "Qual tipo de scope para **{name}**?",
|
|
1106
|
+
"createScope.typeHint": '`application_scope_create name:"{name}" type:"<tipo>"`',
|
|
1107
|
+
"createScope.noTypes": 'Nenhum tipo de scope disponível — passe type explicitamente (ex. type:"web_pool").',
|
|
1108
|
+
"createScope.provisioning": "⏳ O scope **{name}** (#{id}, {type}{dimensions}) está provisionando — a infraestrutura está sendo criada.",
|
|
1109
|
+
"createScope.exists": "O scope **{name}** (#{id}) já existe ({status}) — nada para criar.",
|
|
1110
|
+
"createScope.provisioningHint": '`application_get` o mostra; quando ativo, `application_deployment_create scope:"{name}"`.',
|
|
1111
|
+
"createScope.errorLabel": "Não foi possível criar o scope",
|
|
1112
|
+
// — auth & transport —
|
|
1113
|
+
"error.credentialRejected": "nullplatform rejeitou a credencial ({status}) — verifique sua NP_API_KEY",
|
|
1114
|
+
"error.permission": "seu usuário nullplatform não tem permissão para esta ação (403)",
|
|
1115
|
+
"error.bearerNoOrg": "o bearer não é um token emitido pela nullplatform (sem claim de organização)",
|
|
1116
|
+
"http.authRequired": "autenticação necessária",
|
|
1117
|
+
"http.authHint": "envie sua própria credencial nullplatform: `Authorization: Bearer <NP_API_KEY>` (ou X-NP-API-Key)",
|
|
1118
|
+
"http.originDenied": "origem não permitida",
|
|
1119
|
+
"http.bodyTooLarge": "corpo da requisição muito grande",
|
|
1120
|
+
"http.invalidJson": "corpo JSON inválido",
|
|
1121
|
+
"http.verifyUnavailable": "não foi possível verificar a credencial com a nullplatform",
|
|
1122
|
+
"http.rateLimited": "requisições demais — diminua o ritmo",
|
|
1123
|
+
// — prompts (inserted as the user's message) —
|
|
1124
|
+
"prompt.ship": `Faça o deploy do código mais recente de {app}{scope}.
|
|
1125
|
+
1. Rode o status primeiro e me diga o que vai ser publicado (build/release).
|
|
1126
|
+
2. faça o deploy.
|
|
1127
|
+
3. Aumente o tráfego em etapas — 25%, depois 50%, depois 100% — checando o status entre as etapas; pare e me avise se algo parecer não saudável.
|
|
1128
|
+
4. Quando 100% estiver saudável, finalize e confirme com um status final.`,
|
|
1129
|
+
"prompt.ship.toScope": ' para o scope "{scope}"',
|
|
1130
|
+
"prompt.thisRepoApp": "a aplicação vinculada a este repositório",
|
|
1131
|
+
"prompt.setup": `Conecte este repositório à nullplatform:
|
|
1132
|
+
1. Rode application_get — se o repositório já estiver vinculado a uma aplicação, apenas me mostre onde estou.
|
|
1133
|
+
2. Se não estiver vinculado, verifique application_list por uma app com o nome deste repositório antes de criar qualquer coisa.
|
|
1134
|
+
3. Se nenhuma existir, application_create para vinculá-lo, depois mostre application_get e me diga o que acontece a seguir (primeiro build via CI, depois deploy).`,
|
|
1135
|
+
"prompt.health": `Me dê um health check de {app}:
|
|
1136
|
+
1. status — o que está no ar e onde, algo em rollout?
|
|
1137
|
+
2. métricas (janela de 3h) — aponte qualquer coisa incomum em throughput, tempo de resposta, taxa de erro, CPU ou memória.
|
|
1138
|
+
3. logs — escaneie as linhas recentes por erros ou avisos.
|
|
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, rode application_deployment_update action:"rollback", depois confirme com application_get que a versão anterior está atendendo o tráfego e resuma o que foi revertido.`,
|
|
1141
|
+
};
|
|
1142
|
+
const catalogs = { en: english, es: spanish, pt: portuguese };
|
|
1143
|
+
const SUPPORTED = ["en", "es", "pt"];
|
|
572
1144
|
let defaultLocale = "en";
|
|
573
1145
|
const localeScope = new AsyncLocalStorage();
|
|
574
1146
|
/** Process-wide default (stdio: from NP_LANG/LANG at startup). */
|
|
@@ -591,6 +1163,9 @@ const LANGUAGE_NAMES = {
|
|
|
591
1163
|
español: "es",
|
|
592
1164
|
espanol: "es",
|
|
593
1165
|
castellano: "es",
|
|
1166
|
+
portuguese: "pt",
|
|
1167
|
+
português: "pt",
|
|
1168
|
+
portugues: "pt",
|
|
594
1169
|
};
|
|
595
1170
|
/** "es-AR, en;q=0.9" / "es_AR.UTF-8" / "es" / "Spanish" -> a supported locale, or undefined. */
|
|
596
1171
|
export function matchLocale(input) {
|