Skip to content

Show effort on issue-view agent rows, conversation rows, and Agents-page conversation entries #4510

Description

@eltmon

Scope (split from PAN-4259, S7 of PAN-4249)

PAN-4259 was planned on 2026-10-03 and split to keep its plan within the plan-surface limit. PAN-4259 keeps the cost ledger, sessions.json, the pan cost effort report, native-agent rows on the Agents page, and pan status / pan show. This issue takes the remaining display surfaces:

  • Issue view agent rows. Add effort and effortSource to SessionNode (packages/contracts/src/types.ts :686-717), fill them from the agent's state.json in src/dashboard/server/routes/command-deck.ts (:358-361, next to model: state.model || 'unknown'), carry them through AgentRowModel (src/dashboard/frontend/src/components/issue-view/types.ts ~:88-90, built in useIssueView.ts ~:211-236), and render them next to the model in AgentStepRow.tsx (cockpit ~:753, rail ~:816).
  • Conversation rows. ConversationList.tsx already declares effort?: string | null (:56-57) but nothing renders it. Render it next to the model in ConversationRow.tsx (:603-609).
  • Agents page conversation entries. DirectoryConversationRow (src/dashboard/server/services/agent-directory.ts ~:83-95) has no effort, so conversation entries on the Agents page show none. Select the conversation's stored effort and set DirectoryEntry.effort on conversation entries (the optional effort/effortSource fields land in PAN-4259).

Use the effort label helper that PAN-4259 adds to src/dashboard/frontend/src/components/chat/effortChip.ts so every surface renders effort the same way.

The conversation panel already shows the effective effort and its source in the composer effort chip (PAN-4255), so the conversation header needs no second display.

Acceptance criteria

  • A unit test shows an issue-view agent row renders the agent's effort and source, and renders nothing for a legacy agent whose state.json has no effort.
  • A unit test shows a ConversationRow renders the conversation's effort next to its model.
  • A server test shows a conversation entry from buildDirectoryEntries carries the conversation's stored effort.
  • configuration/effort.mdx "What honors it today" lists the issue view and conversation rows.

Blocked by #4259 (it adds the shared label helper and the optional DirectoryEntry.effort fields).

Rules: effort defaults stay high and never xhigh/max (sync-sources/rules/effort-high-default.md). Do not add a new ?? 'high' fallback or an effort-level enum copy; npm run lint:effort ratchets both.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions