Repository navigation
fix(workbench): isolate adapters and clarify thread notifications - #90
Conversation
4fc0fff to
79e1444
Compare
Workbench demoOpen the private 20-minute demo. Sign in to Vercel, then choose Open demo. Reopening this link in the same browser resumes its running demo; Start new demo creates a fresh one. Jira starts disconnected. Application, runtime startup, fixtures, and native smoke: PR Expired? Return to this link and launch again. Use synthetic content with the free OpenCode model. |
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
Summary
Keep Workbench policy behind fork-owned adapters to reduce future upstream conflicts. Thread notifications now distinguish an agent reply from an unanswered question, clear when the Thread is visited, and use warning styling only for failed checks.
Changes
Assemble Workbench RPC services in the Workbench server adapter, leaving one typed host bundle at the WebSocket boundary.
Keep sidebar selection and ticket context presentation in Workbench web modules while retaining Settings and native Threads behavior.
Centralize Workbench desktop scheme, data path, and updater policy in its desktop distribution modules.
Give providers one schema-validated structured generation call. The Workbench host owns the ticket prompt, sanitization, and empty-result error.
Seed the same synthetic attention records and PR states in disposable local demos and private previews. Local runs keep cloned demo repositories and connected Jira, and use the saved local provider selection.
Show Agent replied for completed turns and Waiting for your answer for structured unanswered questions. Visiting an eligible assigned Thread acknowledges its notification on Workbench and native routes, while native pending requests remain unresolved.
Use a neutral bell with an accent dot for ordinary notifications and yellow for failed checks. Workspace and Ticket disclosure controls remain usable with the notification filter enabled.
Verification
Stage-specific server, web, desktop, provider, and Workbench tests passed. The final generation suite passed 146 tests across 12 files; the schema type-side regression test passed.
Server, web, desktop, and Workbench package typechecks passed; the Workbench package boundary check found no application import or workspace cycle. Targeted lint, formatting, and diff checks passed.
Native and Workbench desktop builds and bounded startup smoke passed. In the disposable Codex browser demo, Workbench opened from native Threads, a Ticket opened its native Thread, Ticket context appeared once in the composer, Settings kept its sidebar with
workbench=true, and returning to Threads restored the native sidebar.Review
apps/server/src/workbench/ticketSummaryText.tsand the providergenerateStructureddelegates. Ticket-specific text stays with Workbench, while providers retain their existing execution restrictions, errors, model selection, and cleanup.bash scripts/workbench-demo/run.shcompleted a disposable local run from the prepared guide home. The restarted server had 12 synthetic attention Tickets alongside the baseline; the local board showed five actionable Tickets out of 20. Focused demo and PATH tests passed (10 tests across three files), as did scripts and server typechecks. The run stopped and removed its disposable home.This branch includes sync candidate
c8942f8eand upstream67b175a4. After the base merge, 12 focused tests across four files, server and scripts typechecks, and the Workbench package boundary check passed. The preview against the pinned synced upstream67b175a4reports no remaining commits or conflicts.The final notification change passed 72 tests across eight focused UI files, web and Workbench typechecks, the package boundary gate, the required Workbench complexity/duplication gate, formatting, and targeted lint (existing warnings only). Independent behavioral, test, and isolation review found no actionable issues.
In the disposable local client, verify an agent reply clears after visiting its Thread; a structured unanswered question clears its notification while retaining Awaiting Input; and Workspace/Ticket rows collapse under the notification filter. These flows passed with live Codex generation.
Screenshots
The same seeded Beacon workspace was captured at 1280 × 720 in disposable demos from the sync branch and the isolation branch. These views show the board, Ticket detail, and linked native Thread. Generated summary wording varies between runs. The later upstream merge changed only release scripts and was verified with focused tests.
The private PR previews and local disposable demo seed the same synthetic attention cases. In the comparison before the notification changes, Needs attention showed the same five confirmed-action Tickets out of 20, the sidebar bell filter showed five actionable Tickets, and Ready for review isolated one Ticket. Both previews reported three of five linked PRs inspected; unavailable or incomplete inspection alone did not create an attention item. The PR feedback popover retained three signals and both exact unresolved discussion links.
Thread notifications
Limits
5cc99e1cis ten commits beyond the pinned sync. Base and final head have the same overlap paths and existing CI-workflow conflict against it; this PR adds no conflict path and does not include those newer upstream commits.Model/harness: GPT-6 / Codex desktop.