[{"data":1,"prerenderedAt":351},["ShallowReactive",2],{"navigation_docs":3,"-guide-explorer":80,"-guide-explorer-surround":346},[4,56],{"title":5,"path":6,"stem":7,"children":8,"icon":55},"Guide","\u002Fguide","1.guide\u002F01.index",[9,11,15,19,23,27,31,35,39,43,47,51],{"title":10,"path":6,"stem":7},"Getting Started",{"title":12,"path":13,"stem":14},"Authentication","\u002Fguide\u002Fauth","1.guide\u002F02.auth",{"title":16,"path":17,"stem":18},"Repositories","\u002Fguide\u002Frepositories","1.guide\u002F03.repositories",{"title":20,"path":21,"stem":22},"Issues","\u002Fguide\u002Fissues","1.guide\u002F04.issues",{"title":24,"path":25,"stem":26},"Pull requests","\u002Fguide\u002Fpull-requests","1.guide\u002F05.pull-requests",{"title":28,"path":29,"stem":30},"Review threads","\u002Fguide\u002Fthreads","1.guide\u002F06.threads",{"title":32,"path":33,"stem":34},"Commits and CI","\u002Fguide\u002Fcommits","1.guide\u002F07.commits",{"title":36,"path":37,"stem":38},"Contribution templates","\u002Fguide\u002Ftemplates","1.guide\u002F08.templates",{"title":40,"path":41,"stem":42},"Code search","\u002Fguide\u002Fcode-search","1.guide\u002F09.code-search",{"title":44,"path":45,"stem":46},"Agents","\u002Fguide\u002Fagents","1.guide\u002F10.agents",{"title":48,"path":49,"stem":50},"Custom providers","\u002Fguide\u002Fcustom","1.guide\u002F11.custom",{"title":52,"path":53,"stem":54},"Explorer","\u002Fguide\u002Fexplorer","1.guide\u002F12.explorer","i-lucide-book-open",{"title":57,"path":58,"stem":59,"children":60,"icon":79},"Platforms","\u002Fplatforms","2.platforms\u002F0.index",[61,63,67,71,75],{"title":62,"path":58,"stem":59},"Overview",{"title":64,"path":65,"stem":66},"GitHub","\u002Fplatforms\u002Fgithub","2.platforms\u002F01.github",{"title":68,"path":69,"stem":70},"GitLab","\u002Fplatforms\u002Fgitlab","2.platforms\u002F02.gitlab",{"title":72,"path":73,"stem":74},"Gitea","\u002Fplatforms\u002Fgitea","2.platforms\u002F03.gitea",{"title":76,"path":77,"stem":78},"GitBucket","\u002Fplatforms\u002Fgitbucket","2.platforms\u002F04.gitbucket","i-lucide-library",{"id":81,"title":52,"body":82,"description":338,"extension":339,"links":340,"meta":341,"navigation":343,"path":53,"seo":344,"stem":54,"__hash__":345},"docs\u002F1.guide\u002F12.explorer.md",{"type":83,"value":84,"toc":331},"minimark",[85,119,249,268,273,276,283,287,300,303,307],[86,87,88,89,93,94,98,99,98,102,98,105,98,108,98,111,114,115,118],"p",{},"The ",[90,91,52],"a",{"href":92},"\u002Fexplorer"," calls the docs worker, the worker calls the library: ",[95,96,97],"code",{},"repos.get",", ",[95,100,101],{},"issues.list",[95,103,104],{},"pullRequests.list",[95,106,107],{},"commits.list",[95,109,110],{},"ciRuns.list",[95,112,113],{},"threads.list"," and ",[95,116,117],{},"users.get",". Exactly what a script would do. Nothing on the page is a mock. A 404 is the platform's, and a 503 means the platform wants a token the worker does not have.",[120,121,122,138],"table",{},[123,124,125],"thead",{},[126,127,128,132,135],"tr",{},[129,130,131],"th",{},"Operation",[129,133,134],{},"What it answers",[129,136,137],{},"Tool equivalent",[139,140,141,161,173,185,198,211,224,237],"tbody",{},[126,142,143,147,156],{},[144,145,146],"td",{},"Repository",[144,148,149,150,152,153],{},"one ",[95,151,146],{},", minus the worker's own ",[95,154,155],{},"viewerPermission",[144,157,158],{},[95,159,160],{},"forges_repos_get",[126,162,163,165,168],{},[144,164,20],{},[144,166,167],{},"up to ten open, closed or all issues, no bodies",[144,169,170],{},[95,171,172],{},"forges_issues_list",[126,174,175,177,180],{},[144,176,24],{},[144,178,179],{},"up to ten, with branches, head SHA, draft and mergeability",[144,181,182],{},[95,183,184],{},"forges_pull_requests_list",[126,186,187,190,193],{},[144,188,189],{},"Commits",[144,191,192],{},"up to ten from the default branch, no files",[144,194,195],{},[95,196,197],{},"forges_commits_list",[126,199,200,203,206],{},[144,201,202],{},"CI runs",[144,204,205],{},"up to ten, with status and conclusion",[144,207,208],{},[95,209,210],{},"forges_ci_runs_list",[126,212,213,216,219],{},[144,214,215],{},"Threads",[144,217,218],{},"up to five review threads of one pull request, comments bounded",[144,220,221],{},[95,222,223],{},"forges_threads_list",[126,225,226,229,232],{},[144,227,228],{},"User",[144,230,231],{},"one profile, minus the email",[144,233,234],{},[95,235,236],{},"forges_users_get",[126,238,239,241,244],{},[144,240,57],{},[144,242,243],{},"which platforms the worker holds a token for",[144,245,246],{},[95,247,248],{},"forges_users_authenticated",[86,250,251,252,255,256,259,260,263,264,267],{},"Every query is a deep link. ",[95,253,254],{},"\u002Fexplorer?op=pulls&platform=github&repo=nitrojs\u002Fnitro&state=open"," opens the page on that answer. For Gitea, ",[95,257,258],{},"host"," picks ",[95,261,262],{},"gitea.com"," or ",[95,265,266],{},"codeberg.org",". Any other host is refused, the worker is not a proxy. The copy button next to the examples gives the same call as a tool invocation in JSON.",[269,270,272],"h2",{"id":271},"caching-and-manners","Caching and manners",[86,274,275],{},"Answers are cached on the worker, in KV in production: fifteen minutes for a repository, ten for a list. A thrown failure is never cached, so a typo or an outage does not stick. One address can start thirty new platform requests a minute, cache hits are free.",[86,277,278,279,282],{},"The worker passes an explicit token to every provider, the empty string when it has none, so the library never shells out to ",[95,280,281],{},"gh"," on a Worker. Anonymous GitHub reads share sixty requests an hour per address across everyone using the page. The cache is what makes that enough.",[269,284,286],{"id":285},"where-a-token-matters","Where a token matters",[288,289,290,294,297],"ul",{},[291,292,293],"li",{},"GitHub review threads go through GraphQL, no anonymous access.",[291,295,296],{},"GitLab discussions answer 401 without a token, even on a public project.",[291,298,299],{},"Gitea reads, review comments included, work anonymously on public repos.",[86,301,302],{},"The Platforms tab says which platforms the worker is authenticated to. Never a token, just yes or no.",[269,304,306],{"id":305},"the-landing","The landing",[86,308,309,310,314,315,318,319,322,323,326,327,330],{},"The panels on the ",[90,311,313],{"href":312},"\u002F","home page"," start from answers recorded through the library and labelled ",[95,316,317],{},"sample",". As the page walks through three repositories on three hosts, each one is swapped for the worker's live answer and relabelled ",[95,320,321],{},"live",". The recorded answers live in ",[95,324,325],{},"docs\u002Fapp\u002Futils\u002Flanding-fixtures.ts"," and are regenerated with ",[95,328,329],{},"docs\u002Fscripts\u002Frecord-fixtures.mjs",". Never by hand, hand edited fixtures drift and nobody notices.",{"title":332,"searchDepth":333,"depth":333,"links":334},"",2,[335,336,337],{"id":271,"depth":333,"text":272},{"id":285,"depth":333,"text":286},{"id":305,"depth":333,"text":306},"The explorer page behind forges.agntn.dev that runs the library live, and what it does to be a good citizen.","md",null,{"icon":342},"i-lucide-search-code",true,{"title":52,"description":338},"P3TAMGseFMbtwutfA_b54GMsAkp1T1Mm0PinAXCuANI",[347,349],{"title":48,"path":49,"stem":50,"description":348,"children":-1},"Extend the abstract Provider for a platform this package does not know, implement the typed mappers, and get the nine resources for free.",{"title":62,"path":58,"stem":59,"description":350,"children":-1},"Three provider classes, four platforms. Pick one to see its auth, its endpoints, what it maps and the traps.",1788525967449]