[{"data":1,"prerenderedAt":1131},["ShallowReactive",2],{"navigation_docs":3,"-guide-custom":104,"-guide-custom-surround":1126},[4,48],{"title":5,"path":6,"stem":7,"children":8,"icon":47},"Guide","\u002Fguide","1.guide\u002F01.index",[9,11,15,19,23,27,31,35,39,43],{"title":10,"path":6,"stem":7},"Getting Started",{"title":12,"path":13,"stem":14},"Registry and paths","\u002Fguide\u002Fregistry","1.guide\u002F02.registry",{"title":16,"path":17,"stem":18},"Running another harness","\u002Fguide\u002Finvoke","1.guide\u002F03.invoke",{"title":20,"path":21,"stem":22},"MCP servers","\u002Fguide\u002Fmcp-servers","1.guide\u002F04.mcp-servers",{"title":24,"path":25,"stem":26},"Instructions files","\u002Fguide\u002Fagents-sync","1.guide\u002F05.agents-sync",{"title":28,"path":29,"stem":30},"CLI","\u002Fguide\u002Fcli","1.guide\u002F06.cli",{"title":32,"path":33,"stem":34},"Agents","\u002Fguide\u002Fagents","1.guide\u002F07.agents",{"title":36,"path":37,"stem":38},"Sessions","\u002Fguide\u002Fsessions","1.guide\u002F08.sessions",{"title":40,"path":41,"stem":42},"Custom harnesses","\u002Fguide\u002Fcustom","1.guide\u002F09.custom",{"title":44,"path":45,"stem":46},"Explorer","\u002Fguide\u002Fexplorer","1.guide\u002F10.explorer","i-solar-book-2-linear",{"title":49,"path":50,"stem":51,"children":52,"icon":103},"Harnesses","\u002Fharnesses","2.harnesses\u002F00.index",[53,55,59,63,67,71,75,79,83,87,91,95,99],{"title":54,"path":50,"stem":51},"Overview",{"title":56,"path":57,"stem":58},"Claude Code","\u002Fharnesses\u002Fclaude","2.harnesses\u002F01.claude",{"title":60,"path":61,"stem":62},"Codex CLI","\u002Fharnesses\u002Fcodex","2.harnesses\u002F02.codex",{"title":64,"path":65,"stem":66},"Gemini CLI","\u002Fharnesses\u002Fgemini","2.harnesses\u002F03.gemini",{"title":68,"path":69,"stem":70},"Antigravity CLI","\u002Fharnesses\u002Fantigravity","2.harnesses\u002F04.antigravity",{"title":72,"path":73,"stem":74},"Grok CLI","\u002Fharnesses\u002Fgrok","2.harnesses\u002F05.grok",{"title":76,"path":77,"stem":78},"OpenCode","\u002Fharnesses\u002Fopencode","2.harnesses\u002F06.opencode",{"title":80,"path":81,"stem":82},"Pi","\u002Fharnesses\u002Fpi","2.harnesses\u002F07.pi",{"title":84,"path":85,"stem":86},"OMP","\u002Fharnesses\u002Fomp","2.harnesses\u002F08.omp",{"title":88,"path":89,"stem":90},"Cursor","\u002Fharnesses\u002Fcursor","2.harnesses\u002F09.cursor",{"title":92,"path":93,"stem":94},"GitHub Copilot","\u002Fharnesses\u002Fgithub-copilot","2.harnesses\u002F10.github-copilot",{"title":96,"path":97,"stem":98},"Mastra Code","\u002Fharnesses\u002Fmastracode","2.harnesses\u002F11.mastracode",{"title":100,"path":101,"stem":102},"Freebuff","\u002Fharnesses\u002Ffreebuff","2.harnesses\u002F12.freebuff","i-solar-library-linear",{"id":105,"title":40,"body":106,"description":1119,"extension":1120,"links":1121,"meta":1122,"navigation":190,"path":41,"seo":1124,"stem":42,"__hash__":1125},"docs\u002F1.guide\u002F09.custom.md",{"type":107,"value":108,"toc":1113},"minimark",[109,114,123,932,950,954,1072,1076,1087,1091,1109],[110,111,113],"h2",{"id":112},"the-class","The class",[115,116,117,118,122],"p",{},"Every built-in is a concrete subclass of the exported abstract ",[119,120,121],"code",{},"Harness",". Yours is the same shape, one file:",[124,125,131],"pre",{"className":126,"code":127,"filename":128,"language":129,"meta":130,"style":130},"language-ts shiki shiki-themes github-light github-light poimandres","import { Harness, registerHarness, type HarnessId } from \"@agntn\u002Fharnesses\";\n\nclass Aider extends Harness {\n  \u002F** HarnessId is a closed union in the published types; the cast is the price of a local id. *\u002F\n  readonly id = \"aider\" as HarnessId;\n  readonly name = \"Aider\";\n  readonly binaries = [\"aider\"];\n  readonly capabilities = {\n    mcp: false,\n    vision: true,\n    audio: false,\n    video: false,\n    tools: true,\n    streaming: true,\n  };\n  readonly config: Harness[\"config\"] = [\n    { path: \"~\u002F.aider.conf.yml\", scope: \"user\", level: \"official\" },\n    { path: \".aider.conf.yml\", scope: \"project\", level: \"official\" },\n  ];\n  readonly sessions: Harness[\"sessions\"] = [\n    { path: \".aider.chat.history.md\", scope: \"project\", level: \"official\" },\n  ];\n  readonly persistence: Harness[\"persistence\"] = [{ format: \"YAML\", level: \"official\" }];\n  readonly instructions: Harness[\"instructions\"] = [];\n  readonly skills: Harness[\"skills\"] = [];\n  readonly commands: Harness[\"commands\"] = [];\n  readonly hooks: Harness[\"hooks\"] = [];\n  readonly detection = { envVars: [], projectMarkers: [\".aider.conf.yml\"] };\n  readonly invocation: Harness[\"invocation\"] = {\n    args: [\"--message\", \"{prompt}\", \"--yes-always\"],\n    modelArgs: [\"--model\", \"{model}\"],\n    level: \"inferred\",\n  };\n}\n\nregisterHarness(Aider);\n","aider.ts","ts","",[119,132,133,185,192,211,218,247,266,288,300,316,330,342,354,366,378,384,415,464,507,513,540,582,587,642,670,697,724,751,790,817,855,883,900,905,911,916],{"__ignoreMap":130},[134,135,138,142,146,150,153,156,158,162,165,168,171,175,179,182],"span",{"class":136,"line":137},"line",1,[134,139,141],{"class":140},"sP0CR","import",[134,143,145],{"class":144},"sKlNE"," {",[134,147,149],{"class":148},"snHMy"," Harness",[134,151,152],{"class":144},",",[134,154,155],{"class":148}," registerHarness",[134,157,152],{"class":144},[134,159,161],{"class":160},"stCPd"," type",[134,163,164],{"class":148}," HarnessId",[134,166,167],{"class":144}," }",[134,169,170],{"class":160}," from",[134,172,174],{"class":173},"scVjq"," \"",[134,176,178],{"class":177},"sQ7BG","@agntn\u002Fharnesses",[134,180,181],{"class":173},"\"",[134,183,184],{"class":144},";\n",[134,186,188],{"class":136,"line":187},2,[134,189,191],{"emptyLinePlaceholder":190},true,"\n",[134,193,195,199,203,206,208],{"class":136,"line":194},3,[134,196,198],{"class":197},"s1TYA","class",[134,200,202],{"class":201},"scZRh"," Aider",[134,204,205],{"class":140}," extends",[134,207,149],{"class":201},[134,209,210],{"class":144}," {\n",[134,212,214],{"class":136,"line":213},4,[134,215,217],{"class":216},"sjhu3","  \u002F** HarnessId is a closed union in the published types; the cast is the price of a local id. *\u002F\n",[134,219,221,224,228,231,233,236,238,242,245],{"class":136,"line":220},5,[134,222,223],{"class":140},"  readonly",[134,225,227],{"class":226},"s0VbO"," id",[134,229,230],{"class":197}," =",[134,232,174],{"class":173},[134,234,235],{"class":177},"aider",[134,237,181],{"class":173},[134,239,241],{"class":240},"sp-LQ"," as",[134,243,164],{"class":244},"sCrqT",[134,246,184],{"class":144},[134,248,250,252,255,257,259,262,264],{"class":136,"line":249},6,[134,251,223],{"class":140},[134,253,254],{"class":226}," name",[134,256,230],{"class":197},[134,258,174],{"class":173},[134,260,261],{"class":177},"Aider",[134,263,181],{"class":173},[134,265,184],{"class":144},[134,267,269,271,274,276,279,281,283,285],{"class":136,"line":268},7,[134,270,223],{"class":140},[134,272,273],{"class":226}," binaries",[134,275,230],{"class":197},[134,277,278],{"class":144}," [",[134,280,181],{"class":173},[134,282,235],{"class":177},[134,284,181],{"class":173},[134,286,287],{"class":144},"];\n",[134,289,291,293,296,298],{"class":136,"line":290},8,[134,292,223],{"class":140},[134,294,295],{"class":226}," capabilities",[134,297,230],{"class":197},[134,299,210],{"class":144},[134,301,303,306,309,313],{"class":136,"line":302},9,[134,304,305],{"class":148},"    mcp",[134,307,308],{"class":144},":",[134,310,312],{"class":311},"sNe8j"," false",[134,314,315],{"class":144},",\n",[134,317,319,322,324,328],{"class":136,"line":318},10,[134,320,321],{"class":148},"    vision",[134,323,308],{"class":144},[134,325,327],{"class":326},"siHFe"," true",[134,329,315],{"class":144},[134,331,333,336,338,340],{"class":136,"line":332},11,[134,334,335],{"class":148},"    audio",[134,337,308],{"class":144},[134,339,312],{"class":311},[134,341,315],{"class":144},[134,343,345,348,350,352],{"class":136,"line":344},12,[134,346,347],{"class":148},"    video",[134,349,308],{"class":144},[134,351,312],{"class":311},[134,353,315],{"class":144},[134,355,357,360,362,364],{"class":136,"line":356},13,[134,358,359],{"class":148},"    tools",[134,361,308],{"class":144},[134,363,327],{"class":326},[134,365,315],{"class":144},[134,367,369,372,374,376],{"class":136,"line":368},14,[134,370,371],{"class":148},"    streaming",[134,373,308],{"class":144},[134,375,327],{"class":326},[134,377,315],{"class":144},[134,379,381],{"class":136,"line":380},15,[134,382,383],{"class":144},"  };\n",[134,385,387,389,392,394,396,399,401,404,406,409,412],{"class":136,"line":386},16,[134,388,223],{"class":140},[134,390,391],{"class":226}," config",[134,393,308],{"class":197},[134,395,149],{"class":244},[134,397,398],{"class":144},"[",[134,400,181],{"class":173},[134,402,403],{"class":177},"config",[134,405,181],{"class":173},[134,407,408],{"class":144},"] ",[134,410,411],{"class":197},"=",[134,413,414],{"class":144}," [\n",[134,416,418,421,424,426,428,431,433,435,438,440,442,445,447,449,452,454,456,459,461],{"class":136,"line":417},17,[134,419,420],{"class":144},"    {",[134,422,423],{"class":148}," path",[134,425,308],{"class":144},[134,427,174],{"class":173},[134,429,430],{"class":177},"~\u002F.aider.conf.yml",[134,432,181],{"class":173},[134,434,152],{"class":144},[134,436,437],{"class":148}," scope",[134,439,308],{"class":144},[134,441,174],{"class":173},[134,443,444],{"class":177},"user",[134,446,181],{"class":173},[134,448,152],{"class":144},[134,450,451],{"class":148}," level",[134,453,308],{"class":144},[134,455,174],{"class":173},[134,457,458],{"class":177},"official",[134,460,181],{"class":173},[134,462,463],{"class":144}," },\n",[134,465,467,469,471,473,475,478,480,482,484,486,488,491,493,495,497,499,501,503,505],{"class":136,"line":466},18,[134,468,420],{"class":144},[134,470,423],{"class":148},[134,472,308],{"class":144},[134,474,174],{"class":173},[134,476,477],{"class":177},".aider.conf.yml",[134,479,181],{"class":173},[134,481,152],{"class":144},[134,483,437],{"class":148},[134,485,308],{"class":144},[134,487,174],{"class":173},[134,489,490],{"class":177},"project",[134,492,181],{"class":173},[134,494,152],{"class":144},[134,496,451],{"class":148},[134,498,308],{"class":144},[134,500,174],{"class":173},[134,502,458],{"class":177},[134,504,181],{"class":173},[134,506,463],{"class":144},[134,508,510],{"class":136,"line":509},19,[134,511,512],{"class":144},"  ];\n",[134,514,516,518,521,523,525,527,529,532,534,536,538],{"class":136,"line":515},20,[134,517,223],{"class":140},[134,519,520],{"class":226}," sessions",[134,522,308],{"class":197},[134,524,149],{"class":244},[134,526,398],{"class":144},[134,528,181],{"class":173},[134,530,531],{"class":177},"sessions",[134,533,181],{"class":173},[134,535,408],{"class":144},[134,537,411],{"class":197},[134,539,414],{"class":144},[134,541,543,545,547,549,551,554,556,558,560,562,564,566,568,570,572,574,576,578,580],{"class":136,"line":542},21,[134,544,420],{"class":144},[134,546,423],{"class":148},[134,548,308],{"class":144},[134,550,174],{"class":173},[134,552,553],{"class":177},".aider.chat.history.md",[134,555,181],{"class":173},[134,557,152],{"class":144},[134,559,437],{"class":148},[134,561,308],{"class":144},[134,563,174],{"class":173},[134,565,490],{"class":177},[134,567,181],{"class":173},[134,569,152],{"class":144},[134,571,451],{"class":148},[134,573,308],{"class":144},[134,575,174],{"class":173},[134,577,458],{"class":177},[134,579,181],{"class":173},[134,581,463],{"class":144},[134,583,585],{"class":136,"line":584},22,[134,586,512],{"class":144},[134,588,590,592,595,597,599,601,603,606,608,610,612,615,618,620,622,625,627,629,631,633,635,637,639],{"class":136,"line":589},23,[134,591,223],{"class":140},[134,593,594],{"class":226}," persistence",[134,596,308],{"class":197},[134,598,149],{"class":244},[134,600,398],{"class":144},[134,602,181],{"class":173},[134,604,605],{"class":177},"persistence",[134,607,181],{"class":173},[134,609,408],{"class":144},[134,611,411],{"class":197},[134,613,614],{"class":144}," [{",[134,616,617],{"class":148}," format",[134,619,308],{"class":144},[134,621,174],{"class":173},[134,623,624],{"class":177},"YAML",[134,626,181],{"class":173},[134,628,152],{"class":144},[134,630,451],{"class":148},[134,632,308],{"class":144},[134,634,174],{"class":173},[134,636,458],{"class":177},[134,638,181],{"class":173},[134,640,641],{"class":144}," }];\n",[134,643,645,647,650,652,654,656,658,661,663,665,667],{"class":136,"line":644},24,[134,646,223],{"class":140},[134,648,649],{"class":226}," instructions",[134,651,308],{"class":197},[134,653,149],{"class":244},[134,655,398],{"class":144},[134,657,181],{"class":173},[134,659,660],{"class":177},"instructions",[134,662,181],{"class":173},[134,664,408],{"class":144},[134,666,411],{"class":197},[134,668,669],{"class":144}," [];\n",[134,671,673,675,678,680,682,684,686,689,691,693,695],{"class":136,"line":672},25,[134,674,223],{"class":140},[134,676,677],{"class":226}," skills",[134,679,308],{"class":197},[134,681,149],{"class":244},[134,683,398],{"class":144},[134,685,181],{"class":173},[134,687,688],{"class":177},"skills",[134,690,181],{"class":173},[134,692,408],{"class":144},[134,694,411],{"class":197},[134,696,669],{"class":144},[134,698,700,702,705,707,709,711,713,716,718,720,722],{"class":136,"line":699},26,[134,701,223],{"class":140},[134,703,704],{"class":226}," commands",[134,706,308],{"class":197},[134,708,149],{"class":244},[134,710,398],{"class":144},[134,712,181],{"class":173},[134,714,715],{"class":177},"commands",[134,717,181],{"class":173},[134,719,408],{"class":144},[134,721,411],{"class":197},[134,723,669],{"class":144},[134,725,727,729,732,734,736,738,740,743,745,747,749],{"class":136,"line":726},27,[134,728,223],{"class":140},[134,730,731],{"class":226}," hooks",[134,733,308],{"class":197},[134,735,149],{"class":244},[134,737,398],{"class":144},[134,739,181],{"class":173},[134,741,742],{"class":177},"hooks",[134,744,181],{"class":173},[134,746,408],{"class":144},[134,748,411],{"class":197},[134,750,669],{"class":144},[134,752,754,756,759,761,763,766,768,771,774,776,778,780,782,784,787],{"class":136,"line":753},28,[134,755,223],{"class":140},[134,757,758],{"class":226}," detection",[134,760,230],{"class":197},[134,762,145],{"class":144},[134,764,765],{"class":148}," envVars",[134,767,308],{"class":144},[134,769,770],{"class":144}," [],",[134,772,773],{"class":148}," projectMarkers",[134,775,308],{"class":144},[134,777,278],{"class":144},[134,779,181],{"class":173},[134,781,477],{"class":177},[134,783,181],{"class":173},[134,785,786],{"class":144},"]",[134,788,789],{"class":144}," };\n",[134,791,793,795,798,800,802,804,806,809,811,813,815],{"class":136,"line":792},29,[134,794,223],{"class":140},[134,796,797],{"class":226}," invocation",[134,799,308],{"class":197},[134,801,149],{"class":244},[134,803,398],{"class":144},[134,805,181],{"class":173},[134,807,808],{"class":177},"invocation",[134,810,181],{"class":173},[134,812,408],{"class":144},[134,814,411],{"class":197},[134,816,210],{"class":144},[134,818,820,823,825,827,829,832,834,836,838,841,843,845,847,850,852],{"class":136,"line":819},30,[134,821,822],{"class":148},"    args",[134,824,308],{"class":144},[134,826,278],{"class":144},[134,828,181],{"class":173},[134,830,831],{"class":177},"--message",[134,833,181],{"class":173},[134,835,152],{"class":144},[134,837,174],{"class":173},[134,839,840],{"class":177},"{prompt}",[134,842,181],{"class":173},[134,844,152],{"class":144},[134,846,174],{"class":173},[134,848,849],{"class":177},"--yes-always",[134,851,181],{"class":173},[134,853,854],{"class":144},"],\n",[134,856,858,861,863,865,867,870,872,874,876,879,881],{"class":136,"line":857},31,[134,859,860],{"class":148},"    modelArgs",[134,862,308],{"class":144},[134,864,278],{"class":144},[134,866,181],{"class":173},[134,868,869],{"class":177},"--model",[134,871,181],{"class":173},[134,873,152],{"class":144},[134,875,174],{"class":173},[134,877,878],{"class":177},"{model}",[134,880,181],{"class":173},[134,882,854],{"class":144},[134,884,886,889,891,893,896,898],{"class":136,"line":885},32,[134,887,888],{"class":148},"    level",[134,890,308],{"class":144},[134,892,174],{"class":173},[134,894,895],{"class":177},"inferred",[134,897,181],{"class":173},[134,899,315],{"class":144},[134,901,903],{"class":136,"line":902},33,[134,904,383],{"class":144},[134,906,908],{"class":136,"line":907},34,[134,909,910],{"class":144},"}\n",[134,912,914],{"class":136,"line":913},35,[134,915,191],{"emptyLinePlaceholder":190},[134,917,919,923,926,929],{"class":136,"line":918},36,[134,920,922],{"class":921},"sULi6","registerHarness",[134,924,925],{"class":144},"(",[134,927,261],{"class":928},"spVlQ",[134,930,931],{"class":144},");\n",[115,933,934,937,938,941,942,945,946,949],{},[119,935,936],{},"HarnessId"," is a closed union in the published types, so a local id needs that cast, or a contribution upstream that adds it to the union. The registry itself is a ",[119,939,940],{},"Map"," keyed by whatever ",[119,943,944],{},"id"," you return; ",[119,947,948],{},"getHarness(\"aider\")"," works at runtime once registered, in your process only. Registering an existing id replaces the built-in.",[110,951,953],{"id":952},"what-each-field-decides","What each field decides",[955,956,957,979,989,1020,1036,1060],"ul",{},[958,959,960,966,967,970,971,974,975,978],"li",{},[961,962,963],"strong",{},[119,964,965],{},"binaries"," feed ",[119,968,969],{},"isInstalled()"," and ",[119,972,973],{},"version",". The first one is the invocation binary unless ",[119,976,977],{},"invocation.binary"," says otherwise.",[958,980,981,984,985,988],{},[961,982,983],{},"The six path groups"," are what ",[119,986,987],{},"resolve"," expands and the CLI prints. Empty is fine and honest.",[958,990,991,995,996,999,1000,1003,1004,1007,1008,1011,1012,1015,1016,1019],{},[961,992,993],{},[119,994,808],{}," may be ",[119,997,998],{},"null",". Then ",[119,1001,1002],{},"invoke"," rejects before spawning and all six ",[119,1005,1006],{},"invocationModes"," are ",[119,1009,1010],{},"false",". Give ",[119,1013,1014],{},"noToolsArgs"," only if the CLI has a flag that removes tools from the model, ",[119,1017,1018],{},"readOnlyArgs"," only if it enforces a sandbox itself. Prompt wording is not enforcement.",[958,1021,1022,1027,1028,1031,1032,1035],{},[961,1023,1024],{},[119,1025,1026],{},"modelListing"," needs ",[119,1029,1030],{},"parseModelListingOutput(stdout)"," overridden to turn the CLI's output into ",[119,1033,1034],{},"AvailableModel[]","; the base implementation throws.",[958,1037,1038,1043,1044,1047,1048,1051,1052,1055,1056,1059],{},[961,1039,1040],{},[119,1041,1042],{},"mcpConfigs"," makes ",[119,1045,1046],{},"listMcpServers",", ",[119,1049,1050],{},"addMcpServer"," and the sync see the harness. Pick the dialect that matches the file; ",[119,1053,1054],{},"standard"," is the ",[119,1057,1058],{},"{ command, args, env, url }"," family.",[958,1061,1062,1067,1068,1071],{},[961,1063,1064],{},[119,1065,1066],{},"agentsFile"," opts the harness into ",[119,1069,1070],{},"syncAgentsFiles",".",[110,1073,1075],{"id":1074},"evidence","Evidence",[115,1077,1078,1079,1082,1083,1086],{},"Put ",[119,1080,1081],{},"level: \"inferred\""," on a path you reasoned out and haven't seen on disk, and change it when you have. The field is required by the type, which is the point: a path without a level is a guess pretending to be a fact. Variadic CLI options go after the positional prompt in ",[119,1084,1085],{},"args",", or they eat it.",[110,1088,1090],{"id":1089},"contributing-one-upstream","Contributing one upstream",[115,1092,1093,1094,1097,1098,1100,1101,1104,1105,1108],{},"Built-ins live one per file under ",[119,1095,1096],{},"src\u002Fharnesses\u002F",". A new one needs the id in ",[119,1099,936],{},", a row in the README table, the id in the test that pins the id list, and a contract test for its invocation templates in ",[119,1102,1103],{},"test\u002Finvoke.test.ts",". The repository's ",[119,1106,1107],{},"AGENTS.md"," lists the run order.",[1110,1111,1112],"style",{},"html pre.shiki code .sP0CR, html code.shiki .sP0CR{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#5DE4C7}html pre.shiki code .sKlNE, html code.shiki .sKlNE{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#A6ACCD}html pre.shiki code .snHMy, html code.shiki .snHMy{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#ADD7FF}html pre.shiki code .stCPd, html code.shiki .stCPd{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#A6ACCD}html pre.shiki code .scVjq, html code.shiki .scVjq{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#A6ACCD}html pre.shiki code .sQ7BG, html code.shiki .sQ7BG{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#5DE4C7}html pre.shiki code .s1TYA, html code.shiki .s1TYA{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#91B4D5}html pre.shiki code .scZRh, html code.shiki .scZRh{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#ADD7FF}html pre.shiki code .sjhu3, html code.shiki .sjhu3{--shiki-light:#6A737D;--shiki-light-font-style:inherit;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#767C9DB0;--shiki-dark-font-style:italic}html pre.shiki code .s0VbO, html code.shiki .s0VbO{--shiki-light:#E36209;--shiki-default:#E36209;--shiki-dark:#A6ACCD}html pre.shiki code .sp-LQ, html code.shiki .sp-LQ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#A6ACCDC0}html pre.shiki code .sCrqT, html code.shiki .sCrqT{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#A6ACCDC0}html pre.shiki code .sNe8j, html code.shiki .sNe8j{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#D0679D}html pre.shiki code .siHFe, html code.shiki .siHFe{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#5DE4C7}html pre.shiki code .sULi6, html code.shiki .sULi6{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#E4F0FBD0}html pre.shiki code .spVlQ, html code.shiki .spVlQ{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E4F0FB}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":130,"searchDepth":187,"depth":187,"links":1114},[1115,1116,1117,1118],{"id":112,"depth":187,"text":113},{"id":952,"depth":187,"text":953},{"id":1074,"depth":187,"text":1075},{"id":1089,"depth":187,"text":1090},"Extend the abstract Harness class, register it, and it shows up in getHarness, detection, the CLI and the tools.","md",null,{"icon":1123},"i-solar-add-circle-linear",{"title":40,"description":1119},"1Pc88BwvAmNTh8DFKwVuzjoY5fYZ4y-FyjBlweAuGko",[1127,1129],{"title":36,"path":37,"stem":38,"description":1128,"children":-1},"Typed schemas for the transcript formats, and where each harness writes them.",{"title":44,"path":45,"stem":46,"description":1130,"children":-1},"Every harness's paths expanded for a platform and home directory you choose, and the command each invoke mode would spawn.",1788622197937]