Skip to content

feat: structured plugin parsing#13711

Merged
sayan-oai merged 2 commits intomainfrom
dev/sayan/at-plugin-parsing
Mar 6, 2026
Merged

feat: structured plugin parsing#13711
sayan-oai merged 2 commits intomainfrom
dev/sayan/at-plugin-parsing

Conversation

@sayan-oai
Copy link
Collaborator

@sayan-oai sayan-oai commented Mar 6, 2026

What

Add structured @plugin parsing and TUI support for plugin mentions.

  • Core: switch from plain-text @display_name parsing to structured plugin://... mentions via UserInput::Mention and [$...](plugin://...) links in text, same pattern as apps/skills.
  • TUI: add plugin mention popup, autocomplete, and chips when typing $. Load plugin capability summaries and feed them into the composer; plugin mentions appear alongside skills and apps.
  • Generalize mention parsing to a sigil parameter, still defaults to $
image

Builds on #13510. Currently clients have to build their own id via plugin@marketplace and filter plugins to show by enabled, but we will add id and available as fields returned from plugin/list soon.

####Tests

Added tests, verified locally.

@sayan-oai
Copy link
Collaborator Author

@codex review this

Copy link
Contributor

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

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: 31ad86bcdd

ℹ️ 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".


### Example: Start a turn (invoke a plugin)

Invoke a plugin by including a UI mention token such as `@sample` in the text input and adding a `mention` input item with the exact `plugin://<plugin-name>@<marketplace-name>` path returned by `plugin/list`.
Copy link
Contributor

Choose a reason for hiding this comment

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

P2 Badge Stop claiming plugin/list returns plugin:// mention paths

This sentence says the plugin://<plugin>@<marketplace> mention path is “returned by plugin/list”, but that API currently returns plugin name/source/enabled only (no mention path/id). Clients following this doc will look for a non-existent field and fail to build valid plugin mentions unless they guess the key format.

Useful? React with 👍 / 👎.

Copy link
Collaborator

Choose a reason for hiding this comment

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

We will add it soon.it will be called id.

@@ -178,12 +178,14 @@ impl<'a> ToolMentions<'a> {
pub(crate) enum ToolMentionKind {
Copy link
Collaborator

Choose a reason for hiding this comment

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

maybe move this file out of the skills folder as it is used for more than just skills? no preference.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

fair, will split up that file in a follow up so this pr stays small.

@sayan-oai sayan-oai merged commit 8a54d3c into main Mar 6, 2026
54 of 57 checks passed
@sayan-oai sayan-oai deleted the dev/sayan/at-plugin-parsing branch March 6, 2026 19:08
@github-actions github-actions bot locked and limited conversation to collaborators Mar 6, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants