Skip to content

Tracking: 8 PRs ready for review (Windows / packaging / supervisor cluster) #2601

@YOMXXX

Description

@YOMXXX

TL;DR

10 self-contained PRs targeting 6 release-blocking issue clusters. Combined effect: every Windows install since v13.0.1 should boot cleanly, the worker bundle drops ~720 KB and 68 OAuth provider URLs (with zod inlined for install-fragility), the marketplace install no longer ships dead deps, a year-long PID-reuse deadlock gets a guard, and the observer death-loop (issue #2468) is closed.

Metric Value
PRs 10
Issues closed (full) 16
Issues closed (partial) 1 (#2407)
Worker bundle 3782 KB → ~3389 KB (after #2596 −720 KB + #2610 +329 KB; net −10%)
OAuth provider URLs in bundle 94 → 26
Greptile reviews 10/10 PRs; 3 already 5/5, 5 had fixup commits applied (re-review pending), 2 awaiting first pass
Author @YOMXXX

This issue exists so the PRs can be reviewed and merged together as a coordinated set without losing the cross-PR context.


PR-by-PR

PR Title Closes Greptile Δ
#2592 fix(build) add transcript-watcher.cjs build target #2450 ✅ 5/5 +83 −0
#2593 fix(chroma) escape cmd.exe metacharacters in uvx args on Windows #2585, #2591, #2495, #2429, #2405 4/5 + fixup ⏳ +22 −2
#2594 fix(mcp) replace sh launcher with cross-platform node -e #2461 3/5 + fixup ⏳ +20 −3
#2595 chore(scripts) drop sync-to-marketplace.sh + harden sync-marketplace.cjs #2570 (bash half) 3/5 + fixup ⏳ +135 −78
#2596 refactor(build) externalize better-auth from worker/server-beta bundles #2584 ✅ 5/5 + fixup ⏳ +449 −825
#2597 fix(build) populate plugin/node_modules during build #2407 (partial) 3/5 + fixup ⏳ +58 −0
#2598 fix(hooks) replace fragile $SHELL -lc PATH probe with printenv-first pattern #2589, #2588, #2461, #2439 (PATH half — see #2613) ✅ 5/5 +6 −6
#2599 fix(supervisor) make Windows captureProcessStartToken actually return a token #2578 4/5 + fixup ⏳ +225 −192
#2602 fix(observer) truncate oversized prompt fields + drop overflow from hard-stop #2468 (awaiting first pass) +269 −219
#2610 fix(build) inline zod into worker / server-beta / context-generator bundles #2437 (awaiting first pass) +713 −556

⏳ = fixup commits applied, Greptile re-review has been pending 17+ hours — may need a maintainer manual re-trigger via the Re-trigger Greptile link on each PR.


Recommended merge order

Independent (any order — no file overlap):
  ┌── #2592 transcript-watcher build target
  ├── #2593 Windows cmd.exe metacharacter escape
  ├── #2594 mcp-search node-e launcher
  ├── #2595 sync-marketplace cross-platform
  ├── #2598 hooks printenv PATH probe
  ├── #2599 Windows PID-token
  ├── #2602 observer prompt truncation + soft-overflow
  └── #2610 inline zod into worker bundle (touches scripts/build-hooks.js
            externals — coordinates with #2596 if both land same release;
            #2596 removes better-auth from externals, #2610 removes zod;
            different keys in the same array, no merge conflict)

Pair (ship in the same release cycle):
  #2596 better-auth external
      │
      └─► #2597 build install plugin/node_modules
          (without #2597, #2596 breaks the dev workflow because the
           externalized better-auth has nowhere to resolve from at runtime)

All 10 PRs are mergeable independently from a code-conflict standpoint (different files, or different functions in the same file). The #2596 / #2597 dependency is a runtime concern, not a merge-conflict one. #2596 and #2610 both edit scripts/build-hooks.js externals but in disjoint keys.


What each cluster fixes

Windows shell / hooks (5 issues, 2 PRs)

Cross-platform MCP launcher (1 issue, 1 PR)

  • fix(mcp): replace sh launcher with cross-platform node -e (closes #2461) #2594 replaces sh -c '...exec node ...' with node -e '...same logic in JS...'. Windows has no sh so the old launcher was a hard block. Fixup adds POSIX SIGTERM/SIGINT/SIGHUP forwarding + correct signal-death exit code via removeAllListeners + process.kill(self, sig) — verified with a sleep-child smoke test (launcher exits 143 when SIGTERM'd).

Packaging (4 issues, 5 PRs)

Supervisor (1 issue, 1 PR)

Observer (1 issue, 1 PR)

  • fix(observer): truncate oversized prompt fields + drop overflow from hard-stop (closes #2468) #2602 closes the observer death-loop in Observer context has no budget management: unbounded tool_output causes infinite overflow loop with data loss #2468. A 130k-char Read tool result blew the observer model's context window → SDK aborts with 'overflow'GeneratorExitHandler.isHardStopReason returns true → clearPendingForSession wipes every queued observation including the unrelated ones queued after the offending Read → new observations re-trigger the generator → cycle repeats until RestartGuard trips. The fix has two layers: (1) buildObservationPrompt() now caps each <parameters> / <outcome> field at 16k chars with a head + tail slice and an explicit <elided chars="..." /> marker the model is told to respect; (2) 'overflow' is removed from isHardStopReason(), so if a residual cause (e.g. an oversized conversation history) still trips "prompt is too long" the queued observations are preserved by the restart path instead of cleared. RestartGuard caps consecutive overflow→restart cycles so we can't loop forever.

What's intentionally NOT in this batch

Issue Why deferred
#2574 summarizer cross-session contamination Depends on observer prompt scaffolding from #2602 (the <elided/> marker + grounding hint). Will be a follow-up PR adding a post-process grounding validator (fact references must exist in source observation).
#2407 npm tarball half Solved partially in #2597 (dev workflow + marketplace path). Adding plugin/node_modules to package.json#files for the npm tarball is a separate review concern (tarball size, cross-arch publish).
#2613 nested-pipe `_P=$({...} while...)` on Win11
#2600 hooks tr ' ' ':' corruption on Windows paths with spaces Pre-existing concern surfaced by Greptile on #2598; spans hooks.json and codex-hooks.json so split out into its own issue.
D series (#2542 argon2id, #2561 postgres, #2573 server CLI, #2559 docker) Review-only on existing PRs from @mguttmann — no new code from this fork.
#2435 OpenCode integration Existing PRs #2503 / #2557 already cover it.

Risk summary

Risk surface Mitigation
Windows-only changes (#2593, #2599, parts of #2594/#2598) Every Windows-specific code path preserves the pre-PR behavior as a fallback. Worst case = no-op vs. today. macOS/Linux paths smoke-tested locally.
Bundle externalization (#2596) Coupled with #2597; documented in both PR descriptions.
Bundle inlining (#2610) +329 KB / +332 KB on hot bundles, but removes the most-reported install regression of v13.x. zod is pure JS, used pervasively, so inlining matches mcp-server.cjs's already-shipping pattern.
sync-marketplace breaking change (#2595) --force-delete is now opt-in; documented as a migration note.
Observer truncation (#2602) Existing observations that previously overflowed will now succeed with a head+tail-only view; that's strictly better than the prior "wipe entire batch" failure mode. No external API changes, no schema changes.
Greptile re-review pending on 5 PRs (#2593, #2594, #2595, #2596, #2597, #2599) Every fixup commit addresses a concrete Greptile finding documented in the PR thread — no speculative changes. Re-trigger link is available on each PR; pending 17+ hours suggests bot may need manual nudge from a maintainer.
#2602 / #2610 awaiting Greptile first pass Just pushed; deferred till the bot scans.

Empirical checks

All 10 PRs run npm run build cleanly on macOS arm64 (Node 22, npm 10). Windows behavior is deferred — but every Windows-specific change is gated on process.platform === 'win32' and falls back to today's behavior on failure, so the worst case is no regression.

Per-PR verification (also documented in each PR description):


Tagging @thedotmack — happy to split the merge into multiple smaller releases if that's easier, or to fold in additional follow-ups if any of these uncover further concerns during review.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions