feat: add workflow dashboard for queue, leases, and next safe action (Closes #605)
Read-only MCP tool gitea_workflow_dashboard plus mcp-menu entry so operators and LLMs can see PR/issue queues, leases, terminal locks, blockers, and exact next-safe prompts without reconstructing state from comments. Never assigns work or presents blocked/terminal-locked items as safe.
This commit is contained in:
@@ -10,6 +10,7 @@ DOCS = REPO_ROOT / "docs" / "mcp-menu.md"
|
||||
|
||||
REQUIRED_MENU_LABELS = (
|
||||
"Project status / root checkout health",
|
||||
"Workflow dashboard (queue, leases, next safe action)",
|
||||
"Author workflow prompts",
|
||||
"Reviewer workflow prompts",
|
||||
"Merger workflow prompts",
|
||||
@@ -105,6 +106,23 @@ class TestMcpMenuScript(unittest.TestCase):
|
||||
self.assertIn("./mcp-menu.sh", docs_text)
|
||||
self.assertIn("placeholder", docs_text.lower())
|
||||
|
||||
def test_workflow_dashboard_menu_entry_is_read_only(self):
|
||||
# #605: dashboard entry documents gitea_workflow_dashboard and never
|
||||
# mutates Gitea / assigns work from the shell menu.
|
||||
label = "Workflow dashboard (queue, leases, next safe action)"
|
||||
self.assertIn(label, self.content)
|
||||
dash_fn = self._extract_function("show_workflow_dashboard_help")
|
||||
self.assertIn("gitea_workflow_dashboard", dash_fn)
|
||||
self.assertIn("gitea_allocate_next_work", dash_fn)
|
||||
self.assertIn("Read-only", dash_fn)
|
||||
self.assertIn("never presented as safe", dash_fn.lower())
|
||||
for bad in ("gitea_merge_pr", "gitea_submit_pr_review", "git push"):
|
||||
with self.subTest(bad=bad):
|
||||
self.assertNotIn(bad, dash_fn)
|
||||
docs_text = DOCS.read_text(encoding="utf-8")
|
||||
self.assertIn("gitea_workflow_dashboard", docs_text)
|
||||
self.assertIn("Workflow dashboard", docs_text)
|
||||
|
||||
def test_reviewer_skip_stale_request_changes_prompt_discoverable(self):
|
||||
# #482: the skip-already-reviewed-stale-REQUEST_CHANGES reviewer prompt
|
||||
# must be reachable from the reviewer menu and documented.
|
||||
|
||||
Reference in New Issue
Block a user