Skip to content

feat(apps): render show_attention as an MCP App panel and sidebar entry - #282

Open
acoyfellow wants to merge 3 commits into
cloudflare:mainfrom
acoyfellow:jcoeyman/attention-panel
Open

acoyfellow wants to merge 3 commits into
cloudflare:mainfrom
acoyfellow:jcoeyman/attention-panel

Conversation

@acoyfellow

@acoyfellow acoyfellow commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Builds on #287. Review #287 first. Until #287 merges, this PR also shows #287's commit.

This PR renders the show_attention report from #287 as an MCP App panel at ui://cloudflare/attention-panel.html. Each item has a Look into this button. The button sends the agent a follow-up about that item. Hosts that support the openai/ui global entrypoint, such as Codex desktop, also list the panel in the sidebar. Clients without MCP Apps still get the text report from #287.

How it is built:

  • The panel is React on @openai/apps-sdk-ui. npm run build:attention-panel bundles it into one HTML file and writes src/apps/attention/panel-html.ts. The generated file is committed, and oxfmt ignores it.
  • The same resources/list and resources/read handlers that serve skills also serve the panel.
  • The panel's Open in dashboard button opens only https://dash.cloudflare.com links.

The UI packages are devDependencies. package-lock.json grows by about 260 packages, and the Worker gets no new runtime dependency. The lockfile change only adds and re-sorts entries, all from registry.npmjs.org.

npm run check passes (500 tests). I ran the panel in Codex CLI and Codex desktop against wrangler dev, with a real token on an internal account. It showed live Workers issues. A test Worker that threw errors appeared as an issue, and then I deleted the Worker. I also checked the panel in the MCP Apps reference host, in light and dark themes. I have not seen it inside ChatGPT.

The sidebar entry in Codex desktop and the panel it opens. Account and Worker names are blurred. These screenshots are from before two changes: the permission now reads "Account Security Center Insights Read", and counts have commas ("Seen 527,069 times").

Codex desktop sidebar with Cloudflare: needs attention

The attention panel listing Workers issues and a Security insights permission hint

Open questions:

  • In the sidebar view, Refresh works. I did not see Look into this start a follow-up there. Inline, it does.
  • Workers issues appear only for Workers with observability.issues on (fix(config): turn on Workers Issues with observability.issues #281).
  • Next PR: attach the same item to MCP Events deliveries, so a pushed alert and the panel describe a problem the same way.

@acoyfellow
acoyfellow force-pushed the jcoeyman/attention-panel branch 2 times, most recently from 34431df to be0230d Compare October 12, 2026 21:02
@acoyfellow acoyfellow changed the title feat(apps): show_attention, an MCP App panel of what needs action in an account feat(apps): show what needs attention in an account as an MCP App panel Oct 12, 2026
@acoyfellow
acoyfellow force-pushed the jcoeyman/attention-panel branch from be0230d to cf57a36 Compare October 13, 2026 00:03
…n an account

show_attention lists notifications that fired in the last 7 days, open
Security Center insights and active Workers Observability issues, most
severe first, as text and structuredContent. It is registered in both tool
modes.

- Feeds are read with the caller's token. A refused feed names the missing
  permission, a 5xx is retried, and a feed that fails is reported instead of
  shown as empty.
- An account_id the session cannot reach is rejected before any feed call.
  Only https://dash.cloudflare.com links are kept.
@acoyfellow
acoyfellow force-pushed the jcoeyman/attention-panel branch from cf57a36 to aa6d74c Compare October 14, 2026 12:56
@acoyfellow acoyfellow changed the title feat(apps): show what needs attention in an account as an MCP App panel feat(apps): render show_attention as an MCP App panel and sidebar entry Oct 14, 2026
…rd links

Security Center returns dashboard translation keys in resolve_text and
relative paths such as /:account_id/turnstile in resolve_link. Fall back to
the insight class for keys, and resolve relative paths on dash.cloudflare.com.
Builds on the show_attention report. MCP Apps clients render it as a panel
(ui://cloudflare/attention-panel.html) with a "Look into this" button per
item; hosts with the openai/ui global entrypoint also list it in the
sidebar. Other clients still get the text report.

- The panel is React on @openai/apps-sdk-ui, bundled into one HTML file by
  npm run build:attention-panel and committed as panel-html.ts, which oxfmt
  ignores.
- The panel resource is served by the same resources/list and
  resources/read handlers as skills.
- The UI packages are devDependencies, so the lockfile grows but the Worker
  ships no new runtime dependency.
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