@cat-factory/app 0.256.3 → 0.257.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/binaryCandidates/BinaryCandidatesWindow.vue +284 -0
- package/app/components/binaryOutput/BinaryOutputReport.vue +33 -0
- package/app/components/forkDecision/ForkDecisionWindow.vue +3 -1
- package/app/components/panels/AgentStepDetail.vue +42 -20
- package/app/components/panels/ResultWindowShell.logic.spec.ts +4 -0
- package/app/components/panels/inspector/TaskExecution.vue +34 -34
- package/app/components/pipeline/BinaryOutputStepPicker.logic.spec.ts +90 -1
- package/app/components/pipeline/BinaryOutputStepPicker.logic.ts +92 -1
- package/app/components/pipeline/BinaryOutputStepPicker.vue +354 -1
- package/app/components/pipeline/PipelineProgress.vue +37 -0
- package/app/composables/api/binaryCandidates.ts +36 -0
- package/app/composables/useApi.ts +2 -0
- package/app/modular/result-views.ts +4 -0
- package/app/stores/binaryCandidates.ts +89 -0
- package/app/stores/ui/resultViews.ts +8 -6
- package/app/stores/ui/runStepOpeners.ts +23 -1
- package/app/types/execution.ts +5 -0
- package/app/utils/binaryCandidates.spec.ts +110 -0
- package/app/utils/binaryCandidates.ts +126 -0
- package/app/utils/binaryOutput.ts +48 -2
- package/app/utils/pipelineRender.spec.ts +46 -1
- package/app/utils/pipelineRender.ts +70 -2
- package/i18n/locales/de.json +78 -2
- package/i18n/locales/en.json +78 -2
- package/i18n/locales/es.json +78 -2
- package/i18n/locales/fr.json +78 -2
- package/i18n/locales/he.json +78 -2
- package/i18n/locales/it.json +78 -2
- package/i18n/locales/ja.json +78 -2
- package/i18n/locales/pl.json +78 -2
- package/i18n/locales/tr.json +78 -2
- package/i18n/locales/uk.json +78 -2
- package/i18n/plural-forms.spec.ts +15 -0
- package/package.json +2 -2
package/i18n/locales/uk.json
CHANGED
|
@@ -1109,6 +1109,7 @@
|
|
|
1109
1109
|
},
|
|
1110
1110
|
"chooseApproach": "Обрати підхід",
|
|
1111
1111
|
"triageFollowUps": "Вирішити подальші дії",
|
|
1112
|
+
"chooseCandidates": "Вирішити кандидатів",
|
|
1112
1113
|
"elapsedTooltip": "Час, що минув на цьому кроці",
|
|
1113
1114
|
"reviewFindings": "Переглянути зауваження",
|
|
1114
1115
|
"dryRun": "Пробний запуск",
|
|
@@ -1387,8 +1388,10 @@
|
|
|
1387
1388
|
"decisionRequired": "Потрібне рішення",
|
|
1388
1389
|
"followUpsParked": "Coder підняв подальші дії, які потребують рішення, перш ніж запуск зможе продовжитися. Опрацюйте кожен елемент (створіть, поверніть, дайте відповідь або відхиліть) у вікні подальших дій.",
|
|
1389
1390
|
"forkParked": "Цей крок Coder чекає на вибір підходу до реалізації, перш ніж буде написано код. Виберіть запропонований підхід (або введіть власний) у вікні рішення.",
|
|
1391
|
+
"candidatesParked": "Цей крок згенерував кандидатів і чекає, поки хтось обере, яких залишити, перш ніж щось доставити. Порівняйте їх і залиште потрібних у вікні кандидатів.",
|
|
1390
1392
|
"openFollowUps": "Відкрити подальші дії",
|
|
1391
1393
|
"chooseApproach": "Вибрати підхід",
|
|
1394
|
+
"chooseCandidates": "Обрати кандидатів",
|
|
1392
1395
|
"expandAll": "Розгорнути всі розділи",
|
|
1393
1396
|
"collapseAll": "Згорнути всі розділи",
|
|
1394
1397
|
"copyRawOutput": "Скопіювати сирий вивід",
|
|
@@ -4766,7 +4769,45 @@
|
|
|
4766
4769
|
"3d-model": "3D-моделі",
|
|
4767
4770
|
"3d-scene": "3D-сцени",
|
|
4768
4771
|
"document": "Документи"
|
|
4769
|
-
}
|
|
4772
|
+
},
|
|
4773
|
+
"binaryCapability": {
|
|
4774
|
+
"reference-image": "Референсне зображення",
|
|
4775
|
+
"multi-reference": "Кілька референсних зображень",
|
|
4776
|
+
"instruction-edit": "Редагування за інструкцією",
|
|
4777
|
+
"mask-edit": "Редагування з маскою",
|
|
4778
|
+
"negative-prompt": "Негативний промпт",
|
|
4779
|
+
"seed": "Фіксований seed",
|
|
4780
|
+
"aspect-ratio": "Співвідношення сторін",
|
|
4781
|
+
"candidate-batch": "Кілька кандидатів за виклик",
|
|
4782
|
+
"upscale": "Збільшення",
|
|
4783
|
+
"transparent-background": "Прозорий фон",
|
|
4784
|
+
"tileable": "Безшовне замощення"
|
|
4785
|
+
},
|
|
4786
|
+
"binaryCapabilityUnknown": "{capability} (можливість, якої ця інсталяція не визначає)",
|
|
4787
|
+
"binaryCapabilityUnsupported": "Жодна вибрана інтеграція не підтримує {capabilities}, що його вимагають параметри генерації цього кроку. Приберіть параметр або виберіть інтеграцію, яка декларує цю можливість.",
|
|
4788
|
+
"binaryCapabilityUnverifiable": "Жодна вибрана інтеграція не декларує підтримку {capabilities}, але одна з них не декларує жодних можливостей, тож перевірити це не вдалося. Крок усе одно стартує; підтвердьте це в API інтеграції.",
|
|
4789
|
+
"binaryReferenceImages": "Референсні зображення",
|
|
4790
|
+
"binaryReferenceImagesPlaceholder": "роль{'|'}розташування{'|'}сервіс, по одному в рядку",
|
|
4791
|
+
"binaryReferenceImagesUnusable": "Не збережено як референс: {entries}. Кожен рядок має бути роль{'|'}розташування, де роль це style, subject, composition або base.",
|
|
4792
|
+
"binaryEditMode": "Редагувати наявне",
|
|
4793
|
+
"binaryEditModeNone": "Генерувати нове",
|
|
4794
|
+
"binaryEditModeInstruction": "За інструкцією",
|
|
4795
|
+
"binaryEditModeMask": "Ділянка за маскою",
|
|
4796
|
+
"binaryEditInstruction": "Що змінити",
|
|
4797
|
+
"binaryEditInstructionPlaceholder": "напр. замінити небо",
|
|
4798
|
+
"binaryNegativePrompt": "Негативний промпт",
|
|
4799
|
+
"binaryNegativePromptPlaceholder": "чого уникати",
|
|
4800
|
+
"binaryAspectRatio": "Співвідношення сторін",
|
|
4801
|
+
"binaryAspectRatioPlaceholder": "16:9",
|
|
4802
|
+
"binarySeed": "Seed",
|
|
4803
|
+
"binarySeedPlaceholder": "фіксований seed",
|
|
4804
|
+
"binaryTransparent": "Прозорий фон",
|
|
4805
|
+
"binaryTileable": "Безшовне замощення",
|
|
4806
|
+
"binaryUpscale": "Збільшити результат",
|
|
4807
|
+
"binaryComparison": "Порівняти кандидатів перед доставкою",
|
|
4808
|
+
"binaryPerGenerator": "Кандидатів на інтеграцію",
|
|
4809
|
+
"binaryMultiSelect": "Дозволити залишити більше одного",
|
|
4810
|
+
"binaryComparisonUnreachable": "Цей крок може створити лише одного кандидата на предмет, тож порівнювати не буде чого, і єдиного залишать без запитання. Виберіть другу інтеграцію або збільште кількість кандидатів на інтеграцію."
|
|
4770
4811
|
},
|
|
4771
4812
|
"progress": {
|
|
4772
4813
|
"status": {
|
|
@@ -4813,6 +4854,9 @@
|
|
|
4813
4854
|
"proposing": "Пропонування підходів…",
|
|
4814
4855
|
"choose": "Оберіть підхід"
|
|
4815
4856
|
},
|
|
4857
|
+
"binaryCandidates": {
|
|
4858
|
+
"choose": "Оберіть кандидата"
|
|
4859
|
+
},
|
|
4816
4860
|
"elapsedTooltip": "Час, що минув на цьому кроці",
|
|
4817
4861
|
"prReview": {
|
|
4818
4862
|
"review": "Переглянути зауваження"
|
|
@@ -6265,7 +6309,12 @@
|
|
|
6265
6309
|
"unknownGenerators": "Названо генеративну інтеграцію, якої ця інсталяція не реєструє: {ids}. Запис збережено як заявлено; інтеграція реєструється в коді інсталяції, а не в цьому робочому просторі. | Названо генеративні інтеграції, яких ця інсталяція не реєструє: {ids}. Їхні записи збережено як заявлено; інтеграції реєструються в коді інсталяції, а не в цьому робочому просторі. | Названо генеративних інтеграцій, яких ця інсталяція не реєструє: {ids}. Їхні записи збережено як заявлено; інтеграції реєструються в коді інсталяції, а не в цьому робочому просторі.",
|
|
6266
6310
|
"generatorsUnverified": "Під час завершення кроку не вдалося прочитати генеративні інтеграції цього розгортання, тому названі нижче інтеграції не було з ними звірено. Записи збережено так, як їх заявлено."
|
|
6267
6311
|
},
|
|
6268
|
-
"unknownGeneratorBadge": "Не зареєстровано"
|
|
6312
|
+
"unknownGeneratorBadge": "Не зареєстровано",
|
|
6313
|
+
"candidates": {
|
|
6314
|
+
"automatic": "Створено {total} кандидата й залишено автоматично, без перегляду.",
|
|
6315
|
+
"chosen": "Залишено {kept} із {total} створених кандидатів.",
|
|
6316
|
+
"awaiting": "Створено {total} кандидатів, які очікують на порівняння."
|
|
6317
|
+
}
|
|
6269
6318
|
},
|
|
6270
6319
|
"sandbox": {
|
|
6271
6320
|
"title": "Пісочниця: тестування промптів і моделей",
|
|
@@ -7551,5 +7600,32 @@
|
|
|
7551
7600
|
"resolverFailed": "Цей інструмент завершився помилкою під час визначення своєї адреси. Причина є в консолі браузера, для тих, хто підтримує це розгортання.",
|
|
7552
7601
|
"unsafeUrl": "Цей інструмент повернув адресу, яка не є вебпосиланням, тому її не відкрито."
|
|
7553
7602
|
}
|
|
7603
|
+
},
|
|
7604
|
+
"binaryCandidates": {
|
|
7605
|
+
"title": "Згенеровані кандидати",
|
|
7606
|
+
"titleWithBlock": "Згенеровані кандидати: {title}",
|
|
7607
|
+
"subtitle": "Порівняйте, що створила кожна інтеграція, і залиште те, що хочете",
|
|
7608
|
+
"automatic": "Було створено лише одного кандидата, тож його залишили автоматично. Ніхто його не переглядав.",
|
|
7609
|
+
"unlabelledSubject": "Предмет не вказано",
|
|
7610
|
+
"noPreview": "Попереднього перегляду немає",
|
|
7611
|
+
"fromGenerator": "Від {generator}",
|
|
7612
|
+
"unattributed": "Інтеграцію не зафіксовано",
|
|
7613
|
+
"kept": "Залишено",
|
|
7614
|
+
"keptAs": "Залишено як {id}",
|
|
7615
|
+
"storeAsPlaceholder": "зберегти під цим id",
|
|
7616
|
+
"notePlaceholder": "Що змінити під час збереження (необовʼязково)",
|
|
7617
|
+
"missingAlias": "Дайте кожному залишеному кандидату власний id, інакше всі збережуться під однією назвою.",
|
|
7618
|
+
"duplicateAlias": "Два залишені кандидати мають однаковий id. Два артефакти в одному місці це один артефакт.",
|
|
7619
|
+
"keepAction": "Залишити {count}",
|
|
7620
|
+
"warning": {
|
|
7621
|
+
"omitted": "{count} кандидатів відкинуто понад ліміт, тож цей список лише початок. ",
|
|
7622
|
+
"invalid": "{count} задекларованих записів були нечитабельні й тут відсутні. ",
|
|
7623
|
+
"previews": "{count} посилань на перегляд відхилено, тож ці кандидати показані без зображення."
|
|
7624
|
+
},
|
|
7625
|
+
"noChoice": {
|
|
7626
|
+
"undeclared": "Крок жодного разу не задекларував кандидатів, тож порівнювати не було чого. Виконання тривало.",
|
|
7627
|
+
"parseFailed": "Декларацію кандидатів кроку не вдалося прочитати, тож порівнювати не було чого. Виконання тривало.",
|
|
7628
|
+
"noCandidates": "Крок не підготував жодного кандидата, тож порівнювати не було чого. Виконання тривало."
|
|
7629
|
+
}
|
|
7554
7630
|
}
|
|
7555
7631
|
}
|
|
@@ -43,9 +43,24 @@ const catalogs = new Map(
|
|
|
43
43
|
[SOURCE_LOCALE, ...LOCALES].map((locale) => [locale, loadCatalog(locale)] as const),
|
|
44
44
|
)
|
|
45
45
|
|
|
46
|
+
/**
|
|
47
|
+
* A pipe written as vue-i18n LITERAL INTERPOLATION (`{'|'}`) is a character the message renders,
|
|
48
|
+
* not a form separator: the compiler parses such a message as a plain Message rather than a
|
|
49
|
+
* Plural. So it is stripped before the split, or a message that legitimately shows a pipe (the
|
|
50
|
+
* reference-image field describes a `role|location|service` line) is measured as forms it does
|
|
51
|
+
* not have.
|
|
52
|
+
*
|
|
53
|
+
* Getting this wrong is not merely a false positive. Counting the escaped pipes made a two-pipe
|
|
54
|
+
* message read as three forms, which is a LEGAL count for every locale here, so the sibling key
|
|
55
|
+
* that happened to carry one pipe failed while the more visible one passed silently. A guard that
|
|
56
|
+
* mis-measures does not fail honestly; it fails somewhere else.
|
|
57
|
+
*/
|
|
58
|
+
const LITERAL_INTERPOLATION = /\{\s*'(?:[^'\\]|\\.)*'\s*\}/g
|
|
59
|
+
|
|
46
60
|
/** Pipe-separated plural entries only; a message with no pipe never reaches a selector. */
|
|
47
61
|
function pluralEntries(locale: string): [string, string[]][] {
|
|
48
62
|
return [...catalogs.get(locale)!]
|
|
63
|
+
.map(([key, value]) => [key, value.replace(LITERAL_INTERPOLATION, '')] as const)
|
|
49
64
|
.filter(([, value]) => value.includes('|'))
|
|
50
65
|
.map(([key, value]) => [key, value.split('|')])
|
|
51
66
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/app",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.257.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.41",
|
|
42
42
|
"wretch": "^3.0.9",
|
|
43
|
-
"@cat-factory/contracts": "0.
|
|
43
|
+
"@cat-factory/contracts": "0.285.0"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@toad-contracts/testing": "0.3.2",
|