Skip to content

T-REZU-hook-rows-in-the-component-tree-show-the-event-and-command

State: closed/done · Impact: medium · Complexity: medium

A hook row in the navigation tree shows only its file name (lint-on-write). Nothing in the tree says which event fires it or what it runs, so a plugin with several hooks is a list of file names the reader has to open one by one.

LocationRole today
solutions/determined/experiences/agent-pants/app/components/ApComponentTree.vueRows render component.name with the kind icon and a targets badge
solutions/determined/packages/platform/src/generated/types.ts AgentSkillComponentThe listing row carries name, description, kind, plugin, marketplace, targets, resources, path, bundled. No hook fields
solutions/determined/crates/determined-core/src/wire/mod.rs AgentSkillComponentThe Rust side of the same row

A hook row reads as the event first, then the file name, with the registered command (or prompt / url, whichever the hook type carries) as a secondary line under it, truncated. Something like PostToolUse · lint-on-write over just lint. A hook missing its event shows the file name alone with the existing missing-event styling.

  1. Add an optional hook summary to the listing row on the wire (event, matcher, payload as the command / prompt / url text, hook_type), filled by the listing in determined-agent-skills from the note’s frontmatter. Regenerate the ontogen client.
  2. Render it in ApComponentTree.vue for kind === 'hook' rows; the search hit list uses the same line.
  3. Unit test on the tree with a hook fixture; a walkthrough e2e assertion on the row text.
  • A hook note with event: PostToolUse and command: just lint shows both in its tree row without opening the note.
  • Skills, commands and agents render exactly as before.
  • A hook with no event does not crash the row and still opens.

Found by the agent-pants bug survey, N-5LD4-bug-sweep-2026-09-12-agent-pants (the user’s review of the hook wizard on #2046).

Done in #2076.


← Back to Tasks