Relationship to pi
Esta página aún no está disponible en tu idioma.
xcsh is derived from the open-source pi coding agent and adds F5 Distributed Cloud resource workflows, integrations, packaging, and project-specific governance.
Which upstream range was reviewed?
Section titled “Which upstream range was reviewed?”The last proven sync with can1357/oh-my-pi was d350ea60e on April 9, 2026. The first-pass
security and shared-runtime audit reviewed the divergent line through b2f25dbfe1 on September 5,
2026. The second-pass TUI and renderer audit extends that lineage through the frozen tip
6d3bc569d16cd7351073eaa767caed51021befbb on September 6, 2026.
The third-pass terminal-interaction audit extends the reviewed lineage through
a1b254047d12e143b7c6011536e918c6c35c5906, also frozen on September 6, 2026.
The fourth-pass hyperlink, login-launch, and transcript-copy audit extends the reviewed lineage
through 6e48b5ce564aa1d7eff60ffe92748f451385ad7d, frozen on September 7, 2026.
Because the repositories no longer share a usable linear history, accepted changes are semantic
ports with adapted regressions rather than merges or ancestry-based cherry-picks.
Which changes were accepted?
Section titled “Which changes were accepted?”The four implementation waves accepted these upstream pull requests:
| Wave | Upstream pull requests | xcsh delivery |
|---|---|---|
| Provider and prompt security | #2147, the opaque-thinking portion of #3239, #7067, and #8727 | #3710 |
| Configuration and execution security | #7362 and #5636 | #3720 |
| Core runtime | #7743, #10415, #10523, #10325, and #10550 | #3723 |
| Terminal and platform | #10613, #10997, #10492, #9233, and #7634 | #3724 |
| TUI and renderer crash containment | #1989, #4497, #4529, #2047, #5837, and #6788 | #3743 |
| Herdr, signals, and mouse interaction | #7810, #8433, #11054, #4121, #3463, #3402, and #11045 | #3748 |
| Hyperlinks, login launch, and copy picker | #10196, #10606, #11002, #10922, #11086, #5887, and #6282 | #3758 |
These ports protect provider-bound secrets and compaction boundaries, enforce exact-case
environment references and complete protocol tails, repair Responses replay and shared MCP
results, improve rate-limit and retained-string behavior, chain directory completion, extend
power assertions across supported platforms, and harden stats persistence and network exposure.
The source pull requests remain attributable to can1357/oh-my-pi; the xcsh deliveries link the
exact commits and regression evidence.
The second-pass renderer work normalizes malformed task result data, accepts only strings at path
boundaries, bounds ANSI-heavy rows before width measurement, and treats terminal disconnect
cleanup as best effort before SIGHUP. Upstream #5438 is equivalent because Container.render()
already isolates child-render exceptions; its richer fallback display remains deferred.
The third-pass work adds a shared fullscreen/mouse framework, applies it to the session picker,
extension dashboard, and debug-log viewer, and keeps terminal state restoration idempotent across
normal exit, resize, disconnect, and emergency cleanup. Herdr pane identity now participates in
multiplexer redraw decisions, while notifications use validated argv-only herdr notification show
delivery with terminal fallback. Interactive and signal exits share one draft-preserving teardown,
and POSIX Ctrl-Z suspends only the xcsh process with SIGSTOP.
The fourth-pass work applies an immutable startup capability snapshot to off, auto, and
always hyperlink policy; safely renders and physically wraps OSC 8 spans; launches local Vertex
login through an HTTP(S)-only opener while retaining manual recovery; and projects the bounded copy
picker directly from xcsh SessionMessageEntry history. The semantic ports correspond to upstream
merge commits db2f55888b9f500b51010d7958a9cc8712e19f5c,
4d13034f5dc70e93a6dad502ea7313792480760e,
72767b81bd2911ebd650cfd0fdd5f92afc7470a6,
4a56732e45c6b13b01e72aeaab113d0a257df0bd,
43a2913d1ee2e88ceff0851a9ed9d0345f12d8c6,
c081dedd3a696c872fd818f89d2b8c6c81a45b1e, and
d1979782e7851b46451e956a5855d69e7781a5f5.
| Third-pass candidate | Disposition |
|---|---|
| Herdr #7810, #8433, and #11054 | Ported: scrollback-safe rendering, resize behavior, and notification delivery |
| Herdr #10356 and #10479 | Equivalent: explicit HERDR_KITTY_GRAPHICS gating and synchronized rendering already cover the behavior |
| Herdr #7554 | Not applicable: xcsh uses its compiled executable and dedicated launcher |
Signal #4121 (73a12c7e) | Ported: shared idempotent teardown and one-shot draft recovery |
Signal #3463 (8506fbdf) | Ported: interactive self-SIGSTOP; deliberate background process-group SIGTSTP remains unchanged |
| Mouse #3402 and #11045 | Ported: shared SGR parsing/routing and horizontal-wheel rejection |
cffb804d, 27ed9f7a, and log-viewer portion of 5fbe8876 | Ported to the session picker, extension dashboard, and debug-log viewer |
7eca774c and raw-SSE portion of 5fbe8876 | Not applicable: those surfaces do not exist in xcsh |
Plan Review 2976847e | Deferred: xcsh retains its compact plan-review selector |
| MCP, OpenCode, and unrelated renderer/UI changes | Excluded from this pass |
Where does xcsh deliberately diverge?
Section titled “Where does xcsh deliberately diverge?”xcsh retains its own:
- F5-scoped packages, prompts-as-files, tool factories, and capability discovery;
- SQLite multi-credential storage, multi-account authentication, and provider routing;
- MCP, SSH, F5 Distributed Cloud, Office, and browser integrations;
- Bun-first runtime, session semantics, release pipeline, branding, and governance.
Public interfaces use prerelease clean breaks. In this wave,
MacOSPowerAssertion/MacOSPowerAssertionOptions became
PowerAssertion/PowerAssertionOptions without aliases, and power.sleepPrevention was added with
an idle default.
What remains excluded or deferred?
Section titled “What remains excluded or deferred?”Upstream workflows, branding, release machinery, generated model catalogs, compatibility shims, new packages, and large unrelated subsystems are excluded. The security-scan subsystem in #7048 and the native minimizer in #2176 remain deferred. The range-dashboard optimization in #9327 and earendil-works/pi-only fullscreen transcript, mouse, clipboard, and renderer subsystems also remain outside this campaign. MCP, OpenCode, Herdr, #10625, and #10491 were explicitly excluded from the second-pass batch; the Herdr work is now covered by the third pass. Commits after the new frozen source tip require a later audit.
How do I decide where a fix belongs?
Section titled “How do I decide where a fix belongs?”Trace the affected module and compare it with the pinned upstream lineage. A generic agent-loop defect may belong upstream; an xcsh resource command, integration, or packaging change belongs here.
How do I preserve attribution?
Section titled “How do I preserve attribution?”Keep upstream license notices and document imported changes. Avoid copying a patch blindly across diverged modules; port the behavior with tests against the current xcsh architecture.
An upstream commit is evidence of intent, not a patch that is safe to apply unchanged. Freeze the reviewed upstream commit, identify the xcsh modules that implement the same contract, port the behavior with a regression test, and record deliberate differences. A candidate remains excluded until its prerequisites and product fit are reviewed; omission from one batch does not imply acceptance or rejection in a later audit.