@cat-factory/app 0.187.0 → 0.188.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.
@@ -30,6 +30,7 @@ export const AGENT_CATEGORIES: { id: AgentCategory; label: string }[] = [
30
30
  export const AGENT_ARCHETYPES: AgentArchetype[] = [
31
31
  {
32
32
  kind: 'requirements-review',
33
+ tier: 'basic',
33
34
  label: 'Requirements Reviewer',
34
35
  icon: 'i-lucide-clipboard-check',
35
36
  color: '#f59e0b',
@@ -42,6 +43,7 @@ export const AGENT_ARCHETYPES: AgentArchetype[] = [
42
43
  },
43
44
  {
44
45
  kind: 'clarity-review',
46
+ tier: 'basic',
45
47
  label: 'Clarity Reviewer',
46
48
  icon: 'i-lucide-bug',
47
49
  color: '#f59e0b',
@@ -58,6 +60,7 @@ export const AGENT_ARCHETYPES: AgentArchetype[] = [
58
60
  // structured triage opens in the shared generic viewer; the clarity gate consumes its
59
61
  // `clarity`/`questions` server-side.
60
62
  kind: 'bug-investigator',
63
+ tier: 'intermediate',
61
64
  label: 'Bug Investigator',
62
65
  icon: 'i-lucide-search-code',
63
66
  color: '#38bdf8',
@@ -73,6 +76,7 @@ export const AGENT_ARCHETYPES: AgentArchetype[] = [
73
76
  // resolves to the findings-selection window on every surface — not just when the manifest
74
77
  // is hydrated. Mirrors the backend `presentation` in `pr-reviewer.ts`.
75
78
  kind: 'pr-reviewer',
79
+ tier: 'basic',
76
80
  label: 'PR Reviewer',
77
81
  icon: 'i-lucide-clipboard-check',
78
82
  color: '#6366f1',
@@ -89,6 +93,7 @@ export const AGENT_ARCHETYPES: AgentArchetype[] = [
89
93
  // shared generic viewer; the findings document is committed by a backend post-op (delivered
90
94
  // as a pull request by default, or straight to base via the direct pipeline).
91
95
  kind: 'spike',
96
+ tier: 'intermediate',
92
97
  label: 'Spike',
93
98
  icon: 'i-lucide-flask-conical',
94
99
  color: '#22d3ee',
@@ -99,6 +104,7 @@ export const AGENT_ARCHETYPES: AgentArchetype[] = [
99
104
  },
100
105
  {
101
106
  kind: 'task-estimator',
107
+ tier: 'intermediate',
102
108
  label: 'Task Estimator',
103
109
  icon: 'i-lucide-gauge',
104
110
  color: '#eab308',
@@ -108,6 +114,7 @@ export const AGENT_ARCHETYPES: AgentArchetype[] = [
108
114
  },
109
115
  {
110
116
  kind: 'requirements-brainstorm',
117
+ tier: 'intermediate',
111
118
  label: 'Requirements Brainstorm',
112
119
  icon: 'i-lucide-lightbulb',
113
120
  color: '#f59e0b',
@@ -120,6 +127,7 @@ export const AGENT_ARCHETYPES: AgentArchetype[] = [
120
127
  },
121
128
  {
122
129
  kind: 'architecture-brainstorm',
130
+ tier: 'advanced',
123
131
  label: 'Architecture Brainstorm',
124
132
  icon: 'i-lucide-compass',
125
133
  color: '#a78bfa',
@@ -130,6 +138,7 @@ export const AGENT_ARCHETYPES: AgentArchetype[] = [
130
138
  },
131
139
  {
132
140
  kind: 'architect',
141
+ tier: 'basic',
133
142
  label: 'Architect',
134
143
  icon: 'i-lucide-drafting-compass',
135
144
  color: '#a78bfa',
@@ -138,6 +147,7 @@ export const AGENT_ARCHETYPES: AgentArchetype[] = [
138
147
  },
139
148
  {
140
149
  kind: 'researcher',
150
+ tier: 'intermediate',
141
151
  label: 'Researcher',
142
152
  icon: 'i-lucide-telescope',
143
153
  color: '#38bdf8',
@@ -146,6 +156,7 @@ export const AGENT_ARCHETYPES: AgentArchetype[] = [
146
156
  },
147
157
  {
148
158
  kind: 'coder',
159
+ tier: 'basic',
149
160
  label: 'Coder',
150
161
  icon: 'i-lucide-code-xml',
151
162
  color: '#34d399',
@@ -154,6 +165,7 @@ export const AGENT_ARCHETYPES: AgentArchetype[] = [
154
165
  },
155
166
  {
156
167
  kind: 'integrator',
168
+ tier: 'advanced',
157
169
  label: 'Integrator',
158
170
  icon: 'i-lucide-plug-zap',
159
171
  color: '#fb923c',
@@ -162,6 +174,7 @@ export const AGENT_ARCHETYPES: AgentArchetype[] = [
162
174
  },
163
175
  {
164
176
  kind: 'mocker',
177
+ tier: 'advanced',
165
178
  label: 'Mock Builder',
166
179
  icon: 'i-lucide-server-cog',
167
180
  color: '#fb7185',
@@ -170,6 +183,7 @@ export const AGENT_ARCHETYPES: AgentArchetype[] = [
170
183
  },
171
184
  {
172
185
  kind: 'tester-api',
186
+ tier: 'basic',
173
187
  label: 'API Tester',
174
188
  icon: 'i-lucide-flask-conical',
175
189
  color: '#fbbf24',
@@ -181,6 +195,7 @@ export const AGENT_ARCHETYPES: AgentArchetype[] = [
181
195
  },
182
196
  {
183
197
  kind: 'tester-ui',
198
+ tier: 'intermediate',
184
199
  label: 'UI Tester',
185
200
  icon: 'i-lucide-camera',
186
201
  color: '#fbbf24',
@@ -192,6 +207,7 @@ export const AGENT_ARCHETYPES: AgentArchetype[] = [
192
207
  },
193
208
  {
194
209
  kind: 'playwright',
210
+ tier: 'intermediate',
195
211
  label: 'Acceptance Test Author',
196
212
  icon: 'i-lucide-theater',
197
213
  color: '#e879f9',
@@ -201,6 +217,7 @@ export const AGENT_ARCHETYPES: AgentArchetype[] = [
201
217
  },
202
218
  {
203
219
  kind: 'human-test',
220
+ tier: 'intermediate',
204
221
  label: 'Human Testing',
205
222
  icon: 'i-lucide-user-check',
206
223
  color: '#f59e0b',
@@ -213,6 +230,7 @@ export const AGENT_ARCHETYPES: AgentArchetype[] = [
213
230
  },
214
231
  {
215
232
  kind: 'visual-confirmation',
233
+ tier: 'advanced',
216
234
  label: 'Visual Confirmation',
217
235
  icon: 'i-lucide-image-play',
218
236
  color: '#f59e0b',
@@ -225,6 +243,7 @@ export const AGENT_ARCHETYPES: AgentArchetype[] = [
225
243
  },
226
244
  {
227
245
  kind: 'documenter',
246
+ tier: 'basic',
228
247
  label: 'Documenter',
229
248
  icon: 'i-lucide-book-open-text',
230
249
  color: '#818cf8',
@@ -233,6 +252,7 @@ export const AGENT_ARCHETYPES: AgentArchetype[] = [
233
252
  },
234
253
  {
235
254
  kind: 'business-documenter',
255
+ tier: 'intermediate',
236
256
  label: 'Domain Rules Documenter',
237
257
  icon: 'i-lucide-scroll-text',
238
258
  color: '#84cc16',
@@ -242,6 +262,7 @@ export const AGENT_ARCHETYPES: AgentArchetype[] = [
242
262
  },
243
263
  {
244
264
  kind: 'business-reviewer',
265
+ tier: 'advanced',
245
266
  label: 'Domain Rules Reviewer',
246
267
  icon: 'i-lucide-shield-alert',
247
268
  color: '#ef4444',
@@ -264,6 +285,7 @@ export const AGENT_ARCHETYPES: AgentArchetype[] = [
264
285
  export const COMPANION_ARCHETYPES: AgentArchetype[] = [
265
286
  {
266
287
  kind: 'reviewer',
288
+ tier: 'basic',
267
289
  label: 'Reviewer (companion)',
268
290
  icon: 'i-lucide-scan-eye',
269
291
  color: '#f472b6',
@@ -272,6 +294,7 @@ export const COMPANION_ARCHETYPES: AgentArchetype[] = [
272
294
  },
273
295
  {
274
296
  kind: 'architect-companion',
297
+ tier: 'intermediate',
275
298
  label: 'Architect Companion',
276
299
  icon: 'i-lucide-bug-play',
277
300
  color: '#c084fc',
@@ -280,6 +303,7 @@ export const COMPANION_ARCHETYPES: AgentArchetype[] = [
280
303
  },
281
304
  {
282
305
  kind: 'spec-companion',
306
+ tier: 'intermediate',
283
307
  label: 'Spec Reviewer',
284
308
  icon: 'i-lucide-list-checks',
285
309
  color: '#2dd4bf',
@@ -288,6 +312,7 @@ export const COMPANION_ARCHETYPES: AgentArchetype[] = [
288
312
  },
289
313
  {
290
314
  kind: 'doc-reviewer',
315
+ tier: 'intermediate',
291
316
  label: 'Doc Reviewer',
292
317
  icon: 'i-lucide-file-search',
293
318
  color: '#818cf8',
@@ -366,13 +391,19 @@ export function __resetCustomAgentKindMetaForTest(): void {
366
391
  * Agent kinds eligible for the optional consensus mechanism (the pipeline builder shows an
367
392
  * "Enable Consensus" toggle for these). Mirrors the backend default-eligible set assigned by
368
393
  * `registerConsensusTraits()` in `@cat-factory/consensus` — hand-synced, like the other
369
- * frontend mirrors. In CONSENSUS mode `architect`/`analysis` reason over the provided context
370
- * rather than exploring a checkout (a deliberate trade, gated by the task estimate).
394
+ * frontend mirrors. In CONSENSUS mode a container-backed kind (`architect`/`analysis`, and the
395
+ * checkout-exploring reviewers) reasons over the provided context rather than exploring a
396
+ * checkout (a deliberate trade, gated by the task estimate); the review kinds carry the bulk of
397
+ * the value, since a review is a judgement and a panel judges better than one model.
371
398
  */
372
399
  export const CONSENSUS_ELIGIBLE_KINDS: ReadonlySet<string> = new Set([
373
400
  'architect',
374
401
  'analysis',
375
402
  'reviewer',
403
+ 'pr-reviewer',
404
+ 'doc-reviewer',
405
+ 'architect-companion',
406
+ 'spec-companion',
376
407
  'task-estimator',
377
408
  ])
378
409
 
@@ -400,6 +431,7 @@ export function isTesterKind(kind: string): boolean {
400
431
  export const SYSTEM_AGENT_META: Record<string, AgentArchetype> = {
401
432
  'spec-writer': {
402
433
  kind: 'spec-writer',
434
+ tier: 'intermediate',
403
435
  label: 'Spec Writer',
404
436
  icon: 'i-lucide-clipboard-list',
405
437
  color: '#c084fc',
@@ -408,6 +440,7 @@ export const SYSTEM_AGENT_META: Record<string, AgentArchetype> = {
408
440
  },
409
441
  blueprints: {
410
442
  kind: 'blueprints',
443
+ tier: 'intermediate',
411
444
  label: 'Blueprinter',
412
445
  icon: 'i-lucide-map',
413
446
  color: '#22d3ee',
@@ -420,6 +453,7 @@ export const SYSTEM_AGENT_META: Record<string, AgentArchetype> = {
420
453
  // different (stronger) model than the reviewer. Its output renders in the pr-review window.
421
454
  'challenge-investigator': {
422
455
  kind: 'challenge-investigator',
456
+ tier: 'advanced',
423
457
  label: 'Challenge Investigator',
424
458
  icon: 'i-lucide-gavel',
425
459
  color: '#6366f1',
@@ -433,6 +467,7 @@ export const SYSTEM_AGENT_META: Record<string, AgentArchetype> = {
433
467
  // built-in pipelines, so it needs display metadata (else it renders as a generic gray "Agent").
434
468
  deployer: {
435
469
  kind: 'deployer',
470
+ tier: 'intermediate',
436
471
  label: 'Deployer',
437
472
  icon: 'i-lucide-cloud-upload',
438
473
  color: '#34d399',
@@ -445,6 +480,7 @@ export const SYSTEM_AGENT_META: Record<string, AgentArchetype> = {
445
480
  // interviewer, so the interview covers only what the code cannot answer.
446
481
  'initiative-interviewer': {
447
482
  kind: 'initiative-interviewer',
483
+ tier: 'advanced',
448
484
  label: 'Initiative Interviewer',
449
485
  icon: 'i-lucide-messages-square',
450
486
  color: '#818cf8',
@@ -455,6 +491,7 @@ export const SYSTEM_AGENT_META: Record<string, AgentArchetype> = {
455
491
  },
456
492
  'initiative-analyst': {
457
493
  kind: 'initiative-analyst',
494
+ tier: 'advanced',
458
495
  label: 'Initiative Analyst',
459
496
  icon: 'i-lucide-microscope',
460
497
  color: '#818cf8',
@@ -464,6 +501,7 @@ export const SYSTEM_AGENT_META: Record<string, AgentArchetype> = {
464
501
  },
465
502
  'initiative-planner': {
466
503
  kind: 'initiative-planner',
504
+ tier: 'advanced',
467
505
  label: 'Initiative Planner',
468
506
  icon: 'i-lucide-milestone',
469
507
  color: '#818cf8',
@@ -475,6 +513,7 @@ export const SYSTEM_AGENT_META: Record<string, AgentArchetype> = {
475
513
  },
476
514
  'initiative-committer': {
477
515
  kind: 'initiative-committer',
516
+ tier: 'advanced',
478
517
  label: 'Initiative Committer',
479
518
  icon: 'i-lucide-git-commit-horizontal',
480
519
  color: '#818cf8',
@@ -487,6 +526,7 @@ export const SYSTEM_AGENT_META: Record<string, AgentArchetype> = {
487
526
  // for run-timeline / saved-pipeline display rather than in AGENT_ARCHETYPES.
488
527
  analysis: {
489
528
  kind: 'analysis',
529
+ tier: 'intermediate',
490
530
  label: 'Analyst',
491
531
  icon: 'i-lucide-search-code',
492
532
  color: '#818cf8',
@@ -498,6 +538,7 @@ export const SYSTEM_AGENT_META: Record<string, AgentArchetype> = {
498
538
  // tech-debt pipeline, so it is a display-metadata system kind, not a palette archetype.
499
539
  tracker: {
500
540
  kind: 'tracker',
541
+ tier: 'advanced',
501
542
  label: 'Issue Tracker',
502
543
  icon: 'i-lucide-ticket',
503
544
  color: '#fb923c',
@@ -511,6 +552,7 @@ export const SYSTEM_AGENT_META: Record<string, AgentArchetype> = {
511
552
  // `tracker`), not a palette archetype.
512
553
  'bug-intake': {
513
554
  kind: 'bug-intake',
555
+ tier: 'advanced',
514
556
  label: 'Bug Intake',
515
557
  icon: 'i-lucide-inbox',
516
558
  color: '#fb923c',
@@ -519,6 +561,7 @@ export const SYSTEM_AGENT_META: Record<string, AgentArchetype> = {
519
561
  },
520
562
  conflicts: {
521
563
  kind: 'conflicts',
564
+ tier: 'intermediate',
522
565
  label: 'Conflicts Gate',
523
566
  icon: 'i-lucide-git-merge',
524
567
  color: '#f97316',
@@ -529,6 +572,7 @@ export const SYSTEM_AGENT_META: Record<string, AgentArchetype> = {
529
572
  },
530
573
  'conflict-resolver': {
531
574
  kind: 'conflict-resolver',
575
+ tier: 'intermediate',
532
576
  label: 'Conflict Resolver',
533
577
  icon: 'i-lucide-git-merge',
534
578
  color: '#f97316',
@@ -536,6 +580,7 @@ export const SYSTEM_AGENT_META: Record<string, AgentArchetype> = {
536
580
  },
537
581
  ci: {
538
582
  kind: 'ci',
583
+ tier: 'basic',
539
584
  label: 'CI Gate',
540
585
  icon: 'i-lucide-shield-check',
541
586
  color: '#38bdf8',
@@ -550,6 +595,7 @@ export const SYSTEM_AGENT_META: Record<string, AgentArchetype> = {
550
595
  // is a registered kind, so it arrives via the workspace snapshot's `customAgentKinds`.
551
596
  'doc-quality': {
552
597
  kind: 'doc-quality',
598
+ tier: 'intermediate',
553
599
  label: 'Doc Quality Gate',
554
600
  icon: 'i-lucide-file-check-2',
555
601
  color: '#818cf8',
@@ -560,6 +606,7 @@ export const SYSTEM_AGENT_META: Record<string, AgentArchetype> = {
560
606
  },
561
607
  'ci-fixer': {
562
608
  kind: 'ci-fixer',
609
+ tier: 'basic',
563
610
  label: 'CI Fixer',
564
611
  icon: 'i-lucide-wrench',
565
612
  color: '#38bdf8',
@@ -567,6 +614,7 @@ export const SYSTEM_AGENT_META: Record<string, AgentArchetype> = {
567
614
  },
568
615
  fixer: {
569
616
  kind: 'fixer',
617
+ tier: 'basic',
570
618
  label: 'Fixer',
571
619
  icon: 'i-lucide-wrench',
572
620
  color: '#fbbf24',
@@ -575,6 +623,7 @@ export const SYSTEM_AGENT_META: Record<string, AgentArchetype> = {
575
623
  },
576
624
  merger: {
577
625
  kind: 'merger',
626
+ tier: 'basic',
578
627
  label: 'Merger',
579
628
  icon: 'i-lucide-git-pull-request',
580
629
  color: '#a3e635',
@@ -585,6 +634,7 @@ export const SYSTEM_AGENT_META: Record<string, AgentArchetype> = {
585
634
  },
586
635
  'human-review': {
587
636
  kind: 'human-review',
637
+ tier: 'basic',
588
638
  label: 'Human Review Gate',
589
639
  icon: 'i-lucide-users',
590
640
  color: '#c084fc',
@@ -600,6 +650,7 @@ export const SYSTEM_AGENT_META: Record<string, AgentArchetype> = {
600
650
  // so it needs display metadata here and a per-workspace model in Model Configuration.
601
651
  kaizen: {
602
652
  kind: 'kaizen',
653
+ tier: 'advanced',
603
654
  label: 'Kaizen',
604
655
  icon: 'i-lucide-sparkles',
605
656
  color: '#2dd4bf',
@@ -613,6 +664,11 @@ export const SYSTEM_AGENT_META: Record<string, AgentArchetype> = {
613
664
  // but it still needs display metadata here so timelines/saved pipelines render it.
614
665
  'post-release-health': {
615
666
  kind: 'post-release-health',
667
+ // Intermediate rather than advanced: the palette already offers this gate ONLY when the
668
+ // workspace has an observability integration connected, and that connection is a stronger
669
+ // statement of intent than the tier — burying a gate the operator just wired two levels
670
+ // down would hide the capability they came for.
671
+ tier: 'intermediate',
616
672
  label: 'Post-Release Health',
617
673
  icon: 'i-lucide-activity',
618
674
  color: '#f43f5e',
@@ -971,6 +971,47 @@
971
971
  "saved": "Standard-Testumgebung gespeichert.",
972
972
  "savedState": "Gespeichert.",
973
973
  "saveFailed": "Die Standard-Testumgebung konnte nicht gespeichert werden."
974
+ },
975
+ "consensusGroups": {
976
+ "title": "Konsensgruppen",
977
+ "intro": "Wiederverwendbare Review-Panels, auf die ein Pipeline-Schritt hochstufen kann. Jede Gruppe trägt die Schätzungsschwelle, die eine Aufgabe erreichen muss — so bekommt schwerere Arbeit ein größeres Panel, ohne eigene Pipeline.",
978
+ "new": "Neue Gruppe",
979
+ "list": {
980
+ "empty": "Noch keine Konsensgruppen.",
981
+ "always": "Immer",
982
+ "bar": "Ab {bar}",
983
+ "editTitle": "Gruppe bearbeiten",
984
+ "deleteTitle": "Gruppe löschen",
985
+ "participantCount": "keine Teilnehmer | ein Teilnehmer | {count} Teilnehmer"
986
+ },
987
+ "editor": {
988
+ "nameLabel": "Name",
989
+ "namePlaceholder": "Tiefes Review-Panel",
990
+ "strategyLabel": "Strategie",
991
+ "descriptionLabel": "Beschreibung",
992
+ "descriptionPlaceholder": "Wofür dieses Panel gedacht ist",
993
+ "participantsLabel": "Teilnehmer",
994
+ "participantsHint": "Mindestens zwei. Vielfalt bei Rolle und Modell macht ein Panel besser als ein einzelnes Modell.",
995
+ "addParticipant": "Teilnehmer hinzufügen",
996
+ "framingPlaceholder": "Perspektive, aus der dieser Teilnehmer argumentiert",
997
+ "stepModel": "Modell des Schritts",
998
+ "synthesizerLabel": "Synthese-Modell",
999
+ "gatedLabel": "Nur für Aufgaben über einer Schwelle",
1000
+ "gatedHint": "Die Schätzung, die eine Aufgabe erreichen muss, um dieses Panel zu bekommen. Aus lassen, damit diese Gruppe immer gilt.",
1001
+ "complexityThreshold": "Komplexität",
1002
+ "gatingIncomplete": "Setze mindestens eine Schwelle oder schalte die Bedingung aus.",
1003
+ "unnamedRole": "Reviewer",
1004
+ "cancel": "Abbrechen",
1005
+ "save": "Gruppe speichern"
1006
+ },
1007
+ "confirmDelete": {
1008
+ "title": "Konsensgruppe löschen?",
1009
+ "body": "Schritte, die „{name}“ nennen, fallen auf ihre verbleibenden Gruppen zurück."
1010
+ },
1011
+ "toast": {
1012
+ "saveFailed": "Konsensgruppe konnte nicht gespeichert werden",
1013
+ "deleteFailed": "Konsensgruppe konnte nicht gelöscht werden"
1014
+ }
974
1015
  }
975
1016
  },
976
1017
  "inspector": {
@@ -3618,7 +3659,11 @@
3618
3659
  "skillNeedsPick": "Ein Skill-Schritt braucht einen ausgewählten Skill, bevor du speichern kannst.",
3619
3660
  "purposeStepsConflict": "Dieser Zweck schreibt keinen Code und führt keine Tests aus, doch die Pipeline enthält noch Implementierungs- oder Testschritte. Entfernen Sie diese oder setzen Sie den Zweck auf Entwicklung.",
3620
3661
  "promptEditTooltip": "Systemprompt dieses Agenten bearbeiten",
3621
- "promptEditedTooltip": "Der Systemprompt dieses Agenten ist für diesen Arbeitsbereich bearbeitet"
3662
+ "promptEditedTooltip": "Der Systemprompt dieses Agenten ist für diesen Arbeitsbereich bearbeitet",
3663
+ "consensusGroups": "Konsensgruppen",
3664
+ "consensusGroupsHint": "Wähle die wiederverwendbaren Panels, auf die dieser Schritt hochstufen darf. Jedes hat seine eigene Schätzungsschwelle; es läuft das anspruchsvollste, das die Aufgabe erreicht.",
3665
+ "consensusGroupsActive": "Dieser Schritt führt die ausgewählte Gruppe aus. Hebe die Auswahl aller Gruppen auf, um die Teilnehmer hier zu konfigurieren.",
3666
+ "consensusGroupAlways": "immer"
3622
3667
  },
3623
3668
  "progress": {
3624
3669
  "status": {
@@ -3727,6 +3772,17 @@
3727
3772
  "conflict": "Jemand anderes hat diesen Prompt geändert. Neu geladen - wenden Sie Ihre Änderung erneut an."
3728
3773
  }
3729
3774
  },
3775
+ "agentTier": {
3776
+ "label": "Agentenstufe",
3777
+ "basic": "Basis",
3778
+ "intermediate": "Fortgeschritten",
3779
+ "advanced": "Experte",
3780
+ "basicHint": "Nur die alltäglichen Agenten, aus denen eine Pipeline normalerweise besteht.",
3781
+ "intermediateHint": "Ergänzt die Agenten, die du regelmäßig einsetzt.",
3782
+ "advancedHint": "Zeigt alle Agenten, auch die spezialisierten.",
3783
+ "tooltip": "Wähle, wie viel des Agentenkatalogs angezeigt wird",
3784
+ "hidden": "{count} Agent ist auf dieser Stufe ausgeblendet. | {count} Agenten sind auf dieser Stufe ausgeblendet."
3785
+ },
3730
3786
  "requirements": {
3731
3787
  "title": "Anforderungsprüfung",
3732
3788
  "iteration": "Iteration {current} / {max}",
@@ -4864,7 +4920,8 @@
4864
4920
  "synthesizing": "Wird synthetisiert",
4865
4921
  "done": "Fertig",
4866
4922
  "failed": "Fehlgeschlagen"
4867
- }
4923
+ },
4924
+ "groupTitle": "Die Konsensgruppe, auf die dieser Lauf hochgestuft hat"
4868
4925
  },
4869
4926
  "spec": {
4870
4927
  "title": "Anforderungen",
@@ -3261,6 +3261,47 @@
3261
3261
  "saved": "Default test environment saved.",
3262
3262
  "savedState": "Saved.",
3263
3263
  "saveFailed": "Could not save the default test environment."
3264
+ },
3265
+ "consensusGroups": {
3266
+ "title": "Consensus groups",
3267
+ "intro": "Reusable review panels a pipeline step can escalate to. Each group carries the estimate bar a task must clear to earn it, so heavier work gets a bigger panel without a separate pipeline.",
3268
+ "new": "New group",
3269
+ "list": {
3270
+ "empty": "No consensus groups yet.",
3271
+ "always": "Always",
3272
+ "bar": "From {bar}",
3273
+ "editTitle": "Edit group",
3274
+ "deleteTitle": "Delete group",
3275
+ "participantCount": "no participants | one participant | {count} participants"
3276
+ },
3277
+ "editor": {
3278
+ "nameLabel": "Name",
3279
+ "namePlaceholder": "Deep review panel",
3280
+ "strategyLabel": "Strategy",
3281
+ "descriptionLabel": "Description",
3282
+ "descriptionPlaceholder": "What this panel is for",
3283
+ "participantsLabel": "Participants",
3284
+ "participantsHint": "At least two. Diversity of role and model is what makes a panel better than one model.",
3285
+ "addParticipant": "Add participant",
3286
+ "framingPlaceholder": "Perspective this participant argues from",
3287
+ "stepModel": "Step's model",
3288
+ "synthesizerLabel": "Synthesizer model",
3289
+ "gatedLabel": "Only for tasks above a threshold",
3290
+ "gatedHint": "The estimate a task must reach to earn this panel. Leave off to make this the group that always applies.",
3291
+ "complexityThreshold": "Complexity",
3292
+ "gatingIncomplete": "Set at least one threshold, or turn the gate off.",
3293
+ "unnamedRole": "Reviewer",
3294
+ "cancel": "Cancel",
3295
+ "save": "Save group"
3296
+ },
3297
+ "confirmDelete": {
3298
+ "title": "Delete consensus group?",
3299
+ "body": "Steps that name \"{name}\" fall back to their remaining groups."
3300
+ },
3301
+ "toast": {
3302
+ "saveFailed": "Could not save the consensus group",
3303
+ "deleteFailed": "Could not delete the consensus group"
3304
+ }
3264
3305
  }
3265
3306
  },
3266
3307
  "providers": {
@@ -4049,7 +4090,11 @@
4049
4090
  "skillNeedsPick": "A Skill step needs a skill selected before you can save.",
4050
4091
  "purposeStepsConflict": "This purpose writes no code and runs no tests, but the pipeline still has implementation or testing steps. Remove them or switch the purpose to Build.",
4051
4092
  "promptEditTooltip": "Edit this agent's system prompt",
4052
- "promptEditedTooltip": "This agent's system prompt is edited for this workspace"
4093
+ "promptEditedTooltip": "This agent's system prompt is edited for this workspace",
4094
+ "consensusGroups": "Consensus groups",
4095
+ "consensusGroupsHint": "Pick the reusable panels this step may escalate to. Each carries its own estimate bar; the most demanding one the task clears is the one that runs.",
4096
+ "consensusGroupsActive": "This step runs the selected group. Deselect every group to configure participants here instead.",
4097
+ "consensusGroupAlways": "always"
4053
4098
  },
4054
4099
  "progress": {
4055
4100
  "status": {
@@ -4167,6 +4212,23 @@
4167
4212
  "conflict": "Someone else changed this prompt. Reloaded - re-apply your edit."
4168
4213
  }
4169
4214
  },
4215
+ "agentTier": {
4216
+ "label": "Agent tier",
4217
+ "@label": {
4218
+ "description": "Label of the control that chooses how much of the agent catalog is shown. \"Tier\" here means level of depth/specialisation, never a pricing plan."
4219
+ },
4220
+ "basic": "Basic",
4221
+ "intermediate": "Intermediate",
4222
+ "advanced": "Advanced",
4223
+ "@advanced": {
4224
+ "description": "The widest of the three levels: selecting it shows every agent, not only the advanced ones."
4225
+ },
4226
+ "basicHint": "Only the everyday agents a pipeline is normally built from.",
4227
+ "intermediateHint": "Adds the agents you reach for regularly.",
4228
+ "advancedHint": "Shows every agent, including the specialist ones.",
4229
+ "tooltip": "Choose how much of the agent catalog to show",
4230
+ "hidden": "{count} agent hidden at this tier. | {count} agents hidden at this tier."
4231
+ },
4170
4232
  "riskPolicy": {
4171
4233
  "health": {
4172
4234
  "title": "Risk policy updates",
@@ -4582,7 +4644,8 @@
4582
4644
  "synthesizing": "Synthesizing",
4583
4645
  "done": "Done",
4584
4646
  "failed": "Failed"
4585
- }
4647
+ },
4648
+ "groupTitle": "The consensus group this run escalated to"
4586
4649
  },
4587
4650
  "brainstorm": {
4588
4651
  "title": {
@@ -3167,6 +3167,47 @@
3167
3167
  "saved": "Entorno de pruebas predeterminado guardado.",
3168
3168
  "savedState": "Guardado.",
3169
3169
  "saveFailed": "No se ha podido guardar el entorno de pruebas predeterminado."
3170
+ },
3171
+ "consensusGroups": {
3172
+ "title": "Grupos de consenso",
3173
+ "intro": "Paneles de revisión reutilizables a los que puede escalar un paso de la canalización. Cada grupo lleva el umbral de estimación que una tarea debe superar, así el trabajo más pesado recibe un panel mayor sin necesidad de otra canalización.",
3174
+ "new": "Nuevo grupo",
3175
+ "list": {
3176
+ "empty": "Todavía no hay grupos de consenso.",
3177
+ "always": "Siempre",
3178
+ "bar": "Desde {bar}",
3179
+ "editTitle": "Editar grupo",
3180
+ "deleteTitle": "Eliminar grupo",
3181
+ "participantCount": "sin participantes | un participante | {count} participantes"
3182
+ },
3183
+ "editor": {
3184
+ "nameLabel": "Nombre",
3185
+ "namePlaceholder": "Panel de revisión profunda",
3186
+ "strategyLabel": "Estrategia",
3187
+ "descriptionLabel": "Descripción",
3188
+ "descriptionPlaceholder": "Para qué sirve este panel",
3189
+ "participantsLabel": "Participantes",
3190
+ "participantsHint": "Al menos dos. La diversidad de rol y de modelo es lo que hace que un panel supere a un solo modelo.",
3191
+ "addParticipant": "Añadir participante",
3192
+ "framingPlaceholder": "Perspectiva desde la que argumenta este participante",
3193
+ "stepModel": "Modelo del paso",
3194
+ "synthesizerLabel": "Modelo sintetizador",
3195
+ "gatedLabel": "Solo para tareas por encima de un umbral",
3196
+ "gatedHint": "La estimación que una tarea debe alcanzar para merecer este panel. Déjalo desactivado para que este grupo se aplique siempre.",
3197
+ "complexityThreshold": "Complejidad",
3198
+ "gatingIncomplete": "Fija al menos un umbral o desactiva la condición.",
3199
+ "unnamedRole": "Revisor",
3200
+ "cancel": "Cancelar",
3201
+ "save": "Guardar grupo"
3202
+ },
3203
+ "confirmDelete": {
3204
+ "title": "¿Eliminar el grupo de consenso?",
3205
+ "body": "Los pasos que nombran «{name}» recurrirán a sus grupos restantes."
3206
+ },
3207
+ "toast": {
3208
+ "saveFailed": "No se pudo guardar el grupo de consenso",
3209
+ "deleteFailed": "No se pudo eliminar el grupo de consenso"
3210
+ }
3170
3211
  }
3171
3212
  },
3172
3213
  "providers": {
@@ -3934,7 +3975,11 @@
3934
3975
  "skillNeedsPick": "Un paso Skill necesita una habilidad seleccionada antes de poder guardar.",
3935
3976
  "purposeStepsConflict": "Este propósito no escribe código ni ejecuta pruebas, pero la canalización todavía tiene pasos de implementación o de prueba. Quítalos o cambia el propósito a Desarrollo.",
3936
3977
  "promptEditTooltip": "Editar el prompt del sistema de este agente",
3937
- "promptEditedTooltip": "El prompt del sistema de este agente está editado para este espacio de trabajo"
3978
+ "promptEditedTooltip": "El prompt del sistema de este agente está editado para este espacio de trabajo",
3979
+ "consensusGroups": "Grupos de consenso",
3980
+ "consensusGroupsHint": "Elige los paneles reutilizables a los que este paso puede escalar. Cada uno lleva su propio umbral de estimación; se ejecuta el más exigente que la tarea supere.",
3981
+ "consensusGroupsActive": "Este paso ejecuta el grupo seleccionado. Deselecciona todos los grupos para configurar aquí los participantes.",
3982
+ "consensusGroupAlways": "siempre"
3938
3983
  },
3939
3984
  "progress": {
3940
3985
  "status": {
@@ -4043,6 +4088,17 @@
4043
4088
  "conflict": "Otra persona cambió este prompt. Se recargó: vuelve a aplicar tu edición."
4044
4089
  }
4045
4090
  },
4091
+ "agentTier": {
4092
+ "label": "Nivel de agentes",
4093
+ "basic": "Básico",
4094
+ "intermediate": "Intermedio",
4095
+ "advanced": "Avanzado",
4096
+ "basicHint": "Solo los agentes de uso diario con los que se arma una pipeline.",
4097
+ "intermediateHint": "Añade los agentes que usas con regularidad.",
4098
+ "advancedHint": "Muestra todos los agentes, incluidos los especializados.",
4099
+ "tooltip": "Elige cuánto del catálogo de agentes se muestra",
4100
+ "hidden": "{count} agente oculto en este nivel. | {count} agentes ocultos en este nivel."
4101
+ },
4046
4102
  "palette": {
4047
4103
  "hint": "Haz clic en un agente para añadirlo al pipeline.",
4048
4104
  "customAgents": "Agentes personalizados"
@@ -4386,7 +4442,8 @@
4386
4442
  "synthesizing": "Sintetizando",
4387
4443
  "done": "Completado",
4388
4444
  "failed": "Fallido"
4389
- }
4445
+ },
4446
+ "groupTitle": "El grupo de consenso al que escaló esta ejecución"
4390
4447
  },
4391
4448
  "brainstorm": {
4392
4449
  "title": {