Commit 27393b3
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
- .changeset
- apps
- pythinker-code
- dist-web
- assets
- src
- cli
- sub
- tui/commands
- test
- cli
- tui/commands
- pythinker-web
- src
- components/chat
- i18n/locales/en
- lib
- test
- vis
- server
- src
- lib
- routes
- test
- fixtures
- sessions/sample-compaction/agents/main
- lib
- web
- src
- components
- context
- wire
- lib
- test
- vscode
- src/handlers
- test
- webview
- webview-ui
- src
- components
- confighub
- inputarea
- hooks
- hooks
- stores
- docs
- configuration
- guides
- reference
- packages
- acp-adapter
- src
- test
- _helpers
- acp-server/src
- agent-core-v2
- docs
- src
- agent
- agentsMdReminder
- loop
- stepRetry
- tools/os/bash
- app
- agentProfileCatalog
- flag
- git
- sessionIndex
- sessionManager
- telemetry
- features
- plan
- tower
- injection
- protocol
- tools
- init
- plan
- spawn
- status
- persistence
- backends
- memory
- node-fs
- interface
- session/subagent
- wire
- workspace
- sessionLifecycle
- workspaceInstance
- test
- agent
- agentsMdReminder
- fullCompaction
- loop
- app
- flag
- gateway
- git
- sessionIndex
- features
- plan
- tower
- tools
- persistence/backends
- memory
- node-fs
- session/subagent
- state
- tool
- wire
- workspace/workspaceInstance
- agent-gateway
- src
- routes
- services/transcript
- test
- services
- klient
- scripts
- src
- contract/session
- core/facade
- node-sdk
- src
- test
- protocol/src
- transcript
- docs
- src
- history
- model
- test
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
0 commit comments