Skip to content

Let Exie and MCP clients create and manage saved views - #2723

Open
ejsmith wants to merge 10 commits into
mainfrom
feature/exie-saved-views
Open

ejsmith wants to merge 10 commits into
mainfrom
feature/exie-saved-views

Conversation

@ejsmith

@ejsmith ejsmith commented Nov 5, 2026 •

Copy link
Copy Markdown
Member

Lets users ask Exie for a saved view ("show production errors for this project") and get one, and exposes the same tools to MCP clients.

flowchart LR
  E[Exie] --> C{Delete or shared?}
  C -- needs confirmation --> U[User's next message]
  C -- otherwise --> T[Saved view tools]
  U --> T
  M[MCP clients] --> T
  T --> H[SavedViewHandler]
  H --> W[WebSocket update to open tabs]
Loading

What's new

Tool Scope Notes
list_saved_views saved-views:read Matches name or URL name
create_saved_view saved-views:write Exie uses the current project, or makes the model choose one
update_saved_view saved-views:write Slug stays stable on rename
delete_saved_view saved-views:write Includes shared views
  • Filters: the server builds chips and a filter string matching the UI's. filter-definition-contract.json is tested from both C# and TypeScript. Filter-only views reject criteria changes, and only query can replace them.
  • Defaults: private unless shared; last 7 days (none for the stream); open and regressed only (except sessions).
  • Confirmation: Exie's deletes and shared creates need a plain yes in a later user message, answering the latest request for that exact action, enforced on the server, so text in an event can't trigger them. MCP clients rely on the tool's destructive annotation.
  • App errors: page errors now render inside the app layout for every (app) route, so navigation and Exie's panel stay open. A view missing from the list is rechecked first, and a view deleted elsewhere clears with a toast.
  • OAuth: the new scopes are MCP-only and appear in the application form, grants list and consent page. :write amber badges are in the admin and grants tables, not on the consent page.

Upgrade behavior

Tokens don't gain scopes, so existing clients get forbidden until the user re-authorizes while requesting them. For applications with admin-saved scopes, an admin must add them first.

Decisions for review

  • Consent pre-selection: a self-registered client requesting everything gets saved-views:write on one click, as with stacks:write. Unchecking write scopes would be a separate change.
  • Not changed: Delta.Patch skips nulls, so the app's Save appears unable to clear a filter. The tools work around it; the app needs its own fix.

Testing

Check Result
CI on e925b0d33, including API, client, and all e2e shards All 23 checks passed
New browser tests for changed and deleted views Failed before the fix where the bug reproduced, pass now

Not run: any real model, including the new ProjectPage_CreatesASavedViewForTheCurrentProject eval. Exie has only run against a scripted model.

Adds list, create, update and delete saved view tools shared by Exie and
the MCP server, gated by new saved-views:read and saved-views:write scopes.
The server builds the view's filter definitions so views open unmodified,
and an open view that is deleted elsewhere clears instead of showing a 404.
# Conflicts:
#	docs/docs/api/index.md
#	src/Exceptionless.Core/Services/OAuthService.cs
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 5, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-08T15:24:36.580221Z 1144a0b New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f16a85471a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Fixes from review of the saved view tools:
- Require a confirmation in a later user message before Exie deletes a view
  or creates a shared one, enforced on the server
- Stop deleting views to share them, which lost columns and links
- Reject criteria changes on filter-only views instead of combining them, and
  keep the search chip last so an OR cannot widen a view
- Render page errors inside the app layout, recheck the list before treating a
  view as missing, and drop deleted views from history
- Make saved view creates and deletes immediately consistent
- Tell Exie which saved view is open, and require a project when none is current
- Remove the timeZone argument, which was never stored
- Clear the filter when the last criteria is removed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9c047a72ff

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Only a complete, plain yes confirms now, so 'yes, but not yet' can't approve a
delete. A shared view's confirmation also covers the project it will use, so
switching projects before confirming asks again.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a826f3697d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 39fd494d55

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3ecd8db5d5

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

ejsmith and others added 2 commits November 5, 2026 23:20
Limit protected assistant actions to a single confirmed turn and bind approval to the resolved project scope. Keep structured criteria outside OR searches and replace duplicate filter chips. Preserve browser Back navigation when a saved view is deleted, and align tool defaults with resource routes.

Add focused confirmation, query-parser, route-schema, and browser-history regressions.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8d96205a2c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Add the explicit Arrange sections required by the repository test conventions. Test behavior is unchanged.
@github-actions

github-actions Bot commented Nov 8, 2026

Copy link
Copy Markdown

Code Coverage

Package Line Rate Branch Rate Complexity Health
Exceptionless.AppHost 23% 22% 130 ❌
Exceptionless.Core 78% 70% 10993 ✔
Exceptionless.Insulation 51% 43% 370 ➖
Exceptionless.Web 87% 73% 10138 ✔
Summary 81% (29209 / 36072) 71% (14986 / 21237) 21631 ✔

This branch has not been deployed

No deployments
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.

2 participants