strom-research 1.14.0 → 1.15.0-beta.2
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/assets/lang/cs.json +86 -48
- package/assets/lang/de.json +47 -9
- package/dist/agents/files.js +55 -3
- package/dist/brief/sheet.js +4 -3
- package/dist/cli/context.js +18 -0
- package/dist/cli/fixes.js +9 -3
- package/dist/cli/main.js +2 -2
- package/dist/cli/menu-links.js +14 -10
- package/dist/cli/menu-mode.js +79 -13
- package/dist/cli/menu-parts.js +4 -4
- package/dist/cli/menu-research.js +7 -2
- package/dist/cli/menu-settings.js +11 -9
- package/dist/cli/menu.js +22 -12
- package/dist/cli/ui.js +49 -11
- package/dist/cli/wizard.js +38 -13
- package/dist/commands/browse.js +7 -3
- package/dist/commands/calibrate.js +3 -2
- package/dist/commands/checks.js +2 -2
- package/dist/commands/connectors.js +72 -16
- package/dist/commands/grep.js +27 -5
- package/dist/commands/intake.js +14 -4
- package/dist/commands/links.js +30 -1
- package/dist/commands/media.js +5 -3
- package/dist/commands/meta.js +8 -4
- package/dist/commands/read.js +6 -2
- package/dist/commands/session.js +3 -3
- package/dist/commands/setup.js +21 -3
- package/dist/commands/sources.js +29 -1
- package/dist/commands/start.js +2 -2
- package/dist/commands/sync.js +5 -5
- package/dist/commands/tasks.js +3 -3
- package/dist/commands/trees.js +9 -3
- package/dist/core/apps.js +6 -3
- package/dist/core/archiveasks.js +2 -2
- package/dist/core/batches.js +8 -4
- package/dist/core/config.js +13 -1
- package/dist/core/errors.js +6 -0
- package/dist/core/grep.js +4 -4
- package/dist/core/live.js +21 -13
- package/dist/core/mode.js +2 -9
- package/dist/core/samebook.js +42 -0
- package/dist/core/schema.js +1 -0
- package/dist/core/state.js +56 -0
- package/dist/core/sync.js +4 -4
- package/dist/core/tree.js +1 -1
- package/dist/core/waiting.js +3 -3
- package/dist/core/workers.js +11 -0
- package/package.json +4 -1
package/assets/lang/cs.json
CHANGED
|
@@ -122,12 +122,12 @@
|
|
|
122
122
|
"ui.setup.git.wait": "Dokončit instalaci v okně, které se otevřelo, a pak Enter.",
|
|
123
123
|
"ui.setup.git.manual": "Nainstalovat ho příkazem: {command} – a pak znovu spustit {strom}.",
|
|
124
124
|
"ui.setup.agent.ok": "✓ AI agent: {name}",
|
|
125
|
-
"ui.setup.agent.none": "
|
|
125
|
+
"ui.setup.agent.none": "Na tomto počítači není AI agent – výzkum v matrikách a archivech se dělá s ním.",
|
|
126
126
|
"ui.setup.agent.install": "Nainstalovat Claude Code hned (doporučeno; je potřeba předplatné Claude)",
|
|
127
127
|
"ui.setup.agent.guide": "Ukázat, jací agenti jsou (otevře stránku v prohlížeči)",
|
|
128
|
-
"ui.setup.agent.
|
|
128
|
+
"ui.setup.agent.archive": "Zatím jen archiv",
|
|
129
129
|
"ui.setup.agent.login": "Při prvním spuštění agenta přijde přihlášení – otevře se okno prohlížeče.",
|
|
130
|
-
"ui.setup.agent.manual": "
|
|
130
|
+
"ui.setup.agent.manual": "AI agent se instaluje podle návodu: {url}",
|
|
131
131
|
"ui.setup.model": "Který model má výzkum dělat?",
|
|
132
132
|
"ui.setup.model.opus": "Opus – nejlépe čte staré rukopisy (doporučeno)",
|
|
133
133
|
"ui.setup.model.sonnet": "Sonnet – rychlejší; tištěné dokumenty a běžná práce",
|
|
@@ -184,7 +184,7 @@
|
|
|
184
184
|
"ui.tune.q.window": "Odpovědět na otázku ke čtení snímků – „{text}“: {label}?",
|
|
185
185
|
"ui.tune.q.kept": "✓ Odpověď uložena: {label}.",
|
|
186
186
|
"ui.tune.q.kept.tasks": "✓ Přidané úkoly: {tasks} – ve frontě s prioritou práce, ze které vzešly.",
|
|
187
|
-
"ui.tune.q.kept.notasks": "Teď není koho hledat: žádný úkol nepřibyl (každá osoba už jeden má, nebo není na kraji stromu ani v
|
|
187
|
+
"ui.tune.q.kept.notasks": "Teď není koho hledat: žádný úkol nepřibyl (každá osoba už jeden má, nebo není na kraji stromu ani v rozpracované linii).",
|
|
188
188
|
"ui.tune.q.kept.calibrate": "Kalibraci spouští člověk: strom media calibrate (cena se řekne předem).",
|
|
189
189
|
"ui.tune.q.kept.reset": "Vrátí se příkazem: {command}",
|
|
190
190
|
"ui.tune.q.kept.vision": "✓ Skeny se odteď čtou modelem {model} (model.vision).",
|
|
@@ -197,7 +197,7 @@
|
|
|
197
197
|
"ui.tune.q.c.never": "Nikdy",
|
|
198
198
|
"ui.tune.q.weak": "Kniha {book} ({title}): záporů na slabých skenech {n}, teď je tu ostřejší kopie. Hledat znovu?",
|
|
199
199
|
"ui.tune.q.weak.why": "{n} z {of} záporů vzniklo na pohledech zvětšených nad detail skenů; ostřejší kopie ({copies}) mají až {gain}× víc detailu.",
|
|
200
|
-
"ui.tune.q.c.edge": "Ano, u osob na kraji stromu nebo v
|
|
200
|
+
"ui.tune.q.c.edge": "Ano, u osob na kraji stromu nebo v rozpracované linii (úkolů asi {tasks})",
|
|
201
201
|
"ui.tune.q.c.brief": "Jen uvést v zadání agenta",
|
|
202
202
|
"ui.tune.q.c.no": "Ne",
|
|
203
203
|
"ui.tune.q.sharper": "Kniha {book} ({title}) se čte hůř než ostatní a její archiv dává ostřejší výřezy. Stáhnout ostřejší výřezy nejistých snímků?",
|
|
@@ -709,6 +709,7 @@
|
|
|
709
709
|
"ui.o.stories": "vyprávění",
|
|
710
710
|
"ui.o.mode": "druh",
|
|
711
711
|
"ui.o.mode.archive": "archiv — data přicházejí z aplikace Strom (přepíná jen uživatel: strom mode research)",
|
|
712
|
+
"ui.o.mode.waiting": "výzkum čeká na AI agenta na tomto počítači — zatím se drží jako archiv (po instalaci agenta je to sám zase výzkum)",
|
|
712
713
|
"ui.o.stories.tell": "zapnuté (výchozí): řekni uživateli (strom to řekne jen jednou) jednou větou, že k předkům budeš psát i vyprávění do rodinné knihy v aplikaci Strom a že to může odmítnout – strom config set stories no (souhlas: strom config set stories yes)",
|
|
713
714
|
"ui.o.stories.on": "zapnuté: strom navrhne vyprávění, jakmile zápisy vyprávějí život (úkoly narrate)",
|
|
714
715
|
"ui.o.stories.off": "vypnuté (uživatel nechce) – nezmiňuj to",
|
|
@@ -792,6 +793,7 @@
|
|
|
792
793
|
"ui.setup.stromapp.no": "Ne – už ji nezmiňovat",
|
|
793
794
|
"ui.menu.app.watch": "Sledovat práci agenta v aplikaci Strom (živě)",
|
|
794
795
|
"ui.menu.app.new": "Aplikace Strom – výzkum jako rodokmen, sledovaný živě",
|
|
796
|
+
"ui.menu.app.new.archive": "Aplikace Strom – rodokmen, jeho osoby a prameny",
|
|
795
797
|
"ui.menu.app.tip": "Tip: výzkum jde prohlížet jako rodokmen v aplikaci Strom a sledovat ho živě, když agent pracuje – volba {key}.",
|
|
796
798
|
"ui.menu.app.live": "Agent pracuje – živě ho jde sledovat v aplikaci Strom: volba {key}.",
|
|
797
799
|
"ui.app.open.now": "Až bude nainstalovaná: otevřít v ní výzkum?",
|
|
@@ -923,11 +925,11 @@
|
|
|
923
925
|
"ui.stats.cost.readers": ", z toho čtenáři skenů {cost}",
|
|
924
926
|
"ui.stats.stories": "Vyprávění: {n}",
|
|
925
927
|
"ui.status.data": "Osoby: {persons} · rodiny: {families}",
|
|
926
|
-
"ui.status.directions": " ·
|
|
928
|
+
"ui.status.directions": " · linie výzkumu: {n}",
|
|
927
929
|
"ui.status.check.ok": "Kontrola: v pořádku",
|
|
928
930
|
"ui.status.check.errors": "Kontrola: chyb {n} → strom check",
|
|
929
931
|
"ui.status.check.warnings": " · upozornění {n}",
|
|
930
|
-
"ui.status.dirs": "
|
|
932
|
+
"ui.status.dirs": "Linie výzkumu:",
|
|
931
933
|
"ui.status.recent": "Naposledy:",
|
|
932
934
|
"ui.help.cmd.menu": "Průvodní menu: vše, co člověk se stromem dělá, podle čísel",
|
|
933
935
|
"ui.help.cmd.status": "Rodokmen v kostce: data, kontrola, co čeká, co se naposledy změnilo, místo na disku",
|
|
@@ -945,10 +947,10 @@
|
|
|
945
947
|
"ui.help.cmd.chat": "Rozhovor s agentem o výzkumu",
|
|
946
948
|
"ui.help.cmd.run": "Nechat agenta pracovat samotného na dalších úkolech",
|
|
947
949
|
"ui.help.cmd.session.finish": "Požádat pracujícího agenta, ať zapíše, co našel, a skončí",
|
|
948
|
-
"ui.help.cmd.research.new": "
|
|
949
|
-
"ui.help.cmd.research.pause": "Pozastavit
|
|
950
|
-
"ui.help.cmd.research.resume": "Znovu se pustit do
|
|
951
|
-
"ui.help.cmd.research.done": "Ukončit
|
|
950
|
+
"ui.help.cmd.research.new": "Nová linie: předkové nebo potomci někoho, nebo jedna otázka",
|
|
951
|
+
"ui.help.cmd.research.pause": "Pozastavit linii: její úkoly počkají",
|
|
952
|
+
"ui.help.cmd.research.resume": "Znovu se pustit do pozastavené linie",
|
|
953
|
+
"ui.help.cmd.research.done": "Ukončit linii (nic se nesmaže)",
|
|
952
954
|
"ui.help.cmd.review": "Revize osoby: prověřit a doplnit, co o ní víme",
|
|
953
955
|
"ui.help.cmd.intake": "Přidat podklady od rodiny: dokumenty, fotky, rodokmen, co je známo",
|
|
954
956
|
"ui.help.cmd.sync": "Načíst úpravy z aplikace Strom nebo z jiného rodokmenu (nejdřív ukáže, zapíše s --apply)",
|
|
@@ -1074,16 +1076,38 @@
|
|
|
1074
1076
|
"ui.setup.fromapp": "Spuštěno z aplikace Strom. Jak má výzkum tento rodokmen vést?",
|
|
1075
1077
|
"ui.setup.fromapp.archive": "Jako archiv: data se zadávají v aplikaci, výzkum je drží i s prameny, originály a historií (bez AI agenta, zapnout ho jde později)",
|
|
1076
1078
|
"ui.setup.fromapp.agent": "Jako výzkum s agentem {agent}: agent hledá předky v záznamech (doporučeno)",
|
|
1077
|
-
"ui.link.new.archive": "Je to archiv: co se zadá v aplikaci Strom,
|
|
1078
|
-
"ui.
|
|
1079
|
+
"ui.link.new.archive": "Je to archiv: co se zadá v aplikaci Strom, drží, jak to přijde. Výzkum se zapíná v menu, první položka.",
|
|
1080
|
+
"ui.link.new.waiting": "Výzkum čeká na AI agenta, který na tomto počítači není: do té doby drží, co přijde z aplikace Strom, jako archiv. Agenta nainstalovat nebo vybrat jiného: menu, první položka.",
|
|
1081
|
+
"ui.setup.archive": "Bez AI agenta na počítači drží výzkum data z aplikace Strom jako archiv: zadávají se v aplikaci Strom a zůstávají i s prameny a historií. Po instalaci agenta výzkum pokračuje s ním sám.",
|
|
1079
1082
|
"ui.setup.archive.chosen": "Nový výzkum je archiv: data se zadávají v aplikaci Strom a výzkum je drží i s prameny a historií. Práce s agentem: první položka menu (strom mode research).",
|
|
1080
1083
|
"ui.setup.archive.off": "Agent už tu je: mají nové výzkumy pracovat s ním (ne jen archiv)?",
|
|
1081
|
-
"ui.mode.pick": "
|
|
1084
|
+
"ui.mode.pick": "Výzkum, nebo jen archiv:",
|
|
1082
1085
|
"ui.mode.research": "výzkum: hledání v matrikách a archivech",
|
|
1083
1086
|
"ui.mode.archive": "jen archiv dat z aplikace Strom",
|
|
1087
|
+
"ui.mode.waiting": "výzkum, čeká na AI agenta na tomto počítači",
|
|
1088
|
+
"ui.mode.is.waiting": "Tento výzkum čeká na AI agenta na tomto počítači: dokud tu žádný není, drží data z aplikace Strom jako archiv (nic pro agenta nevzniká, úkoly čekají). Natrvalo jen archiv: strom mode archive",
|
|
1089
|
+
"ui.mode.this.research": "Tento výzkum: výzkum – hledání v matrikách a archivech",
|
|
1090
|
+
"ui.mode.this.archive": "Tento výzkum: jen archiv dat z aplikace Strom",
|
|
1091
|
+
"ui.mode.new.research": "Nové výzkumy: výzkum – hledání v matrikách a archivech",
|
|
1092
|
+
"ui.mode.new.archive": "Nové výzkumy: jen archiv dat z aplikace Strom",
|
|
1093
|
+
"ui.mode.new.is": "Nové výzkumy na tomto počítači: {state}.",
|
|
1094
|
+
"ui.settings.newmode": "Nové výzkumy: výzkum, nebo jen archiv: {state}",
|
|
1095
|
+
"ui.mode.later": "Archiv zůstává beze změny: výzkum jde zapnout, až bude na počítači AI agent.",
|
|
1096
|
+
"ui.mode.setup": "Nastavit teď agenta (model, kde mluvit, co smí sám)?",
|
|
1097
|
+
"ui.setup.newmode": "Čím má být nový výzkum na tomto počítači?",
|
|
1098
|
+
"ui.setup.newmode.agent": "Výzkum s agentem {agent}: hledá předky v matrikách a archivech (doporučeno)",
|
|
1099
|
+
"ui.setup.newmode.archive": "Jen archiv – ukládat data z aplikace Strom",
|
|
1100
|
+
"ui.menu.waitagent": "Výzkum čeká na AI agenta: dokud na počítači žádný není, data z aplikace Strom se ukládají jako v archivu.",
|
|
1101
|
+
"ui.menu.waitagent.chosen": "Výzkum čeká na svého AI agenta ({agent}), který na tomto počítači není: zatím se data z aplikace Strom ukládají jako v archivu.",
|
|
1102
|
+
"ui.menu.keeparchive": "Nechat jen jako archiv: ukládat data z aplikace Strom",
|
|
1103
|
+
"ui.why.waitagent.human": "výzkum čeká na AI agenta na tomto počítači: zatím se data z aplikace Strom ukládají jako v archivu (menu: nainstalovat agenta, nebo nechat jen jako archiv)",
|
|
1104
|
+
"ui.why.waitagent.agent": "agent výzkumu na tomto počítači není: výzkum na něj čeká a zatím se drží jako archiv (žádné sezení, žádná fronta) – co přišlo a co čeká: strom sync --inbox; agenta instaluje člověk (strom, první položka menu)",
|
|
1105
|
+
"ui.plan.waitagent": "{name} čeká na AI agenta na tomto počítači: dokud tu žádný není, nic se neplánuje. První položka menu ho nainstaluje.",
|
|
1084
1106
|
"ui.settings.mode": "Výzkum, nebo jen archiv: {state}",
|
|
1085
1107
|
"ui.menu.archive": "Archiv: data přicházejí z aplikace Strom.",
|
|
1086
1108
|
"ui.menu.archive.agent": "Zapnout výzkum: hledání v matrikách a archivech",
|
|
1109
|
+
"ui.setup.mode.ask": "„{name}“ je archiv. Nechat ho tak, nebo zapnout výzkum?",
|
|
1110
|
+
"ui.setup.mode.keep": "Nechat jako archiv",
|
|
1087
1111
|
"ui.menu.archive.recent": "Co nového přišlo",
|
|
1088
1112
|
"ui.sync.person.new": "{n}. nová osoba: {name}",
|
|
1089
1113
|
"ui.sync.fact.new": "{n}. {who}: nové — {fact}",
|
|
@@ -1210,10 +1234,11 @@
|
|
|
1210
1234
|
"ui.menu.settings.archive": "Nastavení: jazyk, zprávy, archiv nebo výzkum, údržba",
|
|
1211
1235
|
"ui.menu.more.archive.noapp": "Přidat do archivu: podklady, jiný rodokmen",
|
|
1212
1236
|
"ui.menu.more.archive": "Přidat do archivu: podklady, úpravy z aplikace Strom",
|
|
1237
|
+
"ui.menu.more.archive.empty": "Přidat do archivu: podklady",
|
|
1213
1238
|
"ui.menu.app.tip.archive": "Tip: výzkum jde prohlédnout jako rodokmen v aplikaci Strom – volba {key}.",
|
|
1214
1239
|
"ui.dry.done": "Nanečisto (--dry-run): nic se nezapsalo – řádky výše říkají, co by se stalo.",
|
|
1215
1240
|
"ui.trees.persons": "osob: {n}",
|
|
1216
|
-
"ui.trees.researches": "
|
|
1241
|
+
"ui.trees.researches": "linií výzkumu: {n}",
|
|
1217
1242
|
"ui.trees.none": "zatím žádný rodokmen → strom init \"<název>\"",
|
|
1218
1243
|
"ui.trees.use": "teď se pracuje na „{name}“ ({root})",
|
|
1219
1244
|
"ui.error.live.not-started": "most se nespustil",
|
|
@@ -1342,16 +1367,16 @@
|
|
|
1342
1367
|
"ui.consent.hook.on": "Nechat hook „{name}“, aby se dozvídal všechno, co se uloží do výzkumů? Je to program na tomto počítači a udělá s tím, k čemu byl napsán.",
|
|
1343
1368
|
"ui.consent.hook.off": "Přestat hooku „{name}“ hlásit, co se ukládá?",
|
|
1344
1369
|
"ui.run.others": "⚠ V tomto rodokmenu už pracuje jiný běh (od {since}): tento si vezme jiné úkoly – náklady se sčítají.",
|
|
1345
|
-
"ui.menu.more": "Rozšířit výzkum: podklady,
|
|
1346
|
-
"ui.menu.more.app": "Rozšířit výzkum: podklady,
|
|
1370
|
+
"ui.menu.more": "Rozšířit výzkum: podklady, nová linie, revize osoby, jiný rodokmen",
|
|
1371
|
+
"ui.menu.more.app": "Rozšířit výzkum: podklady, nová linie, revize osoby, úpravy z aplikace Strom",
|
|
1347
1372
|
"ui.more.title": "Rozšířit výzkum",
|
|
1348
1373
|
"ui.more.intake": "Přidat podklady: dokumenty, fotky, rodokmen z jiného programu, co je známo",
|
|
1349
|
-
"ui.more.research": "
|
|
1374
|
+
"ui.more.research": "Nová linie výzkumu: předkové nebo potomci někoho dalšího, nebo jedna otázka",
|
|
1350
1375
|
"ui.more.sync": "Načíst úpravy z aplikace Strom nebo z jiného rodokmenu (.ged, .json)",
|
|
1351
1376
|
"ui.more.undo": "Vrátit poslední poslání z aplikace Strom ({when})",
|
|
1352
1377
|
"ui.more.undo.what": "Vrátit, co výzkum převzal z aplikace Strom {when}:",
|
|
1353
1378
|
"ui.link.ok": "OK",
|
|
1354
|
-
"ui.link.bad": "Tento odkaz z aplikace Strom nešel použít
|
|
1379
|
+
"ui.link.bad": "Tento odkaz z aplikace Strom nešel použít – některá jeho část chybí nebo nesedí. Nic se nestalo.",
|
|
1355
1380
|
"ui.link.notree": "Výzkum, pro který odkaz je, na tomto počítači není (nebo strom nezná jeho složku). Nic se nestalo.",
|
|
1356
1381
|
"ui.link.which": "Tento výzkum je tu vícekrát. Který má úpravy přijmout?",
|
|
1357
1382
|
"ui.link.noclip": "Tento výřez pramene {source} už ve výzkumu není (byl udělán znovu nebo odebrán). Po novém otevření aplikace Strom z výzkumu dostane aktuální výřezy.",
|
|
@@ -1373,20 +1398,20 @@
|
|
|
1373
1398
|
"ui.link.what.chat.person": "rozhovor s agentem ({agent}) o osobě {person}.",
|
|
1374
1399
|
"ui.link.chat.say": "Podívejme se na osobu {person}: řekni mi krátce, co o ní výzkum ví, a zeptej se mě, co chci zjistit.",
|
|
1375
1400
|
"ui.link.what.review.person": "prověřit znovu osobu {person}.",
|
|
1376
|
-
"ui.link.what.direction.pause": "pozastavit
|
|
1377
|
-
"ui.link.what.direction.done": "ukončit
|
|
1378
|
-
"ui.link.what.direction.resume": "znovu spustit
|
|
1379
|
-
"ui.link.direction.none": "
|
|
1380
|
-
"ui.link.direction.cannot": "
|
|
1381
|
-
"ui.link.direction.why": "Proč? (pár slov, zůstane u
|
|
1382
|
-
"ui.link.what.chat.research": "rozhovor s agentem ({agent}) o
|
|
1383
|
-
"ui.link.chat.research.say": "Pojďme pracovat na
|
|
1401
|
+
"ui.link.what.direction.pause": "pozastavit linii „{name}“: její úkoly ({n}) počkají mimo frontu a nic nového se pro ni nenavrhne. Nic se nemaže.",
|
|
1402
|
+
"ui.link.what.direction.done": "ukončit linii „{name}“: její úkoly ({n}) odejdou z fronty. Nic se nemaže, jde ji znovu spustit.",
|
|
1403
|
+
"ui.link.what.direction.resume": "znovu spustit linii „{name}“: její úkoly ({n}) se vrátí do fronty a výzkum navrhne, co chybí.",
|
|
1404
|
+
"ui.link.direction.none": "Linie {id} v tomto výzkumu není. Nic se nestalo.",
|
|
1405
|
+
"ui.link.direction.cannot": "Linie „{name}“ už je {state}. Nic se nestalo.",
|
|
1406
|
+
"ui.link.direction.why": "Proč? (pár slov, zůstane u linie; Enter: bez důvodu)",
|
|
1407
|
+
"ui.link.what.chat.research": "rozhovor s agentem ({agent}) o linii „{name}“, jen její úkoly.",
|
|
1408
|
+
"ui.link.chat.research.say": "Pojďme pracovat na linii „{name}“ ({id}), na jejích úkolech.",
|
|
1384
1409
|
"ui.link.what.finish": "požádat agenta {agent}, aby dokončil sezení {session} ({task}): zapíše, co našel, a sezení zavře; při samostatné práci další nezačne.",
|
|
1385
1410
|
"ui.link.finish.none": "Sezení {session} už neběží (mezitím skončilo). Nic se nestalo.",
|
|
1386
1411
|
"ui.link.what.review.family": "prověřit znovu osobu {person} i s partnery a dětmi.",
|
|
1387
1412
|
"ui.link.what.review.line": "prověřit znovu osobu {person} i s předky.",
|
|
1388
|
-
"ui.link.what.research.ancestors": "hledat předky osoby {person} (
|
|
1389
|
-
"ui.link.what.research.descendants": "hledat potomky osoby {person} (
|
|
1413
|
+
"ui.link.what.research.ancestors": "hledat předky osoby {person} (nová linie výzkumu).",
|
|
1414
|
+
"ui.link.what.research.descendants": "hledat potomky osoby {person} (nová linie výzkumu).",
|
|
1390
1415
|
"ui.link.noperson": "Osoba {person} v tomto výzkumu není (nebo z něj byla vyřazena). Nic se nestalo.",
|
|
1391
1416
|
"ui.link.notask": "Tento úkol už nečeká (odpověď už má, nebo ho převzal agent). Nic se nestalo.",
|
|
1392
1417
|
"ui.link.task.none": "Úkol {task} v tomto výzkumu není. Nic se nestalo.",
|
|
@@ -1456,7 +1481,8 @@
|
|
|
1456
1481
|
"ui.link.new.empty": "Strom, který aplikace Strom poslala, nemá žádné osoby – není co zkoumat. Výzkum „{name}“ tu je, zatím prázdný.",
|
|
1457
1482
|
"ui.link.new.failed": "Aplikace Strom strom předat nemohla. Výzkum „{name}“ tu je, zatím prázdný: zkusit to z aplikace znovu.",
|
|
1458
1483
|
"ui.link.new.taken": "✓ Rodokmen je ve výzkumu „{name}“: osob {persons}, rodin {families}, pramenů {sources} – jako vodítka; co doloží záznamy, najde agent.",
|
|
1459
|
-
"ui.link.new.taken.archive": "✓ Rodokmen je
|
|
1484
|
+
"ui.link.new.taken.archive": "✓ Rodokmen je v archivu „{name}“: osob {persons}, rodin {families}, pramenů {sources} – tak, jak přišel z aplikace Strom.",
|
|
1485
|
+
"ui.link.new.taken.waiting": "✓ Rodokmen je ve výzkumu „{name}“: osob {persons}, rodin {families}, pramenů {sources} – jako vodítka; co doloží záznamy, najde agent, až bude na počítači.",
|
|
1460
1486
|
"ui.link.new.taken.empty": "✓ Aplikace Strom předala strom, zatím prázdný: výzkum „{name}“ je s ní propojený. Osoby přidané v aplikaci přijdou do výzkumu, až se odešlou.",
|
|
1461
1487
|
"ui.link.new.back": "Aplikace Strom teď strom ukazuje jako strom výzkumu.",
|
|
1462
1488
|
"ui.link.new.chat": "Začít teď rozhovor s agentem?",
|
|
@@ -1504,11 +1530,14 @@
|
|
|
1504
1530
|
"ui.intake.text": "Co je známo – jména, data, místa, rodinné vzpomínky",
|
|
1505
1531
|
"ui.intake.write": "Napsat, co je známo (Enter nebo 0 vrátí zpět)",
|
|
1506
1532
|
"ui.intake.path": "Složka nebo soubor – jde je sem přetáhnout myší (Enter nebo 0 vrátí zpět)",
|
|
1507
|
-
"ui.intake.missing": "
|
|
1533
|
+
"ui.intake.missing": "Nenalezeno: {path} – zkontrolovat cestu, nebo soubor či složku přetáhnout myší.",
|
|
1508
1534
|
"ui.intake.scans": "Ve složce {folder} je {n} obrázků. Jsou to rodinné dokumenty a fotky? (ne: skeny matriky nebo jiné knihy)",
|
|
1509
1535
|
"ui.intake.book": "{folder}: skeny matriky nebo jiné knihy patří k té knize – stačí agentovi v rozhovoru říct, odkud jsou, a zaeviduje si je.",
|
|
1510
1536
|
"ui.intake.known": "Tyhle podklady už ve výzkumu jsou – nic nepřibylo.",
|
|
1511
1537
|
"ui.intake.done": "✓ Přidáno do výzkumu: {n}. Agent to projde při další práci.",
|
|
1538
|
+
"ui.intake.done.archive": "✓ Uloženo do archivu: {n}. Projde se, až se zapne výzkum.",
|
|
1539
|
+
"ui.intake.done.waiting": "✓ Uloženo do výzkumu: {n}. Agent to projde, až bude na počítači.",
|
|
1540
|
+
"ui.intake.same": "Už tu bylo dřív: {n}.",
|
|
1512
1541
|
"ui.intake.chat": "Projít to s agentem hned?",
|
|
1513
1542
|
"ui.intake.say": "Do výzkumu jsem přidal(a) nové podklady – pojďme je projít.",
|
|
1514
1543
|
"ui.research.kind": "Co zkoumat?",
|
|
@@ -1675,11 +1704,11 @@
|
|
|
1675
1704
|
"log.event.status": "Změněná jistota údaje: {who} – {fact}",
|
|
1676
1705
|
"log.event.restore": "Údaj znovu platí: {who} – {fact}",
|
|
1677
1706
|
"log.input.sync.undo": "Vrácený rodokmen: {name}",
|
|
1678
|
-
"log.research.add": "
|
|
1679
|
-
"log.research.edit": "
|
|
1680
|
-
"log.research.pause": "
|
|
1681
|
-
"log.research.resume": "
|
|
1682
|
-
"log.research.done": "
|
|
1707
|
+
"log.research.add": "Nová linie výzkumu: {name}",
|
|
1708
|
+
"log.research.edit": "Upravená linie výzkumu: {name}",
|
|
1709
|
+
"log.research.pause": "Linie pozastavena: {name}",
|
|
1710
|
+
"log.research.resume": "Linie znovu běží: {name}",
|
|
1711
|
+
"log.research.done": "Linie ukončena: {name}",
|
|
1683
1712
|
"log.mode.archive": "Výzkum je teď archiv",
|
|
1684
1713
|
"log.mode.research": "Výzkum je znovu zapnutý",
|
|
1685
1714
|
"log.reading.loose": "Pročteno snímků: {n}",
|
|
@@ -1717,21 +1746,21 @@
|
|
|
1717
1746
|
"ui.task.answer.window": "Zapsat k úkolu {task} odpověď: „{answer}“?",
|
|
1718
1747
|
"ui.intake.empty": "Není v tom nic, co by se dalo přidat.",
|
|
1719
1748
|
"ui.intake.ours": "{path} je složka samotného stromu (výzkumu), ne rodinné podklady.",
|
|
1720
|
-
"ui.research.exists": "
|
|
1721
|
-
"ui.more.directions": "
|
|
1722
|
-
"ui.dirs.pick": "
|
|
1749
|
+
"ui.research.exists": "Taková linie výzkumu už je: „{name}“ – agent v ní pokračuje.",
|
|
1750
|
+
"ui.more.directions": "Linie výzkumu: pozastavit, ukončit nebo znovu spustit",
|
|
1751
|
+
"ui.dirs.pick": "Která linie?",
|
|
1723
1752
|
"ui.dirs.item": "{name} – {state} · úkoly: {n}",
|
|
1724
1753
|
"ui.dirs.active": "běží",
|
|
1725
|
-
"ui.dirs.paused": "
|
|
1726
|
-
"ui.dirs.done": "
|
|
1754
|
+
"ui.dirs.paused": "pozastavená",
|
|
1755
|
+
"ui.dirs.done": "ukončená",
|
|
1727
1756
|
"ui.dirs.what": "„{name}“:",
|
|
1728
|
-
"ui.dirs.do.pause": "Pozastavit –
|
|
1729
|
-
"ui.dirs.do.done": "Ukončit –
|
|
1730
|
-
"ui.dirs.do.resume": "Znovu spustit –
|
|
1731
|
-
"ui.dirs.paused.now": "⏸ „{name}“ je pozastaven
|
|
1732
|
-
"ui.dirs.done.now": "■ „{name}“ je ukončen
|
|
1733
|
-
"ui.dirs.active.now": "▶ „{name}“ zase běží:
|
|
1734
|
-
"ui.research.resume": "
|
|
1757
|
+
"ui.dirs.do.pause": "Pozastavit – její úkoly počkají, agent vezme jiné",
|
|
1758
|
+
"ui.dirs.do.done": "Ukončit – její úkoly odejdou z fronty (nic se nemaže)",
|
|
1759
|
+
"ui.dirs.do.resume": "Znovu spustit – její úkoly se vrátí do fronty",
|
|
1760
|
+
"ui.dirs.paused.now": "⏸ „{name}“ je pozastavená: její úkoly ({n}) počkají, dokud se tady znovu nespustí.",
|
|
1761
|
+
"ui.dirs.done.now": "■ „{name}“ je ukončená: její úkoly ({n}) jsou mimo frontu – nic se nesmazalo, tady ji jde znovu spustit.",
|
|
1762
|
+
"ui.dirs.active.now": "▶ „{name}“ zase běží: její úkoly ({n}) jsou zpátky ve frontě.",
|
|
1763
|
+
"ui.research.resume": "Taková linie výzkumu už je, {state}: „{name}“. Spustit ji znovu?",
|
|
1735
1764
|
"ui.alone.gate.bad": "Čekám počet bodů od 0 do 100 (třeba 10).",
|
|
1736
1765
|
"ui.alone.addons": "Bez osobních doplňků agenta (skilly, pluginy, MCP servery): {state}",
|
|
1737
1766
|
"ui.alone.addons.about": "Agent při samostatné práci načte jen nástroje výzkumu. Spojení s aplikací Strom a prohlížeč fungují dál. Chat s agentem doplňky načítá vždy.",
|
|
@@ -1883,6 +1912,13 @@
|
|
|
1883
1912
|
"ui.error.pack.no-manifest.hint": "zadat ZIP soubor, který přišel",
|
|
1884
1913
|
"ui.error.fs.no-permission": "chybí oprávnění{where}",
|
|
1885
1914
|
"ui.error.fs.no-permission.hint": "vybrat složku, do které lze zapisovat",
|
|
1915
|
+
"ui.error.fs.missing": "nenalezeno: {path}",
|
|
1916
|
+
"ui.error.fs.missing.hint": "zkontrolovat cestu (relativní cesta začíná v aktuální složce)",
|
|
1917
|
+
"ui.error.grep.in.missing": "--in {where}: ve výzkumu nenalezeno",
|
|
1918
|
+
"ui.error.grep.in.only": "--in {where}: prohledávají se jen {folders} (data/ přes strom find a příkazy záznamů)",
|
|
1919
|
+
"ui.error.grep.in.path": "--in {where}: složka výzkumu ({folders}, all) nebo cesta v ní, od složky výzkumu",
|
|
1920
|
+
"ui.error.grep.in.link": "--in {where}: symbolický odkaz – nesleduje se",
|
|
1921
|
+
"ui.error.grep.outside": "--in {where}: soubor mimo výzkum – uložený výpis příkazu strom: spustit znovu s vlastním filtrem",
|
|
1886
1922
|
"ui.error.git.missing": "git není nainstalovaný – Strom v něm vede historii výzkumu",
|
|
1887
1923
|
"ui.error.git.missing.hint": "nainstaluje ho strom doctor --fix",
|
|
1888
1924
|
"ui.error.git.missing-linux": "git není nainstalovaný – Strom v něm vede historii výzkumu",
|
|
@@ -2153,6 +2189,8 @@
|
|
|
2153
2189
|
"ui.archive.level.forbidden.set": "žádný automatický přístup",
|
|
2154
2190
|
"ui.archive.level.refused": "server odmítl automatický přístup stromu – snímky ručně",
|
|
2155
2191
|
"ui.archive.refused": "{title}: server {host} odmítl automatický přístup stromu (od {date}) – je to odpověď serveru, ne podmínky archivu. Snímky ručně; odmítnutí zruší jen člověk: strom allow host {host} --unblock",
|
|
2192
|
+
"ui.archive.refuse": "Tento výzkum je archiv: data přicházejí z aplikace Strom a nic se nezkoumá. Výzkum se zapíná v menu, první položka.",
|
|
2193
|
+
"ui.waiting.refuse": "Výzkum čeká na AI agenta ({agent}), který na tomto počítači není: do té doby drží data z aplikace Strom jako archiv. Agenta nainstalovat nebo vybrat jiného: menu, první položka.",
|
|
2156
2194
|
"ui.archive.refused.undated": "{title}: server {host} odmítl automatický přístup stromu – je to odpověď serveru, ne podmínky archivu. Snímky ručně; odmítnutí zruší jen člověk: strom allow host {host} --unblock",
|
|
2157
2195
|
"ui.archive.waiting.one": "Čeká rozhodnutí o stahování z archivu {title}",
|
|
2158
2196
|
"ui.archive.waiting.more": "Čekají rozhodnutí o stahování z archivů: {n}",
|
package/assets/lang/de.json
CHANGED
|
@@ -122,12 +122,12 @@
|
|
|
122
122
|
"ui.setup.git.wait": "Die Installation im geöffneten Fenster abschließen, dann Enter drücken.",
|
|
123
123
|
"ui.setup.git.manual": "Installation mit: {command} – dann {strom} erneut starten.",
|
|
124
124
|
"ui.setup.agent.ok": "✓ KI-Agent: {name}",
|
|
125
|
-
"ui.setup.agent.none": "
|
|
125
|
+
"ui.setup.agent.none": "Auf diesem Computer ist kein KI-Agent – die Forschung in Matriken und Archiven geschieht mit ihm.",
|
|
126
126
|
"ui.setup.agent.install": "Claude Code jetzt installieren (empfohlen; nötig ist ein Claude-Abonnement)",
|
|
127
127
|
"ui.setup.agent.guide": "Zeigen, welche Agenten es gibt (öffnet eine Seite im Browser)",
|
|
128
|
-
"ui.setup.agent.
|
|
128
|
+
"ui.setup.agent.archive": "Vorerst nur ein Archiv",
|
|
129
129
|
"ui.setup.agent.login": "Beim ersten Start des Agenten ist eine Anmeldung nötig – ein Browserfenster öffnet sich.",
|
|
130
|
-
"ui.setup.agent.manual": "
|
|
130
|
+
"ui.setup.agent.manual": "Ein KI-Agent wird nach dieser Anleitung installiert: {url}",
|
|
131
131
|
"ui.setup.model": "Welches Modell soll die Forschung machen?",
|
|
132
132
|
"ui.setup.model.opus": "Opus – liest alte Handschriften am besten (empfohlen)",
|
|
133
133
|
"ui.setup.model.sonnet": "Sonnet – schneller; gedruckte Dokumente und alltägliche Arbeit",
|
|
@@ -709,6 +709,7 @@
|
|
|
709
709
|
"ui.o.stories": "Geschichten",
|
|
710
710
|
"ui.o.mode": "Art",
|
|
711
711
|
"ui.o.mode.archive": "ein Archiv — die Daten kommen aus der Strom-App (nur der Benutzer schaltet um: strom mode research)",
|
|
712
|
+
"ui.o.mode.waiting": "Forschung wartet auf einen KI-Agenten auf diesem Computer — bis dahin wie ein Archiv geführt (sobald einer installiert ist, von selbst wieder Forschung)",
|
|
712
713
|
"ui.o.stories.tell": "an (Standard): sag dem Benutzer (strom sagt das nur einmal) in einem Satz, dass du auch Geschichten seiner Vorfahren für das Familienbuch in der Strom-App schreibst und dass er ablehnen kann – strom config set stories no (Zustimmung: strom config set stories yes)",
|
|
713
714
|
"ui.o.stories.on": "an: strom schlägt eine Geschichte vor, sobald Einträge ein Leben erzählen (Aufgaben narrate)",
|
|
714
715
|
"ui.o.stories.off": "aus (der Benutzer will es nicht) – nicht ansprechen",
|
|
@@ -792,6 +793,7 @@
|
|
|
792
793
|
"ui.setup.stromapp.no": "Nein – nicht mehr erwähnen",
|
|
793
794
|
"ui.menu.app.watch": "Dem Agenten in der Strom-App bei der Arbeit zusehen (live)",
|
|
794
795
|
"ui.menu.app.new": "Die Strom-App – die Forschung als Stammbaum, live verfolgt",
|
|
796
|
+
"ui.menu.app.new.archive": "Die Strom-App – der Stammbaum, seine Personen und Quellen",
|
|
795
797
|
"ui.menu.app.tip": "Tipp: Die Forschung lässt sich in der Strom-App als Stammbaum ansehen und live verfolgen, während der Agent arbeitet – Auswahl {key}.",
|
|
796
798
|
"ui.menu.app.live": "Der Agent arbeitet – in der Strom-App lässt sich ihm live zusehen: Auswahl {key}.",
|
|
797
799
|
"ui.app.open.now": "Sobald sie installiert ist: die Forschung darin öffnen?",
|
|
@@ -1074,16 +1076,38 @@
|
|
|
1074
1076
|
"ui.setup.fromapp": "Start aus der Strom-App. Wie soll die Forschung den Stammbaum führen?",
|
|
1075
1077
|
"ui.setup.fromapp.archive": "Als Archiv: die Daten werden in der App eingegeben, die Forschung bewahrt sie mit Quellen, Originalen und Geschichte (ohne KI-Agent; er lässt sich später einschalten)",
|
|
1076
1078
|
"ui.setup.fromapp.agent": "Als Forschung mit {agent}: der Agent sucht die Vorfahren in den Einträgen (empfohlen)",
|
|
1077
|
-
"ui.link.new.archive": "Es ist ein Archiv: was in der Strom-App eingegeben wird, bewahrt
|
|
1078
|
-
"ui.
|
|
1079
|
+
"ui.link.new.archive": "Es ist ein Archiv: was in der Strom-App eingegeben wird, bewahrt es, wie es kommt. Die Forschung wird im Menü eingeschaltet, erster Punkt.",
|
|
1080
|
+
"ui.link.new.waiting": "Die Forschung wartet auf ihren KI-Agenten, der auf diesem Computer nicht ist: bis dahin bewahrt sie, was aus der Strom-App kommt, als Archiv. Den Agenten installieren oder einen anderen wählen: das Menü, erster Punkt.",
|
|
1081
|
+
"ui.setup.archive": "Ohne KI-Agenten auf dem Computer bewahrt eine Forschung die Daten aus der Strom-App wie ein Archiv: sie werden in der Strom-App eingegeben und mit ihren Quellen und ihrer Geschichte aufbewahrt. Sobald ein Agent installiert ist, geht die Forschung mit ihm von selbst weiter.",
|
|
1079
1082
|
"ui.setup.archive.chosen": "Eine neue Forschung ist ein Archiv: die Daten werden in der Strom-App eingegeben, und die Forschung bewahrt sie mit ihren Quellen und ihrer Geschichte. Arbeit mit einem Agenten: der erste Menüpunkt (strom mode research).",
|
|
1080
1083
|
"ui.setup.archive.off": "Jetzt ist ein Agent da: sollen neue Forschungen mit ihm arbeiten (nicht nur ein Archiv)?",
|
|
1081
|
-
"ui.mode.pick": "
|
|
1084
|
+
"ui.mode.pick": "Forschung oder nur ein Archiv:",
|
|
1082
1085
|
"ui.mode.research": "Forschung: Suche in Kirchenbüchern und Archiven",
|
|
1083
1086
|
"ui.mode.archive": "nur ein Archiv der Daten aus der Strom-App",
|
|
1087
|
+
"ui.mode.waiting": "Forschung, wartet auf einen KI-Agenten auf diesem Computer",
|
|
1088
|
+
"ui.mode.is.waiting": "Diese Forschung wartet auf einen KI-Agenten auf diesem Computer: bis einer da ist, bewahrt sie die Daten aus der Strom-App wie ein Archiv (nichts für einen Agenten entsteht, die Aufgaben warten). Für immer nur ein Archiv: strom mode archive",
|
|
1089
|
+
"ui.mode.this.research": "Diese Forschung: Forschung – Suche in Kirchenbüchern und Archiven",
|
|
1090
|
+
"ui.mode.this.archive": "Diese Forschung: nur ein Archiv der Daten aus der Strom-App",
|
|
1091
|
+
"ui.mode.new.research": "Neue Forschungen: Forschung – Suche in Kirchenbüchern und Archiven",
|
|
1092
|
+
"ui.mode.new.archive": "Neue Forschungen: nur ein Archiv der Daten aus der Strom-App",
|
|
1093
|
+
"ui.mode.new.is": "Neue Forschungen auf diesem Computer: {state}.",
|
|
1094
|
+
"ui.settings.newmode": "Neue Forschungen: Forschung oder nur ein Archiv: {state}",
|
|
1095
|
+
"ui.mode.later": "Das Archiv bleibt, wie es war: die Forschung lässt sich einschalten, sobald ein KI-Agent auf dem Computer ist.",
|
|
1096
|
+
"ui.mode.setup": "Die Einstellungen des Agenten (Modell, wo gesprochen wird, was er allein darf) jetzt festlegen?",
|
|
1097
|
+
"ui.setup.newmode": "Was soll eine neue Forschung auf diesem Computer sein?",
|
|
1098
|
+
"ui.setup.newmode.agent": "Forschung mit {agent}: er sucht die Vorfahren in Kirchenbüchern und Archiven (empfohlen)",
|
|
1099
|
+
"ui.setup.newmode.archive": "Nur ein Archiv – die Daten aus der Strom-App speichern",
|
|
1100
|
+
"ui.menu.waitagent": "Die Forschung wartet auf einen KI-Agenten: solange keiner auf dem Computer ist, werden die Daten aus der Strom-App wie in einem Archiv gespeichert.",
|
|
1101
|
+
"ui.menu.waitagent.chosen": "Die Forschung wartet auf ihren KI-Agenten ({agent}), der nicht auf diesem Computer ist: bis dahin werden die Daten aus der Strom-App wie in einem Archiv gespeichert.",
|
|
1102
|
+
"ui.menu.keeparchive": "Nur als Archiv behalten: die Daten aus der Strom-App speichern",
|
|
1103
|
+
"ui.why.waitagent.human": "die Forschung wartet auf einen KI-Agenten auf diesem Computer: bis dahin werden die Daten aus der Strom-App wie in einem Archiv gespeichert (das Menü: den Agenten installieren oder nur als Archiv behalten)",
|
|
1104
|
+
"ui.why.waitagent.agent": "der Agent der Forschung ist nicht auf diesem Computer: sie wartet auf ihn und wird bis dahin wie ein Archiv geführt (keine Sitzungen, keine Warteschlange) – was kam und was wartet: strom sync --inbox; den Agenten installiert der Mensch (strom, erster Menüpunkt)",
|
|
1105
|
+
"ui.plan.waitagent": "{name} wartet auf einen KI-Agenten auf diesem Computer: bis einer da ist, wird nichts geplant. Der erste Menüpunkt installiert ihn.",
|
|
1084
1106
|
"ui.settings.mode": "Forschung oder nur ein Archiv: {state}",
|
|
1085
1107
|
"ui.menu.archive": "Archiv: die Daten kommen aus der Strom-App.",
|
|
1086
1108
|
"ui.menu.archive.agent": "Forschung einschalten: Suche in Kirchenbüchern und Archiven",
|
|
1109
|
+
"ui.setup.mode.ask": "„{name}“ ist ein Archiv. So lassen oder die Forschung einschalten?",
|
|
1110
|
+
"ui.setup.mode.keep": "Als Archiv lassen",
|
|
1087
1111
|
"ui.menu.archive.recent": "Was zuletzt hinzukam",
|
|
1088
1112
|
"ui.sync.person.new": "{n}. neue Person: {name}",
|
|
1089
1113
|
"ui.sync.fact.new": "{n}. {who}: neu — {fact}",
|
|
@@ -1210,6 +1234,7 @@
|
|
|
1210
1234
|
"ui.menu.settings.archive": "Einstellungen: Sprache, Meldungen, Archiv oder Forschung, Wartung",
|
|
1211
1235
|
"ui.menu.more.archive.noapp": "Zum Archiv hinzufügen: Unterlagen, ein anderer Stammbaum",
|
|
1212
1236
|
"ui.menu.more.archive": "Zum Archiv hinzufügen: Unterlagen, Änderungen aus der Strom-App",
|
|
1237
|
+
"ui.menu.more.archive.empty": "Zum Archiv hinzufügen: Unterlagen",
|
|
1213
1238
|
"ui.menu.app.tip.archive": "Tipp: die Forschung als Stammbaum in der Strom-App – Wahl {key}.",
|
|
1214
1239
|
"ui.dry.done": "Probelauf (--dry-run): nichts wurde geschrieben – die Zeilen oben sagen, was geschähe.",
|
|
1215
1240
|
"ui.trees.persons": "Personen: {n}",
|
|
@@ -1351,7 +1376,7 @@
|
|
|
1351
1376
|
"ui.more.undo": "Die letzte Sendung aus der Strom-App zurücknehmen ({when})",
|
|
1352
1377
|
"ui.more.undo.what": "Zurücknehmen, was die Forschung am {when} aus der Strom-App übernommen hat:",
|
|
1353
1378
|
"ui.link.ok": "OK",
|
|
1354
|
-
"ui.link.bad": "Dieser Link aus der Strom-App ließ sich nicht verwenden
|
|
1379
|
+
"ui.link.bad": "Dieser Link aus der Strom-App ließ sich nicht verwenden – ein Teil davon fehlt oder stimmt nicht. Es ist nichts geschehen.",
|
|
1355
1380
|
"ui.link.notree": "Die Forschung, für die dieser Link ist, ist nicht auf diesem Computer (oder strom kennt ihren Ordner nicht). Es ist nichts geschehen.",
|
|
1356
1381
|
"ui.link.which": "Diese Forschung ist hier mehrmals. Welche soll die Änderungen übernehmen?",
|
|
1357
1382
|
"ui.link.noclip": "Dieser Ausschnitt der Quelle {source} ist nicht mehr in der Forschung (neu gemacht oder entfernt). Die Strom-App erneut aus der Forschung öffnen, dann bekommt sie die aktuellen.",
|
|
@@ -1456,7 +1481,8 @@
|
|
|
1456
1481
|
"ui.link.new.empty": "Der Stammbaum, den die Strom-App geschickt hat, hat keine Personen – es gibt nichts zu erforschen. Die Forschung „{name}“ ist hier, noch leer.",
|
|
1457
1482
|
"ui.link.new.failed": "Die Strom-App konnte den Stammbaum nicht übergeben. Die Forschung „{name}“ ist hier, noch leer: es erneut aus der App versuchen.",
|
|
1458
1483
|
"ui.link.new.taken": "✓ Der Stammbaum ist in der Forschung „{name}“: {persons} Personen, {families} Familien, {sources} Quellen – als Hinweise; was Quellen belegen, findet der Agent.",
|
|
1459
|
-
"ui.link.new.taken.archive": "✓ Der Stammbaum ist
|
|
1484
|
+
"ui.link.new.taken.archive": "✓ Der Stammbaum ist im Archiv „{name}“: {persons} Personen, {families} Familien, {sources} Quellen – so, wie er aus der Strom-App kam.",
|
|
1485
|
+
"ui.link.new.taken.waiting": "✓ Der Stammbaum ist in der Forschung „{name}“: {persons} Personen, {families} Familien, {sources} Quellen – als Hinweise; was Quellen belegen, findet der Agent, sobald er auf diesem Computer ist.",
|
|
1460
1486
|
"ui.link.new.taken.empty": "✓ Die Strom-App hat ihren Stammbaum übergeben, noch leer: die Forschung „{name}“ ist mit ihr verbunden. Die in der App hinzugefügten Personen kommen in die Forschung, sobald sie gesendet werden.",
|
|
1461
1487
|
"ui.link.new.back": "Die Strom-App zeigt den Stammbaum jetzt als Stammbaum der Forschung.",
|
|
1462
1488
|
"ui.link.new.chat": "Jetzt das Gespräch mit dem Agenten beginnen?",
|
|
@@ -1504,11 +1530,14 @@
|
|
|
1504
1530
|
"ui.intake.text": "Eigenes Wissen – Namen, Daten, Orte, Erinnerungen der Familie",
|
|
1505
1531
|
"ui.intake.write": "Hier aufschreiben, was bekannt ist (Enter oder 0 geht zurück)",
|
|
1506
1532
|
"ui.intake.path": "Der Ordner oder die Datei – sie lässt sich in dieses Fenster ziehen (Enter oder 0 geht zurück)",
|
|
1507
|
-
"ui.intake.missing": "Nicht gefunden: {path} – den Pfad prüfen oder den Ordner hineinziehen.",
|
|
1533
|
+
"ui.intake.missing": "Nicht gefunden: {path} – den Pfad prüfen oder die Datei bzw. den Ordner hineinziehen.",
|
|
1508
1534
|
"ui.intake.scans": "Im Ordner {folder} sind {n} Bilder. Sind es Dokumente und Fotos der Familie? (nein: Scans eines Kirchenbuchs oder eines anderen Buchs)",
|
|
1509
1535
|
"ui.intake.book": "{folder}: Scans eines Kirchenbuchs oder eines anderen Buchs gehören zu diesem Buch – dem Agenten im Gespräch sagen, woher sie stammen, er erfasst sie.",
|
|
1510
1536
|
"ui.intake.known": "Diese Unterlagen sind schon in der Forschung – nichts hinzugefügt.",
|
|
1511
1537
|
"ui.intake.done": "✓ Zur Forschung hinzugefügt: {n}. Der Agent sieht es bei der nächsten Arbeit durch.",
|
|
1538
|
+
"ui.intake.done.archive": "✓ Im Archiv aufbewahrt: {n}. Es wird durchgesehen, sobald die Forschung eingeschaltet ist.",
|
|
1539
|
+
"ui.intake.done.waiting": "✓ In der Forschung aufbewahrt: {n}. Der Agent sieht es durch, sobald er auf diesem Computer ist.",
|
|
1540
|
+
"ui.intake.same": "Schon vorher hier: {n}.",
|
|
1512
1541
|
"ui.intake.chat": "Jetzt mit dem Agenten durchgehen?",
|
|
1513
1542
|
"ui.intake.say": "Ich habe der Forschung neue Unterlagen hinzugefügt – gehen wir sie durch.",
|
|
1514
1543
|
"ui.research.kind": "Was soll erforscht werden?",
|
|
@@ -1883,6 +1912,13 @@
|
|
|
1883
1912
|
"ui.error.pack.no-manifest.hint": "die ZIP-Datei angeben, die gekommen ist",
|
|
1884
1913
|
"ui.error.fs.no-permission": "keine Berechtigung{where}",
|
|
1885
1914
|
"ui.error.fs.no-permission.hint": "einen Ordner wählen, in den geschrieben werden darf",
|
|
1915
|
+
"ui.error.fs.missing": "nicht gefunden: {path}",
|
|
1916
|
+
"ui.error.fs.missing.hint": "den Pfad prüfen (ein relativer Pfad beginnt im aktuellen Ordner)",
|
|
1917
|
+
"ui.error.grep.in.missing": "--in {where}: in der Forschung nicht gefunden",
|
|
1918
|
+
"ui.error.grep.in.only": "--in {where}: durchsucht werden nur {folders} (data/ über strom find und die Befehle der Einträge)",
|
|
1919
|
+
"ui.error.grep.in.path": "--in {where}: ein Ordner der Forschung ({folders}, all) oder ein Pfad darin, vom Ordner der Forschung aus",
|
|
1920
|
+
"ui.error.grep.in.link": "--in {where}: ein symbolischer Link – wird nicht verfolgt",
|
|
1921
|
+
"ui.error.grep.outside": "--in {where}: eine Datei außerhalb der Forschung – eine gespeicherte Ausgabe von strom: mit dem eigenen Filter erneut ausführen",
|
|
1886
1922
|
"ui.error.git.missing": "git ist nicht installiert – Strom führt darin die Geschichte der Forschung",
|
|
1887
1923
|
"ui.error.git.missing.hint": "strom doctor --fix installiert es",
|
|
1888
1924
|
"ui.error.git.missing-linux": "git ist nicht installiert – Strom führt darin die Geschichte der Forschung",
|
|
@@ -2153,6 +2189,8 @@
|
|
|
2153
2189
|
"ui.archive.level.forbidden.set": "kein automatischer Zugriff",
|
|
2154
2190
|
"ui.archive.level.refused": "der Server hat den automatischen Zugriff von strom abgelehnt – Bilder von Hand",
|
|
2155
2191
|
"ui.archive.refused": "{title}: Der Server {host} hat den automatischen Zugriff von strom abgelehnt (seit {date}) – eine Antwort des Servers, nicht die Bedingungen des Archivs. Bilder von Hand; die Ablehnung hebt nur ein Mensch auf: strom allow host {host} --unblock",
|
|
2192
|
+
"ui.archive.refuse": "Diese Forschung ist ein Archiv: die Daten kommen aus der Strom-App, und nichts wird erforscht. Die Forschung wird im Menü eingeschaltet, erster Punkt.",
|
|
2193
|
+
"ui.waiting.refuse": "Die Forschung wartet auf ihren KI-Agenten ({agent}), der auf diesem Computer nicht ist: bis dahin bewahrt sie die Daten aus der Strom-App als Archiv. Den Agenten installieren oder einen anderen wählen: das Menü, erster Punkt.",
|
|
2156
2194
|
"ui.archive.refused.undated": "{title}: Der Server {host} hat den automatischen Zugriff von strom abgelehnt – eine Antwort des Servers, nicht die Bedingungen des Archivs. Bilder von Hand; die Ablehnung hebt nur ein Mensch auf: strom allow host {host} --unblock",
|
|
2157
2195
|
"ui.archive.waiting.one": "Eine Entscheidung über das Herunterladen aus dem Archiv {title} wartet",
|
|
2158
2196
|
"ui.archive.waiting.more": "Entscheidungen über das Herunterladen aus Archiven warten: {n}",
|
package/dist/agents/files.js
CHANGED
|
@@ -413,9 +413,43 @@ function withUserPart(file, generated) {
|
|
|
413
413
|
}
|
|
414
414
|
return generated;
|
|
415
415
|
}
|
|
416
|
-
/** strom's
|
|
416
|
+
/** Nothing of strom's left in a JSON value. */
|
|
417
|
+
const GONE = Symbol("gone");
|
|
418
|
+
/**
|
|
419
|
+
* What is left of `cur` with strom's part (`ours`) taken out: what equals it goes, an object loses strom's keys, a list
|
|
420
|
+
* strom's items — what a person added or changed stays. Nothing left: GONE.
|
|
421
|
+
*/
|
|
422
|
+
function withoutOurs(cur, ours) {
|
|
423
|
+
if (JSON.stringify(cur) === JSON.stringify(ours))
|
|
424
|
+
return GONE;
|
|
425
|
+
if (Array.isArray(cur) && Array.isArray(ours)) {
|
|
426
|
+
const theirs = cur.filter((x) => !ours.some((o) => JSON.stringify(o) === JSON.stringify(x)));
|
|
427
|
+
return theirs.length ? theirs : GONE;
|
|
428
|
+
}
|
|
429
|
+
if (cur && ours && typeof cur === "object" && typeof ours === "object" && !Array.isArray(cur) && !Array.isArray(ours)) {
|
|
430
|
+
const left = { ...cur };
|
|
431
|
+
for (const [k, v] of Object.entries(ours)) {
|
|
432
|
+
if (!(k in left))
|
|
433
|
+
continue;
|
|
434
|
+
const rest = withoutOurs(left[k], v);
|
|
435
|
+
if (rest === GONE)
|
|
436
|
+
delete left[k];
|
|
437
|
+
else
|
|
438
|
+
left[k] = rest;
|
|
439
|
+
}
|
|
440
|
+
return Object.keys(left).length ? left : GONE;
|
|
441
|
+
}
|
|
442
|
+
return cur;
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* strom's own files of the agents taken out of a tree (an archive): those nobody else wrote in; a JSON file a person
|
|
446
|
+
* changed loses only what strom wrote in it (an agent opened in the folder must not read strom's rules there); the
|
|
447
|
+
* shim the agents' hooks start (.strom/bin, never committed) goes too.
|
|
448
|
+
*/
|
|
417
449
|
function dropAgentFiles(tree) {
|
|
418
450
|
const gone = [];
|
|
451
|
+
if (!tree.dryRun)
|
|
452
|
+
fs.rmSync(path.join(tree.root, ".strom", "bin"), { recursive: true, force: true });
|
|
419
453
|
const generated = [
|
|
420
454
|
["AGENTS.md", agentsMd(tree)],
|
|
421
455
|
["CLAUDE.md", claudeMd(tree)],
|
|
@@ -435,10 +469,28 @@ function dropAgentFiles(tree) {
|
|
|
435
469
|
catch {
|
|
436
470
|
continue;
|
|
437
471
|
}
|
|
438
|
-
// a person's notes below the mark, or a file changed by hand: theirs, it stays
|
|
472
|
+
// a person's notes below the mark, or a file changed by hand: theirs, it stays — of a JSON one, what is not strom's
|
|
439
473
|
const at = text.indexOf(MARKER);
|
|
440
474
|
const ours = at >= 0 ? !text.slice(at + MARKER.length).trim() : text === content;
|
|
441
|
-
if (!ours)
|
|
475
|
+
if (!ours && rel.endsWith(".json") && at < 0) {
|
|
476
|
+
let left;
|
|
477
|
+
try {
|
|
478
|
+
left = withoutOurs(JSON.parse(text), JSON.parse(content));
|
|
479
|
+
}
|
|
480
|
+
catch {
|
|
481
|
+
continue; // not JSON a person could keep: theirs
|
|
482
|
+
}
|
|
483
|
+
if (left !== GONE) {
|
|
484
|
+
const next = JSON.stringify(left, null, 2) + "\n";
|
|
485
|
+
if (next === text)
|
|
486
|
+
continue;
|
|
487
|
+
if (!tree.dryRun)
|
|
488
|
+
writeFileAtomic(file, next);
|
|
489
|
+
gone.push(rel.split(path.sep).join("/"));
|
|
490
|
+
continue;
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
else if (!ours)
|
|
442
494
|
continue;
|
|
443
495
|
if (!tree.dryRun) {
|
|
444
496
|
fs.rmSync(file);
|
package/dist/brief/sheet.js
CHANGED
|
@@ -28,11 +28,12 @@ const RARE = {
|
|
|
28
28
|
"search add": ["by"],
|
|
29
29
|
"task add": ["research", "anyway"],
|
|
30
30
|
"media view": ["scale", "max", "grey", "png", "image"],
|
|
31
|
-
read: ["context", "batch", "
|
|
32
|
-
|
|
31
|
+
read: ["context", "batch", "model", "minutes", "max"],
|
|
32
|
+
// a book the research has already: the refusal says --again where it applies
|
|
33
|
+
fetch: ["take", "result", "again"],
|
|
33
34
|
"source add": ["translation", "media"],
|
|
34
35
|
"source edit": ["translation", "media"],
|
|
35
|
-
"recordset add": ["images"],
|
|
36
|
+
"recordset add": ["images", "again"],
|
|
36
37
|
grep: ["regex", "files"],
|
|
37
38
|
// what a waiting task waits for is said when it is set waiting (task wait); edit fills it for an older one
|
|
38
39
|
"task edit": ["on", "kind", "to", "request", "url"],
|
package/dist/cli/context.js
CHANGED
|
@@ -16,6 +16,7 @@ import { readJsonIfExists } from "../core/json.js";
|
|
|
16
16
|
import { foldText } from "../core/text.js";
|
|
17
17
|
import { currentSession } from "../core/session.js";
|
|
18
18
|
import { isAgent } from "../core/which.js";
|
|
19
|
+
import { treeAgentHere } from "../core/state.js";
|
|
19
20
|
import { canShowDialog, systemDialog, WAIT_SECONDS } from "../core/dialog.js";
|
|
20
21
|
import { UI, ui } from "./ui.js";
|
|
21
22
|
export class Context {
|
|
@@ -168,6 +169,23 @@ export class Context {
|
|
|
168
169
|
}
|
|
169
170
|
return this.settings.config.mode === "archive";
|
|
170
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Shown as an archive here: an archive, or the research worked on waiting for its agent (not on this computer) —
|
|
174
|
+
* nothing offered that needs the agent (its working alone, the downloaders), the way to the agent offered instead.
|
|
175
|
+
*/
|
|
176
|
+
actsAsArchive() {
|
|
177
|
+
if (this.archiveHere())
|
|
178
|
+
return true;
|
|
179
|
+
try {
|
|
180
|
+
const root = this.locateTree();
|
|
181
|
+
if (root)
|
|
182
|
+
return !treeAgentHere(readJsonIfExists(path.join(root, "strom.json")), this.env);
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
// no tree to say
|
|
186
|
+
}
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
171
189
|
/**
|
|
172
190
|
* A consent is the user's. In their own terminal they gave it by running the
|
|
173
191
|
* command. Anywhere else — an agent's session, the app — the person at the
|
package/dist/cli/fixes.js
CHANGED
|
@@ -59,7 +59,10 @@ export async function fixGit(ctx, out) {
|
|
|
59
59
|
out(ui(lang, "ui.setup.git.ok", { version: v }));
|
|
60
60
|
return Boolean(v);
|
|
61
61
|
}
|
|
62
|
-
/**
|
|
62
|
+
/**
|
|
63
|
+
* No agent on this computer: install Claude Code, show the page about agents, or only an archive for now (nothing
|
|
64
|
+
* changes: a research waits for its agent, kept as an archive). Only a person here decides.
|
|
65
|
+
*/
|
|
63
66
|
export async function offerAgent(ctx, out) {
|
|
64
67
|
const lang = ctx.uiLang();
|
|
65
68
|
out(ui(lang, "ui.setup.agent.none"));
|
|
@@ -67,12 +70,15 @@ export async function offerAgent(ctx, out) {
|
|
|
67
70
|
out(ui(lang, "ui.setup.agent.manual", { url: researchUrl(lang, "agents") }));
|
|
68
71
|
return;
|
|
69
72
|
}
|
|
70
|
-
const how = await ctx.choose(ui(lang, "ui.choose"), [{ label: ui(lang, "ui.setup.agent.install") }, { label: ui(lang, "ui.setup.agent.guide") }, { label: ui(lang, "ui.setup.agent.
|
|
73
|
+
const how = await ctx.choose(ui(lang, "ui.choose"), [{ label: ui(lang, "ui.setup.agent.install") }, { label: ui(lang, "ui.setup.agent.guide") }, { label: ui(lang, "ui.setup.agent.archive") }], 0);
|
|
71
74
|
if (how === 0) {
|
|
72
75
|
runInstaller(claudeInstaller(), ctx.env);
|
|
73
76
|
if (agentsHere(ctx.env).some((a) => a.id === "claude"))
|
|
74
77
|
out(ui(lang, "ui.setup.agent.login"));
|
|
75
78
|
}
|
|
76
|
-
else if (how === 1)
|
|
79
|
+
else if (how === 1) {
|
|
80
|
+
// the page, and its address in case no browser opens
|
|
77
81
|
openForUser(researchUrl(lang, "agents"), ctx.env);
|
|
82
|
+
out(ui(lang, "ui.setup.agent.manual", { url: researchUrl(lang, "agents") }));
|
|
83
|
+
}
|
|
78
84
|
}
|