Skip to content

Commit 27393b3

Browse files
authored
feat: add tower base entry, session listing, and engine fixes (#275)
## Related Issue None — internal maintenance pass, no external issue to link. ## Problem Tower mode could only start from the branch the checkout happened to be on, and there was no way to see that a tower worker had died. Saved sessions had no listing command, forking a large session loaded the entire session first, and several engine-level defects were outstanding: a session failed to start outright when the subagent model pool in `config.toml` was incomplete, `git status` mis-parsed non-ASCII paths, `PYTHINKER_CODE_EXPERIMENTAL_FLAG` overrode an explicit `[experimental]` config entry, step retry and interrupt events were lost on reload, and the model was not re-reminded about subdirectory `AGENTS.md` files after context compaction. ## What changed **Tower mode** - `/tower <base-branch>` picks the base branch explicitly instead of inferring it. The recorded base flows through spawn, review, and the merge gate. - The status view reports a worker that has died. **CLI** - New `pythinker session list` subcommand, with `--all` and `--json` for machine-readable output. - Forking a session no longer materializes the whole session first, so large sessions fork in well under a second. - `pythinker acp` always runs on the default agent engine and no longer reads `PYTHINKER_CODE_LEGACY_FLAG`; the `acp-native` subcommand and its test are removed. **Engine fixes** - Sessions start when the subagent model pool in `config.toml` is incomplete. - `git status` parsing handles paths with non-ASCII characters (`-z` records). - Flag precedence is per-flag env, then `[experimental]` config, then the master env flag, then the declared default. - Step retry and interrupt wire events are persisted and fold correctly on a cold read. - `AGENTS.md` is re-remembered after context compaction; session start reports the enabled flag set in telemetry. - Session-index reprojection keeps the index consistent after out-of-band session writes. - Shorter default system prompt. **Tooling** - `apps/vis` moved onto the agent-core-v2 record shapes. - The VS Code webview moved to TanStack Query. - Transcript `docs/sdk.md` refreshed against the current `src/contract`. Three tests that spawn real git processes had their timeouts raised from the 5s default to 30s; they finish in about 3s idle but exceed 5s on a loaded or slower runner. ## Checklist - [x] I have read the [CONTRIBUTING](https://github.com/PyModel/pythinker-code/blob/main/CONTRIBUTING.md) document. - [ ] I have linked a related issue (external PRs: the issue must have a maintainer's `/approve`). - [x] I have added tests that prove my feature works. - [x] Ran `gen-changesets` skill, or this PR needs no changeset. - [x] Ran `gen-docs` skill, or this PR needs no doc update. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added `pythinker fork` and `pythinker session list`, including archived-session filtering and JSON output. * Added manual Tower base-branch selection and improved visibility into dead workers and failures. * Added Discussion/Expert Talk actions to take answers for editing or build prompts directly. * Improved streaming Fusion answers, reasoning display, and tool-call summaries. * **Bug Fixes** * Session forking is faster and remains cold until resumed. * Improved handling of non-ASCII Git paths, incomplete model pools, interrupted steps, and session freshness. * Improved Windows file reveal behavior. * **Documentation** * Updated ACP, configuration, Tower, and transcript guidance. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
1 parent ff2b179 commit 27393b3

359 files changed

Lines changed: 7419 additions & 17769 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.changeset/acp-default-engine.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@pymodel/pythinker-code": minor
3+
---
4+
5+
The pythinker acp subcommand no longer honors PYTHINKER_CODE_LEGACY_FLAG; it always runs on the default agent engine.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@pymodel/pythinker-code": patch
3+
---
4+
5+
Re-remind the model about subdirectory AGENTS.md files after context compaction.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@pymodel/pythinker-code": patch
3+
---
4+
5+
Compact the Discussion exchange: reasoning shows its first two sentences with a Show reasoning toggle, tool calls collapse to one summary line, and the Fusion answer streams as text instead of its raw JSON envelope. Take now loads an answer into the composer to edit, while Build from Fusion sends it as the implementation brief at once.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@pymodel/pythinker-code": patch
3+
---
4+
5+
Fix the transcript not scrolling up after a Discussion finishes, and show "Discussion" on the composer model pill while a Discussion is armed or running.

.changeset/fast-session-fork.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@pymodel/pythinker-code": patch
3+
---
4+
5+
Forking a session no longer loads the whole session first, so large sessions fork in well under a second.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@pymodel/pythinker-code": patch
3+
---
4+
5+
An explicit [experimental] entry in config.toml now takes precedence over PYTHINKER_CODE_EXPERIMENTAL_FLAG.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@pymodel/pythinker-code": patch
3+
---
4+
5+
Fix git status parsing for file paths that contain non-ASCII characters.

.changeset/session-list-command.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@pymodel/pythinker-code": minor
3+
---
4+
5+
Add the pythinker session list subcommand to list saved sessions. Run pythinker session list --all --json for machine-readable output.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@pymodel/pythinker-code": patch
3+
---
4+
5+
Fix sessions failing to start when the subagent model pool in config.toml is incomplete.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@pymodel/pythinker-code": patch
3+
---
4+
5+
Shorten the default system prompt.

0 commit comments

Comments
 (0)