feat: tower wake steering, prompt hook folding, WaitFor cap, sticky fullscreen messages - #339
Conversation
…n transcript cold load
|
Important Review skippedToo many files! This PR contains 107 files, which is 7 over the limit of 100. To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch. Upgrade to a paid plan to raise the limit. ⚙️ Run configurationConfiguration used: Repository: PyModel/pythinker-code/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (107)
You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
commit: |
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## @pymodel/pythinker-code@2.4.0 ### Minor Changes - [#339](#339) [`78fd037`](78fd037) Thanks [@elkaix](https://github.com/elkaix)! - Let a new message interrupt a running tower wake turn and run as its own turn. Enable tower mode with `[experimental] tower = true`. ### Patch Changes - [#339](#339) [`78fd037`](78fd037) Thanks [@elkaix](https://github.com/elkaix)! - Fold hook output into your prompt message so one prompt always produces exactly one user message in the transcript. - [#339](#339) [`78fd037`](78fd037) Thanks [@elkaix](https://github.com/elkaix)! - Cap WaitFor at 90 seconds; sending a message with Enter ends the wait early and steers it into the turn. - [#339](#339) [`78fd037`](78fd037) Thanks [@elkaix](https://github.com/elkaix)! - Pin your latest message above the transcript in fullscreen mode and render user messages with a ❯ bullet. - [#339](#339) [`78fd037`](78fd037) Thanks [@elkaix](https://github.com/elkaix)! - Make tower teardown safer around live agents and persist tower state atomically. ## @pymodel/pythinker-desktop@1.5.0 ### Minor Changes - [#339](#339) [`78fd037`](78fd037) Thanks [@elkaix](https://github.com/elkaix)! - Let a new message interrupt a running tower wake turn and run as its own turn. Enable tower mode with `[experimental] tower = true`. ### Patch Changes - [#339](#339) [`78fd037`](78fd037) Thanks [@elkaix](https://github.com/elkaix)! - Fold hook output into your prompt message so one prompt always produces exactly one user message in the transcript. - [#339](#339) [`78fd037`](78fd037) Thanks [@elkaix](https://github.com/elkaix)! - Cap WaitFor at 90 seconds; sending a message with Enter ends the wait early and steers it into the turn. - [#339](#339) [`78fd037`](78fd037) Thanks [@elkaix](https://github.com/elkaix)! - Pin your latest message above the transcript in fullscreen mode and render user messages with a ❯ bullet. - [#339](#339) [`78fd037`](78fd037) Thanks [@elkaix](https://github.com/elkaix)! - Make tower teardown safer around live agents and persist tower state atomically. Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Requirement or Bug
Land a batch of agent-experience behavior changes: tower wake steering and safer tower operations, prompt hook-output folding, a shorter WaitFor cap, and sticky fullscreen user messages.
Bug Reproduction Steps
N/A
Root Cause
N/A
Code Changes
packages/agent-core-v2):WaitForcaps at 90 seconds and a newly sent message ends the wait early;UserPromptSubmithook output folds into the prompt message as meta-marked content parts (annotate-then-filter keeps legacy wires readable); tower wake turns abort on user input; tower teardown gains keep-live worktrees,exclude, anddry_run; the tower store serializes across processes and writes atomically; tower workers must check their inbox before completing a mission.apps/pythinker-code): sticky user message pinned above the transcript in fullscreen (TranscriptView+ gutter pill + layout effects in the vendored TUI); wait renderer gains an "interrupted" state; user message bullet is now❯with wrap-aware line heights.Behavior Changes and Affected Users
WaitFortimeout capWaitForwait earlyCtrl-SonlyEnteralso steers it in and ends the wait; queued shell commands or skills keep the queue until the turn ends[experimental] tower = true)excludeanddry_run✨❯hook_resultuser messageAffected modules and coverage per row: engine wait/hook/tower changes carry unit and contract tests (
test/agent/loop,test/agent/task,test/features/tower,test/features/externalHooks); transcript folding is covered by thepackages/transcriptand gateway transcript/prompt suites; TUI behavior by component and message-flow tests; VS Code by replay-adapter tests.Checklist
/approve).gen-changesetsskill, or this PR needs no changeset.gen-docsskill, or this PR needs no doc update.