Skip to content

feat(agent): split-screen agent workspace wired to the interest history - #6494

Merged
capJavert merged 8 commits into
mainfrom
feat/interest-agent-workspace
Aug 20, 2026
Merged

feat(agent): split-screen agent workspace wired to the interest history#6494
capJavert merged 8 commits into
mainfrom
feat/interest-agent-workspace

Conversation

@capJavert

@capJavert capJavert commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Rebuilds /agent and /agent/[id] on the split-screen workspace from the mockup PRs (#6392/#6432), with the transcript now rendered from the new interestHistory query: server turns plus a local echo for in-flight commands, picks resolved against real findings, failed runs retryable, and polling while a run is pending. Reply votes persist as standing feedback via triggerRun:false, monitor states read lastRunStatus/lastRunFindings, and the InterestContentBatch notification type now renders. Drops the mockup's usage meter, deliver-around hour, stop button, entry points, and /dev review routes.

Changes

Events

Did you introduce any new tracking events?

Experiment

Did you introduce any new experiments?

Manual Testing

Caution

Please make sure existing components are not breaking/affected by this PR

Preview domain

https://feat-interest-agent-workspace.preview.app.daily.dev

@capJavert capJavert self-assigned this Aug 18, 2026
@vercel

vercel Bot commented Aug 18, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
daily-webapp Ready Ready Preview Aug 20, 2026 10:11am
storybook Ready Ready Preview Aug 20, 2026 10:11am

Request Review

@capJavert capJavert left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking: the branch currently conflicts with main in packages/shared/src/components/notifications/utils.ts; please rebase and preserve the new Agents notification category from main when resolving it. Reviewed by AI.

const update = useCallback(
(data: UpdateInterestInput) => {
if (data.status) {
setStatusOverride(data.status);

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking: This optimistic status override is never cleared or rolled back. If updateInterest rejects, the toast reports failure but the pause switch remains in the requested state indefinitely; overlapping toggles can also resolve out of order while the UI stays pinned to the last local value. Please roll the override back on failure and reconcile/clear it after the refetched interest arrives (and disable the switch while the mutation is pending). Reviewed by AI.


const castVote = (next: 'up' | 'down') => {
const resolved = vote === next ? undefined : next;
setVote(resolved);

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking: The vote is committed locally before the standing-feedback mutation succeeds, while sendFeedback hides the rejection from this component. On failure the user sees both the error toast and the persistent “Noted” state, even though nothing was saved. Please return/await the mutation and only commit the vote on success, or roll it back on rejection. Reviewed by AI.

row instead of sitting on the wrapper's text baseline. */}
<span className="hidden tablet:contents">
<PanelButton
label="Debug"

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Non-blocking question: Is the production Debug tab intentional for every user in the feature cohort? It exposes the raw interest payload plus finding scores/rationales, and the PR description says the review/dev routes are being dropped. If this is still a development aid, can we keep it in Storybook or gate it to an explicit internal/dev condition instead of shipping it in the customer header? Reviewed by AI.

capJavert and others added 2 commits August 18, 2026 15:45
…ry API

Rebuilds /agent and /agent/[id] on the split-screen workspace from the
mockup PRs (#6392/#6432), with the transcript now rendered from the new
interestHistory query: server turns plus a local echo for in-flight
commands, picks resolved against real findings, failed runs retryable,
and polling while a run is pending. Reply votes persist as standing
feedback via triggerRun:false, monitor states read
lastRunStatus/lastRunFindings, and the InterestContentBatch
notification type now renders. Drops the mockup's usage meter,
deliver-around hour, stop button, entry points, and /dev review routes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SL3SG5tmkntMv7UNiyt71p
Rolls the optimistic status override back when updateInterest rejects
and clears it once the refetched interest confirms it, with the pause
switch disabled while the mutation is pending. Reply votes now commit
only when the standing-feedback mutation succeeds and roll back on
rejection. The debug panel button and /debug command are gated to team
members and local development.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SL3SG5tmkntMv7UNiyt71p

@capJavert capJavert left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-review: the earlier status, failure-handling, debug-gating, and merge-conflict findings are addressed. One blocking persistence mismatch remains. Reviewed by AI.


const castVote = (next: 'up' | 'down') => {
const previous = vote;
const resolved = previous === next ? undefined : next;

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking: The buttons still behave like reversible votes, but the persisted feedback is append-only here. Clicking the selected vote sets resolved to undefined and clears the UI without retracting the feedback already saved; switching from up to down saves a second, contradictory standing instruction while leaving the first one active. Please either update/delete the persisted feedback when the vote changes, or make the control immutable after a successful save so the UI cannot claim an undo/change that the server never receives. Reviewed by AI.

A cast vote disables both buttons instead of allowing unselect or a
switch, since the persisted standing feedback cannot be retracted; the
vote still rolls back when the mutation is rejected.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SL3SG5tmkntMv7UNiyt71p
The transcript only shows what a persisted run's blocks reference, which
left findings and written posts with no surface: historical content
predates interest_run, and runs delivering three or fewer findings never
emit a feed link. The header gains Findings and Posts panel buttons
backed by the already-fetched interestFindings and interestPosts, the
summary posts are passed into the workspace instead of only their count,
and a run that wrote a post shows it as an embed on its bubble instead
of being dropped when quiet.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SL3SG5tmkntMv7UNiyt71p
The posts target gains an optional postId, so the run bubble's
summary-post embed and the post titles inside the Posts panel open that
one post in its own tab, titled after the post, instead of landing at
the top of the full stack. The plain Posts tab keeps the full list.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SL3SG5tmkntMv7UNiyt71p
@capJavert
capJavert merged commit 067a912 into main Aug 20, 2026
12 checks passed
@capJavert
capJavert deleted the feat/interest-agent-workspace branch August 20, 2026 10:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant