[{"data":1,"prerenderedAt":1213},["ShallowReactive",2],{"navigation":3,"\u002Fdocs\u002Fswift":135,"\u002Fdocs\u002Fswift-surround":1208},[4],{"title":5,"path":6,"stem":7,"children":8,"page":134},"Docs","\u002Fdocs","docs",[9,13,17,21,25,29,33,37,41,45,49,53,57,61,70,74,78,82,86,90,94,98,102,106,110,114,118,122,126,130],{"title":10,"path":11,"stem":12},"AI harnesses: LLM tools, MCP servers and agents","\u002Fdocs\u002Fai-tools","docs\u002Fai-tools",{"title":14,"path":15,"stem":16},"Architecture","\u002Fdocs\u002Farchitecture","docs\u002Farchitecture",{"title":18,"path":19,"stem":20},"Web \u002F native bridges","\u002Fdocs\u002Fbridges","docs\u002Fbridges",{"title":22,"path":23,"stem":24},"Broadcast channels and tests","\u002Fdocs\u002Fchannels-and-tests","docs\u002Fchannels-and-tests",{"title":26,"path":27,"stem":28},"CLI reference","\u002Fdocs\u002Fcli","docs\u002Fcli",{"title":30,"path":31,"stem":32},"Completeness: how far an answer reaches","\u002Fdocs\u002Fcompleteness","docs\u002Fcompleteness",{"title":34,"path":35,"stem":36},"Configuration","\u002Fdocs\u002Fconfiguration","docs\u002Fconfiguration",{"title":38,"path":39,"stem":40},"External systems","\u002Fdocs\u002Fexternal","docs\u002Fexternal",{"title":42,"path":43,"stem":44},"Generated, copied and vendored files","\u002Fdocs\u002Fgenerated","docs\u002Fgenerated",{"title":46,"path":47,"stem":48},"Installing and updating cg","\u002Fdocs\u002Finstall","docs\u002Finstall",{"title":50,"path":51,"stem":52},"Java","\u002Fdocs\u002Fjava","docs\u002Fjava",{"title":54,"path":55,"stem":56},"Kotlin","\u002Fdocs\u002Fkotlin","docs\u002Fkotlin",{"title":58,"path":59,"stem":60},"Known limitations","\u002Fdocs\u002Flimitations","docs\u002Flimitations",{"title":62,"path":63,"stem":64,"children":65},"MCP server","\u002Fdocs\u002Fmcp","docs\u002Fmcp",[66],{"title":67,"path":68,"stem":69},"code-graph MCP: sample outputs (real calls via the MCP Python SDK stdio client)","\u002Fdocs\u002Fmcp\u002Fsample_outputs","docs\u002Fmcp\u002Fsample_outputs",{"title":71,"path":72,"stem":73},"Rust, C and C++","\u002Fdocs\u002Fnative","docs\u002Fnative",{"title":75,"path":76,"stem":77},"Port gaps: cg parity","\u002Fdocs\u002Fparity","docs\u002Fparity",{"title":79,"path":80,"stem":81},"PHP","\u002Fdocs\u002Fphp","docs\u002Fphp",{"title":83,"path":84,"stem":85},"Planned changes","\u002Fdocs\u002Fplans","docs\u002Fplans",{"title":87,"path":88,"stem":89},"Platform-specific code","\u002Fdocs\u002Fplatforms","docs\u002Fplatforms",{"title":91,"path":92,"stem":93},"Protocol links","\u002Fdocs\u002Fprotocols","docs\u002Fprotocols",{"title":95,"path":96,"stem":97},"Python","\u002Fdocs\u002Fpython","docs\u002Fpython",{"title":99,"path":100,"stem":101},"Quick start","\u002Fdocs\u002Fquickstart","docs\u002Fquickstart",{"title":103,"path":104,"stem":105},"Graph schema","\u002Fdocs\u002Fschema","docs\u002Fschema",{"title":107,"path":108,"stem":109},"Attack surface","\u002Fdocs\u002Fsurface","docs\u002Fsurface",{"title":111,"path":112,"stem":113},"Swift","\u002Fdocs\u002Fswift","docs\u002Fswift",{"title":115,"path":116,"stem":117},"TypeScript \u002F JavaScript frameworks","\u002Fdocs\u002Fts-frameworks","docs\u002Fts-frameworks",{"title":119,"path":120,"stem":121},"How we validate","\u002Fdocs\u002Fvalidation","docs\u002Fvalidation",{"title":123,"path":124,"stem":125},"Validation log","\u002Fdocs\u002Fvalidation-log","docs\u002Fvalidation-log",{"title":127,"path":128,"stem":129},"Value facts and resolutions","\u002Fdocs\u002Fvalue-facts","docs\u002Fvalue-facts",{"title":131,"path":132,"stem":133},"Visual view","\u002Fdocs\u002Fviz","docs\u002Fviz",false,{"id":136,"title":111,"body":137,"description":1202,"extension":1203,"meta":1204,"navigation":1205,"path":112,"seo":1206,"stem":113,"__hash__":1207},"docs\u002Fdocs\u002Fswift.md",{"type":138,"value":139,"toc":1196},"minimark",[140,174,179,250,273,283,404,407,421,515,532,588,592,602,789,853,857,1091,1192],[141,142,143,144,148,149,153,154,158,159,161,162,165,166,169,170,173],"p",{},"What ",[145,146,147],"code",{},".swift"," adds beyond ",[150,151,152],"a",{"href":47},"Install",", ",[150,155,157],{"href":156},"\u002Fdocs\u002Fcli#query-targets-specs","CLI specs",", and ",[150,160,103],{"href":104},": heuristic vs the Swift index store, the ",[145,163,164],{},"CG_SWIFT_*"," flags, and the ids those pages do not spell out. Toolchain fit: ",[145,167,168],{},"cg doctor -h",". Why a file stayed heuristic: ",[145,171,172],{},"cg coverage",".",[175,176,178],"h2",{"id":177},"modes","Modes",[180,181,182,198],"table",{},[183,184,185],"thead",{},[186,187,188,192,195],"tr",{},[189,190,191],"th",{},"mode",[189,193,194],{},"calls",[189,196,197],{},"needs",[199,200,201,226],"tbody",{},[186,202,203,207,213],{},[204,205,206],"td",{},"heuristic (default)",[204,208,209,210],{},"name resolution, labelled ",[145,211,212],{},"heuristic",[204,214,215,216,153,219,222,223],{},"tree-sitter (",[145,217,218],{},"tree-sitter",[145,220,221],{},"tree-sitter-swift","). No Xcode or ",[145,224,225],{},"swift",[186,227,228,231,242],{},[204,229,230],{},"exact",[204,232,233,234,237,238,241],{},"compiler-resolved ",[145,235,236],{},"CALLS"," \u002F ",[145,239,240],{},"INSTANTIATES","; declarations and framework facts stay the syntax layer",[204,243,244,245,249],{},"a Swift toolchain, opt-in (",[150,246,248],{"href":247},"#exact-mode","Exact mode",")",[141,251,252,255,256,258,259,237,262,265,266,153,269,272],{},[145,253,254],{},"--min-confidence resolved"," (or ",[145,257,230],{},") hides every heuristic call edge. SwiftPM ",[145,260,261],{},".build",[145,263,264],{},".swiftpm",", Xcode ",[145,267,268],{},"DerivedData",[145,270,271],{},"Pods",", and Carthage are skipped.",[141,274,275,276,279,280,173],{},"tree-sitter-swift 0.7.3 rewrites some sources before parse (same length, so lines and names stay). Index stats count ",[145,277,278],{},"files_with_\u003Crewrite>",". What still fails is in ",[145,281,282],{},"cg coverage --details",[180,284,285,298],{},[183,286,287],{},[186,288,289,292,295],{},[189,290,291],{},"rewrite",[189,293,294],{},"when",[189,296,297],{},"stat",[199,299,300,316,338,362,391],{},[186,301,302,308,311],{},[204,303,304,307],{},[145,305,306],{},"#sourceLocation"," lines blanked",[204,309,310],{},"directive lines",[204,312,313],{},[145,314,315],{},"source_location_directives",[186,317,318,327,333],{},[204,319,320,323,324],{},[145,321,322],{},"#_name"," parsed as ",[145,325,326],{},"#line",[204,328,329,332],{},[145,330,331],{},"#_sourceLocation"," and similar",[204,334,335],{},[145,336,337],{},"underscore_macros",[186,339,340,349,359],{},[204,341,342,237,345,348],{},[145,343,344],{},"#if",[145,346,347],{},"#endif"," lines dropped",[204,350,351,352,355,356,249],{},"a block that is only attributes (",[145,353,354],{},"@Test"," under ",[145,357,358],{},"#if os",[204,360,361],{},"the declaration keeps that platform",[186,363,364,367,388],{},[204,365,366],{},"length-preserving patches",[204,368,369,372,373,376,377,153,380,383,384,387],{},[145,370,371],{},"()"," as a value, ",[145,374,375],{},"@convention(c)",", a cast before ",[145,378,379],{},"??",[145,381,382],{},"try"," before ",[145,385,386],{},"await"," in a condition, a binary operator starting a continuation line",[204,389,390],{},"names stay the original source",[186,392,393,396,399],{},[204,394,395],{},"members pulled back into the type",[204,397,398],{},"the grammar closes the type early",[204,400,401],{},[145,402,403],{},"declarations_recovered_into_type",[175,405,248],{"id":406},"exact-mode",[141,408,409,412,413,416,417,420],{},[145,410,411],{},"libIndexStore"," replaces heuristic call and initializer edges for each file the store covers. ",[145,414,415],{},"swift build"," runs the package manifest and its plugins, so it is opt-in. Coverage reports ",[145,418,419],{},"Swift index store (swift build)",", or the reason the layer did not run.",[180,422,423,433],{},[183,424,425],{},[186,426,427,430],{},[189,428,429],{},"source",[189,431,432],{},"how",[199,434,435,469,491],{},[186,436,437,442],{},[204,438,439],{},[145,440,441],{},"CG_SWIFT_INDEX=1",[204,443,444,445,448,449,452,453,456,457,460,461,464,465,468],{},"root ",[145,446,447],{},"Package.swift",": ",[145,450,451],{},"swift build --enable-index-store"," into ",[145,454,455],{},"\u003Ccache root>\u002Fswift-build\u002F"," (default ",[145,458,459],{},"~\u002F.cache\u002Fcg","; never the checkout). Reused while sources, manifests, and the toolchain match. ",[145,462,463],{},"CG_NO_CACHE=1"," forces a run; ",[145,466,467],{},"CG_INDEXER_TIMEOUT"," caps it",[186,470,471,476],{},[204,472,473],{},[145,474,475],{},"CG_SWIFT_INDEX_STORE",[204,477,478,479,482,483,486,487,490],{},"an existing store (Xcode ",[145,480,481],{},"DerivedData\u002F…\u002FIndex.noindex\u002FDataStore",", or ",[145,484,485],{},"Index\u002FDataStore"," before Xcode 14; CI ",[145,488,489],{},".build\u002F\u003Ctriple>\u002Fdebug\u002Findex\u002Fstore","). Another checkout's paths map by longest common suffix",[186,492,493,501],{},[204,494,495,153,498],{},[145,496,497],{},"CG_SWIFT",[145,499,500],{},"CG_LIBINDEXSTORE",[204,502,503,505,506,508,509,512,513],{},[145,504,225],{}," and ",[145,507,411],{}," when they are not on ",[145,510,511],{},"PATH"," or next to ",[145,514,225],{},[141,516,517,518,521,522,525,526,505,529,173],{},"A failed build keeps a ",[145,519,520],{},"partial"," store; the coverage reason includes the first ",[145,523,524],{},"error:"," line. Stats include ",[145,527,528],{},"exact_vs_heuristic",[145,530,531],{},"heuristic_kept_not_compiled",[180,533,534,544],{},[183,535,536],{},[186,537,538,541],{},[189,539,540],{},"still heuristic",[189,542,543],{},"why",[199,545,546,559,567,580],{},[186,547,548,553],{},[204,549,550,551],{},"no toolchain, not opted in, or no ",[145,552,447],{},[204,554,555,556,558],{},"coverage says which; set ",[145,557,475],{}," to an Xcode store",[186,560,561,564],{},[204,562,563],{},"Apple-only targets on Linux",[204,565,566],{},"SwiftUI, UIKit, and tests that need Apple frameworks are not in that store",[186,568,569,574],{},[204,570,571,572],{},"inactive ",[145,573,344],{},[204,575,576,577],{},"edges stay, ",[145,578,579],{},"via: \"not-compiled\"",[186,581,582,585],{},[204,583,584],{},"files the store omits",[204,586,587],{},"those files keep heuristic calls, counted in the reason",[175,589,591],{"id":590},"query-specs","Query specs",[141,593,594,597,598,601],{},[145,595,596],{},"Type.method"," follows ",[150,599,600],{"href":156},"query targets",". Swift-only shapes:",[180,603,604,614],{},[183,605,606],{},[186,607,608,611],{},[189,609,610],{},"spec or id",[189,612,613],{},"selects",[199,615,616,641,704,749],{},[186,617,618,623],{},[204,619,620],{},[145,621,622],{},"method:\u003CType>.body",[204,624,625,626,629,630,633,634,637,638,249],{},"a SwiftUI ",[145,627,628],{},"body",". A computed property, observers, or ",[145,631,632],{},"lazy var"," is also ",[145,635,636],{},"method:\u003CType>.\u003Cname>"," (",[145,639,640],{},"swift_kind",[186,642,643,648],{},[204,644,645],{},[145,646,647],{},"page:swift:\u003CView>",[204,649,650,153,653,153,656,237,659,237,662,153,665,668,669,672,673,676,677,153,679,682,683,686,687,690,691,694,695,237,698,237,701],{},[145,651,652],{},"NavigationLink(destination:)",[145,654,655],{},".navigationDestination",[145,657,658],{},".sheet",[145,660,661],{},".fullScreenCover",[145,663,664],{},".popover",[145,666,667],{},"TabView",", or the ",[145,670,671],{},"WindowGroup"," root (",[145,674,675],{},"ROUTES_TO"," ",[145,678,628],{},[145,680,681],{},"NAVIGATES_TO"," from the caller). Each ",[145,684,685],{},"case"," of ",[145,688,689],{},"navigationDestination(for:)"," is the target of ",[145,692,693],{},"NavigationLink(value:)"," and of ",[145,696,697],{},"navigate(to:)",[145,699,700],{},"push",[145,702,703],{},"append",[186,705,706,711],{},[204,707,708],{},[145,709,710],{},"field:\u003CType>.\u003Cname>",[204,712,713,714,237,717,448,720,237,723,726,727,730,731,734,735,738,739,742,743,237,746],{},"a stored ",[145,715,716],{},"let",[145,718,719],{},"var",[145,721,722],{},"READS_PROP",[145,724,725],{},"WRITES_PROP"," for ",[145,728,729],{},"self.x",", a bare ",[145,732,733],{},"x"," in the type, and ",[145,736,737],{},"v.x"," when ",[145,740,741],{},"v","'s type is known. ",[145,744,745],{},"cg readers Type.prop",[145,747,748],{},"cg writers Type.prop",[186,750,751,754],{},[204,752,753],{},"availability",[204,755,756,759,760,763,764,767,768,237,771,774,775,686,778,781,782,785,786,249],{},[145,757,758],{},"@available(iOS 17, *)"," is node ",[145,761,762],{},"attrs.available"," (shown ",[145,765,766],{},"[iOS 17+]","; members inherit the type). ",[145,769,770],{},"if",[145,772,773],{},"guard #available"," and the ",[145,776,777],{},"else",[145,779,780],{},"#unavailable"," set it on the edge. A check the deployment target already meets is ",[145,783,784],{},"available_declared",", not a filter (",[145,787,788],{},"availability_always_true",[141,790,791,794,795,237,798,237,801,237,804,807,808,811,812,815,816,819,820,823,824,827,828,831,832,835,836,237,839,841,842,845,846,848,849,852],{},[145,792,793],{},"impact"," shows an accessor as ",[145,796,797],{},"(get)",[145,799,800],{},"(set)",[145,802,803],{},"(willSet)",[145,805,806],{},"(didSet)"," and a candidate as ",[145,809,810],{},"(candidate)",". The second of a ",[145,813,814],{},"func"," and a ",[145,817,818],{},"static func"," with one name has id suffix ",[145,821,822],{},"~static"," or ",[145,825,826],{},"~instance",". In heuristic mode, two to five methods of one selector are ",[145,829,830],{},"candidate"," edges (",[145,833,834],{},"binding: \"candidate\"","), flagged by ",[145,837,838],{},"cg tests",[145,840,793],{}," and left out of platform divergence. An SDK-typed receiver binds only a project extension of that type, or of a protocol \u002F open class such as ",[145,843,844],{},"View",". Package code binds only its module and ",[145,847,447],{}," dependencies (",[145,850,851],{},"candidates_outside_module","). Exact mode keeps every index-store reference, including ones outside that module.",[175,854,856],{"id":855},"framework-facts","Framework facts",[180,858,859,869],{},[183,860,861],{},[186,862,863,866],{},[189,864,865],{},"area",[189,867,868],{},"what you can query",[199,870,871,894,933,958,996,1026,1061],{},[186,872,873,876],{},[204,874,875],{},"SwiftUI \u002F UIKit",[204,877,878,879,237,882,885,886,889,890,893],{},"pages above; ",[145,880,881],{},"pushViewController",[145,883,884],{},"present"," the same way. An untyped ",[145,887,888],{},".case"," matches when one destination type has that case; ",[145,891,892],{},"default:"," covers the rest",[186,895,896,899],{},[204,897,898],{},"HTTP",[204,900,901,902,905,906,909,910,913,914,917,918,921,922,925,926,482,929,932],{},"URLSession and Alamofire ",[145,903,904],{},"AF.request"," when the URL is built in the same function. ",[145,907,908],{},"\"\\(base)\u002Fx\""," keeps ",[145,911,912],{},"{base}"," so ",[145,915,916],{},"cg link"," can match. A base-like constant, or an ",[145,919,920],{},"Info.plist"," key filled from ",[145,923,924],{},".xcconfig",", sets the origin (",[145,927,928],{},"attrs.base",[145,930,931],{},"attrs.base_candidates"," per configuration)",[186,934,935,938],{},[204,936,937],{},"Moya",[204,939,940,943,944,947,948,637,950,953,954,957],{},[145,941,942],{},"TargetType"," → one ",[145,945,946],{},"http:"," node per ",[145,949,685],{},[145,951,952],{},"how: \"moya target\"","). ",[145,955,956],{},"provider.request(.case)"," calls it",[186,959,960,963],{},[204,961,962],{},"Fluent",[204,964,965,968,969,972,973,237,976,979,980,237,983,237,986,237,989,505,992,995],{},[145,966,967],{},"schema = \"todos\""," → ",[145,970,971],{},"table:todos",". ",[145,974,975],{},"query",[145,977,978],{},"find"," read; ",[145,981,982],{},"save",[145,984,985],{},"create",[145,987,988],{},"update",[145,990,991],{},"delete",[145,993,994],{},"database.schema(…).create()"," write",[186,997,998,1001],{},[204,999,1000],{},"Vapor",[204,1002,1003,153,1006,153,1009,237,1012,1015,1016,968,1019,1022,1023,1025],{},[145,1004,1005],{},"app.get",[145,1007,1008],{},"routes.post",[145,1010,1011],{},"grouped",[145,1013,1014],{},"group"," prefixes, ",[145,1017,1018],{},"RouteCollection.boot",[145,1020,1021],{},"route:",". Middleware on ",[145,1024,1011],{}," is the guard",[186,1027,1028,1031],{},[204,1029,1030],{},"Tests",[204,1032,1033,1034,637,1037,1040,1041,637,1043,153,1046,1049,1050,1053,1054,1057,1058],{},"XCTest ",[145,1035,1036],{},"test*",[145,1038,1039],{},"xctest",") and Swift Testing ",[145,1042,354],{},[145,1044,1045],{},"swift-testing",[145,1047,1048],{},"@Suite"," on the type). ",[145,1051,1052],{},"*UITests"," is UI; a path through ",[145,1055,1056],{},"@main"," is omitted unless ",[145,1059,1060],{},"--through-roots",[186,1062,1063,1066],{},[204,1064,1065],{},"Platforms",[204,1067,1068,237,1070,237,1073,237,1076,637,1079,153,1082,1085,1086,676,1088],{},[145,1069,358],{},[145,1071,1072],{},"canImport",[145,1074,1075],{},"targetEnvironment",[145,1077,1078],{},"@available(..., unavailable)",[145,1080,1081],{},"cg platforms",[145,1083,1084],{},"--platform","). Targets come from the Xcode project or ",[145,1087,447],{},[145,1089,1090],{},"platforms:",[1092,1093,1098],"pre",{"className":1094,"code":1095,"language":1096,"meta":1097,"style":1097},"language-bash shiki shiki-themes cg-light cg-light cg-dark","cg index examples\u002Fbookstore-django --db \u002Ftmp\u002Fdj.db\ncg index examples\u002Fbookstore-ios    --db \u002Ftmp\u002Fios.db\ncg link --backend \u002Ftmp\u002Fdj.db --frontend \u002Ftmp\u002Fios.db --db \u002Ftmp\u002Fios-link.db\ncg path \"page:swift:CheckoutView\" \"table:catalog_order\" --db \u002Ftmp\u002Fios-link.db\n","bash","",[145,1099,1100,1122,1138,1163],{"__ignoreMap":1097},[1101,1102,1105,1109,1113,1116,1119],"span",{"class":1103,"line":1104},"line",1,[1101,1106,1108],{"class":1107},"sZJo5","cg",[1101,1110,1112],{"class":1111},"sha9Y"," index",[1101,1114,1115],{"class":1111}," examples\u002Fbookstore-django",[1101,1117,1118],{"class":1111}," --db",[1101,1120,1121],{"class":1111}," \u002Ftmp\u002Fdj.db\n",[1101,1123,1125,1127,1129,1132,1135],{"class":1103,"line":1124},2,[1101,1126,1108],{"class":1107},[1101,1128,1112],{"class":1111},[1101,1130,1131],{"class":1111}," examples\u002Fbookstore-ios",[1101,1133,1134],{"class":1111},"    --db",[1101,1136,1137],{"class":1111}," \u002Ftmp\u002Fios.db\n",[1101,1139,1141,1143,1146,1149,1152,1155,1158,1160],{"class":1103,"line":1140},3,[1101,1142,1108],{"class":1107},[1101,1144,1145],{"class":1111}," link",[1101,1147,1148],{"class":1111}," --backend",[1101,1150,1151],{"class":1111}," \u002Ftmp\u002Fdj.db",[1101,1153,1154],{"class":1111}," --frontend",[1101,1156,1157],{"class":1111}," \u002Ftmp\u002Fios.db",[1101,1159,1118],{"class":1111},[1101,1161,1162],{"class":1111}," \u002Ftmp\u002Fios-link.db\n",[1101,1164,1166,1168,1171,1175,1178,1181,1183,1186,1188,1190],{"class":1103,"line":1165},4,[1101,1167,1108],{"class":1107},[1101,1169,1170],{"class":1111}," path",[1101,1172,1174],{"class":1173},"sZ_TN"," \"",[1101,1176,1177],{"class":1111},"page:swift:CheckoutView",[1101,1179,1180],{"class":1173},"\"",[1101,1182,1174],{"class":1173},[1101,1184,1185],{"class":1111},"table:catalog_order",[1101,1187,1180],{"class":1173},[1101,1189,1118],{"class":1111},[1101,1191,1162],{"class":1111},[1193,1194,1195],"style",{},"html pre.shiki code .sZJo5, html code.shiki .sZJo5{--shiki-light:#65A30D;--shiki-default:#65A30D;--shiki-dark:#84CC16}html pre.shiki code .sha9Y, html code.shiki .sha9Y{--shiki-light:#9F8CFF;--shiki-default:#9F8CFF;--shiki-dark:#C4B5FD}html pre.shiki code .sZ_TN, html code.shiki .sZ_TN{--shiki-light:#71717A;--shiki-default:#71717A;--shiki-dark:#A1A1AA}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":1097,"searchDepth":1165,"depth":1124,"links":1197},[1198,1199,1200,1201],{"id":177,"depth":1124,"text":178},{"id":406,"depth":1124,"text":248},{"id":590,"depth":1124,"text":591},{"id":855,"depth":1124,"text":856},"What .swift adds beyond Install, CLI specs, and Graph schema: heuristic vs the Swift index store, the CG_SWIFT_* flags, and the ids those pages do not spell out. Toolchain fit: cg doctor -h. Why a file stayed heuristic: cg coverage.","md",{},true,{"title":111,"description":1202},"y-p0mCfPgesBnHJQ3ekkhhUKF9xRU62LK4Hnv1ZGl_c",[1209,1211],{"title":107,"path":108,"stem":109,"description":1210,"children":-1},"cg surface reads facts the index already holds and answers three questions: what does the code expose, what does it\nconnect to, and where are credentials and transport protection weak. Nothing is rescanned: the checks that need source\ntext (disabled verification, insecure gRPC channels, risky IPC settings) run once at index time and leave facts on the\ngraph. A secret value is never stored or printed: a finding names the kind and the location, and the index keeps only a\nredacted marker for a credential literal (No secret values in the index).",{"title":115,"path":116,"stem":117,"description":1212,"children":-1},"What NestJS, Next.js, Astro, Express-style routers and React Router \u002F Remix add on top of the TypeScript plugin. They share\none program with the Nuxt layer, so aliases and types go through the checker. Plain JavaScript\n(CommonJS or ESM, with or without jsconfig.json) is indexed with allowJs. Samples:\nexamples\u002Fbookstore-nest, bookstore-next, bookstore-express. Without a root tsconfig, the\nprogram is the per-package tsconfig.json next to a package.json one or two levels down, plus\na tsconfig.json in src\u002F, app\u002F, lib\u002F or web\u002F without one. The extractor runs under Node.js 20+ or Bun (Installing and updating cg).",1792170235721]