@cat-factory/app 0.139.0 → 0.140.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.
@@ -1,5 +1,29 @@
1
1
  import { frameAllowsVisualPipeline, pipelineHasVisualStep } from '@cat-factory/contracts'
2
- import type { Block, Pipeline } from '~/types/domain'
2
+ import type { AgentKind, Block, Pipeline } from '~/types/domain'
3
+
4
+ /** One agent step of a pipeline as shown in a preview: its kind + whether it's a human-gated step. */
5
+ export interface PipelineDisplayStep {
6
+ kind: AgentKind
7
+ /** A human approval gate pauses the run after this step (`gates[i]`). */
8
+ gated: boolean
9
+ }
10
+
11
+ /**
12
+ * The steps a pipeline preview should render: the ENABLED steps in order (a step disabled by
13
+ * default — `enabled[i] === false` — is skipped at run, so it would misrepresent the pipeline to
14
+ * list it), each flagged when it carries a human approval gate. Companions are included as their
15
+ * own chips, mirroring how the run timeline lists every step.
16
+ */
17
+ export function pipelineDisplaySteps(pipeline: Pipeline): PipelineDisplayStep[] {
18
+ return pipeline.agentKinds
19
+ .map((kind, i) => ({
20
+ kind,
21
+ enabled: pipeline.enabled?.[i] !== false,
22
+ gated: pipeline.gates?.[i] === true,
23
+ }))
24
+ .filter((s) => s.enabled)
25
+ .map(({ kind, gated }) => ({ kind, gated }))
26
+ }
3
27
 
4
28
  // Surface counterpart to the backend's slice-4c run-start gate: a pipeline with a visual step
5
29
  // (`tester-ui` / `visual-confirmation`) may run only on a frame with a UI to exercise — a
@@ -2936,6 +2936,17 @@
2936
2936
  "emptySearchable": "Nach Titel suchen oder ein importiertes Dokument auswählen.",
2937
2937
  "emptyRefOnly": "Fügen Sie eine Seiten-URL oder -ID ein, um sie anzuhängen."
2938
2938
  },
2939
+ "repoPicker": {
2940
+ "searchRepoPlaceholder": "Repositorys suchen…",
2941
+ "clearRepo": "Repository entfernen",
2942
+ "searchTab": "Dateien suchen",
2943
+ "browseTab": "Durchsuchen",
2944
+ "searchFilesPlaceholder": "Dateien nach Pfad suchen…",
2945
+ "searchFilesHint": "Tippen, um Dateien in diesem Repository zu suchen.",
2946
+ "noFileMatches": "Keine passenden Dateien.",
2947
+ "filesFailed": "Dateien konnten nicht geladen werden: {error}",
2948
+ "moreFiles": "Es werden die ersten {count} Treffer angezeigt – grenzen Sie Ihre Suche ein."
2949
+ },
2939
2950
  "import": {
2940
2951
  "title": "Aus einer Dokumentquelle importieren",
2941
2952
  "connectFirst": "Verbinden Sie zuerst eine Dokumentquelle.",
@@ -3084,6 +3095,13 @@
3084
3095
  "proceed": "Trotzdem fortfahren",
3085
3096
  "stopReset": "Aufgabe stoppen & zurücksetzen"
3086
3097
  },
