[{"data":1,"prerenderedAt":950},["ShallowReactive",2],{"navigation_docs":3,"-examples-ai-sdk-release-notes-generator":125,"-examples-ai-sdk-release-notes-generator-surround":945},[4,26,49,81,105,117],{"title":5,"path":6,"stem":7,"children":8,"page":25},"Getting Started","\u002Fgetting-started","docs",[9,13,17,21],{"title":10,"path":11,"stem":12},"Introduction","\u002Fgetting-started\u002Fintroduction","docs\u002F1.getting-started\u002F1.introduction",{"title":14,"path":15,"stem":16},"Installation","\u002Fgetting-started\u002Finstallation","docs\u002F1.getting-started\u002F2.installation",{"title":18,"path":19,"stem":20},"Quick Start","\u002Fgetting-started\u002Fquick-start","docs\u002F1.getting-started\u002F3.quick-start",{"title":22,"path":23,"stem":24},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","docs\u002F1.getting-started\u002F4.agent-skills",false,{"title":27,"path":28,"stem":7,"children":29,"page":25},"Frameworks","\u002Fframeworks",[30,35,40,44],{"title":31,"path":32,"stem":33,"icon":34},"eve extension","\u002Fframeworks\u002Feve-extension","docs\u002F2.frameworks\u002F1.eve-extension","i-custom:eve",{"title":36,"path":37,"stem":38,"icon":39},"AI SDK","\u002Fframeworks\u002Fai-sdk","docs\u002F2.frameworks\u002F2.ai-sdk","i-simple-icons-vercel",{"title":41,"path":42,"stem":43,"icon":39},"Vercel Workflow","\u002Fframeworks\u002Fvercel-workflow","docs\u002F2.frameworks\u002F3.vercel-workflow",{"title":45,"path":46,"stem":47,"icon":48},"Chat SDK","\u002Fframeworks\u002Fchat-sdk","docs\u002F2.frameworks\u002F4.chat-sdk","i-lucide-message-square",{"title":50,"path":51,"stem":7,"children":52,"page":25},"Examples","\u002Fexamples",[53,57,61,65,69,73,77],{"title":54,"path":55,"stem":56},"Overview","\u002Fexamples\u002Foverview","docs\u002F3.examples\u002F1.overview",{"title":58,"path":59,"stem":60,"icon":34},"Stale issue triager","\u002Fexamples\u002Feve-stale-issue-triager","docs\u002F3.examples\u002F2.eve-stale-issue-triager",{"title":62,"path":63,"stem":64,"icon":39},"Release notes generator","\u002Fexamples\u002Fai-sdk-release-notes-generator","docs\u002F3.examples\u002F3.ai-sdk-release-notes-generator",{"title":66,"path":67,"stem":68,"icon":39},"CI failure bot","\u002Fexamples\u002Fvercel-workflow-ci-failure-bot","docs\u002F3.examples\u002F4.vercel-workflow-ci-failure-bot",{"title":70,"path":71,"stem":72,"icon":48},"Issue triage bot","\u002Fexamples\u002Fchat-sdk-issue-triage-bot","docs\u002F3.examples\u002F5.chat-sdk-issue-triage-bot",{"title":74,"path":75,"stem":76,"icon":34},"Manager & sub-agents","\u002Fexamples\u002Fmanager-agent-with-subagents","docs\u002F3.examples\u002F6.manager-agent-with-subagents",{"title":78,"path":79,"stem":80},"Recipes","\u002Fexamples\u002Frecipes","docs\u002F3.examples\u002F7.recipes",{"title":82,"path":83,"stem":7,"children":84,"page":25},"Guide","\u002Fguide",[85,89,93,97,101],{"title":86,"path":87,"stem":88},"Scope with Presets","\u002Fguide\u002Fpresets","docs\u002F4.guide\u002F1.presets",{"title":90,"path":91,"stem":92},"Control Write Safety","\u002Fguide\u002Fapproval-control","docs\u002F4.guide\u002F2.approval-control",{"title":94,"path":95,"stem":96},"Commit Attribution","\u002Fguide\u002Fcommit-attribution","docs\u002F4.guide\u002F3.commit-attribution",{"title":98,"path":99,"stem":100},"Tokens & Auth","\u002Fguide\u002Ftokens-and-auth","docs\u002F4.guide\u002F4.tokens-and-auth",{"title":102,"path":103,"stem":104},"Vercel Connect","\u002Fguide\u002Fvercel-connect","docs\u002F4.guide\u002F5.vercel-connect",{"title":106,"path":107,"stem":7,"children":108,"page":25},"Api","\u002Fapi",[109,113],{"title":110,"path":111,"stem":112},"Tools Catalog","\u002Fapi\u002Ftools-catalog","docs\u002F5.api\u002F1.tools-catalog",{"title":114,"path":115,"stem":116},"API Reference","\u002Fapi\u002Freference","docs\u002F5.api\u002F2.reference",{"title":118,"path":119,"stem":7,"children":120,"page":25},"Deprecated","\u002Fdeprecated",[121],{"title":122,"path":123,"stem":124,"icon":34},"eve (direct import)","\u002Fdeprecated\u002Feve","docs\u002F6.deprecated\u002F1.eve",{"id":126,"title":127,"body":128,"description":928,"extension":929,"links":930,"meta":940,"navigation":941,"path":63,"seo":942,"stem":64,"__hash__":944},"docs\u002Fdocs\u002F3.examples\u002F3.ai-sdk-release-notes-generator.md","Example: a release notes generator with the AI SDK",{"type":129,"value":130,"toc":921},"minimark",[131,154,162,167,553,580,693,697,786,790,804,828,839,843,861,875,889,893,917],[132,133,137,141],"prompt",{":actions":134,"description":135,"icon":136},"[\"copy\",\"cursor\",\"windsurf\"]","Build a release notes generator with the AI SDK","i-lucide-sparkles",[138,139,140],"p",{},"Build a standalone Node script that drafts release notes from merged PRs.",[142,143,144,148,151],"ul",{},[145,146,147],"li",{},"Use connectGithubTools from @github-tools\u002Fsdk\u002Fconnect with preset: 'release-manager'",[145,149,150],{},"Call generateText once with a prompt that compares the latest two tags and lists merged PRs in between",[145,152,153],{},"Print the draft to stdout, don't post anything, this script never needs approval",[138,155,156,157,161],{},"A one-shot script: compare the latest two tags, list every PR merged in between, and draft grouped release notes (features, fixes, other) ready to paste into a GitHub release. Read-only except for ",[158,159,160],"code",{},"createRelease",", which stays off unless you opt in.",[163,164,166],"h2",{"id":165},"files","Files",[168,169,175],"pre",{"className":170,"code":171,"filename":172,"language":173,"meta":174,"style":174},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { connectGithubTools } from '@github-tools\u002Fsdk\u002Fconnect'\nimport { generateText } from 'ai'\n\nconst owner = process.argv[2]\nconst repo = process.argv[3]\n\nif (!owner || !repo) {\n  console.error('Usage: tsx scripts\u002Fgenerate-release-notes.ts \u003Cowner> \u003Crepo>')\n  process.exit(1)\n}\n\nconst { text } = await generateText({\n  model: 'anthropic\u002Fclaude-sonnet-4.6',\n  tools: connectGithubTools('github\u002Fmy-connector', { preset: 'release-manager' }),\n  prompt: `\n    On ${owner}\u002F${repo}, find the two most recent releases (or tags if there are no releases yet).\n    Compare them to list every pull request merged in between.\n    Draft release notes grouped into \"Features\", \"Fixes\", and \"Other\", one bullet per PR,\n    each linking the PR number. Do not create the release, just print the draft.\n  `,\n})\n\nconsole.log(text)\n","scripts\u002Fgenerate-release-notes.ts","ts","",[158,176,177,210,231,238,267,288,293,320,347,365,371,376,401,420,463,474,501,507,513,519,527,534,539],{"__ignoreMap":174},[178,179,182,186,190,194,197,200,203,207],"span",{"class":180,"line":181},"line",1,[178,183,185],{"class":184},"s7zQu","import",[178,187,189],{"class":188},"sMK4o"," {",[178,191,193],{"class":192},"sTEyZ"," connectGithubTools",[178,195,196],{"class":188}," }",[178,198,199],{"class":184}," from",[178,201,202],{"class":188}," '",[178,204,206],{"class":205},"sfazB","@github-tools\u002Fsdk\u002Fconnect",[178,208,209],{"class":188},"'\n",[178,211,213,215,217,220,222,224,226,229],{"class":180,"line":212},2,[178,214,185],{"class":184},[178,216,189],{"class":188},[178,218,219],{"class":192}," generateText",[178,221,196],{"class":188},[178,223,199],{"class":184},[178,225,202],{"class":188},[178,227,228],{"class":205},"ai",[178,230,209],{"class":188},[178,232,234],{"class":180,"line":233},3,[178,235,237],{"emptyLinePlaceholder":236},true,"\n",[178,239,241,245,248,251,254,257,260,264],{"class":180,"line":240},4,[178,242,244],{"class":243},"spNyl","const",[178,246,247],{"class":192}," owner ",[178,249,250],{"class":188},"=",[178,252,253],{"class":192}," process",[178,255,256],{"class":188},".",[178,258,259],{"class":192},"argv[",[178,261,263],{"class":262},"sbssI","2",[178,265,266],{"class":192},"]\n",[178,268,270,272,275,277,279,281,283,286],{"class":180,"line":269},5,[178,271,244],{"class":243},[178,273,274],{"class":192}," repo ",[178,276,250],{"class":188},[178,278,253],{"class":192},[178,280,256],{"class":188},[178,282,259],{"class":192},[178,284,285],{"class":262},"3",[178,287,266],{"class":192},[178,289,291],{"class":180,"line":290},6,[178,292,237],{"emptyLinePlaceholder":236},[178,294,296,299,302,305,308,311,314,317],{"class":180,"line":295},7,[178,297,298],{"class":184},"if",[178,300,301],{"class":192}," (",[178,303,304],{"class":188},"!",[178,306,307],{"class":192},"owner ",[178,309,310],{"class":188},"||",[178,312,313],{"class":188}," !",[178,315,316],{"class":192},"repo) ",[178,318,319],{"class":188},"{\n",[178,321,323,326,328,332,336,339,342,344],{"class":180,"line":322},8,[178,324,325],{"class":192},"  console",[178,327,256],{"class":188},[178,329,331],{"class":330},"s2Zo4","error",[178,333,335],{"class":334},"swJcz","(",[178,337,338],{"class":188},"'",[178,340,341],{"class":205},"Usage: tsx scripts\u002Fgenerate-release-notes.ts \u003Cowner> \u003Crepo>",[178,343,338],{"class":188},[178,345,346],{"class":334},")\n",[178,348,350,353,355,358,360,363],{"class":180,"line":349},9,[178,351,352],{"class":192},"  process",[178,354,256],{"class":188},[178,356,357],{"class":330},"exit",[178,359,335],{"class":334},[178,361,362],{"class":262},"1",[178,364,346],{"class":334},[178,366,368],{"class":180,"line":367},10,[178,369,370],{"class":188},"}\n",[178,372,374],{"class":180,"line":373},11,[178,375,237],{"emptyLinePlaceholder":236},[178,377,379,381,383,386,389,392,395,397,399],{"class":180,"line":378},12,[178,380,244],{"class":243},[178,382,189],{"class":188},[178,384,385],{"class":192}," text ",[178,387,388],{"class":188},"}",[178,390,391],{"class":188}," =",[178,393,394],{"class":184}," await",[178,396,219],{"class":330},[178,398,335],{"class":192},[178,400,319],{"class":188},[178,402,404,407,410,412,415,417],{"class":180,"line":403},13,[178,405,406],{"class":334},"  model",[178,408,409],{"class":188},":",[178,411,202],{"class":188},[178,413,414],{"class":205},"anthropic\u002Fclaude-sonnet-4.6",[178,416,338],{"class":188},[178,418,419],{"class":188},",\n",[178,421,423,426,428,430,432,434,437,439,442,444,447,449,451,454,456,458,461],{"class":180,"line":422},14,[178,424,425],{"class":334},"  tools",[178,427,409],{"class":188},[178,429,193],{"class":330},[178,431,335],{"class":192},[178,433,338],{"class":188},[178,435,436],{"class":205},"github\u002Fmy-connector",[178,438,338],{"class":188},[178,440,441],{"class":188},",",[178,443,189],{"class":188},[178,445,446],{"class":334}," preset",[178,448,409],{"class":188},[178,450,202],{"class":188},[178,452,453],{"class":205},"release-manager",[178,455,338],{"class":188},[178,457,196],{"class":188},[178,459,460],{"class":192},")",[178,462,419],{"class":188},[178,464,466,469,471],{"class":180,"line":465},15,[178,467,468],{"class":334},"  prompt",[178,470,409],{"class":188},[178,472,473],{"class":188}," `\n",[178,475,477,480,483,486,488,491,493,496,498],{"class":180,"line":476},16,[178,478,479],{"class":205},"    On ",[178,481,482],{"class":188},"${",[178,484,485],{"class":192},"owner",[178,487,388],{"class":188},[178,489,490],{"class":205},"\u002F",[178,492,482],{"class":188},[178,494,495],{"class":192},"repo",[178,497,388],{"class":188},[178,499,500],{"class":205},", find the two most recent releases (or tags if there are no releases yet).\n",[178,502,504],{"class":180,"line":503},17,[178,505,506],{"class":205},"    Compare them to list every pull request merged in between.\n",[178,508,510],{"class":180,"line":509},18,[178,511,512],{"class":205},"    Draft release notes grouped into \"Features\", \"Fixes\", and \"Other\", one bullet per PR,\n",[178,514,516],{"class":180,"line":515},19,[178,517,518],{"class":205},"    each linking the PR number. Do not create the release, just print the draft.\n",[178,520,522,525],{"class":180,"line":521},20,[178,523,524],{"class":188},"  `",[178,526,419],{"class":188},[178,528,530,532],{"class":180,"line":529},21,[178,531,388],{"class":188},[178,533,346],{"class":192},[178,535,537],{"class":180,"line":536},22,[178,538,237],{"emptyLinePlaceholder":236},[178,540,542,545,547,550],{"class":180,"line":541},23,[178,543,544],{"class":192},"console",[178,546,256],{"class":188},[178,548,549],{"class":330},"log",[178,551,552],{"class":192},"(text)\n",[168,554,559],{"className":555,"code":556,"filename":557,"language":558,"meta":174,"style":174},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Vercel Connect OIDC token, required by the \"github\u002Fmy-connector\" connector.\n# vercel link && vercel env pull\nVERCEL_OIDC_TOKEN=\n",".env","bash",[158,560,561,567,572],{"__ignoreMap":174},[178,562,563],{"class":180,"line":181},[178,564,566],{"class":565},"sHwdD","# Vercel Connect OIDC token, required by the \"github\u002Fmy-connector\" connector.\n",[178,568,569],{"class":180,"line":212},[178,570,571],{"class":565},"# vercel link && vercel env pull\n",[178,573,574,577],{"class":180,"line":233},[178,575,576],{"class":192},"VERCEL_OIDC_TOKEN",[178,578,579],{"class":188},"=\n",[168,581,586],{"className":582,"code":583,"filename":584,"language":585,"meta":174,"style":174},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"name\": \"release-notes-generator\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"scripts\": {\n    \"generate\": \"tsx scripts\u002Fgenerate-release-notes.ts\"\n  }\n}\n","package.json","json",[158,587,588,592,615,629,649,663,684,689],{"__ignoreMap":174},[178,589,590],{"class":180,"line":181},[178,591,319],{"class":188},[178,593,594,597,600,603,605,608,611,613],{"class":180,"line":212},[178,595,596],{"class":188},"  \"",[178,598,599],{"class":243},"name",[178,601,602],{"class":188},"\"",[178,604,409],{"class":188},[178,606,607],{"class":188}," \"",[178,609,610],{"class":205},"release-notes-generator",[178,612,602],{"class":188},[178,614,419],{"class":188},[178,616,617,619,622,624,626],{"class":180,"line":233},[178,618,596],{"class":188},[178,620,621],{"class":243},"private",[178,623,602],{"class":188},[178,625,409],{"class":188},[178,627,628],{"class":188}," true,\n",[178,630,631,633,636,638,640,642,645,647],{"class":180,"line":240},[178,632,596],{"class":188},[178,634,635],{"class":243},"type",[178,637,602],{"class":188},[178,639,409],{"class":188},[178,641,607],{"class":188},[178,643,644],{"class":205},"module",[178,646,602],{"class":188},[178,648,419],{"class":188},[178,650,651,653,656,658,660],{"class":180,"line":269},[178,652,596],{"class":188},[178,654,655],{"class":243},"scripts",[178,657,602],{"class":188},[178,659,409],{"class":188},[178,661,662],{"class":188}," {\n",[178,664,665,668,672,674,676,678,681],{"class":180,"line":290},[178,666,667],{"class":188},"    \"",[178,669,671],{"class":670},"sBMFI","generate",[178,673,602],{"class":188},[178,675,409],{"class":188},[178,677,607],{"class":188},[178,679,680],{"class":205},"tsx scripts\u002Fgenerate-release-notes.ts",[178,682,683],{"class":188},"\"\n",[178,685,686],{"class":180,"line":295},[178,687,688],{"class":188},"  }\n",[178,690,691],{"class":180,"line":322},[178,692,370],{"class":188},[163,694,696],{"id":695},"install","Install",[698,699,700,725,746,766],"code-group",{},[168,701,704],{"className":555,"code":702,"filename":703,"language":558,"meta":174,"style":174},"pnpm add @github-tools\u002Fsdk @vercel\u002Fconnect ai zod\n","pnpm",[158,705,706],{"__ignoreMap":174},[178,707,708,710,713,716,719,722],{"class":180,"line":181},[178,709,703],{"class":670},[178,711,712],{"class":205}," add",[178,714,715],{"class":205}," @github-tools\u002Fsdk",[178,717,718],{"class":205}," @vercel\u002Fconnect",[178,720,721],{"class":205}," ai",[178,723,724],{"class":205}," zod\n",[168,726,729],{"className":555,"code":727,"filename":728,"language":558,"meta":174,"style":174},"npm install @github-tools\u002Fsdk @vercel\u002Fconnect ai zod\n","npm",[158,730,731],{"__ignoreMap":174},[178,732,733,735,738,740,742,744],{"class":180,"line":181},[178,734,728],{"class":670},[178,736,737],{"class":205}," install",[178,739,715],{"class":205},[178,741,718],{"class":205},[178,743,721],{"class":205},[178,745,724],{"class":205},[168,747,750],{"className":555,"code":748,"filename":749,"language":558,"meta":174,"style":174},"yarn add @github-tools\u002Fsdk @vercel\u002Fconnect ai zod\n","yarn",[158,751,752],{"__ignoreMap":174},[178,753,754,756,758,760,762,764],{"class":180,"line":181},[178,755,749],{"class":670},[178,757,712],{"class":205},[178,759,715],{"class":205},[178,761,718],{"class":205},[178,763,721],{"class":205},[178,765,724],{"class":205},[168,767,770],{"className":555,"code":768,"filename":769,"language":558,"meta":174,"style":174},"bun add @github-tools\u002Fsdk @vercel\u002Fconnect ai zod\n","bun",[158,771,772],{"__ignoreMap":174},[178,773,774,776,778,780,782,784],{"class":180,"line":181},[178,775,769],{"class":670},[178,777,712],{"class":205},[178,779,715],{"class":205},[178,781,718],{"class":205},[178,783,721],{"class":205},[178,785,724],{"class":205},[163,787,789],{"id":788},"set-up-the-connector","Set up the connector",[138,791,792,793,795,796,803],{},"Create a ",[158,794,436],{}," connector from the ",[797,798,802],"a",{"href":799,"rel":800},"https:\u002F\u002Fvercel.com\u002Fdocs\u002Fconnect",[801],"nofollow","Vercel dashboard",", install it on the repositories you cut releases for, then pull a local OIDC token:",[168,805,808],{"className":555,"code":806,"filename":807,"language":558,"meta":174,"style":174},"vercel link\nvercel env pull\n","Terminal",[158,809,810,818],{"__ignoreMap":174},[178,811,812,815],{"class":180,"line":181},[178,813,814],{"class":670},"vercel",[178,816,817],{"class":205}," link\n",[178,819,820,822,825],{"class":180,"line":212},[178,821,814],{"class":670},[178,823,824],{"class":205}," env",[178,826,827],{"class":205}," pull\n",[138,829,830,831,834,835,838],{},"See ",[797,832,102],{"href":833},"\u002Fguide\u002Fvercel-connect#setup-checklist"," for the full checklist, including the ",[158,836,837],{},"@vercel\u002Fconnect"," peer dependency.",[163,840,842],{"id":841},"run-it","Run it",[168,844,846],{"className":555,"code":845,"filename":807,"language":558,"meta":174,"style":174},"pnpm generate vercel-labs github-tools\n",[158,847,848],{"__ignoreMap":174},[178,849,850,852,855,858],{"class":180,"line":181},[178,851,703],{"class":670},[178,853,854],{"class":205}," generate",[178,856,857],{"class":205}," vercel-labs",[178,859,860],{"class":205}," github-tools\n",[138,862,863,864,867,868,871,872,874],{},"The model calls ",[158,865,866],{},"compareCommits"," and ",[158,869,870],{},"listPullRequests"," under ",[158,873,453],{},", then returns a formatted draft, no approval prompts, since nothing in this script writes.",[876,877,878,879,881,882,885,886,256],"note",{},"This script never calls ",[158,880,160],{},". If you want the agent to publish the release too (not just draft it), add that tool back with ",[158,883,884],{},"requireApproval: true",", see ",[797,887,888],{"href":91},"Control write safety",[163,890,892],{"id":891},"go-further","Go further",[142,894,895,905,911],{},[145,896,897,898,904],{},"Wrap the same prompt in ",[797,899,901],{"href":900},"\u002Fframeworks\u002Fai-sdk#reusable-agent-creategithubagent",[158,902,903],{},"createGithubAgent"," if you'll run it repeatedly with slightly different instructions",[145,906,907,908,910],{},"Pipe the draft into ",[158,909,160],{}," behind an approval gate to publish automatically once a human signs off",[145,912,913,914,916],{},"Move this into a scheduled ",[797,915,41],{"href":67}," if you want it to run on a cron instead of by hand",[918,919,920],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":174,"searchDepth":212,"depth":212,"links":922},[923,924,925,926,927],{"id":165,"depth":212,"text":166},{"id":695,"depth":212,"text":696},{"id":788,"depth":212,"text":789},{"id":841,"depth":212,"text":842},{"id":891,"depth":212,"text":892},"A standalone AI SDK script that drafts release notes from merged pull requests since the last tag, using the release-manager preset and Vercel Connect.","md",[931,935,938],{"label":932,"icon":39,"to":37,"color":933,"variant":934},"AI SDK guide","neutral","subtle",{"label":936,"icon":937,"to":87,"color":933,"variant":934},"Scope with presets","i-lucide-layers",{"label":102,"icon":939,"to":103,"color":933,"variant":934},"i-lucide-plug",{},{"title":62,"icon":39},{"title":127,"description":943},"A Node script that generates release notes from merged PRs with @github-tools\u002Fsdk, generateText, and Vercel Connect.","C2qxKnFnoTNGgcq3_Fc3wnGoS19e3-Y0dXOrxY3pYn4",[946,948],{"title":58,"path":59,"stem":60,"description":947,"icon":34,"children":-1},"Build an eve agent that finds inactive GitHub issues, asks the author for an update, and closes them if nothing comes back, all files included.",{"title":66,"path":67,"stem":68,"description":949,"icon":39,"children":-1},"A durable chat backend that diagnoses failing GitHub Actions runs, built with createDurableGithubAgent, the ci-ops preset, and Vercel Connect.",1786010333125]