fix(ai): prime echo suppression before agent input to stop OpenWrt ash variable leak - #3385
Conversation
|
@codex review |
|
To use Codex here, create a Codex account and connect to github. |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex Review: Didn't find any major issues. Chef's kiss. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
Codex reported no major issues. This PR is marked ready for human review/merge. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 990bb791a7
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
@codex review Please review current head 9c6c99c. The output-channel ordering finding is fixed for both main-process entry paths, including cancellation reset. Six entry-point regressions pass; the three port cases fail against the prior head. Two independent local reviewers have checked the updated change. Real isolated OpenWrt SSH/preload compatibility passes; the PR description explicitly distinguishes this from reproducing the reporter's ImmortalWrt environment. |
|
Codex Review: Didn't find any major issues. Another round soon, please! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
@codex review |
|
Codex Review: Didn't find any major issues. Hooray! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
Codex reported no major issues. This PR is marked ready for human review/merge. |
Summary
Prime terminal display suppression before typing an AI command or live-shell probe, so wrapped internal input can be hidden before its first shell-side marker executes. Keep main-process prime and cancellation-reset markers on the same ordered output path as the actual PTY data.
Type of Change
Related Issue (optional)
Related to #3384
Changes Made
startPtyJob, used by Catty, MCP exec/jobs, and terminal-worker exec/jobs.emitTerminalSessionData, preserving order with PTY output on both the dedicated port and IPC fallback. Worker messages already use the worker output routing path.NETCATTY_OPENWRT_SSH_PORT.Screenshots / Demo
No layout changes. Real isolated OpenWrt 24.10.6 Dropbear sessions retain
visible-outputand suppress internal wrapper text at 80/120 columns, with live-shell probing enabled and disabled.Evidence boundary: the report screenshot shows ImmortalWrt 25.12.0 / BusyBox 1.37 and a continuation prompt. This environment was not reproduced. An unprimed negative control on our OpenWrt image did not leak text, so real-device compatibility must not be presented as proof of the reporter's exact cause. The fragmented-echo scenario is reproduced by the preload test. The independent output-transport defect is demonstrated directly: the new entry-point regression suite fails 3 port cases on the previous PR head and passes all 6 cases after this fix.
Testing
npm run dev)npm test)npm run generate:capability-tools) — not applicableBounded local validation instead of the full suite on the shared machine:
git diff --checkand changed-file ESLint passed.Checklist