Skip to content

Read-only desk tools for agents: queues, counts and review status #2591

Closed

Description

@pournasserian

Part of #2422 (F-DSK). Sixth slice: the read-only desk tools for agents (MCP-01: "DSK (read-only for review decisions)"), on the tool conventions from #2508. It fills the DSK row of McpCoverageTests.

Scope

  • Core (FluentCMS.Core.Builtin.Tools), DeskTools, an IToolProvider with three read-only tools:
    • get_desk_counts: how many sets or facts each queue holds, from IDeskQueues.CountAsync.
    • list_desk_queue: one page of a queue, newest or oldest first as the desk orders it. The queues are awaiting_review, checks_failed, stale_facts, recently_published and reverted. Awaiting me is a person's queue and is not offered to agents. Optional page and limit (1 to 200, 50 by default). A set is listed with its id, rationale, initiator, state, item count, the set it reverts and its times. A stale fact is listed as list_stale_facts shows it. The result says how to read a set further.
    • get_change_set_review: where a set stands in review and who decided what. It gives the state, when the set entered it, the rejection reason, the set it reverts, and each move in order with who made it and when, from the set's audit events.
  • Core (FluentCMS.Core.ChangeSets): ChangeSetMoves.Operations, the audit operations of opening a set and of each move, in one place. ChangeSetLists and the set view use it instead of their own copies.
  • Arguments are read with ToolArgumentsReader before any service, and refusals are ToolResult failures with hints, as the other tools do. No tool approves, rejects, publishes or reverts (MCP-06).
  • DeskToolsConformanceTests and the DSK row of McpCoverageTests.

Out of scope

Acceptance

  • An agent lists each queue and gets the same sets in the same order as the desk, with paging and the total.
  • get_desk_counts matches the desk's counts.
  • get_change_set_review on a rejected set gives the reason and the person who rejected it. On an unknown set it fails with change_set_not_found and a hint.
  • A bad queue name, page or limit is refused before any read, and every tool is marked read-only and appends no event.
  • Conformance and coverage tests pass, and the tools work over MCP on SQLite and PostgreSQL.
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

    area:deskReview desk (DSK)type:featureNew capabilityv2FluentCMS v2 (v2 branch)

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions