code-yeongyu / code-yeongyu/senpi

@google/genai missing from bundledDependencies — every `google` provider model fails with "Cannot find package '@google/genai'"

Open Beginner friendly
#1,031 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.