{
  "id": "com.lattice.tasks",
  "name": "Tasks",
  "icon": "✅",
  "color": "#10b981",
  "description": "Manage tasks with priorities, due dates and categories.",
  "requested_permissions": {
    "storage": [
      "kv",
      "sql"
    ],
    "network": {
      "allowlist": []
    },
    "events": {
      "task-created": {
        "description": "A task was created.",
        "schema": {
          "type": "object",
          "properties": {
            "id": {
              "type": "integer",
              "description": "Task ID."
            },
            "title": {
              "type": "string",
              "description": "Task title."
            },
            "description": {
              "type": "string",
              "description": "Task details; empty means none."
            },
            "priority": {
              "type": "string",
              "description": "Priority text, typically low, medium or high."
            },
            "due_date": {
              "type": "string",
              "description": "Due date, local YYYY-MM-DD; empty means no deadline."
            },
            "category": {
              "type": "string",
              "description": "Category; empty means uncategorized."
            }
          },
          "required": [
            "id",
            "title",
            "description",
            "priority",
            "due_date",
            "category"
          ]
        }
      },
      "task-completed": {
        "description": "A task was completed.",
        "schema": {
          "type": "object",
          "properties": {
            "id": {
              "type": "integer",
              "description": "Task ID."
            },
            "title": {
              "type": "string",
              "description": "Task title."
            },
            "completed_at": {
              "type": "string",
              "description": "Completion time, UTC ISO 8601 timestamp."
            }
          },
          "required": [
            "id",
            "title",
            "completed_at"
          ]
        }
      },
      "task-updated": {
        "description": "A task was updated.",
        "schema": {
          "type": "object",
          "properties": {
            "id": {
              "type": "integer",
              "description": "Task ID."
            },
            "title": {
              "type": "string",
              "description": "Task title."
            },
            "description": {
              "type": "string",
              "description": "Task details; empty means none."
            },
            "priority": {
              "type": "string",
              "description": "Priority text, typically low, medium or high."
            },
            "due_date": {
              "type": "string",
              "description": "Due date, local YYYY-MM-DD; empty means no deadline."
            },
            "category": {
              "type": "string",
              "description": "Category; empty means uncategorized."
            }
          },
          "required": [
            "id",
            "title",
            "description",
            "priority",
            "due_date",
            "category"
          ]
        }
      },
      "task-removed": {
        "description": "A task was removed.",
        "schema": {
          "type": "object",
          "properties": {
            "id": {
              "type": "integer",
              "description": "Task ID."
            },
            "title": {
              "type": "string",
              "description": "Task title."
            }
          },
          "required": [
            "id",
            "title"
          ]
        }
      }
    },
    "listeners": {
      "add-task": {
        "description": "Create an incomplete task.",
        "schema": {
          "type": "object",
          "properties": {
            "title": {
              "type": "string",
              "description": "Nonempty task title."
            },
            "description": {
              "type": "string",
              "description": "Task details; omitted or empty means none."
            },
            "priority": {
              "type": "string",
              "description": "Priority text, typically low/medium/high; omitted or empty defaults to medium."
            },
            "due_date": {
              "type": "string",
              "description": "Due date, local YYYY-MM-DD; omitted or empty means no deadline."
            },
            "category": {
              "type": "string",
              "description": "Category; omitted or empty means uncategorized."
            }
          },
          "required": [
            "title"
          ]
        }
      }
    }
  },
  "source": {
    "assets": [
      "index.html",
      "app.js",
      "ui.css",
      "emits.js",
      "listens.js"
    ]
  }
}