pi-terminal-browser-search

Chrome-first /search command extension package for Pi Coding Agent

Package details

extension

Install pi-terminal-browser-search from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:pi-terminal-browser-search
Package
pi-terminal-browser-search
Version
0.1.0
Published
May 5, 2026
Downloads
not available
Author
saba_burduli2
License
MIT
Types
extension
Size
32.1 KB
Dependencies
0 dependencies · 0 peers
Pi manifest JSON
{
  "extensions": [
    "./.pi/extensions/terminal-browser-search/src/pi-extension.ts"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

Terminal Browser Search Extension

Chrome-first Pi Harness extension that opens Google search results directly from /search <query> with minimal, terminal-silent UX.

Overview

This extension is designed for fast action, not conversational search explanations. When a user runs /search dotnet docs, Pi immediately launches Google Chrome with an encoded Google query URL.

Primary behavior:

  • Accept user query input from /search <query>
  • Sanitize and normalize query text
  • Encode query safely
  • Enforce trusted URL policy
  • Open Chrome via system command on macOS
  • Keep command execution silent from the user perspective

Features

  • Native Pi extension command: /search <query>
  • Dynamic query support (no hardcoded terms)
  • Trusted host enforcement (https://www.google.com/search?q=...)
  • Config-driven dry-run and auto-open toggles
  • Dynamic context hook (beforeTurn) for search intent biasing
  • Optional compaction strategy preserving command/query relevance
  • Extensible launcher abstraction for future browsers

How It Works

Runtime flow:

  1. Pi command /search <query> is handled by extension command registration in src/pi-extension.ts.
  2. Query is parsed and sanitized by CommandParser.
  3. URL is built by QueryEncoder.
  4. URL is validated by UrlPolicy.
  5. Launcher factory selects browser launcher (Chrome default).
  6. open -a "Google Chrome" "<url>" executes.

Command

  • /search <query>

Examples:

  • /search dotnet docs
  • /search openai codex prompt templates

Configuration

Config file:

  • .pi/terminal-browser-search.config.json

Relevant settings:

  • autoOpenBrowser (bool): open browser automatically
  • dryRun (bool): build URL without opening browser
  • defaultBrowser (chrome/firefox/safari)
  • searchEngine.baseUrl (default Google search)
  • searchEngine.queryParam (default q)
  • searchEngine.allowedHosts (allowlist)

Environment overrides:

  • PI_SEARCH_AUTO_OPEN
  • PI_SEARCH_DRY_RUN
  • PI_SEARCH_INCOGNITO

Project Structure

terminal-browser-search-extension/
├── AGENTS.md
├── LICENSE
├── README.md
└── .pi/
    ├── SYSTEM.md
    ├── terminal-browser-search.config.json
    └── extensions/
        └── terminal-browser-search/
            ├── extension.json
            ├── package.json
            ├── tsconfig.json
            ├── bin/search.js
            ├── src/pi-extension.ts
            ├── src/SearchRuntime.ts
            ├── src/CommandParser.ts
            ├── src/QueryEncoder.ts
            ├── src/UrlPolicy.ts
            ├── src/BrowserLauncherFactory.ts
            ├── src/launchers/MacOSBrowserLauncher.ts
            ├── src/DynamicContextHook.ts
            ├── src/CompactionStrategy.ts
            └── src/hooks.ts

Install (Local Repo)

From repo root:

cd .pi/extensions/terminal-browser-search
npm install
npm run build

Then reload Pi resources:

/reload

Install (npm Package)

After package publication:

pi install npm:pi-terminal-browser-search

Then reload resources:

/reload

Development

Build:

cd .pi/extensions/terminal-browser-search
npm run build

Pack validation:

npm run pack:check

Security Notes

  • Only trusted search URLs are opened.
  • Query input is sanitized before URL construction.
  • Invalid or empty queries are rejected.
  • No hardcoded token or secret handling in runtime flow.

Compatibility

  • Platform: macOS launcher path implemented (open -a "Google Chrome" ...)
  • Node.js: >=20

Developer

  • Saba Burduli

License

This project is licensed under the MIT License. See LICENSE.

Official Package Listing

To request inclusion in Pi's curated/official package ecosystem:

  1. Publish package to npm (pi-terminal-browser-search)
  2. Open submission request in badlogic/pi-mono
  3. Include install command, repository URL, safety model, and demo evidence

Detailed checklist: