@cat-factory/app 0.198.1 → 0.200.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -1
- package/app/components/foundational/FoundationalContractSummary.vue +36 -0
- package/app/components/foundational/FoundationalServiceCatalogList.vue +170 -0
- package/app/components/foundational/FoundationalServiceManager.vue +111 -0
- package/app/components/foundational/FoundationalServicePanel.vue +37 -0
- package/app/components/foundational/FoundationalServiceRegistry.vue +339 -0
- package/app/components/foundational/FoundationalServiceSources.vue +398 -0
- package/app/components/foundational/FoundationalSuppressions.vue +75 -0
- package/app/components/layout/AccountFoundationalSettings.vue +25 -0
- package/app/components/layout/BoardToolbar.vue +1 -1
- package/app/components/layout/CommandBar.vue +8 -2
- package/app/components/layout/SideBar.vue +24 -3
- package/app/components/settings/AccountSettingsPanel.vue +17 -1
- package/app/components/settings/WorkspaceMetadataSettings.vue +151 -0
- package/app/components/settings/WorkspaceSettingsPanel.vue +27 -0
- package/app/composables/api/foundationalServices.ts +131 -0
- package/app/composables/useApi.ts +2 -0
- package/app/composables/useNavContributions.ts +92 -1
- package/app/composables/usePipelineErrorToast.ts +4 -0
- package/app/docs/consumer-extensions.md +76 -10
- package/app/modular/external-tools.spec.ts +281 -0
- package/app/modular/external-tools.ts +265 -0
- package/app/modular/nav-contributions.spec.ts +38 -14
- package/app/modular/nav-contributions.ts +58 -1
- package/app/modular/registry.ts +2 -0
- package/app/modular/slots.ts +15 -0
- package/app/modular/workspace-metadata.spec.ts +160 -0
- package/app/modular/workspace-metadata.ts +173 -0
- package/app/pages/index.vue +4 -0
- package/app/stores/foundationalServices.spec.ts +121 -0
- package/app/stores/foundationalServices.ts +276 -0
- package/app/stores/ui/modals.ts +12 -0
- package/app/stores/workspaceSettings.ts +3 -0
- package/app/types/domain.ts +2 -0
- package/app/types/foundationalServices.ts +32 -0
- package/i18n/locales/de.json +162 -6
- package/i18n/locales/en.json +162 -6
- package/i18n/locales/es.json +162 -6
- package/i18n/locales/fr.json +162 -6
- package/i18n/locales/he.json +162 -6
- package/i18n/locales/it.json +162 -6
- package/i18n/locales/ja.json +162 -6
- package/i18n/locales/pl.json +162 -6
- package/i18n/locales/tr.json +162 -6
- package/i18n/locales/uk.json +162 -6
- package/package.json +2 -2
package/i18n/locales/en.json
CHANGED
|
@@ -144,12 +144,14 @@
|
|
|
144
144
|
},
|
|
145
145
|
"workspaceContext": "Workspace context",
|
|
146
146
|
"contextFragments": "Context fragments",
|
|
147
|
+
"externalTools": "External tools",
|
|
147
148
|
"configuration": "Configuration",
|
|
148
149
|
"workspaceSettings": "Workspace settings",
|
|
149
150
|
"modelConfiguration": "Model configuration",
|
|
150
151
|
"accountSettings": "Account settings",
|
|
151
152
|
"operatorDashboard": "Platform observability",
|
|
152
|
-
"reports": "Reports"
|
|
153
|
+
"reports": "Reports",
|
|
154
|
+
"foundationalServices": "Foundational services"
|
|
153
155
|
},
|
|
154
156
|
"board": {
|
|
155
157
|
"toast": {
|
|
@@ -600,7 +602,8 @@
|
|
|
600
602
|
"pipeline_schedule_attached": "Recurring schedule uses this pipeline",
|
|
601
603
|
"pipeline_schedule_requires_recurring": "Recurring schedule needs this pipeline",
|
|
602
604
|
"pipeline_schedule_intake_unconfigured": "Schedule has no issue intake",
|
|
603
|
-
"foundational_service_exists": "Foundational service already exists"
|
|
605
|
+
"foundational_service_exists": "Foundational service already exists",
|
|
606
|
+
"foundational_service_not_inherited": "This board registered that service"
|
|
604
607
|
},
|
|
605
608
|
"description": {
|
|
606
609
|
"dependencies_unmet": "This task depends on others that aren't finished yet. Complete or unblock them, then start it again.",
|
|
@@ -632,7 +635,8 @@
|
|
|
632
635
|
"pipeline_schedule_attached": "A recurring schedule still points at this pipeline, and every run it starts resolves the pipeline by id. Detach or delete that schedule first, then remove the pipeline.",
|
|
633
636
|
"pipeline_schedule_requires_recurring": "A recurring schedule still points at this pipeline, so making it one-off only would break every future run it starts. Detach that schedule first.",
|
|
634
637
|
"pipeline_schedule_intake_unconfigured": "A bug intake step draws its work from the schedule issue intake settings, and the attached schedule has none. Configure issue intake on the schedule first.",
|
|
635
|
-
"foundational_service_exists": "A foundational service with this id is already registered at this scope. Open the existing entry and edit it — two services cannot share an id, because the id is what an architect names in its design."
|
|
638
|
+
"foundational_service_exists": "A foundational service with this id is already registered at this scope. Open the existing entry and edit it — two services cannot share an id, because the id is what an architect names in its design.",
|
|
639
|
+
"foundational_service_not_inherited": "Opting out applies to a service inherited from the account. This id is registered by this board, so there is nothing to opt out of - delete the board's own entry instead."
|
|
636
640
|
},
|
|
637
641
|
"action": {
|
|
638
642
|
"connectGitHub": "Connect GitHub",
|
|
@@ -2131,6 +2135,7 @@
|
|
|
2131
2135
|
"create": "Create",
|
|
2132
2136
|
"repositories": "Repositories",
|
|
2133
2137
|
"integrations": "Integrations",
|
|
2138
|
+
"externalTools": "External tools",
|
|
2134
2139
|
"workspace": "Workspace",
|
|
2135
2140
|
"account": "Account"
|
|
2136
2141
|
},
|
|
@@ -2157,7 +2162,8 @@
|
|
|
2157
2162
|
"shortcuts": "Keyboard shortcuts",
|
|
2158
2163
|
"bugHunt": "Bug hunt",
|
|
2159
2164
|
"toggleUiMode": "Switch interface mode",
|
|
2160
|
-
"tutorial": "Take a tour"
|
|
2165
|
+
"tutorial": "Take a tour",
|
|
2166
|
+
"foundationalServices": "Foundational services"
|
|
2161
2167
|
},
|
|
2162
2168
|
"keywords": {
|
|
2163
2169
|
"newPipeline": "pipeline agents chain",
|
|
@@ -2180,7 +2186,8 @@
|
|
|
2180
2186
|
"shortcuts": "keyboard shortcuts keys hotkeys cheatsheet help",
|
|
2181
2187
|
"bugHunt": "bug hunt triage backlog issue tracker unassigned",
|
|
2182
2188
|
"toggleUiMode": "interface mode basic advanced simple expert show hide",
|
|
2183
|
-
"tutorial": "tutorial onboarding tour guide help learn basics"
|
|
2189
|
+
"tutorial": "tutorial onboarding tour guide help learn basics",
|
|
2190
|
+
"foundationalServices": "shared capability platform service api contract openapi catalog"
|
|
2184
2191
|
}
|
|
2185
2192
|
},
|
|
2186
2193
|
"shortcuts": {
|
|
@@ -2340,6 +2347,9 @@
|
|
|
2340
2347
|
"title": "Pick a default test environment",
|
|
2341
2348
|
"body": "This board hasn't chosen how its services get a test environment. Pick a default and every service you add from now on starts with it, instead of being set up one at a time. You can still change it per service.",
|
|
2342
2349
|
"action": "Choose default"
|
|
2350
|
+
},
|
|
2351
|
+
"accountFoundational": {
|
|
2352
|
+
"intro": "The shared capabilities this organisation already runs - file storage, notifications, audit - with their API contracts. Every board inherits them, and an architect is told to consume them instead of proposing a rebuild."
|
|
2343
2353
|
}
|
|
2344
2354
|
},
|
|
2345
2355
|
"settings": {
|
|
@@ -2394,7 +2404,8 @@
|
|
|
2394
2404
|
"tabs": {
|
|
2395
2405
|
"team": "Team & access",
|
|
2396
2406
|
"fragments": "Context fragments",
|
|
2397
|
-
"skills": "Skills"
|
|
2407
|
+
"skills": "Skills",
|
|
2408
|
+
"foundational": "Foundational services"
|
|
2398
2409
|
}
|
|
2399
2410
|
},
|
|
2400
2411
|
"infrastructure": {
|
|
@@ -3133,6 +3144,7 @@
|
|
|
3133
3144
|
"merge": "Risk policies",
|
|
3134
3145
|
"tracker": "Issue tracker",
|
|
3135
3146
|
"fragments": "Service best practices",
|
|
3147
|
+
"metadata": "Metadata",
|
|
3136
3148
|
"members": "Members"
|
|
3137
3149
|
},
|
|
3138
3150
|
"waiting": {
|
|
@@ -3201,6 +3213,12 @@
|
|
|
3201
3213
|
},
|
|
3202
3214
|
"toggle": "Grade agent runs with Kaizen"
|
|
3203
3215
|
},
|
|
3216
|
+
"metadata": {
|
|
3217
|
+
"heading": "Workspace metadata",
|
|
3218
|
+
"body": "Values for the custom fields this deployment defines. External tools read them, so a tool opens on the right project for this workspace.",
|
|
3219
|
+
"empty": "This deployment defines no custom workspace fields.",
|
|
3220
|
+
"unset": "Not set"
|
|
3221
|
+
},
|
|
3204
3222
|
"budget": {
|
|
3205
3223
|
"heading": "Monthly spend budget",
|
|
3206
3224
|
"body": "Token usage is metered per LLM call, priced, and gated by these budgets. A run pauses when any tier it belongs to is exhausted. Leave a field blank for no limit on that tier (the workspace tier then inherits the built-in default, about 100 EUR/month).",
|
|
@@ -5405,6 +5423,135 @@
|
|
|
5405
5423
|
},
|
|
5406
5424
|
"unavailable": "The prompt-fragment library isn't enabled for this deployment."
|
|
5407
5425
|
},
|
|
5426
|
+
"foundational": {
|
|
5427
|
+
"unavailable": "The foundational-services catalog isn't enabled for this deployment.",
|
|
5428
|
+
"owner": {
|
|
5429
|
+
"workspace": "This board",
|
|
5430
|
+
"account": "This account"
|
|
5431
|
+
},
|
|
5432
|
+
"tab": {
|
|
5433
|
+
"catalog": "Catalog",
|
|
5434
|
+
"sources": "Repo sources"
|
|
5435
|
+
},
|
|
5436
|
+
"panel": {
|
|
5437
|
+
"title": "Foundational services",
|
|
5438
|
+
"subtitle": "The shared capabilities your organisation already runs, so a design consumes them instead of rebuilding them."
|
|
5439
|
+
},
|
|
5440
|
+
"tier": {
|
|
5441
|
+
"account": "Account",
|
|
5442
|
+
"workspace": "Board"
|
|
5443
|
+
},
|
|
5444
|
+
"format": {
|
|
5445
|
+
"openapi": "OpenAPI",
|
|
5446
|
+
"toadContract": "toad-contracts",
|
|
5447
|
+
"lokaliseApiContract": "lokalise/api-contract"
|
|
5448
|
+
},
|
|
5449
|
+
"contracts": {
|
|
5450
|
+
"omitted": "+{count} more not listed",
|
|
5451
|
+
"none": "No API contract attached. An agent will be told the interface is unknown rather than guessing at it."
|
|
5452
|
+
},
|
|
5453
|
+
"catalog": {
|
|
5454
|
+
"intro": "What an architect designing on this board is handed: identity, capability tags and operation names. Contract documents are read only when a design declares the service.",
|
|
5455
|
+
"empty": "No foundational services yet. Register one below, or link a repo that describes them.",
|
|
5456
|
+
"suppress": "Do not offer this service on this board",
|
|
5457
|
+
"showDocuments": "Show contract documents",
|
|
5458
|
+
"hideDocuments": "Hide contract documents"
|
|
5459
|
+
},
|
|
5460
|
+
"suppressions": {
|
|
5461
|
+
"title": "Opted out on this board",
|
|
5462
|
+
"intro": "These account services are hidden from designs on this board. Nothing was deleted, and the account keeps them for every other board.",
|
|
5463
|
+
"restore": "Offer again",
|
|
5464
|
+
"shadowsNothing": "Nothing is inherited under this id right now, so this opt-out currently hides nothing."
|
|
5465
|
+
},
|
|
5466
|
+
"registry": {
|
|
5467
|
+
"empty": "Nothing registered at this scope yet.",
|
|
5468
|
+
"add": "Register a service",
|
|
5469
|
+
"addTitle": "Register a foundational service",
|
|
5470
|
+
"editTitle": "Edit foundational service",
|
|
5471
|
+
"edit": "Edit",
|
|
5472
|
+
"delete": "Delete",
|
|
5473
|
+
"save": "Save",
|
|
5474
|
+
"cancel": "Cancel",
|
|
5475
|
+
"fromSource": "Synced from a linked repo ({path}). Edit it in the repo; the next sync overwrites changes made here.",
|
|
5476
|
+
"idFixed": "the id an architect writes in its design, fixed once registered",
|
|
5477
|
+
"idPlaceholder": "id (lower-kebab, e.g. file-storage)",
|
|
5478
|
+
"namePlaceholder": "name (e.g. File Storage)",
|
|
5479
|
+
"summaryPlaceholder": "one-line summary - what it is for",
|
|
5480
|
+
"descriptionPlaceholder": "what it does, when to use it, and what it does NOT cover",
|
|
5481
|
+
"capabilitiesPlaceholder": "capability tags, comma separated (e.g. file-storage, cdn)",
|
|
5482
|
+
"contractsTitle": "API contracts",
|
|
5483
|
+
"contractsKeep": "Leave untouched to keep the stored documents.",
|
|
5484
|
+
"contractsReplace": "Saving REPLACES the whole stored set with what is listed here.",
|
|
5485
|
+
"addContract": "Add a contract",
|
|
5486
|
+
"removeContract": "Remove this contract",
|
|
5487
|
+
"contractIdPlaceholder": "contract id (lower-kebab, e.g. openapi)",
|
|
5488
|
+
"contractTitlePlaceholder": "title (e.g. HTTP API)",
|
|
5489
|
+
"contractBodyPlaceholder": "paste the document: an OpenAPI 3.x file, or a contract module's source"
|
|
5490
|
+
},
|
|
5491
|
+
"sources": {
|
|
5492
|
+
"empty": "No linked repos. Link one below to sync service definitions and their contract files.",
|
|
5493
|
+
"linkTitle": "Link a repo source",
|
|
5494
|
+
"link": "Link & sync",
|
|
5495
|
+
"metaSynced": "synced {date} · ref {ref}",
|
|
5496
|
+
"metaNever": "never synced · ref {ref}",
|
|
5497
|
+
"metaFiles": "{service} · {count} contract files",
|
|
5498
|
+
"metaDirectory": "one service per subdirectory",
|
|
5499
|
+
"changes": "Changes",
|
|
5500
|
+
"check": "Check for changes",
|
|
5501
|
+
"sync": "Resync",
|
|
5502
|
+
"unlink": "Unlink",
|
|
5503
|
+
"selectedDir": "Directory:",
|
|
5504
|
+
"selectedFiles": "Files picked: {count}",
|
|
5505
|
+
"wholeRepo": "Whole repository (root).",
|
|
5506
|
+
"ownerPlaceholder": "owner",
|
|
5507
|
+
"repoPlaceholder": "repo",
|
|
5508
|
+
"dirPlaceholder": "dir path (e.g. foundational)",
|
|
5509
|
+
"filePathsPlaceholder": "contract file paths, one per line",
|
|
5510
|
+
"refPlaceholder": "ref (default HEAD)",
|
|
5511
|
+
"githubRequired": "Linking a repo requires the source-control integration. Connect it on a board first.",
|
|
5512
|
+
"serviceIdPlaceholder": "service id (lower-kebab)",
|
|
5513
|
+
"serviceNamePlaceholder": "service name",
|
|
5514
|
+
"serviceSummaryPlaceholder": "one-line summary (optional)",
|
|
5515
|
+
"mode": {
|
|
5516
|
+
"directory": "A folder of services",
|
|
5517
|
+
"files": "Specific files, one service",
|
|
5518
|
+
"directoryHint": "Every subdirectory of the linked path is one service, described by a service.md with its contract files beside it.",
|
|
5519
|
+
"filesHint": "The listed files all describe the one service you name here. Use this when there is no folder convention to adopt."
|
|
5520
|
+
}
|
|
5521
|
+
},
|
|
5522
|
+
"confirmUnlinkSource": {
|
|
5523
|
+
"title": "Unlink this repo?",
|
|
5524
|
+
"body": "\"{repo}\" and the services it synced will be removed from the catalog. You can link it again later.",
|
|
5525
|
+
"confirm": "Unlink"
|
|
5526
|
+
},
|
|
5527
|
+
"confirmDelete": {
|
|
5528
|
+
"title": "Delete this service?",
|
|
5529
|
+
"body": "\"{name}\" and its uploaded contract documents will be removed from this scope.",
|
|
5530
|
+
"bodyWorkspace": "\"{name}\" and its uploaded contract documents will be removed from this board. If the account registers a service under the same id, this board will also stop inheriting it; you can undo that under \"Opted out on this board\".",
|
|
5531
|
+
"confirm": "Delete"
|
|
5532
|
+
},
|
|
5533
|
+
"toast": {
|
|
5534
|
+
"created": "Service registered",
|
|
5535
|
+
"updated": "Service updated",
|
|
5536
|
+
"deleted": "Service deleted",
|
|
5537
|
+
"saveFailed": "Could not save the service",
|
|
5538
|
+
"deleteFailed": "Could not delete the service",
|
|
5539
|
+
"suppressed": "Hidden from designs on this board",
|
|
5540
|
+
"suppressFailed": "Could not hide the service",
|
|
5541
|
+
"restored": "Offered on this board again",
|
|
5542
|
+
"restoreFailed": "Could not restore the service",
|
|
5543
|
+
"contractsFailed": "Could not load the contract documents",
|
|
5544
|
+
"sourceLinked": "Repo linked & synced",
|
|
5545
|
+
"linkSourceFailed": "Could not link the repo",
|
|
5546
|
+
"synced": "Synced: {updated} updated, {removed} removed",
|
|
5547
|
+
"syncFailed": "Could not sync the repo",
|
|
5548
|
+
"changesAvailable": "Changes available upstream",
|
|
5549
|
+
"upToDate": "Already up to date",
|
|
5550
|
+
"checkSourceFailed": "Could not check the repo",
|
|
5551
|
+
"sourceUnlinked": "Repo unlinked",
|
|
5552
|
+
"unlinkSourceFailed": "Could not unlink the repo"
|
|
5553
|
+
}
|
|
5554
|
+
},
|
|
5408
5555
|
"sandbox": {
|
|
5409
5556
|
"title": "Sandbox: prompt and model testing",
|
|
5410
5557
|
"description": "Try prompt versions and models against graded fixtures, scored by a judge model.",
|
|
@@ -6325,5 +6472,14 @@
|
|
|
6325
6472
|
}
|
|
6326
6473
|
}
|
|
6327
6474
|
}
|
|
6475
|
+
},
|
|
6476
|
+
"externalTools": {
|
|
6477
|
+
"unavailable": {
|
|
6478
|
+
"title": "Can't open {tool}",
|
|
6479
|
+
"missingMetadata": "Fill in {fields} on the Metadata tab of Workspace settings first.",
|
|
6480
|
+
"unresolved": "This tool did not return an address for the current workspace.",
|
|
6481
|
+
"resolverFailed": "This tool failed while working out its address. The cause is in the browser console, for whoever maintains this deployment.",
|
|
6482
|
+
"unsafeUrl": "This tool returned an address that is not a web link, so it was not opened."
|
|
6483
|
+
}
|
|
6328
6484
|
}
|
|
6329
6485
|
}
|
package/i18n/locales/es.json
CHANGED
|
@@ -119,13 +119,15 @@
|
|
|
119
119
|
"kaizen": "Kaizen",
|
|
120
120
|
"workspaceContext": "Contexto del espacio de trabajo",
|
|
121
121
|
"contextFragments": "Fragmentos de contexto",
|
|
122
|
+
"externalTools": "Herramientas externas",
|
|
122
123
|
"configuration": "Configuración",
|
|
123
124
|
"workspaceSettings": "Ajustes del espacio de trabajo",
|
|
124
125
|
"modelConfiguration": "Configuración del modelo",
|
|
125
126
|
"accountSettings": "Ajustes de la cuenta",
|
|
126
127
|
"operatorDashboard": "Observabilidad de la plataforma",
|
|
127
128
|
"reports": "Informes",
|
|
128
|
-
"infrastructure": "Infraestructura"
|
|
129
|
+
"infrastructure": "Infraestructura",
|
|
130
|
+
"foundationalServices": "Servicios fundamentales"
|
|
129
131
|
},
|
|
130
132
|
"board": {
|
|
131
133
|
"toast": {
|
|
@@ -543,7 +545,8 @@
|
|
|
543
545
|
"pipeline_schedule_attached": "Una programación recurrente usa esta canalización",
|
|
544
546
|
"pipeline_schedule_requires_recurring": "Una programación recurrente necesita esta canalización",
|
|
545
547
|
"pipeline_schedule_intake_unconfigured": "La programación no tiene entrada de incidencias",
|
|
546
|
-
"foundational_service_exists": "El servicio fundacional ya existe"
|
|
548
|
+
"foundational_service_exists": "El servicio fundacional ya existe",
|
|
549
|
+
"foundational_service_not_inherited": "Este tablero registró ese servicio"
|
|
547
550
|
},
|
|
548
551
|
"description": {
|
|
549
552
|
"dependencies_unmet": "Esta tarea depende de otras que aún no están terminadas. Complétalas o desbloquéalas y vuelve a iniciarla.",
|
|
@@ -572,7 +575,8 @@
|
|
|
572
575
|
"pipeline_schedule_attached": "Una programación recurrente todavía apunta a esta canalización, y cada ejecución que inicia la resuelve por su id. Desvincule o elimine esa programación antes de quitar la canalización.",
|
|
573
576
|
"pipeline_schedule_requires_recurring": "Una programación recurrente todavía apunta a esta canalización, así que limitarla a un solo uso rompería cada ejecución futura. Desvincule primero esa programación.",
|
|
574
577
|
"pipeline_schedule_intake_unconfigured": "Un paso de entrada de errores toma su trabajo de la entrada de incidencias de la programación, y la programación vinculada no la tiene. Configure la entrada de incidencias en la programación primero.",
|
|
575
|
-
"foundational_service_exists": "Ya hay un servicio fundacional con este identificador registrado en este ámbito. Abre la entrada existente y edítala: dos servicios no pueden compartir un identificador, porque es el nombre que un arquitecto usa en su diseño."
|
|
578
|
+
"foundational_service_exists": "Ya hay un servicio fundacional con este identificador registrado en este ámbito. Abre la entrada existente y edítala: dos servicios no pueden compartir un identificador, porque es el nombre que un arquitecto usa en su diseño.",
|
|
579
|
+
"foundational_service_not_inherited": "La exclusión se aplica a un servicio heredado de la cuenta. Este id está registrado por este tablero, así que no hay nada que excluir: elimina la entrada propia del tablero."
|
|
576
580
|
},
|
|
577
581
|
"action": {
|
|
578
582
|
"connectGitHub": "Conectar GitHub",
|
|
@@ -2049,6 +2053,7 @@
|
|
|
2049
2053
|
"create": "Crear",
|
|
2050
2054
|
"repositories": "Repositorios",
|
|
2051
2055
|
"integrations": "Integraciones",
|
|
2056
|
+
"externalTools": "Herramientas externas",
|
|
2052
2057
|
"workspace": "Espacio de trabajo",
|
|
2053
2058
|
"account": "Cuenta"
|
|
2054
2059
|
},
|
|
@@ -2075,7 +2080,8 @@
|
|
|
2075
2080
|
"shortcuts": "Atajos de teclado",
|
|
2076
2081
|
"bugHunt": "Caza de errores",
|
|
2077
2082
|
"toggleUiMode": "Cambiar el modo de interfaz",
|
|
2078
|
-
"tutorial": "Hacer un recorrido"
|
|
2083
|
+
"tutorial": "Hacer un recorrido",
|
|
2084
|
+
"foundationalServices": "Servicios fundamentales"
|
|
2079
2085
|
},
|
|
2080
2086
|
"keywords": {
|
|
2081
2087
|
"newPipeline": "canalización agentes cadena pipeline",
|
|
@@ -2098,7 +2104,8 @@
|
|
|
2098
2104
|
"shortcuts": "atajos teclado teclas ayuda",
|
|
2099
2105
|
"bugHunt": "error bug caza triaje backlog incidencias sin asignar",
|
|
2100
2106
|
"toggleUiMode": "interfaz modo básico avanzado mostrar ocultar",
|
|
2101
|
-
"tutorial": "tutorial recorrido guía ayuda aprender introducción"
|
|
2107
|
+
"tutorial": "tutorial recorrido guía ayuda aprender introducción",
|
|
2108
|
+
"foundationalServices": "capacidad compartida plataforma servicio api contrato openapi catálogo"
|
|
2102
2109
|
}
|
|
2103
2110
|
},
|
|
2104
2111
|
"integrationsHub": {
|
|
@@ -2258,6 +2265,9 @@
|
|
|
2258
2265
|
"title": "Elige un entorno de pruebas predeterminado",
|
|
2259
2266
|
"body": "Este tablero aún no ha definido cómo obtienen un entorno de pruebas sus servicios. Elige un valor predeterminado y todos los servicios que añadas a partir de ahora empezarán con él, en lugar de configurarse uno a uno. Podrás cambiarlo en cada servicio.",
|
|
2260
2267
|
"action": "Elegir predeterminado"
|
|
2268
|
+
},
|
|
2269
|
+
"accountFoundational": {
|
|
2270
|
+
"intro": "Las capacidades compartidas que esta organización ya opera - almacenamiento de archivos, notificaciones, auditoría - con sus contratos de API. Todos los tableros las heredan, y a un arquitecto se le indica que las consuma en lugar de proponer reconstruirlas."
|
|
2261
2271
|
}
|
|
2262
2272
|
},
|
|
2263
2273
|
"settings": {
|
|
@@ -2312,7 +2322,8 @@
|
|
|
2312
2322
|
"tabs": {
|
|
2313
2323
|
"team": "Equipo y acceso",
|
|
2314
2324
|
"fragments": "Fragmentos de contexto",
|
|
2315
|
-
"skills": "Habilidades"
|
|
2325
|
+
"skills": "Habilidades",
|
|
2326
|
+
"foundational": "Servicios fundamentales"
|
|
2316
2327
|
}
|
|
2317
2328
|
},
|
|
2318
2329
|
"providerConnection": {
|
|
@@ -2901,6 +2912,7 @@
|
|
|
2901
2912
|
"merge": "Políticas de riesgo",
|
|
2902
2913
|
"tracker": "Gestor de incidencias",
|
|
2903
2914
|
"fragments": "Buenas prácticas del servicio",
|
|
2915
|
+
"metadata": "Metadatos",
|
|
2904
2916
|
"members": "Miembros"
|
|
2905
2917
|
},
|
|
2906
2918
|
"waiting": {
|
|
@@ -2966,6 +2978,12 @@
|
|
|
2966
2978
|
"body": "Al completarse cada ejecución, el agente Kaizen evalúa cómo fue cada paso del agente, desde fluido y eficiente hasta confuso y caótico, y recomienda mejoras de prompt/modelo. Una combinación de prompt + agente + modelo que obtiene una buena nota sin recomendaciones cinco veces seguidas se marca como verificada y deja de evaluarse. La evaluación se ejecuta en segundo plano y se muestra en los detalles de la ejecución y en la pantalla de Kaizen. Configura el modelo del evaluador en Configuración de modelos (el agente \"Kaizen\").",
|
|
2967
2979
|
"toggle": "Evaluar ejecuciones de agentes con Kaizen"
|
|
2968
2980
|
},
|
|
2981
|
+
"metadata": {
|
|
2982
|
+
"heading": "Metadatos del espacio de trabajo",
|
|
2983
|
+
"body": "Valores de los campos personalizados que define esta instalación. Las herramientas externas los leen para abrirse en el proyecto correcto de este espacio de trabajo.",
|
|
2984
|
+
"empty": "Esta instalación no define campos personalizados del espacio de trabajo.",
|
|
2985
|
+
"unset": "Sin definir"
|
|
2986
|
+
},
|
|
2969
2987
|
"budget": {
|
|
2970
2988
|
"heading": "Presupuesto de gasto mensual",
|
|
2971
2989
|
"body": "El uso de tokens se contabiliza por llamada al LLM, se valora y se limita con estos presupuestos. Una ejecución se pausa cuando se agota cualquier nivel al que pertenece. Deja un campo en blanco para no poner límite a ese nivel (el nivel del espacio de trabajo hereda entonces el valor predeterminado integrado, unos 100 EUR/mes).",
|
|
@@ -5156,6 +5174,135 @@
|
|
|
5156
5174
|
},
|
|
5157
5175
|
"unavailable": "La biblioteca de fragmentos de prompt no está habilitada en esta implementación."
|
|
5158
5176
|
},
|
|
5177
|
+
"foundational": {
|
|
5178
|
+
"unavailable": "El catálogo de servicios fundamentales no está habilitado en esta instalación.",
|
|
5179
|
+
"owner": {
|
|
5180
|
+
"workspace": "Este tablero",
|
|
5181
|
+
"account": "Esta cuenta"
|
|
5182
|
+
},
|
|
5183
|
+
"tab": {
|
|
5184
|
+
"catalog": "Catálogo",
|
|
5185
|
+
"sources": "Repos vinculados"
|
|
5186
|
+
},
|
|
5187
|
+
"panel": {
|
|
5188
|
+
"title": "Servicios fundamentales",
|
|
5189
|
+
"subtitle": "Las capacidades compartidas que tu organización ya opera, para que un diseño las consuma en lugar de reconstruirlas."
|
|
5190
|
+
},
|
|
5191
|
+
"tier": {
|
|
5192
|
+
"account": "Cuenta",
|
|
5193
|
+
"workspace": "Tablero"
|
|
5194
|
+
},
|
|
5195
|
+
"format": {
|
|
5196
|
+
"openapi": "OpenAPI",
|
|
5197
|
+
"toadContract": "toad-contracts",
|
|
5198
|
+
"lokaliseApiContract": "lokalise/api-contract"
|
|
5199
|
+
},
|
|
5200
|
+
"contracts": {
|
|
5201
|
+
"omitted": "+{count} más sin listar",
|
|
5202
|
+
"none": "No hay contrato de API adjunto. Al agente se le dirá que la interfaz es desconocida en lugar de dejar que la adivine."
|
|
5203
|
+
},
|
|
5204
|
+
"catalog": {
|
|
5205
|
+
"intro": "Lo que recibe un arquitecto que diseña en este tablero: identidad, etiquetas de capacidad y nombres de operaciones. Los documentos de contrato solo se leen cuando un diseño declara el servicio.",
|
|
5206
|
+
"empty": "Todavía no hay servicios fundamentales. Registra uno abajo o vincula un repositorio que los describa.",
|
|
5207
|
+
"suppress": "No ofrecer este servicio en este tablero",
|
|
5208
|
+
"showDocuments": "Mostrar documentos de contrato",
|
|
5209
|
+
"hideDocuments": "Ocultar documentos de contrato"
|
|
5210
|
+
},
|
|
5211
|
+
"suppressions": {
|
|
5212
|
+
"title": "Excluidos en este tablero",
|
|
5213
|
+
"intro": "Estos servicios de la cuenta están ocultos para los diseños de este tablero. No se ha borrado nada y la cuenta los conserva para los demás tableros.",
|
|
5214
|
+
"restore": "Volver a ofrecer",
|
|
5215
|
+
"shadowsNothing": "Ahora mismo no se hereda nada con este id, así que esta exclusión no oculta nada."
|
|
5216
|
+
},
|
|
5217
|
+
"registry": {
|
|
5218
|
+
"empty": "Todavía no hay nada registrado en este ámbito.",
|
|
5219
|
+
"add": "Registrar un servicio",
|
|
5220
|
+
"addTitle": "Registrar un servicio fundamental",
|
|
5221
|
+
"editTitle": "Editar servicio fundamental",
|
|
5222
|
+
"edit": "Editar",
|
|
5223
|
+
"delete": "Eliminar",
|
|
5224
|
+
"save": "Guardar",
|
|
5225
|
+
"cancel": "Cancelar",
|
|
5226
|
+
"fromSource": "Sincronizado desde un repositorio vinculado ({path}). Edítalo en el repositorio; la próxima sincronización sobrescribirá los cambios hechos aquí.",
|
|
5227
|
+
"idFixed": "el id que un arquitecto escribe en su diseño, fijo una vez registrado",
|
|
5228
|
+
"idPlaceholder": "id (minúsculas con guiones, p. ej. file-storage)",
|
|
5229
|
+
"namePlaceholder": "nombre (p. ej. File Storage)",
|
|
5230
|
+
"summaryPlaceholder": "resumen de una línea: para qué sirve",
|
|
5231
|
+
"descriptionPlaceholder": "qué hace, cuándo usarlo y qué NO cubre",
|
|
5232
|
+
"capabilitiesPlaceholder": "etiquetas de capacidad separadas por comas (p. ej. file-storage, cdn)",
|
|
5233
|
+
"contractsTitle": "Contratos de API",
|
|
5234
|
+
"contractsKeep": "Déjalo sin tocar para conservar los documentos guardados.",
|
|
5235
|
+
"contractsReplace": "Al guardar se SUSTITUYE todo el conjunto guardado por lo que aparece aquí.",
|
|
5236
|
+
"addContract": "Añadir un contrato",
|
|
5237
|
+
"removeContract": "Quitar este contrato",
|
|
5238
|
+
"contractIdPlaceholder": "id de contrato (minúsculas con guiones, p. ej. openapi)",
|
|
5239
|
+
"contractTitlePlaceholder": "título (p. ej. HTTP API)",
|
|
5240
|
+
"contractBodyPlaceholder": "pega el documento: un archivo OpenAPI 3.x o el código de un módulo de contrato"
|
|
5241
|
+
},
|
|
5242
|
+
"sources": {
|
|
5243
|
+
"empty": "No hay repositorios vinculados. Vincula uno abajo para sincronizar definiciones de servicio y sus archivos de contrato.",
|
|
5244
|
+
"linkTitle": "Vincular un repositorio",
|
|
5245
|
+
"link": "Vincular y sincronizar",
|
|
5246
|
+
"metaSynced": "sincronizado {date} · ref {ref}",
|
|
5247
|
+
"metaNever": "nunca sincronizado · ref {ref}",
|
|
5248
|
+
"metaFiles": "{service} · {count} archivos de contrato",
|
|
5249
|
+
"metaDirectory": "un servicio por subdirectorio",
|
|
5250
|
+
"changes": "Cambios",
|
|
5251
|
+
"check": "Buscar cambios",
|
|
5252
|
+
"sync": "Volver a sincronizar",
|
|
5253
|
+
"unlink": "Desvincular",
|
|
5254
|
+
"selectedDir": "Directorio:",
|
|
5255
|
+
"selectedFiles": "Archivos elegidos: {count}",
|
|
5256
|
+
"wholeRepo": "Todo el repositorio (raíz).",
|
|
5257
|
+
"ownerPlaceholder": "propietario",
|
|
5258
|
+
"repoPlaceholder": "repo",
|
|
5259
|
+
"dirPlaceholder": "ruta del directorio (p. ej. foundational)",
|
|
5260
|
+
"filePathsPlaceholder": "rutas de los archivos de contrato, una por línea",
|
|
5261
|
+
"refPlaceholder": "ref (por defecto HEAD)",
|
|
5262
|
+
"githubRequired": "Vincular un repositorio requiere la integración de control de versiones. Conéctala primero en un tablero.",
|
|
5263
|
+
"serviceIdPlaceholder": "id del servicio (minúsculas con guiones)",
|
|
5264
|
+
"serviceNamePlaceholder": "nombre del servicio",
|
|
5265
|
+
"serviceSummaryPlaceholder": "resumen de una línea (opcional)",
|
|
5266
|
+
"mode": {
|
|
5267
|
+
"directory": "Una carpeta de servicios",
|
|
5268
|
+
"files": "Archivos concretos, un servicio",
|
|
5269
|
+
"directoryHint": "Cada subdirectorio de la ruta vinculada es un servicio, descrito por un service.md con sus archivos de contrato al lado.",
|
|
5270
|
+
"filesHint": "Los archivos listados describen el único servicio que nombras aquí. Úsalo cuando no haya una convención de carpetas que adoptar."
|
|
5271
|
+
}
|
|
5272
|
+
},
|
|
5273
|
+
"confirmUnlinkSource": {
|
|
5274
|
+
"title": "¿Desvincular este repositorio?",
|
|
5275
|
+
"body": "\"{repo}\" y los servicios que sincronizó se quitarán del catálogo. Podrás volver a vincularlo más adelante.",
|
|
5276
|
+
"confirm": "Desvincular"
|
|
5277
|
+
},
|
|
5278
|
+
"confirmDelete": {
|
|
5279
|
+
"title": "¿Eliminar este servicio?",
|
|
5280
|
+
"body": "\"{name}\" y sus documentos de contrato subidos se quitarán de este ámbito.",
|
|
5281
|
+
"bodyWorkspace": "\"{name}\" y sus documentos de contrato subidos se quitarán de este tablero. Si la cuenta registra un servicio con el mismo id, este tablero también dejará de heredarlo; puedes deshacerlo en \"Excluidos en este tablero\".",
|
|
5282
|
+
"confirm": "Eliminar"
|
|
5283
|
+
},
|
|
5284
|
+
"toast": {
|
|
5285
|
+
"created": "Servicio registrado",
|
|
5286
|
+
"updated": "Servicio actualizado",
|
|
5287
|
+
"deleted": "Servicio eliminado",
|
|
5288
|
+
"saveFailed": "No se pudo guardar el servicio",
|
|
5289
|
+
"deleteFailed": "No se pudo eliminar el servicio",
|
|
5290
|
+
"suppressed": "Oculto para los diseños de este tablero",
|
|
5291
|
+
"suppressFailed": "No se pudo ocultar el servicio",
|
|
5292
|
+
"restored": "Vuelve a ofrecerse en este tablero",
|
|
5293
|
+
"restoreFailed": "No se pudo restaurar el servicio",
|
|
5294
|
+
"contractsFailed": "No se pudieron cargar los documentos de contrato",
|
|
5295
|
+
"sourceLinked": "Repositorio vinculado y sincronizado",
|
|
5296
|
+
"linkSourceFailed": "No se pudo vincular el repositorio",
|
|
5297
|
+
"synced": "Sincronizado: {updated} actualizados, {removed} eliminados",
|
|
5298
|
+
"syncFailed": "No se pudo sincronizar el repositorio",
|
|
5299
|
+
"changesAvailable": "Hay cambios en el origen",
|
|
5300
|
+
"upToDate": "Ya está actualizado",
|
|
5301
|
+
"checkSourceFailed": "No se pudo comprobar el repositorio",
|
|
5302
|
+
"sourceUnlinked": "Repositorio desvinculado",
|
|
5303
|
+
"unlinkSourceFailed": "No se pudo desvincular el repositorio"
|
|
5304
|
+
}
|
|
5305
|
+
},
|
|
5159
5306
|
"sandbox": {
|
|
5160
5307
|
"title": "Sandbox: pruebas de prompts y modelos",
|
|
5161
5308
|
"description": "Prueba versiones de prompts y modelos contra fixtures calificados, evaluados por un modelo juez.",
|
|
@@ -6103,5 +6250,14 @@
|
|
|
6103
6250
|
}
|
|
6104
6251
|
}
|
|
6105
6252
|
}
|
|
6253
|
+
},
|
|
6254
|
+
"externalTools": {
|
|
6255
|
+
"unavailable": {
|
|
6256
|
+
"title": "No se puede abrir {tool}",
|
|
6257
|
+
"missingMetadata": "Primero completa {fields} en la pestaña Metadatos de la configuración del espacio de trabajo.",
|
|
6258
|
+
"unresolved": "Esta herramienta no devolvió una dirección para el espacio de trabajo actual.",
|
|
6259
|
+
"resolverFailed": "Esta herramienta falló al calcular su dirección. La causa está en la consola del navegador, para quien mantiene esta instalación.",
|
|
6260
|
+
"unsafeUrl": "Esta herramienta devolvió una dirección que no es un enlace web, así que no se abrió."
|
|
6261
|
+
}
|
|
6106
6262
|
}
|
|
6107
6263
|
}
|