feat: reveal saved plans in file manager - #208
Conversation
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (112)
📝 WalkthroughWalkthroughAdds a secure transcript endpoint to reveal saved Markdown plans in the host file manager. Wires the endpoint through the web API and plan UI. Updates tests, documentation, release metadata, and generated web assets. ChangesSaved Plan Reveal
Estimated code review effort: 4 (Complex) | ~45 minutes Sequence Diagram(s)sequenceDiagram
participant PlanTool
participant WebClient
participant TranscriptRoute
participant FileManager
PlanTool->>WebClient: revealSavedPlan(agentId, toolCallId)
WebClient->>TranscriptRoute: POST plan:reveal
TranscriptRoute->>TranscriptRoute: Validate and resolve saved Markdown path
TranscriptRoute->>FileManager: Launch validated plan file
FileManager-->>TranscriptRoute: Launch result
TranscriptRoute-->>WebClient: { revealed: true }
WebClient-->>PlanTool: Success boolean
Warning Some tools did not complete. Review the errors below. 🔧 ast-grep (0.45.2)apps/pythinker-code/dist-web/assets/cynefin-OW5HDTMX-C5vfZzuY.jsast-grep timed out on this file apps/pythinker-code/dist-web/.web-bundle-manifest.jsonast-grep did not scan this file: retry isolation stopped after a systemic timeout or after exhausting the retry isolation budget apps/pythinker-code/dist-web/assets/CodeBlockNode-D80ZO3ta.jsast-grep did not scan this file: retry isolation stopped after a systemic timeout or after exhausting the retry isolation budget
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@1.4.0 ### Minor Changes - [#188](#188) [`0097afc`](0097afc) Thanks [@elkaix](https://github.com/elkaix)! - Remove the `--allow-remote-terminals` flag from `pythinker web`; PTY terminal routes now stay available on loopback binds only. - [#188](#188) [`0097afc`](0097afc) Thanks [@elkaix](https://github.com/elkaix)! - Add `PYTHINKER_CODE_INFINITE_RETRY=1` to retry every failed model request indefinitely with backoff instead of failing the turn, for long unattended runs. - [#208](#208) [`bd0eadd`](bd0eadd) Thanks [@elkaix](https://github.com/elkaix)! - Add an option to reveal saved plan files in your file manager. Select Reveal in file manager from a saved plan. ### Patch Changes - [#188](#188) [`0097afc`](0097afc) Thanks [@elkaix](https://github.com/elkaix)! - Silence the MaxListenersExceededWarning that could appear during long agent turns with many parallel tool calls. - [#188](#188) [`0097afc`](0097afc) Thanks [@elkaix](https://github.com/elkaix)! - Fix messages sent from one web client not appearing on other clients connected to the same session. - [#207](#207) [`3a1d761`](3a1d761) Thanks [@elkaix](https://github.com/elkaix)! - Fix context usage updates in interactive clients. - [#214](#214) [`48510be`](48510be) Thanks [@elkaix](https://github.com/elkaix)! - Complete a Codex sign-in as soon as the browser tab becomes visible again, not only when the window regains focus. - [#201](#201) [`5f087d8`](5f087d8) Thanks [@elkaix](https://github.com/elkaix)! - Make the chat prompt anchor a compact line index that opens prompt and response previews. - [#188](#188) [`0097afc`](0097afc) Thanks [@elkaix](https://github.com/elkaix)! - Persist a picked thinking effort as the default only up to the model's own default effort; a more expensive pick stays session-only. - [#204](#204) [`2d76cad`](2d76cad) Thanks [@elkaix](https://github.com/elkaix)! - Fix prompt anchor selection when a conversation has two prompts. - [#198](#198) [`6be446e`](6be446e) Thanks [@elkaix](https://github.com/elkaix)! - Wrap narrow Changes editor lines while keeping line numbers visible. - [#207](#207) [`3a1d761`](3a1d761) Thanks [@elkaix](https://github.com/elkaix)! - Fix session history after steering or undoing a turn. - [#211](#211) [`7040eed`](7040eed) Thanks [@elkaix](https://github.com/elkaix)! - Add a setting to pin every subagent to the selected model, use the dark banner in every sidebar, and show Pythinker desktop updates as one continuous download. - [#188](#188) [`0097afc`](0097afc) Thanks [@elkaix](https://github.com/elkaix)! - Show the /plugins marketplace catalog as soon as it loads, with latest-version lookups running in the background. - [#192](#192) [`8b6cc70`](8b6cc70) Thanks [@elkaix](https://github.com/elkaix)! - Preserve subagent model aliases when provider models refresh. - [#215](#215) [`e4ed37f`](e4ed37f) Thanks [@elkaix](https://github.com/elkaix)! - Fix a resumed session showing a stale "manually stopped" or failed state when its last turn had actually completed. - [#198](#198) [`6be446e`](6be446e) Thanks [@elkaix](https://github.com/elkaix)! - Show available desktop updates as a sidebar button with release notes and update controls. - [#192](#192) [`8b6cc70`](8b6cc70) Thanks [@elkaix](https://github.com/elkaix)! - Stop goal turns when automatic context compaction is cancelled or fails. - [#192](#192) [`8b6cc70`](8b6cc70) Thanks [@elkaix](https://github.com/elkaix)! - Let subagents inherit the calling agent model from the Agent settings tab. - [#188](#188) [`0097afc`](0097afc) Thanks [@elkaix](https://github.com/elkaix)! - Fix foreground subagents being reported as background tasks on the task list. - [#201](#201) [`5f087d8`](5f087d8) Thanks [@elkaix](https://github.com/elkaix)! - Use theme-matched Pythinker banners in the sidebar. - [#207](#207) [`3a1d761`](3a1d761) Thanks [@elkaix](https://github.com/elkaix)! - Fix loss of large tool outputs in long conversations. - [#213](#213) [`0753f13`](0753f13) Thanks [@elkaix](https://github.com/elkaix)! - Fix the "manually stopped" state lingering after undoing the interrupted turn. - [#198](#198) [`6be446e`](6be446e) Thanks [@elkaix](https://github.com/elkaix)! - Replace the sidebar robot icon with the Pythinker Code banner. ## pythinker@0.9.6 ### Patch Changes - [#188](#188) [`0097afc`](0097afc) Thanks [@elkaix](https://github.com/elkaix)! - Persist a picked thinking effort as the default only up to the model's own default effort; a more expensive pick stays session-only. Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Related Issue
N/A — internal product work.
Problem
Saved plan files are outside the active workspace, so their paths cannot be opened in the workspace preview.
What changed
Checklist
gen-changesetsskill, or this PR needs no changeset.gen-docsskill, or this PR needs no doc update.Summary by CodeRabbit