tix-tracker 0.12.0

A terminal issue tracker: markdown + YAML frontmatter issues with a kanban TUI and CLI
Documentation
#[allow(clippy::wildcard_imports)]
use super::*;

#[allow(clippy::too_many_lines)]
pub(super) fn descriptors() -> Vec<ToolDescriptor> {
    vec![
        ToolDescriptor {
            name: "capacity_list",
            description: "List every configured capacity entry (`tix capacity list`), in declaration order: its `id` (the `[capacity.<id>]` handle), its `scope` kind, the `reference` it names, the `display` label that reference resolves to, the `capacity` ceiling, the `unit` and whether it is `enabled`. The `display` is the resolved identity, so a generated instance's stable id and its name are visibly one scope (C-003). Read-only: no write, no History entry. An absent ceiling or unit is `null`, never `0`.",
            input_schema: json!({
                "type": "object",
                "additionalProperties": false,
                "properties": {}
            }),
        },
        ToolDescriptor {
            name: "capacity_show",
            description: "Show one configured capacity entry (`tix capacity show <REFERENCE>`): its handle, scope, the reference it names, the resolved `display`, the ceiling, the unit and whether it is enabled. `reference` is a cycle name **or** its stable id, a team label, or an assignee identity — the library folds the two spellings into one scope, so a ceiling configured under a generated instance's stable id is found by its name too (C-003). `scope` (a `cycle`/`team`/`assignee` kind) narrows an ambiguous reference to one entry. A reference that names nothing, or several entries, is refused with the CLI's own sentence and nothing is written. Read-only.",
            input_schema: json!({
                "type": "object",
                "additionalProperties": false,
                "required": ["reference"],
                "properties": {
                    "reference": { "type": "string", "description": "A cycle name or stable id, a team label, or an assignee identity." },
                    "scope": { "type": "string", "enum": ["cycle", "team", "assignee"], "description": "Restrict the reference to one scope kind when it is ambiguous." }
                }
            }),
        },
        ToolDescriptor {
            name: "capacity_calculate",
            description: "The shared capacity calculation for one scope (`tix capacity calculate --scope <KIND> --id <REFERENCE>`). Returns `state` (`configured`/`uncountable`/`unconfigured`), the ceiling and unit, `committed`/`completed`/`remaining`/`overflow`, the floored `utilization` percentage, the counted/uncounted/unestimated issue counts, the source reading, and every `diagnostic` with its `kind`, scope, numbers, `reason` and `remedy`. Absent values are `null` (text `-`), never `0`: an unconfigured scope is not zero capacity, and a missing conversion is not a zero total (C-004). The overflow is a report, never a mutation (C-006). The text mirrors the CLI's own output for the same call — its stdout joined with the findings it writes to stderr, where a finding about an estimate or a reference always renders and `warnings: true` adds the overflow report exactly as `--warnings` does; the structure always carries every diagnostic. Read-only: nothing is written.",
            input_schema: json!({
                "type": "object",
                "additionalProperties": false,
                "required": ["scope", "id"],
                "properties": {
                    "scope": { "type": "string", "enum": ["cycle", "team", "assignee"], "description": "The scope dimension to calculate." },
                    "id": { "type": "string", "description": "The scope reference: a cycle name or stable id, a team label, or an assignee identity." },
                    "warnings": { "type": "boolean", "description": "Also render the findings in the text, as `--warnings` does. The structured `diagnostics` always carry them." }
                }
            }),
        },
        ToolDescriptor {
            name: "capacity_snapshot",
            description: "Read a closed cycle's immutable capacity evidence (`tix capacity snapshot <CYCLE>`): the stable `snapshot_id`, `closed_at`/`closed_by`, the scope, the state and the values the close captured, the source reading, and the findings — plus the cycle record's `history` summaries, the `cycle_closed` and `cycle_reopened` entries the lifecycle appends, oldest first, so a reopen stays auditable (C-008). A snapshot with no capacity payload (written before this mission) is `evidence: \"none\"` — a value, never an error. Read-only, and immutable evidence: the payload is never recomputed from the live schedule (NFR-002). `cycle` names a **generated** cycle (its stable id or a name that resolves to it).",
            input_schema: json!({
                "type": "object",
                "additionalProperties": false,
                "required": ["cycle"],
                "properties": {
                    "cycle": { "type": "string", "description": "A generated cycle: its stable id (`<schedule-id>:<sequence>`) or a name that resolves to it." },
                    "warnings": { "type": "boolean", "description": "Also render the stored overflow report in the text, as `--warnings` does; a finding about an estimate or a reference always renders in the text, as the CLI writes it to stderr. The structured `diagnostics` always carry them all." }
                }
            }),
        },
    ]
}