[{"data":1,"prerenderedAt":1186},["ShallowReactive",2],{"navigation_docs":3,"-guide-jev-typesafe-ai":137,"-guide-jev-typesafe-ai-surround":1181},[4,26,49,81,117,129],{"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,105,109,113],{"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":108},"Working context","\u002Fguide\u002Fworking-context","docs\u002F4.guide\u002F6.working-context",{"title":110,"path":111,"stem":112},"Errors","\u002Fguide\u002Ferrors","docs\u002F4.guide\u002F7.errors",{"title":114,"path":115,"stem":116},"Jev from TypeSafe AI","\u002Fguide\u002Fjev-typesafe-ai","docs\u002F4.guide\u002F8.jev-typesafe-ai",{"title":118,"path":119,"stem":7,"children":120,"page":25},"Api","\u002Fapi",[121,125],{"title":122,"path":123,"stem":124},"Tools Catalog","\u002Fapi\u002Ftools-catalog","docs\u002F5.api\u002F1.tools-catalog",{"title":126,"path":127,"stem":128},"API Reference","\u002Fapi\u002Freference","docs\u002F5.api\u002F2.reference",{"title":130,"path":131,"stem":7,"children":132,"page":25},"Deprecated","\u002Fdeprecated",[133],{"title":134,"path":135,"stem":136,"icon":34},"eve (direct import)","\u002Fdeprecated\u002Feve","docs\u002F6.deprecated\u002F1.eve",{"id":138,"title":139,"body":140,"description":1168,"extension":1169,"links":1170,"meta":1177,"navigation":1178,"path":115,"seo":1179,"stem":116,"__hash__":1180},"docs\u002Fdocs\u002F4.guide\u002F8.jev-typesafe-ai.md","Auto Presets and Approval with Jev",{"type":141,"value":142,"toc":1159},"minimark",[143,154,162,178,181,212,217,220,403,408,484,500,504,514,539,542,545,549,552,579,589,598,720,727,731,746,917,1027,1036,1040,1043,1061,1075,1091,1095,1098,1130,1134,1155],[144,145,146,153],"p",{},[147,148,152],"a",{"href":149,"rel":150},"https:\u002F\u002Fvercel.com\u002Fi\u002Fwhat-is-jev",[151],"nofollow","Jev"," is TypeSafe AI's System One model. It does not write prose: it reads the context you give it and returns typed choices, scores, and probabilities. That makes it a good fit for the small decisions a GitHub agent takes on every turn, like which tools to load or whether a write needs a human.",[144,155,156,157,161],{},"GitHub tools uses Jev as the default evaluation model for its two ",[158,159,160],"code",{},"'auto'"," modes:",[163,164,165,172],"ul",{},[166,167,168,171],"li",{},[158,169,170],{},"preset: 'auto'"," picks the presets each request needs, so the model only sees the tools for that task.",[166,173,174,177],{},[158,175,176],{},"requireApproval: 'auto'"," lets routine writes the user asked for run without a prompt, and keeps everything else behind approval.",[144,179,180],{},"Both are opt-in. Without them, presets stay static and every write asks for approval.",[182,183,187,190],"prompt",{":actions":184,"description":185,"icon":186},"[\"copy\",\"cursor\",\"windsurf\"]","Enable auto presets and approval with Jev","i-lucide-sparkles",[144,188,189],{},"Enable the 'auto' modes of @github-tools\u002Fsdk in this project.",[163,191,192,199,202,205],{},[166,193,194,195,198],{},"Use createGithubAgent with preset: 'auto' and requireApproval: 'auto' (or the eve extension with the same options), and make sure ",[158,196,197],{},"ai"," is 7.0.105 or later",[166,200,201],{},"Keep merges, file writes, deletes, and releases behind approval; only low-risk writes are auto-approved",[166,203,204],{},"The default evaluation model is typesafe-ai\u002Fjev through AI Gateway; confirm it is enabled for the project",[166,206,207,208],{},"Follow ",[147,209,210],{"href":210,"rel":211},"https:\u002F\u002Fgithub-tools.com\u002Fguide\u002Fjev-typesafe-ai",[151],[213,214,216],"h2",{"id":215},"quick-start","Quick start",[144,218,219],{},"With the AI SDK:",[221,222,228],"pre",{"className":223,"code":224,"filename":225,"language":226,"meta":227,"style":227},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createGithubAgent } from '@github-tools\u002Fsdk'\n\nconst agent = createGithubAgent({\n  model: 'anthropic\u002Fclaude-opus-5.5',\n  preset: 'auto',\n  requireApproval: 'auto',\n})\n\nawait agent.generate({ prompt: 'Label #42 as a bug and ask for a repro.' })\n\u002F\u002F likely routed to issue-triage; the label and comment were asked for, so they can skip approval\n","agent.ts","ts","",[158,229,230,263,270,292,313,330,346,355,360,396],{"__ignoreMap":227},[231,232,235,239,243,247,250,253,256,260],"span",{"class":233,"line":234},"line",1,[231,236,238],{"class":237},"s7zQu","import",[231,240,242],{"class":241},"sMK4o"," {",[231,244,246],{"class":245},"sTEyZ"," createGithubAgent",[231,248,249],{"class":241}," }",[231,251,252],{"class":237}," from",[231,254,255],{"class":241}," '",[231,257,259],{"class":258},"sfazB","@github-tools\u002Fsdk",[231,261,262],{"class":241},"'\n",[231,264,266],{"class":233,"line":265},2,[231,267,269],{"emptyLinePlaceholder":268},true,"\n",[231,271,273,277,280,283,286,289],{"class":233,"line":272},3,[231,274,276],{"class":275},"spNyl","const",[231,278,279],{"class":245}," agent ",[231,281,282],{"class":241},"=",[231,284,246],{"class":285},"s2Zo4",[231,287,288],{"class":245},"(",[231,290,291],{"class":241},"{\n",[231,293,295,299,302,304,307,310],{"class":233,"line":294},4,[231,296,298],{"class":297},"swJcz","  model",[231,300,301],{"class":241},":",[231,303,255],{"class":241},[231,305,306],{"class":258},"anthropic\u002Fclaude-opus-5.5",[231,308,309],{"class":241},"'",[231,311,312],{"class":241},",\n",[231,314,316,319,321,323,326,328],{"class":233,"line":315},5,[231,317,318],{"class":297},"  preset",[231,320,301],{"class":241},[231,322,255],{"class":241},[231,324,325],{"class":258},"auto",[231,327,309],{"class":241},[231,329,312],{"class":241},[231,331,333,336,338,340,342,344],{"class":233,"line":332},6,[231,334,335],{"class":297},"  requireApproval",[231,337,301],{"class":241},[231,339,255],{"class":241},[231,341,325],{"class":258},[231,343,309],{"class":241},[231,345,312],{"class":241},[231,347,349,352],{"class":233,"line":348},7,[231,350,351],{"class":241},"}",[231,353,354],{"class":245},")\n",[231,356,358],{"class":233,"line":357},8,[231,359,269],{"emptyLinePlaceholder":268},[231,361,363,366,369,372,375,377,380,383,385,387,390,392,394],{"class":233,"line":362},9,[231,364,365],{"class":237},"await",[231,367,368],{"class":245}," agent",[231,370,371],{"class":241},".",[231,373,374],{"class":285},"generate",[231,376,288],{"class":245},[231,378,379],{"class":241},"{",[231,381,382],{"class":297}," prompt",[231,384,301],{"class":241},[231,386,255],{"class":241},[231,388,389],{"class":258},"Label #42 as a bug and ask for a repro.",[231,391,309],{"class":241},[231,393,249],{"class":241},[231,395,354],{"class":245},[231,397,399],{"class":233,"line":398},10,[231,400,402],{"class":401},"sHwdD","\u002F\u002F likely routed to issue-triage; the label and comment were asked for, so they can skip approval\n",[144,404,405,406,301],{},"With the ",[147,407,31],{"href":32},[221,409,412],{"className":223,"code":410,"filename":411,"language":226,"meta":227,"style":227},"import githubExtension from '@github-tools\u002Feve-extension'\n\nexport default githubExtension({\n  preset: 'auto',\n  requireApproval: 'auto',\n})\n","agent\u002Fextensions\u002Fgithub.ts",[158,413,414,431,435,450,464,478],{"__ignoreMap":227},[231,415,416,418,421,424,426,429],{"class":233,"line":234},[231,417,238],{"class":237},[231,419,420],{"class":245}," githubExtension ",[231,422,423],{"class":237},"from",[231,425,255],{"class":241},[231,427,428],{"class":258},"@github-tools\u002Feve-extension",[231,430,262],{"class":241},[231,432,433],{"class":233,"line":265},[231,434,269],{"emptyLinePlaceholder":268},[231,436,437,440,443,446,448],{"class":233,"line":272},[231,438,439],{"class":237},"export",[231,441,442],{"class":237}," default",[231,444,445],{"class":285}," githubExtension",[231,447,288],{"class":245},[231,449,291],{"class":241},[231,451,452,454,456,458,460,462],{"class":233,"line":294},[231,453,318],{"class":297},[231,455,301],{"class":241},[231,457,255],{"class":241},[231,459,325],{"class":258},[231,461,309],{"class":241},[231,463,312],{"class":241},[231,465,466,468,470,472,474,476],{"class":233,"line":315},[231,467,335],{"class":297},[231,469,301],{"class":241},[231,471,255],{"class":241},[231,473,325],{"class":258},[231,475,309],{"class":241},[231,477,312],{"class":241},[231,479,480,482],{"class":233,"line":332},[231,481,351],{"class":241},[231,483,354],{"class":245},[144,485,486,487,489,490,495,496,499],{},"Both modes need ",[158,488,197],{}," 7.0.105 or later. Jev is called through ",[147,491,494],{"href":492,"rel":493},"https:\u002F\u002Fvercel.com\u002Fdocs\u002Fai-gateway\u002Fmodalities\u002Fevaluation",[151],"AI Gateway"," as ",[158,497,498],{},"typesafe-ai\u002Fjev",", so the project needs AI Gateway access with the model enabled.",[213,501,503],{"id":502},"pick-presets-per-request","Pick presets per request",[144,505,506,507,509,510,513],{},"A single agent that takes open-ended requests would otherwise need the full catalog. With ",[158,508,170],{},", Jev reads the latest user message and rates how likely it is to need each ",[147,511,512],{"href":87},"preset",". Only the tools of the chosen presets are exposed for that call:",[515,516,517,524,531],"ol",{},[166,518,519,520,523],{},"Presets rated at or above ",[158,521,522],{},"0.7"," are used, most likely first, up to two per call.",[166,525,526,527,530],{},"The read-only ",[158,528,529],{},"repo-explorer"," preset is only used when no other preset qualifies.",[166,532,533,534,536,537,371],{},"When none reaches ",[158,535,522],{},", the single most likely preset is used. For a message like \"hello\", that is ",[158,538,529],{},[144,540,541],{},"When exactly one preset is chosen, the agent also uses that preset's system prompt. The full catalog is never exposed.",[144,543,544],{},"On eve, routing runs on each user message. Tools the agent already called in the session stay registered, so a parked approval still resumes if the next message routes elsewhere.",[213,546,548],{"id":547},"auto-approve-routine-writes","Auto-approve routine writes",[144,550,551],{},"Before a low-risk write tool runs, Jev answers two questions:",[163,553,554,573],{},[166,555,556,560,561,564,565,568,569,572],{},[557,558,559],"strong",{},"Risk",": how costly would this call be if it were wrong? ",[158,562,563],{},"0"," negligible, ",[158,566,567],{},"1"," visible but reversible, ",[158,570,571],{},"2"," hard to undo.",[166,574,575,578],{},[557,576,577],{},"Intent",": did the latest user message ask for this exact action?",[144,580,581,582,584,585,588],{},"The call runs only when risk is at most ",[158,583,567],{}," and intent is at least ",[158,586,587],{},"0.6",". Otherwise the user is asked as usual. A comment the agent decided to post because an issue body told it to still waits for a human, since the user never asked for it.",[144,590,591,593,594,597],{},[158,592,160],{}," only applies to ",[158,595,596],{},"AUTO_APPROVAL_TOOLS",": labels, assignees, reactions, comments, review-thread replies, reviewer requests, notification reads, and workflow re-runs. Merges, file writes, deletes, releases, and other write tools keep requiring approval. You can opt single tools in or out:",[221,599,602],{"className":223,"code":600,"filename":601,"language":226,"meta":227,"style":227},"import { createGithubTools } from '@github-tools\u002Fsdk'\n\nconst tools = createGithubTools({\n  requireApproval: {\n    addLabels: 'auto',\n    addIssueComment: 'auto',\n    updateIssue: 'auto',\n    mergePullRequest: true,\n  },\n})\n","approval-per-tool.ts",[158,603,604,623,627,642,651,666,681,696,709,714],{"__ignoreMap":227},[231,605,606,608,610,613,615,617,619,621],{"class":233,"line":234},[231,607,238],{"class":237},[231,609,242],{"class":241},[231,611,612],{"class":245}," createGithubTools",[231,614,249],{"class":241},[231,616,252],{"class":237},[231,618,255],{"class":241},[231,620,259],{"class":258},[231,622,262],{"class":241},[231,624,625],{"class":233,"line":265},[231,626,269],{"emptyLinePlaceholder":268},[231,628,629,631,634,636,638,640],{"class":233,"line":272},[231,630,276],{"class":275},[231,632,633],{"class":245}," tools ",[231,635,282],{"class":241},[231,637,612],{"class":285},[231,639,288],{"class":245},[231,641,291],{"class":241},[231,643,644,646,648],{"class":233,"line":294},[231,645,335],{"class":297},[231,647,301],{"class":241},[231,649,650],{"class":241}," {\n",[231,652,653,656,658,660,662,664],{"class":233,"line":315},[231,654,655],{"class":297},"    addLabels",[231,657,301],{"class":241},[231,659,255],{"class":241},[231,661,325],{"class":258},[231,663,309],{"class":241},[231,665,312],{"class":241},[231,667,668,671,673,675,677,679],{"class":233,"line":332},[231,669,670],{"class":297},"    addIssueComment",[231,672,301],{"class":241},[231,674,255],{"class":241},[231,676,325],{"class":258},[231,678,309],{"class":241},[231,680,312],{"class":241},[231,682,683,686,688,690,692,694],{"class":233,"line":348},[231,684,685],{"class":297},"    updateIssue",[231,687,301],{"class":241},[231,689,255],{"class":241},[231,691,325],{"class":258},[231,693,309],{"class":241},[231,695,312],{"class":241},[231,697,698,701,703,707],{"class":233,"line":357},[231,699,700],{"class":297},"    mergePullRequest",[231,702,301],{"class":241},[231,704,706],{"class":705},"sfNiH"," true",[231,708,312],{"class":241},[231,710,711],{"class":233,"line":362},[231,712,713],{"class":241},"  },\n",[231,715,716,718],{"class":233,"line":398},[231,717,351],{"class":241},[231,719,354],{"class":245},[144,721,722,723,371],{},"More detail, including eve approval policies: ",[147,724,726],{"href":725},"\u002Fguide\u002Fapproval-control#auto-approval","Control write safety",[213,728,730],{"id":729},"tune-the-thresholds","Tune the thresholds",[144,732,733,734,737,738,741,742,745],{},"The defaults work without configuration. The ",[158,735,736],{},"evaluation"," option tunes both modes, on ",[158,739,740],{},"createGithubTools",", ",[158,743,744],{},"createGithubAgent",", and the eve extension:",[221,747,750],{"className":223,"code":748,"filename":749,"language":226,"meta":227,"style":227},"import { createGithubAgent } from '@github-tools\u002Fsdk'\n\nconst agent = createGithubAgent({\n  model: 'anthropic\u002Fclaude-opus-5.5',\n  preset: 'auto',\n  requireApproval: 'auto',\n  evaluation: {\n    model: 'typesafe-ai\u002Fjev',\n    maxRisk: 1,\n    minIntent: 0.6,\n    minPresetProbability: 0.7,\n    maxPresets: 2,\n  },\n})\n","evaluation.ts",[158,751,752,770,774,788,802,816,830,839,854,867,879,892,905,910],{"__ignoreMap":227},[231,753,754,756,758,760,762,764,766,768],{"class":233,"line":234},[231,755,238],{"class":237},[231,757,242],{"class":241},[231,759,246],{"class":245},[231,761,249],{"class":241},[231,763,252],{"class":237},[231,765,255],{"class":241},[231,767,259],{"class":258},[231,769,262],{"class":241},[231,771,772],{"class":233,"line":265},[231,773,269],{"emptyLinePlaceholder":268},[231,775,776,778,780,782,784,786],{"class":233,"line":272},[231,777,276],{"class":275},[231,779,279],{"class":245},[231,781,282],{"class":241},[231,783,246],{"class":285},[231,785,288],{"class":245},[231,787,291],{"class":241},[231,789,790,792,794,796,798,800],{"class":233,"line":294},[231,791,298],{"class":297},[231,793,301],{"class":241},[231,795,255],{"class":241},[231,797,306],{"class":258},[231,799,309],{"class":241},[231,801,312],{"class":241},[231,803,804,806,808,810,812,814],{"class":233,"line":315},[231,805,318],{"class":297},[231,807,301],{"class":241},[231,809,255],{"class":241},[231,811,325],{"class":258},[231,813,309],{"class":241},[231,815,312],{"class":241},[231,817,818,820,822,824,826,828],{"class":233,"line":332},[231,819,335],{"class":297},[231,821,301],{"class":241},[231,823,255],{"class":241},[231,825,325],{"class":258},[231,827,309],{"class":241},[231,829,312],{"class":241},[231,831,832,835,837],{"class":233,"line":348},[231,833,834],{"class":297},"  evaluation",[231,836,301],{"class":241},[231,838,650],{"class":241},[231,840,841,844,846,848,850,852],{"class":233,"line":357},[231,842,843],{"class":297},"    model",[231,845,301],{"class":241},[231,847,255],{"class":241},[231,849,498],{"class":258},[231,851,309],{"class":241},[231,853,312],{"class":241},[231,855,856,859,861,865],{"class":233,"line":362},[231,857,858],{"class":297},"    maxRisk",[231,860,301],{"class":241},[231,862,864],{"class":863},"sbssI"," 1",[231,866,312],{"class":241},[231,868,869,872,874,877],{"class":233,"line":398},[231,870,871],{"class":297},"    minIntent",[231,873,301],{"class":241},[231,875,876],{"class":863}," 0.6",[231,878,312],{"class":241},[231,880,882,885,887,890],{"class":233,"line":881},11,[231,883,884],{"class":297},"    minPresetProbability",[231,886,301],{"class":241},[231,888,889],{"class":863}," 0.7",[231,891,312],{"class":241},[231,893,895,898,900,903],{"class":233,"line":894},12,[231,896,897],{"class":297},"    maxPresets",[231,899,301],{"class":241},[231,901,902],{"class":863}," 2",[231,904,312],{"class":241},[231,906,908],{"class":233,"line":907},13,[231,909,713],{"class":241},[231,911,913,915],{"class":233,"line":912},14,[231,914,351],{"class":241},[231,916,354],{"class":245},[918,919,920,939],"table",{},[921,922,923],"thead",{},[924,925,926,930,933,936],"tr",{},[927,928,929],"th",{},"Option",[927,931,932],{},"Default",[927,934,935],{},"Used by",[927,937,938],{},"Effect",[940,941,942,961,978,994,1011],"tbody",{},[924,943,944,950,955,958],{},[945,946,947],"td",{},[158,948,949],{},"model",[945,951,952],{},[158,953,954],{},"'typesafe-ai\u002Fjev'",[945,956,957],{},"both",[945,959,960],{},"Any AI SDK evaluation model",[924,962,963,968,972,975],{},[945,964,965],{},[158,966,967],{},"maxRisk",[945,969,970],{},[158,971,567],{},[945,973,974],{},"approval",[945,976,977],{},"Highest risk score that can skip approval",[924,979,980,985,989,991],{},[945,981,982],{},[158,983,984],{},"minIntent",[945,986,987],{},[158,988,587],{},[945,990,974],{},[945,992,993],{},"Lowest probability that the user asked for the call",[924,995,996,1001,1005,1008],{},[945,997,998],{},[158,999,1000],{},"minPresetProbability",[945,1002,1003],{},[158,1004,522],{},[945,1006,1007],{},"presets",[945,1009,1010],{},"Probability a preset needs to be selected",[924,1012,1013,1018,1022,1024],{},[945,1014,1015],{},[158,1016,1017],{},"maxPresets",[945,1019,1020],{},[158,1021,571],{},[945,1023,1007],{},[945,1025,1026],{},"Presets combined per call",[144,1028,1029,1030,1032,1033,1035],{},"Lower ",[158,1031,967],{}," or raise ",[158,1034,984],{}," to ask more often. Set the thresholds against the cost of a wrong call in your repositories, not against how often the agent prompts.",[213,1037,1039],{"id":1038},"when-jev-is-unavailable","When Jev is unavailable",[144,1041,1042],{},"If the evaluation call fails, for example because the model is not enabled for your AI Gateway project, the team is out of credits, or the gateway is rate limiting, both modes fall back to the safe side:",[163,1044,1045,1053],{},[166,1046,1047,1049,1050,371],{},[158,1048,176],{}," asks for approval, as if it were ",[158,1051,1052],{},"true",[166,1054,1055,1057,1058,1060],{},[158,1056,170],{}," uses the read-only ",[158,1059,529],{}," preset.",[144,1062,1063,1064,1067,1068,1071,1072,371],{},"The agent keeps running, and a ",[158,1065,1066],{},"github_tools.EVALUATION_FAILED"," warning with the gateway error as ",[158,1069,1070],{},"cause"," is logged through ",[158,1073,1074],{},"console.warn",[1076,1077,1078,1081,1082,1084,1085,1087,1088,1090],"note",{},[158,1079,1080],{},"createDurableGithubAgent"," does not accept ",[158,1083,160],{},". Use ",[158,1086,744],{}," or the ",[147,1089,31],{"href":32}," for durable agents with auto approval.",[213,1092,1094],{"id":1093},"learn-more-about-jev","Learn more about Jev",[144,1096,1097],{},"These guides from the Vercel Knowledge Base cover Jev outside GitHub tools.",[1099,1100,1101,1109,1115,1121],"card-group",{},[1102,1103,1108],"card",{"icon":1104,"target":1105,"title":1106,"to":1107},"i-lucide-shield-check","_blank","Auto-approve tool calls in eve","https:\u002F\u002Fvercel.com\u002Fkb\u002Fguide\u002Fauto-approve-tool-calls-eve-jev","Review tool calls in eve with Jev, allow routine actions, and request human approval when needed.",[1102,1110,1114],{"icon":1111,"target":1105,"title":1112,"to":1113},"i-lucide-split","Classify, route, and score with the AI SDK","https:\u002F\u002Fvercel.com\u002Fkb\u002Fguide\u002Ftypesafe-jev-and-ai-sdk","Use Jev with the AI SDK's evaluate API to get typed choices, scores, and probabilities.",[1102,1116,1120],{"icon":1117,"target":1105,"title":1118,"to":1119},"i-lucide-inbox","Route form submissions","https:\u002F\u002Fvercel.com\u002Fkb\u002Fguide\u002Fjev-ai-sdk-form-router","Route clear cases with Jev and hand uncertain ones to a fallback model.",[1102,1122,1126,1127,371],{"icon":1123,"target":1105,"title":1124,"to":1125},"i-lucide-message-square-warning","Moderate product reviews with TanStack AI","https:\u002F\u002Fvercel.com\u002Fkb\u002Fguide\u002Fmoderate-product-reviews-jev-tanstack-ai","Publish clear reviews and hold flagged ones with Jev and TanStack AI's ",[158,1128,1129],{},"decide()",[213,1131,1133],{"id":1132},"external-references","External references",[163,1135,1136,1143,1149],{},[166,1137,1138],{},[147,1139,1142],{"href":1140,"rel":1141},"https:\u002F\u002Fvercel.com\u002Fkb\u002Fjev-from-typesafe-ai",[151],"Jev from TypeSafe AI (Vercel Knowledge Base)",[166,1144,1145],{},[147,1146,1148],{"href":149,"rel":1147},[151],"What is Jev?",[166,1150,1151],{},[147,1152,1154],{"href":492,"rel":1153},[151],"AI Gateway evaluation models",[1156,1157,1158],"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 .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 .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 .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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":227,"searchDepth":265,"depth":265,"links":1160},[1161,1162,1163,1164,1165,1166,1167],{"id":215,"depth":265,"text":216},{"id":502,"depth":265,"text":503},{"id":547,"depth":265,"text":548},{"id":729,"depth":265,"text":730},{"id":1038,"depth":265,"text":1039},{"id":1093,"depth":265,"text":1094},{"id":1132,"depth":265,"text":1133},"Use Jev from TypeSafe AI to pick GitHub tool presets per request and auto-approve routine writes in AI SDK and eve agents.","md",[1171,1176],{"label":1172,"icon":1173,"to":87,"color":1174,"variant":1175},"Scope with presets","i-lucide-layers","neutral","subtle",{"label":726,"icon":1104,"to":91,"color":1174,"variant":1175},{},{"title":114},{"title":139,"description":1168},"hfXYON3jL9FskWbJfI8gxyon-czMrwsGGnle73lSPlI",[1182,1184],{"title":110,"path":111,"stem":112,"description":1183,"children":-1},"Structured, agent-readable errors — every failure carries a stable code, the technical cause, and an actionable fix.",{"title":122,"path":123,"stem":124,"description":1185,"children":-1},"Every available tool, grouped by domain and write-safety status. Tools run as durable workflow steps when used with Vercel Workflow.",1790253693641]