Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

[Bug]: `bun:semver` and `bun-pty` imports break plugin loading on OpenCode 1.14.x (Node ESM plugin host)

Aperta
#36 4 commenti 0 reazioni 1 assegnatario Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@shekohex ci sta già lavorando.

Dal 5/5/2026.

Valutazione

Questa issue non è ancora stata valutata.

Descrizione

enhancement help wanted

Summary

[email protected] fails to load on OpenCode 1.14.x (and likely all OpenCode versions since ~1.4.x) because the compiled dist/src/plugin/pty/manager.js imports bun:semver and bun-pty/package.json. OpenCode's plugin host switched from Bun to Node ESM (anomalyco/opencode#18308, merged 2026-04-01), so these Bun-only imports now throw Cannot find package 'bun' at plugin load time.

This is related to but distinct from #7 (Windows + bun-pty GLIBC issue). On macOS the failure happens earlier — the plugin never gets past module resolution because bun:semver isn't a real npm package.

Error in OpenCode log

ERROR 2026-05-05T08:35:35 service=plugin path=opencode-pty@latest
  target=file:///Users/.../.cache/opencode/packages/opencode-pty@latest/node_modules/opencode-pty/dist/index.js
  error=Cannot find package 'bun' imported from
        /Users/.../.cache/opencode/packages/opencode-pty@latest/node_modules/opencode-pty/dist/src/plugin/pty/manager.js
  failed to load plugin

This fires on every workspace bootstrap — for users with multiple projects in the OpenCode sidebar, this means a stack of error toasts + chimes on every cold start.

Reproduction

npm pack [email protected]
tar -xzf opencode-pty-0.3.4.tgz
head -5 package/dist/src/plugin/pty/manager.js
# import { semver } from 'bun';
# import { Terminal } from 'bun-pty';
# import { version as bunPtyVersion } from 'bun-pty/package.json';
# import { NotificationManager } from "./notification-manager.js";
# ...
node -e "import('./package/dist/index.js').catch(e=>console.error(e.message))"
# Cannot find package 'bun' imported from /.../dist/src/plugin/pty/manager.js

Why this is now broken

OpenCode 1.4.x+ replaced the BunProc plugin runtime with @npmcli/arborist + native Node import() (anomalyco/opencode#18308). The Node loader doesn't ship bun:* virtual modules and doesn't have a bun-pty peer package available.

PR #27 ("Ship pre-compiled JS to avoid transpilation cost") helped reduce on-the-fly Bun work but the runtime imports still target Bun's standard library and bun-pty's native .node bindings.

Suggested fix (high-level — likely needs a real refactor)

Replace Bun-specific dependencies with Node-compatible alternatives:

  1. bun:semver → semver (npm). One-line swap.
  2. bun-pty → @lydell/node-pty or the upstream node-pty. OpenCode itself already ships @lydell/node-pty-darwin-arm64 in its app bundle, so the Node ecosystem is the natural target.
  3. Either:
    • Maintain dual support (detect Bun vs Node at runtime and pick the impl), or
    • Drop Bun support and target Node ESM only — which is what OpenCode has effectively already done.

Open question: is there demand to keep Bun-only operation, or can the plugin become Node-first now that OpenCode is Node-based?

Environment

  • OpenCode: 1.14.37 (Electron 41 / Node 24, macOS arm64)
  • Plugin: [email protected] (latest)
  • macOS 26.4.1 arm64
  • Plugin declared globally in ~/.config/opencode/opencode.json "plugin" array; fails on every workspace bootstrap.

References

  • Related: shekohex/opencode-pty#7 (Windows startup crash, also bun-pty-driven)
  • Upstream loader change: anomalyco/opencode#18308 ("refactor: replace BunProc with Npm module using @npmcli/arborist")
  • Related upstream issues mentioning Bun-only plugins breaking: anomalyco/opencode#22045, anomalyco/opencode#13282
Lingua principale
TypeScript
Stelle
597
Fork
65
Merge medio
1g 20h
PR unite (30g)
3

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di shekohex/opencode-pty

Tutte le issue di shekohex/opencode-pty

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.