Code Inbox

manifest.json 338 lines

Files · 8
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338{
  "id": "com.lattice.codeinbox",
  "name": "Code Inbox",
  "icon": "\u2318",
  "color": "#4f46e5",
  "description": "Organize code notification threads in GitHub notifications format.",
  "provenance": "GitHub REST notifications thread response, verified 2026-10-14: https://example.invalid/resource . Adopted id, reason, unread, updated_at, last_read_at, url, subscription_url; repository.full_name/html_url -> repository_full_name/repository_html_url; subject.title/type/url/latest_comment_url -> subject_title/subject_type/subject_url/subject_latest_comment_url. unread is projected from boolean to SQLite 0/1. Thread IDs stay strings; subject URLs remain API URLs. Reason is open text because GitHub adds reasons. Local receive/read/update events and the receive listener are fixture conventions, not GitHub webhooks.",
  "requested_permissions": {
    "storage": [
      "sql"
    ],
    "network": {
      "allowlist": []
    },
    "events": {
      "thread-received": {
        "description": "A notification thread was received.",
        "schema": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "description": "Notification thread ID."
            },
            "repository_full_name": {
              "type": "string",
              "description": "Repository as owner/repository."
            },
            "repository_html_url": {
              "type": [
                "string",
                "null"
              ],
              "description": "Repository browser URL; null means unspecified."
            },
            "subject_title": {
              "type": "string",
              "description": "Discussion title."
            },
            "subject_type": {
              "type": "string",
              "description": "GitHub subject type, e.g. Issue, PullRequest, Commit or Release."
            },
            "subject_url": {
              "type": [
                "string",
                "null"
              ],
              "description": "Subject API URL; null means unspecified."
            },
            "subject_latest_comment_url": {
              "type": [
                "string",
                "null"
              ],
              "description": "Latest comment API URL; null means unspecified."
            },
            "reason": {
              "type": "string",
              "description": "Notification reason, e.g. mention, review_requested, assign or subscribed."
            },
            "unread": {
              "type": "integer",
              "description": "Unread flag: 0=read, 1=unread.",
              "enum": [
                0,
                1
              ]
            },
            "updated_at": {
              "type": "string",
              "description": "Thread update timestamp, ISO 8601 with timezone."
            },
            "last_read_at": {
              "type": [
                "string",
                "null"
              ],
              "description": "Last-read timestamp, ISO 8601 with timezone; null means never read."
            },
            "url": {
              "type": "string",
              "description": "Notification thread API URL."
            },
            "subscription_url": {
              "type": [
                "string",
                "null"
              ],
              "description": "Thread subscription API URL; null means unspecified."
            }
          },
          "required": [
            "id",
            "repository_full_name",
            "subject_title",
            "subject_type",
            "reason",
            "unread",
            "updated_at",
            "url"
          ],
          "additionalProperties": false
        }
      },
      "thread-updated": {
        "description": "A thread received new activity or a changed reason.",
        "schema": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "description": "Notification thread ID."
            },
            "repository_full_name": {
              "type": "string",
              "description": "Repository as owner/repository."
            },
            "repository_html_url": {
              "type": [
                "string",
                "null"
              ],
              "description": "Repository browser URL; null means unspecified."
            },
            "subject_title": {
              "type": "string",
              "description": "Discussion title."
            },
            "subject_type": {
              "type": "string",
              "description": "GitHub subject type, e.g. Issue, PullRequest, Commit or Release."
            },
            "subject_url": {
              "type": [
                "string",
                "null"
              ],
              "description": "Subject API URL; null means unspecified."
            },
            "subject_latest_comment_url": {
              "type": [
                "string",
                "null"
              ],
              "description": "Latest comment API URL; null means unspecified."
            },
            "reason": {
              "type": "string",
              "description": "Notification reason, e.g. mention, review_requested, assign or subscribed."
            },
            "unread": {
              "type": "integer",
              "description": "Unread flag: 0=read, 1=unread.",
              "enum": [
                0,
                1
              ]
            },
            "updated_at": {
              "type": "string",
              "description": "Thread update timestamp, ISO 8601 with timezone."
            },
            "last_read_at": {
              "type": [
                "string",
                "null"
              ],
              "description": "Last-read timestamp, ISO 8601 with timezone; null means never read."
            },
            "url": {
              "type": "string",
              "description": "Notification thread API URL."
            },
            "subscription_url": {
              "type": [
                "string",
                "null"
              ],
              "description": "Thread subscription API URL; null means unspecified."
            }
          },
          "required": [
            "id",
            "repository_full_name",
            "subject_title",
            "subject_type",
            "reason",
            "unread",
            "updated_at",
            "url"
          ],
          "additionalProperties": false
        }
      },
      "thread-read": {
        "description": "A thread was marked read.",
        "schema": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "description": "Notification thread ID."
            },
            "repository_full_name": {
              "type": "string",
              "description": "Repository as owner/repository."
            },
            "subject_title": {
              "type": "string",
              "description": "Discussion title."
            },
            "last_read_at": {
              "type": [
                "string",
                "null"
              ],
              "description": "Last-read timestamp, ISO 8601 with timezone; null means never read."
            },
            "unread": {
              "type": "integer",
              "description": "Unread flag: 0=read, 1=unread.",
              "enum": [
                0,
                1
              ],
              "const": 0
            }
          },
          "required": [
            "id",
            "subject_title",
            "unread",
            "last_read_at"
          ],
          "additionalProperties": false
        }
      }
    },
    "listeners": {
      "receive-thread": {
        "description": "Import a notification thread if its ID is absent.",
        "schema": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "description": "Notification thread ID."
            },
            "repository_full_name": {
              "type": "string",
              "description": "Repository as owner/repository."
            },
            "repository_html_url": {
              "type": [
                "string",
                "null"
              ],
              "description": "Repository browser URL; omitted or null means unspecified."
            },
            "subject_title": {
              "type": "string",
              "description": "Discussion title."
            },
            "subject_type": {
              "type": "string",
              "description": "GitHub subject type, e.g. Issue, PullRequest, Commit or Release."
            },
            "subject_url": {
              "type": [
                "string",
                "null"
              ],
              "description": "Subject API URL; omitted or null means unspecified."
            },
            "subject_latest_comment_url": {
              "type": [
                "string",
                "null"
              ],
              "description": "Latest comment API URL; omitted or null means unspecified."
            },
            "reason": {
              "type": "string",
              "description": "Notification reason, e.g. mention, review_requested, assign or subscribed."
            },
            "unread": {
              "type": "integer",
              "description": "Unread flag: 0=read, 1=unread; omitted defaults to 1.",
              "enum": [
                0,
                1
              ]
            },
            "updated_at": {
              "type": "string",
              "description": "Thread update timestamp, ISO 8601 with timezone."
            },
            "last_read_at": {
              "type": [
                "string",
                "null"
              ],
              "description": "Last-read timestamp, ISO 8601 with timezone; omitted or null means never read."
            },
            "url": {
              "type": "string",
              "description": "Notification thread API URL."
            },
            "subscription_url": {
              "type": [
                "string",
                "null"
              ],
              "description": "Thread subscription API URL; omitted or null means unspecified."
            }
          },
          "required": [
            "id",
            "repository_full_name",
            "subject_title",
            "subject_type",
            "reason",
            "updated_at",
            "url"
          ],
          "additionalProperties": false
        }
      }
    }
  },
  "x-effects": {
    "receive-thread": {
      "table": "threads",
      "emits": "thread-received"
    }
  }
}