3098
+ "preview": {
3099
+ "stepCount": "{count} Schritt | {count} Schritte",
3100
+ "gated": "Manuelle Freigabe nach diesem Schritt"
3101
+ },
3102
+ "picker": {
3103
+ "noneHint": "Keine Standard-Pipeline. Du wählst beim Ausführen der Aufgabe eine aus."
3104
+ },
3087
3105
  "builder": {
3088
3106
  "title": "Pipeline-Builder",
3089
3107
  "agentPalette": "Agenten-Palette",
@@ -3092,6 +3110,7 @@
3092
3110
  "configureModels": "Modelle konfigurieren",
3093
3111
  "configureModelsTooltip": "Modell-Presets verwalten (auf welchem Modell jeder Agent läuft)",
3094
3112
  "namePlaceholder": "Pipeline-Name",
3113
+ "descriptionPlaceholder": "Beschreibung (wird bei der Pipeline-Auswahl angezeigt)",
3095
3114
  "labelPlaceholder": "+ Label",
3096
3115
  "gatingNeedsEstimator": "Ein Gated-Schritt benötigt davor einen Task Estimator. Fügen Sie einen hinzu, sonst wird die Pipeline nicht gespeichert.",
3097
3116
  "emptyDraft": "Klicken Sie links auf Agenten, um eine lineare Pipeline zusammenzustellen.",
@@ -3892,6 +3911,7 @@
3892
3911
  "retry": "Erneut versuchen",
3893
3912
  "copy": "Kopieren",
3894
3913
  "copied": "In die Zwischenablage kopiert",
3914
+ "copyDetails": "Details kopieren",
3895
3915
  "reveal": "Anzeigen",
3896
3916
  "hide": "Verbergen",
3897
3917
  "delete": "Löschen",
@@ -30,6 +30,7 @@
30
30
  "retry": "Retry",
31
31
  "copy": "Copy",
32
32
  "copied": "Copied to clipboard",
33
+ "copyDetails": "Copy details",
33
34
  "reveal": "Reveal",
34
35
  "hide": "Hide",
35
36
  "delete": "Delete",
@@ -3298,6 +3299,17 @@
3298
3299
  "emptySearchable": "Search by title, or pick an imported document.",
3299
3300
  "emptyRefOnly": "Paste a page URL or ID to attach it."
3300
3301
  },
3302
+ "repoPicker": {
3303
+ "searchRepoPlaceholder": "Search repositories…",
3304
+ "clearRepo": "Clear repository",
3305
+ "searchTab": "Search files",
3306
+ "browseTab": "Browse",
3307
+ "searchFilesPlaceholder": "Search files by path…",
3308
+ "searchFilesHint": "Type to search files in this repository.",
3309
+ "noFileMatches": "No matching files.",
3310
+ "filesFailed": "Couldn't load files: {error}",
3311
+ "moreFiles": "Showing the first {count} matches — refine your search to narrow it down."
3312
+ },
3301
3313
  "import": {
3302
3314
  "title": "Import from a document source",
3303
3315
  "connectFirst": "Connect a document source first.",
@@ -3449,6 +3461,13 @@
3449
3461
  "proceed": "Proceed anyway",
3450
3462
  "stopReset": "Stop & reset task"
3451
3463
  },
3464
+ "preview": {
3465
+ "stepCount": "{count} step | {count} steps",
3466
+ "gated": "Human approval gate after this step"
3467
+ },
3468
+ "picker": {
3469
+ "noneHint": "No default pipeline. You choose one when you run the task."
3470
+ },
3452
3471
  "builder": {
3453
3472
  "title": "Pipeline builder",
3454
3473
  "agentPalette": "Agent palette",
@@ -3457,6 +3476,7 @@
3457
3476
  "configureModels": "Configure models",
3458
3477
  "configureModelsTooltip": "Manage model presets (which model each agent runs on)",
3459
3478
  "namePlaceholder": "Pipeline name",
3479
+ "descriptionPlaceholder": "Description (shown when picking this pipeline)",
3460
3480
  "labelPlaceholder": "+ label",
3461
3481
  "gatingNeedsEstimator": "A gated step needs a Task Estimator before it. Add one or the pipeline won't save.",
3462
3482
  "emptyDraft": "Click agents on the left to assemble a linear pipeline.",
@@ -49,6 +49,7 @@
49
49
  "reconfigureHint": "Puedes volver a configurarlo más tarde."
50
50
  },
51
51
  "copied": "Copiado al portapapeles",
52
+ "copyDetails": "Copiar detalles",
52
53
  "reveal": "Mostrar",
53
54
  "hide": "Ocultar",
54
55
  "disconnect": "Desconectar",
@@ -3202,6 +3203,17 @@
3202
3203
  "emptySearchable": "Busca por título o elige un documento importado.",
