strom-research 1.27.0-beta.2 → 1.27.0-beta.3
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/CHANGELOG.cs.md +18 -15
- package/CHANGELOG.de.md +23 -17
- package/CHANGELOG.md +21 -16
- package/CHANGELOG.pl.md +21 -16
- package/assets/archives.json +427 -0
- package/assets/lang/cs.json +1 -1
- package/assets/lang/de.json +1 -1
- package/assets/lang/pl.json +1 -1
- package/dist/agents/files.js +71 -37
- package/dist/agents/global.js +4 -2
- package/dist/brief/brief.js +1 -1
- package/dist/cli/ui.js +1 -1
- package/dist/commands/guide.js +9 -6
- package/dist/commands/media.js +10 -3
- package/dist/commands/setup.js +3 -3
- package/dist/commands/web.js +5 -3
- package/dist/core/browser.js +4 -20
- package/dist/core/browserhelp.js +10 -4
- package/dist/core/tree.js +1 -1
- package/dist/runners/codex.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.cs.md
CHANGED
|
@@ -7,7 +7,7 @@ Změny každé verze ve zkratce. Úplné poznámky a instalační řádky jsou n
|
|
|
7
7
|
|
|
8
8
|
## 1.27.0
|
|
9
9
|
|
|
10
|
-
*Připravuje se: bety do 1.27.0-beta.
|
|
10
|
+
*Připravuje se: bety do 1.27.0-beta.3. Oddíl bude úplný s vydáním.*
|
|
11
11
|
|
|
12
12
|
- **Snímky uložené ručně vrátí svůj úkol samy.** Kde se snímky archivu ukládají ručně – archiv, kam smí jen prohlížeč
|
|
13
13
|
člověka, nebo archiv, jehož podmínky nic jiného nedovolují – výzkum požádá o knihu a čísla snímků a připraví pro ně
|
|
@@ -35,13 +35,13 @@ Změny každé verze ve zkratce. Úplné poznámky a instalační řádky jsou n
|
|
|
35
35
|
který odmítl, cesta, kterou zapovídá jeho robots.txt, i most mu zůstanou zavřené. Archiv, kam smí jen prohlížeč
|
|
36
36
|
člověka, se mu otevře jen se svolením člověka „přes prohlížeč“, po jedné stránce, lidským tempem. Odkaz Svolení… v
|
|
37
37
|
aplikaci Strom u toho, co čeká na snímky takového archivu, otevře tuto otázku, i když k archivu žádný stahovač nevede.
|
|
38
|
-
Prohlížeč nebo ovládání počítače jiného agenta – Codexu, Antigravity – takovou kontrolu nemá: do takového
|
|
39
|
-
|
|
40
|
-
rozšířením prohlížeče by je agent uložil sám, nebo že rozšíření chybí.
|
|
41
|
-
aplikací agentů
|
|
42
|
-
|
|
43
|
-
desktopová aplikace agenta otevře ve vlastním worktree. Aplikace Strom se z mostu
|
|
44
|
-
připravený, chybí rozšíření, nebo agent nemá žádný, který výzkum hlídá.
|
|
38
|
+
Prohlížeč nebo ovládání počítače jiného agenta – Codexu, Antigravity – takovou kontrolu nemá: agent s ním do takového
|
|
39
|
+
archivu sám nejde a snímky uloží člověk ručně. `strom doctor`, brief agenta a Co čeká jednou řeknou, s jakým agentem a
|
|
40
|
+
rozšířením prohlížeče by je agent uložil sám, nebo že rozšíření chybí. Nic se nevypíná: prohlížeč a ovládání počítače
|
|
41
|
+
desktopových aplikací agentů výzkum nehlídá a nedoporučuje – hlídá prohlížeč agenta v Chrome a jiný prohlížeč agent
|
|
42
|
+
použije, jen když o to člověk výslovně požádá. `strom doctor` a brief agenta to říkají výslovně a agent ví, že nikdy
|
|
43
|
+
nepracuje v kopii výzkumu, kterou desktopová aplikace agenta otevře ve vlastním worktree. Aplikace Strom se z mostu
|
|
44
|
+
dozví, zda je prohlížeč agenta připravený, chybí rozšíření, nebo agent nemá žádný, který výzkum hlídá.
|
|
45
45
|
|
|
46
46
|
- **Prohlížeč agenta uloží snímky sám, po jednom.** Kde člověk archivu, kam smí jen prohlížeč člověka, dovolí přístup
|
|
47
47
|
„přes prohlížeč“, agent otevře v Chrome jeden snímek a uloží to, co ukazuje prohlížeč snímků archivu – nikdy víc, než
|
|
@@ -66,13 +66,16 @@ Změny každé verze ve zkratce. Úplné poznámky a instalační řádky jsou n
|
|
|
66
66
|
četlo zřetelně méně jistě, hned vrátí – už ne až po 60 dnech – a `strom recent` to uvede.
|
|
67
67
|
|
|
68
68
|
- Výzkum zná víc archivů Česka, Německa a Polska s jejich podmínkami – co který dovoluje automatickým nástrojům, jeho
|
|
69
|
-
tempo a kam smí jen prohlížeč člověka.
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
69
|
+
tempo a kam smí jen prohlížeč člověka. Nově mezi nimi archivy měst Brna a Ostravy, Vojenský ústřední archiv, Arcinsys
|
|
70
|
+
Hesenska, Dolního Saska a Brém a Šlesvicka-Holštýnska, invenio a pamětní kniha Spolkového archivu (jen prohlížeč
|
|
71
|
+
člověka), galerie matrik bývalých východních území v AGAD, LubGens (jen prohlížeč člověka) a rejstříky polských
|
|
72
|
+
genealogických spolků. Dalších pět českých, kam smí jen prohlížeč člověka: Acta Publica Moravského zemského archivu
|
|
73
|
+
(snímky už ne přes stahovač, ani se svolením z dřívějška – to zůstává, jak bylo dané; přes prohlížeč nejméně 4 sekundy
|
|
74
|
+
od sebe), eBadatelna SOA Praha a obrazové servery SOA Litoměřice, ZA Opava a policejních přihlášek Národního archivu
|
|
75
|
+
(jen ručně). Digitální badatelny SOA Litoměřice a ZA Opava berou snímky z těchto serverů, takže i jejich snímky se
|
|
76
|
+
ukládají ručně – svolení „přes prohlížeč“ se u nich nenabízí. U úkolu, který už na takové snímky čeká, se řekne jen,
|
|
77
|
+
že čeká na snímky uložené ručně, bez nové rady k čekání. Stahovač, vytvořený pro takový archiv dřív, se odmítne před
|
|
78
|
+
jakýmkoli požadavkem, i jeho zkouška, a řekne, co zbývá: svolení člověka „přes prohlížeč“, nebo ruční uložení.
|
|
76
79
|
|
|
77
80
|
- Se vším z 1.26.1: přerušený zápis už výzkum natrvalo nezablokuje.
|
|
78
81
|
|
package/CHANGELOG.de.md
CHANGED
|
@@ -7,7 +7,7 @@ Die Änderungen jeder Version in Kürze. Die vollständigen Hinweise und die Ins
|
|
|
7
7
|
|
|
8
8
|
## 1.27.0
|
|
9
9
|
|
|
10
|
-
*In Vorbereitung: die Betas bis 1.27.0-beta.
|
|
10
|
+
*In Vorbereitung: die Betas bis 1.27.0-beta.3. Der Abschnitt ist mit dem Release vollständig.*
|
|
11
11
|
|
|
12
12
|
- **Von Hand gespeicherte Bilder bringen ihre Aufgabe von selbst zurück.** Wo die Bilder eines Archivs von Hand
|
|
13
13
|
gespeichert werden – ein Archiv, das nur der Browser eines Menschen erreicht, oder eines, dessen Bedingungen nichts
|
|
@@ -42,14 +42,15 @@ Die Änderungen jeder Version in Kürze. Die vollständigen Hinweise und die Ins
|
|
|
42
42
|
Erlaubnis des Menschen „über den Browser“, eine Seite nach der anderen im Tempo eines Menschen. Erlaubnis… in der
|
|
43
43
|
Strom-App bei dem, was auf Bilder eines solchen Archivs wartet, öffnet diese Frage, auch wo kein Downloader das Archiv
|
|
44
44
|
erreicht. Der Browser oder die Computersteuerung eines anderen Agenten – Codex, Antigravity – hat keine solche
|
|
45
|
-
Prüfung:
|
|
46
|
-
des Agenten und Was wartet sagen einmal, mit welchem Agenten und welcher
|
|
47
|
-
speichern würde, oder dass die Erweiterung fehlt.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
45
|
+
Prüfung: Der Agent geht damit nicht von sich aus in ein solches Archiv, und die Bilder speichert der Mensch von Hand.
|
|
46
|
+
`strom doctor`, das Briefing des Agenten und Was wartet sagen einmal, mit welchem Agenten und welcher
|
|
47
|
+
Browser-Erweiterung der Agent sie selbst speichern würde, oder dass die Erweiterung fehlt. Nichts wird ausgeschaltet:
|
|
48
|
+
Den Browser und die Computersteuerung der Desktop-Apps der Agenten überwacht die Forschung nicht und empfiehlt sie
|
|
49
|
+
nicht – überwacht wird der Browser des Agenten in Chrome, und einen anderen nutzt der Agent nur, wenn der Mensch
|
|
50
|
+
ausdrücklich darum bittet. `strom doctor` und das Briefing des Agenten sagen es ausdrücklich, und der Agent arbeitet
|
|
51
|
+
nie in einer Kopie der Forschung, die die Desktop-App eines Agenten in einem eigenen Worktree öffnet. Die Strom-App
|
|
52
|
+
erfährt von der Brücke, ob der Browser des Agenten bereit ist, die Erweiterung fehlt oder der Agent keinen hat, den
|
|
53
|
+
die Forschung überwacht.
|
|
53
54
|
|
|
54
55
|
- **Der Browser des Agenten speichert die Bilder selbst, eines nach dem anderen.** Wo der Mensch einem Archiv, das nur
|
|
55
56
|
der Browser eines Menschen erreicht, den Zugang „über den Browser“ erlaubt, öffnet der Agent ein Bild in Chrome und
|
|
@@ -80,14 +81,19 @@ Die Änderungen jeder Version in Kürze. Die vollständigen Hinweise und die Ins
|
|
|
80
81
|
zurückgenommen – nicht mehr erst nach 60 Tagen –, und `strom recent` sagt es.
|
|
81
82
|
|
|
82
83
|
- Weitere Archive Tschechiens, Deutschlands und Polens sind mit ihren Bedingungen bekannt – was jedes automatischen
|
|
83
|
-
Werkzeugen erlaubt, sein Tempo und was nur der Browser eines Menschen erreicht.
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
ihre Bilder
|
|
89
|
-
|
|
90
|
-
|
|
84
|
+
Werkzeugen erlaubt, sein Tempo und was nur der Browser eines Menschen erreicht. Neu darunter die Stadtarchive Brno und
|
|
85
|
+
Ostrava, das Militärische Zentralarchiv Prag, Arcinsys Hessen, Niedersachsen und Bremen sowie Schleswig-Holstein,
|
|
86
|
+
invenio und das Gedenkbuch des Bundesarchivs (nur der Browser eines Menschen), die Bildgalerien der Kirchenbücher der
|
|
87
|
+
ehemaligen Ostgebiete im AGAD, LubGens (nur der Browser eines Menschen) und die Indizes polnischer genealogischer
|
|
88
|
+
Vereine. Fünf weitere tschechische, die nur der Browser eines Menschen erreicht: die Acta Publica des Mährischen
|
|
89
|
+
Landesarchivs (ihre Bilder nicht mehr über einen Downloader, auch nicht mit einer früher gegebenen Erlaubnis – sie
|
|
90
|
+
bleibt, wie gegeben; über den Browser mindestens 4 Sekunden auseinander), die eBadatelna des SOA Praha und die
|
|
91
|
+
Bildserver des SOA Litoměřice, des ZA Opava und der Polizeimeldungen des Nationalarchivs (nur von Hand). Die digitalen
|
|
92
|
+
Lesesäle des SOA Litoměřice und des ZA Opava zeigen ihre Bilder von diesen Servern, daher werden auch ihre Bilder von
|
|
93
|
+
Hand gespeichert – eine Erlaubnis „über den Browser“ wird dort nicht angeboten. Bei einer Aufgabe, die schon auf
|
|
94
|
+
solche Bilder wartet, heißt es nur, dass sie auf von Hand gespeicherte Bilder wartet, ohne neuen Rat zum Warten. Ein
|
|
95
|
+
früher für ein solches Archiv gebauter Downloader wird vor jeder Anfrage abgewiesen, auch seine Probe, und sagt, was
|
|
96
|
+
bleibt: die Erlaubnis der Person „über den Browser“ oder das Speichern von Hand.
|
|
91
97
|
|
|
92
98
|
- Mit allem aus 1.26.1: ein unterbrochenes Schreiben sperrt die Forschung nicht mehr auf Dauer.
|
|
93
99
|
|
package/CHANGELOG.md
CHANGED
|
@@ -7,7 +7,7 @@ The changes of each version in short. The full notes and the install lines are o
|
|
|
7
7
|
|
|
8
8
|
## 1.27.0
|
|
9
9
|
|
|
10
|
-
*In preparation: the betas up to 1.27.0-beta.
|
|
10
|
+
*In preparation: the betas up to 1.27.0-beta.3. The section is complete with the release.*
|
|
11
11
|
|
|
12
12
|
- **Images saved by hand bring their task back by themselves.** Where an archive's images are saved by hand – an archive
|
|
13
13
|
only a person's browser reaches, or one whose terms allow nothing else – the research asks for its book and the
|
|
@@ -38,14 +38,14 @@ The changes of each version in short. The full notes and the install lines are o
|
|
|
38
38
|
path its robots.txt keeps off and the bridge stay closed to it. An archive only a person's browser reaches opens to it
|
|
39
39
|
only with the person's permission "through the browser", one page at a time at a person's pace. The Strom app's
|
|
40
40
|
Permission… at what waits for such an archive's images opens this question, also where no downloader reaches the
|
|
41
|
-
archive. The browser or computer use of another agent – Codex, Antigravity – has no such check:
|
|
42
|
-
an archive, and the person saves the images by hand. `strom doctor`, the agent's brief and
|
|
43
|
-
agent and browser extension would let the agent save them itself, or that the extension is
|
|
44
|
-
computer use of the agents' desktop apps
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
research keeps.
|
|
41
|
+
archive. The browser or computer use of another agent – Codex, Antigravity – has no such check: the agent does not
|
|
42
|
+
take it to such an archive on its own, and the person saves the images by hand. `strom doctor`, the agent's brief and
|
|
43
|
+
What waits say once which agent and browser extension would let the agent save them itself, or that the extension is
|
|
44
|
+
missing. Nothing is switched off: the browser and computer use of the agents' desktop apps the research does not
|
|
45
|
+
watch, nor does it recommend them – it watches the agent's browser in Chrome, and the agent uses another only when the
|
|
46
|
+
person asks for it explicitly. `strom doctor` and the agent's brief say so in words, and the agent is told never to
|
|
47
|
+
work in a copy of the research an agent's desktop app opens in a worktree of its own. The Strom app learns from the
|
|
48
|
+
bridge whether the agent's browser is ready, the extension is missing, or the agent has none the research keeps.
|
|
49
49
|
|
|
50
50
|
- **The agent's browser saves the images itself, one at a time.** Where the person allows an archive only a person's
|
|
51
51
|
browser reaches "through the browser", the agent opens one image in Chrome and saves what the archive's own viewer
|
|
@@ -71,13 +71,18 @@ The changes of each version in short. The full notes and the install lines are o
|
|
|
71
71
|
back at once – no longer only after 60 days – and `strom recent` says so.
|
|
72
72
|
|
|
73
73
|
- More archives of Czechia, Germany and Poland are known with their terms – what each allows automated tools, its pace
|
|
74
|
-
and what only a person's browser reaches.
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
74
|
+
and what only a person's browser reaches. Among them now the city archives of Brno and Ostrava, the Military Central
|
|
75
|
+
Archive, Arcinsys of Hesse, of Lower Saxony and Bremen and of Schleswig-Holstein, the Bundesarchiv's invenio and its
|
|
76
|
+
memorial book (only a person's browser), AGAD's galleries of the registers of the former eastern territories, LubGens
|
|
77
|
+
(only a person's browser) and the indexes of Polish genealogical societies. Five more of Czechia only a person's
|
|
78
|
+
browser reaches: the Acta Publica of the Moravian Land Archives (its images no longer through a downloader, even with
|
|
79
|
+
a permission given before – kept as given; through the browser at least 4 seconds apart), the eBadatelna of SOA Praha
|
|
80
|
+
and the image servers of SOA Litoměřice, ZA Opava and the National Archives' police registrations (by hand only). The
|
|
81
|
+
digital reading rooms of SOA Litoměřice and ZA Opava show their images from those servers, so their images are saved
|
|
82
|
+
by hand too – no permission "through the browser" is offered there. A task waiting for such images already is said
|
|
83
|
+
only to wait for the images saved by hand, with no new advice to wait. A downloader made earlier for such an archive
|
|
84
|
+
is refused before any request, its probe too, and says what remains: the person's permission "through the browser", or
|
|
85
|
+
saving by hand.
|
|
81
86
|
|
|
82
87
|
- With all of 1.26.1: a write cut short no longer blocks the research for good.
|
|
83
88
|
|
package/CHANGELOG.pl.md
CHANGED
|
@@ -7,7 +7,7 @@ Zmiany każdej wersji w skrócie. Pełne informacje o wydaniach i polecenia inst
|
|
|
7
7
|
|
|
8
8
|
## 1.27.0
|
|
9
9
|
|
|
10
|
-
*W przygotowaniu: bety do 1.27.0-beta.
|
|
10
|
+
*W przygotowaniu: bety do 1.27.0-beta.3. Sekcja będzie kompletna z wydaniem.*
|
|
11
11
|
|
|
12
12
|
- **Skany zapisane ręcznie same przywracają swoje zadanie.** Tam, gdzie skany archiwum zapisuje się ręcznie – archiwum,
|
|
13
13
|
do którego wolno tylko przeglądarce człowieka, albo takie, którego warunki nie pozwalają na nic innego – badanie
|
|
@@ -39,13 +39,14 @@ Zmiany każdej wersji w skrócie. Pełne informacje o wydaniach i polecenia inst
|
|
|
39
39
|
zamknięte. Archiwum, do którego wolno tylko przeglądarce człowieka, otwiera się dla niego tylko za zgodą człowieka
|
|
40
40
|
„przez przeglądarkę”, strona po stronie, w tempie człowieka. Zgoda… w aplikacji Strom przy tym, co czeka na skany
|
|
41
41
|
takiego archiwum, otwiera to pytanie, także tam, gdzie żaden program do pobierania nie sięga archiwum. Przeglądarka
|
|
42
|
-
lub sterowanie komputerem innego agenta – Codexa, Antigravity – nie ma takiej kontroli:
|
|
43
|
-
archiwum, a skany zapisuje człowiek ręcznie. `strom doctor`, brief agenta i Co czeka mówią raz, z
|
|
44
|
-
rozszerzeniem przeglądarki agent zapisałby je sam, albo że brakuje rozszerzenia.
|
|
45
|
-
|
|
46
|
-
przeglądarki agenta w Chrome
|
|
47
|
-
|
|
48
|
-
|
|
42
|
+
lub sterowanie komputerem innego agenta – Codexa, Antigravity – nie ma takiej kontroli: agent nie wchodzi z nią do
|
|
43
|
+
takiego archiwum sam z siebie, a skany zapisuje człowiek ręcznie. `strom doctor`, brief agenta i Co czeka mówią raz, z
|
|
44
|
+
jakim agentem i rozszerzeniem przeglądarki agent zapisałby je sam, albo że brakuje rozszerzenia. Nic nie jest
|
|
45
|
+
wyłączane: przeglądarki i sterowania komputerem aplikacji desktopowych agentów badanie nie pilnuje i ich nie poleca –
|
|
46
|
+
pilnuje przeglądarki agenta w Chrome, a innej agent używa tylko wtedy, gdy człowiek wyraźnie o to poprosi. `strom
|
|
47
|
+
doctor` i brief agenta mówią to wprost, a agent nigdy nie pracuje w kopii badania, którą aplikacja desktopowa agenta
|
|
48
|
+
otwiera we własnym worktree. Aplikacja Strom dowiaduje się od mostu, czy przeglądarka agenta jest gotowa, brakuje
|
|
49
|
+
rozszerzenia, czy agent nie ma żadnej, którą badanie pilnuje.
|
|
49
50
|
|
|
50
51
|
- **Przeglądarka agenta sama zapisuje skany, po jednym.** Tam, gdzie człowiek zezwoli archiwum, do którego wolno tylko
|
|
51
52
|
przeglądarce człowieka, na dostęp „przez przeglądarkę”, agent otwiera w Chrome jeden skan i zapisuje to, co pokazuje
|
|
@@ -73,14 +74,18 @@ Zmiany każdej wersji w skrócie. Pełne informacje o wydaniach i polecenia inst
|
|
|
73
74
|
recent` to podaje.
|
|
74
75
|
|
|
75
76
|
- Badanie zna więcej archiwów Czech, Niemiec i Polski wraz z ich warunkami – na co każde pozwala narzędziom
|
|
76
|
-
automatycznym, jego tempo i dokąd wolno tylko przeglądarce człowieka.
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
77
|
+
automatycznym, jego tempo i dokąd wolno tylko przeglądarce człowieka. Nowe wśród nich: archiwa miejskie Brna i
|
|
78
|
+
Ostrawy, Wojskowe Archiwum Centralne w Pradze, Arcinsys Hesji, Dolnej Saksonii i Bremy oraz Szlezwika-Holsztynu,
|
|
79
|
+
invenio i księga pamięci Archiwum Federalnego (tylko przeglądarka człowieka), galerie ksiąg metrykalnych dawnych ziem
|
|
80
|
+
wschodnich w AGAD, LubGens (tylko przeglądarka człowieka) oraz indeksy polskich towarzystw genealogicznych. Pięć
|
|
81
|
+
kolejnych czeskich, dokąd wolno tylko przeglądarce człowieka: Acta Publica Morawskiego Archiwum Krajowego (jego skany
|
|
82
|
+
już nie przez program do pobierania, nawet ze zgodą wydaną wcześniej – pozostaje, jak została dana; przez przeglądarkę
|
|
83
|
+
co najmniej 4 sekundy odstępu), eBadatelna SOA Praha oraz serwery obrazów SOA Litoměřice, ZA Opava i meldunków
|
|
84
|
+
policyjnych Archiwum Narodowego (tylko ręcznie). Cyfrowe czytelnie SOA Litoměřice i ZA Opava biorą skany z tych
|
|
85
|
+
serwerów, więc i ich skany zapisuje się ręcznie – zgody „przez przeglądarkę” się tam nie proponuje. Przy zadaniu,
|
|
86
|
+
które już czeka na takie skany, mówi się tylko, że czeka na skany zapisane ręcznie, bez nowej rady co do czekania.
|
|
87
|
+
Program do pobierania zrobiony wcześniej dla takiego archiwum zostaje odrzucony przed jakimkolwiek żądaniem, także
|
|
88
|
+
jego próba, i mówi, co zostaje: zgoda człowieka „przez przeglądarkę” albo zapis ręczny.
|
|
84
89
|
|
|
85
90
|
- Wraz z całym 1.26.1: przerwany zapis już nie blokuje badania na stałe.
|
|
86
91
|
|
package/assets/archives.json
CHANGED
|
@@ -1247,6 +1247,433 @@
|
|
|
1247
1247
|
],
|
|
1248
1248
|
"scope": "society pages; the database itself is app.geshergalicia.org; no terms of use found",
|
|
1249
1249
|
"checked": "2026-11-04"
|
|
1250
|
+
},
|
|
1251
|
+
{
|
|
1252
|
+
"host": "na.gov.cz",
|
|
1253
|
+
"name": "Národní archiv (website)",
|
|
1254
|
+
"level": "unknown",
|
|
1255
|
+
"robots": "User-agent: Scrapy · Allow: / · User-agent: * · Disallow: (nothing closed)",
|
|
1256
|
+
"scope": "the archive's website (help, pages on its police registrations and Jewish registers); its records are on portal.nacr.cz, its images on digitalnibadatelna.nacr.cz, vademecum.nacr.cz and digi.nacr.cz — a person's browser only; no terms of use of its images found",
|
|
1257
|
+
"checked": "2026-11-04"
|
|
1258
|
+
},
|
|
1259
|
+
{
|
|
1260
|
+
"host": "www.nacr.cz",
|
|
1261
|
+
"name": "Národní archiv (website, old address)",
|
|
1262
|
+
"level": "unknown",
|
|
1263
|
+
"scope": "the same website as na.gov.cz; its images are on digitalnibadatelna.nacr.cz, vademecum.nacr.cz and digi.nacr.cz — a person's browser only",
|
|
1264
|
+
"checked": "2026-11-04"
|
|
1265
|
+
},
|
|
1266
|
+
{
|
|
1267
|
+
"host": "www.vuapraha.cz",
|
|
1268
|
+
"name": "Vojenský ústřední archiv (Vojenský historický archiv: databases, military registers)",
|
|
1269
|
+
"level": "unknown",
|
|
1270
|
+
"robots": "User-agent: * · Disallow: /wp-admin/ · Allow: /wp-admin/admin-ajax.php",
|
|
1271
|
+
"scope": "its databases (legionnaires, the fallen of both world wars, Czechoslovak units abroad) and previews of the military registers (death registers of the k.u.k. infantry regiments 1914–1918 and others): one query or one page at a time; no terms of use found",
|
|
1272
|
+
"checked": "2026-11-04"
|
|
1273
|
+
},
|
|
1274
|
+
{
|
|
1275
|
+
"host": "digitalnistudovna.army.cz",
|
|
1276
|
+
"name": "Ministerstvo obrany – Digitální studovna (Kramerius: military registers of VÚA and VHÚ)",
|
|
1277
|
+
"level": "unknown",
|
|
1278
|
+
"robots": "none (the path answers the application's page)",
|
|
1279
|
+
"scope": "the military registers the Military Central Archive publishes step by step: one page at a time; no terms of use found",
|
|
1280
|
+
"checked": "2026-11-04"
|
|
1281
|
+
},
|
|
1282
|
+
{
|
|
1283
|
+
"host": "digiarchiv.brno.cz",
|
|
1284
|
+
"name": "Archiv města Brna (Digitální archiv: census records)",
|
|
1285
|
+
"level": "unknown",
|
|
1286
|
+
"robots": "User-agent: * · Disallow: (nothing closed)",
|
|
1287
|
+
"scope": "Brno's census records 1850, 1857, 1870, 1880, 1890, 1900 and 1921 with their name index, in a JavaScript application: one record at a time; no terms of use found",
|
|
1288
|
+
"checked": "2026-11-04"
|
|
1289
|
+
},
|
|
1290
|
+
{
|
|
1291
|
+
"host": "archivalie.brno.cz",
|
|
1292
|
+
"name": "Archiv města Brna (Archivní Vademecum)",
|
|
1293
|
+
"level": "restricted",
|
|
1294
|
+
"quoteFrom": "robots",
|
|
1295
|
+
"browserOnly": true,
|
|
1296
|
+
"terms": "https://archivalie.brno.cz/robots.txt",
|
|
1297
|
+
"quote": "User-agent: * / Disallow: /",
|
|
1298
|
+
"robots": "User-agent: * · Disallow: /",
|
|
1299
|
+
"scope": "a person's browser only: robots.txt closes it to every robot and its terms are not published; the person opens and saves the record, the agent reads the saved file",
|
|
1300
|
+
"checked": "2026-11-04"
|
|
1301
|
+
},
|
|
1302
|
+
{
|
|
1303
|
+
"host": "archiv.brno.cz",
|
|
1304
|
+
"name": "Archiv města Brna (website)",
|
|
1305
|
+
"level": "unknown",
|
|
1306
|
+
"robots": "User-agent: * · Disallow: */rest/* (JoobleBot, SemrushBot: Disallow: /)",
|
|
1307
|
+
"scope": "the archive's website; its census records are on digiarchiv.brno.cz, its Vademecum on archivalie.brno.cz (a person's browser only)",
|
|
1308
|
+
"checked": "2026-11-04"
|
|
1309
|
+
},
|
|
1310
|
+
{
|
|
1311
|
+
"host": "badatelna.ostrava.cz",
|
|
1312
|
+
"name": "Archiv města Ostravy (Digitální badatelna)",
|
|
1313
|
+
"level": "restricted",
|
|
1314
|
+
"terms": "https://badatelna.ostrava.cz/vademecum/",
|
|
1315
|
+
"quote": "Publikování jakékoliv textové i obrazové části databáze je podmíněno souhlasem Archivu města Ostravy a uvedením řádné citace.",
|
|
1316
|
+
"robots": "none (robots.txt redirects to /vademecum/)",
|
|
1317
|
+
"scope": "census records, domicile registers and books of registered residents, cemetery and cremation books, chronicles of Ostrava: one record at a time; nothing published without the archive's consent and a citation; its terms say nothing of downloading or automated tools",
|
|
1318
|
+
"checked": "2026-11-04"
|
|
1319
|
+
},
|
|
1320
|
+
{
|
|
1321
|
+
"host": "amo.ostrava.cz",
|
|
1322
|
+
"name": "Archiv města Ostravy (website)",
|
|
1323
|
+
"level": "unknown",
|
|
1324
|
+
"robots": "none (404)",
|
|
1325
|
+
"scope": "the archive's website; its records and images are on badatelna.ostrava.cz",
|
|
1326
|
+
"checked": "2026-11-04"
|
|
1327
|
+
},
|
|
1328
|
+
{
|
|
1329
|
+
"host": "arcinsys.hessen.de",
|
|
1330
|
+
"name": "Arcinsys Hessen (Hessisches Landesarchiv)",
|
|
1331
|
+
"level": "unknown",
|
|
1332
|
+
"terms": "https://arcinsys.hessen.de/arcinsys/information.action",
|
|
1333
|
+
"robots": "Sitemap only (nothing closed)",
|
|
1334
|
+
"scope": "finding aids of Hesse's archives and the digitised civil registers (Personenstandsnebenregister) released online within the legal periods (births 110, marriages 80, deaths 30 years): one record and one image at a time; no terms of use of its images found (its information page: privacy and Impressum only)",
|
|
1335
|
+
"checked": "2026-11-04"
|
|
1336
|
+
},
|
|
1337
|
+
{
|
|
1338
|
+
"host": "arcinsys.niedersachsen.de",
|
|
1339
|
+
"name": "Arcinsys Niedersachsen und Bremen (Niedersächsisches Landesarchiv, Staatsarchiv Bremen)",
|
|
1340
|
+
"level": "unknown",
|
|
1341
|
+
"terms": "https://www.arcinsys.niedersachsen.de/arcinsys/information.action",
|
|
1342
|
+
"robots": "Sitemap only (nothing closed; arcinsys.niedersachsen.de redirects to www.)",
|
|
1343
|
+
"scope": "finding aids of Lower Saxony's and Bremen's archives and part of their digitised records (Bremen's civil registers 1811–1875 and from 1874/76, pedigree tables, passport registers): one record and one image at a time; no terms of use of its images found",
|
|
1344
|
+
"checked": "2026-11-04"
|
|
1345
|
+
},
|
|
1346
|
+
{
|
|
1347
|
+
"host": "arcinsys.schleswig-holstein.de",
|
|
1348
|
+
"name": "Arcinsys Schleswig-Holstein (Landesarchiv Schleswig-Holstein)",
|
|
1349
|
+
"level": "unknown",
|
|
1350
|
+
"robots": "none (404)",
|
|
1351
|
+
"scope": "finding aids of Schleswig-Holstein's archives: one record at a time; no terms of use found",
|
|
1352
|
+
"checked": "2026-11-04"
|
|
1353
|
+
},
|
|
1354
|
+
{
|
|
1355
|
+
"host": "landesarchiv.hessen.de",
|
|
1356
|
+
"name": "Hessisches Landesarchiv (website)",
|
|
1357
|
+
"level": "unknown",
|
|
1358
|
+
"robots": "Drupal's own paths; Crawl-delay commented out; BUbiNG, SemrushBot …: Disallow: / (no AI agent named)",
|
|
1359
|
+
"scope": "the archive's website and guides; its records and civil registers are in Arcinsys Hessen (arcinsys.hessen.de)",
|
|
1360
|
+
"checked": "2026-11-04"
|
|
1361
|
+
},
|
|
1362
|
+
{
|
|
1363
|
+
"host": "invenio.bundesarchiv.de",
|
|
1364
|
+
"name": "Bundesarchiv (invenio)",
|
|
1365
|
+
"level": "restricted",
|
|
1366
|
+
"quoteFrom": "robots",
|
|
1367
|
+
"browserOnly": true,
|
|
1368
|
+
"terms": "https://invenio.bundesarchiv.de/robots.txt",
|
|
1369
|
+
"quote": "User-agent: * / Disallow: /",
|
|
1370
|
+
"robots": "User-agent: * · Disallow: /",
|
|
1371
|
+
"termsPage": "https://www.bundesarchiv.de/im-archiv-recherchieren/archivgut-einsehen-und-nutzen/digitalisate/",
|
|
1372
|
+
"termsPageSays": "Die über invenio bereitgestellten Unterlagen können Sie eigenständig einsehen.",
|
|
1373
|
+
"scope": "a person's browser only: robots.txt closes it to every robot; the person searches and saves the digitised file, the agent reads the saved file; records under legal restrictions only with the person's eID",
|
|
1374
|
+
"checked": "2026-11-04"
|
|
1375
|
+
},
|
|
1376
|
+
{
|
|
1377
|
+
"host": "apps.bundesarchiv.de",
|
|
1378
|
+
"name": "Bundesarchiv (Gedenkbuch, applications)",
|
|
1379
|
+
"level": "restricted",
|
|
1380
|
+
"quoteFrom": "robots",
|
|
1381
|
+
"browserOnly": true,
|
|
1382
|
+
"terms": "https://apps.bundesarchiv.de/robots.txt",
|
|
1383
|
+
"quote": "User-agent: * / Disallow: /",
|
|
1384
|
+
"robots": "User-agent: * · Disallow: /",
|
|
1385
|
+
"scope": "a person's browser only: robots.txt closes it to every robot; the memorial book of the victims of the persecution of the Jews 1933–1945 — the person searches and saves the record (PDF, CSV), the agent reads the saved file",
|
|
1386
|
+
"checked": "2026-11-04"
|
|
1387
|
+
},
|
|
1388
|
+
{
|
|
1389
|
+
"host": "www.bundesarchiv.de",
|
|
1390
|
+
"name": "Bundesarchiv (website)",
|
|
1391
|
+
"level": "unknown",
|
|
1392
|
+
"robots": "User-agent: * · Disallow: /*? · /suche/ · /typo3/ … · Crawl-delay: 30 (Meta-WebIndexer, Googlebot-News: Disallow: /)",
|
|
1393
|
+
"pace": {
|
|
1394
|
+
"minIntervalMs": 30000
|
|
1395
|
+
},
|
|
1396
|
+
"scope": "the archive's website and guides, at its pace (Crawl-delay 30); its records are on invenio.bundesarchiv.de, the memorial book on apps.bundesarchiv.de (a person's browser only)",
|
|
1397
|
+
"checked": "2026-11-04"
|
|
1398
|
+
},
|
|
1399
|
+
{
|
|
1400
|
+
"host": "bestaende-landesarchiv.saarland.de",
|
|
1401
|
+
"name": "Landesarchiv Saarland (online catalogue)",
|
|
1402
|
+
"level": "unknown",
|
|
1403
|
+
"robots": "none (404)",
|
|
1404
|
+
"scope": "part of the archive's finding aids only (civil registers among them): no images of registers online; no terms of use found",
|
|
1405
|
+
"checked": "2026-11-04"
|
|
1406
|
+
},
|
|
1407
|
+
{
|
|
1408
|
+
"host": "blha.brandenburg.de",
|
|
1409
|
+
"name": "Brandenburgisches Landeshauptarchiv (website)",
|
|
1410
|
+
"level": "unknown",
|
|
1411
|
+
"terms": "https://blha.brandenburg.de/blha/de/rechercheratgeber/familienforschung/",
|
|
1412
|
+
"robots": "crawl-delay: 10 (before the first group) · SemrushBot: Disallow: /",
|
|
1413
|
+
"pace": {
|
|
1414
|
+
"minIntervalMs": 10000
|
|
1415
|
+
},
|
|
1416
|
+
"scope": "the archive's website and guides for family history, at a pace of 10 s; its church-book duplicates (Rep. 5KB) are on blha-recherche.brandenburg.de (a person's browser only); no terms of use found",
|
|
1417
|
+
"checked": "2026-11-04"
|
|
1418
|
+
},
|
|
1419
|
+
{
|
|
1420
|
+
"host": "landesarchiv.sachsen-anhalt.de",
|
|
1421
|
+
"name": "Landesarchiv Sachsen-Anhalt",
|
|
1422
|
+
"level": "unknown",
|
|
1423
|
+
"robots": "none (404; recherche. too)",
|
|
1424
|
+
"scope": "its catalogue recherche.landesarchiv.sachsen-anhalt.de (about 4.5 million images of nearly 40,000 records, church books rarely among them): one record and one image at a time; no terms of use found",
|
|
1425
|
+
"checked": "2026-11-04"
|
|
1426
|
+
},
|
|
1427
|
+
{
|
|
1428
|
+
"host": "www.archive-in-thueringen.de",
|
|
1429
|
+
"name": "Archive in Thüringen (portal)",
|
|
1430
|
+
"level": "unknown",
|
|
1431
|
+
"robots": "none (404)",
|
|
1432
|
+
"scope": "a shared overview of Thuringia's archives (holdings and contacts): no images; no terms of use found",
|
|
1433
|
+
"checked": "2026-11-04"
|
|
1434
|
+
},
|
|
1435
|
+
{
|
|
1436
|
+
"host": "www.kulturwerte-mv.de",
|
|
1437
|
+
"name": "Landesamt für Kultur und Denkmalpflege Mecklenburg-Vorpommern (Landesarchiv)",
|
|
1438
|
+
"level": "unknown",
|
|
1439
|
+
"robots": "User-agent: * · Crawl-delay: 1 · Disallow: /datenschutzerklaerung-wisimv-app",
|
|
1440
|
+
"pace": {
|
|
1441
|
+
"minIntervalMs": 1000
|
|
1442
|
+
},
|
|
1443
|
+
"scope": "the office the Landesarchiv belongs to: website and catalogues only; the registers of Mecklenburg and Pomerania are on Archion or in the archive",
|
|
1444
|
+
"checked": "2026-11-04"
|
|
1445
|
+
},
|
|
1446
|
+
{
|
|
1447
|
+
"host": "ariadne-portal.uni-greifswald.de",
|
|
1448
|
+
"name": "Ariadne (Archivportal Mecklenburg-Vorpommern)",
|
|
1449
|
+
"level": "unknown",
|
|
1450
|
+
"robots": "none (404)",
|
|
1451
|
+
"scope": "finding aids of Mecklenburg-Vorpommern's archives: no images; no terms of use found",
|
|
1452
|
+
"checked": "2026-11-04"
|
|
1453
|
+
},
|
|
1454
|
+
{
|
|
1455
|
+
"host": "www.ezab.de",
|
|
1456
|
+
"name": "Evangelisches Zentralarchiv in Berlin (Kirchenbuchstelle)",
|
|
1457
|
+
"level": "unknown",
|
|
1458
|
+
"robots": "none (404)",
|
|
1459
|
+
"scope": "information on the Protestant church books of the former eastern provinces it keeps: their images only on Archion (paid; its terms forbid automated reading) or in its reading room",
|
|
1460
|
+
"checked": "2026-11-04"
|
|
1461
|
+
},
|
|
1462
|
+
{
|
|
1463
|
+
"host": "www.staatsarchiv.bremen.de",
|
|
1464
|
+
"name": "Staatsarchiv Bremen (website)",
|
|
1465
|
+
"level": "unknown",
|
|
1466
|
+
"robots": "empty (nothing closed)",
|
|
1467
|
+
"scope": "the archive's website and guides; its images of civil registers and passport registers are in Arcinsys Niedersachsen und Bremen, the passenger lists on www.public-juling.de",
|
|
1468
|
+
"checked": "2026-11-04"
|
|
1469
|
+
},
|
|
1470
|
+
{
|
|
1471
|
+
"host": "die-maus-bremen.info",
|
|
1472
|
+
"name": "Die MAUS – Gesellschaft für Familienforschung (Bremen indexes)",
|
|
1473
|
+
"level": "unknown",
|
|
1474
|
+
"robots": "none (robots.txt answers the home page)",
|
|
1475
|
+
"scope": "indexes of Bremen's civil records and marriages, linked to the images in Arcinsys: one query at a time; no terms of use found",
|
|
1476
|
+
"checked": "2026-11-04"
|
|
1477
|
+
},
|
|
1478
|
+
{
|
|
1479
|
+
"host": "nla.niedersachsen.de",
|
|
1480
|
+
"name": "Niedersächsisches Landesarchiv (website)",
|
|
1481
|
+
"level": "unknown",
|
|
1482
|
+
"robots": "User-agent: * · Disallow: /test/ · /ps/ · /public/ …",
|
|
1483
|
+
"scope": "the archive's website; its records are in Arcinsys Niedersachsen und Bremen",
|
|
1484
|
+
"checked": "2026-11-04"
|
|
1485
|
+
},
|
|
1486
|
+
{
|
|
1487
|
+
"host": "agad.gov.pl",
|
|
1488
|
+
"name": "Archiwum Główne Akt Dawnych (AGAD)",
|
|
1489
|
+
"level": "unknown",
|
|
1490
|
+
"terms": "https://agad.gov.pl/inwentarze/uwagigen.html",
|
|
1491
|
+
"robots": "User-agent: * · Disallow: /wp-admin",
|
|
1492
|
+
"scope": "its website, the inventories (XML/HTML) of the registers of the former eastern territories (fonds 298–557) and their links to the image galleries on agadd.home.net.pl and agadd2.home.net.pl; no terms of use of the images found",
|
|
1493
|
+
"checked": "2026-11-04"
|
|
1494
|
+
},
|
|
1495
|
+
{
|
|
1496
|
+
"host": "agadd.home.net.pl",
|
|
1497
|
+
"name": "Archiwum Główne Akt Dawnych (image galleries of the registers)",
|
|
1498
|
+
"level": "unknown",
|
|
1499
|
+
"robots": "none (404)",
|
|
1500
|
+
"scope": "static galleries of the registers of the former eastern territories (Roman and Greek Catholic, Protestant, Jewish), linked from AGAD's inventories: one image at a time, never a whole book; registers younger than 100 (births) or 80 years (marriages, deaths) are not in them; no terms of use found",
|
|
1501
|
+
"checked": "2026-11-04"
|
|
1502
|
+
},
|
|
1503
|
+
{
|
|
1504
|
+
"host": "agadd2.home.net.pl",
|
|
1505
|
+
"name": "Archiwum Główne Akt Dawnych (image galleries of the registers)",
|
|
1506
|
+
"level": "unknown",
|
|
1507
|
+
"scope": "static galleries of registers linked from AGAD's inventories: one image at a time, never a whole book; no terms of use found",
|
|
1508
|
+
"checked": "2026-11-04"
|
|
1509
|
+
},
|
|
1510
|
+
{
|
|
1511
|
+
"host": "archiwum.mkw.pl",
|
|
1512
|
+
"name": "Archiwum Archidiecezjalne Warszawskie (AAW)",
|
|
1513
|
+
"level": "unknown",
|
|
1514
|
+
"terms": "https://archiwum.mkw.pl/genealogia/",
|
|
1515
|
+
"robots": "User-agent: * · Disallow: /wp-admin/",
|
|
1516
|
+
"scope": "the archive's website and a catalogue of its books; its register images are published on metryki.genealodzy.pl under PTG's terms",
|
|
1517
|
+
"checked": "2026-11-04"
|
|
1518
|
+
},
|
|
1519
|
+
{
|
|
1520
|
+
"host": "ank.gov.pl",
|
|
1521
|
+
"name": "Archiwum Narodowe w Krakowie",
|
|
1522
|
+
"level": "unknown",
|
|
1523
|
+
"robots": "comments only (Cloudflare's content signals), no rules",
|
|
1524
|
+
"scope": "the archive's website; its images are on szukajwarchiwach.gov.pl (a person's browser only)",
|
|
1525
|
+
"checked": "2026-11-04"
|
|
1526
|
+
},
|
|
1527
|
+
{
|
|
1528
|
+
"host": "katowice.ap.gov.pl",
|
|
1529
|
+
"name": "Archiwum Państwowe w Katowicach",
|
|
1530
|
+
"level": "unknown",
|
|
1531
|
+
"terms": "https://katowice.ap.gov.pl/ap/online",
|
|
1532
|
+
"robots": "none (404)",
|
|
1533
|
+
"scope": "the archive's website: no images of its own — they are on szukajwarchiwach.gov.pl, sbc.org.pl, siliusradicum.pl and metryki.genealodzy.pl, each under its own terms",
|
|
1534
|
+
"checked": "2026-11-04"
|
|
1535
|
+
},
|
|
1536
|
+
{
|
|
1537
|
+
"host": "wroclaw.ap.gov.pl",
|
|
1538
|
+
"name": "Archiwum Państwowe we Wrocławiu",
|
|
1539
|
+
"level": "unknown",
|
|
1540
|
+
"robots": "Drupal's own paths only (wroclaw.ap.gov.pl redirects to www.)",
|
|
1541
|
+
"scope": "the archive's website; its images are on szukajwarchiwach.gov.pl (a person's browser only)",
|
|
1542
|
+
"checked": "2026-11-04"
|
|
1543
|
+
},
|
|
1544
|
+
{
|
|
1545
|
+
"host": "lublin.ap.gov.pl",
|
|
1546
|
+
"name": "Archiwum Państwowe w Lublinie",
|
|
1547
|
+
"level": "unknown",
|
|
1548
|
+
"robots": "calendar paths only",
|
|
1549
|
+
"scope": "its own indexes (residents of Lublin 1930–1950 from house books, of Kock, of Radzyń: a name and the reference only), one query at a time; its images are on szukajwarchiwach.gov.pl; no terms of online use found",
|
|
1550
|
+
"checked": "2026-11-04"
|
|
1551
|
+
},
|
|
1552
|
+
{
|
|
1553
|
+
"host": "lubgens.eu",
|
|
1554
|
+
"name": "LubGens (Lubelskie Towarzystwo Genealogiczne: regestry.lubgens.eu)",
|
|
1555
|
+
"level": "unknown",
|
|
1556
|
+
"browserOnly": true,
|
|
1557
|
+
"robots": "not read: regestry.lubgens.eu answers 403 to strom's User-Agent, in a headless browser too (2026-11-03)",
|
|
1558
|
+
"scope": "the register abstracts of the Lublin region: only in the person's browser; its terms not read",
|
|
1559
|
+
"checked": "2026-11-03"
|
|
1560
|
+
},
|
|
1561
|
+
{
|
|
1562
|
+
"host": "ptg.gda.pl",
|
|
1563
|
+
"name": "Pomorskie Towarzystwo Genealogiczne (PomGenBaza)",
|
|
1564
|
+
"level": "unknown",
|
|
1565
|
+
"robots": "Crawl-Delay: 2 · Disallow: /wp-admin/ · Disallow: /wp-admin/admin-ajax.php (the search goes through it)",
|
|
1566
|
+
"disallow": [
|
|
1567
|
+
"/wp-admin/"
|
|
1568
|
+
],
|
|
1569
|
+
"pace": {
|
|
1570
|
+
"minIntervalMs": 2000
|
|
1571
|
+
},
|
|
1572
|
+
"scope": "indexes of Pomerania's registers, cemeteries and memorials: its search goes through a path its robots.txt closes — searched by the person; no terms of use found (its \"Regulamin\" is the society's rules)",
|
|
1573
|
+
"checked": "2026-11-03"
|
|
1574
|
+
},
|
|
1575
|
+
{
|
|
1576
|
+
"host": "projektmazury.org",
|
|
1577
|
+
"name": "Projekt Mazury",
|
|
1578
|
+
"level": "unknown",
|
|
1579
|
+
"robots": "none (404)",
|
|
1580
|
+
"scope": "indexes of Masuria's and Warmia's registers, civil records, casualty lists and cemeteries: one query at a time; no terms of use found",
|
|
1581
|
+
"checked": "2026-11-03"
|
|
1582
|
+
},
|
|
1583
|
+
{
|
|
1584
|
+
"host": "poznan-project.psnc.pl",
|
|
1585
|
+
"name": "Poznan Project (marriages of Greater Poland 1800–1899)",
|
|
1586
|
+
"level": "unknown",
|
|
1587
|
+
"robots": "none (404)",
|
|
1588
|
+
"scope": "an index of about 2 million marriages, without images: one query at a time; no terms of use found",
|
|
1589
|
+
"checked": "2026-11-03"
|
|
1590
|
+
},
|
|
1591
|
+
{
|
|
1592
|
+
"host": "recesy.wtg-gniazdo.org",
|
|
1593
|
+
"name": "Recesy (WTG Gniazdo)",
|
|
1594
|
+
"level": "unknown",
|
|
1595
|
+
"robots": "none (redirects to /pl/)",
|
|
1596
|
+
"scope": "an index of the enfranchisement records 1823–1910 of seven districts of Greater Poland: one query at a time; only a payment regulation found, no terms of use (its HTTPS certificate does not match)",
|
|
1597
|
+
"checked": "2026-11-03"
|
|
1598
|
+
},
|
|
1599
|
+
{
|
|
1600
|
+
"host": "genealodzy.czestochowa.pl",
|
|
1601
|
+
"name": "Towarzystwo Genealogiczne Ziemi Częstochowskiej",
|
|
1602
|
+
"level": "unknown",
|
|
1603
|
+
"robots": "Joomla's own directories only",
|
|
1604
|
+
"scope": "indexes of the registers of the Częstochowa region (/indeksy-metrykalne/wyszukiwarka): one query at a time; its \"Regulamin\" is a privacy policy, no terms of use",
|
|
1605
|
+
"checked": "2026-11-03"
|
|
1606
|
+
},
|
|
1607
|
+
{
|
|
1608
|
+
"host": "szukaj.garwolin.org",
|
|
1609
|
+
"name": "Garwolin (spisy pozametrykalne)",
|
|
1610
|
+
"level": "unknown",
|
|
1611
|
+
"robots": "none (404)",
|
|
1612
|
+
"scope": "indexes of the Garwolin district beyond the registers (lists, guilds, exhumations): one query at a time; no terms of use found",
|
|
1613
|
+
"checked": "2026-11-03"
|
|
1614
|
+
},
|
|
1615
|
+
{
|
|
1616
|
+
"host": "wolyn-metryki.pl",
|
|
1617
|
+
"name": "Wołyń-Metryki",
|
|
1618
|
+
"level": "unknown",
|
|
1619
|
+
"robots": "none (404, www. too)",
|
|
1620
|
+
"scope": "indexes of the registers of the Lutsk diocese, linking to the images at AGAD (agadd.home.net.pl), FamilySearch and Szukaj w Archiwach — each under its own terms: one query at a time; no terms of use found",
|
|
1621
|
+
"checked": "2026-11-03"
|
|
1622
|
+
},
|
|
1623
|
+
{
|
|
1624
|
+
"host": "search.jzi.org.pl",
|
|
1625
|
+
"name": "Geneo (Stowarzyszenie JZI)",
|
|
1626
|
+
"level": "unknown",
|
|
1627
|
+
"robots": "none (404)",
|
|
1628
|
+
"scope": "an index of Podlasie's registers (/geneo/): one query at a time; no terms of use found",
|
|
1629
|
+
"checked": "2026-11-03"
|
|
1630
|
+
},
|
|
1631
|
+
{
|
|
1632
|
+
"host": "twoiprzodkowie.pl",
|
|
1633
|
+
"name": "Twoi Przodkowie",
|
|
1634
|
+
"level": "unknown",
|
|
1635
|
+
"scope": "a small site of the Garwolin region, most pages in preparation; no terms of use found",
|
|
1636
|
+
"checked": "2026-11-03"
|
|
1637
|
+
},
|
|
1638
|
+
{
|
|
1639
|
+
"host": "e-kartoteka.net",
|
|
1640
|
+
"name": "e-kartoteka (registration cards of Poznań 1870–1931)",
|
|
1641
|
+
"level": "unknown",
|
|
1642
|
+
"robots": "none (robots.txt redirects to /pl/)",
|
|
1643
|
+
"scope": "an index of the residents' registration cards of Poznań (Archiwum Państwowe w Poznaniu): one query at a time; the card's image is on szukajwarchiwach.gov.pl (a person's browser only); no terms of use found",
|
|
1644
|
+
"checked": "2026-11-03"
|
|
1645
|
+
},
|
|
1646
|
+
{
|
|
1647
|
+
"host": "indeksrepresjonowanych.pl",
|
|
1648
|
+
"name": "Indeks Represjonowanych (IPN)",
|
|
1649
|
+
"level": "unknown",
|
|
1650
|
+
"robots": "none (404)",
|
|
1651
|
+
"scope": "about 316,000 biographical notes of victims of Soviet repressions: one query at a time; no terms of use found",
|
|
1652
|
+
"checked": "2026-11-03"
|
|
1653
|
+
},
|
|
1654
|
+
{
|
|
1655
|
+
"host": "pbc.gda.pl",
|
|
1656
|
+
"name": "Pomorska Biblioteka Cyfrowa",
|
|
1657
|
+
"level": "unknown",
|
|
1658
|
+
"robots": "dLibra's standard",
|
|
1659
|
+
"scope": "a regional digital library (dLibra): one object at a time; no terms of use found",
|
|
1660
|
+
"checked": "2026-11-03"
|
|
1661
|
+
},
|
|
1662
|
+
{
|
|
1663
|
+
"host": "kpbc.umk.pl",
|
|
1664
|
+
"name": "Kujawsko-Pomorska Biblioteka Cyfrowa",
|
|
1665
|
+
"level": "unknown",
|
|
1666
|
+
"robots": "dLibra's standard",
|
|
1667
|
+
"scope": "a regional digital library (dLibra): one object at a time, the rights of each in its field Prawa/AccessRights; no terms of use found (its help only says most publications can be downloaded)",
|
|
1668
|
+
"checked": "2026-11-03"
|
|
1669
|
+
},
|
|
1670
|
+
{
|
|
1671
|
+
"host": "polski.mapywig.org",
|
|
1672
|
+
"name": "Mapy WIG (amateur archive of maps 1919–1939)",
|
|
1673
|
+
"level": "unknown",
|
|
1674
|
+
"robots": "Disallow: /administration/ · /locale/ · /themes/ · /print.php",
|
|
1675
|
+
"scope": "maps of the Polish Military Geographical Institute: one map at a time; no terms of use found",
|
|
1676
|
+
"checked": "2026-11-03"
|
|
1250
1677
|
}
|
|
1251
1678
|
]
|
|
1252
1679
|
}
|
package/assets/lang/cs.json
CHANGED
|
@@ -2599,7 +2599,7 @@
|
|
|
2599
2599
|
"ui.doc.browser.archives.permission": "{names}: jen přes prohlížeč člověka – se svolením „přes prohlížeč“ pro archiv uloží snímky agent sám",
|
|
2600
2600
|
"ui.doc.browser.archives.ok": "{names}: snímky ukládá agent sám přes prohlížeč",
|
|
2601
2601
|
"ui.doc.desktop": "prohlížeč desktopových aplikací",
|
|
2602
|
-
"ui.doc.desktop.
|
|
2602
|
+
"ui.doc.desktop.unwatched": "vestavěný prohlížeč, náhled a computer use desktopových aplikací Claude a ChatGPT/Codex strom nehlídá a nedoporučuje – hlídaný je jen Claude in Chrome",
|
|
2603
2603
|
"ui.waiting.browser.agent": "S Claude Code a rozšířením Claude in Chrome by je agent uložil sám (prohlížeč agenta {agent} strom nehlídá).",
|
|
2604
2604
|
"ui.waiting.browser.noext": "S rozšířením Claude in Chrome by je agent uložil sám: {url}",
|
|
2605
2605
|
"ui.waiting.browser.permission": "Se svolením „přes prohlížeč“ pro {archive} je agent uloží sám.",
|
package/assets/lang/de.json
CHANGED
|
@@ -2599,7 +2599,7 @@
|
|
|
2599
2599
|
"ui.doc.browser.archives.permission": "{names}: nur über den Browser eines Menschen – mit der Erlaubnis „über den Browser“ für das Archiv speichert der Agent die Bilder selbst",
|
|
2600
2600
|
"ui.doc.browser.archives.ok": "{names}: der Agent speichert die Bilder selbst über den Browser",
|
|
2601
2601
|
"ui.doc.desktop": "Browser der Desktop-Apps",
|
|
2602
|
-
"ui.doc.desktop.
|
|
2602
|
+
"ui.doc.desktop.unwatched": "den eingebauten Browser, die Vorschau und Computer Use der Desktop-Apps Claude und ChatGPT/Codex überwacht strom nicht und empfiehlt sie nicht – überwacht wird nur Claude in Chrome",
|
|
2603
2603
|
"ui.waiting.browser.agent": "Mit Claude Code und der Erweiterung Claude in Chrome würde der Agent sie selbst speichern (den Browser von {agent} überwacht strom nicht).",
|
|
2604
2604
|
"ui.waiting.browser.noext": "Mit der Erweiterung Claude in Chrome würde der Agent sie selbst speichern: {url}",
|
|
2605
2605
|
"ui.waiting.browser.permission": "Mit der Erlaubnis „über den Browser“ für {archive} speichert der Agent sie selbst.",
|
package/assets/lang/pl.json
CHANGED
|
@@ -2599,7 +2599,7 @@
|
|
|
2599
2599
|
"ui.doc.browser.archives.permission": "{names}: tylko przez przeglądarkę człowieka – ze zgodą „przez przeglądarkę” dla archiwum agent zapisze skany sam",
|
|
2600
2600
|
"ui.doc.browser.archives.ok": "{names}: agent zapisuje skany sam przez przeglądarkę",
|
|
2601
2601
|
"ui.doc.desktop": "przeglądarka aplikacji desktopowych",
|
|
2602
|
-
"ui.doc.desktop.
|
|
2602
|
+
"ui.doc.desktop.unwatched": "wbudowanej przeglądarki, podglądu i computer use aplikacji desktopowych Claude i ChatGPT/Codex strom nie pilnuje i nie poleca – pilnowany jest tylko Claude in Chrome",
|
|
2603
2603
|
"ui.waiting.browser.agent": "Z Claude Code i rozszerzeniem Claude in Chrome agent zapisałby je sam (strom nie pilnuje przeglądarki agenta {agent}).",
|
|
2604
2604
|
"ui.waiting.browser.noext": "Z rozszerzeniem Claude in Chrome agent zapisałby je sam: {url}",
|
|
2605
2605
|
"ui.waiting.browser.permission": "Ze zgodą „przez przeglądarkę” dla {archive} agent zapisze je sam.",
|
package/dist/agents/files.js
CHANGED
|
@@ -17,8 +17,7 @@ import { configDir, ownCommand } from "../core/paths.js";
|
|
|
17
17
|
import { oldSettingsDirs, packagedSettingsPattern } from "../core/oldsettings.js";
|
|
18
18
|
import { within } from "../core/relocate.js";
|
|
19
19
|
import { agentBrowser } from "../core/connector.js";
|
|
20
|
-
import { CHROME_ALLOW, CHROME_DENY,
|
|
21
|
-
import { codexConfigFile } from "./effort.js";
|
|
20
|
+
import { CHROME_ALLOW, CHROME_DENY, chromeDomain } from "../core/browser.js";
|
|
22
21
|
import { claudeScanReader, opencodeScanReader, SCAN_READER, scanReaderModel, treeReading } from "./scanreader.js";
|
|
23
22
|
import { claudeWebHooks, grokWebHooks, webRuleLines } from "../core/web.js";
|
|
24
23
|
import { claudeShellHooks, grokShellHook } from "../core/bridgeguard.js";
|
|
@@ -81,9 +80,12 @@ the researcher; \`strom\` is your only way to read and change the research.
|
|
|
81
80
|
to page by going to the address (navigate), never clicking through a
|
|
82
81
|
series of pages; a site strom refused or whose terms forbid automation
|
|
83
82
|
never. Any other agent's browser or computer use (Codex's, Antigravity's,
|
|
84
|
-
a browser's MCP) strom does not see
|
|
85
|
-
|
|
86
|
-
|
|
83
|
+
the desktop apps' own, a browser's MCP) strom does not see and does not
|
|
84
|
+
recommend: never of your own accord to an archive only a person's
|
|
85
|
+
browser goes to — the person saves its images by hand
|
|
86
|
+
(\`strom task wait T… --images B…:<numbers> --on "…"\`); only when the
|
|
87
|
+
person explicitly asks for one there, their choice: say in one sentence
|
|
88
|
+
that strom does not watch that way, and the archive's terms; elsewhere
|
|
87
89
|
\`strom net web --check <url> --browser\` first. An image of such an
|
|
88
90
|
archive the person allowed "through the browser", with no connector of
|
|
89
91
|
it: one at a time, \`strom media save T… --image <n> --at <its page>\`
|
|
@@ -302,8 +304,6 @@ function treeRules(tree, agent) {
|
|
|
302
304
|
// What the browser downloads is strom's to take over; the rest of the folder is the user's.
|
|
303
305
|
`Read(${downloads}/**)`,
|
|
304
306
|
...(claude ? CHROME_DENY : []),
|
|
305
|
-
// the desktop app's own browser and computer use: no hook of strom's before them (core/browser.ts)
|
|
306
|
-
...(claude ? DESKTOP_BROWSER_DENY : []),
|
|
307
307
|
// With full permissions only the deny rules count: what the allow list kept away is kept away here.
|
|
308
308
|
...(settings.agentPermissions() === "full" ? BYPASS_DENY : []),
|
|
309
309
|
],
|
|
@@ -376,35 +376,39 @@ export function codexRules(tree) {
|
|
|
376
376
|
}
|
|
377
377
|
export const CODEX_RULES = path.join(".codex", "rules", "strom.rules");
|
|
378
378
|
/**
|
|
379
|
-
* Codex's settings for this tree (.codex/config.toml
|
|
380
|
-
*
|
|
381
|
-
*
|
|
382
|
-
*
|
|
383
|
-
*
|
|
379
|
+
* Codex's settings for this tree (.codex/config.toml) as strom's sources wrote them for a while before 1.27.0 (never
|
|
380
|
+
* released): the browser and computer use of Codex's desktop app switched off. Nothing of them is switched off now
|
|
381
|
+
* (core/browser.ts): strom agents sync takes back only strom's lines — its header, and the sections of those servers and
|
|
382
|
+
* plugins with nothing in them but what strom wrote; a line of the person's stays, a file without strom's header is the
|
|
383
|
+
* person's alone.
|
|
384
384
|
*/
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
385
|
+
const OLD_CODEX_HEADER = "# strom: generated (strom agents sync) — Codex's settings for this family tree; changed by strom only";
|
|
386
|
+
const OLD_CODEX_COMMENTS = [
|
|
387
|
+
OLD_CODEX_HEADER,
|
|
388
|
+
"# The browser and computer use of Codex's desktop app stay off in a research: strom keeps no watch before them,",
|
|
389
|
+
"# so an archive's terms, robots.txt and pace could not be kept there.",
|
|
390
|
+
];
|
|
391
|
+
const OLD_CODEX_SECTIONS = new Set([
|
|
392
|
+
...["node_repl", "cua_repl", "computer-use", "computer_use"].map((n) => `[mcp_servers.${n}]`),
|
|
393
|
+
...["browser", "chrome", "computer-use", "unified-computer-use"].map((p) => `[plugins."${p}@openai-bundled"]`),
|
|
394
|
+
]);
|
|
395
|
+
const OLD_CODEX_LINES = new Set(['command = "strom-off"', "enabled = false"]);
|
|
396
|
+
/** What is left of the old .codex/config.toml without strom's lines ("" nothing; undefined: no file of strom's). */
|
|
397
|
+
export function withoutOldCodexConfig(text) {
|
|
398
|
+
if (!text.startsWith(OLD_CODEX_HEADER))
|
|
399
|
+
return undefined;
|
|
400
|
+
const parts = text.split(/^(?=\s*\[)/mu);
|
|
401
|
+
const kept = [];
|
|
402
|
+
for (const part of parts) {
|
|
403
|
+
const lines = part.split(/\r?\n/u);
|
|
404
|
+
const head = lines[0].trim();
|
|
405
|
+
const theirs = lines.slice(1).filter((l) => l.trim() && !OLD_CODEX_LINES.has(l.trim()));
|
|
406
|
+
// strom's section: it goes; a comment of the person's below it stays
|
|
407
|
+
const mine = OLD_CODEX_SECTIONS.has(head) && theirs.every((l) => l.trimStart().startsWith("#")) ? theirs.map((l) => l + "\n") : undefined;
|
|
408
|
+
kept.push(mine ? mine.join("") : lines.filter((l) => !OLD_CODEX_COMMENTS.includes(l.trimEnd())).join("\n"));
|
|
399
409
|
}
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
"# The browser and computer use of Codex's desktop app stay off in a research: strom keeps no watch before them,",
|
|
403
|
-
"# so an archive's terms, robots.txt and pace could not be kept there.",
|
|
404
|
-
...CODEX_BROWSER_SERVERS.flatMap((n) => ["", `[mcp_servers.${n}]`, ...(byAddress.has(n) ? [] : ['command = "strom-off"']), "enabled = false"]),
|
|
405
|
-
...CODEX_BROWSER_PLUGINS.flatMap((n) => ["", `[plugins."${n}"]`, "enabled = false"]),
|
|
406
|
-
"",
|
|
407
|
-
].join("\n");
|
|
410
|
+
const left = kept.join("").replace(/\n{3,}/gu, "\n\n").trim();
|
|
411
|
+
return left ? left + "\n" : "";
|
|
408
412
|
}
|
|
409
413
|
export const CODEX_CONFIG = path.join(".codex", "config.toml");
|
|
410
414
|
/** Denied as well when the user lets the agent do everything else (agent.permissions full). */
|
|
@@ -512,6 +516,31 @@ function withUserPart(file, generated) {
|
|
|
512
516
|
}
|
|
513
517
|
return generated;
|
|
514
518
|
}
|
|
519
|
+
/** The tree's old .codex/config.toml without strom's lines (withoutOldCodexConfig): the file changed, or gone when nothing is left. */
|
|
520
|
+
function dropOldCodexConfig(tree) {
|
|
521
|
+
const file = path.join(tree.root, CODEX_CONFIG);
|
|
522
|
+
let text;
|
|
523
|
+
try {
|
|
524
|
+
text = fs.readFileSync(file, "utf8");
|
|
525
|
+
}
|
|
526
|
+
catch {
|
|
527
|
+
return undefined;
|
|
528
|
+
}
|
|
529
|
+
const left = withoutOldCodexConfig(text);
|
|
530
|
+
if (left === undefined || left === text)
|
|
531
|
+
return undefined;
|
|
532
|
+
if (!tree.dryRun) {
|
|
533
|
+
if (left)
|
|
534
|
+
writeFileAtomic(file, left);
|
|
535
|
+
else {
|
|
536
|
+
fs.rmSync(file);
|
|
537
|
+
const dir = path.dirname(file);
|
|
538
|
+
if (fs.readdirSync(dir).length === 0)
|
|
539
|
+
fs.rmdirSync(dir);
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
return CODEX_CONFIG.split(path.sep).join("/");
|
|
543
|
+
}
|
|
515
544
|
/** Nothing of strom's left in a JSON value. */
|
|
516
545
|
const GONE = Symbol("gone");
|
|
517
546
|
/**
|
|
@@ -559,8 +588,10 @@ function dropAgentFiles(tree) {
|
|
|
559
588
|
[path.join(".grok", "rules", "strom.md"), GROK_RULES],
|
|
560
589
|
[GROK_HOOKS, JSON.stringify(grokHooks(tree.root), null, 2) + "\n"],
|
|
561
590
|
[CODEX_RULES, codexRules(tree)],
|
|
562
|
-
[CODEX_CONFIG, codexConfig(tree)],
|
|
563
591
|
];
|
|
592
|
+
const codexOld = dropOldCodexConfig(tree);
|
|
593
|
+
if (codexOld)
|
|
594
|
+
gone.push(codexOld);
|
|
564
595
|
for (const [rel, content] of generated) {
|
|
565
596
|
const file = path.join(tree.root, rel);
|
|
566
597
|
let text;
|
|
@@ -606,7 +637,7 @@ function dropAgentFiles(tree) {
|
|
|
606
637
|
export const GROK_HOOKS = path.join(".grok", "hooks", "strom.json");
|
|
607
638
|
/** Claude Code's subagent for reading scans, in the tree. */
|
|
608
639
|
export const CLAUDE_SCAN_READER = path.join(".claude", "agents", `${SCAN_READER}.md`);
|
|
609
|
-
export const AGENT_FILES = ["AGENTS.md", "CLAUDE.md", path.join(".claude", "settings.json"), CLAUDE_SCAN_READER, "opencode.json", path.join(".grok", "config.toml"), path.join(".grok", "rules", "strom.md"), GROK_HOOKS, CODEX_RULES
|
|
640
|
+
export const AGENT_FILES = ["AGENTS.md", "CLAUDE.md", path.join(".claude", "settings.json"), CLAUDE_SCAN_READER, "opencode.json", path.join(".grok", "config.toml"), path.join(".grok", "rules", "strom.md"), GROK_HOOKS, CODEX_RULES];
|
|
610
641
|
/**
|
|
611
642
|
* strom's files of the agents written for the tree (only what changed: the files written, to commit). `said.shim`: the
|
|
612
643
|
* shim in .strom/bin was written now (never committed: not among the files).
|
|
@@ -642,7 +673,10 @@ export function syncAgentFiles(tree, said = {}) {
|
|
|
642
673
|
write(path.join(".grok", "rules", "strom.md"), GROK_RULES);
|
|
643
674
|
write(GROK_HOOKS, JSON.stringify(grokHooks(tree.root), null, 2) + "\n");
|
|
644
675
|
write(CODEX_RULES, codexRules(tree));
|
|
645
|
-
|
|
676
|
+
// what strom wrote there before 1.27.0 left the desktop apps' browser on: taken back
|
|
677
|
+
const codexOld = dropOldCodexConfig(tree);
|
|
678
|
+
if (codexOld)
|
|
679
|
+
written.push(codexOld);
|
|
646
680
|
// the strom the agent hooks name (the tree's .strom/bin, never committed) — there also for a conversation strom did not start
|
|
647
681
|
if (!tree.dryRun) {
|
|
648
682
|
try {
|
package/dist/agents/global.js
CHANGED
|
@@ -71,8 +71,10 @@ mentions strom, a family tree or the Strom app.
|
|
|
71
71
|
check with \`strom net web --check <url>\` (a browser: \`--browser\`). A
|
|
72
72
|
browser goes one page at a time at a person's pace, to each address
|
|
73
73
|
directly, never clicking through a series of pages. An archive only a
|
|
74
|
-
person's browser goes to:
|
|
75
|
-
page) —
|
|
74
|
+
person's browser goes to: strom's way is Claude in Chrome (strom's hook
|
|
75
|
+
before each page) — another agent's browser or computer use strom does not watch:
|
|
76
|
+
never of your own accord, only on the person's explicit request (said
|
|
77
|
+
once: strom does not watch it; the archive's terms); the person saves
|
|
76
78
|
its images by hand (\`strom task wait … --images\`), or, allowed
|
|
77
79
|
"through the browser", Claude in Chrome one at a time (\`strom media
|
|
78
80
|
save\`).
|
package/dist/brief/brief.js
CHANGED
|
@@ -944,7 +944,7 @@ export function browserRules(sites, alone, task) {
|
|
|
944
944
|
return [
|
|
945
945
|
"## The browser (Claude in Chrome)",
|
|
946
946
|
`Its sites: ${named || "none yet"} — no other.`,
|
|
947
|
-
"- The only browser strom
|
|
947
|
+
"- The only browser strom watches. The browser, preview and computer use of Claude's and Codex's desktop apps strom does not watch and does not recommend: never of your own accord. Only when the person explicitly asks for them: the person's choice — say in one sentence that strom does not watch that way and what the site's terms say; never a way round them, never a check whether a person is there.",
|
|
948
948
|
"- Use it without asking where a connector (strom fetch), WebFetch and WebSearch lead nowhere — never where they led nowhere because the site refused strom (401/403/429) or its terms forbid or restrict automation; images only through strom fetch.",
|
|
949
949
|
"- As gently as strom fetch: the site's terms and robots.txt, its pace and hourly cap (strom connector show; else a page at a time, 2 s apart at least), only the pages the task needs, nothing ahead. A site that forbids automated access: never through the browser, never a way round.",
|
|
950
950
|
`- A site that forbids automation, refused strom, or restricts it without the person's permission "through the browser" (strom net web --check <url> says it): no connector, no browser — another way to the same records (another archive or fonds of the jurisdiction, the parish, an index, secondary sources), the search recorded (strom search add … --result inconclusive --note "<host>: …"); only if the source stays necessary: strom task wait ${task ?? "T…"} --check <url> --on "<what the person checks there>"${alone ? ", then close the session" : ""}.`,
|
package/dist/cli/ui.js
CHANGED
|
@@ -2449,7 +2449,7 @@ export const UI = {
|
|
|
2449
2449
|
"ui.doc.browser.archives.permission": "{names}: only through a person's browser – with the permission “through the browser” for the archive the agent saves the images itself",
|
|
2450
2450
|
"ui.doc.browser.archives.ok": "{names}: the agent saves the images itself through the browser",
|
|
2451
2451
|
"ui.doc.desktop": "desktop apps' browser",
|
|
2452
|
-
"ui.doc.desktop.
|
|
2452
|
+
"ui.doc.desktop.unwatched": "the built-in browser, preview and computer use of the Claude and ChatGPT/Codex desktop apps strom does not watch and does not recommend — only Claude in Chrome is watched",
|
|
2453
2453
|
"ui.waiting.browser.agent": "With Claude Code and the Claude in Chrome extension the agent would save them itself (strom does not watch the browser of {agent}).",
|
|
2454
2454
|
"ui.waiting.browser.noext": "With the Claude in Chrome extension the agent would save them itself: {url}",
|
|
2455
2455
|
"ui.waiting.browser.permission": "With the permission “through the browser” for {archive} the agent saves them itself.",
|
package/dist/commands/guide.js
CHANGED
|
@@ -77,12 +77,15 @@ HARD RULES
|
|
|
77
77
|
— never clicking through a series of pages; strom's hook counts its
|
|
78
78
|
navigate with your web fetches of the site. Any other agent's browser or
|
|
79
79
|
computer use (Codex's, Antigravity's, the browser, preview and computer
|
|
80
|
-
use of Claude's desktop
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
80
|
+
use of Claude's and Codex's desktop apps, a browser's MCP) strom does
|
|
81
|
+
not see and does not recommend: never of your own accord to an archive
|
|
82
|
+
only a person's browser goes to — the person saves its images by hand
|
|
83
|
+
(strom task wait T… --images B…:<numbers> --on "…"). Only when the
|
|
84
|
+
person explicitly asks you to use one there: the person's choice — say
|
|
85
|
+
in one sentence that strom does not watch that way and what the
|
|
86
|
+
archive's terms say; never a way round them. Claude in Chrome at such
|
|
87
|
+
an archive the person allowed "through the browser": with its
|
|
88
|
+
connector, strom fetch plans the images
|
|
86
89
|
(a viewer of the archive: the book's page opened once, never reloaded);
|
|
87
90
|
with none, one image at a time — strom media save T… --image <n> --at
|
|
88
91
|
<its page> gives the script for your tab, strom media add --inbox
|
package/dist/commands/media.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import fs from "node:fs";
|
|
7
7
|
import path from "node:path";
|
|
8
8
|
import { register } from "../cli/registry.js";
|
|
9
|
-
import { counted, lines, moreLine, paginate, runs, shellArg, table, truncate } from "../cli/format.js";
|
|
9
|
+
import { counted, lines, moreLine, paginate, runs, runsArg, shellArg, table, truncate } from "../cli/format.js";
|
|
10
10
|
import { notFound, UsageError } from "../core/errors.js";
|
|
11
11
|
import { makeNote } from "../core/actions.js";
|
|
12
12
|
import { clipText, collectFiles, numberInName, coveringPart, inboxFolderFor, fileSha256, findImage, imageNumbers, imageOfRef, imageRange, IMAGE_FILE_EXT, inboxFolders, inputPath, isWhole, mimeOf, onlyParts, otherCopies, parseImageList, regionText, sharperCover, storeShared, wholeSizeOf } from "../core/media.js";
|
|
@@ -1187,10 +1187,17 @@ register({
|
|
|
1187
1187
|
// an agent whose browser strom does not keep: never at an archive only a person's browser goes to
|
|
1188
1188
|
if (runner && !browserKept(runner) && g.level?.browserOnly && (g.allow || g.why === "browser"))
|
|
1189
1189
|
g = { ...g, allow: false, why: "browser", reason: withoutBrowserReason(g.level, g.level.title ?? g.host, t.id, bookOn(tree, t.id, g.host, u.href), otherWay(g.host, u.href, t.id)) };
|
|
1190
|
-
if (!g.allow)
|
|
1191
|
-
throw new UsageError(g.reason ?? `strom: not through the browser: ${u.href}`, { code: `browser.${g.why ?? "refused"}` });
|
|
1192
1190
|
// what the script saves is an image of the archive: its images through the browser, as the person allowed
|
|
1193
1191
|
const may = g.level ? allows(g.level, "images", "browser") : { ok: true };
|
|
1192
|
+
// its images by a person's hand only, and the task waits for images of this book already: nothing to tell it to
|
|
1193
|
+
// wait for — only that it waits (and the one image more it is to wait for, when this one is not among them yet)
|
|
1194
|
+
if (!g.allow && !may.ok && may.why === "manual" && w?.by === "images" && w.recordset === b.id) {
|
|
1195
|
+
const want = w.want ?? [];
|
|
1196
|
+
const more = want.includes(n) ? "" : ` Image ${n} too, only if the task needs it: strom task wait ${t.id} --images ${b.id}:${runsArg([...want, n])} --on "<the book, its link, which images — impersonal, in the research language>".`;
|
|
1197
|
+
throw new UsageError(`strom: ${g.level.title ?? g.host} — its images by a person's hand only, not through your browser: ${t.id} waits for images of ${b.id} saved by hand already${want.length ? ` (${runs(want)})` : ""}.${more} Go on with other work.`, { code: `browser.${g.why ?? "manual"}` });
|
|
1198
|
+
}
|
|
1199
|
+
if (!g.allow)
|
|
1200
|
+
throw new UsageError(g.reason ?? `strom: not through the browser: ${u.href}`, { code: `browser.${g.why ?? "refused"}` });
|
|
1194
1201
|
if (!may.ok)
|
|
1195
1202
|
throw new UsageError(may.why === "permission"
|
|
1196
1203
|
? `strom: the person has not allowed ${g.host} "through the browser" for its images (strom allow archive ${g.level.host} --way browser — the person's, never yours): ${t.id} stays for the person to save by hand`
|
package/dist/commands/setup.js
CHANGED
|
@@ -509,10 +509,10 @@ function diagnoseInto(ctx, checks, t, add, progress) {
|
|
|
509
509
|
else
|
|
510
510
|
add("browser", "ok", t("ui.doc.browser.archives.ok", { names }));
|
|
511
511
|
}
|
|
512
|
-
// The desktop apps' own browser, preview and computer use (Claude's, ChatGPT's/Codex's):
|
|
513
|
-
//
|
|
512
|
+
// The desktop apps' own browser, preview and computer use (Claude's, ChatGPT's/Codex's): nothing switched off, strom
|
|
513
|
+
// neither watches nor recommends them — said where those agents are here; it watches Claude in Chrome alone
|
|
514
514
|
if ((found.includes("claude") || found.includes("codex")) && !ctx.archiveHere())
|
|
515
|
-
add("desktop", "ok", t("ui.doc.desktop.
|
|
515
|
+
add("desktop", "ok", t("ui.doc.desktop.unwatched"));
|
|
516
516
|
// For a person: the shortcut on the desktop, the Strom app.
|
|
517
517
|
const desktop = desktopDir(ctx.env);
|
|
518
518
|
const shortcut = [`${shortcutName(lang)}.command`, `${shortcutName(lang)}.lnk`, `${shortcutName(lang)}.cmd`, "strom-research.desktop"].some((f) => fs.existsSync(path.join(desktop, f)));
|
package/dist/commands/web.js
CHANGED
|
@@ -37,7 +37,8 @@ register({
|
|
|
37
37
|
"--check <url> --browser: the same for your browser (Claude in Chrome, another agent's browser): an archive only a\n" +
|
|
38
38
|
"person's browser goes to opens to Claude in Chrome within its level and the person's permission \"through the\n" +
|
|
39
39
|
"browser\", at a person's pace (about 10 s between pages unless the person set another, or its own slower one) —\n" +
|
|
40
|
-
"never to another agent's browser or computer use (strom keeps no hook before them
|
|
40
|
+
"never of its own accord to another agent's browser or computer use (strom keeps no hook before them, recommends\n" +
|
|
41
|
+
"none; only the person's explicit request makes it the person's choice): the person saves its images.\n" +
|
|
41
42
|
"An agent without strom's hook (Codex, OpenCode, Antigravity) runs it before its own web fetch of an archive's site\n" +
|
|
42
43
|
"and keeps to its answer.\n" +
|
|
43
44
|
"Claude in Chrome: the same hook runs before its navigate — counted, paced and refused with the web fetches of the\n" +
|
|
@@ -148,8 +149,9 @@ function checkUrl(ctx, url, browser = false) {
|
|
|
148
149
|
const gateOf = browser ? browserGate : webGate;
|
|
149
150
|
let g = gateOf({ env: ctx.env, ...(tree ? { tree } : {}), url: u.href, shared, ...(session?.task ? { task: session.task } : {}) });
|
|
150
151
|
// an agent whose browser strom does not keep (no hook of strom's before a page): an archive only a person's browser
|
|
151
|
-
// goes to
|
|
152
|
-
// decision, 4 November 2026)
|
|
152
|
+
// goes to not through its browser or computer use on strom's word, whatever the person allowed — the person's hand
|
|
153
|
+
// (Milan's decision, 4 November 2026); nothing is switched off: the person's explicit request is the person's choice
|
|
154
|
+
// (5 November 2026, ON_REQUEST)
|
|
153
155
|
const runner = detectAgent(ctx.env);
|
|
154
156
|
if (runner && !browserKept(runner) && g.level?.browserOnly && (g.allow || g.why === "browser")) {
|
|
155
157
|
const book = bookOn(tree, session?.task, g.host, u.href);
|
package/dist/core/browser.js
CHANGED
|
@@ -46,30 +46,14 @@ export const CHROME_PAGE_TOOLS = ["computer", "find", "read_page", "get_page_tex
|
|
|
46
46
|
export const CHROME_HOOK_MATCHER = `${CHROME_TOOL_PREFIX}(navigate|${CHROME_PAGE_TOOLS.join("|")})`;
|
|
47
47
|
/** Never: a file of this computer uploaded to a web site, the user's own browser shortcuts, a batch the rules cannot see into. */
|
|
48
48
|
export const CHROME_DENY = ["file_upload", "upload_image", "shortcuts_execute", "gif_creator", "browser_batch"].map((t) => `mcp__claude-in-chrome__${t}`);
|
|
49
|
-
/**
|
|
50
|
-
* Never in a research: the browser built into Claude's desktop app, its preview pane and its computer use — also
|
|
51
|
-
* through a device linked to a session in the cloud — the tools that turn them on, and Claude in Chrome under the name
|
|
52
|
-
* the desktop app may give it (Claude_in_Chrome; the same app also gives it as claude-in-chrome, the name strom keeps).
|
|
53
|
-
* strom keeps no hook before them (its hook watches mcp__claude-in-chrome__ alone), so an archive's terms, robots.txt
|
|
54
|
-
* and pace could not be kept there. A rule of a server's name alone covers each of its tools.
|
|
55
|
-
*/
|
|
56
|
-
export const DESKTOP_BROWSER_DENY = [
|
|
57
|
-
"mcp__Claude_Browser",
|
|
58
|
-
"mcp__Claude_Preview",
|
|
59
|
-
"mcp__Claude_in_Chrome",
|
|
60
|
-
"mcp__computer-use",
|
|
61
|
-
"mcp__remote-devices",
|
|
62
|
-
"enable__mcp__remote-devices__Claude_Browser",
|
|
63
|
-
"enable__mcp__remote-devices__computer",
|
|
64
|
-
];
|
|
65
49
|
/**
|
|
66
50
|
* Codex's browser and computer use: the MCP servers its desktop app (ChatGPT, Codex) adds — node_repl runs its in-app
|
|
67
|
-
* browser and its Chrome extension, cua_repl (the plugin unified-computer-use) and computer-use its computer use
|
|
68
|
-
*
|
|
69
|
-
*
|
|
51
|
+
* browser and its Chrome extension, cua_repl (the plugin unified-computer-use) and computer-use its computer use. They
|
|
52
|
+
* run JavaScript a hook could not read an address from, so strom keeps no watch before them and recommends none of
|
|
53
|
+
* them; nothing of them is switched off in a research (the person's choice, Milan 5 November 2026) — only a run
|
|
54
|
+
* without the person's add-ons (agent.addons off) goes without them, as without the rest (runners/codex.ts).
|
|
70
55
|
*/
|
|
71
56
|
export const CODEX_BROWSER_SERVERS = ["node_repl", "cua_repl", "computer-use", "computer_use"];
|
|
72
|
-
export const CODEX_BROWSER_PLUGINS = ["browser", "chrome", "computer-use", "unified-computer-use"].map((p) => `${p}@openai-bundled`);
|
|
73
57
|
/** The permission rule of Claude in Chrome for one site. */
|
|
74
58
|
export const chromeDomain = (host) => `ClaudeInChromeDomain(${host.replace(/^\*\./, "").toLowerCase()})`;
|
|
75
59
|
/** Claude in Chrome in the Chrome Web Store: the extension Claude Code's browser tools work through. */
|
package/dist/core/browserhelp.js
CHANGED
|
@@ -11,7 +11,8 @@ import { claudeInChrome, CLAUDE_IN_CHROME_URL } from "./browser.js";
|
|
|
11
11
|
/**
|
|
12
12
|
* The agents whose browser strom keeps — its hook runs before each page and each tool on a page (count, pace, an
|
|
13
13
|
* archive only a person's browser goes to, the bridge): Claude Code's Claude in Chrome. Any other agent's browser or
|
|
14
|
-
* computer use goes unseen: never to such an archive
|
|
14
|
+
* computer use goes unseen: strom does not recommend it — never of the agent's own accord to such an archive; only the
|
|
15
|
+
* person's explicit request makes it the person's choice (ON_REQUEST).
|
|
15
16
|
*/
|
|
16
17
|
export const GUARDED_BROWSER_AGENTS = ["claude"];
|
|
17
18
|
/** Whether strom keeps this agent's browser (its hooks before each page). */
|
|
@@ -84,13 +85,18 @@ export function agentBrowserAdvice(env, agent, a, task = "T…", book = "B…",
|
|
|
84
85
|
const wait = withWait ? `: strom task wait ${task} --images ${book}:<numbers> --on "<the book, its link, which images — impersonal, in the research language>"` : "";
|
|
85
86
|
const s = browserState(env, agent);
|
|
86
87
|
if (s.state === "agent-without-browser")
|
|
87
|
-
return `strom does not keep your browser or computer use (no hook of strom's before a page)
|
|
88
|
+
return `strom does not keep your browser or computer use (no hook of strom's before a page) and does not recommend them: not of your own accord for ${a.title ?? a.host} — the person saves the images by hand${wait}. ${ON_REQUEST} ${tellClaude}`;
|
|
88
89
|
if (s.state === "no-extension")
|
|
89
90
|
return `the Claude in Chrome extension is in no browser here — the person saves the images by hand${wait}. Tell the user once: with the extension (${s.url}) and the permission "through the browser" the agent would save them itself.`;
|
|
90
91
|
if (!a.permitted)
|
|
91
92
|
return `your browser goes there only with the person's permission "through the browser" (strom allow archive ${a.host} --way browser — the person's, never yours); until then the person saves the images by hand${wait}.`;
|
|
92
93
|
return `through your browser (Claude in Chrome), one image at a time at a person's pace: strom media save ${task} --image <n> --at <the archive's page of that image> gives the script that saves it in your tab, strom media add --inbox --waiting takes it; else the person saves them by hand${wait}.`;
|
|
93
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* A browser or computer use strom does not keep, at an archive only a person's browser goes to: never of the agent's own
|
|
97
|
+
* accord — but nothing is switched off, and the person who asks for it explicitly chooses it (Milan, 5 November 2026).
|
|
98
|
+
*/
|
|
99
|
+
export const ON_REQUEST = "Only if the person explicitly asks you to use them there: the person's choice — say in one sentence that strom does not watch that way and what the archive's terms say; never a way round them, never a check whether a person is there.";
|
|
94
100
|
const tellClaude = "Tell the user once: with Claude Code and the Claude in Chrome extension the agent would save them itself (strom agents use claude).";
|
|
95
101
|
/** Whether the agent's browser could ever fetch images of this archive (the person's "through the browser" would open it). */
|
|
96
102
|
export function browserHelps(a) {
|
|
@@ -107,7 +113,7 @@ export function browserAdviceFor(env, agent, a, task, book) {
|
|
|
107
113
|
if (!agent || !a.browserOnly)
|
|
108
114
|
return undefined;
|
|
109
115
|
if (!browserHelps(a))
|
|
110
|
-
return browserKept(agent) ? undefined :
|
|
116
|
+
return browserKept(agent) ? undefined : `strom does not keep your browser or computer use and does not recommend them: not of your own accord there. ${ON_REQUEST}`;
|
|
111
117
|
return agentBrowserAdvice(env, agent, { host: a.host, ...(a.title ? { title: a.title } : {}), permitted: a.permission === "browser" }, task, book, false);
|
|
112
118
|
}
|
|
113
119
|
/**
|
|
@@ -115,7 +121,7 @@ export function browserAdviceFor(env, agent, a, task, book) {
|
|
|
115
121
|
* fetch and its browser alike, whatever the person allowed: the person saves the images by hand.
|
|
116
122
|
*/
|
|
117
123
|
export function withoutBrowserReason(a, name, task, book, otherWay) {
|
|
118
|
-
return (`strom: ${name} lets automated tools in only through a person's browser, and strom does not keep your browser or computer use (no hook of strom's before a page)
|
|
124
|
+
return (`strom: ${name} lets automated tools in only through a person's browser, and strom does not keep your browser or computer use (no hook of strom's before a page) and does not recommend them: not of your own accord for it, nor your web fetch. ${ON_REQUEST} ` +
|
|
119
125
|
`The person saves what is needed by hand: strom task wait ${task ?? "T…"} --images ${book}:<numbers> --on "<the book, its link, which images — impersonal, in the research language>" (strom makes the inbox folder they go into; saved there, they bring the task back by themselves). ` +
|
|
120
126
|
`${browserHelps(a) ? `${tellClaude} ` : ""}${otherWay}`);
|
|
121
127
|
}
|
package/dist/core/tree.js
CHANGED
|
@@ -31,7 +31,7 @@ export const TREE_FILE = "strom.json";
|
|
|
31
31
|
export const SEAL_FOREIGN = "seal.foreign";
|
|
32
32
|
// between releases the candidate being made (a bridge run from the sources says what it is: the Strom app goes by it);
|
|
33
33
|
// at a release the release's own (package.json)
|
|
34
|
-
export const VERSION = "1.27.0-beta.
|
|
34
|
+
export const VERSION = "1.27.0-beta.3";
|
|
35
35
|
const GITIGNORE = `# Strom Research — local state and large files are not versioned
|
|
36
36
|
.strom/
|
|
37
37
|
/media/
|
package/dist/runners/codex.js
CHANGED
|
@@ -62,7 +62,7 @@ export const CODEX_CLEAN = ["-c", "features.plugins=false", "-c", "features.apps
|
|
|
62
62
|
* its in-app browser and Chrome extension — and `computer-use`), off with the user's add-ons: strom keeps no hook before
|
|
63
63
|
* them (an archive only a person's browser goes to stays the person's). Only those the config names: a server it does
|
|
64
64
|
* not name, switched off on the command line, stops Codex ("invalid transport", checked with 0.155.1). Read only.
|
|
65
|
-
*
|
|
65
|
+
* With the user's add-ons (a conversation, a run with agent.addons on) they stay as the user has them.
|
|
66
66
|
*/
|
|
67
67
|
export function codexBrowserOff(env) {
|
|
68
68
|
if (!env)
|