copilot-operator 0.1.41 → 0.1.43
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/dist/src/api/operator.controller.js +159 -6
- package/dist/src/api/operator.service.js +417 -10
- package/dist/src/api/server.js +16 -0
- package/dist/src/cli.js +12 -0
- package/dist/src/config/schema.js +17 -0
- package/dist/src/orchestrator/planMode.js +102 -0
- package/dist/src/orchestrator/review.js +8 -4
- package/dist/src/orchestrator/taskRunner.js +246 -40
- package/dist/src/plan/brief.js +69 -20
- package/dist/src/plan/changes.js +217 -0
- package/dist/src/plan/importPlan.js +2 -0
- package/dist/src/plan/schema.js +11 -1
- package/dist/src/plan/systemGuide.js +790 -14
- package/dist/src/protocol/parser.js +26 -2
- package/dist/src/protocol/replySchema.js +28 -4
- package/dist/src/session/compose.js +76 -7
- package/dist/src/session/exports.js +1 -0
- package/dist/src/session/model.js +38 -0
- package/dist/src/session/store.js +90 -3
- package/dist/src/vcs/startChoice.js +80 -8
- package/dist/src/vcs/taskVcs.js +126 -8
- package/dist/web/404.html +2 -2
- package/dist/web/_next/static/WmzBz4QN36pcz4PL_cfEW/_buildManifest.js +1 -0
- package/dist/web/_next/static/chunks/499-751e0be9d4f86e2d.js +1 -0
- package/dist/web/_next/static/chunks/549-2415dd26f4e53d07.js +1 -0
- package/dist/web/_next/static/chunks/699-9d031f8c145a0465.js +1 -0
- package/dist/web/_next/static/chunks/867-aea30f560bc18eaf.js +1 -0
- package/dist/web/_next/static/chunks/897-5a34109533c3da50.js +1 -0
- package/dist/web/_next/static/chunks/app/defaults/page-56134fbb8cc7554f.js +1 -0
- package/dist/web/_next/static/chunks/app/history/page-0bb537407fed5944.js +1 -0
- package/dist/web/_next/static/chunks/app/import/{page-999d6cd958989723.js → page-8ef75fc08638e75f.js} +1 -1
- package/dist/web/_next/static/chunks/app/layout-dc602b727480a653.js +1 -0
- package/dist/web/_next/static/chunks/app/page-d73a8ff300862cd8.js +1 -0
- package/dist/web/_next/static/chunks/app/{page-e557d58476ae6383.js → sessions/page-28376d2e4a9b4738.js} +1 -1
- package/dist/web/_next/static/chunks/app/sessions/view/page-afc235a9171535d8.js +1 -0
- package/dist/web/_next/static/css/{cea7913ba416dbb7.css → 72c85e4322c21223.css} +1 -1
- package/dist/web/appearance.html +2 -2
- package/dist/web/appearance.txt +25 -28
- package/dist/web/defaults.html +2 -2
- package/dist/web/defaults.txt +25 -28
- package/dist/web/history.html +2 -2
- package/dist/web/history.txt +25 -28
- package/dist/web/import.html +2 -2
- package/dist/web/import.txt +25 -28
- package/dist/web/index.html +2 -2
- package/dist/web/index.txt +25 -28
- package/dist/web/level1.html +2 -2
- package/dist/web/level1.txt +25 -28
- package/dist/web/presets.html +3 -3
- package/dist/web/presets.txt +25 -28
- package/dist/web/sessions/view.html +2 -2
- package/dist/web/sessions/view.txt +25 -28
- package/dist/web/sessions.html +16 -0
- package/dist/web/sessions.txt +26 -0
- package/dist/web/system.html +2 -2
- package/dist/web/system.txt +25 -28
- package/package.json +161 -158
- package/dist/web/_next/static/-htN5GTSrd3W3f5j_QC2y/_buildManifest.js +0 -1
- package/dist/web/_next/static/chunks/499-28e118e33ce07935.js +0 -1
- package/dist/web/_next/static/chunks/549-f295c8429e83b25b.js +0 -1
- package/dist/web/_next/static/chunks/584-578be94a0786334b.js +0 -1
- package/dist/web/_next/static/chunks/867-8dc5bbb092ca2c5c.js +0 -1
- package/dist/web/_next/static/chunks/app/defaults/page-879158e9e550eea7.js +0 -1
- package/dist/web/_next/static/chunks/app/history/page-9f69ccde726c9be2.js +0 -1
- package/dist/web/_next/static/chunks/app/layout-73f28bc065a46ed3.js +0 -1
- package/dist/web/_next/static/chunks/app/sessions/view/page-0485ee7f781156ec.js +0 -1
- /package/dist/web/_next/static/{-htN5GTSrd3W3f5j_QC2y → WmzBz4QN36pcz4PL_cfEW}/_ssgManifest.js +0 -0
|
@@ -190,6 +190,46 @@ export const SYSTEM_GUIDE = [
|
|
|
190
190
|
doesEn: 'Only for a session whose start was prepared before the run — a starting snapshot approved on the run panel — and chosen first then: the run starts from it as approved. Any other choice below drops it.',
|
|
191
191
|
doesBg: 'Само за сесия, чието начало е подготвено преди пускането — стартова снимка, одобрена в панела за пускане — и тогава е избрано първо: пускането тръгва от нея, както е одобрена. Всеки друг избор по-долу я отменя.',
|
|
192
192
|
},
|
|
193
|
+
{
|
|
194
|
+
key: 'startdlg.refresh',
|
|
195
|
+
kind: 'button',
|
|
196
|
+
en: 'Read the branches again',
|
|
197
|
+
bg: 'Прочети клоновете отново',
|
|
198
|
+
doesEn: 'Beside the window\'s first line: reads the repository again — the branch checked out, the branches and their commits — after a checkout or a pull made outside the bot; what was chosen stays chosen.',
|
|
199
|
+
doesBg: 'До първия ред на прозореца: прочита хранилището отново — избрания клон, клоновете и комитите им — след checkout или pull, направени извън бота; избраното остава избрано.',
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
key: 'startdlg.keepStarted',
|
|
203
|
+
kind: 'radio',
|
|
204
|
+
en: 'Keep: carry on {branch}',
|
|
205
|
+
bg: 'Запази: продължи на {branch}',
|
|
206
|
+
doesEn: 'For a session that has run already, chosen first: it carries on its own branch (named in the label). Above it the window says where that branch is now, where the session started, the branch on the remote, and warns when the repository is on another branch.',
|
|
207
|
+
doesBg: 'За сесия, която вече е вървяла, избрано първо: продължава на собствения си клон (името е в надписа). Над него прозорецът казва къде е клонът сега, откъде е тръгнала сесията, клона в remote, и предупреждава, когато хранилището е на друг клон.',
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
key: 'startdlg.useCurrent',
|
|
211
|
+
kind: 'radio',
|
|
212
|
+
en: 'The branch checked out now: {branch} ({commit})',
|
|
213
|
+
bg: 'Клонът, избран в момента: {branch} ({commit})',
|
|
214
|
+
doesEn: 'For a session that has run, when the repository is on another branch: the work starts from the branch checked out now. Like any other branch chosen for it, the tasks that run next start from it — a task run again too — and what already ran stays on its branches.',
|
|
215
|
+
doesBg: 'За сесия, която вече е вървяла, когато хранилището е на друг клон: работата тръгва от клона, избран в момента. Както при всеки друг избран клон, задачите, които тръгнат оттук нататък, тръгват от него — и пуснатата отново задача — а изпълненото остава в своите клонове.',
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
key: 'startdlg.goUnattendedOn',
|
|
219
|
+
kind: 'button',
|
|
220
|
+
en: 'Start without asking — on {where}',
|
|
221
|
+
bg: 'Започни без питане — на {where}',
|
|
222
|
+
doesEn: 'The window\'s start button when the run has one session: says the branch and commit the work starts on.',
|
|
223
|
+
doesBg: 'Бутонът за старт на прозореца, когато пускането е на една сесия: казва клона и комита, от които тръгва работата.',
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
key: 'startdlg.goStepOn',
|
|
227
|
+
kind: 'button',
|
|
228
|
+
en: 'Start, asking before each command — on {where}',
|
|
229
|
+
bg: 'Започни, с питане преди всяка команда — на {where}',
|
|
230
|
+
doesEn: 'The same, for a run that asks before each command.',
|
|
231
|
+
doesBg: 'Същото, за пускане с питане преди всяка команда.',
|
|
232
|
+
},
|
|
193
233
|
{
|
|
194
234
|
key: 'startdlg.local',
|
|
195
235
|
kind: 'radio',
|
|
@@ -404,6 +444,38 @@ export const SYSTEM_GUIDE = [
|
|
|
404
444
|
doesEn: 'Nothing is sent: the session stops, its tasks stay queued.',
|
|
405
445
|
doesBg: 'Нищо не се изпраща: сесията спира, задачите ѝ остават на опашката.',
|
|
406
446
|
},
|
|
447
|
+
{
|
|
448
|
+
key: 'pm.note',
|
|
449
|
+
kind: 'field',
|
|
450
|
+
en: 'Note for the chat (optional when approving; says what to change when asking for another plan)',
|
|
451
|
+
bg: 'Бележка за чата (по желание при одобрение; казва какво да се промени, когато искаш друг план)',
|
|
452
|
+
doesEn: 'On a plan waiting for approval (plan first): sent to the chat with the answer — a condition for the work when approving, what to change when asking for another plan.',
|
|
453
|
+
doesBg: 'На план, който чака одобрение („Първо план“): изпраща се на чата с отговора — условие за работата при одобрение, какво да се промени, когато искаш друг план.',
|
|
454
|
+
},
|
|
455
|
+
{
|
|
456
|
+
key: 'pm.approve',
|
|
457
|
+
kind: 'button',
|
|
458
|
+
en: 'Approve and start the work',
|
|
459
|
+
bg: 'Одобри и започни работата',
|
|
460
|
+
doesEn: 'The plan is recorded as approved by the operator and the chat starts changing the code, following it.',
|
|
461
|
+
doesBg: 'Планът се записва като одобрен от оператора и чатът започва да променя кода, като го следва.',
|
|
462
|
+
},
|
|
463
|
+
{
|
|
464
|
+
key: 'pm.revise',
|
|
465
|
+
kind: 'button',
|
|
466
|
+
en: 'Ask for another plan',
|
|
467
|
+
bg: 'Поискай друг план',
|
|
468
|
+
doesEn: 'Needs the note: the chat makes a new version of the plan with it, still without changing anything, and the card comes back.',
|
|
469
|
+
doesBg: 'Иска бележка: чатът прави нова версия на плана с нея, пак без да променя нищо, и картата се връща.',
|
|
470
|
+
},
|
|
471
|
+
{
|
|
472
|
+
key: 'pm.stop',
|
|
473
|
+
kind: 'button',
|
|
474
|
+
en: 'Stop the task',
|
|
475
|
+
bg: 'Спри задачата',
|
|
476
|
+
doesEn: 'After a confirmation the task ends as stopped, with nothing changed; it can be run again.',
|
|
477
|
+
doesBg: 'След потвърждение задачата приключва като спряна, без нищо променено; може да се пусне отново.',
|
|
478
|
+
},
|
|
407
479
|
],
|
|
408
480
|
},
|
|
409
481
|
],
|
|
@@ -755,6 +827,583 @@ export const SYSTEM_GUIDE = [
|
|
|
755
827
|
},
|
|
756
828
|
{
|
|
757
829
|
route: '/',
|
|
830
|
+
nameEn: 'Workbench',
|
|
831
|
+
nameBg: 'Работно място',
|
|
832
|
+
purposeEn: 'The home screen, laid out as an IDE: the sessions and tasks (or the repository\'s files and commits) on the left, the open task with every way on from it in the middle, the commands it ran and the problems below, its chat on the right, where a note, a continuation or a new prompt is written, and Kerrigan beside it. The status bar says what runs; Ctrl+K finds anything.',
|
|
833
|
+
purposeBg: 'Началният екран, подреден като IDE: сесиите и задачите (или файловете и комитите на хранилището) отляво, отворената задача с всички пътища напред в средата, изпълнените команди и проблемите отдолу, чатът ѝ отдясно, където се пише бележка, продължение или нов prompt, и Кериган до него. Лентата най-долу казва какво върви; Ctrl+K намира всичко.',
|
|
834
|
+
sections: [
|
|
835
|
+
{
|
|
836
|
+
headingKey: null,
|
|
837
|
+
en: 'The bar on top',
|
|
838
|
+
bg: 'Лентата горе',
|
|
839
|
+
controls: [
|
|
840
|
+
{
|
|
841
|
+
key: 'wb.palette',
|
|
842
|
+
kind: 'button',
|
|
843
|
+
en: 'Find a task, a session, a page or a command',
|
|
844
|
+
bg: 'Намери задача, сесия, страница или команда',
|
|
845
|
+
doesEn: 'Opens the command palette (also Ctrl+K): any task, session, page or command, found by a few letters.',
|
|
846
|
+
doesBg: 'Отваря палитрата с команди (и с Ctrl+K): всяка задача, сесия, страница или команда, по няколко букви.',
|
|
847
|
+
},
|
|
848
|
+
{
|
|
849
|
+
key: 'wb.welcome',
|
|
850
|
+
kind: 'note',
|
|
851
|
+
en: 'Welcome',
|
|
852
|
+
bg: 'Добре дошъл',
|
|
853
|
+
doesEn: 'The editor with nothing open: where to begin, and the tasks waiting for you.',
|
|
854
|
+
doesBg: 'Редакторът, когато нищо не е отворено: откъде да се започне и задачите, които чакат теб.',
|
|
855
|
+
},
|
|
856
|
+
{
|
|
857
|
+
key: 'wb.needsYou',
|
|
858
|
+
kind: 'note',
|
|
859
|
+
en: 'Waiting for you ({n})',
|
|
860
|
+
bg: 'Чакат теб ({n})',
|
|
861
|
+
doesEn: 'Under the welcome: the tasks that failed, blocked, stopped or wait for an answer, each opening its task.',
|
|
862
|
+
doesBg: 'Под поздрава: задачите, които се провалиха, блокираха, спряха или чакат отговор; всяка отваря задачата си.',
|
|
863
|
+
},
|
|
864
|
+
{
|
|
865
|
+
key: 'wb.closeTab',
|
|
866
|
+
kind: 'button',
|
|
867
|
+
en: 'Close {name}',
|
|
868
|
+
bg: 'Затвори {name}',
|
|
869
|
+
doesEn: 'The × on a tab: closes it.',
|
|
870
|
+
doesBg: 'Хиксът на раздел: затваря го.',
|
|
871
|
+
},
|
|
872
|
+
{
|
|
873
|
+
key: 'wb.openRunning',
|
|
874
|
+
kind: 'button',
|
|
875
|
+
en: 'Open the task that is running',
|
|
876
|
+
bg: 'Отвори задачата, която върви',
|
|
877
|
+
doesEn: 'In the status bar while something runs: opens the task that is running (session, task, message n of the limit, minutes).',
|
|
878
|
+
doesBg: 'В лентата най-долу, докато нещо върви: отваря задачата, която върви (сесия, задача, съобщение n от лимита, минути).',
|
|
879
|
+
},
|
|
880
|
+
{
|
|
881
|
+
key: 'wb.waiting',
|
|
882
|
+
kind: 'button',
|
|
883
|
+
en: '{n} waiting for you',
|
|
884
|
+
bg: 'чакат теб: {n}',
|
|
885
|
+
doesEn: 'In the status bar: how many steps or plans wait for an answer; brings the card on top into view.',
|
|
886
|
+
doesBg: 'В лентата най-долу: колко стъпки или планове чакат отговор; показва картата горе.',
|
|
887
|
+
},
|
|
888
|
+
],
|
|
889
|
+
},
|
|
890
|
+
{
|
|
891
|
+
headingKey: 'wb.sessions',
|
|
892
|
+
en: 'Sessions',
|
|
893
|
+
bg: 'Сесии',
|
|
894
|
+
controls: [
|
|
895
|
+
{
|
|
896
|
+
key: 'wb.filter',
|
|
897
|
+
kind: 'field',
|
|
898
|
+
en: 'Filter tasks',
|
|
899
|
+
bg: 'Филтрирай задачите',
|
|
900
|
+
doesEn: 'Shows only the tasks (and sessions) whose name has these letters.',
|
|
901
|
+
doesBg: 'Показва само задачите (и сесиите), чието име съдържа тези букви.',
|
|
902
|
+
},
|
|
903
|
+
{
|
|
904
|
+
key: 'wb.collapse',
|
|
905
|
+
kind: 'button',
|
|
906
|
+
en: 'Fold {name}',
|
|
907
|
+
bg: 'Сгъни {name}',
|
|
908
|
+
doesEn: 'The ▾ beside a session: folds its tasks away.',
|
|
909
|
+
doesBg: 'Стрелката до сесия: сгъва задачите ѝ.',
|
|
910
|
+
},
|
|
911
|
+
{
|
|
912
|
+
key: 'wb.expand',
|
|
913
|
+
kind: 'button',
|
|
914
|
+
en: 'Unfold {name}',
|
|
915
|
+
bg: 'Разгъни {name}',
|
|
916
|
+
doesEn: 'The ▸ beside a folded session: shows its tasks.',
|
|
917
|
+
doesBg: 'Стрелката до сгъната сесия: показва задачите ѝ.',
|
|
918
|
+
},
|
|
919
|
+
{
|
|
920
|
+
key: 'wb.refresh',
|
|
921
|
+
kind: 'button',
|
|
922
|
+
en: 'Read again',
|
|
923
|
+
bg: 'Прочети отново',
|
|
924
|
+
doesEn: 'Reads the sessions again at once (they are read every few seconds anyway).',
|
|
925
|
+
doesBg: 'Прочита сесиите веднага (те се четат на всеки няколко секунди и без това).',
|
|
926
|
+
},
|
|
927
|
+
{
|
|
928
|
+
key: 'wb.newSession',
|
|
929
|
+
kind: 'link',
|
|
930
|
+
en: 'New session',
|
|
931
|
+
bg: 'Нова сесия',
|
|
932
|
+
doesEn: 'Goes to the Sessions page, to the form that makes a new session.',
|
|
933
|
+
doesBg: 'Отива на страницата „Сесии“, на формата за нова сесия.',
|
|
934
|
+
},
|
|
935
|
+
{
|
|
936
|
+
key: 'wb.startPlan',
|
|
937
|
+
kind: 'link',
|
|
938
|
+
en: 'Import a plan',
|
|
939
|
+
bg: 'Импортирай план',
|
|
940
|
+
doesEn: 'Goes to the import page: Kerrigan\'s brief, and the place to paste her plan.',
|
|
941
|
+
doesBg: 'Отива на страницата за импорт: брифингът на Кериган и мястото за плана ѝ.',
|
|
942
|
+
},
|
|
943
|
+
],
|
|
944
|
+
},
|
|
945
|
+
{
|
|
946
|
+
headingKey: null,
|
|
947
|
+
en: 'A task opened in the editor: what can be done with it',
|
|
948
|
+
bg: 'Задача, отворена в редактора: какво може да се направи с нея',
|
|
949
|
+
controls: [
|
|
950
|
+
{
|
|
951
|
+
key: 'wb.runThis',
|
|
952
|
+
kind: 'button',
|
|
953
|
+
en: 'Run this task',
|
|
954
|
+
bg: 'Пусни тази задача',
|
|
955
|
+
doesEn: 'Queued task: offers to run it alone or with the queued ones after it, then opens the start window.',
|
|
956
|
+
doesBg: 'Чакаща задача: предлага да се пусне сама или с чакащите след нея, после отваря прозореца за начало.',
|
|
957
|
+
},
|
|
958
|
+
{
|
|
959
|
+
key: 'wb.addNote',
|
|
960
|
+
kind: 'button',
|
|
961
|
+
en: 'Add information',
|
|
962
|
+
bg: 'Добави информация',
|
|
963
|
+
doesEn: 'Queued task: puts the keyboard in the chat box, where what is written goes to the chat with the task when it runs.',
|
|
964
|
+
doesBg: 'Чакаща задача: слага курсора в полето на чата; написаното отива при чата заедно със задачата, когато тръгне.',
|
|
965
|
+
},
|
|
966
|
+
{
|
|
967
|
+
key: 'wb.editTask',
|
|
968
|
+
kind: 'link',
|
|
969
|
+
en: 'Edit the task',
|
|
970
|
+
bg: 'Редактирай задачата',
|
|
971
|
+
doesEn: 'Opens the task on its session\'s page, where its prompt, checks and scope are edited.',
|
|
972
|
+
doesBg: 'Отваря задачата на страницата на сесията ѝ, където се редактират prompt, проверки и обхват.',
|
|
973
|
+
},
|
|
974
|
+
{
|
|
975
|
+
key: 'wb.remove',
|
|
976
|
+
kind: 'button',
|
|
977
|
+
en: 'Remove',
|
|
978
|
+
bg: 'Премахни',
|
|
979
|
+
doesEn: 'Queued task: removes it, after a confirmation.',
|
|
980
|
+
doesBg: 'Чакаща задача: премахва я след потвърждение.',
|
|
981
|
+
},
|
|
982
|
+
{
|
|
983
|
+
key: 'wb.writeToChat',
|
|
984
|
+
kind: 'button',
|
|
985
|
+
en: 'Write to the chat',
|
|
986
|
+
bg: 'Пиши в чата',
|
|
987
|
+
doesEn: 'Running task: puts the keyboard in the chat box; what is sent goes to the chat with the next report, while it works.',
|
|
988
|
+
doesBg: 'Задача, която върви: слага курсора в полето на чата; изпратеното отива при чата със следващия отчет, докато работи.',
|
|
989
|
+
},
|
|
990
|
+
{
|
|
991
|
+
key: 'wb.stopSession',
|
|
992
|
+
kind: 'button',
|
|
993
|
+
en: 'Stop the session',
|
|
994
|
+
bg: 'Спри сесията',
|
|
995
|
+
doesEn: 'Stops the session that is running; the task in flight ends aborted and can be continued.',
|
|
996
|
+
doesBg: 'Спира сесията, която върви; текущата задача завършва като прекъсната и може да продължи.',
|
|
997
|
+
},
|
|
998
|
+
{
|
|
999
|
+
key: 'wb.fixContradiction',
|
|
1000
|
+
kind: 'link',
|
|
1001
|
+
en: 'Fix the contradiction',
|
|
1002
|
+
bg: 'Поправи противоречието',
|
|
1003
|
+
doesEn: 'A task refused for contradicting itself: opens its session\'s page with the smallest fix offered.',
|
|
1004
|
+
doesBg: 'Задача, отказана заради противоречие: отваря страницата на сесията с предложена най-малката поправка.',
|
|
1005
|
+
},
|
|
1006
|
+
{
|
|
1007
|
+
key: 'wb.continue',
|
|
1008
|
+
kind: 'button',
|
|
1009
|
+
en: 'Continue',
|
|
1010
|
+
bg: 'Продължи',
|
|
1011
|
+
doesEn: 'A task a limit or a stop ended: queues it to carry on in its own chat and branch, from where it got to, and offers to run it.',
|
|
1012
|
+
doesBg: 'Задача, спряна от лимит или спиране: слага я да продължи в своя чат и клон, от където е стигнала, и предлага да се пусне.',
|
|
1013
|
+
},
|
|
1014
|
+
{
|
|
1015
|
+
key: 'wb.continueWithPrompt',
|
|
1016
|
+
kind: 'button',
|
|
1017
|
+
en: 'Continue with a new prompt',
|
|
1018
|
+
bg: 'Продължи с нов prompt',
|
|
1019
|
+
doesEn: 'A task that failed, blocked or stopped: puts the keyboard in the chat box, where the prompt it carries on with is written.',
|
|
1020
|
+
doesBg: 'Задача, която се провали, блокира или спря: слага курсора в полето на чата, където се пише prompt-ът, с който продължава.',
|
|
1021
|
+
},
|
|
1022
|
+
{
|
|
1023
|
+
key: 'wb.newPrompt',
|
|
1024
|
+
kind: 'button',
|
|
1025
|
+
en: 'Give it a new prompt',
|
|
1026
|
+
bg: 'Дай ѝ нов prompt',
|
|
1027
|
+
doesEn: 'A done task: puts the keyboard in the chat box, where a new prompt that builds on its work is written.',
|
|
1028
|
+
doesBg: 'Готова задача: слага курсора в полето на чата, където се пише нов prompt, който надгражда работата ѝ.',
|
|
1029
|
+
},
|
|
1030
|
+
{
|
|
1031
|
+
key: 'wb.runAgain',
|
|
1032
|
+
kind: 'button',
|
|
1033
|
+
en: 'Run again',
|
|
1034
|
+
bg: 'Пусни отново',
|
|
1035
|
+
doesEn: 'Queues the task again from where it first started, after a confirmation; its earlier work is not used.',
|
|
1036
|
+
doesBg: 'Слага задачата отново на опашката от където е започнала първия път, след потвърждение; по-ранната ѝ работа не се използва.',
|
|
1037
|
+
},
|
|
1038
|
+
{
|
|
1039
|
+
key: 'wb.accept',
|
|
1040
|
+
kind: 'button',
|
|
1041
|
+
en: 'Accept as done',
|
|
1042
|
+
bg: 'Приеми като готова',
|
|
1043
|
+
doesEn: 'A task that did not end done: opens a field for why, then accepts it as done; what it was is kept beside it.',
|
|
1044
|
+
doesBg: 'Задача, която не е завършила като готова: отваря поле за причината и я приема като готова; какво е била, се пази до нея.',
|
|
1045
|
+
},
|
|
1046
|
+
{
|
|
1047
|
+
key: 'wb.acceptNote',
|
|
1048
|
+
kind: 'field',
|
|
1049
|
+
en: 'Why it is done (optional), e.g. finished by hand on its branch',
|
|
1050
|
+
bg: 'Защо е готова (по желание), напр. довършена ръчно в нейния клон',
|
|
1051
|
+
doesEn: 'Why the task is done although it did not end so; kept on the task.',
|
|
1052
|
+
doesBg: 'Защо задачата е готова, макар да не е завършила така; пази се на задачата.',
|
|
1053
|
+
},
|
|
1054
|
+
{
|
|
1055
|
+
key: 'wb.acceptGo',
|
|
1056
|
+
kind: 'button',
|
|
1057
|
+
en: 'Accept it as done',
|
|
1058
|
+
bg: 'Приеми я като готова',
|
|
1059
|
+
doesEn: 'Accepts the task as done.',
|
|
1060
|
+
doesBg: 'Приема задачата като готова.',
|
|
1061
|
+
},
|
|
1062
|
+
{
|
|
1063
|
+
key: 'wb.undo',
|
|
1064
|
+
kind: 'button',
|
|
1065
|
+
en: 'Undo…',
|
|
1066
|
+
bg: 'Отмени…',
|
|
1067
|
+
doesEn: 'Opens the two ways to undo a task that ran, each said before it is done.',
|
|
1068
|
+
doesBg: 'Отваря двата начина да се отмени задача, която е пускана, всеки казан преди да се направи.',
|
|
1069
|
+
},
|
|
1070
|
+
{
|
|
1071
|
+
key: 'wb.undoThisGo',
|
|
1072
|
+
kind: 'button',
|
|
1073
|
+
en: 'Undo this task',
|
|
1074
|
+
bg: 'Отмени задачата',
|
|
1075
|
+
doesEn: 'Takes only this task\'s work out of the session\'s branch, in one new commit, keeps what came after it, and queues it again (per-task branches: the folder goes back to its start). Refused, with nothing changed, when later tasks changed the same lines.',
|
|
1076
|
+
doesBg: 'Изважда само работата на тази задача от клона на сесията с един нов комит, пази каквото е след нея и я слага отново на опашката (при клон на задача: папката се връща в началото ѝ). Отказва се, без нищо да се промени, ако по-късни задачи са променили същите редове.',
|
|
1077
|
+
},
|
|
1078
|
+
{
|
|
1079
|
+
key: 'wb.undoBackGo',
|
|
1080
|
+
kind: 'button',
|
|
1081
|
+
en: 'Go back',
|
|
1082
|
+
bg: 'Върни',
|
|
1083
|
+
doesEn: 'Puts the code back as it was before this task, on a branch of its own, and queues it and the tasks after it again; nothing is started and the old branch keeps the work.',
|
|
1084
|
+
doesBg: 'Връща кода както беше преди тази задача, на отделен клон, и слага нея и задачите след нея отново на опашката; нищо не се пуска, а старият клон пази работата.',
|
|
1085
|
+
},
|
|
1086
|
+
{
|
|
1087
|
+
key: 'wb.askKerrigan',
|
|
1088
|
+
kind: 'button',
|
|
1089
|
+
en: 'Ask Kerrigan',
|
|
1090
|
+
bg: 'Попитай Кериган',
|
|
1091
|
+
doesEn: 'Opens Kerrigan\'s tab in the right panel, set to this task.',
|
|
1092
|
+
doesBg: 'Отваря раздела на Кериган в десния панел, настроен на тази задача.',
|
|
1093
|
+
},
|
|
1094
|
+
{
|
|
1095
|
+
key: 'wb.onSessionPage',
|
|
1096
|
+
kind: 'link',
|
|
1097
|
+
en: 'On its session’s page',
|
|
1098
|
+
bg: 'На страницата на сесията',
|
|
1099
|
+
doesEn: 'Opens the task on its session\'s page, with every detail and setting.',
|
|
1100
|
+
doesBg: 'Отваря задачата на страницата на сесията ѝ, с всички подробности и настройки.',
|
|
1101
|
+
},
|
|
1102
|
+
{
|
|
1103
|
+
key: 'wb.result',
|
|
1104
|
+
kind: 'note',
|
|
1105
|
+
en: 'How it stands',
|
|
1106
|
+
bg: 'Как стои',
|
|
1107
|
+
doesEn: 'How the task stands: its summary, why it stopped, whether it was accepted or undone.',
|
|
1108
|
+
doesBg: 'Как стои задачата: обобщението ѝ, защо е спряла, дали е приета или отменена.',
|
|
1109
|
+
},
|
|
1110
|
+
{
|
|
1111
|
+
key: 'wb.checks',
|
|
1112
|
+
kind: 'note',
|
|
1113
|
+
en: 'Checks',
|
|
1114
|
+
bg: 'Проверки',
|
|
1115
|
+
doesEn: 'The checks of its last attempt, each passed or not.',
|
|
1116
|
+
doesBg: 'Проверките на последния ѝ опит, всяка минала или не.',
|
|
1117
|
+
},
|
|
1118
|
+
{
|
|
1119
|
+
key: 'wb.review',
|
|
1120
|
+
kind: 'note',
|
|
1121
|
+
en: 'Review: {verdict}',
|
|
1122
|
+
bg: 'Преглед: {verdict}',
|
|
1123
|
+
doesEn: 'What the independent review concluded, with its findings.',
|
|
1124
|
+
doesBg: 'Какво е заключил независимият преглед, с находките му.',
|
|
1125
|
+
},
|
|
1126
|
+
{
|
|
1127
|
+
key: 'wb.changedFiles',
|
|
1128
|
+
kind: 'note',
|
|
1129
|
+
en: 'Files it changed ({n})',
|
|
1130
|
+
bg: 'Файлове, които промени ({n})',
|
|
1131
|
+
doesEn: 'The files the task changed; each opens at the task\'s commit.',
|
|
1132
|
+
doesBg: 'Файловете, които задачата е променила; всеки се отваря при комита на задачата.',
|
|
1133
|
+
},
|
|
1134
|
+
{
|
|
1135
|
+
key: 'wb.notes',
|
|
1136
|
+
kind: 'note',
|
|
1137
|
+
en: 'Your notes to the chat',
|
|
1138
|
+
bg: 'Твоите бележки към чата',
|
|
1139
|
+
doesEn: 'What you wrote to the chat about this task, and whether it has gone out yet.',
|
|
1140
|
+
doesBg: 'Какво си писал на чата за тази задача и дали вече е изпратено.',
|
|
1141
|
+
},
|
|
1142
|
+
{
|
|
1143
|
+
key: 'wb.prompt',
|
|
1144
|
+
kind: 'disclosure',
|
|
1145
|
+
en: 'Prompt',
|
|
1146
|
+
bg: 'Prompt',
|
|
1147
|
+
doesEn: 'The task\'s prompt, as the chat gets it.',
|
|
1148
|
+
doesBg: 'Prompt-ът на задачата, както го получава чатът.',
|
|
1149
|
+
},
|
|
1150
|
+
{
|
|
1151
|
+
key: 'wb.plan',
|
|
1152
|
+
kind: 'disclosure',
|
|
1153
|
+
en: 'Plan (version {n})',
|
|
1154
|
+
bg: 'План (версия {n})',
|
|
1155
|
+
doesEn: 'The plan the task made before changing anything (plan first).',
|
|
1156
|
+
doesBg: 'Планът, който задачата е направила, преди да промени нещо („Първо план“).',
|
|
1157
|
+
},
|
|
1158
|
+
{
|
|
1159
|
+
key: 'wb.attempts',
|
|
1160
|
+
kind: 'disclosure',
|
|
1161
|
+
en: 'Earlier attempts ({n})',
|
|
1162
|
+
bg: 'По-ранни опити ({n})',
|
|
1163
|
+
doesEn: 'The task\'s earlier attempts, with how each ended and whether it was undone.',
|
|
1164
|
+
doesBg: 'По-ранните опити на задачата, с това как е завършил всеки и дали е отменен.',
|
|
1165
|
+
},
|
|
1166
|
+
],
|
|
1167
|
+
},
|
|
1168
|
+
{
|
|
1169
|
+
headingKey: null,
|
|
1170
|
+
en: 'A session opened in the editor',
|
|
1171
|
+
bg: 'Сесия, отворена в редактора',
|
|
1172
|
+
controls: [
|
|
1173
|
+
{
|
|
1174
|
+
key: 'wb.sessionSettings',
|
|
1175
|
+
kind: 'link',
|
|
1176
|
+
en: 'Session settings',
|
|
1177
|
+
bg: 'Настройки на сесията',
|
|
1178
|
+
doesEn: 'Opens the session\'s page, with all its settings.',
|
|
1179
|
+
doesBg: 'Отваря страницата на сесията с всичките ѝ настройки.',
|
|
1180
|
+
},
|
|
1181
|
+
{
|
|
1182
|
+
key: 'wb.addTask',
|
|
1183
|
+
kind: 'link',
|
|
1184
|
+
en: 'Add a task',
|
|
1185
|
+
bg: 'Добави задача',
|
|
1186
|
+
doesEn: 'Opens the session\'s page at the form that adds a task.',
|
|
1187
|
+
doesBg: 'Отваря страницата на сесията при формата за нова задача.',
|
|
1188
|
+
},
|
|
1189
|
+
],
|
|
1190
|
+
},
|
|
1191
|
+
{
|
|
1192
|
+
headingKey: 'wb.chatPanel',
|
|
1193
|
+
en: 'Chat',
|
|
1194
|
+
bg: 'Чат',
|
|
1195
|
+
controls: [
|
|
1196
|
+
{
|
|
1197
|
+
key: 'wb.chatTab',
|
|
1198
|
+
kind: 'tab',
|
|
1199
|
+
en: 'Chat',
|
|
1200
|
+
bg: 'Чат',
|
|
1201
|
+
doesEn: 'The chosen task\'s conversation as it happens, and the box to write to it.',
|
|
1202
|
+
doesBg: 'Разговорът на избраната задача, докато върви, и полето за писане до нея.',
|
|
1203
|
+
},
|
|
1204
|
+
{
|
|
1205
|
+
key: 'wb.kerriganTab',
|
|
1206
|
+
kind: 'tab',
|
|
1207
|
+
en: 'Kerrigan',
|
|
1208
|
+
bg: 'Кериган',
|
|
1209
|
+
doesEn: 'Tell Kerrigan what happened and apply the changes she answers with.',
|
|
1210
|
+
doesBg: 'Кажи на Кериган какво се случи и приложи промените, с които отговори.',
|
|
1211
|
+
},
|
|
1212
|
+
{
|
|
1213
|
+
key: 'wb.toggleChat',
|
|
1214
|
+
kind: 'button',
|
|
1215
|
+
en: 'Show or hide the chat',
|
|
1216
|
+
bg: 'Покажи или скрий чата',
|
|
1217
|
+
doesEn: 'The × on the right panel (and the chat icon on the far left): hides or shows it (Ctrl+L brings it back with the keyboard in the box).',
|
|
1218
|
+
doesBg: 'Хиксът на десния панел (и иконата на чата най-вляво): скрива го или го показва (Ctrl+L го връща с курсора в полето).',
|
|
1219
|
+
},
|
|
1220
|
+
{
|
|
1221
|
+
key: 'wb.sendNote',
|
|
1222
|
+
kind: 'button',
|
|
1223
|
+
en: 'Send to the chat',
|
|
1224
|
+
bg: 'Изпрати на чата',
|
|
1225
|
+
doesEn: 'Queued or running task: sends what is written as a note, with its next message (Ctrl+Enter).',
|
|
1226
|
+
doesBg: 'Чакаща задача или такава, която върви: изпраща написаното като бележка със следващото ѝ съобщение (Ctrl+Enter).',
|
|
1227
|
+
},
|
|
1228
|
+
{
|
|
1229
|
+
key: 'wb.sendContinue',
|
|
1230
|
+
kind: 'button',
|
|
1231
|
+
en: 'Continue with this',
|
|
1232
|
+
bg: 'Продължи с това',
|
|
1233
|
+
doesEn: 'Failed, blocked or stopped task: queues it to carry on from where it got to with this prompt, and offers to run it.',
|
|
1234
|
+
doesBg: 'Провалена, блокирала или спряна задача: слага я да продължи от където е стигнала с този prompt и предлага да се пусне.',
|
|
1235
|
+
},
|
|
1236
|
+
{
|
|
1237
|
+
key: 'wb.sendNewPrompt',
|
|
1238
|
+
kind: 'button',
|
|
1239
|
+
en: 'Queue with this new prompt',
|
|
1240
|
+
bg: 'На опашката с този нов prompt',
|
|
1241
|
+
doesEn: 'Done task: queues it with this new prompt, building on its work, and offers to run it.',
|
|
1242
|
+
doesBg: 'Готова задача: слага я на опашката с този нов prompt, надграждайки работата ѝ, и предлага да се пусне.',
|
|
1243
|
+
},
|
|
1244
|
+
{
|
|
1245
|
+
key: 'wb.sendNone',
|
|
1246
|
+
kind: 'button',
|
|
1247
|
+
en: 'Send',
|
|
1248
|
+
bg: 'Изпрати',
|
|
1249
|
+
doesEn: 'Shown when nothing can be sent to the task now (its session runs another task).',
|
|
1250
|
+
doesBg: 'Показва се, когато сега нищо не може да се изпрати на задачата (сесията ѝ изпълнява друга).',
|
|
1251
|
+
},
|
|
1252
|
+
],
|
|
1253
|
+
},
|
|
1254
|
+
{
|
|
1255
|
+
headingKey: 'wb.kTell',
|
|
1256
|
+
en: 'Tell Kerrigan what happened',
|
|
1257
|
+
bg: 'Кажи на Кериган какво се случи',
|
|
1258
|
+
controls: [
|
|
1259
|
+
{
|
|
1260
|
+
key: 'wb.kScopeTask',
|
|
1261
|
+
kind: 'radio',
|
|
1262
|
+
en: 'This task',
|
|
1263
|
+
bg: 'Тази задача',
|
|
1264
|
+
doesEn: 'The report covers the chosen task.',
|
|
1265
|
+
doesBg: 'Отчетът е за избраната задача.',
|
|
1266
|
+
},
|
|
1267
|
+
{
|
|
1268
|
+
key: 'wb.kScopeSession',
|
|
1269
|
+
kind: 'radio',
|
|
1270
|
+
en: 'This session',
|
|
1271
|
+
bg: 'Тази сесия',
|
|
1272
|
+
doesEn: 'The report covers every task of the chosen session.',
|
|
1273
|
+
doesBg: 'Отчетът е за всички задачи на избраната сесия.',
|
|
1274
|
+
},
|
|
1275
|
+
{
|
|
1276
|
+
key: 'wb.kScopeAll',
|
|
1277
|
+
kind: 'radio',
|
|
1278
|
+
en: 'All sessions',
|
|
1279
|
+
bg: 'Всички сесии',
|
|
1280
|
+
doesEn: 'The report covers every session.',
|
|
1281
|
+
doesBg: 'Отчетът е за всички сесии.',
|
|
1282
|
+
},
|
|
1283
|
+
{
|
|
1284
|
+
key: 'wb.kScope',
|
|
1285
|
+
kind: 'note',
|
|
1286
|
+
en: 'What to tell her about',
|
|
1287
|
+
bg: 'За какво да ѝ кажеш',
|
|
1288
|
+
doesEn: 'The choice above the note: which tasks the report covers.',
|
|
1289
|
+
doesBg: 'Изборът над бележката: за кои задачи е отчетът.',
|
|
1290
|
+
},
|
|
1291
|
+
{
|
|
1292
|
+
key: 'wb.kNote',
|
|
1293
|
+
kind: 'field',
|
|
1294
|
+
en: 'What happened, and what you want now',
|
|
1295
|
+
bg: 'Какво се случи и какво искаш сега',
|
|
1296
|
+
doesEn: 'What you tell Kerrigan: what went wrong, what you want now; it goes into the report.',
|
|
1297
|
+
doesBg: 'Какво казваш на Кериган: какво се обърка, какво искаш сега; влиза в отчета.',
|
|
1298
|
+
},
|
|
1299
|
+
{
|
|
1300
|
+
key: 'wb.kCopy',
|
|
1301
|
+
kind: 'button',
|
|
1302
|
+
en: 'Copy for Kerrigan',
|
|
1303
|
+
bg: 'Копирай за Кериган',
|
|
1304
|
+
doesEn: 'Copies the report — every task with how it ended and why, what it changed, your words, and how to answer — for Kerrigan\'s chat.',
|
|
1305
|
+
doesBg: 'Копира отчета — всяка задача с това как е завършила и защо, какво е променила, твоите думи и как да отговори — за чата на Кериган.',
|
|
1306
|
+
},
|
|
1307
|
+
{
|
|
1308
|
+
key: 'wb.kSave',
|
|
1309
|
+
kind: 'button',
|
|
1310
|
+
en: 'Save as a file',
|
|
1311
|
+
bg: 'Запази като файл',
|
|
1312
|
+
doesEn: 'Saves the same report as a text file, for a chat that takes a file.',
|
|
1313
|
+
doesBg: 'Запазва същия отчет като текстов файл, за чат, който приема файл.',
|
|
1314
|
+
},
|
|
1315
|
+
{
|
|
1316
|
+
key: 'wb.kBrief',
|
|
1317
|
+
kind: 'link',
|
|
1318
|
+
en: 'Kerrigan’s brief',
|
|
1319
|
+
bg: 'Брифингът на Кериган',
|
|
1320
|
+
doesEn: 'Opens the import page, where Kerrigan\'s brief is copied.',
|
|
1321
|
+
doesBg: 'Отваря страницата за импорт, откъдето се копира брифингът на Кериган.',
|
|
1322
|
+
},
|
|
1323
|
+
],
|
|
1324
|
+
},
|
|
1325
|
+
{
|
|
1326
|
+
headingKey: 'wb.kAnswer',
|
|
1327
|
+
en: 'Her answer',
|
|
1328
|
+
bg: 'Нейният отговор',
|
|
1329
|
+
controls: [
|
|
1330
|
+
{
|
|
1331
|
+
key: 'wb.kPaste',
|
|
1332
|
+
kind: 'field',
|
|
1333
|
+
en: 'Paste her whole answer here, words and JSON together',
|
|
1334
|
+
bg: 'Постави целия ѝ отговор тук, думи и JSON заедно',
|
|
1335
|
+
doesEn: 'Her whole answer, words and the JSON with "changes" together.',
|
|
1336
|
+
doesBg: 'Целият ѝ отговор, думите и JSON-ът с "changes" заедно.',
|
|
1337
|
+
},
|
|
1338
|
+
{
|
|
1339
|
+
key: 'wb.kCheck',
|
|
1340
|
+
kind: 'button',
|
|
1341
|
+
en: 'Check her answer',
|
|
1342
|
+
bg: 'Провери отговора ѝ',
|
|
1343
|
+
doesEn: 'Reads her changes against the sessions as they are now and says each in words; nothing is changed.',
|
|
1344
|
+
doesBg: 'Прочита промените ѝ спрямо сесиите, както са сега, и казва всяка с думи; нищо не се променя.',
|
|
1345
|
+
},
|
|
1346
|
+
{
|
|
1347
|
+
key: 'wb.kApply',
|
|
1348
|
+
kind: 'button',
|
|
1349
|
+
en: 'Make the {n} change(s)',
|
|
1350
|
+
bg: 'Направи промените ({n})',
|
|
1351
|
+
doesEn: 'Makes the changes one by one, as the buttons would — a task carried on, added, edited, undone, accepted — and stops at the first refused; nothing is started.',
|
|
1352
|
+
doesBg: 'Прави промените една по една, както биха бутоните — задача продължена, добавена, редактирана, отменена, приета — и спира при първата отказана; нищо не се пуска.',
|
|
1353
|
+
},
|
|
1354
|
+
{
|
|
1355
|
+
key: 'wb.kImportPage',
|
|
1356
|
+
kind: 'link',
|
|
1357
|
+
en: 'Open the import page',
|
|
1358
|
+
bg: 'Отвори страницата за импорт',
|
|
1359
|
+
doesEn: 'Shown when her answer is a plan of new sessions: opens the import page for it.',
|
|
1360
|
+
doesBg: 'Показва се, когато отговорът ѝ е план за нови сесии: отваря страницата за импорт.',
|
|
1361
|
+
},
|
|
1362
|
+
],
|
|
1363
|
+
},
|
|
1364
|
+
{
|
|
1365
|
+
headingKey: 'wb.panel',
|
|
1366
|
+
en: 'Panel',
|
|
1367
|
+
bg: 'Панел',
|
|
1368
|
+
controls: [
|
|
1369
|
+
{
|
|
1370
|
+
key: 'wb.terminal',
|
|
1371
|
+
kind: 'tab',
|
|
1372
|
+
en: 'Terminal',
|
|
1373
|
+
bg: 'Терминал',
|
|
1374
|
+
doesEn: 'The commands the chosen task ran and what each printed, following the newest while it runs.',
|
|
1375
|
+
doesBg: 'Командите, които избраната задача е изпълнила, и какво е изписала всяка, като следва най-новата, докато върви.',
|
|
1376
|
+
},
|
|
1377
|
+
{
|
|
1378
|
+
key: 'wb.problems',
|
|
1379
|
+
kind: 'tab',
|
|
1380
|
+
en: 'Problems',
|
|
1381
|
+
bg: 'Проблеми',
|
|
1382
|
+
doesEn: 'What did not pass in the chosen session — checks, review findings, why a task stopped — each opening its task.',
|
|
1383
|
+
doesBg: 'Какво не е минало в избраната сесия — проверки, находки от прегледа, защо е спряла задача — всяко отваря задачата си.',
|
|
1384
|
+
},
|
|
1385
|
+
{
|
|
1386
|
+
key: 'wb.output',
|
|
1387
|
+
kind: 'tab',
|
|
1388
|
+
en: 'Output',
|
|
1389
|
+
bg: 'Изход',
|
|
1390
|
+
doesEn: 'The chosen session\'s events, newest at the bottom.',
|
|
1391
|
+
doesBg: 'Събитията на избраната сесия, най-новите отдолу.',
|
|
1392
|
+
},
|
|
1393
|
+
{
|
|
1394
|
+
key: 'wb.cmdPanel',
|
|
1395
|
+
kind: 'button',
|
|
1396
|
+
en: 'Show or hide the panel',
|
|
1397
|
+
bg: 'Покажи или скрий панела',
|
|
1398
|
+
doesEn: 'The arrow at the panel\'s right: hides it to its tabs or shows it again (Ctrl+J).',
|
|
1399
|
+
doesBg: 'Стрелката вдясно на панела: свива го до разделите му или го показва отново (Ctrl+J).',
|
|
1400
|
+
},
|
|
1401
|
+
],
|
|
1402
|
+
},
|
|
1403
|
+
],
|
|
1404
|
+
},
|
|
1405
|
+
{
|
|
1406
|
+
route: '/sessions',
|
|
758
1407
|
nameEn: 'Sessions',
|
|
759
1408
|
nameBg: 'Сесии',
|
|
760
1409
|
purposeEn: 'The list of every session on this machine: where one is created, where several are ticked and started one after another, and where a stopped step waits for a decision.',
|
|
@@ -1182,8 +1831,8 @@ export const SYSTEM_GUIDE = [
|
|
|
1182
1831
|
kind: 'link',
|
|
1183
1832
|
en: 'Sessions',
|
|
1184
1833
|
bg: 'Сесии',
|
|
1185
|
-
doesEn: 'Above the name, back to the sessions list on
|
|
1186
|
-
doesBg: 'Над името, обратно към списъка със сесии на
|
|
1834
|
+
doesEn: 'Above the name, back to the sessions list on `/sessions`.',
|
|
1835
|
+
doesBg: 'Над името, обратно към списъка със сесии на `/sessions`.',
|
|
1187
1836
|
},
|
|
1188
1837
|
{
|
|
1189
1838
|
key: 'session.group',
|
|
@@ -1193,6 +1842,22 @@ export const SYSTEM_GUIDE = [
|
|
|
1193
1842
|
doesEn: 'Sessions with the same name here share one Copilot conversation; empty gives this one its own.',
|
|
1194
1843
|
doesBg: 'Сесиите с едно и също име тук споделят един разговор в Copilot; празно дава на тази собствен.',
|
|
1195
1844
|
},
|
|
1845
|
+
{
|
|
1846
|
+
key: 'pm.sessionSetting',
|
|
1847
|
+
kind: 'select',
|
|
1848
|
+
en: 'Plan first, for this session',
|
|
1849
|
+
bg: 'Първо план, за тази сесия',
|
|
1850
|
+
doesEn: 'Plan first for this session\'s tasks: "As in Settings", off, approved without asking, or approved by the operator; overrides Settings → Execution → Plan first.',
|
|
1851
|
+
doesBg: '„Първо план“ за задачите на тази сесия: „Както е в Настройки“, изключено, одобрява се без питане или от оператора; отменя Настройки → Изпълнение → Първо план.',
|
|
1852
|
+
},
|
|
1853
|
+
{
|
|
1854
|
+
key: 'pm.followSettings',
|
|
1855
|
+
kind: 'select',
|
|
1856
|
+
en: 'As in Settings',
|
|
1857
|
+
bg: 'Както е в Настройки',
|
|
1858
|
+
doesEn: 'The session follows Settings → Execution → Plan first.',
|
|
1859
|
+
doesBg: 'Сесията следва Настройки → Изпълнение → Първо план.',
|
|
1860
|
+
},
|
|
1196
1861
|
{
|
|
1197
1862
|
key: 'session.run',
|
|
1198
1863
|
kind: 'button',
|
|
@@ -1708,6 +2373,14 @@ export const SYSTEM_GUIDE = [
|
|
|
1708
2373
|
doesEn: 'In the edit, with version control on: the commit message\'s subject and body.',
|
|
1709
2374
|
doesBg: 'В редакцията, с включен контрол на версиите: заглавието и тялото на комита.',
|
|
1710
2375
|
},
|
|
2376
|
+
{
|
|
2377
|
+
key: 'fup.button',
|
|
2378
|
+
kind: 'button',
|
|
2379
|
+
en: 'Continue with a new prompt',
|
|
2380
|
+
bg: 'Продължи с нов prompt',
|
|
2381
|
+
doesEn: 'On a task card that failed or blocked on its work: the same dialog as on the register\'s row — how it ended, a new prompt, and the task carries on from where it got to in its chat and on its branch.',
|
|
2382
|
+
doesBg: 'На карта на задача, провалена или блокирана по работата: същият прозорец като на реда в регистъра — как е завършила, нов prompt, и задачата продължава оттам, докъдето е стигнала, в чата и на клона си.',
|
|
2383
|
+
},
|
|
1711
2384
|
{
|
|
1712
2385
|
key: 'task.continue',
|
|
1713
2386
|
kind: 'button',
|
|
@@ -1804,6 +2477,22 @@ export const SYSTEM_GUIDE = [
|
|
|
1804
2477
|
doesEn: 'The exact first message that opened the task.',
|
|
1805
2478
|
doesBg: 'Точното първо съобщение, с което е започнала задачата.',
|
|
1806
2479
|
},
|
|
2480
|
+
{
|
|
2481
|
+
key: 'pm.taskApproved',
|
|
2482
|
+
kind: 'disclosure',
|
|
2483
|
+
en: 'Plan (version {n}, approved)',
|
|
2484
|
+
bg: 'План (версия {n}, одобрен)',
|
|
2485
|
+
doesEn: 'The plan the work follows (plan first): what was already there, the approach, steps, files, how it shows the work is done, risks; who approved it and the comments that asked for earlier versions to change.',
|
|
2486
|
+
doesBg: 'Планът, който работата следва („Първо план“): какво вече има, подход, стъпки, файлове, как ще покаже, че е готово, рискове; кой го е одобрил и коментарите, поискали промени в по-ранни версии.',
|
|
2487
|
+
},
|
|
2488
|
+
{
|
|
2489
|
+
key: 'pm.taskWaiting',
|
|
2490
|
+
kind: 'disclosure',
|
|
2491
|
+
en: 'Plan (version {n}, waiting for approval)',
|
|
2492
|
+
bg: 'План (версия {n}, чака одобрение)',
|
|
2493
|
+
doesEn: 'The same, open while the plan waits on its approval card at the top of every page.',
|
|
2494
|
+
doesBg: 'Същото, отворено, докато планът чака на картата си за одобрение най-горе на всяка страница.',
|
|
2495
|
+
},
|
|
1807
2496
|
{
|
|
1808
2497
|
key: 'task.finalReply',
|
|
1809
2498
|
kind: 'disclosure',
|
|
@@ -2157,8 +2846,8 @@ export const SYSTEM_GUIDE = [
|
|
|
2157
2846
|
kind: 'button',
|
|
2158
2847
|
en: 'New session',
|
|
2159
2848
|
bg: 'Нова сесия',
|
|
2160
|
-
doesEn: 'Goes to the "New session" form on
|
|
2161
|
-
doesBg: 'Отива на формата „Нова сесия“ на
|
|
2849
|
+
doesEn: 'Goes to the "New session" form on `/sessions`.',
|
|
2850
|
+
doesBg: 'Отива на формата „Нова сесия“ на `/sessions`.',
|
|
2162
2851
|
},
|
|
2163
2852
|
{
|
|
2164
2853
|
key: 'reg.newTask',
|
|
@@ -2312,6 +3001,37 @@ export const SYSTEM_GUIDE = [
|
|
|
2312
3001
|
},
|
|
2313
3002
|
],
|
|
2314
3003
|
},
|
|
3004
|
+
{
|
|
3005
|
+
headingKey: 'fup.title',
|
|
3006
|
+
en: 'Continue “{title}” with a new prompt',
|
|
3007
|
+
bg: 'Продължи „{title}“ с нов prompt',
|
|
3008
|
+
controls: [
|
|
3009
|
+
{
|
|
3010
|
+
key: 'fup.original',
|
|
3011
|
+
kind: 'disclosure',
|
|
3012
|
+
en: 'The task’s prompt as it stands',
|
|
3013
|
+
bg: 'Prompt-ът на задачата, какъвто е',
|
|
3014
|
+
doesEn: 'Shows the task\'s own prompt, which stays as it is: the new one is added to it.',
|
|
3015
|
+
doesBg: 'Показва собствения prompt на задачата, който остава какъвто е: новият се добавя към него.',
|
|
3016
|
+
},
|
|
3017
|
+
{
|
|
3018
|
+
key: 'fup.prompt',
|
|
3019
|
+
kind: 'field',
|
|
3020
|
+
en: 'New prompt',
|
|
3021
|
+
bg: 'Нов prompt',
|
|
3022
|
+
doesEn: 'What to do now, in the operator\'s words: what was wrong and what to do instead. Required. It wins where it and the task\'s prompt disagree.',
|
|
3023
|
+
doesBg: 'Какво да направи сега, с думите на оператора: какво е било грешно и какво да направи вместо това. Задължително. Надделява, където то и prompt-ът на задачата си противоречат.',
|
|
3024
|
+
},
|
|
3025
|
+
{
|
|
3026
|
+
key: 'fup.save',
|
|
3027
|
+
kind: 'button',
|
|
3028
|
+
en: 'Queue it to continue with this prompt',
|
|
3029
|
+
bg: 'Върни в опашката да продължи с този prompt',
|
|
3030
|
+
doesEn: 'Queues the task to carry on with the prompt, in its chat and on its branch; the dialog then offers "Run this task".',
|
|
3031
|
+
doesBg: 'Връща задачата в опашката да продължи с prompt-а, в чата и на клона ѝ; после прозорецът предлага „Пусни тази задача“.',
|
|
3032
|
+
},
|
|
3033
|
+
],
|
|
3034
|
+
},
|
|
2315
3035
|
{
|
|
2316
3036
|
headingKey: null,
|
|
2317
3037
|
en: 'On every task row, in every view',
|
|
@@ -2421,6 +3141,14 @@ export const SYSTEM_GUIDE = [
|
|
|
2421
3141
|
doesEn: 'On a row that failed or blocked on its work: says what happens to the chat, branch and record, then starts a new attempt of that task alone; the rest of the queue stays.',
|
|
2422
3142
|
doesBg: 'На ред, провален или блокиран по работата: казва какво става с чата, клона и записа, после пуска нов опит само за тази задача; останалите в опашката остават.',
|
|
2423
3143
|
},
|
|
3144
|
+
{
|
|
3145
|
+
key: 'fup.button',
|
|
3146
|
+
kind: 'button',
|
|
3147
|
+
en: 'Continue with a new prompt',
|
|
3148
|
+
bg: 'Продължи с нов prompt',
|
|
3149
|
+
doesEn: 'The way on after a task failed or blocked on its work: opens a dialog that shows how it ended (the reason, the checks that did not pass, what the review found) and takes a new prompt. Queued with it, the task carries on from where it got to — its own chat and branch, the failed attempt\'s work in the tree — and the chat is told how it ended and why, then given the prompt, which is added to the task\'s own. Saving does not start it; the dialog then offers "Run this task". Recommend this when the operator wants to keep the work and correct it.',
|
|
3150
|
+
doesBg: 'Пътят напред, когато задача се е провалила или блокирала по работата: отваря прозорец, който показва как е завършила (причината, проверките, които не минаха, какво откри рецензията) и приема нов prompt. Върната с него в опашката, задачата продължава оттам, докъдето е стигнала — собственият ѝ чат и клон, с работата на неуспешния опит в дървото — а чатът научава как и защо е завършила и получава prompt-а, който се добавя към собствения на задачата. Запазването не я пуска; после прозорецът предлага „Пусни тази задача“. Препоръчвай го, когато операторът иска да запази работата и да я поправи.',
|
|
3151
|
+
},
|
|
2424
3152
|
{
|
|
2425
3153
|
key: 'reg.continueHere',
|
|
2426
3154
|
kind: 'button',
|
|
@@ -2429,13 +3157,21 @@ export const SYSTEM_GUIDE = [
|
|
|
2429
3157
|
doesEn: 'On a row stopped by a limit from the settings (minutes, messages, reply wait, rounds of fixing), by the bot stopping or by the operator: says what happens to the chat, branch and files, then starts that task alone in its chat.',
|
|
2430
3158
|
doesBg: 'На ред, спрян от лимит в настройките (минути, съобщения, чакане на отговор, кръгове поправки), от спрял бот или от оператора: казва какво става с чата, клона и файловете, после пуска само тази задача в чата ѝ.',
|
|
2431
3159
|
},
|
|
3160
|
+
{
|
|
3161
|
+
key: 'reg.continueHerePrompt',
|
|
3162
|
+
kind: 'field',
|
|
3163
|
+
en: 'New prompt (optional)',
|
|
3164
|
+
bg: 'Нов prompt (по желание)',
|
|
3165
|
+
doesEn: 'In the "Continue where it stopped" panel: a new prompt to carry on with, optional — added to the task, and the chat does it as it carries on.',
|
|
3166
|
+
doesBg: 'В панела „Продължи откъдето спря“: нов prompt, с който да продължи, по желание — добавя се към задачата и чатът го изпълнява, докато продължава.',
|
|
3167
|
+
},
|
|
2432
3168
|
{
|
|
2433
3169
|
key: 'reg.fixPrompt',
|
|
2434
3170
|
kind: 'button',
|
|
2435
3171
|
en: 'Fix the prompt and queue it again',
|
|
2436
3172
|
bg: 'Поправи prompt-а и върни в опашката',
|
|
2437
|
-
doesEn: 'On a row that did not end done, its session idle: rewrite the task\'s text and queue it again. Saving does not start it; the same dialog then asks "Run it now?" with the "Run this task" choices and buttons.',
|
|
2438
|
-
doesBg: 'На ред, който не е завършил готов, при спряна сесия: пренапишете текста на задачата и я върнете в
|
|
3173
|
+
doesEn: 'On a row that did not end done, its session idle: rewrite the task\'s text and queue it again — it starts over from where the task first began, the failed attempt\'s work set aside on its branch (to keep that work and go on from it: "Continue with a new prompt"). Saving does not start it; the same dialog then asks "Run it now?" with the "Run this task" choices and buttons.',
|
|
3174
|
+
doesBg: 'На ред, който не е завършил готов, при спряна сесия: пренапишете текста на задачата и я върнете в опашката — тя започва отначало оттам, откъдето е тръгнала първия път, а работата на неуспешния опит остава в неговия клон (за да я запазите и да продължите от нея: „Продължи с нов prompt“). Запазването не я пуска; после същият прозорец пита „Да я пусна ли сега?“ с изборите и бутоните на „Пусни тази задача“.',
|
|
2439
3175
|
},
|
|
2440
3176
|
{
|
|
2441
3177
|
key: 'runq.later',
|
|
@@ -2672,24 +3408,24 @@ export const SYSTEM_GUIDE = [
|
|
|
2672
3408
|
kind: 'button',
|
|
2673
3409
|
en: 'Pause after this task',
|
|
2674
3410
|
bg: 'Пауза след тази задача',
|
|
2675
|
-
doesEn: 'As on
|
|
2676
|
-
doesBg: 'Както на
|
|
3411
|
+
doesEn: 'As on `/sessions`: holds the run after the task in flight finishes properly. Press it first after a failure you want to think about.',
|
|
3412
|
+
doesBg: 'Както на `/sessions`: задържа пускането, след като текущата задача приключи както трябва. Натиснете го първо след провал, над който искате да помислите.',
|
|
2677
3413
|
},
|
|
2678
3414
|
{
|
|
2679
3415
|
key: 'batch.resume',
|
|
2680
3416
|
kind: 'button',
|
|
2681
3417
|
en: 'Take the hold off',
|
|
2682
3418
|
bg: 'Махни паузата',
|
|
2683
|
-
doesEn: 'As on
|
|
2684
|
-
doesBg: 'Както на
|
|
3419
|
+
doesEn: 'As on `/sessions`: the queue carries on.',
|
|
3420
|
+
doesBg: 'Както на `/sessions`: опашката продължава.',
|
|
2685
3421
|
},
|
|
2686
3422
|
{
|
|
2687
3423
|
key: 'batch.stop',
|
|
2688
3424
|
kind: 'button',
|
|
2689
3425
|
en: 'Stop after the current step',
|
|
2690
3426
|
bg: 'Спри след текущата стъпка',
|
|
2691
|
-
doesEn: 'As on
|
|
2692
|
-
doesBg: 'Както на
|
|
3427
|
+
doesEn: 'As on `/sessions`: stops after the current step; the task in flight ends aborted.',
|
|
3428
|
+
doesBg: 'Както на `/sessions`: спира след текущата стъпка; текущата задача завършва прекратена.',
|
|
2693
3429
|
},
|
|
2694
3430
|
{
|
|
2695
3431
|
key: 'reg.continue',
|
|
@@ -3043,8 +3779,8 @@ export const SYSTEM_GUIDE = [
|
|
|
3043
3779
|
kind: 'button',
|
|
3044
3780
|
en: 'To the sessions',
|
|
3045
3781
|
bg: 'Към сесиите',
|
|
3046
|
-
doesEn: 'Goes to the sessions list on
|
|
3047
|
-
doesBg: 'Отива на списъка със сесии на
|
|
3782
|
+
doesEn: 'Goes to the sessions list on `/sessions`.',
|
|
3783
|
+
doesBg: 'Отива на списъка със сесии на `/sessions`.',
|
|
3048
3784
|
},
|
|
3049
3785
|
{
|
|
3050
3786
|
key: 'proj.toImport',
|
|
@@ -3218,6 +3954,14 @@ export const SYSTEM_GUIDE = [
|
|
|
3218
3954
|
doesEn: 'Closes the preview; nothing is changed.',
|
|
3219
3955
|
doesBg: 'Затваря прегледа; нищо не се променя.',
|
|
3220
3956
|
},
|
|
3957
|
+
{
|
|
3958
|
+
key: 'exec.autoContinue',
|
|
3959
|
+
kind: 'field',
|
|
3960
|
+
en: 'Keep going after a limit',
|
|
3961
|
+
bg: 'Продължавай след лимит',
|
|
3962
|
+
doesEn: 'How many times a task stopped by a limit (messages, minutes, reply wait, wrong format, rounds of fixing checks or review findings) is carried on at once in its own chat, from where it got to (0–20, 3 by default); after that it waits for "Continue". Blocked tasks and tasks the operator stopped are not carried on.',
|
|
3963
|
+
doesBg: 'Колко пъти задача, спряна от лимит (съобщения, минути, чакане на отговор, грешен формат, кръгове поправки на проверки или находки), продължава веднага в своя чат, от където е стигнала (0–20, по подразбиране 3); после чака „Continue“. Blocked задачи и задачи, спрени от оператора, не продължават сами.',
|
|
3964
|
+
},
|
|
3221
3965
|
{
|
|
3222
3966
|
key: 'exec.minApproaches',
|
|
3223
3967
|
kind: 'field',
|
|
@@ -3354,6 +4098,38 @@ export const SYSTEM_GUIDE = [
|
|
|
3354
4098
|
doesEn: 'It runs without anyone reading it. Only on a machine where that is acceptable.',
|
|
3355
4099
|
doesBg: 'Изпълнява се, без някой да я е прочел. Само на машина, където това е приемливо.',
|
|
3356
4100
|
},
|
|
4101
|
+
{
|
|
4102
|
+
key: 'pm.setting',
|
|
4103
|
+
kind: 'select',
|
|
4104
|
+
en: 'Plan first',
|
|
4105
|
+
bg: 'Първо план',
|
|
4106
|
+
doesEn: 'Each task first looks at the code without changing anything and makes a plan; the work starts once the plan is approved, and the review checks the work followed it. A run that does not ask approves the plan itself, so it never waits.',
|
|
4107
|
+
doesBg: 'Всяка задача първо разглежда кода, без да променя нищо, и прави план; работата започва, когато планът е одобрен, а прегледът проверява дали работата го следва. Пускане, което не пита, одобрява плана само, така че никога не чака.',
|
|
4108
|
+
},
|
|
4109
|
+
{
|
|
4110
|
+
key: 'pm.off',
|
|
4111
|
+
kind: 'select',
|
|
4112
|
+
en: 'Off — the work starts at once',
|
|
4113
|
+
bg: 'Изключено — работата започва веднага',
|
|
4114
|
+
doesEn: 'No plan: the task starts changing the code in its first reply, as before.',
|
|
4115
|
+
doesBg: 'Без план: задачата започва да променя кода от първия си отговор, както досега.',
|
|
4116
|
+
},
|
|
4117
|
+
{
|
|
4118
|
+
key: 'pm.auto',
|
|
4119
|
+
kind: 'select',
|
|
4120
|
+
en: 'On — the plan is approved without asking',
|
|
4121
|
+
bg: 'Включено — планът се одобрява без питане',
|
|
4122
|
+
doesEn: 'The runner approves the plan as soon as it is complete and records that it did.',
|
|
4123
|
+
doesBg: 'Runner-ът одобрява плана веднага щом е пълен и записва, че го е направил.',
|
|
4124
|
+
},
|
|
4125
|
+
{
|
|
4126
|
+
key: 'pm.approveMode',
|
|
4127
|
+
kind: 'select',
|
|
4128
|
+
en: 'On — I approve the plan when the run asks before each command',
|
|
4129
|
+
bg: 'Включено — аз одобрявам плана, когато пускането пита преди всяка команда',
|
|
4130
|
+
doesEn: 'In a run that asks before each command, the plan waits on a card at the top of every page; an unattended run approves it itself and says why.',
|
|
4131
|
+
doesBg: 'При пускане с питане преди всяка команда планът чака на карта най-горе на всяка страница; пускане без надзор го одобрява само и казва защо.',
|
|
4132
|
+
},
|
|
3357
4133
|
],
|
|
3358
4134
|
},
|
|
3359
4135
|
],
|