3203
3204
  "emptyRefOnly": "Pega la URL o el ID de una página para adjuntarla."
3204
3205
  },
3206
+ "repoPicker": {
3207
+ "searchRepoPlaceholder": "Buscar repositorios…",
3208
+ "clearRepo": "Quitar repositorio",
3209
+ "searchTab": "Buscar archivos",
3210
+ "browseTab": "Explorar",
3211
+ "searchFilesPlaceholder": "Buscar archivos por ruta…",
3212
+ "searchFilesHint": "Escribe para buscar archivos en este repositorio.",
3213
+ "noFileMatches": "No hay archivos coincidentes.",
3214
+ "filesFailed": "No se pudieron cargar los archivos: {error}",
3215
+ "moreFiles": "Mostrando las primeras {count} coincidencias; refina tu búsqueda para acotarla."
3216
+ },
3205
3217
  "import": {
3206
3218
  "title": "Importar desde una fuente de documentos",
3207
3219
  "connectFirst": "Conecta primero una fuente de documentos.",
@@ -3350,6 +3362,13 @@
3350
3362
  "proceed": "Continuar de todos modos",
3351
3363
  "stopReset": "Detener y reiniciar la tarea"
3352
3364
  },
3365
+ "preview": {
3366
+ "stepCount": "{count} paso | {count} pasos",
3367
+ "gated": "Aprobación humana después de este paso"
3368
+ },
3369
+ "picker": {
3370
+ "noneHint": "Sin pipeline predeterminado. Eliges uno al ejecutar la tarea."
3371
+ },
3353
3372
  "builder": {
3354
3373
  "title": "Constructor de pipelines",
3355
3374
  "agentPalette": "Paleta de agentes",
@@ -3358,6 +3377,7 @@
3358
3377
  "configureModels": "Configurar modelos",
3359
3378
  "configureModelsTooltip": "Gestionar los preajustes de modelos (qué modelo ejecuta cada agente)",
3360
3379
  "namePlaceholder": "Nombre del pipeline",
3380
+ "descriptionPlaceholder": "Descripción (se muestra al elegir este pipeline)",
3361
3381
  "labelPlaceholder": "+ etiqueta",
3362
3382
  "gatingNeedsEstimator": "Un paso con compuerta necesita un Task Estimator antes. Añade uno o el pipeline no se guardará.",
3363
3383
  "emptyDraft": "Haz clic en los agentes de la izquierda para montar un pipeline lineal.",
@@ -49,6 +49,7 @@
49
49
  "reconfigureHint": "Vous pourrez le reconfigurer plus tard."
50
50
  },
51
51
  "copied": "Copié dans le presse-papiers",
52
+ "copyDetails": "Copier les détails",
52
53
  "reveal": "Afficher",
53
54
  "hide": "Masquer",
54
55
  "disconnect": "Déconnecter",
@@ -3202,6 +3203,17 @@
3202
3203
  "emptySearchable": "Recherchez par titre ou choisissez un document importé.",
3203
3204
  "emptyRefOnly": "Collez l'URL ou l'ID d'une page pour la joindre."
3204
3205
  },
3206
+ "repoPicker": {
3207
+ "searchRepoPlaceholder": "Rechercher des dépôts…",
3208
+ "clearRepo": "Effacer le dépôt",
3209
+ "searchTab": "Rechercher des fichiers",
3210
+ "browseTab": "Parcourir",
3211
+ "searchFilesPlaceholder": "Rechercher des fichiers par chemin…",
3212
+ "searchFilesHint": "Saisissez du texte pour rechercher des fichiers dans ce dépôt.",
3213
+ "noFileMatches": "Aucun fichier correspondant.",
3214
+ "filesFailed": "Impossible de charger les fichiers : {error}",
3215
+ "moreFiles": "Affichage des {count} premiers résultats ; affinez votre recherche pour la restreindre."
3216
+ },
3205
3217
  "import": {
3206
3218
  "title": "Importer depuis une source de documents",
3207
3219
  "connectFirst": "Connectez d'abord une source de documents.",
@@ -3350,6 +3362,13 @@
3350
3362
  "proceed": "Continuer quand même",
3351
3363
  "stopReset": "Arrêter et réinitialiser la tâche"
3352
3364
  },
