[{"data":1,"prerenderedAt":1312},["ShallowReactive",2],{"navigation_docs":3,"-frameworks-eve":85,"-frameworks-eve-surround":1307},[4,26,49,73],{"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","\u002Fframeworks\u002Feve","docs\u002F2.frameworks\u002F1.eve","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},"Guide","\u002Fguide",[53,57,61,65,69],{"title":54,"path":55,"stem":56},"Scope with Presets","\u002Fguide\u002Fpresets","docs\u002F3.guide\u002F1.presets",{"title":58,"path":59,"stem":60},"Control Write Safety","\u002Fguide\u002Fapproval-control","docs\u002F3.guide\u002F2.approval-control",{"title":62,"path":63,"stem":64},"Commit Attribution","\u002Fguide\u002Fcommit-attribution","docs\u002F3.guide\u002F3.commit-attribution",{"title":66,"path":67,"stem":68},"Tokens & Auth","\u002Fguide\u002Ftokens-and-auth","docs\u002F3.guide\u002F4.tokens-and-auth",{"title":70,"path":71,"stem":72},"Examples","\u002Fguide\u002Fexamples","docs\u002F3.guide\u002F5.examples",{"title":74,"path":75,"stem":7,"children":76,"page":25},"Api","\u002Fapi",[77,81],{"title":78,"path":79,"stem":80},"Tools Catalog","\u002Fapi\u002Ftools-catalog","docs\u002F4.api\u002F1.tools-catalog",{"title":82,"path":83,"stem":84},"API Reference","\u002Fapi\u002Freference","docs\u002F4.api\u002F2.reference",{"id":86,"title":87,"body":88,"description":1290,"extension":156,"links":1291,"meta":1302,"navigation":1303,"path":32,"seo":1304,"stem":33,"__hash__":1306},"docs\u002Fdocs\u002F2.frameworks\u002F1.eve.md","Build a GitHub agent with eve",{"type":89,"value":90,"toc":1278},"minimark",[91,111,139,144,147,328,331,351,366,370,383,470,491,495,509,688,703,707,718,830,843,858,862,865,905,912,916,936,1019,1035,1039,1042,1108,1117,1121,1223,1227,1244,1248,1274],[92,93,94,100,101,105,106,110],"p",{},[95,96,31],"a",{"href":97,"rel":98},"https:\u002F\u002Feve.dev",[99],"nofollow"," is Vercel's filesystem-first agent framework: an agent is a folder with instructions, a model config, and tools. With ",[102,103,104],"code",{},"@github-tools\u002Fsdk\u002Feve",", that folder becomes a ",[107,108,109],"strong",{},"complete GitHub agent in 3 files"," — all 42 tools registered from a single file, with durable human-in-the-loop approval that actually pauses the session until a person approves.",[112,113,116,119],"prompt",{":actions":114,"description":115,"icon":34},"[\"copy\",\"cursor\",\"windsurf\"]","Add GitHub tools to an eve agent",[92,117,118],{},"Add GitHub tools to an eve agent using @github-tools\u002Fsdk\u002Feve.",[120,121,122,126,129,136],"ul",{},[123,124,125],"li",{},"Install eve, ai v7, zod, and @github-tools\u002Fsdk; set GITHUB_TOKEN",[123,127,128],{},"Create agent\u002Ftools\u002Fgithub.ts exporting default createGithubTools({ preset: 'code-review' })",[123,130,131,132],{},"Configure requireApproval with once\u002Fpredicate where appropriate — ",[95,133,134],{"href":134,"rel":135},"https:\u002F\u002Fgithub-tools.com\u002Fframeworks\u002Feve",[99],[123,137,138],{},"Use examples\u002Feve-agent as reference; run with pnpm dev:eve-agent from the monorepo root",[140,141,143],"h2",{"id":142},"the-whole-agent","The whole agent",[92,145,146],{},"Three files. That's the entire thing:",[148,149,150,175,265],"code-group",{},[151,152,158],"pre",{"className":153,"code":154,"filename":155,"language":156,"meta":157,"style":157},"language-md shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","You are a GitHub assistant. Use the GitHub tools to inspect repos, PRs, and issues.\nAsk before merging or closing anything destructive.\n","agent\u002Finstructions.md","md","",[102,159,160,169],{"__ignoreMap":157},[161,162,165],"span",{"class":163,"line":164},"line",1,[161,166,168],{"class":167},"sTEyZ","You are a GitHub assistant. Use the GitHub tools to inspect repos, PRs, and issues.\n",[161,170,172],{"class":163,"line":171},2,[161,173,174],{"class":167},"Ask before merging or closing anything destructive.\n",[151,176,181],{"className":177,"code":178,"filename":179,"language":180,"meta":157,"style":157},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineAgent } from 'eve'\n\nexport default defineAgent({\n  model: 'anthropic\u002Fclaude-sonnet-5',\n})\n","agent\u002Fagent.ts","ts",[102,182,183,211,217,235,256],{"__ignoreMap":157},[161,184,185,189,193,196,199,202,205,208],{"class":163,"line":164},[161,186,188],{"class":187},"s7zQu","import",[161,190,192],{"class":191},"sMK4o"," {",[161,194,195],{"class":167}," defineAgent",[161,197,198],{"class":191}," }",[161,200,201],{"class":187}," from",[161,203,204],{"class":191}," '",[161,206,31],{"class":207},"sfazB",[161,209,210],{"class":191},"'\n",[161,212,213],{"class":163,"line":171},[161,214,216],{"emptyLinePlaceholder":215},true,"\n",[161,218,220,223,226,229,232],{"class":163,"line":219},3,[161,221,222],{"class":187},"export",[161,224,225],{"class":187}," default",[161,227,195],{"class":228},"s2Zo4",[161,230,231],{"class":167},"(",[161,233,234],{"class":191},"{\n",[161,236,238,242,245,247,250,253],{"class":163,"line":237},4,[161,239,241],{"class":240},"swJcz","  model",[161,243,244],{"class":191},":",[161,246,204],{"class":191},[161,248,249],{"class":207},"anthropic\u002Fclaude-sonnet-5",[161,251,252],{"class":191},"'",[161,254,255],{"class":191},",\n",[161,257,259,262],{"class":163,"line":258},5,[161,260,261],{"class":191},"}",[161,263,264],{"class":167},")\n",[151,266,269],{"className":177,"code":267,"filename":268,"language":180,"meta":157,"style":157},"import { createGithubTools } from '@github-tools\u002Fsdk\u002Feve'\n\nexport default createGithubTools({\n  preset: 'maintainer',\n})\n","agent\u002Ftools\u002Fgithub.ts",[102,270,271,290,294,306,322],{"__ignoreMap":157},[161,272,273,275,277,280,282,284,286,288],{"class":163,"line":164},[161,274,188],{"class":187},[161,276,192],{"class":191},[161,278,279],{"class":167}," createGithubTools",[161,281,198],{"class":191},[161,283,201],{"class":187},[161,285,204],{"class":191},[161,287,104],{"class":207},[161,289,210],{"class":191},[161,291,292],{"class":163,"line":171},[161,293,216],{"emptyLinePlaceholder":215},[161,295,296,298,300,302,304],{"class":163,"line":219},[161,297,222],{"class":187},[161,299,225],{"class":187},[161,301,279],{"class":228},[161,303,231],{"class":167},[161,305,234],{"class":191},[161,307,308,311,313,315,318,320],{"class":163,"line":237},[161,309,310],{"class":240},"  preset",[161,312,244],{"class":191},[161,314,204],{"class":191},[161,316,317],{"class":207},"maintainer",[161,319,252],{"class":191},[161,321,255],{"class":191},[161,323,324,326],{"class":163,"line":258},[161,325,261],{"class":191},[161,327,264],{"class":167},[92,329,330],{},"Run it:",[151,332,337],{"className":333,"code":334,"filename":335,"language":336,"meta":157,"style":157},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npx eve dev\n","Terminal","bash",[102,338,339],{"__ignoreMap":157},[161,340,341,345,348],{"class":163,"line":164},[161,342,344],{"class":343},"sBMFI","npx",[161,346,347],{"class":207}," eve",[161,349,350],{"class":207}," dev\n",[92,352,353,354,361,362,365],{},"You now have a GitHub agent that can read repos, review PRs, triage issues, and manage CI — with every write operation gated behind durable approval by default. The full example lives in ",[95,355,358],{"href":356,"rel":357},"https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fgithub-tools\u002Ftree\u002Fmain\u002Fexamples\u002Feve-agent",[99],[102,359,360],{},"examples\u002Feve-agent\u002F"," (or ",[102,363,364],{},"pnpm dev:eve-agent"," from the monorepo root).",[140,367,369],{"id":368},"install","Install",[92,371,372,373,375,376,382],{},"Add ",[102,374,31],{}," and ",[107,377,378,381],{},[102,379,380],{},"ai"," v7"," (required peer of eve v0.19+) alongside the SDK:",[148,384,385,409,430,450],{},[151,386,389],{"className":333,"code":387,"filename":388,"language":336,"meta":157,"style":157},"pnpm add @github-tools\u002Fsdk eve ai zod\n","pnpm",[102,390,391],{"__ignoreMap":157},[161,392,393,395,398,401,403,406],{"class":163,"line":164},[161,394,388],{"class":343},[161,396,397],{"class":207}," add",[161,399,400],{"class":207}," @github-tools\u002Fsdk",[161,402,347],{"class":207},[161,404,405],{"class":207}," ai",[161,407,408],{"class":207}," zod\n",[151,410,413],{"className":333,"code":411,"filename":412,"language":336,"meta":157,"style":157},"npm install @github-tools\u002Fsdk eve ai zod\n","npm",[102,414,415],{"__ignoreMap":157},[161,416,417,419,422,424,426,428],{"class":163,"line":164},[161,418,412],{"class":343},[161,420,421],{"class":207}," install",[161,423,400],{"class":207},[161,425,347],{"class":207},[161,427,405],{"class":207},[161,429,408],{"class":207},[151,431,434],{"className":333,"code":432,"filename":433,"language":336,"meta":157,"style":157},"yarn add @github-tools\u002Fsdk eve ai zod\n","yarn",[102,435,436],{"__ignoreMap":157},[161,437,438,440,442,444,446,448],{"class":163,"line":164},[161,439,433],{"class":343},[161,441,397],{"class":207},[161,443,400],{"class":207},[161,445,347],{"class":207},[161,447,405],{"class":207},[161,449,408],{"class":207},[151,451,454],{"className":333,"code":452,"filename":453,"language":336,"meta":157,"style":157},"bun add @github-tools\u002Fsdk eve ai zod\n","bun",[102,455,456],{"__ignoreMap":157},[161,457,458,460,462,464,466,468],{"class":163,"line":164},[161,459,453],{"class":343},[161,461,397],{"class":207},[161,463,400],{"class":207},[161,465,347],{"class":207},[161,467,405],{"class":207},[161,469,408],{"class":207},[92,471,472,473,475,476,479,480,483,484,487,488,490],{},"Ensure ",[102,474,380],{}," resolves to ",[107,477,478],{},"v7"," — eve v0.19+ is not compatible with AI SDK v6. You still need ",[102,481,482],{},"GITHUB_TOKEN"," (or pass ",[102,485,486],{},"token"," explicitly). See ",[95,489,14],{"href":15},".",[140,492,494],{"id":493},"one-file-all-tools","One file, all tools",[92,496,497,500,501,504,505,508],{},[102,498,499],{},"createGithubTools()"," returns a ",[102,502,503],{},"defineDynamic"," value: eve resolves the tool set on ",[102,506,507],{},"session.started",", so a single default export registers every tool. Scope and gate as needed:",[151,510,512],{"className":177,"code":511,"filename":268,"language":180,"meta":157,"style":157},"import { createGithubTools } from '@github-tools\u002Fsdk\u002Feve'\n\nexport default createGithubTools({\n  preset: ['code-review', 'issue-triage'],\n  requireApproval: {\n    mergePullRequest: true,\n    createIssue: 'once',\n    addPullRequestComment: false,\n    createOrUpdateFile: ({ toolInput }) => toolInput?.owner !== 'vercel-labs',\n  },\n})\n",[102,513,514,532,536,548,579,589,603,620,633,675,681],{"__ignoreMap":157},[161,515,516,518,520,522,524,526,528,530],{"class":163,"line":164},[161,517,188],{"class":187},[161,519,192],{"class":191},[161,521,279],{"class":167},[161,523,198],{"class":191},[161,525,201],{"class":187},[161,527,204],{"class":191},[161,529,104],{"class":207},[161,531,210],{"class":191},[161,533,534],{"class":163,"line":171},[161,535,216],{"emptyLinePlaceholder":215},[161,537,538,540,542,544,546],{"class":163,"line":219},[161,539,222],{"class":187},[161,541,225],{"class":187},[161,543,279],{"class":228},[161,545,231],{"class":167},[161,547,234],{"class":191},[161,549,550,552,554,557,559,562,564,567,569,572,574,577],{"class":163,"line":237},[161,551,310],{"class":240},[161,553,244],{"class":191},[161,555,556],{"class":167}," [",[161,558,252],{"class":191},[161,560,561],{"class":207},"code-review",[161,563,252],{"class":191},[161,565,566],{"class":191},",",[161,568,204],{"class":191},[161,570,571],{"class":207},"issue-triage",[161,573,252],{"class":191},[161,575,576],{"class":167},"]",[161,578,255],{"class":191},[161,580,581,584,586],{"class":163,"line":258},[161,582,583],{"class":240},"  requireApproval",[161,585,244],{"class":191},[161,587,588],{"class":191}," {\n",[161,590,592,595,597,601],{"class":163,"line":591},6,[161,593,594],{"class":240},"    mergePullRequest",[161,596,244],{"class":191},[161,598,600],{"class":599},"sfNiH"," true",[161,602,255],{"class":191},[161,604,606,609,611,613,616,618],{"class":163,"line":605},7,[161,607,608],{"class":240},"    createIssue",[161,610,244],{"class":191},[161,612,204],{"class":191},[161,614,615],{"class":207},"once",[161,617,252],{"class":191},[161,619,255],{"class":191},[161,621,623,626,628,631],{"class":163,"line":622},8,[161,624,625],{"class":240},"    addPullRequestComment",[161,627,244],{"class":191},[161,629,630],{"class":599}," false",[161,632,255],{"class":191},[161,634,636,639,641,644,648,651,655,657,660,663,666,668,671,673],{"class":163,"line":635},9,[161,637,638],{"class":228},"    createOrUpdateFile",[161,640,244],{"class":191},[161,642,643],{"class":191}," ({",[161,645,647],{"class":646},"sHdIc"," toolInput",[161,649,650],{"class":191}," })",[161,652,654],{"class":653},"spNyl"," =>",[161,656,647],{"class":167},[161,658,659],{"class":191},"?.",[161,661,662],{"class":167},"owner ",[161,664,665],{"class":191},"!==",[161,667,204],{"class":191},[161,669,670],{"class":207},"vercel-labs",[161,672,252],{"class":191},[161,674,255],{"class":191},[161,676,678],{"class":163,"line":677},10,[161,679,680],{"class":191},"  },\n",[161,682,684,686],{"class":163,"line":683},11,[161,685,261],{"class":191},[161,687,264],{"class":167},[92,689,690,691,694,695,698,699,702],{},"Map keys become tool names — the model sees ",[102,692,693],{},"listPullRequests",", ",[102,696,697],{},"createIssue",", and so on (same names as the AI SDK package). There is ",[107,700,701],{},"no automatic file-slug prefix"," when returning a tool map.",[140,704,706],{"id":705},"durable-approval-done-right","Durable approval, done right",[92,708,709,710,713,714,717],{},"This is eve's headline advantage over the boolean ",[102,711,712],{},"needsApproval"," on the AI SDK and Workflow paths: approval ",[107,715,716],{},"pauses the session durably"," until a human responds, and policies are expressive:",[719,720,721,737],"table",{},[722,723,724],"thead",{},[725,726,727,731,734],"tr",{},[728,729,730],"th",{},"Value",[728,732,733],{},"Maps to",[728,735,736],{},"Behavior",[738,739,740,760,778,793,811],"tbody",{},[725,741,742,752,757],{},[743,744,745,748,749],"td",{},[102,746,747],{},"true"," \u002F ",[102,750,751],{},"'always'",[743,753,754],{},[102,755,756],{},"always()",[743,758,759],{},"Require approval on every call",[725,761,762,770,775],{},[743,763,764,748,767],{},[102,765,766],{},"false",[102,768,769],{},"'never'",[743,771,772],{},[102,773,774],{},"never()",[743,776,777],{},"Skip approval",[725,779,780,785,790],{},[743,781,782],{},[102,783,784],{},"'once'",[743,786,787],{},[102,788,789],{},"once()",[743,791,792],{},"Approve once per session, then auto-allow",[725,794,795,798,804],{},[743,796,797],{},"predicate",[743,799,800,801],{},"custom ",[102,802,803],{},"Approval",[743,805,806,807,810],{},"Input-dependent gate (",[102,808,809],{},"toolInput",", session context)",[725,812,813,821,824],{},[743,814,815,748,817,748,819],{},[102,816,756],{},[102,818,789],{},[102,820,774],{},[743,822,823],{},"passthrough",[743,825,826,827],{},"Import helpers from ",[102,828,829],{},"eve\u002Ftools\u002Fapproval",[92,831,832,833,836,837,839,840,842],{},"Default (no ",[102,834,835],{},"requireApproval","): all write tools → ",[102,838,756],{},". Unlisted write tools keep the ",[102,841,756],{}," fail-safe default. Read tools never require approval.",[92,844,845,846,849,850,853,854,857],{},"For durable HITL with the standard boolean\u002Fper-tool config, use ",[95,847,848],{"href":42},"durable Workflow agents"," with ",[102,851,852],{},"WorkflowAgent",". See also ",[95,855,856],{"href":59},"Control write safety"," for the AI SDK surface.",[140,859,861],{"id":860},"cherry-pick-one-tool-per-file","Cherry-pick one tool per file",[92,863,864],{},"For the filesystem-native eve layout, import individual factories:",[151,866,869],{"className":177,"code":867,"filename":868,"language":180,"meta":157,"style":157},"import { listPullRequests } from '@github-tools\u002Fsdk\u002Feve'\n\nexport default listPullRequests()\n","agent\u002Ftools\u002Flist_pull_requests.ts",[102,870,871,890,894],{"__ignoreMap":157},[161,872,873,875,877,880,882,884,886,888],{"class":163,"line":164},[161,874,188],{"class":187},[161,876,192],{"class":191},[161,878,879],{"class":167}," listPullRequests",[161,881,198],{"class":191},[161,883,201],{"class":187},[161,885,204],{"class":191},[161,887,104],{"class":207},[161,889,210],{"class":191},[161,891,892],{"class":163,"line":171},[161,893,216],{"emptyLinePlaceholder":215},[161,895,896,898,900,902],{"class":163,"line":219},[161,897,222],{"class":187},[161,899,225],{"class":187},[161,901,879],{"class":228},[161,903,904],{"class":167},"()\n",[92,906,907,908,911],{},"Each factory returns a ",[102,909,910],{},"defineTool"," value. The filename slug becomes the tool name when exported alone.",[140,913,915],{"id":914},"presets-and-options","Presets and options",[92,917,918,919,694,921,694,923,694,926,694,929,931,932,935],{},"All presets (",[102,920,561],{},[102,922,571],{},[102,924,925],{},"repo-explorer",[102,927,928],{},"ci-ops",[102,930,317],{},") work with ",[102,933,934],{},"createGithubTools",". Options mirror the AI SDK surface:",[719,937,938,948],{},[722,939,940],{},[725,941,942,945],{},[728,943,944],{},"Option",[728,946,947],{},"Description",[738,949,950,962,972,981,1003],{},[725,951,952,956],{},[743,953,954],{},[102,955,486],{},[743,957,958,959,961],{},"GitHub PAT (defaults to ",[102,960,482],{},")",[725,963,964,969],{},[743,965,966],{},[102,967,968],{},"preset",[743,970,971],{},"Single preset or array to merge",[725,973,974,978],{},[743,975,976],{},[102,977,835],{},[743,979,980],{},"Global, per-tool, or predicate approval (eve)",[725,982,983,988],{},[743,984,985],{},[102,986,987],{},"overrides",[743,989,990,991,694,994,694,997,694,1000],{},"Per-tool ",[102,992,993],{},"description",[102,995,996],{},"approval",[102,998,999],{},"toModelOutput",[102,1001,1002],{},"outputSchema",[725,1004,1005,1016],{},[743,1006,1007,748,1010,748,1013],{},[102,1008,1009],{},"author",[102,1011,1012],{},"committer",[102,1014,1015],{},"coAuthors",[743,1017,1018],{},"Commit attribution for file\u002Fmerge tools",[92,1020,1021,1022,694,1025,694,1028,1031,1032,1034],{},"High-volume read tools (",[102,1023,1024],{},"listPullRequestFiles",[102,1026,1027],{},"getCommit",[102,1029,1030],{},"getFileContent",") include conservative default ",[102,1033,999],{}," projections — full payloads still reach channels; the model sees trimmed diffs\u002Fcontent.",[140,1036,1038],{"id":1037},"idempotency","Idempotency",[92,1040,1041],{},"eve replays completed steps but re-runs steps interrupted mid-execution:",[719,1043,1044,1053],{},[722,1045,1046],{},[725,1047,1048,1051],{},[728,1049,1050],{},"Tool",[728,1052,1038],{},[738,1054,1055,1069,1079,1089],{},[725,1056,1057,1062],{},[743,1058,1059],{},[102,1060,1061],{},"createOrUpdateFile",[743,1063,1064,1065,1068],{},"Natural when content + ",[102,1066,1067],{},"sha"," unchanged",[725,1070,1071,1076],{},[743,1072,1073],{},[102,1074,1075],{},"closeIssue",[743,1077,1078],{},"Natural when already closed",[725,1080,1081,1086],{},[743,1082,1083],{},[102,1084,1085],{},"createBranch",[743,1087,1088],{},"Natural when branch exists at same SHA",[725,1090,1091,1102],{},[743,1092,1093,694,1096,694,1098,1101],{},[102,1094,1095],{},"addIssueComment",[102,1097,697],{},[102,1099,1100],{},"mergePullRequest",", …",[743,1103,1104,1107],{},[107,1105,1106],{},"Not"," idempotent",[92,1109,1110,1111,1113,1114,1116],{},"Gate non-idempotent writes behind ",[102,1112,756],{}," or ",[102,1115,789],{}," where replay safety matters.",[140,1118,1120],{"id":1119},"eve-vs-ai-sdk-vs-workflow-sdk","eve vs AI SDK vs Workflow SDK",[719,1122,1123,1140],{},[722,1124,1125],{},[725,1126,1127,1129,1133,1135],{},[728,1128],{},[728,1130,1131],{},[95,1132,36],{"href":37},[728,1134,31],{},[728,1136,1137],{},[95,1138,1139],{"href":42},"Workflow SDK",[738,1141,1142,1161,1184,1206],{},[725,1143,1144,1147,1152,1156],{},[743,1145,1146],{},"Import",[743,1148,1149],{},[102,1150,1151],{},"@github-tools\u002Fsdk",[743,1153,1154],{},[102,1155,104],{},[743,1157,1158],{},[102,1159,1160],{},"@github-tools\u002Fsdk\u002Fworkflow",[725,1162,1163,1166,1171,1179],{},[743,1164,1165],{},"Tool registration",[743,1167,1168,1170],{},[102,1169,499],{}," object",[743,1172,1173,1175,1176],{},[102,1174,503],{}," in ",[102,1177,1178],{},"agent\u002Ftools\u002F",[743,1180,1181,1183],{},[102,1182,499],{}," in workflow",[725,1185,1186,1188,1193,1201],{},[743,1187,803],{},[743,1189,1190,1191],{},"boolean ",[102,1192,712],{},[743,1194,1195,748,1198,1200],{},[102,1196,1197],{},"always",[102,1199,615],{}," \u002F predicates",[743,1202,1190,1203,1205],{},[102,1204,712],{}," (durable pause)",[725,1207,1208,1211,1214,1217],{},[743,1209,1210],{},"Durability",[743,1212,1213],{},"in-process",[743,1215,1216],{},"eve session (filesystem-first)",[743,1218,1219,1222],{},[102,1220,1221],{},"\"use workflow\""," steps",[140,1224,1226],{"id":1225},"roadmap","Roadmap",[92,1228,1229,1230,1233,1234,1238,1239,1241,1242,490],{},"Per-session GitHub tokens via eve connections (",[102,1231,1232],{},"auth: 'eve'",") are planned, backed by ",[95,1235,1237],{"href":1236},"\u002Fguide\u002Ftokens-and-auth#mint-tokens-with-vercel-connect","Vercel Connect"," — for now pass ",[102,1240,486],{}," explicitly or set ",[102,1243,482],{},[140,1245,1247],{"id":1246},"external-references","External references",[120,1249,1250,1256,1267],{},[123,1251,1252],{},[95,1253,1255],{"href":97,"rel":1254},[99],"eve documentation",[123,1257,1258,1263,1264,1266],{},[95,1259,1262],{"href":1260,"rel":1261},"https:\u002F\u002Feve.dev\u002Fdocs\u002Fguides\u002Fdynamic-capabilities",[99],"Dynamic capabilities"," (bundled with the ",[102,1265,31],{}," package)",[123,1268,1269],{},[95,1270,1273],{"href":1271,"rel":1272},"https:\u002F\u002Feve.dev\u002Fdocs\u002Ftools\u002Fhuman-in-the-loop",[99],"Human-in-the-loop",[1275,1276,1277],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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 .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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":157,"searchDepth":171,"depth":171,"links":1279},[1280,1281,1282,1283,1284,1285,1286,1287,1288,1289],{"id":142,"depth":171,"text":143},{"id":368,"depth":171,"text":369},{"id":493,"depth":171,"text":494},{"id":705,"depth":171,"text":706},{"id":860,"depth":171,"text":861},{"id":914,"depth":171,"text":915},{"id":1037,"depth":171,"text":1038},{"id":1119,"depth":171,"text":1120},{"id":1225,"depth":171,"text":1226},{"id":1246,"depth":171,"text":1247},"Create a complete GitHub agent in 3 files with eve — defineDynamic registers all 42 tools, with durable human-in-the-loop approval (always, once, predicates).",[1292,1297,1300],{"label":1293,"icon":34,"to":356,"target":1294,"color":1295,"variant":1296},"Run the example","_blank","neutral","subtle",{"label":1298,"icon":1299,"to":83,"color":1295,"variant":1296},"API reference — createGithubTools (eve)","i-lucide-braces",{"label":856,"icon":1301,"to":59,"color":1295,"variant":1296},"i-lucide-shield-check",{},{"title":31,"icon":34},{"title":87,"description":1305},"Create a complete GitHub agent in 3 files — all 42 tools from one file, with durable human-in-the-loop approval.","NGN4EtpzIKFA-YVKNu3n5XeW78PIuCcnreBn50mIcX0",[1308,1310],{"title":22,"path":23,"stem":24,"description":1309,"children":-1},"Install the GitHub Tools agent skill from github-tools.com for Cursor, Claude Code, and other assistants.",{"title":36,"path":37,"stem":38,"description":1311,"icon":39,"children":-1},"Call GitHub from generateText, streamText, or a ToolLoopAgent — the core integration path for @github-tools\u002Fsdk in any Vercel AI SDK app.",1783444204935]