From 286fcdafd580b13619bb28033a8c710e0ecb13d2 Mon Sep 17 00:00:00 2001 From: John Fawcett Date: Fri, 1 May 2026 10:34:56 -0500 Subject: [PATCH] docs(kilo-docs): list all 21 mayor tools in the Mayor page Replace the abbreviated 6-tool table with the complete list of all 21 gt_* tools grouped by category: Work Creation, Convoy Management, Bead Management, Agent Management, and Town & UI. --- .../FlowDiagram/diagrams/adversarial-loop.ts | 2 +- .../FlowDiagram/diagrams/bead-lifecycle.ts | 48 ++++++++--------- .../FlowDiagram/diagrams/convoy-execution.ts | 14 ++--- .../pages/code-with-ai/gastown/mayor.md | 51 ++++++++++++++++--- 4 files changed, 73 insertions(+), 42 deletions(-) diff --git a/packages/kilo-docs/components/FlowDiagram/diagrams/adversarial-loop.ts b/packages/kilo-docs/components/FlowDiagram/diagrams/adversarial-loop.ts index 22104c49aab..da0a57fbbb3 100644 --- a/packages/kilo-docs/components/FlowDiagram/diagrams/adversarial-loop.ts +++ b/packages/kilo-docs/components/FlowDiagram/diagrams/adversarial-loop.ts @@ -83,7 +83,7 @@ const nodes: Node[] = [ position: { x: 240, y: 220 }, data: { label: "Polecat revises" }, sourcePosition: "right" as Position, - targetPosition: "left" as Position, + targetPosition: "top" as Position, style: { ...baseStyle, background: "rgba(59,130,246,0.1)", diff --git a/packages/kilo-docs/components/FlowDiagram/diagrams/bead-lifecycle.ts b/packages/kilo-docs/components/FlowDiagram/diagrams/bead-lifecycle.ts index 950fd65b117..0f0366822aa 100644 --- a/packages/kilo-docs/components/FlowDiagram/diagrams/bead-lifecycle.ts +++ b/packages/kilo-docs/components/FlowDiagram/diagrams/bead-lifecycle.ts @@ -12,14 +12,16 @@ const nodeBase = { textAlign: "center" as const, minWidth: "120px", }, -} +} as const satisfies Pick -const nodes: Node[] = [ +const nodes = [ { id: "open", - position: { x: 0, y: 100 }, + position: { x: 0, y: 120 }, data: { label: "open" }, - sourcePosition: "top" as Position, + // not sure why, but using Position.Top results in everything breaking at runtime + // we just settle for casing as Position instead + sourcePosition: "right" as Position, targetPosition: "top" as Position, style: { ...nodeBase.style, @@ -30,9 +32,9 @@ const nodes: Node[] = [ }, { id: "in_progress", - position: { x: 200, y: 100 }, + position: { x: 200, y: 120 }, data: { label: "in_progress" }, - sourcePosition: "top" as Position, + sourcePosition: "right" as Position, targetPosition: "top" as Position, style: { ...nodeBase.style, @@ -43,9 +45,9 @@ const nodes: Node[] = [ }, { id: "in_review", - position: { x: 420, y: 100 }, + position: { x: 420, y: 120 }, data: { label: "in_review" }, - sourcePosition: "top" as Position, + sourcePosition: "right" as Position, targetPosition: "top" as Position, style: { ...nodeBase.style, @@ -56,7 +58,7 @@ const nodes: Node[] = [ }, { id: "closed", - position: { x: 640, y: 100 }, + position: { x: 640, y: 120 }, data: { label: "closed" }, sourcePosition: "top" as Position, targetPosition: "top" as Position, @@ -69,7 +71,7 @@ const nodes: Node[] = [ }, { id: "failed", - position: { x: 310, y: 240 }, + position: { x: 310, y: 280 }, data: { label: "failed" }, sourcePosition: "top" as Position, targetPosition: "top" as Position, @@ -80,14 +82,14 @@ const nodes: Node[] = [ color: "#ef4444", }, }, -] +] as const satisfies Node[] const edgeBase = { style: { strokeWidth: 2 }, animated: true, } -const edges: Edge[] = [ +const edges = [ { id: "open-progress", source: "open", @@ -104,7 +106,7 @@ const edges: Edge[] = [ target: "in_review", type: "smoothstep", label: "work complete", - labelStyle: { fontSize: 10, fontFamily: "'JetBrains Mono', monospace", fill: "#888" }, + labelStyle: { fontSize: 10, fontFamily: "'JetBrains Mono', monospace", fill: "#888", zIndex: 10 }, ...edgeBase, style: { ...edgeBase.style, stroke: "#fbbf24" }, }, @@ -118,28 +120,20 @@ const edges: Edge[] = [ ...edgeBase, style: { ...edgeBase.style, stroke: "#8b5cf6" }, }, - { - id: "review-open", - source: "in_review", - target: "open", - type: "smoothstep", - label: "review rejected", - labelStyle: { fontSize: 10, fontFamily: "'JetBrains Mono', monospace", fill: "#888" }, - style: { strokeWidth: 2, stroke: "#f97316", strokeDasharray: "5 3" }, - }, { id: "progress-failed", source: "in_progress", target: "failed", type: "smoothstep", label: "max retries", - labelStyle: { fontSize: 10, fontFamily: "'JetBrains Mono', monospace", fill: "#888" }, - style: { strokeWidth: 2, stroke: "#ef4444", strokeDasharray: "5 3" }, + labelStyle: { fontSize: 10, fontFamily: "'JetBrains Mono', monospace", fill: "#888", marginTop: "100px" }, + ...edgeBase, + style: { ...edgeBase.style, strokeWidth: 2, stroke: "#ef4444", strokeDasharray: "5 3" }, }, -] +] as const satisfies Edge[] -export const beadLifecycle: DiagramDefinition = { +export const beadLifecycle = { nodes, edges, caption: "The bead lifecycle — from open to closed, with adversarial review in between", -} +} as const satisfies DiagramDefinition diff --git a/packages/kilo-docs/components/FlowDiagram/diagrams/convoy-execution.ts b/packages/kilo-docs/components/FlowDiagram/diagrams/convoy-execution.ts index 40a4f6ddeeb..b96ca725c0a 100644 --- a/packages/kilo-docs/components/FlowDiagram/diagrams/convoy-execution.ts +++ b/packages/kilo-docs/components/FlowDiagram/diagrams/convoy-execution.ts @@ -24,13 +24,13 @@ const nodes: Node[] = [ id: "bead1", position: { x: 0, y: 0 }, data: { label: "1. Explore codebase" }, - sourcePosition: "right" as Position, + sourcePosition: "bottom" as Position, targetPosition: "left" as Position, style: { ...stageStyle(closedColor), color: "#8b5cf6" }, }, { id: "review1", - position: { x: 0, y: 70 }, + position: { x: 0, y: 100 }, data: { label: "✓ reviewed" }, sourcePosition: "right" as Position, targetPosition: "top" as Position, @@ -40,13 +40,13 @@ const nodes: Node[] = [ id: "bead2", position: { x: 200, y: 0 }, data: { label: "2. Design schema" }, - sourcePosition: "right" as Position, + sourcePosition: "bottom" as Position, targetPosition: "left" as Position, style: { ...stageStyle(closedColor), color: "#8b5cf6" }, }, { id: "review2", - position: { x: 200, y: 70 }, + position: { x: 200, y: 100 }, data: { label: "✓ reviewed" }, sourcePosition: "right" as Position, targetPosition: "top" as Position, @@ -56,13 +56,13 @@ const nodes: Node[] = [ id: "bead3", position: { x: 400, y: 0 }, data: { label: "3. Implement API" }, - sourcePosition: "right" as Position, + sourcePosition: "bottom" as Position, targetPosition: "left" as Position, style: { ...stageStyle(activeColor), color: "#3b82f6" }, }, { id: "review3", - position: { x: 400, y: 70 }, + position: { x: 400, y: 100 }, data: { label: "⟳ in review" }, sourcePosition: "right" as Position, targetPosition: "top" as Position, @@ -72,7 +72,7 @@ const nodes: Node[] = [ id: "bead4", position: { x: 600, y: 0 }, data: { label: "4. Write tests" }, - sourcePosition: "right" as Position, + sourcePosition: "bottom" as Position, targetPosition: "left" as Position, style: { ...stageStyle(pendingColor), color: "#666", opacity: 0.6 }, }, diff --git a/packages/kilo-docs/pages/code-with-ai/gastown/mayor.md b/packages/kilo-docs/pages/code-with-ai/gastown/mayor.md index 739c4a30bed..aef87cc0a85 100644 --- a/packages/kilo-docs/pages/code-with-ai/gastown/mayor.md +++ b/packages/kilo-docs/pages/code-with-ai/gastown/mayor.md @@ -63,16 +63,53 @@ The Mayor can modify town settings on your behalf through natural language. ## Mayor Tools -The Mayor has access to specialized tools for town management: +The Mayor has access to 21 specialized tools for town management: + +### Work Creation | Tool | What it does | |---|---| -| `gt_sling` | Create a bead or convoy | -| `gt_convoy_close` | Force-close a stuck convoy | -| `gt_agent_reset` | Reset a stuck agent | -| `gt_bead_delete` | Delete beads (single or bulk) | -| `gt_report_bug` | File a bug report about town behavior | -| `gt_done` | Mark work as complete | +| `gt_sling` | Delegate a single task to a polecat agent in a specific rig | +| `gt_sling_batch` | Create a multi-bead convoy with dependency ordering, merge mode, and staging options | + +### Convoy Management + +| Tool | What it does | +|---|---| +| `gt_convoy_status` | Show detailed status of a convoy — each bead's progress and assignee | +| `gt_convoy_start` | Start a staged convoy — begin agent dispatch | +| `gt_convoy_close` | Force-close a convoy and optionally its tracked beads | +| `gt_convoy_update` | Edit convoy metadata (merge mode, feature branch) | +| `gt_convoy_add_bead` | Add an existing bead to a convoy's tracking | +| `gt_convoy_remove_bead` | Remove a bead from a convoy | +| `gt_list_convoys` | List active convoys with progress counts | + +### Bead Management + +| Tool | What it does | +|---|---| +| `gt_bead_update` | Edit a bead's status, title, body, priority, labels, or dependencies | +| `gt_bead_reassign` | Reassign a bead to a different agent | +| `gt_bead_delete` | Delete one or more beads (supports bulk — up to 5000) | +| `gt_list_beads` | List beads in a rig, filterable by status and type | + +### Agent Management + +| Tool | What it does | +|---|---| +| `gt_agent_reset` | Force-reset an agent to idle, unhooking it from any bead | +| `gt_nudge` | Send a real-time nudge to a polecat (immediate, wait-idle, or queued) | +| `gt_list_agents` | List all agents in a rig with their roles and status | +| `gt_mail_send` | Send a persistent mail message to any agent in any rig | + +### Town & UI + +| Tool | What it does | +|---|---| +| `gt_list_rigs` | List all rigs (repositories) in the town | +| `gt_ui_action` | Trigger UI actions — open drawers, navigate pages, highlight items | +| `gt_escalation_acknowledge` | Acknowledge an escalation as reviewed | +| `gt_report_bug` | File a bug report on the Gastown GitHub repo (checks for duplicates first) | These tools are used automatically when you make requests — you don't need to invoke them directly.