code-yeongyu / code-yeongyu/senpi
@google/genai missing from bundledDependencies — every `google` provider model fails with "Cannot find package '@google/genai'"
- Dominant language
- TypeScript
- Stars
- 429
- Forks
- 98
- Avg merge
- 5h 3m
- Merged PRs (30d)
- 526
Description
## Summary
Every `google` provider model is unusable in `@code-yeongyu/senpi@2026.8.19`.
The bundled `@earendil-works/pi-ai` (`npm:@code-yeongyu/senpi-ai@2026.8.19`) declares `@google/genai@2.13.0` as a hard `dependencies` entry, but `@google/genai` is **not** in senpi's `bundledDependencies` (240 entries) and **not** in senpi's own `dependencies`. It is therefore absent from the published tarball, and because it is declared only inside a *bundled* package's manifest, npm never fetches it — a clean reinstall reproduces the identical broken tree.
15 of pi-ai's 16 dependencies are bundled correctly. `@google/genai` is the single omission.
## Reproduce
```bash
npm i -g omo-ai@beta # omo-ai@5.0.0-0.beta.12 -> pins @code-yeongyu/senpi@2026.8.19
omo -p --model google/gemini-3.6-flash --no-tools "Reply with exactly: PONG"
```
Actual:
```
Cannot find package '@google/genai' imported from
.../@code-yeongyu/senpi/node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.js
```
Expected: the model responds.
This is not an auth problem — `omo auth check --provider google` already returns `{"status":"ready"}` with an API-key credential in `auth.json`, and no request ever reaches Google.
## Evidence (published tarball, not a local tree)
```bash
npm pack @code-yeongyu/senpi@2026.8.19
tar -tzf code-yeongyu-senpi-2026.8.19.tgz | grep -c 'node_modules/@google/genai/'
# -> 0
tar -tzf code-yeongyu-senpi-2026.8.19.tgz \
| grep -oE 'package/node_modules/(@[^/]+/)?[^/]+/package.json' | wc -l
# -> 240
```
`package.json` of the published `@code-yeongyu/senpi@2026.8.19`:
| check | result |
|---|---|
| `bundledDependencies.length` | `240` |
| `bundledDependencies.includes("@google/genai")` | `false` |
| `dependencies["@google/genai"]` | absent |
| `dependencies["@earendil-works/pi-ai"]` | `npm:@code-yeongyu/senpi-ai@2026.8.19` |
The bundled consumer does declare it:
```bash
npm view @code-yeongyu/senpi-ai@2026.8.19 dependencies --json
# "@google/genai": "2.13.0"
```
Cross-checking pi-ai's 16 dependencies against senpi's `bundledDependencies`:
- **In the bundle (15):** `@anthropic-ai/sdk`, `@aws-sdk/client-bedrock-runtime`, `@bufbuild/protobuf`, `@earendil-works/pi-telemetry`, `@mistralai/mistralai`, `@smithy/node-http-handler`, `@smithy/types`, `chalk`, `http-proxy-agent`, `https-proxy-agent`, `openai`, `partial-json`, `proxy-from-env`, `typebox`, `yaml`
- **Not in the bundle (1):** `@google/genai`
All 240 bundled entries are present on disk after install (0 missing), so the bundle is otherwise intact.
## Why reinstalling does not help
```bash
npm uninstall -g omo-ai && npm i -g omo-ai@beta
```
produces the same tree. Since `@google/genai` appears in no manifest npm reads during resolution, there is nothing for npm to install.
## Workaround
Drop it into senpi's bundled `node_modules` out of band, nesting its dependency closure so the existing bundle is left untouched:
```bash
SENPI="$(npm root -g)/omo-ai/node_modules/@code-yeongyu/senpi/node_modules"
mkdir -p /tmp/genai && cd /tmp/genai && npm init -y >/dev/null && npm i @google/genai@2.13.0
mkdir -p "$SENPI/@google"
cp -r node_modules/@google/genai "$SENPI/@google/genai"
mkdir -p "$SENPI/@google/genai/node_modules"
for d in $(ls -A node_modules | grep -v '^@google$'); do
cp -r "node_modules/$d" "$SENPI/@google/genai/node_modules/$d"
done
```
After this, `google/gemini-3.6-flash` responds normally. The patch is lost on the next update.
## Suggested fix
Include `@google/genai` in the bundling input so it lands in `bundledDependencies`. Since the other 15 pi-ai dependencies are bundled, this looks like a single miss rather than a systematic gap — but it may be worth asserting in CI that every dependency of each bundled workspace package is itself bundled, so a missing entry fails the release instead of shipping a dead provider.
## Notes
Unrelated to the fix, but observed while diagnosing: the catalog still advertises `google/gemini-2.5-flash`, and Google now rejects it for new users with `404 NOT_FOUND — "This model models/gemini-2.5-flash is no longer available to new users. Please update your code to use models/gemini-3.6-flash"`.
## Environment
- `omo-ai@5.0.0-0.beta.12` (beta tag), engine `@code-yeongyu/senpi@2026.8.19`
- `@earendil-works/pi-ai` = `@code-yeongyu/senpi-ai@2026.8.19`
- Node `v24.19.0`, npm `11.17.0`
- Linux x64 (Ubuntu, glibc)
Contributor guide
Research direction
Read the package.json bundling configuration and inspect how bundledDependencies is generated. Reproduce with npm pack, then verify that the published tarball contains @google/genai and that a clean install lets the Google provider respond.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- build-system, release
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 78/100