[{"data":1,"prerenderedAt":936},["ShallowReactive",2],{"navigation_docs":3,"trending-repo-headroomlabs-ai\u002Fheadroom":249,"page-views-\u002Ftrending\u002Fheadroomlabs-ai\u002Fheadroom":934},[4,29,104,124,194],{"title":5,"icon":6,"path":7,"stem":8,"children":9},"Start",false,"\u002Fstart","1.start",[10,14,19,24],{"title":11,"path":7,"stem":12,"icon":13},"What jscpd finds","1.start\u002Findex","i-lucide-house",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fstart\u002Finstallation","1.start\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quickstart","\u002Fstart\u002Fquickstart","1.start\u002F3.quickstart","i-lucide-rocket",{"title":25,"path":26,"stem":27,"icon":28},"Configuration basics","\u002Fstart\u002Fconfiguration","1.start\u002F4.configuration","i-lucide-settings-2",{"title":30,"icon":6,"path":31,"stem":32,"children":33,"page":6},"Guides","\u002Fguides","2.guides",[34,39,44,49,54,59,64,69,74,79,84,89,94,99],{"title":35,"path":36,"stem":37,"icon":38},"Use jscpd in CI","\u002Fguides\u002Fci","2.guides\u002F01.ci","i-lucide-github",{"title":40,"path":41,"stem":42,"icon":43},"Pre-commit hooks","\u002Fguides\u002Fpre-commit","2.guides\u002F02.pre-commit","i-lucide-git-commit",{"title":45,"path":46,"stem":47,"icon":48},"Fail only on new duplication","\u002Fguides\u002Fbaseline","2.guides\u002F03.baseline","i-lucide-git-compare",{"title":50,"path":51,"stem":52,"icon":53},"Monorepos","\u002Fguides\u002Fmonorepos","2.guides\u002F04.monorepos","i-lucide-folder-tree",{"title":55,"path":56,"stem":57,"icon":58},"Cross-format detection","\u002Fguides\u002Fcross-format","2.guides\u002F05.cross-format","i-lucide-layers",{"title":60,"path":61,"stem":62,"icon":63},"Agents","\u002Fguides\u002Fagents","2.guides\u002F06.agents","i-lucide-cpu",{"title":65,"path":66,"stem":67,"icon":68},"Editors","\u002Fguides\u002Feditors","2.guides\u002F07.editors","i-lucide-code",{"title":70,"path":71,"stem":72,"icon":73},"Duplication over git history","\u002Fguides\u002Fhistory","2.guides\u002F08.history","i-lucide-chart-no-axes-combined",{"title":75,"path":76,"stem":77,"icon":78},"Dashboard and health score","\u002Fguides\u002Fdashboard","2.guides\u002F09.dashboard","i-lucide-layout-dashboard",{"title":80,"path":81,"stem":82,"icon":83},"Dead code","\u002Fguides\u002Fdead-code","2.guides\u002F10.dead-code","i-lucide-ghost",{"title":85,"path":86,"stem":87,"icon":88},"Comparing two codebases","\u002Fguides\u002Fcompare","2.guides\u002F11.compare","i-lucide-git-compare-arrows",{"title":90,"path":91,"stem":92,"icon":93},"Semantic clones","\u002Fguides\u002Fsemantic-clones","2.guides\u002F12.semantic-clones","i-lucide-brain-circuit",{"title":95,"path":96,"stem":97,"icon":98},"Similar functions","\u002Fguides\u002Fsimilarity","2.guides\u002F13.similarity","i-lucide-list-tree",{"title":100,"path":101,"stem":102,"icon":103},"Boundaries","\u002Fguides\u002Fboundaries","2.guides\u002F14.boundaries","i-lucide-fence",{"title":105,"icon":6,"path":106,"stem":107,"children":108,"page":6},"Concepts","\u002Fconcepts","3.concepts",[109,114,119],{"title":110,"path":111,"stem":112,"icon":113},"Types of code clones","\u002Fconcepts\u002Fclone-types","3.concepts\u002F1.clone-types","i-lucide-copy",{"title":115,"path":116,"stem":117,"icon":118},"How detection works","\u002Fconcepts\u002Fhow-detection-works","3.concepts\u002F2.how-detection-works","i-lucide-scan-search",{"title":120,"path":121,"stem":122,"icon":123},"The health score","\u002Fconcepts\u002Fhealth-score","3.concepts\u002F3.health-score","i-lucide-heart-pulse",{"title":125,"icon":6,"path":126,"stem":127,"children":128,"page":6},"Reference","\u002Freference","4.reference",[129,134,139,144,181,186,190],{"title":130,"path":131,"stem":132,"icon":133},"CLI options","\u002Freference\u002Fcli","4.reference\u002F1.cli","i-lucide-terminal",{"title":135,"path":136,"stem":137,"icon":138},"The config file","\u002Freference\u002Fconfig-file","4.reference\u002F2.config-file","i-lucide-settings",{"title":140,"path":141,"stem":142,"icon":143},"Exit codes","\u002Freference\u002Fexit-codes","4.reference\u002F3.exit-codes","i-lucide-log-out",{"title":145,"icon":6,"path":146,"stem":147,"children":148},"Reporters","\u002Freference\u002Freporters","4.reference\u002F4.reporters\u002Findex",[149,151,156,161,166,171,176],{"title":145,"path":146,"stem":147,"icon":150},"i-lucide-file-chart-column",{"title":152,"path":153,"stem":154,"icon":155},"HTML reporter","\u002Freference\u002Freporters\u002Fhtml","4.reference\u002F4.reporters\u002F2.html","i-lucide-file-code",{"title":157,"path":158,"stem":159,"icon":160},"JSON reporter","\u002Freference\u002Freporters\u002Fjson","4.reference\u002F4.reporters\u002F3.json","i-lucide-braces",{"title":162,"path":163,"stem":164,"icon":165},"Badge reporter","\u002Freference\u002Freporters\u002Fbadge","4.reference\u002F4.reporters\u002F4.badge","i-lucide-award",{"title":167,"path":168,"stem":169,"icon":170},"SARIF reporter","\u002Freference\u002Freporters\u002Fsarif","4.reference\u002F4.reporters\u002F5.sarif","i-lucide-shield-check",{"title":172,"path":173,"stem":174,"icon":175},"CodeClimate reporter","\u002Freference\u002Freporters\u002Fcodeclimate","4.reference\u002F4.reporters\u002F6.codeclimate","i-lucide-flag-triangle-right",{"title":177,"path":178,"stem":179,"icon":180},"OpenMetrics reporter","\u002Freference\u002Freporters\u002Fopenmetrics","4.reference\u002F4.reporters\u002F7.openmetrics","i-lucide-activity",{"title":182,"path":183,"stem":184,"icon":185},"Supported formats","\u002Freference\u002Fsupported-formats","4.reference\u002F5.supported-formats","i-lucide-languages",{"title":187,"path":188,"stem":189,"icon":38},"GitHub Action","\u002Freference\u002Fgithub-action","4.reference\u002F6.github-action",{"title":191,"path":192,"stem":193,"icon":68},"Rust crates","\u002Freference\u002Frust-crates","4.reference\u002F7.rust-crates",{"title":195,"icon":6,"path":196,"stem":197,"children":198,"page":6},"Project","\u002Fproject","5.project",[199,204,209,214,239,244],{"title":200,"path":201,"stem":202,"icon":203},"Changelog","\u002Fproject\u002Fchangelog","5.project\u002F1.changelog","i-lucide-scroll-text",{"title":205,"path":206,"stem":207,"icon":208},"Migrating from v4 to v5","\u002Fproject\u002Fmigration","5.project\u002F2.migration","i-lucide-arrow-right-left",{"title":210,"path":211,"stem":212,"icon":213},"jscpd v4 (TypeScript)","\u002Fproject\u002Fv4","5.project\u002F3.v4","i-simple-icons-typescript",{"title":215,"icon":6,"path":216,"stem":217,"children":218},"Benchmarks","\u002Fproject\u002Fbenchmarks","5.project\u002F4.benchmarks\u002Findex",[219,221,226,230,235],{"title":215,"path":216,"stem":217,"icon":220},"i-lucide-gauge",{"title":222,"path":223,"stem":224,"icon":225},"Detection Speed","\u002Fproject\u002Fbenchmarks\u002Fdetection-speed","5.project\u002F4.benchmarks\u002F2.detection-speed","i-lucide-zap",{"title":227,"path":228,"stem":229,"icon":58},"Multi-Format Detection","\u002Fproject\u002Fbenchmarks\u002Fcross-format","5.project\u002F4.benchmarks\u002F3.cross-format",{"title":231,"path":232,"stem":233,"icon":234},"AI Token Efficiency","\u002Fproject\u002Fbenchmarks\u002Fai-token-efficiency","5.project\u002F4.benchmarks\u002F4.ai-token-efficiency","i-lucide-sparkles",{"title":236,"path":237,"stem":238,"icon":93},"Embedding Models","\u002Fproject\u002Fbenchmarks\u002Fembedding-models","5.project\u002F4.benchmarks\u002F5.embedding-models",{"title":240,"path":241,"stem":242,"icon":243},"Research","\u002Fproject\u002Fresearch","5.project\u002F5.research","i-lucide-graduation-cap",{"title":245,"path":246,"stem":247,"icon":248},"Articles","\u002Fproject\u002Farticles","5.project\u002F6.articles","i-lucide-newspaper",{"name":250,"url":251,"appearances":252,"latest":268},"headroomlabs-ai\u002Fheadroom","https:\u002F\u002Fgithub.com\u002Fheadroomlabs-ai\u002Fheadroom",[253],{"date":254,"rank":255,"stars":256,"starsToday":257,"headSha":258,"sources":259,"lines":260,"clones":261,"duplicatedLines":262,"percentage":263,"codePercentage":264,"codeSources":265,"healthScore":266,"healthGrade":267},"2026-10-20",3,76359,310,"fbf7bc3278c11975299b9bd0a2ecf200dfd25a05",2476,805989,2922,39058,4.85,2.78,830,65.2,"C",{"date":254,"generatedAt":269,"name":250,"url":251,"description":270,"language":271,"stars":256,"starsToday":257,"defaultBranch":272,"headSha":258,"durationMs":273,"total":274,"formats":277,"topClones":346,"code":639,"health":805,"complexity":837,"deadCode":889},"2026-10-20T05:29:47.500Z","Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.","Python","main",4608,{"sources":259,"lines":260,"tokens":275,"clones":261,"duplicatedLines":262,"duplicatedTokens":276,"percentage":263,"percentageTokens":263},4434912,214981,[278,285,292,299,306,313,320,327,334,340],{"format":279,"sources":280,"lines":281,"clones":282,"duplicatedLines":283,"percentage":284},"python",1680,620911,1906,25446,4.1,{"format":286,"sources":287,"lines":288,"clones":289,"duplicatedLines":290,"percentage":291},"rust",216,89993,593,6913,7.68,{"format":293,"sources":294,"lines":295,"clones":296,"duplicatedLines":297,"percentage":298},"json",212,11270,128,2732,24.24,{"format":300,"sources":301,"lines":302,"clones":303,"duplicatedLines":304,"percentage":305},"javascript",7,14779,126,1991,13.47,{"format":307,"sources":308,"lines":309,"clones":310,"duplicatedLines":311,"percentage":312},"typescript",95,18998,98,1095,5.76,{"format":314,"sources":315,"lines":316,"clones":317,"duplicatedLines":318,"percentage":319},"yaml",39,5560,25,281,5.05,{"format":321,"sources":322,"lines":323,"clones":324,"duplicatedLines":325,"percentage":326},"markdown",93,26699,18,208,0.78,{"format":328,"sources":329,"lines":330,"clones":331,"duplicatedLines":332,"percentage":333},"powershell",6,2050,8,88,4.29,{"format":335,"sources":336,"lines":337,"clones":301,"duplicatedLines":338,"percentage":339},"text",24,933,26,2.79,{"format":341,"sources":301,"lines":342,"clones":343,"duplicatedLines":344,"percentage":345},"markup",4399,5,62,1.41,[347,382,432,474,486,509,531,554,585,613],{"format":293,"lines":324,"tokens":348,"first":349,"others":352,"copies":336,"excerpt":369,"kind":381},63,{"name":350,"start":351,"end":324},"tests\u002Fparity\u002Ffixtures\u002Fcode_aware_compressor\u002F07dd1a61089c1e53.json",1,[353,355,357,359,361,363,365,367],{"name":354,"start":351,"end":324},"tests\u002Fparity\u002Ffixtures\u002Fcode_aware_compressor\u002F095be1adad76b588.json",{"name":356,"start":351,"end":324},"tests\u002Fparity\u002Ffixtures\u002Fcode_aware_compressor\u002F1e319c5e33af4af1.json",{"name":358,"start":351,"end":324},"tests\u002Fparity\u002Ffixtures\u002Fcode_aware_compressor\u002F2c239d4af41282c2.json",{"name":360,"start":351,"end":324},"tests\u002Fparity\u002Ffixtures\u002Fcode_aware_compressor\u002F2d214f401618d639.json",{"name":362,"start":351,"end":324},"tests\u002Fparity\u002Ffixtures\u002Fcode_aware_compressor\u002F36e5ff5093790e6f.json",{"name":364,"start":351,"end":324},"tests\u002Fparity\u002Ffixtures\u002Fcode_aware_compressor\u002F3e706cfb03aa3c8e.json",{"name":366,"start":351,"end":324},"tests\u002Fparity\u002Ffixtures\u002Fcode_aware_compressor\u002F411d5549bcd5f50d.json",{"name":368,"start":351,"end":324},"tests\u002Fparity\u002Ffixtures\u002Fcode_aware_compressor\u002F420dd19a087526ca.json",{"lines":370,"total":324},[371,372,373,374,375,376,377,378,379,380],"{","  \"config\": {","    \"ccr_ttl\": 300,","    \"compress_comments\": true,","    \"docstring_mode\": \"first_line\",","    \"enable_ccr\": false,","    \"fallback_to_kompress\": false,","    \"language_hint\": null,","    \"max_body_lines\": 5,","    \"min_tokens_for_compression\": 100,","tests",{"format":300,"lines":383,"tokens":384,"first":385,"others":389,"copies":414,"excerpt":415,"excerptSecond":427,"kind":431},10,51,{"name":386,"start":387,"end":388},"headroom\u002Fproviders\u002Fopencode\u002F_dist\u002Findex.js",4057,4066,[390,393,396,399,402,405,408,411],{"name":386,"start":391,"end":392},4333,4342,{"name":386,"start":394,"end":395},4575,4584,{"name":386,"start":397,"end":398},4843,4852,{"name":386,"start":400,"end":401},5345,5354,{"name":386,"start":403,"end":404},5591,5600,{"name":386,"start":406,"end":407},5944,5953,{"name":386,"start":409,"end":410},6297,6306,{"name":386,"start":412,"end":413},6415,6424,23,{"lines":416,"total":383},[417,418,419,420,421,422,423,424,425,426],"  set: { unit: \"\\u0639\\u0646\\u0635\\u0631\", verb: \"\\u0623\\u0646 \\u064A\\u062D\\u0648\\u064A\" }","};","function getSizing(origin) {","  return Sizable[origin] ?? null;","}","const parsedType7 = (data) => {","  const t = typeof data;","  switch (t) {","    case \"number\": {","      return Number.isNaN(data) ? \"NaN\" : \"number\";",{"lines":428,"total":383},[429,418,419,420,421,422,423,424,425,430],"  }","      return Number.isNaN(data) ? \"NaN\" : \"\\u043B\\u0456\\u043A\";","code",{"format":300,"lines":433,"tokens":384,"first":434,"others":437,"copies":414,"excerpt":462,"kind":431},14,{"name":386,"start":435,"end":436},4201,4214,[438,441,444,447,450,453,456,459],{"name":386,"start":439,"end":440},4482,4495,{"name":386,"start":442,"end":443},4620,4633,{"name":386,"start":445,"end":446},4751,4764,{"name":386,"start":448,"end":449},5252,5265,{"name":386,"start":451,"end":452},5618,5631,{"name":386,"start":454,"end":455},5735,5748,{"name":386,"start":457,"end":458},5971,5984,{"name":386,"start":460,"end":461},6089,6102,{"lines":463,"total":433},[464,465,466,467,468,469,470,471,472,473],"email: \"email address\",","url: \"URL\",","emoji: \"emoji\",","uuid: \"UUID\",","uuidv4: \"UUIDv4\",","uuidv6: \"UUIDv6\",","nanoid: \"nanoid\",","guid: \"GUID\",","cuid: \"cuid\",","cuid2: \"cuid2\",",{"format":300,"lines":475,"tokens":476,"first":477,"others":480,"copies":485,"kind":431},166,1111,{"name":386,"start":478,"end":479},12757,12922,[481],{"name":482,"start":483,"end":484},"headroom\u002Fproviders\u002Fopencode\u002Fhook-shim\u002Fhandler.js",266,431,2,{"format":293,"lines":487,"tokens":488,"first":489,"others":491,"copies":508,"kind":381},22,58,{"name":490,"start":351,"end":487},"tests\u002Fparity\u002Ffixtures\u002Fcache_aligner\u002F0225460359a992d9.json",[492,494,496,498,500,502,504,506],{"name":493,"start":351,"end":487},"tests\u002Fparity\u002Ffixtures\u002Fcache_aligner\u002F231ab237501e106b.json",{"name":495,"start":351,"end":487},"tests\u002Fparity\u002Ffixtures\u002Fcache_aligner\u002F25683f67cbb74ece.json",{"name":497,"start":351,"end":487},"tests\u002Fparity\u002Ffixtures\u002Fcache_aligner\u002F31eb80356eeeb30d.json",{"name":499,"start":351,"end":487},"tests\u002Fparity\u002Ffixtures\u002Fcache_aligner\u002F336311b995b063d5.json",{"name":501,"start":351,"end":487},"tests\u002Fparity\u002Ffixtures\u002Fcache_aligner\u002F475e76a9f99c29ab.json",{"name":503,"start":351,"end":487},"tests\u002Fparity\u002Ffixtures\u002Fcache_aligner\u002F4b171a7f9af6e2d5.json",{"name":505,"start":351,"end":487},"tests\u002Fparity\u002Ffixtures\u002Fcache_aligner\u002F541daf83f5a1fda9.json",{"name":507,"start":351,"end":487},"tests\u002Fparity\u002Ffixtures\u002Fcache_aligner\u002F6502f683439de052.json",20,{"format":293,"lines":510,"tokens":511,"first":512,"others":514,"copies":508,"kind":381},16,55,{"name":513,"start":351,"end":510},"tests\u002Fparity\u002Ffixtures\u002Flog_compressor\u002F012c7bbeb96d95e9.json",[515,517,519,521,523,525,527,529],{"name":516,"start":351,"end":510},"tests\u002Fparity\u002Ffixtures\u002Flog_compressor\u002F1fbaf88e12686704.json",{"name":518,"start":351,"end":510},"tests\u002Fparity\u002Ffixtures\u002Flog_compressor\u002F23112ae8ae41ba59.json",{"name":520,"start":351,"end":510},"tests\u002Fparity\u002Ffixtures\u002Flog_compressor\u002F305987ea77c385e6.json",{"name":522,"start":351,"end":510},"tests\u002Fparity\u002Ffixtures\u002Flog_compressor\u002F349121068ecbb26e.json",{"name":524,"start":351,"end":510},"tests\u002Fparity\u002Ffixtures\u002Flog_compressor\u002F3bc015edc0a36387.json",{"name":526,"start":351,"end":510},"tests\u002Fparity\u002Ffixtures\u002Flog_compressor\u002F3bf3f8bd70c80dad.json",{"name":528,"start":351,"end":510},"tests\u002Fparity\u002Ffixtures\u002Flog_compressor\u002F5533a8264a04dd61.json",{"name":530,"start":351,"end":510},"tests\u002Fparity\u002Ffixtures\u002Flog_compressor\u002F566491aacda8af92.json",{"format":293,"lines":532,"tokens":533,"first":534,"others":536,"copies":553,"kind":381},21,74,{"name":535,"start":351,"end":532},"tests\u002Fparity\u002Ffixtures\u002Fsmart_crusher\u002Fdict_array_100_sequential_b91d1fff5ba3.json",[537,539,541,543,545,547,549,551],{"name":538,"start":351,"end":532},"tests\u002Fparity\u002Ffixtures\u002Fsmart_crusher\u002Fdict_array_30_b0ba1d26fd03.json",{"name":540,"start":351,"end":532},"tests\u002Fparity\u002Ffixtures\u002Fsmart_crusher\u002Fduplicate_dicts_40_40a0670dec17.json",{"name":542,"start":351,"end":532},"tests\u002Fparity\u002Ffixtures\u002Fsmart_crusher\u002Fempty_array_41ecf20098c5.json",{"name":544,"start":351,"end":532},"tests\u002Fparity\u002Ffixtures\u002Fsmart_crusher\u002Fmixed_array_3f929019b62f.json",{"name":546,"start":351,"end":532},"tests\u002Fparity\u002Ffixtures\u002Fsmart_crusher\u002Fnested_3deep_with_array_bb5036c153aa.json",{"name":548,"start":351,"end":532},"tests\u002Fparity\u002Ffixtures\u002Fsmart_crusher\u002Fnested_object_with_array_b66d43299ea1.json",{"name":550,"start":351,"end":532},"tests\u002Fparity\u002Ffixtures\u002Fsmart_crusher\u002Fnon_json_passthrough_4322abf677f3.json",{"name":552,"start":351,"end":532},"tests\u002Fparity\u002Ffixtures\u002Fsmart_crusher\u002Fnulls_and_bools_06d6fd6adcab.json",15,{"format":300,"lines":433,"tokens":555,"first":556,"others":559,"copies":584,"kind":431},52,{"name":386,"start":557,"end":558},4070,4083,[560,563,566,569,572,575,578,581],{"name":386,"start":561,"end":562},4346,4359,{"name":386,"start":564,"end":565},4606,4619,{"name":386,"start":567,"end":568},4856,4869,{"name":386,"start":570,"end":571},5358,5371,{"name":386,"start":573,"end":574},5604,5617,{"name":386,"start":576,"end":577},5957,5970,{"name":386,"start":579,"end":580},6310,6323,{"name":386,"start":582,"end":583},6428,6441,19,{"format":286,"lines":508,"tokens":586,"first":587,"others":591,"copies":331,"kind":381},124,{"name":588,"start":589,"end":590},"crates\u002Fheadroom-proxy\u002Ftests\u002Fintegration_responses.rs",102,121,[592,595,598,601,604,607,610],{"name":588,"start":593,"end":594},154,173,{"name":588,"start":596,"end":597},205,224,{"name":588,"start":599,"end":600},295,314,{"name":588,"start":602,"end":603},383,402,{"name":588,"start":605,"end":606},441,460,{"name":588,"start":608,"end":609},494,513,{"name":588,"start":611,"end":612},887,906,{"format":300,"lines":614,"tokens":615,"first":616,"others":617,"copies":331,"kind":431},27,122,{"name":386,"start":387,"end":558},[618,621,624,627,630,633,636],{"name":386,"start":619,"end":620},4174,4200,{"name":386,"start":622,"end":623},4455,4481,{"name":386,"start":625,"end":626},5472,5498,{"name":386,"start":628,"end":629},5826,5852,{"name":386,"start":631,"end":632},6062,6088,{"name":386,"start":634,"end":635},6780,6806,{"name":386,"start":637,"end":638},9309,9335,{"sources":265,"lines":640,"tokens":641,"clones":642,"duplicatedLines":643,"duplicatedTokens":644,"percentage":264,"percentageTokens":645,"formats":646,"topClones":686,"generated":799},366407,1883658,764,10188,58285,3.09,[647,653,658,659,664,667,673,677,680,683],{"format":279,"sources":648,"lines":649,"clones":650,"duplicatedLines":651,"percentage":652},604,266263,393,5273,1.98,{"format":286,"sources":593,"lines":654,"clones":655,"duplicatedLines":656,"percentage":657},72268,226,2538,3.51,{"format":300,"sources":301,"lines":302,"clones":303,"duplicatedLines":304,"percentage":305},{"format":307,"sources":660,"lines":661,"clones":383,"duplicatedLines":662,"percentage":663},36,6783,140,2.06,{"format":328,"sources":485,"lines":665,"clones":331,"duplicatedLines":332,"percentage":666},2000,4.4,{"format":668,"sources":669,"lines":670,"clones":351,"duplicatedLines":671,"percentage":672},"sql",4,461,158,34.27,{"format":674,"sources":508,"lines":675,"clones":676,"duplicatedLines":676,"percentage":676},"bash",3179,0,{"format":678,"sources":351,"lines":679,"clones":676,"duplicatedLines":676,"percentage":676},"tsx",336,{"format":681,"sources":351,"lines":682,"clones":676,"duplicatedLines":676,"percentage":676},"c",170,{"format":684,"sources":351,"lines":685,"clones":676,"duplicatedLines":676,"percentage":676},"perl",168,[687,702,715,729,740,750,759,769,778,787],{"format":300,"lines":383,"tokens":384,"first":688,"others":689,"copies":414,"excerpt":698,"excerptSecond":700,"kind":431},{"name":386,"start":387,"end":388},[690,691,692,693,694,695,696,697],{"name":386,"start":391,"end":392},{"name":386,"start":394,"end":395},{"name":386,"start":397,"end":398},{"name":386,"start":400,"end":401},{"name":386,"start":403,"end":404},{"name":386,"start":406,"end":407},{"name":386,"start":409,"end":410},{"name":386,"start":412,"end":413},{"lines":699,"total":383},[417,418,419,420,421,422,423,424,425,426],{"lines":701,"total":383},[429,418,419,420,421,422,423,424,425,430],{"format":300,"lines":433,"tokens":384,"first":703,"others":704,"copies":414,"excerpt":713,"kind":431},{"name":386,"start":435,"end":436},[705,706,707,708,709,710,711,712],{"name":386,"start":439,"end":440},{"name":386,"start":442,"end":443},{"name":386,"start":445,"end":446},{"name":386,"start":448,"end":449},{"name":386,"start":451,"end":452},{"name":386,"start":454,"end":455},{"name":386,"start":457,"end":458},{"name":386,"start":460,"end":461},{"lines":714,"total":433},[464,465,466,467,468,469,470,471,472,473],{"format":300,"lines":475,"tokens":476,"first":716,"others":717,"copies":485,"excerpt":719,"kind":431},{"name":386,"start":478,"end":479},[718],{"name":482,"start":483,"end":484},{"lines":720,"total":475},[721,722,723,429,421,724,725,726,727,728],"    return new URL(`${protocol}\u002F\u002F${hostname3}${port}${path}`);","  } catch {","    return void 0;","function headersForNodeRequest(options, upstream, originalPath, project, sessionToken) {","  const headers = new Headers(options.headers);","  headers.set(BASE_URL_HEADER, upstream.origin);","  if (originalPath) {","    headers.set(ORIGINAL_PATH_HEADER, originalPath);",{"format":300,"lines":433,"tokens":555,"first":730,"others":731,"copies":584,"kind":431},{"name":386,"start":557,"end":558},[732,733,734,735,736,737,738,739],{"name":386,"start":561,"end":562},{"name":386,"start":564,"end":565},{"name":386,"start":567,"end":568},{"name":386,"start":570,"end":571},{"name":386,"start":573,"end":574},{"name":386,"start":576,"end":577},{"name":386,"start":579,"end":580},{"name":386,"start":582,"end":583},{"format":300,"lines":614,"tokens":615,"first":741,"others":742,"copies":331,"kind":431},{"name":386,"start":387,"end":558},[743,744,745,746,747,748,749],{"name":386,"start":619,"end":620},{"name":386,"start":622,"end":623},{"name":386,"start":625,"end":626},{"name":386,"start":628,"end":629},{"name":386,"start":631,"end":632},{"name":386,"start":634,"end":635},{"name":386,"start":637,"end":638},{"format":668,"lines":671,"tokens":751,"first":752,"others":755,"copies":485,"kind":431},832,{"name":753,"start":614,"end":754},"sql\u002Fcreate_dashboard_summary.sql",184,[756],{"name":757,"start":758,"end":475},"sql\u002Fupgrade_dashboard_v2.sql",9,{"format":300,"lines":760,"tokens":761,"first":762,"others":765,"copies":485,"kind":431},101,686,{"name":386,"start":763,"end":764},12653,12753,[766],{"name":482,"start":767,"end":768},162,262,{"format":300,"lines":770,"tokens":771,"first":772,"others":775,"copies":485,"kind":431},68,531,{"name":386,"start":773,"end":774},12538,12605,[776],{"name":482,"start":777,"end":590},54,{"format":300,"lines":779,"tokens":780,"first":781,"others":784,"copies":485,"kind":431},42,301,{"name":386,"start":782,"end":783},12486,12527,[785],{"name":482,"start":485,"end":786},43,{"format":279,"lines":788,"tokens":789,"first":790,"others":794,"copies":485,"kind":431},48,284,{"name":791,"start":792,"end":793},"benchmarks\u002Fclaude_session_mode_benchmark.py",712,759,[795],{"name":796,"start":797,"end":798},"headroom\u002Fproxy\u002Fhandlers\u002Fanthropic.py",915,962,{"files":669,"minified":485,"sample":800},[801,802,803,804],"headroom\u002Fdashboard\u002Fstatic\u002Falpine.min.js","headroom\u002Fdashboard\u002Fstatic\u002Ftailwind.min.js","headroom\u002Ftransforms\u002Fdense_line_elider.py","tests\u002Ftest_content_router_compact_json.py",{"score":266,"grade":267,"size":806,"dimensions":810},{"lines":807,"files":808,"class":809},749472,2015,"L",[811,822,830],{"id":812,"source":813,"value":814,"adjusted":814,"lines":815,"halfLife":816,"formats":817,"excluded":819,"weight":351,"score":821},"duplication","jscpd",4.8,35687,8.5,[279,286,307,300,674,328,678,668,681,684,818],"hcl",[341,335,820],"data",67.8,{"id":823,"source":813,"value":824,"adjusted":824,"lines":825,"halfLife":826,"coverage":827,"weight":828,"score":829},"dead-code",0.7,4636,7.5,87.1,0.871,93.6,{"id":831,"source":813,"value":832,"adjusted":833,"lines":834,"halfLife":835,"weight":351,"score":836},"complexity",56.5,56.4,423209,50,45.8,{"total":838,"mean":839,"files":840},82301,40.8,[841,845,850,855,860,865,869,874,879,884],{"path":386,"complexity":842,"lines":843,"bytes":844},3719,13057,469306,{"path":846,"complexity":847,"lines":848,"bytes":849},"headroom\u002Fproxy\u002Fhandlers\u002Fopenai.py",1649,11757,583548,{"path":851,"complexity":852,"lines":853,"bytes":854},"headroom\u002Fcli\u002Fwrap.py",1270,9416,396030,{"path":856,"complexity":857,"lines":858,"bytes":859},"headroom\u002Ftransforms\u002Fcontent_router.py",1019,7924,393917,{"path":861,"complexity":862,"lines":863,"bytes":864},"headroom\u002Fproxy\u002Fserver.py",919,7294,339474,{"path":796,"complexity":866,"lines":867,"bytes":868},756,6392,338400,{"path":870,"complexity":871,"lines":872,"bytes":873},"headroom\u002Fproxy\u002Fhelpers.py",732,4868,208292,{"path":875,"complexity":876,"lines":877,"bytes":878},"headroom\u002Fmemory\u002Ftraffic_learner.py",419,2033,82609,{"path":880,"complexity":881,"lines":882,"bytes":883},"headroom\u002Fproxy\u002Fhandlers\u002Fstreaming.py",417,2543,124516,{"path":885,"complexity":886,"lines":887,"bytes":888},"crates\u002Fheadroom-core\u002Fsrc\u002Ftransforms\u002Flog_compressor.rs",410,2692,105216,{"percentage":890,"findings":332,"files":891,"byCategory":892,"largest":903},0.71,1832,[893,896,898,900],{"category":894,"count":895},"unused-file",17,{"category":897,"count":553},"unused-export",{"category":899,"count":584},"unused-symbol",{"category":901,"count":902},"unused-import",37,[904,908,911,914,916,919,922,925,928,931],{"category":894,"path":905,"name":906,"line":351,"lines":907},"headroom\u002Fevals\u002Fhtml_extraction.py","",655,{"category":894,"path":909,"name":906,"line":351,"lines":910},"deploy\u002Fbeacon\u002Fworker.js",506,{"category":894,"path":912,"name":906,"line":351,"lines":913},"headroom\u002Fevals\u002Fhtml_oss_benchmarks.py",501,{"category":894,"path":915,"name":906,"line":351,"lines":679},"plugins\u002Fheadroom-snip\u002Fhooks\u002Fregister.tsx",{"category":894,"path":917,"name":906,"line":351,"lines":918},"headroom\u002Ftransforms\u002Fadaptive_sizer.py",334,{"category":894,"path":920,"name":906,"line":351,"lines":921},"headroom\u002Flearn\u002Fplugins\u002Fopencode.py",306,{"category":894,"path":923,"name":906,"line":351,"lines":924},"deploy\u002Fbeacon\u002Ftest-rollup.mjs",292,{"category":894,"path":926,"name":906,"line":351,"lines":927},"headroom\u002Fshared_context.py",228,{"category":894,"path":929,"name":906,"line":351,"lines":930},"headroom\u002Flearn\u002Fplugins\u002Fgrok.py",211,{"category":894,"path":932,"name":906,"line":351,"lines":933},"headroom\u002Fintegrations\u002Flitellm_callback.py",177,{"\u002Ftrending\u002Fheadroomlabs-ai\u002Fheadroom":935},{"views":676,"visits":676},1792485015243]