feat(framework): agent-pushed markdown views in the dashboard right rail#446
Merged
Conversation
The agent can display ad-hoc markdown in the side panel with a non-blocking show-markdown block (a plan, a summary, a writeup), parsed off the turn text like the await gates. Each becomes a view FrameworkEvent that renders as a first-class Views tab in the right rail with a sticky top-nav; re-showing the same title updates that view in place. Complements the choice-gate rail. Closes #441
With the new Views tab the right rail can show four tabs; Project log wrapped to two lines at w-80. Label it Log, matching Docs/Views/Choices, so the row fits.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #314 (the last open child). The right rail was fixed Docs/Log tabs. This lets the agent push arbitrary markdown views (e.g.
showMarkdown()) into the rail as a first-class Views tab with a sticky top-nav, complementing the choice-gate rail (#440).What
viewFrameworkEvent ({ kind:'view'; id; title; markdown }) + itsformatFrameworkEventcase. Non-blocking, unlikechoice.parseMarkdownViews(turn-gate.ts): pulls every```show-markdownblock out of a turn's text (the first#line is the title, the rest is the body; falls back to "Note"), keying by a title slug so a re-show updates in place. Documented inAWAIT_PROTOCOLso the agent knows the block. Parsed on every turn in both the build (run.ts) and direct-prompt (prompt-run.ts) paths and emitted via the existingemit -> store.append -> live channelpipeline.agentViews(events)folds the stream (mirrorspendingChoices); a newViewsRailrenders the selected view's<Markdown>with a sticky top-nav;RightRailgains a Views tab (badge count) that the rail surfaces when a view exists and no choice is pending.+Pagethreadsviewsdown.Verify
parseMarkdownViews), dashboard typecheck + vite build + prerender clean, workspace typecheck 22/22.parseMarkdownViewscovered: titled block, no-heading fallback, several blocks + repeated-title-in-place, blank skip, none.viewevents (Deployment plan, Summary) for a browser check of the Views tab + nav;agentViewsfold node-checked against them.Closes #441