- TypeScript 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| extensions/webtools | ||
| README.md | ||
pi-extensions
Pi-Extensions von Anton. Repo-Layout entspricht Pi's konventioneller Paketstruktur
(extensions/<name>/index.ts) – kein package.json/Manifest nötig.
└── extensions/
└── webtools/
├── index.ts – registriert web_search + web_extract
├── search.ts – DDG-Scrape, pro-Session-Nummerierungs-State
├── extract.ts – result_numbers → URLs → Text
├── safe-fetch.ts – SSRF-geschützter Fetch
├── html-to-text.ts – HTML → Plain Text
├── pdf.ts – best-effort PDF → Text
└── test.mts – Smoke-Test
webtools
Web-Suche und Seiten-Lesen als Pi-Tools, ohne npm-Dependencies. Zwei Tools:
web_search– DuckDuckGo-Textsuche (HTML-Endpoint, kein API-Key). Treffer werden pro Session nummeriert:[Result 1] Titel / URL / Snippet.web_extract– liest maximal 5 Seiten aus (perresult_numbersausweb_searchoder direkten URLs), HTML bzw. PDF → Plain Text, auf 12 000 Zeichen pro Seite begrenzt. SSRF-geschützter Fetch (keine privaten/localhost-Adressen, kein DNS-Rebinding, Redirects werden pro Hop neu validiert).
Das Modell übergibt bei web_extract nur result_numbers – das Zahl→URL-Mapping liegt
serverseitig in der Extension, dadurch kann das Modell keine URLs halluzinieren.
Detaillierte Doku: extensions/webtools/README.md
Installation
Option 1: Als Pi-Package via git (empfohlen):
pi install git:https://forgejo.asxh.de/antonsxh/pi-extensions
Pi findet die Extension über den konventionellen extensions/-Ordner.
Alternativ in ~/.pi/agent/settings.json eintragen (und Pi neu starten / /reload):
{
"packages": [
"git:https://forgejo.asxh.de/antonsxh/pi-extensions"
]
}
Updates: pi update --extensions.
Option 2: Projektlokal – Ordner klonen/kopieren:
cd <dein-projekt>
mkdir -p .pi/extensions
git clone https://forgejo.asxh.de/antonsxh/pi-extensions.git /tmp/pi-extensions
cp -r /tmp/pi-extensions/extensions/webtools .pi/extensions/webtools
Pi lädt .pi/extensions/*/index.ts automatisch (Projekt muss vertraut sein). Dann /reload.
Option 3: Manuell testen:
git clone https://forgejo.asxh.de/antonsxh/pi-extensions.git
pi -e ./pi-extensions/extensions/webtools/index.ts
Testen
cd extensions/webtools
npx --yes tsx test.mts # htmlToText, SSRF-Blockade, web_search, web_extract