OpenAI native web search extension for the pi coding agent.
This package is the standalone extraction of senpi's former builtin openai-web-search extension.
The extension does not register a new local tool. It intercepts OpenAI Responses-family requests and ensures native web search is available by injecting { type: "web_search" } when absent.
| Case | Result |
|---|---|
API is openai-responses or azure-openai-responses and no native web search tool exists |
injects { type: "web_search" } |
Existing native web_search or web_search_preview tool exists |
preserves it (no duplication) |
Function variant named web_search is present |
strips function variant and keeps native variant |
| Non-Responses API payload | leaves payload unchanged |
It also appends a system-prompt section for Responses sessions indicating native web_search availability.
The package targets the pi coding agent. Pi loads extensions from ~/.pi/agent/extensions/, project .pi/extensions/, or via the --extension / -e CLI flag.
# From npm (once published)
pi install npm:pi-openai-web-search
# From git
pi install git:github.com/code-yeongyu/pi-openai-web-search
# Manual placement
git clone https://github.com/code-yeongyu/pi-openai-web-search ~/.pi/agent/extensions/pi-openai-web-search
cd ~/.pi/agent/extensions/pi-openai-web-search && npm install
# Dev / one-shot test
pi -e /path/to/pi-openai-web-search/src/index.tsAfter installation, restart pi or run /reload inside an interactive session.
npm install
npm test
npm run typecheck
npm run check
pi -e ./src/index.tsThe test suite uses vitest. TypeScript is strict, Node-only, and uses ESM imports with .js suffixes.
Ported from packages/coding-agent/src/core/extensions/builtin/openai-web-search/index.ts in code-yeongyu/senpi-mono.
MIT.
- senpi — the fork/runtime these extensions are extracted from.
- Ultraworkers Discord — community link from the senpi README.
- Dori — the product powered by senpi under the hood.