@cat-factory/app 0.89.0 → 0.90.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/app/components/gates/GateResultView.vue +40 -2
- package/app/utils/catalog.ts +14 -0
- package/i18n/locales/en.json +7 -1
- package/i18n/locales/es.json +7 -1
- package/i18n/locales/fr.json +7 -1
- package/i18n/locales/he.json +7 -1
- package/i18n/locales/ja.json +7 -1
- package/i18n/locales/pl.json +7 -1
- package/i18n/locales/tr.json +7 -1
- package/i18n/locales/uk.json +7 -1
- package/package.json +1 -1
|
@@ -35,9 +35,16 @@ const gate = computed<GateStepState | null>(() => step.value?.gate ?? null)
|
|
|
35
35
|
|
|
36
36
|
const isCi = computed(() => step.value?.agentKind === 'ci')
|
|
37
37
|
const isHumanReview = computed(() => step.value?.agentKind === 'human-review')
|
|
38
|
+
const isDocQuality = computed(() => step.value?.agentKind === 'doc-quality')
|
|
38
39
|
const meta = computed(() => agentKindMeta(step.value?.agentKind ?? 'ci'))
|
|
39
40
|
const helperKind = computed(() =>
|
|
40
|
-
isHumanReview.value
|
|
41
|
+
isHumanReview.value
|
|
42
|
+
? 'fixer'
|
|
43
|
+
: isCi.value
|
|
44
|
+
? 'ci-fixer'
|
|
45
|
+
: isDocQuality.value
|
|
46
|
+
? 'doc-fixer'
|
|
47
|
+
: 'conflict-resolver',
|
|
41
48
|
)
|
|
42
49
|
const helperMeta = computed(() => agentKindMeta(helperKind.value))
|
|
43
50
|
|
|
@@ -46,7 +53,9 @@ const subtitle = computed(() =>
|
|
|
46
53
|
? t('gates.subtitle.humanReview')
|
|
47
54
|
: isCi.value
|
|
48
55
|
? t('gates.subtitle.ci')
|
|
49
|
-
:
|
|
56
|
+
: isDocQuality.value
|
|
57
|
+
? t('gates.subtitle.docQuality')
|
|
58
|
+
: t('gates.subtitle.conflicts'),
|
|
50
59
|
)
|
|
51
60
|
|
|
52
61
|
// Human-review: approval progress + the freeform "request a fix" control.
|
|
@@ -316,6 +325,35 @@ const conflictVerdict = computed(() => {
|
|
|
316
325
|
</p>
|
|
317
326
|
</template>
|
|
318
327
|
|
|
328
|
+
<!-- Doc quality: the deterministic structural findings the gate raised -->
|
|
329
|
+
<template v-else-if="isDocQuality">
|
|
330
|
+
<h3 class="mb-2 text-[11px] font-semibold uppercase tracking-wide text-slate-500">
|
|
331
|
+
{{ t('gates.docQuality.findings') }}
|
|
332
|
+
</h3>
|
|
333
|
+
<div
|
|
334
|
+
v-if="gate.lastFailureSummary"
|
|
335
|
+
class="relative rounded-md border border-slate-800 bg-slate-950/40 px-3 py-2"
|
|
336
|
+
>
|
|
337
|
+
<CopyButton :text="gate.lastFailureSummary" class="absolute end-1 top-1" />
|
|
338
|
+
<p class="whitespace-pre-wrap pe-8 text-[12px] leading-relaxed text-slate-300">
|
|
339
|
+
{{ gate.lastFailureSummary }}
|
|
340
|
+
</p>
|
|
341
|
+
</div>
|
|
342
|
+
<p v-else class="text-[13px] leading-relaxed text-slate-300">
|
|
343
|
+
{{ t('gates.docQuality.findingsFallback') }}
|
|
344
|
+
</p>
|
|
345
|
+
<a
|
|
346
|
+
v-if="prUrl"
|
|
347
|
+
:href="prUrl"
|
|
348
|
+
target="_blank"
|
|
349
|
+
rel="noopener"
|
|
350
|
+
class="mt-2 inline-flex items-center gap-1 text-[12px] text-sky-300 hover:text-sky-200 hover:underline"
|
|
351
|
+
>
|
|
352
|
+
{{ t('gates.docQuality.viewPr') }}
|
|
353
|
+
<UIcon name="i-lucide-external-link" class="h-3 w-3" />
|
|
354
|
+
</a>
|
|
355
|
+
</template>
|
|
356
|
+
|
|
319
357
|
<!-- Conflicts: verdict + the resolver's account of what it left -->
|
|
320
358
|
<template v-else>
|
|
321
359
|
<h3 class="mb-2 text-[11px] font-semibold uppercase tracking-wide text-slate-500">
|
package/app/utils/catalog.ts
CHANGED
|
@@ -437,6 +437,20 @@ export const SYSTEM_AGENT_META: Record<string, AgentArchetype> = {
|
|
|
437
437
|
// of the generic prose step-detail panel. Shared with the conflicts gate.
|
|
438
438
|
resultView: 'gate',
|
|
439
439
|
},
|
|
440
|
+
// The forward document pipelines' structural gate. Seed-only (no `category`, like ci /
|
|
441
|
+
// conflicts) — it's part of `pl_document(_quick)`, not a standing palette block — but it
|
|
442
|
+
// needs display metadata so timelines/saved pipelines render it. Its helper `doc-fixer`
|
|
443
|
+
// is a registered kind, so it arrives via the workspace snapshot's `customAgentKinds`.
|
|
444
|
+
'doc-quality': {
|
|
445
|
+
kind: 'doc-quality',
|
|
446
|
+
label: 'Doc Quality Gate',
|
|
447
|
+
icon: 'i-lucide-file-check-2',
|
|
448
|
+
color: '#818cf8',
|
|
449
|
+
description:
|
|
450
|
+
'Checks the drafted document for required sections, placeholders, links and heading structure, looping the doc fixer on problems.',
|
|
451
|
+
// Opens the dedicated gate window (verdict, attempts, the document findings).
|
|
452
|
+
resultView: 'gate',
|
|
453
|
+
},
|
|
440
454
|
'ci-fixer': {
|
|
441
455
|
kind: 'ci-fixer',
|
|
442
456
|
label: 'CI Fixer',
|
package/i18n/locales/en.json
CHANGED
|
@@ -3030,7 +3030,8 @@
|
|
|
3030
3030
|
"subtitle": {
|
|
3031
3031
|
"humanReview": "Waits for a human code review on the PR, looping the fixer on comments",
|
|
3032
3032
|
"ci": "Gates the PR on green CI, looping the CI fixer on failure",
|
|
3033
|
-
"conflicts": "Gates the PR on a clean merge, looping the resolver on conflicts"
|
|
3033
|
+
"conflicts": "Gates the PR on a clean merge, looping the resolver on conflicts",
|
|
3034
|
+
"docQuality": "Checks the drafted document's structure, looping the doc fixer on problems"
|
|
3034
3035
|
},
|
|
3035
3036
|
"status": {
|
|
3036
3037
|
"passed": "Passed",
|
|
@@ -3071,6 +3072,11 @@
|
|
|
3071
3072
|
"mergeability": "Mergeability",
|
|
3072
3073
|
"viewPr": "View pull request on GitHub"
|
|
3073
3074
|
},
|
|
3075
|
+
"docQuality": {
|
|
3076
|
+
"findings": "Document issues",
|
|
3077
|
+
"findingsFallback": "The document passed the structural checks.",
|
|
3078
|
+
"viewPr": "View pull request on GitHub"
|
|
3079
|
+
},
|
|
3074
3080
|
"attemptsHeading": "{helper} attempts",
|
|
3075
3081
|
"attempt": "Attempt {number}",
|
|
3076
3082
|
"attemptInstructions": "Handed to {helper}",
|
package/i18n/locales/es.json
CHANGED
|
@@ -2938,7 +2938,8 @@
|
|
|
2938
2938
|
"subtitle": {
|
|
2939
2939
|
"humanReview": "Espera una revisión de código humana en el PR, repitiendo el corrector ante los comentarios",
|
|
2940
2940
|
"ci": "Bloquea el PR hasta que la CI esté verde, repitiendo el corrector de CI ante los fallos",
|
|
2941
|
-
"conflicts": "Bloquea el PR hasta una fusión limpia, repitiendo el resolutor ante los conflictos"
|
|
2941
|
+
"conflicts": "Bloquea el PR hasta una fusión limpia, repitiendo el resolutor ante los conflictos",
|
|
2942
|
+
"docQuality": "Comprueba la estructura del documento redactado, repitiendo el corrector de documentos ante los problemas"
|
|
2942
2943
|
},
|
|
2943
2944
|
"status": {
|
|
2944
2945
|
"passed": "Aprobado",
|
|
@@ -2979,6 +2980,11 @@
|
|
|
2979
2980
|
"mergeability": "Fusionabilidad",
|
|
2980
2981
|
"viewPr": "Ver la pull request en GitHub"
|
|
2981
2982
|
},
|
|
2983
|
+
"docQuality": {
|
|
2984
|
+
"findings": "Problemas del documento",
|
|
2985
|
+
"findingsFallback": "El documento superó las comprobaciones estructurales.",
|
|
2986
|
+
"viewPr": "Ver la pull request en GitHub"
|
|
2987
|
+
},
|
|
2982
2988
|
"attemptsHeading": "Intentos de {helper}",
|
|
2983
2989
|
"attempt": "Intento {number}",
|
|
2984
2990
|
"attemptInstructions": "Entregado a {helper}",
|
package/i18n/locales/fr.json
CHANGED
|
@@ -2938,7 +2938,8 @@
|
|
|
2938
2938
|
"subtitle": {
|
|
2939
2939
|
"humanReview": "Attend une revue de code humaine sur la PR, en relançant le correcteur à chaque commentaire",
|
|
2940
2940
|
"ci": "Bloque la PR jusqu'à une CI verte, en relançant le correcteur de CI en cas d'échec",
|
|
2941
|
-
"conflicts": "Bloque la PR jusqu'à une fusion propre, en relançant le résolveur en cas de conflits"
|
|
2941
|
+
"conflicts": "Bloque la PR jusqu'à une fusion propre, en relançant le résolveur en cas de conflits",
|
|
2942
|
+
"docQuality": "Vérifie la structure du document rédigé, en relançant le correcteur de documents en cas de problème"
|
|
2942
2943
|
},
|
|
2943
2944
|
"status": {
|
|
2944
2945
|
"passed": "Réussi",
|
|
@@ -2979,6 +2980,11 @@
|
|
|
2979
2980
|
"mergeability": "Fusionnabilité",
|
|
2980
2981
|
"viewPr": "Voir la pull request sur GitHub"
|
|
2981
2982
|
},
|
|
2983
|
+
"docQuality": {
|
|
2984
|
+
"findings": "Problèmes du document",
|
|
2985
|
+
"findingsFallback": "Le document a réussi les vérifications structurelles.",
|
|
2986
|
+
"viewPr": "Voir la pull request sur GitHub"
|
|
2987
|
+
},
|
|
2982
2988
|
"attemptsHeading": "Tentatives du {helper}",
|
|
2983
2989
|
"attempt": "Tentative {number}",
|
|
2984
2990
|
"attemptInstructions": "Transmis à {helper}",
|
package/i18n/locales/he.json
CHANGED
|
@@ -2943,7 +2943,8 @@
|
|
|
2943
2943
|
"subtitle": {
|
|
2944
2944
|
"humanReview": "ממתין לסקירת קוד אנושית על ה-PR, ומפעיל בלולאה את המתקן על הערות",
|
|
2945
2945
|
"ci": "מגדר את ה-PR על CI ירוק, ומפעיל בלולאה את מתקן ה-CI בכישלון",
|
|
2946
|
-
"conflicts": "מגדר את ה-PR על מיזוג נקי, ומפעיל בלולאה את הפותר בהתנגשויות"
|
|
2946
|
+
"conflicts": "מגדר את ה-PR על מיזוג נקי, ומפעיל בלולאה את הפותר בהתנגשויות",
|
|
2947
|
+
"docQuality": "בודק את מבנה המסמך שנוסח, ומפעיל בלולאה את מתקן המסמכים בבעיות"
|
|
2947
2948
|
},
|
|
2948
2949
|
"status": {
|
|
2949
2950
|
"passed": "עבר",
|
|
@@ -2984,6 +2985,11 @@
|
|
|
2984
2985
|
"mergeability": "יכולת מיזוג",
|
|
2985
2986
|
"viewPr": "הצג את בקשת המשיכה ב-GitHub"
|
|
2986
2987
|
},
|
|
2988
|
+
"docQuality": {
|
|
2989
|
+
"findings": "בעיות במסמך",
|
|
2990
|
+
"findingsFallback": "המסמך עבר את בדיקות המבנה.",
|
|
2991
|
+
"viewPr": "הצג את בקשת המשיכה ב-GitHub"
|
|
2992
|
+
},
|
|
2987
2993
|
"attemptsHeading": "ניסיונות {helper}",
|
|
2988
2994
|
"attempt": "ניסיון {number}",
|
|
2989
2995
|
"attemptInstructions": "נמסר ל־{helper}",
|
package/i18n/locales/ja.json
CHANGED
|
@@ -2947,7 +2947,8 @@
|
|
|
2947
2947
|
"subtitle": {
|
|
2948
2948
|
"humanReview": "PR の人によるコードレビューを待ち、コメントに応じて fixer をループします",
|
|
2949
2949
|
"ci": "CI がグリーンになるまで PR をゲートし、失敗時に CI fixer をループします",
|
|
2950
|
-
"conflicts": "クリーンなマージになるまで PR をゲートし、コンフリクト時に resolver をループします"
|
|
2950
|
+
"conflicts": "クリーンなマージになるまで PR をゲートし、コンフリクト時に resolver をループします",
|
|
2951
|
+
"docQuality": "作成された文書の構造をチェックし、問題があれば doc fixer をループします"
|
|
2951
2952
|
},
|
|
2952
2953
|
"status": {
|
|
2953
2954
|
"passed": "合格",
|
|
@@ -2988,6 +2989,11 @@
|
|
|
2988
2989
|
"mergeability": "マージ可能性",
|
|
2989
2990
|
"viewPr": "GitHub でプルリクエストを表示"
|
|
2990
2991
|
},
|
|
2992
|
+
"docQuality": {
|
|
2993
|
+
"findings": "文書の問題",
|
|
2994
|
+
"findingsFallback": "文書は構造チェックに合格しました。",
|
|
2995
|
+
"viewPr": "GitHub でプルリクエストを表示"
|
|
2996
|
+
},
|
|
2991
2997
|
"attemptsHeading": "{helper} の試行",
|
|
2992
2998
|
"attempt": "試行 {number}",
|
|
2993
2999
|
"attemptInstructions": "{helper} への指示",
|
package/i18n/locales/pl.json
CHANGED
|
@@ -2938,7 +2938,8 @@
|
|
|
2938
2938
|
"subtitle": {
|
|
2939
2939
|
"humanReview": "Czeka na recenzję kodu przez człowieka na PR, ponawiając korektora po komentarzach",
|
|
2940
2940
|
"ci": "Blokuje PR do zielonego CI, ponawiając korektora CI przy niepowodzeniu",
|
|
2941
|
-
"conflicts": "Blokuje PR do czystego scalenia, ponawiając rozwiązywacza przy konfliktach"
|
|
2941
|
+
"conflicts": "Blokuje PR do czystego scalenia, ponawiając rozwiązywacza przy konfliktach",
|
|
2942
|
+
"docQuality": "Sprawdza strukturę przygotowanego dokumentu, ponawiając korektora dokumentów przy problemach"
|
|
2942
2943
|
},
|
|
2943
2944
|
"status": {
|
|
2944
2945
|
"passed": "Zaliczono",
|
|
@@ -2979,6 +2980,11 @@
|
|
|
2979
2980
|
"mergeability": "Możliwość scalenia",
|
|
2980
2981
|
"viewPr": "Zobacz pull request na GitHub"
|
|
2981
2982
|
},
|
|
2983
|
+
"docQuality": {
|
|
2984
|
+
"findings": "Problemy dokumentu",
|
|
2985
|
+
"findingsFallback": "Dokument przeszedł kontrole strukturalne.",
|
|
2986
|
+
"viewPr": "Zobacz pull request na GitHub"
|
|
2987
|
+
},
|
|
2982
2988
|
"attemptsHeading": "Próby: {helper}",
|
|
2983
2989
|
"attempt": "Próba {number}",
|
|
2984
2990
|
"attemptInstructions": "Przekazano do: {helper}",
|
package/i18n/locales/tr.json
CHANGED
|
@@ -2947,7 +2947,8 @@
|
|
|
2947
2947
|
"subtitle": {
|
|
2948
2948
|
"humanReview": "PR üzerinde bir insan kod incelemesini bekler, yorumlar üzerine düzelticiyi döngüye alır",
|
|
2949
2949
|
"ci": "PR'ı yeşil CI üzerinde kapı altına alır, başarısızlıkta CI düzelticiyi döngüye alır",
|
|
2950
|
-
"conflicts": "PR'ı temiz bir birleştirme üzerinde kapı altına alır, çakışmalarda çözücüyü döngüye alır"
|
|
2950
|
+
"conflicts": "PR'ı temiz bir birleştirme üzerinde kapı altına alır, çakışmalarda çözücüyü döngüye alır",
|
|
2951
|
+
"docQuality": "Hazırlanan belgenin yapısını denetler, sorunlarda belge düzelticiyi döngüye alır"
|
|
2951
2952
|
},
|
|
2952
2953
|
"status": {
|
|
2953
2954
|
"passed": "Geçti",
|
|
@@ -2988,6 +2989,11 @@
|
|
|
2988
2989
|
"mergeability": "Birleştirilebilirlik",
|
|
2989
2990
|
"viewPr": "Çekme isteğini GitHub'da görüntüle"
|
|
2990
2991
|
},
|
|
2992
|
+
"docQuality": {
|
|
2993
|
+
"findings": "Belge sorunları",
|
|
2994
|
+
"findingsFallback": "Belge yapısal denetimleri geçti.",
|
|
2995
|
+
"viewPr": "Çekme isteğini GitHub'da görüntüle"
|
|
2996
|
+
},
|
|
2991
2997
|
"attemptsHeading": "{helper} denemeleri",
|
|
2992
2998
|
"attempt": "Deneme {number}",
|
|
2993
2999
|
"attemptInstructions": "{helper}'a iletildi",
|
package/i18n/locales/uk.json
CHANGED
|
@@ -2938,7 +2938,8 @@
|
|
|
2938
2938
|
"subtitle": {
|
|
2939
2939
|
"humanReview": "Чекає на огляд коду людиною в PR, повторюючи виправлювача після коментарів",
|
|
2940
2940
|
"ci": "Блокує PR до зеленого CI, повторюючи виправлювача CI у разі помилки",
|
|
2941
|
-
"conflicts": "Блокує PR до чистого злиття, повторюючи розв'язувача у разі конфліктів"
|
|
2941
|
+
"conflicts": "Блокує PR до чистого злиття, повторюючи розв'язувача у разі конфліктів",
|
|
2942
|
+
"docQuality": "Перевіряє структуру підготовленого документа, повторюючи виправлювача документів у разі проблем"
|
|
2942
2943
|
},
|
|
2943
2944
|
"status": {
|
|
2944
2945
|
"passed": "Пройдено",
|
|
@@ -2979,6 +2980,11 @@
|
|
|
2979
2980
|
"mergeability": "Можливість злиття",
|
|
2980
2981
|
"viewPr": "Переглянути pull request на GitHub"
|
|
2981
2982
|
},
|
|
2983
|
+
"docQuality": {
|
|
2984
|
+
"findings": "Проблеми документа",
|
|
2985
|
+
"findingsFallback": "Документ пройшов структурні перевірки.",
|
|
2986
|
+
"viewPr": "Переглянути pull request на GitHub"
|
|
2987
|
+
},
|
|
2982
2988
|
"attemptsHeading": "Спроби: {helper}",
|
|
2983
2989
|
"attempt": "Спроба {number}",
|
|
2984
2990
|
"attemptInstructions": "Передано: {helper}",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/app",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.90.0",
|
|
4
4
|
"description": "Reusable Nuxt layer for the Agent Architecture Board SPA (components, stores, composables, pages). Consume it from a thin deployment app via `extends: ['@cat-factory/app']` and point it at your backend with NUXT_PUBLIC_API_BASE. See deploy/frontend for an example.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|