[{"data":1,"prerenderedAt":387},["ShallowReactive",2],{"navigation_docs":3,"-examples-inbox-cli":195,"-examples-inbox-cli-surround":382},[4,23,65,87,133,155,173],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":22},"Getting started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,14,18],{"title":11,"path":12,"stem":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":15,"path":16,"stem":17},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":19,"path":20,"stem":21},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start",false,{"title":24,"icon":25,"path":26,"stem":27,"children":28,"page":22},"Guides","i-lucide-compass","\u002Fguides","2.guides",[29,33,37,41,45,49,53,57,61],{"title":30,"path":31,"stem":32},"Authenticate","\u002Fguides\u002Fauthentication","2.guides\u002F1.authentication",{"title":34,"path":35,"stem":36},"Work with several forges","\u002Fguides\u002Fmultiple-forges","2.guides\u002F2.multiple-forges",{"title":38,"path":39,"stem":40},"Configure from the environment","\u002Fguides\u002Fenvironment","2.guides\u002F3.environment",{"title":42,"path":43,"stem":44},"Receive webhooks","\u002Fguides\u002Fwebhooks","2.guides\u002F4.webhooks",{"title":46,"path":47,"stem":48},"Check what a forge supports","\u002Fguides\u002Fcapabilities","2.guides\u002F5.capabilities",{"title":50,"path":51,"stem":52},"Handle errors and rate limits","\u002Fguides\u002Ferrors","2.guides\u002F6.errors",{"title":54,"path":55,"stem":56},"Page through results","\u002Fguides\u002Fpagination","2.guides\u002F7.pagination",{"title":58,"path":59,"stem":60},"Browser bundles","\u002Fguides\u002Fbundling","2.guides\u002F8.bundling",{"title":62,"path":63,"stem":64},"Test your code","\u002Fguides\u002Ftesting","2.guides\u002F9.testing",{"title":66,"icon":67,"path":68,"stem":69,"children":70,"page":22},"Concepts","i-lucide-lightbulb","\u002Fconcepts","3.concepts",[71,75,79,83],{"title":72,"path":73,"stem":74},"Data model","\u002Fconcepts\u002Fdata-model","3.concepts\u002F1.data-model",{"title":76,"path":77,"stem":78},"Capabilities","\u002Fconcepts\u002Fcapabilities","3.concepts\u002F2.capabilities",{"title":80,"path":81,"stem":82},"Providers and factories","\u002Fconcepts\u002Fproviders","3.concepts\u002F3.providers",{"title":84,"path":85,"stem":86},"Events","\u002Fconcepts\u002Fevents","3.concepts\u002F4.events",{"title":88,"icon":89,"path":90,"stem":91,"children":92,"page":22},"Providers","i-lucide-server","\u002Fproviders","4.providers",[93,97,101,105,109,113,117,121,125,129],{"title":94,"path":95,"stem":96},"Azure DevOps","\u002Fproviders\u002Fazure-devops","4.providers\u002Fazure-devops",{"title":98,"path":99,"stem":100},"Bitbucket Cloud","\u002Fproviders\u002Fbitbucket","4.providers\u002Fbitbucket",{"title":102,"path":103,"stem":104},"Cursor Origin","\u002Fproviders\u002Fcursor-origin","4.providers\u002Fcursor-origin",{"title":106,"path":107,"stem":108},"Forgejo and Codeberg","\u002Fproviders\u002Fforgejo","4.providers\u002Fforgejo",{"title":110,"path":111,"stem":112},"Gitea","\u002Fproviders\u002Fgitea","4.providers\u002Fgitea",{"title":114,"path":115,"stem":116},"Gitee","\u002Fproviders\u002Fgitee","4.providers\u002Fgitee",{"title":118,"path":119,"stem":120},"GitHub","\u002Fproviders\u002Fgithub","4.providers\u002Fgithub",{"title":122,"path":123,"stem":124},"GitLab","\u002Fproviders\u002Fgitlab","4.providers\u002Fgitlab",{"title":126,"path":127,"stem":128},"pushin.eu","\u002Fproviders\u002Fpushin","4.providers\u002Fpushin",{"title":130,"path":131,"stem":132},"Tangled","\u002Fproviders\u002Ftangled","4.providers\u002Ftangled",{"title":134,"icon":135,"path":136,"stem":137,"children":138,"page":22},"Reference","i-lucide-book-marked","\u002Freference","5.reference",[139,143,147,151],{"title":140,"path":141,"stem":142},"Provider API","\u002Freference\u002Fprovider-api","5.reference\u002F1.provider-api",{"title":144,"path":145,"stem":146},"Capability matrix","\u002Freference\u002Fcapability-matrix","5.reference\u002F2.capability-matrix",{"title":148,"path":149,"stem":150},"Errors","\u002Freference\u002Ferrors","5.reference\u002F3.errors",{"title":152,"path":153,"stem":154},"JSON Schemas","\u002Freference\u002Fjson-schemas","5.reference\u002F5.json-schemas",{"title":156,"icon":157,"path":158,"stem":159,"children":160,"page":22},"Examples","i-lucide-boxes","\u002Fexamples","6.examples",[161,165,169],{"title":162,"path":163,"stem":164},"Inbox CLI","\u002Fexamples\u002Finbox-cli","6.examples\u002F1.inbox-cli",{"title":166,"path":167,"stem":168},"Label bot","\u002Fexamples\u002Flabel-bot","6.examples\u002F2.label-bot",{"title":170,"path":171,"stem":172},"Release digest","\u002Fexamples\u002Frelease-digest","6.examples\u002F3.release-digest",{"title":174,"icon":175,"path":176,"stem":177,"children":178,"page":22},"Contributing","i-lucide-git-pull-request","\u002Fcontributing","7.contributing",[179,183,187,191],{"title":180,"path":181,"stem":182},"Contribution guide","\u002Fcontributing\u002Fguidelines","7.contributing\u002F1.guidelines",{"title":184,"path":185,"stem":186},"Write a provider","\u002Fcontributing\u002Fwrite-a-provider","7.contributing\u002F2.write-a-provider",{"title":188,"path":189,"stem":190},"Record fixtures","\u002Fcontributing\u002Frecord-fixtures","7.contributing\u002F3.record-fixtures",{"title":192,"path":193,"stem":194},"Contributors","\u002Fcontributing\u002Fcontributors","7.contributing\u002F4.contributors",{"id":196,"title":162,"body":197,"description":374,"extension":375,"links":376,"meta":377,"navigation":379,"path":163,"seo":380,"stem":164,"__hash__":381},"docs\u002F6.examples\u002F1.inbox-cli.md",{"type":198,"value":199,"toc":369},"minimark",[200,216,233,238,273,281,288,303,309,313,349,353,362,365],[201,202,203,207,208,215],"p",{},[204,205,206],"code",{},"inbox-cli"," prints one line per notification, newest first, from every forge you configure. ",[209,210,214],"a",{"href":211,"rel":212},"https:\u002F\u002Fgithub.com\u002Fdanielroe\u002Fforges\u002Ftree\u002Fmain\u002Fexamples\u002Finbox-cli",[213],"nofollow","View the source",".",[201,217,218,219,222,223,228,229,232],{},"It reads providers from the ",[204,220,221],{},"FORGES_\u003CKIND>_\u003CFIELD>"," environment variables with ",[209,224,225],{"href":39},[204,226,227],{},"providersFromEnv()",". Some providers can't list notifications, such as Bitbucket, Azure DevOps and Cursor Origin. For those providers, the CLI lists the open threads in the repository that you set in ",[204,230,231],{},"FORGES_\u003CKIND>_DEMO_REPO",". Provider warnings go to stderr.",[234,235,237],"h2",{"id":236},"run-it","Run it",[239,240,245],"pre",{"className":241,"code":242,"language":243,"meta":244,"style":244},"language-sh shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","FORGES_GITHUB_TOKEN=ghp_... \\\nFORGES_BITBUCKET_USERNAME=me FORGES_BITBUCKET_PASSWORD=app-password \\\nFORGES_BITBUCKET_DEMO_REPO=acme\u002Fwidgets \\\npnpm --filter @forges-examples\u002Finbox-cli start\n","sh","",[204,246,247,255,261,267],{"__ignoreMap":244},[248,249,252],"span",{"class":250,"line":251},"line",1,[248,253,254],{},"FORGES_GITHUB_TOKEN=ghp_... \\\n",[248,256,258],{"class":250,"line":257},2,[248,259,260],{},"FORGES_BITBUCKET_USERNAME=me FORGES_BITBUCKET_PASSWORD=app-password \\\n",[248,262,264],{"class":250,"line":263},3,[248,265,266],{},"FORGES_BITBUCKET_DEMO_REPO=acme\u002Fwidgets \\\n",[248,268,270],{"class":250,"line":269},4,[248,271,272],{},"pnpm --filter @forges-examples\u002Finbox-cli start\n",[239,274,279],{"className":275,"code":277,"language":278},[276],"language-text","github:github.com:notification\u002F901234567  2025-09-18 09:12  github  acme\u002Fwidgets  pull_request  review_requested  Add retry handling to the uploader\n","text",[204,280,277],{"__ignoreMap":244},[201,282,283,284,287],{},"The first column is the key of the row. To mark a notification done, pass its key to ",[204,285,286],{},"--done",":",[239,289,291],{"className":241,"code":290,"language":243,"meta":244,"style":244},"pnpm --filter @forges-examples\u002Finbox-cli start -- --done \\\ngithub:github.com:notification\u002F901234567\n",[204,292,293,298],{"__ignoreMap":244},[248,294,295],{"class":250,"line":251},[248,296,297],{},"pnpm --filter @forges-examples\u002Finbox-cli start -- --done \\\n",[248,299,300],{"class":250,"line":257},[248,301,302],{},"github:github.com:notification\u002F901234567\n",[201,304,305,306,308],{},"On a forge that has only a read state, ",[204,307,286],{}," marks the notification read.",[234,310,312],{"id":311},"what-it-shows","What it shows",[314,315,316,327,342],"ul",{},[317,318,319,320,322,323,326],"li",{},"Loading providers with ",[204,321,227],{}," and reading the ",[204,324,325],{},"skipped"," reasons.",[317,328,329,330,333,334,337,338,341],{},"Falling back from ",[204,331,332],{},"notifications.list()"," to ",[204,335,336],{},"threads.list()"," when ",[204,339,340],{},"can()"," says no.",[317,343,344,345,348],{},"Using ",[204,346,347],{},"notificationKey()"," to give each row a stable ID.",[234,350,352],{"id":351},"run-the-tests","Run the tests",[239,354,356],{"className":241,"code":355,"language":243,"meta":244,"style":244},"pnpm --filter @forges-examples\u002Finbox-cli test\n",[204,357,358],{"__ignoreMap":244},[248,359,360],{"class":250,"line":251},[248,361,355],{},[201,363,364],{},"The tests run the real providers against fixtures, without a network connection.",[366,367,368],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":244,"searchDepth":257,"depth":257,"links":370},[371,372,373],{"id":236,"depth":257,"text":237},{"id":311,"depth":257,"text":312},{"id":351,"depth":257,"text":352},"A command-line inbox for the notifications of every forge you configure.","md",null,{"icon":378},"i-lucide-inbox",true,{"title":162,"description":374},"xPxAnhRzC2UXQP-GpUvbL3XPoWy20n9ua1xEruB07r8",[383,385],{"title":152,"path":153,"stem":154,"description":384,"children":-1},"Validate stored events, or generate types in another language.",{"title":166,"path":167,"stem":168,"description":386,"children":-1},"A webhook receiver that labels new threads and closes them from a comment command.",1791294003829]