Commit Graph
11 Commits
Author SHA1 Message Date
Tianyi Cui 79bd3d8da7 feat(session): centralize working directories and directory context 2026-10-06 01:27:54 +08:00
turtle1999 4b7a45d154 fix(pwsh): accept ASCII-padded completion status lines 2026-09-29 03:11:05 +08:00
mektpoy 4ba758f47f Merge origin/master into fix/truncate-without-splitting-surrogates
Conflict resolution:
- docs/config-catalog: regenerate the English page; the Chinese page follows the
  three shifted Config sources and the bilingual pair record is re-recorded.
- docs/module-graph: the generator rewrites all three artifacts together.
- packages/shell/tool-pwsh-persistent/src/index.ts: keep master's rewrite of the
  prompt handling and re-apply the surrogate cap and its import.
- The three package.json dependency entries follow master's workspace:* range
  convention, and the lockfile importer specifiers match them.
2026-09-23 18:28:28 +08:00
mektpoy dc07e5a50d fix(tools): keep surrogate pairs intact when capping tool output
Three tools capped the preview text they return with String.prototype.slice
at a UTF-16 code-unit budget. A cut that lands inside a surrogate pair
leaves a lone high surrogate, which is not well-formed text: a strict JSON
reader rejects the durable Session log carrying it, and the preview shows a
broken glyph. A lone surrogate retained in history has already blocked every
later Messages request for one session.

Centralize the cap in output-retention as
truncateWithoutSplittingSurrogatePair, and use it from the persistent bash
and pwsh shells and the string-replace editor. The cut drops the unpaired
half instead of keeping it, so the retained text stays a prefix and is at
most one code unit shorter than before.

The new dependency edges and the shifted Config sources regenerate
docs/module-graph and docs/config-catalog, including the committed
translation pair.

Refs #4817
2026-09-21 18:51:19 +08:00
Huanqi Cao 97545d9c8f fix(pty): keep the controlled prompt so persistent pwsh settles fast
tool-pwsh-persistent installs its own `prompt` function after spawn, so
terminal-bash prompt readiness never matched and every send degraded to the
silence tier (idleSilenceMs + handoffGraceMs) under production defaults. This
is the defect the persistent bash tool fixed for the bash stack.

The tool now initializes without a prompt send and detects the no-end-marker
fallback through the seam's stdin_read wait reason instead of matching its own
prompt text. The private prompt constant and its stripping are deleted, so
partial output can carry the backend's own trailing prompt.

Tool calls drop from 8493/3722/3832/3759 ms to 1340/255/251/241 ms (spawn and
initialization plus the first command, then three warm commands; Windows,
production defaults, real Loader composition). The loader composition suite
pushes idleSilenceMs beyond the send bound, so every case fails if prompt
readiness regresses.
2026-09-21 15:57:08 +08:00
imccyu d8c993a622 docs(shell): clarify queued cancellation regression coverage 2026-09-19 23:31:31 +08:00
imccyu 9d4fa54c2d fix(shell): settle persistent shell cancellation without throwing its reason 2026-09-19 23:05:40 +08:00
Turtle 15f2997bcb cleanup: omit unneeded invariant companions 2026-08-28 13:12:52 +08:00
_Kerman 2f759a6b65 fix(shell): preserve prompt-like PowerShell output 2026-08-18 14:30:59 +08:00
Huanqi Cao b89808cc2d fix(gates): align package version, module graph, and jscpd ignores for the mirrored pwsh stack 2026-08-13 11:10:59 +08:00
Huanqi Cao d6010c2d88 refactor(pty): follow the naming-contract renames across the persistent pwsh stack 2026-08-13 09:52:56 +08:00