3365
+ "preview": {
3366
+ "stepCount": "{count} étape | {count} étapes",
3367
+ "gated": "Validation humaine après cette étape"
3368
+ },
3369
+ "picker": {
3370
+ "noneHint": "Aucun pipeline par défaut. Vous en choisissez un au lancement de la tâche."
3371
+ },
3353
3372
  "builder": {
3354
3373
  "title": "Constructeur de pipelines",
3355
3374
  "agentPalette": "Palette d'agents",
@@ -3358,6 +3377,7 @@
3358
3377
  "configureModels": "Configurer les modèles",
3359
3378
  "configureModelsTooltip": "Gérer les préréglages de modèles (quel modèle exécute chaque agent)",
3360
3379
  "namePlaceholder": "Nom du pipeline",
3380
+ "descriptionPlaceholder": "Description (affichée lors du choix de ce pipeline)",
3361
3381
  "labelPlaceholder": "+ étiquette",
3362
3382
  "gatingNeedsEstimator": "Une étape sous condition nécessite un Task Estimator avant elle. Ajoutez-en un, sinon le pipeline ne sera pas enregistré.",
3363
3383
  "emptyDraft": "Cliquez sur les agents à gauche pour assembler un pipeline linéaire.",
@@ -49,6 +49,7 @@
49
49
  "reconfigureHint": "אפשר להגדיר זאת שוב מאוחר יותר."
50
50
  },
51
51
  "copied": "הועתק ללוח",
52
+ "copyDetails": "העתקת פרטים",
52
53
  "reveal": "הצג",
53
54
  "hide": "הסתר",
54
55
  "disconnect": "נתק",
@@ -3213,6 +3214,17 @@
3213
3214
  "emptySearchable": "חפש לפי כותרת, או בחר מסמך שיובא.",
3214
3215
  "emptyRefOnly": "הדבק כתובת URL או מזהה של דף כדי לצרף אותו."
3215
3216
  },
3217
+ "repoPicker": {
3218
+ "searchRepoPlaceholder": "חיפוש מאגרים…",
3219
+ "clearRepo": "ניקוי מאגר",
3220
+ "searchTab": "חיפוש קבצים",
3221
+ "browseTab": "עיון",
3222
+ "searchFilesPlaceholder": "חיפוש קבצים לפי נתיב…",
3223
+ "searchFilesHint": "הקלד כדי לחפש קבצים במאגר זה.",
3224
+ "noFileMatches": "אין קבצים תואמים.",
3225
+ "filesFailed": "לא ניתן היה לטעון את הקבצים: {error}",
3226
+ "moreFiles": "מוצגות {count} התוצאות הראשונות — צמצם את החיפוש כדי למקד אותו."
3227
+ },
3216
3228
  "import": {
3217
3229
  "title": "ייבא ממקור מסמכים",
3218
3230
  "connectFirst": "חבר תחילה מקור מסמכים.",
@@ -3361,6 +3373,13 @@
3361
3373
  "proceed": "המשך בכל זאת",
3362
3374
  "stopReset": "עצור ואפס את המשימה"
3363
3375
  },
3376
+ "preview": {
3377
+ "stepCount": "שלב {count} | {count} שלבים",
3378
+ "gated": "אישור אנושי אחרי שלב זה"
3379
+ },
3380
+ "picker": {
3381
+ "noneHint": "אין צינור ברירת מחדל. בוחרים אחד כשמריצים את המשימה."
3382
+ },
3364
3383
  "builder": {
3365
3384
  "title": "בונה הצינור",
3366
3385
  "agentPalette": "פלטת הסוכנים",
@@ -3369,6 +3388,7 @@
3369
3388
  "configureModels": "הגדר מודלים",
3370
3389
  "configureModelsTooltip": "ניהול תצורות מודלים (על איזה מודל כל סוכן רץ)",
3371
3390
  "namePlaceholder": "שם הצינור",
3391
+ "descriptionPlaceholder": "תיאור (מוצג בעת בחירת הצינור)",
3372
3392
  "labelPlaceholder": "+ תווית",
3373
3393
  "gatingNeedsEstimator": "שלב עם שער דורש מעריך משימות לפניו. הוסף אחד אחרת הצינור לא יישמר.",
3374
3394
  "emptyDraft": "לחץ על סוכנים בצד שמאל כדי להרכיב צינור ליניארי.",
@@ -2936,6 +2936,17 @@
2936
2936
  "emptySearchable": "Cerca per titolo, oppure scegli un documento importato.",
2937
2937
  "emptyRefOnly": "Incolla l'URL o l'ID di una pagina per allegarla."
2938
2938
  },
2939
+ "repoPicker": {
2940
+ "searchRepoPlaceholder": "Cerca repository…",
2941
+ "clearRepo": "Rimuovi repository",
2942
+ "searchTab": "Cerca file",
2943
+ "browseTab": "Esplora",
2944
+ "searchFilesPlaceholder": "Cerca file per percorso…",
2945
+ "searchFilesHint": "Digita per cercare file in questo repository.",
2946
+ "noFileMatches": "Nessun file corrispondente.",
2947
+ "filesFailed": "Impossibile caricare i file: {error}",
2948
+ "moreFiles": "Vengono mostrati i primi {count} risultati: affina la ricerca per restringerla."
2949
+ },
2939
2950
  "import": {
2940
2951
  "title": "Importa da una sorgente di documenti",
2941
2952
  "connectFirst": "Collega prima una sorgente di documenti.",
@@ -3084,6 +3095,13 @@
3084
3095
  "proceed": "Procedi comunque",
3085
3096
  "stopReset": "Interrompi e reimposta l'attivita"
3086
3097
  },
3098
+ "preview": {
3099
+ "stepCount": "{count} step | {count} step",
3100
+ "gated": "Approvazione umana dopo questo step"
3101
+ },
3102
+ "picker": {
3103
+ "noneHint": "Nessuna pipeline predefinita. Ne scegli una quando esegui l'attivita."
3104
+ },
3087
3105
  "builder": {
3088
3106
  "title": "Costruttore di pipeline",
3089
3107
  "agentPalette": "Palette degli agenti",
@@ -3092,6 +3110,7 @@
3092
3110
  "configureModels": "Configura modelli",
3093
3111
  "configureModelsTooltip": "Gestisci i preset dei modelli (su quale modello viene eseguito ciascun agente)",
3094
3112
  "namePlaceholder": "Nome della pipeline",
3113
+ "descriptionPlaceholder": "Descrizione (mostrata quando scegli questa pipeline)",
3095
3114
  "labelPlaceholder": "+ etichetta",
3096
3115
  "gatingNeedsEstimator": "Uno step con gate richiede un Task Estimator prima di se. Aggiungine uno, altrimenti la pipeline non verra salvata.",
3097
3116
  "emptyDraft": "Fai clic sugli agenti a sinistra per assemblare una pipeline lineare.",
@@ -3892,6 +3911,7 @@
3892
3911
  "retry": "Riprova",
3893
3912
  "copy": "Copia",
3894
3913
  "copied": "Copiato negli appunti",
3914
+ "copyDetails": "Copia dettagli",
3895
3915
  "reveal": "Mostra",
3896
3916
  "hide": "Nascondi",
3897
3917
  "delete": "Elimina",
@@ -49,6 +49,7 @@
49
49
  "reconfigureHint": "後で再設定できます。"
50
50
  },
51
51
  "copied": "クリップボードにコピーしました",
52
+ "copyDetails": "詳細をコピー",
52
53
  "reveal": "表示",
53
54
  "hide": "非表示",
54
55
  "disconnect": "切断",
@@ -3214,6 +3215,17 @@
3214
3215
  "emptySearchable": "タイトルで検索するか、インポート済みドキュメントを選択してください。",
