{
  "status": "proposed contracts; not a deployed component library",
  "components": {
    "Conversation": {
      "purpose": "Capture intent and clarify the next step",
      "states": [
        "idle",
        "sending",
        "error"
      ],
      "inputs": [
        "messages",
        "context",
        "suggestions"
      ]
    },
    "ModeSelector": {
      "purpose": "Choose a life context while retaining user control",
      "states": [
        "default",
        "selected",
        "disabled"
      ],
      "inputs": [
        "mode",
        "label",
        "theme"
      ]
    },
    "PlanCard": {
      "purpose": "Show request, cadence and scheduling status",
      "states": [
        "draft",
        "scheduled",
        "paused"
      ],
      "inputs": [
        "request",
        "frequency",
        "status",
        "source"
      ]
    },
    "TaskCard": {
      "purpose": "Show persisted progress and recoverable states",
      "states": [
        "running",
        "paused",
        "failed",
        "awaiting_approval",
        "completed",
        "cancelled"
      ],
      "inputs": [
        "task_id",
        "status",
        "revision",
        "steps"
      ]
    },
    "DecisionCard": {
      "purpose": "Make consequential choices legible and explicit",
      "states": [
        "awaiting_approval",
        "submitting",
        "completed",
        "error"
      ],
      "inputs": [
        "task_id",
        "options",
        "revision",
        "action"
      ],
      "requirements": [
        "explicit user confirmation",
        "idempotent server action",
        "conflict handling"
      ]
    },
    "ThingCard": {
      "purpose": "Keep a plan, media or artifact findable",
      "states": [
        "available",
        "loading",
        "error"
      ],
      "inputs": [
        "type",
        "title",
        "updated_at",
        "source"
      ]
    }
  }
}
