Skip to content

fix: handle hook stdin EPIPE#105

Merged
VickyXAI merged 1 commit into
BlockRunAI:mainfrom
0xCheetah1:fix/hook-stdin-epipe
Jul 18, 2026
Merged

fix: handle hook stdin EPIPE#105
VickyXAI merged 1 commit into
BlockRunAI:mainfrom
0xCheetah1:fix/hook-stdin-epipe

Conversation

@0xCheetah1

Copy link
Copy Markdown
Contributor

Summary

  • handle hook child stdin EPIPE through the stream error event
  • continue failing open for early-exiting hook handlers
  • warn on non-EPIPE stdin write failures

Verification

  • npm run build
  • npm test

@VickyXAI
VickyXAI merged commit e10a7f1 into BlockRunAI:main Jul 18, 2026
2 checks passed
VickyXAI pushed a commit that referenced this pull request Jul 18, 2026
Two community PRs from @0xCheetah1:
- #106: Ctrl+A expands the /model picker to the full live gateway catalog,
  grouped by provider and ranked by version/tier; Esc no longer quits an
  idle session (Ctrl+C / /exit do); bare 'claude' shortcut → Opus.
- #105: hook child stdin EPIPE now handled via the stream error event
  (async EPIPE the old sync try/catch missed — latent crash risk); EPIPE
  ignored (fail-open), other write errors logged.

625 tests pass.
VickyXAI pushed a commit that referenced this pull request Jul 20, 2026
Adds the gateway's Qwen flagship — $1.475/$4.425 per 1M tokens, 1M context,
65K max output — to pricing, the /model picker, and the provider grouping.

Rebased onto main (the PR branch predated #105/#106 and would have reverted
Sonnet 5 → 4.6, GPT-5.6 Sol → 5.5, and deleted moonshot/kimi-k3), then
carried through every table keyed on a model id, each of which defaults
silently when an entry is missing:

- Shortcut is `qwen-max`, not bare `qwen`. `qwen` is a long-standing alias
  for the FREE nvidia/qwen3-next default and repointing it at a paid model
  both duplicated an object key (TS1117) and moved users onto paid inference
  without consent. test/local.mjs pins the free aliases at $0.
- MODEL_CONTEXT_WINDOWS: 1M. Without it the generic `qwen` fallback returns
  128k and compacts ~8x too early.
- MODEL_MAX_OUTPUT: 65_536. Without it getMaxOutputTokens() returns the 16K
  default, and the max_tokens recovery path in loop.ts escalates to 65_536
  only to be clamped straight back — truncating long answers and burning
  USDC on continuation calls that can never succeed. Same gap the kimi-k3
  entry above it documents.
- getModelGuidance(): the medium branch's bare `qwen` substring predates paid
  Qwen SKUs and shadowed the strong branch, giving a premium flagship
  guidance tuned for Haiku/Flash. Free nvidia qwen SKUs stay where they were.
- PROVIDER_ORDER / PROVIDER_LABELS: the expanded picker (#106) sorted Qwen
  last under a raw lowercase heading.

Three tests pin the rates, both token tables, the guidance bucket, the paid
aliases, and the free-alias-stays-free guardrail.

Pre-existing gaps found during review, left for follow-up: the proxy's
hardcoded modelCap ladder (src/proxy/server.ts:387) ignores MODEL_MAX_OUTPUT
for every model; 5 picker rows still fall through the 128k context default
and 11 through the 16K output default.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants