feat: add web_fetch tool, rename to pi-web

- Rename package to @evan/pi-web (repo rename handled separately).
- Rename existing 'search' tool to 'web_search' for consistency.
- Add 'web_fetch' tool: navigates via the shared headless Firefox,
  extracts via Mozilla Readability, falls back to <body> when no
  article is detected, converts with Turndown. 50KB cap, 15s nav
  timeout. Description steers LLM to curl for raw/non-text content.
- Reuses the shared driver, so search + fetch share one warm browser.
This commit is contained in:
2026-05-25 11:51:46 -04:00
parent ebd7218b95
commit 67ce141b1b
5 changed files with 754 additions and 24 deletions

View File

@@ -1,8 +1,8 @@
{
"name": "@evan/pi-search",
"name": "@evan/pi-web",
"version": "0.1.0",
"private": true,
"description": "Web search tool for pi: Kagi (session token via headless Firefox) or SearXNG (JSON API).",
"description": "Web tools for pi: web_search (Kagi session token / SearXNG) and web_fetch (Readability + Turndown over headless Firefox).",
"pi": {
"extensions": [
"./index.ts"
@@ -14,12 +14,17 @@
"lint": "oxlint . --ignore-pattern=.direnv/** --ignore-pattern=node_modules/**"
},
"dependencies": {
"selenium-webdriver": "^4.43.0"
"@mozilla/readability": "^0.6.0",
"jsdom": "^29.1.1",
"selenium-webdriver": "^4.43.0",
"turndown": "^7.2.4"
},
"devDependencies": {
"@mariozechner/pi-coding-agent": "^0.72.0",
"@types/jsdom": "^28.0.3",
"@types/node": "^22.10.0",
"@types/selenium-webdriver": "^4.35.5",
"@types/turndown": "^5.0.6",
"oxlint": "^1.62.0",
"tsx": "^4.19.2",
"typebox": "^1.1.37",