{"id":50055965,"url":"https://github.com/code-yeongyu/pi-google-google-search","last_synced_at":"2026-05-21T13:14:00.812Z","repository":{"id":357735866,"uuid":"1236229681","full_name":"code-yeongyu/pi-google-google-search","owner":"code-yeongyu","description":"Google native search policy extension for the pi coding agent. Ensures native googleSearch tools are present on Google API payloads by default and appends Google Search guidance to the system prompt.","archived":false,"fork":false,"pushed_at":"2026-05-14T03:12:11.000Z","size":51,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-14T04:41:35.051Z","etag":null,"topics":["coding-agent","gemini","google","pi","pi-coding-agent","pi-extension","pi-mono","search","typescript"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/code-yeongyu.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-12T04:08:54.000Z","updated_at":"2026-05-14T03:12:14.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/code-yeongyu/pi-google-google-search","commit_stats":null,"previous_names":["code-yeongyu/pi-google-google-search"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/code-yeongyu/pi-google-google-search","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code-yeongyu%2Fpi-google-google-search","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code-yeongyu%2Fpi-google-google-search/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code-yeongyu%2Fpi-google-google-search/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code-yeongyu%2Fpi-google-google-search/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/code-yeongyu","download_url":"https://codeload.github.com/code-yeongyu/pi-google-google-search/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/code-yeongyu%2Fpi-google-google-search/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33301809,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-21T12:23:38.849Z","status":"ssl_error","status_checked_at":"2026-05-21T12:22:11.673Z","response_time":62,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["coding-agent","gemini","google","pi","pi-coding-agent","pi-extension","pi-mono","search","typescript"],"created_at":"2026-05-21T13:13:57.990Z","updated_at":"2026-05-21T13:14:00.807Z","avatar_url":"https://github.com/code-yeongyu.png","language":"TypeScript","funding_links":[],"categories":["Extensions"],"sub_categories":[],"readme":"# pi-google-google-search\n\n[![ci](https://github.com/code-yeongyu/pi-google-google-search/actions/workflows/ci.yml/badge.svg)](https://github.com/code-yeongyu/pi-google-google-search/actions/workflows/ci.yml) [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n\nGoogle native search extension for the [pi coding agent](https://github.com/badlogic/pi-mono/tree/main/packages/coding-agent).\n\nThis package is the standalone extraction of senpi's former builtin `google-google-search` extension.\n\n## Behavior\n\nThe extension does not register a new tool. It intercepts Google provider requests before they are sent and ensures a native `googleSearch` tool is present for `google-generative-ai` / `google-vertex` payloads when Google search is enabled (default-on).\n\n| Case | Result |\n|------|--------|\n| API is `google-generative-ai` or `google-vertex`, `PI_GOOGLE_GOOGLE_SEARCH` is unset/empty/truthy, and no Tool object has a `googleSearch` key | injects a new Tool entry `{ googleSearch: {} }` |\n| Existing Tool object already has `googleSearch` key (any value) | preserves caller payload without duplication or overwrite |\n| Existing Tool object has only `functionDeclarations` | keeps that object and adds separate `{ googleSearch: {} }` entry |\n| `PI_GOOGLE_GOOGLE_SEARCH` is falsy (`0`, `false`, `no`, `off`) | no-op |\n| API is non-Google | no-op |\n\nTruthy values for `PI_GOOGLE_GOOGLE_SEARCH` are: `1`, `true`, `yes`, `on` (case-insensitive, surrounding whitespace allowed). Unknown values fall back to enabled to preserve default-on behavior.\n\nIt also appends a system-prompt section for Google sessions indicating native `google_search` availability when enabled.\n\n## Installation\n\nThe package targets the [`pi`](https://github.com/badlogic/pi-mono/tree/main/packages/coding-agent) coding agent. Pi loads extensions from `~/.pi/agent/extensions/`, project `.pi/extensions/`, or via the `--extension` / `-e` CLI flag.\n\n```bash\n# From npm (once published)\npi install npm:pi-google-google-search\n\n# From git\npi install git:github.com/code-yeongyu/pi-google-google-search\n\n# Manual placement\ngit clone https://github.com/code-yeongyu/pi-google-google-search ~/.pi/agent/extensions/pi-google-google-search\ncd ~/.pi/agent/extensions/pi-google-google-search \u0026\u0026 npm install\n\n# Dev / one-shot test\npi -e /path/to/pi-google-google-search/src/index.ts\n```\n\nAfter installation, restart pi or run `/reload` inside an interactive session.\n\n## Development\n\n```bash\nnpm install\nnpm test\nnpm run typecheck\nnpm run check\npi -e ./src/index.ts\n```\n\nThe test suite uses vitest. TypeScript is strict, Node-only, and uses ESM imports with `.js` suffixes.\n\n## Origin\n\nPorted from `packages/coding-agent/src/core/extensions/builtin/google-google-search/index.ts` in the senpi-mono fork of pi-mono.\n\n## Related\n\n- [senpi](https://github.com/code-yeongyu/senpi) — the fork/runtime these extensions are extracted from.\n- [Ultraworkers Discord](https://discord.gg/PUwSMR9XNk) — community link from the senpi README.\n- [Dori](https://sisyphuslabs.ai) — the product powered by senpi under the hood.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcode-yeongyu%2Fpi-google-google-search","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcode-yeongyu%2Fpi-google-google-search","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcode-yeongyu%2Fpi-google-google-search/lists"}