Repository navigation
agent-widgets 0.3.0
Your agent's widget work now finishes in any MCP client, installs in one step and tells the truth about the desktop.
brew install surdeddd/tap/agent-widgetsIn Claude Code, the plugin brings the skill and the MCP server:
/plugin marketplace add Surdeddd/agent-widgets
/plugin install agent-widgets@agent-widgets
| 0.2 | 0.3 | |
|---|---|---|
aw_ship in Codex or Claude Desktop |
cut off after 60 s | answers within 45 s with a job id, aw_wait returns the result |
| Progress and cancel | none, cancel ignored | a notification per stage, cancel stops the build |
| Install | git clone + make install |
Homebrew or the Claude Code plugin |
| Tool metadata | read-only hint | titles, hints, output schemas with the summary inside |
| A wrong argument | missing "id" |
INVALID_ARGUMENT with the reason |
| A dev slot behind windows | SHOT_MISMATCH 9 % |
WIDGET_HIDDEN: show the desktop, then aw shot --dev |
What's new
- Long MCP calls fit every client.
aw_ship,aw_dev,aw_slotandaw_feed_runrun as jobs: a call answers within its budget (none for Claude Code, 45 s for other clients,aw mcp --call-budget) with a job id and stage, and the newaw_waitreturns the final result. Codex and Claude Desktop, which stop a tool call after 60 s, now get through a ship. - Progress notifications for every stage of a long call, and a pulse every 10 s.
- Cancelling an MCP call stops its work and sends no reply: a build is interrupted, waits end, an install swap already under way still finishes.
- Claude Code plugin:
/plugin marketplace add Surdeddd/agent-widgets, then/plugin install agent-widgets@agent-widgetsinstalls the skill and the MCP server and asks for the widgets folder. A SessionStart hook explains how to installawwhen it is missing. - Every MCP tool has a title, read-only, destructive, idempotent and open-world hints, and an output schema. The structured content carries the reply text under
summary, because Claude Code shows the model that JSON instead of the text block. - MCP arguments are checked against the input schema: unknown names, wrong types and missing values are
INVALID_ARGUMENT. Invalid widget ids areWIDGET_ID_INVALIDeverywhere, unknown jobsJOB_UNKNOWN. - Hints in MCP replies name the tool to call (
aw_explain {"code": "…"}) and mark commands that only exist in a shell. - A dev slot covered by windows is
WIDGET_HIDDENinstead of a misleadingSHOT_MISMATCH: macOS does not draw desktop widgets that are not on screen, so their capture is an empty frame.aw devno longer waits 30 s for a redraw that cannot happen,aw slotwaits until the slot is visible,aw shipwithout a visible slot endsunverified, andaw doctortells a placed but invisible slot from a missing one. aw shipandaw devcapture and compare only the dev slot sizes the widget supports.aw_previewtakeslang(en/ru), likeaw preview --lang.- Long issue labels under a preview cell wrap inside the tile instead of pushing the next cell out of the grid.
SAMPLE_NOT_LOCALIZEDfires only when the default sample holds text; a feed of numbers has nothing to translate.- The contracts say how
Datefields of a model decode: ISO 8601 or epoch seconds, as in the timeline envelope. The skill asks for the dev slot in the sizes the widget supports.
How it was checked
- 210 engine tests and 69 kit tests,
swiftlint --strictclean; every new test was broken on purpose and went red. - A protocol probe drove the MCP server by hand: with a 20 s budget a real
aw_shipanswered with a job id after 20 s andaw_waitreturned the desktop shots 16 s later; a cancelled preview sent no reply and left noswiftcorxcodebuildbehind. - A fresh Claude agent installed nothing but the plugin and built an uptime widget end to end in 20 minutes; its report drove the fixes for invisible dev slots, compared sizes,
langin previews and the localization warning. - A Grok agent on the same brief tried to script the desktop to reach the dev slot; the skill now forbids that outright.
- The plugin was installed from this repository with
claude plugin marketplace addandclaude plugin installand used in a fresh session; the Homebrew formula was built from source and tested.