Files
oh-my-pi/packages/utils
roboomp 7d6a5c6de0 fix(utils): normalized ptree.bytes() return type to Uint8Array
Bun's `Response(stream).bytes()` returns the raw `ArrayBuffer` once the
body arrives in more than one chunk, which happens for subprocess stdout
past ~128 KB. The public contract of `ptree.ChildProcess.bytes()` is
`Promise<Uint8Array>`, and callers — most visibly the `ssh://` read
path's `decodeUtf8Text` — rely on `Uint8Array` methods such as `.indexOf`
and `.subarray`. On larger remote text files this surfaced as:

  TypeError: bytes.indexOf is not a function

Normalize the result at the boundary: when `Response.bytes()` hands back
an `ArrayBuffer`, wrap it in a zero-copy `Uint8Array` view before
returning. Adds a regression test that drives a 256 KB stdout payload
through `ptree.spawn(...).bytes()` and asserts the contract.

Fixes #3712
2026-06-28 10:04:53 +00:00
..
2026-06-27 13:24:46 +02:00

@oh-my-pi/pi-utils

Shared utilities for oh-my-pi packages. Zero ceremony, Bun-first.

Notable modules

Module Purpose
logger Centralized logger writing to ~/.omp/logs/ with rotation (TUI-safe — never stdout)
prompt Handlebars-based prompt templating and formatting helpers
dirs Path helpers for omp config directories (~/.omp, XDG-aware on Linux)
stream readStream / readLines helpers over ReadableStream
ptree / procmgr Process trees, ChildProcess wrapper, process lifecycle management
postmortem Cleanup callbacks on exit, signals, and fatal exceptions
which $which() binary lookup with caching
fetch-retry fetch with retry/backoff policies
fs-error Errno guards (isEnoent and friends)
env / worker-host Environment plumbing and side-effect-free worker-host entry contract (workerHostEntry)
abortable / async AbortSignal-aware stream/promise helpers
peek-file Read the first N bytes of a file with pooled buffers
frontmatter, glob, mime, temp, format, color, snowflake, tab-spacing, path-tree, sanitize-text Smaller single-purpose helpers

Import from the root barrel or per-module subpaths (@oh-my-pi/pi-utils/<module>).

Install

bun add @oh-my-pi/pi-utils

Ships TypeScript source directly (no build step); requires Bun ≥ 1.3.14.

References