3215
3216
  "emptyRefOnly": "ページの URL または ID を貼り付けて添付します。"
3216
3217
  },
3218
+ "repoPicker": {
3219
+ "searchRepoPlaceholder": "リポジトリを検索…",
3220
+ "clearRepo": "リポジトリをクリア",
3221
+ "searchTab": "ファイルを検索",
3222
+ "browseTab": "参照",
3223
+ "searchFilesPlaceholder": "パスでファイルを検索…",
3224
+ "searchFilesHint": "このリポジトリ内のファイルを検索するには入力してください。",
3225
+ "noFileMatches": "一致するファイルがありません。",
3226
+ "filesFailed": "ファイルを読み込めませんでした: {error}",
3227
+ "moreFiles": "最初の{count}件の一致を表示しています。検索条件を絞り込んでください。"
3228
+ },
3217
3229
  "import": {
3218
3230
  "title": "ドキュメントソースからインポート",
3219
3231
  "connectFirst": "先にドキュメントソースを接続してください。",
@@ -3362,6 +3374,13 @@
3362
3374
  "proceed": "そのまま続行",
3363
3375
  "stopReset": "停止してタスクをリセット"
3364
3376
  },
3377
+ "preview": {
3378
+ "stepCount": "{count}ステップ | {count}ステップ",
3379
+ "gated": "このステップの後に人による承認"
3380
+ },
3381
+ "picker": {
3382
+ "noneHint": "デフォルトのパイプラインはありません。タスクの実行時に選択します。"
3383
+ },
3365
3384
  "builder": {
3366
3385
  "title": "パイプラインビルダー",
3367
3386
  "agentPalette": "エージェントパレット",
@@ -3370,6 +3389,7 @@
3370
3389
  "configureModels": "モデルを設定",
3371
3390
  "configureModelsTooltip": "モデルプリセットを管理(各エージェントが実行するモデル)",
3372
3391
  "namePlaceholder": "パイプライン名",
3392
+ "descriptionPlaceholder": "説明(このパイプラインを選択するときに表示されます)",
3373
3393
  "labelPlaceholder": "+ ラベル",
3374
3394
  "gatingNeedsEstimator": "ゲート付きステップの前にはTask Estimatorが必要です。追加しないとパイプラインは保存できません。",
3375
3395
  "emptyDraft": "左側のエージェントをクリックして、線形パイプラインを組み立てます。",
@@ -49,6 +49,7 @@
49
49
  "reconfigureHint": "Możesz skonfigurować to ponownie później."
50
50
  },
51
51
  "copied": "Skopiowano do schowka",
52
+ "copyDetails": "Kopiuj szczegóły",
52
53
  "reveal": "Pokaż",
53
54
  "hide": "Ukryj",
54
55
  "disconnect": "Rozłącz",
@@ -3202,6 +3203,17 @@
3202
3203
  "emptySearchable": "Wyszukaj według tytułu lub wybierz zaimportowany dokument.",
3203
3204
  "emptyRefOnly": "Wklej adres URL lub identyfikator strony, aby ją dołączyć."
3204
3205
  },
3206
+ "repoPicker": {
3207
+ "searchRepoPlaceholder": "Szukaj repozytoriów…",
3208
+ "clearRepo": "Wyczyść repozytorium",
3209
+ "searchTab": "Szukaj plików",
3210
+ "browseTab": "Przeglądaj",
3211
+ "searchFilesPlaceholder": "Szukaj plików według ścieżki…",
3212
+ "searchFilesHint": "Wpisz, aby wyszukać pliki w tym repozytorium.",
3213
+ "noFileMatches": "Brak pasujących plików.",
3214
+ "filesFailed": "Nie udało się wczytać plików: {error}",
3215
+ "moreFiles": "Wyświetlono pierwsze {count} wyników — zawęź wyszukiwanie."
3216
+ },
3205
3217
  "import": {
3206
3218
  "title": "Importuj ze źródła dokumentów",
3207
3219
  "connectFirst": "Najpierw połącz źródło dokumentów.",
@@ -3350,6 +3362,13 @@
3350
3362
  "proceed": "Kontynuuj mimo to",
3351
3363
  "stopReset": "Zatrzymaj i zresetuj zadanie"
3352
3364
  },
3365
+ "preview": {
3366
+ "stepCount": "{count} krok | {count} kroki | {count} kroków",
3367
+ "gated": "Ręczne zatwierdzenie po tym kroku"
3368
+ },
3369
+ "picker": {
3370
+ "noneHint": "Brak domyślnego pipeline'u. Wybierzesz go podczas uruchamiania zadania."
3371
+ },
3353
3372
  "builder": {
3354
3373
  "title": "Kreator pipeline'ów",
3355
3374
  "agentPalette": "Paleta agentów",
@@ -3358,6 +3377,7 @@
3358
3377
  "configureModels": "Skonfiguruj modele",
3359
3378
  "configureModelsTooltip": "Zarządzaj presetami modeli (jaki model uruchamia każdy agent)",
3360
3379
  "namePlaceholder": "Nazwa pipeline'u",
3380
+ "descriptionPlaceholder": "Opis (widoczny przy wyborze tego pipeline'u)",
3361
3381
  "labelPlaceholder": "+ etykieta",
3362
3382
  "gatingNeedsEstimator": "Krok z bramką wymaga wcześniejszego Task Estimatora. Dodaj go albo pipeline się nie zapisze.",
3363
3383
  "emptyDraft": "Kliknij agentów po lewej, aby zbudować liniowy pipeline.",
@@ -49,6 +49,7 @@
49
49
  "reconfigureHint": "Bunu daha sonra yeniden yapılandırabilirsiniz."
50
50
  },
51
51
  "copied": "Panoya kopyalandı",
52
+ "copyDetails": "Ayrıntıları kopyala",
52
53
  "reveal": "Göster",
53
54
  "hide": "Gizle",
54
55
  "disconnect": "Bağlantıyı kes",
@@ -3214,6 +3215,17 @@
3214
3215
  "emptySearchable": "Başlığa göre ara veya içe aktarılmış bir belge seç.",
3215
3216
  "emptyRefOnly": "Eklemek için bir sayfa URL'si veya ID'si yapıştır."
3216
3217
  },
3218
+ "repoPicker": {
3219
+ "searchRepoPlaceholder": "Depolarda ara…",
3220
+ "clearRepo": "Depoyu temizle",
3221
+ "searchTab": "Dosya ara",
3222
+ "browseTab": "Gözat",
3223
+ "searchFilesPlaceholder": "Dosyaları yola göre ara…",
3224
+ "searchFilesHint": "Bu depodaki dosyaları aramak için yazın.",
3225
+ "noFileMatches": "Eşleşen dosya yok.",
3226
+ "filesFailed": "Dosyalar yüklenemedi: {error}",
3227
+ "moreFiles": "İlk {count} eşleşme gösteriliyor — daraltmak için aramanızı iyileştirin."
3228
+ },
3217
3229
  "import": {
3218
3230
  "title": "Bir belge kaynağından içe aktar",
3219
3231
  "connectFirst": "Önce bir belge kaynağı bağla.",
@@ -3362,6 +3374,13 @@
3362
3374
  "proceed": "Yine de devam et",
3363
3375
  "stopReset": "Durdur ve görevi sıfırla"
3364
3376
  },
