{
  "id": "chat-core",
  "title": "Chat Core",
  "type": "library",
  "tier": "starlark",
  "version": "0.2.0",
  "description": "Core chat library — conversations, messages, participants, read cursors. Usable by other packages via lib.require().",
  "author": "switchboard",

  "permissions": ["db.write", "realtime.publish"],

  "exports": [
    "create", "send", "history",
    "add_participant", "remove_participant", "mark_read"
  ],

  "api_routes": [
    {"method": "GET",    "path": "/conversations"},
    {"method": "POST",   "path": "/conversations"},
    {"method": "GET",    "path": "/conversations/*"},
    {"method": "PUT",    "path": "/conversations/*"},
    {"method": "DELETE", "path": "/conversations/*"},
    {"method": "GET",    "path": "/messages/*"},
    {"method": "POST",   "path": "/messages/*"},
    {"method": "PUT",    "path": "/messages/*"},
    {"method": "DELETE", "path": "/messages/*"},
    {"method": "GET",    "path": "/participants/*"},
    {"method": "POST",   "path": "/participants/*"},
    {"method": "DELETE", "path": "/participants/*"},
    {"method": "POST",   "path": "/read/*"},
    {"method": "GET",    "path": "/search"},
    {"method": "GET",    "path": "/unread"}
  ],

  "db_tables": {
    "conversations": {
      "columns": {
        "title":      "text",
        "type":       "text",
        "created_by": "text",
        "updated_at": "text"
      },
      "indexes": [["created_by"], ["updated_at"]]
    },
    "participants": {
      "columns": {
        "conversation_id":  "text",
        "participant_id":   "text",
        "participant_type": "text",
        "display_name":     "text",
        "role":             "text",
        "joined_at":        "text"
      },
      "indexes": [
        ["conversation_id"],
        ["participant_id"],
        ["conversation_id", "participant_id"]
      ]
    },
    "messages": {
      "columns": {
        "conversation_id": "text",
        "participant_id":  "text",
        "content":         "text",
        "content_type":    "text",
        "edited_at":       "text"
      },
      "indexes": [["conversation_id"]]
    },
    "read_cursors": {
      "columns": {
        "conversation_id":    "text",
        "participant_id":     "text",
        "last_read_message_id": "text"
      },
      "indexes": [["conversation_id", "participant_id"]]
    }
  },

  "schema_version": 1
}
