StdioTransport.connect() unconditionally passed detached:true to Bun.spawn. POSIX needs this so terminal job-control signals (SIGTSTP, SIGTTIN) cannot stop stdio servers such as chrome-devtools-mcp; Windows has no equivalent signals, but detached:true maps to CreateProcess(DETACHED_PROCESS), which strips the parent's inherited console. windowsHide:true (#3536) hides the direct child's window but nothing else — when the direct child was a hidden cmd.exe wrapper that later spawned a console grandchild (node wrapper, npx.cmd -y mcp-remote, similar nested shells) the grandchild allocated a brand-new visible conhost and its stdout no longer routed through OMP's pipe. The proxy terminal reported the MCP bridge was healthy while OMP timed out waiting for the MCP initialize response. Move detached into StdioSpawnCommand alongside windowsHide so every platform-derived spawn flag is resolved in one place: resolveStdioSpawnCommand returns detached:false on every Windows return shape (direct .exe, cmd.exe-wrapped batch/unresolvable command, npm cmd-shim launched through node) and detached:true on POSIX. connect() consumes the resolved flag. Add a regression test for the reporter's exact shape (cmd.exe /C node wrapper) and assert detached on every existing Windows / POSIX case so the contract cannot regress per-path. Fixes #3544
@oh-my-pi/pi-coding-agent
Core implementation package for the omp coding agent in the oh-my-pi monorepo.
For installation, setup, provider configuration, model roles, slash commands, and full CLI reference, see:
Package-specific references:
Memory backends
The agent supports three mutually-exclusive memory backends, selected via the memory.backend setting (Settings → Memory tab, or ~/.omp/config.yml):
off(default) — no memory subsystem runs.local— existing rollout-summarisation pipeline; writesmemory_summary.mdand consolidated artifacts under the agent dir.hindsight— talks to a Hindsight server (Cloud or self-hosted Docker), retains transcripts every Nth user turn, recalls memories on the first turn of a session, and exposesretain,recall, andreflect.
Hindsight quickstart
- Run a Hindsight server (Cloud or
docker run -p 8888:8888 ghcr.io/vectorize-io/hindsight:latest). - Set
memory.backend = "hindsight"andhindsight.apiUrl = "http://localhost:8888"(or your Cloud URL). - Optional environment overrides (env wins over settings):
HINDSIGHT_API_URL,HINDSIGHT_API_TOKEN— connectionHINDSIGHT_BANK_ID,HINDSIGHT_DYNAMIC_BANK_ID,HINDSIGHT_AGENT_NAME— bank addressingHINDSIGHT_AUTO_RECALL,HINDSIGHT_AUTO_RETAIN,HINDSIGHT_RETAIN_MODE— lifecycleHINDSIGHT_RECALL_BUDGET,HINDSIGHT_RECALL_MAX_TOKENS— recall sizingHINDSIGHT_BANK_MISSION,HINDSIGHT_DEBUG
Switching backends mid-session is honoured on the next system-prompt rebuild and the next /memory slash command. Existing users with memories.enabled = true|false are migrated to memory.backend = "local"|"off" exactly once on first launch.