3377
+ "preview": {
3378
+ "stepCount": "{count} adım | {count} adım",
3379
+ "gated": "Bu adımdan sonra insan onayı"
3380
+ },
3381
+ "picker": {
3382
+ "noneHint": "Varsayılan pipeline yok. Görevi çalıştırırken birini seçersin."
3383
+ },
3365
3384
  "builder": {
3366
3385
  "title": "Pipeline oluşturucu",
3367
3386
  "agentPalette": "Ajan paleti",
@@ -3370,6 +3389,7 @@
3370
3389
  "configureModels": "Modelleri yapılandır",
3371
3390
  "configureModelsTooltip": "Model ön ayarlarını yönet (her ajanın hangi modelde çalışacağı)",
3372
3391
  "namePlaceholder": "Pipeline adı",
3392
+ "descriptionPlaceholder": "Açıklama (bu pipeline seçilirken gösterilir)",
3373
3393
  "labelPlaceholder": "+ etiket",
3374
3394
  "gatingNeedsEstimator": "Geçitli bir adımın öncesinde bir Görev Tahmincisi gerekir. Bir tane ekleyin yoksa pipeline kaydedilmez.",
3375
3395
  "emptyDraft": "Doğrusal bir pipeline oluşturmak için soldaki ajanlara tıklayın.",
@@ -49,6 +49,7 @@
49
49
  "reconfigureHint": "Ви зможете налаштувати це знову пізніше."
50
50
  },
51
51
  "copied": "Скопійовано в буфер обміну",
52
+ "copyDetails": "Копіювати деталі",
52
53
  "reveal": "Показати",
53
54
  "hide": "Приховати",
54
55
  "disconnect": "Від'єднати",
@@ -3202,6 +3203,17 @@
3202
3203
  "emptySearchable": "Шукайте за назвою або виберіть імпортований документ.",
3203
3204
  "emptyRefOnly": "Вставте URL або ідентифікатор сторінки, щоб долучити її."
3204
3205
  },
3206
+ "repoPicker": {
3207
+ "searchRepoPlaceholder": "Пошук репозиторіїв…",
3208
+ "clearRepo": "Очистити репозиторій",
3209
+ "searchTab": "Пошук файлів",
3210
+ "browseTab": "Огляд",
3211
+ "searchFilesPlaceholder": "Пошук файлів за шляхом…",
3212
+ "searchFilesHint": "Почніть вводити, щоб шукати файли в цьому репозиторії.",
3213
+ "noFileMatches": "Немає відповідних файлів.",
3214
+ "filesFailed": "Не вдалося завантажити файли: {error}",
3215
+ "moreFiles": "Показано перші {count} збігів — уточніть запит, щоб звузити пошук."
3216
+ },
3205
3217
  "import": {
3206
3218
  "title": "Імпорт із джерела документів",
3207
3219
  "connectFirst": "Спершу підключіть джерело документів.",
@@ -3350,6 +3362,13 @@
3350
3362
  "proceed": "Продовжити попри це",
3351
3363
  "stopReset": "Зупинити та скинути завдання"
3352
3364
  },
3365
+ "preview": {
3366
+ "stepCount": "{count} крок | {count} кроки | {count} кроків",
3367
+ "gated": "Ручне підтвердження після цього кроку"
3368
+ },
3369
+ "picker": {
3370
+ "noneHint": "Немає типового пайплайну. Ви обираєте його під час запуску завдання."
3371
+ },
3353
3372
  "builder": {
3354
3373
  "title": "Конструктор пайплайнів",
3355
3374
  "agentPalette": "Палітра агентів",
@@ -3358,6 +3377,7 @@
3358
3377
  "configureModels": "Налаштувати моделі",
3359
3378
  "configureModelsTooltip": "Керування пресетами моделей (яку модель запускає кожен агент)",
3360
3379
  "namePlaceholder": "Назва пайплайну",
3380
+ "descriptionPlaceholder": "Опис (показується при виборі цього пайплайну)",
3361
3381
  "labelPlaceholder": "+ мітка",
3362
3382
  "gatingNeedsEstimator": "Крок із бар'єром потребує Task Estimator перед собою. Додайте його, інакше пайплайн не збережеться.",
3363
3383
  "emptyDraft": "Натисніть агентів ліворуч, щоб зібрати лінійний пайплайн.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cat-factory/app",
3
- "version": "0.139.0",
3
+ "version": "0.140.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",
@@ -40,7 +40,7 @@
40
40
  "valibot": "^1.4.2",
41
41
  "vue": "3.5.40",
42
42
  "wretch": "^3.0.9",
43
- "@cat-factory/contracts": "0.148.1"
43
+ "@cat-factory/contracts": "0.149.0"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@toad-contracts/testing": "0.3.2",