[{"data":1,"prerenderedAt":4449},["ShallowReactive",2],{"navigation_docs":3,"trending-day-2026-11-14":249,"page-views-\u002Ftrending\u002F2026-11-14":4446,"trending-week-null":4448},[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",{"date":250,"generatedAt":251,"source":252,"jscpdVersion":253,"summary":254,"repos":332},"2026-11-14","2026-11-14T05:21:34.109Z","github-trending-daily","5.4.3",{"repos":255,"sources":256,"lines":257,"tokens":258,"clones":259,"duplicatedLines":260,"duplicatedTokens":261,"percentage":262,"percentageTokens":263,"avgPercentage":264,"medianPercentage":265,"mostDuplicated":266,"cleanest":270,"mostClones":274,"codeRepos":255,"codeSources":278,"codeLines":279,"codeClones":280,"codeDuplicatedLines":281,"codePercentage":282,"codeMedianPercentage":283,"codeMostDuplicated":284,"codeCleanest":288,"generatedFiles":291,"avgHealth":292,"healthiest":293,"leastHealthy":297,"languages":300},9,23074,4717739,35656523,24319,409880,2679723,8.69,7.52,8.25,6.81,{"name":267,"clones":268,"percentage":269},"tradermonty\u002Fclaude-trading-skills",2559,13.97,{"name":271,"clones":272,"percentage":273},"openai\u002Fcodex-security",1034,1.86,{"name":275,"clones":276,"percentage":277},"backnotprop\u002Fplannotator",10511,9.82,7520,1706611,3936,56556,3.31,2.43,{"name":285,"clones":286,"percentage":287},"GoogleChrome\u002Fmodern-web-guidance-src",1012,8.93,{"name":271,"clones":289,"percentage":290},44,0.55,61,50.53,{"name":294,"score":295,"grade":296},"we-promise\u002Fsure",66.5,"C",{"name":285,"score":298,"grade":299},14.3,"E",[301,308,315,322,326],{"language":302,"repos":303,"clones":304,"lines":305,"duplicatedLines":306,"percentage":307},"TypeScript",4,15695,2678005,229304,8.56,{"language":309,"repos":310,"clones":311,"lines":312,"duplicatedLines":313,"percentage":314},"Go",2,1603,293229,36542,12.46,{"language":316,"repos":317,"clones":318,"lines":319,"duplicatedLines":320,"percentage":321},"Ruby",1,3275,899033,49404,5.5,{"language":323,"repos":317,"clones":268,"lines":324,"duplicatedLines":325,"percentage":269},"Python",529950,74015,{"language":327,"repos":317,"clones":328,"lines":329,"duplicatedLines":330,"percentage":331},"C++",1187,317522,20615,6.49,[333,873,1382,1840,2400,2893,3368,3678,4084],{"name":334,"url":335,"description":336,"language":309,"stars":337,"starsToday":338,"defaultBranch":339,"headSha":340,"durationMs":341,"total":342,"formats":351,"topClones":421,"code":561,"health":747,"complexity":784,"deadCode":836},"alibaba\u002Fopen-code-review","https:\u002F\u002Fgithub.com\u002Falibaba\u002Fopen-code-review","Secure, fast, efficient, battle-tested at Alibaba's scale. Hybrid architecture code review tool: deterministic pipelines + LLM Agent, precise line-level comments, built-in multi-language ruleset (NPE, thread-safety, XSS, SQL injection), OpenAI & Anthropic compatible.",50786,215,"main","abd6416e6faec64e00af170a74633e34d56ab467",1387,{"sources":343,"lines":344,"tokens":345,"clones":346,"duplicatedLines":347,"duplicatedTokens":348,"percentage":349,"percentageTokens":350},1267,268740,1837073,1538,35853,182235,13.34,9.92,[352,359,366,373,380,387,394,401,407,414],{"format":353,"sources":354,"lines":355,"clones":356,"duplicatedLines":357,"percentage":358},"go",526,141375,1028,10455,7.4,{"format":360,"sources":361,"lines":362,"clones":363,"duplicatedLines":364,"percentage":365},"json",75,20719,126,19300,93.15,{"format":367,"sources":368,"lines":369,"clones":370,"duplicatedLines":371,"percentage":372},"bash",110,3146,89,1210,38.46,{"format":374,"sources":375,"lines":376,"clones":377,"duplicatedLines":378,"percentage":379},"javascript",29,19339,85,969,5.01,{"format":381,"sources":382,"lines":383,"clones":384,"duplicatedLines":385,"percentage":386},"markdown",217,41221,82,1768,4.29,{"format":388,"sources":389,"lines":390,"clones":391,"duplicatedLines":392,"percentage":393},"text",52,1378,36,777,56.39,{"format":395,"sources":396,"lines":397,"clones":398,"duplicatedLines":399,"percentage":400},"tsx",53,6467,27,321,4.96,{"format":402,"sources":403,"lines":404,"clones":405,"duplicatedLines":406,"percentage":269},"yaml",47,4417,23,617,{"format":408,"sources":409,"lines":410,"clones":411,"duplicatedLines":412,"percentage":413},"python",15,6139,13,135,2.2,{"format":415,"sources":416,"lines":417,"clones":418,"duplicatedLines":419,"percentage":420},"typescript",57,8830,10,106,1.2,[422,447,468,488,496,506,515,525,534,554],{"format":360,"lines":423,"tokens":424,"copies":425,"first":426,"others":430,"excerpt":435},760,1945,3,{"name":427,"start":428,"end":429},"internal\u002Freviewtask\u002Ftestdata\u002Fequivalence\u002Freview_async.json",208,967,[431,433],{"name":432,"start":428,"end":429},"internal\u002Freviewtask\u002Ftestdata\u002Fequivalence\u002Freview_normal.json",{"name":434,"start":428,"end":429},"internal\u002Freviewtask\u002Ftestdata\u002Fequivalence\u002Fscan_normal.json",{"lines":436,"total":423},[437,438,439,440,441,442,443,444,445,446],"        \"arguments\": \"{\\\"comments\\\":[{\\\"path\\\":\\\"sample.go\\\",\\\"content\\\":\\\"issue\\\",\\\"existing_code\\\":\\\"package main\\\"},{\\\"path\\\":\\\"sample.go\\\",\\\"content\\\":\\\"se…","      }","    }","  ]","},","{","  \"role\": \"tool\",","  \"content\": \"Successfully commented.\",","  \"tool_call_id\": \"call_comment\"","}",{"format":360,"lines":448,"tokens":449,"copies":310,"first":450,"others":454,"excerpt":457},1286,3342,{"name":451,"start":452,"end":453},"internal\u002Freviewtask\u002Ftestdata\u002Fequivalence\u002Freview_invalid.json",60,1345,[455],{"name":456,"start":452,"end":453},"internal\u002Freviewtask\u002Ftestdata\u002Fequivalence\u002Fscan_invalid.json",{"lines":458,"total":448},[459,460,461,462,463,464,465,466,467,464],"\"main_task\": [","  {","    \"Type\": \"main_task\",","    \"RequestNo\": 1,","    \"RequestMessages\": [","      {","        \"role\": \"system\",","        \"content\": \"Review the supplied code.\"","      },",{"format":381,"lines":469,"tokens":470,"copies":310,"first":471,"others":475,"excerpt":480},232,2450,{"name":472,"start":473,"end":474},"plugins\u002Fopen-code-review\u002Fskills\u002Fopen-code-review\u002FSKILL.md",30,261,[476],{"name":477,"start":478,"end":479},"skills\u002Fopen-code-review\u002FSKILL.md",25,256,{"lines":481,"total":469},[482,483,484,483,485,483,486,483,487,483],"A skill for invoking [open-code-review](https:\u002F\u002Fgithub.com\u002Falibaba\u002Fopen-code-review) (`ocr`) — an open-source AI code review CLI that reads Git diffs and gener…","","## Workflow","### Step 1: Gather Business Context","Analyze the review target (commits, branch, or changes) to extract concise business context. Pass this context via `--background` to improve review quality.","### Step 2: Run Code Review",{"format":360,"lines":489,"tokens":490,"copies":310,"first":491,"others":493},919,2384,{"name":427,"start":492,"end":429},49,[494],{"name":495,"start":492,"end":429},"internal\u002Freviewtask\u002Ftestdata\u002Fequivalence\u002Fscan_async.json",{"format":360,"lines":497,"tokens":498,"copies":310,"first":499,"others":503},895,2315,{"name":500,"start":501,"end":502},"internal\u002Freviewtask\u002Ftestdata\u002Fequivalence\u002Freview_relocation.json",122,1016,[504],{"name":505,"start":501,"end":502},"internal\u002Freviewtask\u002Ftestdata\u002Fequivalence\u002Fscan_relocation.json",{"format":360,"lines":507,"tokens":508,"copies":310,"first":509,"others":512},852,2192,{"name":510,"start":501,"end":511},"internal\u002Freviewtask\u002Ftestdata\u002Fequivalence\u002Freview_repaired.json",973,[513],{"name":514,"start":501,"end":511},"internal\u002Freviewtask\u002Ftestdata\u002Fequivalence\u002Fscan_repaired.json",{"format":360,"lines":516,"tokens":517,"copies":310,"first":518,"others":522},846,2179,{"name":519,"start":520,"end":521},"internal\u002Freviewtask\u002Ftestdata\u002Fequivalence\u002Freview_invalid_comment_shape.json",113,958,[523],{"name":524,"start":520,"end":521},"internal\u002Freviewtask\u002Ftestdata\u002Fequivalence\u002Fscan_invalid_comment_shape.json",{"format":360,"lines":526,"tokens":527,"copies":310,"first":528,"others":531},824,2127,{"name":529,"start":530,"end":429},"internal\u002Freviewtask\u002Ftestdata\u002Fequivalence\u002Freview_failed.json",144,[532],{"name":533,"start":530,"end":429},"internal\u002Freviewtask\u002Ftestdata\u002Fequivalence\u002Fscan_failed.json",{"format":402,"lines":535,"tokens":536,"copies":537,"first":538,"others":541},527,511,5,{"name":539,"start":310,"end":540},"pages\u002Fsrc\u002Fcontent\u002Fdocs\u002Fen\u002Fintegrations\u002Fci.md",528,[542,545,548,551],{"name":543,"start":310,"end":544},"pages\u002Fsrc\u002Fcontent\u002Fdocs\u002Fja\u002Fintegrations\u002Fci.md",429,{"name":546,"start":310,"end":547},"pages\u002Fsrc\u002Fcontent\u002Fdocs\u002Fko\u002Fintegrations\u002Fci.md",499,{"name":549,"start":310,"end":550},"pages\u002Fsrc\u002Fcontent\u002Fdocs\u002Fru\u002Fintegrations\u002Fci.md",525,{"name":552,"start":310,"end":553},"pages\u002Fsrc\u002Fcontent\u002Fdocs\u002Fzh\u002Fintegrations\u002Fci.md",472,{"format":360,"lines":555,"tokens":556,"copies":310,"first":557,"others":559},740,1895,{"name":427,"start":558,"end":429},228,[560],{"name":529,"start":558,"end":429},{"sources":562,"lines":563,"tokens":564,"clones":565,"duplicatedLines":521,"duplicatedTokens":566,"percentage":567,"percentageTokens":568,"formats":569,"topClones":605,"generated":742},327,69213,412067,91,6646,1.38,1.61,[570,576,581,586,591,597,601],{"format":353,"sources":571,"lines":572,"clones":573,"duplicatedLines":574,"percentage":575},188,44828,56,569,1.27,{"format":395,"sources":577,"lines":578,"clones":478,"duplicatedLines":579,"percentage":580},45,5813,285,4.9,{"format":415,"sources":582,"lines":583,"clones":303,"duplicatedLines":584,"percentage":585},35,5033,37,0.74,{"format":374,"sources":587,"lines":588,"clones":310,"duplicatedLines":589,"percentage":590},19,6672,20,0.3,{"format":592,"sources":593,"lines":594,"clones":310,"duplicatedLines":595,"percentage":596},"kotlin",31,5605,16,0.29,{"format":367,"sources":598,"lines":599,"clones":310,"duplicatedLines":593,"percentage":600},8,1104,2.81,{"format":602,"sources":317,"lines":603,"clones":604,"duplicatedLines":604,"percentage":604},"powershell",158,0,[606,630,657,672,684,693,703,713,722,733],{"format":395,"lines":418,"tokens":607,"copies":310,"first":608,"others":610,"excerpt":614,"excerptSecond":625},157,{"name":609,"start":520,"end":501},"pages\u002Fsrc\u002Fcomponents\u002FQuickStartSection.tsx",[611],{"name":609,"start":612,"end":613},142,151,{"lines":615,"total":418},[616,617,618,483,619,620,621,622,623,624],"    \u003CCodeBlock label={t('quickstart.step1Label2')} code=\"ocr version\" onCopy={handleCopy} \u002F>","  \u003C\u002Fdiv>","\u003C\u002Fdiv>","{\u002F* Step 2 *\u002F}","\u003Cdiv style={{ display: 'flex', flexDirection: 'column', background: 'rgba(255,255,255,0.04)', border: '1px solid rgba(255,255,255,0.16)', borderRadius: 8, padd…","  \u003Cdiv style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: 16 }}>","    \u003Cdiv style={{ display: 'flex', alignItems: 'center', gap: 12 }}>","      \u003Cdiv style={{ width: 32, height: 32, display: 'flex', justifyContent: 'center', alignItems: 'center', background: 'rgba(255,255,255,0.04)', borderRadius:…","        \u003Cspan style={{ color: 'rgba(255,255,255,0.6)', fontSize: 13, fontWeight: 500 }}>02\u003C\u002Fspan>",{"lines":626,"total":418},[627,617,618,483,628,620,621,622,623,629],"    \u003CCodeBlock label={t('quickstart.step2Label3')} code=\"ocr llm test\" onCopy={handleCopy} \u002F>","{\u002F* Step 3 *\u002F}","        \u003Cspan style={{ color: 'rgba(255,255,255,0.6)', fontSize: 13, fontWeight: 500 }}>03\u003C\u002Fspan>",{"format":353,"lines":255,"tokens":631,"copies":425,"first":632,"others":636,"excerpt":644,"excerptSecond":653},74,{"name":633,"start":634,"end":635},"internal\u002Ftool\u002Fcode_search.go",32,40,[637,641],{"name":638,"start":639,"end":640},"internal\u002Ftool\u002Ffile_find.go",33,41,{"name":642,"start":643,"end":634},"internal\u002Ftool\u002Ffile_read.go",24,{"lines":645,"total":255},[646,647,648,649,650,651,446,483,652],"func (p *CodeSearchProvider) Execute(ctx context.Context, args map[string]any) (string, error) {","    return p.Access.execute(ctx, args, p.FileReader, func(reader *FileReader) (string, error) {","        selected := *p","        selected.FileReader = reader","        return selected.execute(ctx, args)","    })","func (p *CodeSearchProvider) execute(ctx context.Context, args map[string]any) (string, error) {",{"lines":654,"total":255},[655,647,648,649,650,651,446,483,656],"func (p *FileFindProvider) Execute(ctx context.Context, args map[string]any) (string, error) {","func (p *FileFindProvider) execute(ctx context.Context, args map[string]any) (string, error) {",{"format":395,"lines":658,"tokens":659,"copies":310,"first":660,"others":663,"excerpt":666,"excerptSecond":670},6,139,{"name":609,"start":661,"end":662},97,102,[664],{"name":609,"start":665,"end":501},117,{"lines":667,"total":658},[668,620,621,622,623,669],"{\u002F* Step 1 *\u002F}","        \u003Cspan style={{ color: 'rgba(255,255,255,0.6)', fontSize: 13, fontWeight: 500 }}>01\u003C\u002Fspan>",{"lines":671,"total":658},[619,620,621,622,623,624],{"format":395,"lines":673,"tokens":674,"copies":310,"first":675,"others":679},18,134,{"name":676,"start":677,"end":678},"pages\u002Fsrc\u002Fpages\u002FBlogPage.tsx",409,426,[680],{"name":681,"start":682,"end":683},"pages\u002Fsrc\u002Fpages\u002FDocsPage.tsx",603,620,{"format":395,"lines":582,"tokens":685,"copies":310,"first":686,"others":689},132,{"name":676,"start":687,"end":688},340,374,[690],{"name":681,"start":691,"end":692},532,566,{"format":353,"lines":405,"tokens":694,"copies":310,"first":695,"others":699},129,{"name":696,"start":697,"end":698},"cmd\u002Fopencodereview\u002Fprovider_tui.go",2322,2344,[700],{"name":696,"start":701,"end":702},2405,2427,{"format":395,"lines":704,"tokens":705,"copies":310,"first":706,"others":710},7,128,{"name":707,"start":708,"end":709},"pages\u002Fsrc\u002Fcomponents\u002FBenchmarkSection.tsx",101,107,[711],{"name":609,"start":712,"end":377},79,{"format":353,"lines":411,"tokens":714,"copies":310,"first":715,"others":719},127,{"name":716,"start":717,"end":718},"internal\u002Fllmloop\u002Floop.go",357,369,[720],{"name":716,"start":721,"end":354},513,{"format":353,"lines":723,"tokens":724,"copies":310,"first":725,"others":729},21,125,{"name":726,"start":727,"end":728},"cmd\u002Fopencodereview\u002Fsession_cmd.go",552,572,[730],{"name":726,"start":731,"end":732},612,633,{"format":395,"lines":734,"tokens":501,"copies":310,"first":735,"others":738},12,{"name":736,"start":634,"end":737},"pages\u002Fsrc\u002Fcomponents\u002FFeaturesSection.tsx",43,[739],{"name":740,"start":577,"end":741},"pages\u002Fsrc\u002Fcomponents\u002FUseCasesSection.tsx",62,{"files":425,"minified":604,"sample":743},[744,745,746],"extensions\u002Ffrontend\u002Fsrc\u002Fshared\u002Fproviders.generated.ts","extensions\u002Fidea\u002Fsrc\u002Fmain\u002Fkotlin\u002Fcom\u002Falibaba\u002Fopencodereview\u002Fidea\u002Fservices\u002FProviderNames.generated.kt","internal\u002Fllm\u002Fgen\u002Fkotlin.go",{"score":748,"grade":749,"size":750,"dimensions":754},51.1,"D",{"lines":751,"files":752,"class":753},192166,734,"L",[755,769,777],{"id":756,"source":757,"value":758,"adjusted":758,"lines":759,"halfLife":760,"formats":761,"excluded":765,"weight":317,"score":768},"duplication","jscpd",6.2,11907,8.5,[353,374,415,592,395,408,367,762,602,763,764],"makefile","groovy","batch",[766,388,767],"markup","data",60.5,{"id":770,"source":757,"value":771,"adjusted":771,"lines":772,"halfLife":773,"coverage":774,"weight":775,"score":776},"dead-code",3.6,1472,7.5,21.2,0.212,71.8,{"id":778,"source":757,"value":779,"adjusted":780,"lines":781,"halfLife":782,"weight":317,"score":783},"complexity",66.3,65.8,127440,50,40.1,{"total":785,"mean":786,"files":787},35038,47.7,[788,793,797,802,807,812,817,821,826,831],{"path":789,"complexity":790,"lines":791,"bytes":792},"scripts\u002Fgithub-actions\u002Fpost-review-comments.js",717,3447,158155,{"path":696,"complexity":794,"lines":795,"bytes":796},708,3176,90714,{"path":798,"complexity":799,"lines":800,"bytes":801},"scripts\u002Fgithub-actions\u002Fpost-review-comments.test.js",683,7136,332416,{"path":803,"complexity":804,"lines":805,"bytes":806},"cmd\u002Fopencodereview\u002Fprovider_tui_test.go",524,3073,88806,{"path":808,"complexity":809,"lines":810,"bytes":811},"internal\u002Fllm\u002Fresolver_test.go",515,2939,88496,{"path":813,"complexity":814,"lines":815,"bytes":816},"cmd\u002Fopencodereview\u002Fconfig_cmd_test.go",481,1867,59203,{"path":818,"complexity":544,"lines":819,"bytes":820},"internal\u002Fconfig\u002Frules\u002Fsystem_rules_test.go",2114,69512,{"path":822,"complexity":823,"lines":824,"bytes":825},"cmd\u002Fopencodereview\u002Fprovider_tui_funcs_test.go",418,2236,63477,{"path":827,"complexity":828,"lines":829,"bytes":830},"examples\u002Fgitlab_ci\u002Fpost_review.py",398,1652,68152,{"path":832,"complexity":833,"lines":834,"bytes":835},"internal\u002Fllm\u002Fclient_test.go",368,2459,77608,{"percentage":837,"findings":595,"files":838,"byCategory":839,"largest":847},3.61,162,[840,843,845],{"category":841,"count":842},"unused-file",11,{"category":844,"count":303},"unused-export",{"category":846,"count":317},"unused-symbol",[848,850,853,855,858,860,862,865,867,871],{"category":841,"path":849,"name":483,"line":317,"lines":406},"plugins\u002Fopen-code-review\u002Fopencode\u002Fopen-code-review.ts",{"category":841,"path":851,"name":483,"line":317,"lines":852},"internal\u002Fviewer\u002Fstatic\u002Fsession.js",328,{"category":841,"path":854,"name":483,"line":317,"lines":724},"internal\u002Fviewer\u002Fstatic\u002Fpager.js",{"category":841,"path":856,"name":483,"line":317,"lines":857},"extensions\u002Ffrontend\u002Fsrc\u002Fwebview\u002FconfigStore.ts",114,{"category":841,"path":859,"name":483,"line":317,"lines":631},"extensions\u002Ffrontend\u002Fsrc\u002Fwebview\u002FConfigPanelApp.tsx",{"category":841,"path":861,"name":483,"line":317,"lines":452},"extensions\u002Ffrontend\u002Fsrc\u002Fwebview\u002Fbridge.idea.ts",{"category":841,"path":863,"name":483,"line":317,"lines":864},"internal\u002Fviewer\u002Fstatic\u002Fa11y.js",39,{"category":841,"path":866,"name":483,"line":317,"lines":375},"internal\u002Fviewer\u002Fstatic\u002Frepos.js",{"category":844,"path":868,"name":869,"line":595,"lines":870},"extensions\u002Fvscode\u002Fsrc\u002Fextension\u002Fextension.ts","activate",22,{"category":841,"path":872,"name":483,"line":317,"lines":723},"extensions\u002Ffrontend\u002Fsrc\u002Fwebview\u002Fbridge.vsc.ts",{"name":285,"url":874,"description":875,"language":302,"stars":876,"starsToday":877,"defaultBranch":339,"headSha":878,"durationMs":879,"total":880,"formats":889,"topClones":942,"code":1081,"health":1275,"complexity":1295,"deadCode":1348},"https:\u002F\u002Fgithub.com\u002FGoogleChrome\u002Fmodern-web-guidance-src","Keep your coding agent up to date with the latest web best practices",5027,1925,"5e5cd33a7738f21281e3027732bcbd58cfa82bf1",2038,{"sources":881,"lines":882,"tokens":883,"clones":884,"duplicatedLines":885,"duplicatedTokens":886,"percentage":887,"percentageTokens":888},2512,471210,4002751,3646,64271,518911,13.64,12.96,[890,897,903,909,914,919,924,930,934,938],{"format":891,"sources":892,"lines":893,"clones":894,"duplicatedLines":895,"percentage":896},"diff",325,144189,1855,36224,25.12,{"format":415,"sources":898,"lines":899,"clones":900,"duplicatedLines":901,"percentage":902},577,169191,1132,13845,8.18,{"format":766,"sources":904,"lines":905,"clones":906,"duplicatedLines":907,"percentage":908},430,59802,469,8822,14.75,{"format":381,"sources":910,"lines":911,"clones":741,"duplicatedLines":912,"percentage":913},588,50828,1558,3.07,{"format":360,"sources":473,"lines":915,"clones":916,"duplicatedLines":917,"percentage":918},9890,51,2770,28.01,{"format":374,"sources":920,"lines":921,"clones":391,"duplicatedLines":922,"percentage":923},174,22285,596,2.67,{"format":925,"sources":612,"lines":926,"clones":927,"duplicatedLines":928,"percentage":929},"css",10390,26,226,2.18,{"format":402,"sources":838,"lines":931,"clones":658,"duplicatedLines":932,"percentage":933},1973,72,3.65,{"format":367,"sources":643,"lines":935,"clones":303,"duplicatedLines":936,"percentage":937},925,69,7.46,{"format":395,"sources":411,"lines":939,"clones":425,"duplicatedLines":940,"percentage":941},840,70,8.33,[943,965,988,1010,1021,1031,1041,1051,1061,1071],{"format":891,"lines":944,"tokens":945,"copies":425,"first":946,"others":948,"excerpt":953},1753,12018,{"name":947,"start":317,"end":944},"guides\u002Fforms\u002Fsms-otp-form\u002Ftargets\u002Fdevtools-times\u002Fpatches\u002Fclaude-solution.patch",[949,951],{"name":950,"start":317,"end":944},"guides\u002Fforms\u002Fsms-otp-form\u002Ftargets\u002Fdevtools-times\u002Fpatches\u002Fcodex-solution.patch",{"name":952,"start":317,"end":944},"guides\u002Fforms\u002Fsms-otp-form\u002Ftargets\u002Fdevtools-times\u002Fpatches\u002Fjetski-solution.patch",{"lines":954,"total":944},[955,956,957,958,959,960,961,962,963,964],"diff --git a\u002Fastro.config.mjs b\u002Fastro.config.mjs","index cc5869a..d43edf3 100644","--- a\u002Fastro.config.mjs","+++ b\u002Fastro.config.mjs","@@ -12,6 +12,9 @@ export default defineConfig({","   integrations: [react()],","   vite: {","     plugins: [tailwindcss()],","+    define: {","+      'process.env.ASTRO_NODE_LOGGING': JSON.stringify('disabled'),",{"format":891,"lines":966,"tokens":967,"copies":310,"first":968,"others":972,"excerpt":976},1051,14927,{"name":969,"start":970,"end":971},"guides\u002Fsecurity\u002Fquick-sign-ins\u002Ftargets\u002Fdaily-grind\u002Fpatches\u002Fantigravity-solution.patch",3663,4713,[973],{"name":969,"start":974,"end":975},8944,9994,{"lines":977,"total":966},[978,979,980,981,982,983,984,985,986,987],"+++ b\u002Fnode_modules\u002F.pnpm\u002Fua-parser-js@1.0.41\u002Fnode_modules\u002Fua-parser-js\u002Fsrc\u002Fua-parser.js","@@ -0,0 +1,1048 @@","+\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F","+\u002F* UAParser.js v1.0.41","+   Copyright © 2012-2025 Faisal Salman \u003Cf@faisalman.com>","+   MIT License *\u002F\u002F*","+   Detect Browser, Engine, OS, CPU, and Device type\u002Fmodel from User-Agent data.","+   Supports browser & node.js environment.","+   Demo   : https:\u002F\u002Ffaisalman.github.io\u002Fua-parser-js","+   Source : https:\u002F\u002Fgithub.com\u002Ffaisalman\u002Fua-parser-js *\u002F",{"format":891,"lines":989,"tokens":990,"copies":425,"first":991,"others":993,"excerpt":998},741,5212,{"name":992,"start":317,"end":989},"guides\u002Fforms\u002Fsms-otp-form\u002Ftargets\u002Fdaily-grind\u002Fpatches\u002Fclaude-solution.patch",[994,996],{"name":995,"start":317,"end":989},"guides\u002Fforms\u002Fsms-otp-form\u002Ftargets\u002Fdaily-grind\u002Fpatches\u002Fcodex-solution.patch",{"name":997,"start":317,"end":989},"guides\u002Fforms\u002Fsms-otp-form\u002Ftargets\u002Fdaily-grind\u002Fpatches\u002Fjetski-solution.patch",{"lines":999,"total":989},[1000,1001,1002,1003,1004,1005,1006,1007,1008,1009],"diff --git a\u002Findex.html b\u002Findex.html","index 66c9173..1168016 100644","--- a\u002Findex.html","+++ b\u002Findex.html","@@ -4,14 +4,33 @@"," \u003Chead>","   \u003Cmeta charset=\"UTF-8\">","   \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">","-  \u003Ctitle>The Daily Grind | Artisanal Coffee\u003C\u002Ftitle>","+  \u003Cmeta name=\"description\" content=\"The Daily Grind Artisanal Coffee — Verify your phone number with a one-time passcode (OTP) for express ordering and reward…",{"format":891,"lines":1011,"tokens":1012,"copies":310,"first":1013,"others":1017},311,6596,{"name":1014,"start":1015,"end":1016},"guides\u002Fui-components\u002Ftabs\u002Ftargets\u002Fdaily-grind\u002Fpatches\u002Fantigravity-solution.patch",826,1136,[1018],{"name":1014,"start":1019,"end":1020},1145,1455,{"format":891,"lines":1022,"tokens":1023,"copies":310,"first":1024,"others":1027},316,6224,{"name":969,"start":1025,"end":1026},878,1193,[1028],{"name":969,"start":1029,"end":1030},6300,6615,{"format":891,"lines":1032,"tokens":1033,"copies":310,"first":1034,"others":1037},299,6098,{"name":1014,"start":1035,"end":1036},2285,2583,[1038],{"name":1014,"start":1039,"end":1040},2594,2892,{"format":891,"lines":1042,"tokens":1043,"copies":310,"first":1044,"others":1047},221,4825,{"name":1014,"start":1045,"end":1046},3691,3911,[1048],{"name":1014,"start":1049,"end":1050},3919,4139,{"format":891,"lines":1052,"tokens":1053,"copies":310,"first":1054,"others":1057},219,4367,{"name":969,"start":1055,"end":1056},2272,2490,[1058],{"name":969,"start":1059,"end":1060},7694,7912,{"format":891,"lines":1062,"tokens":1063,"copies":310,"first":1064,"others":1067},399,4073,{"name":969,"start":1065,"end":1066},3250,3648,[1068],{"name":969,"start":1069,"end":1070},8531,8929,{"format":891,"lines":1072,"tokens":1073,"copies":310,"first":1074,"others":1077},180,3966,{"name":969,"start":1075,"end":1076},1197,1376,[1078],{"name":969,"start":1079,"end":1080},6619,6798,{"sources":1082,"lines":1083,"tokens":1084,"clones":286,"duplicatedLines":1085,"duplicatedTokens":1086,"percentage":287,"percentageTokens":1087,"formats":1088,"topClones":1108,"generated":1272},504,143283,963680,12802,91301,9.47,[1089,1095,1099,1100,1102,1106],{"format":415,"sources":1090,"lines":1091,"clones":1092,"duplicatedLines":1093,"percentage":1094},434,129137,996,12585,9.75,{"format":374,"sources":870,"lines":1096,"clones":255,"duplicatedLines":1097,"percentage":1098},12083,96,0.79,{"format":395,"sources":411,"lines":939,"clones":425,"duplicatedLines":940,"percentage":941},{"format":367,"sources":425,"lines":1101,"clones":425,"duplicatedLines":737,"percentage":358},581,{"format":1103,"sources":595,"lines":1104,"clones":317,"duplicatedLines":598,"percentage":1105},"html",642,1.25,{"format":1107,"sources":595,"lines":604,"clones":604,"duplicatedLines":604,"percentage":604},"astro",[1109,1141,1172,1191,1200,1209,1219,1228,1237,1258],{"format":415,"lines":1110,"tokens":1111,"copies":1112,"first":1113,"others":1115,"excerpt":1132},17,87,34,{"name":1114,"start":317,"end":1110},"guides\u002Faccessibility\u002Faccessible-error-announcement\u002Fgrader.ts",[1116,1118,1120,1122,1124,1126,1128,1130],{"name":1117,"start":317,"end":595},"guides\u002Fbuilt-in-ai\u002Flanguage-detection\u002Fgrader.ts",{"name":1119,"start":317,"end":409},"guides\u002Fbuilt-in-ai\u002Fsummarizer\u002Fgrader.ts",{"name":1121,"start":317,"end":595},"guides\u002Fcss\u002Fanimate-to-intrinsic-sizes\u002Fgrader.ts",{"name":1123,"start":317,"end":595},"guides\u002Fcss\u002Fchild-state-based-styling\u002Fgrader.ts",{"name":1125,"start":317,"end":409},"guides\u002Fcss\u002Fdynamic-sibling-styling\u002Fgrader.ts",{"name":1127,"start":317,"end":595},"guides\u002Fforms\u002Fautofill-address-form\u002Fgrader.ts",{"name":1129,"start":317,"end":595},"guides\u002Fforms\u002Fautofill-payment-form\u002Fgrader.ts",{"name":1131,"start":317,"end":595},"guides\u002Fforms\u002Fautofill-sign-up-form\u002Fgrader.ts",{"lines":1133,"total":1110},[1134,1135,1136,483,1137,1138,1139,1140,446,483],"import { test, expect } from '@playwright\u002Ftest';","import * as fs from 'fs';","import * as path from 'path';","\u002F\u002F Setup","const targetFile = process.env.TARGET_FILE;","if (!targetFile) {","  throw new Error('TARGET_FILE environment variable not set.');",{"format":415,"lines":587,"tokens":1142,"copies":587,"first":1143,"others":1144,"excerpt":1158,"excerptSecond":1168},118,{"name":1114,"start":1110,"end":582},[1145,1147,1148,1149,1150,1152,1154,1156],{"name":1146,"start":595,"end":639},"guides\u002Fcss\u002Fcontent-based-styling\u002Fgrader.ts",{"name":1127,"start":595,"end":639},{"name":1129,"start":595,"end":1112},{"name":1131,"start":595,"end":639},{"name":1151,"start":595,"end":639},"guides\u002Fforms\u002Fforms\u002Fgrader.ts",{"name":1153,"start":595,"end":1112},"guides\u002Fperformance\u002Fdefer-rendering-heavy-content\u002Fgrader.ts",{"name":1155,"start":1110,"end":582},"guides\u002Fperformance\u002Foptimize-preload-priority\u002Fgrader.ts",{"name":1157,"start":1110,"end":582},"guides\u002Fperformance\u002Foptimize-script-priority\u002Fgrader.ts",{"lines":1159,"total":587},[1160,483,1161,1162,1163,1164,1165,483,1166,1167],"test.describe(`Accessible Error Announcement Expectations: ${demoName}`, () => {","  \u002F\u002F Setup browser testing","  test.beforeEach(async ({ page }) => {","    await page.route('http:\u002F\u002Flocalhost\u002F*', async (route) => {","      const requestPath = new URL(route.request().url()).pathname;","      const localFilePath = path.join(targetDir, requestPath === '\u002F' ? demoName : requestPath);","      if (fs.existsSync(localFilePath)) {","        await route.fulfill({ path: localFilePath });",{"lines":1169,"total":673},[1170,1161,1162,1163,1164,1165,483,1166,1167,1171],"test.describe(`content-based-styling Expectations: ${demoName}`, () => {","      } else {",{"format":415,"lines":1173,"tokens":1174,"copies":310,"first":1175,"others":1177,"excerpt":1180},192,1357,{"name":1176,"start":317,"end":1173},"guides\u002Fforms\u002Fsms-otp-form\u002Ftargets\u002Fdaily-grind\u002Fgrader.ts",[1178],{"name":1179,"start":317,"end":1173},"guides\u002Fforms\u002Fsms-otp-form\u002Ftargets\u002Fdevtools-times\u002Fgrader.ts",{"lines":1181,"total":1173},[1182,1183,1184,1185,1186,1187,1188,1182,1189,1190],"import {","  test,","  expect,","  getTargetFiles,","  getJsProject,","  getHtmlDocuments,","} from '..\u002F..\u002F..\u002F..\u002Ftest-fixture.ts';","  SyntaxKind,","  Node,",{"format":415,"lines":674,"tokens":1192,"copies":310,"first":1193,"others":1196},1185,{"name":1194,"start":593,"end":1195},"guides\u002Fcss\u002Fsize-aware-styling\u002Ftargets\u002Fdaily-grind\u002Fgrader.ts",164,[1197],{"name":1198,"start":634,"end":1199},"guides\u002Fcss\u002Fsize-aware-styling\u002Ftargets\u002Fdevtools-times\u002Fgrader.ts",166,{"format":415,"lines":1201,"tokens":1202,"copies":310,"first":1203,"others":1206},141,1078,{"name":1176,"start":1204,"end":1205},189,329,[1207],{"name":1179,"start":892,"end":1208},465,{"format":415,"lines":412,"tokens":1210,"copies":310,"first":1211,"others":1215},1029,{"name":1212,"start":1213,"end":1214},"guides\u002Fuser-experience\u002Fnatural-interactions\u002Ftargets\u002Fdaily-grind\u002Fgrader.ts",218,352,[1216],{"name":1212,"start":1217,"end":1218},564,698,{"format":415,"lines":659,"tokens":1220,"copies":310,"first":1221,"others":1225},917,{"name":1222,"start":1223,"end":1224},"guides\u002Fwasm\u002Fcpp-on-the-web\u002Ftargets\u002Fdaily-grind\u002Fgrader.ts",58,196,[1226],{"name":1227,"start":1223,"end":1224},"guides\u002Fwasm\u002Fcpp-on-the-web\u002Ftargets\u002Fdevtools-times\u002Fgrader.ts",{"format":415,"lines":1229,"tokens":1230,"copies":310,"first":1231,"others":1234},123,877,{"name":1176,"start":1232,"end":1233},332,454,[1235],{"name":1179,"start":906,"end":1236},591,{"format":415,"lines":1238,"tokens":1239,"copies":842,"first":1240,"others":1241},14,83,{"name":1114,"start":317,"end":1238},[1242,1244,1246,1248,1250,1252,1254,1256],{"name":1243,"start":317,"end":1238},"guides\u002Fforms\u002Fanimated-select-picker\u002Fgrader.ts",{"name":1245,"start":317,"end":1238},"guides\u002Fforms\u002Fautofill-highlight-inputs\u002Fgrader.ts",{"name":1247,"start":317,"end":1238},"guides\u002Fforms\u002Frequired-field-feedback\u002Fgrader.ts",{"name":1249,"start":317,"end":411},"guides\u002Fjs\u002Fcapture-location-agnostic-data\u002Fgrader.ts",{"name":1251,"start":317,"end":1238},"guides\u002Fperformance\u002Fflicker-free-client-side-ab-testing\u002Fgrader.ts",{"name":1253,"start":317,"end":1238},"guides\u002Fperformance\u002Fidentify-heavy-scripts\u002Fgrader.ts",{"name":1255,"start":317,"end":1238},"guides\u002Fperformance\u002Fidentify-inp-causes\u002Fgrader.ts",{"name":1257,"start":317,"end":411},"guides\u002Fui-behaviors\u002Fanimate-element-entry-exit\u002Fgrader.ts",{"format":415,"lines":595,"tokens":1259,"copies":704,"first":1260,"others":1261},108,{"name":1114,"start":1110,"end":634},[1262,1263,1264,1265,1268,1270],{"name":1117,"start":595,"end":375},{"name":1119,"start":409,"end":375},{"name":1247,"start":927,"end":864},{"name":1266,"start":405,"end":1267},"guides\u002Fperformance\u002Fdeprioritize-background-fetches\u002Fgrader.ts",38,{"name":1269,"start":595,"end":473},"guides\u002Fui-components\u002Fpersistent-app-tours\u002Fgrader.ts",{"name":1271,"start":842,"end":643},"guides\u002Fui-components\u002Fpersistent-toast-notifications\u002Fgrader.ts",{"files":317,"minified":317,"sample":1273},[1274],"src\u002Fdashboard\u002Fdiff.min.js",{"score":298,"grade":299,"size":1276,"dimensions":1279},{"lines":1277,"files":1278,"class":753},185752,630,[1280,1286,1291],{"id":756,"source":757,"value":1281,"adjusted":1281,"lines":1282,"halfLife":760,"formats":1283,"excluded":1284,"weight":317,"score":1285},7.6,14149,[415,374,395,367,1107],[766,388,767],53.9,{"id":770,"source":757,"value":1287,"adjusted":1288,"lines":1289,"halfLife":773,"weight":317,"score":1290},46,45.6,85702,1.5,{"id":778,"source":757,"value":1292,"adjusted":1293,"lines":1294,"halfLife":782,"weight":317,"score":391},74.4,73.8,138126,{"total":1296,"mean":1297,"files":1298},45673,72.5,[1299,1304,1309,1314,1319,1324,1329,1333,1338,1343],{"path":1300,"complexity":1301,"lines":1302,"bytes":1303},"src\u002Fdashboard\u002Fdashboard.js",843,2457,128363,{"path":1305,"complexity":1306,"lines":1307,"bytes":1308},"src\u002Fdashboard\u002Flanding.js",774,1884,96831,{"path":1310,"complexity":1311,"lines":1312,"bytes":1313},"guides\u002Fui-components\u002Ftabs\u002Ftargets\u002Fdaily-grind\u002Fgrader.ts",582,1437,63926,{"path":1315,"complexity":1316,"lines":1317,"bytes":1318},"src\u002Fanalyzing\u002Fscanners\u002Fast-helpers.ts",487,1179,45257,{"path":1320,"complexity":1321,"lines":1322,"bytes":1323},"src\u002Fci\u002Fsync-pipeline-issue.ts",348,1343,48887,{"path":1325,"complexity":1326,"lines":1327,"bytes":1328},"src\u002Fci\u002Fatl-triage.ts",335,1273,43340,{"path":1330,"complexity":1232,"lines":1331,"bytes":1332},"guides\u002Fui-components\u002Fstack-drill-down\u002Fgrader.ts",1022,40027,{"path":1334,"complexity":1335,"lines":1336,"bytes":1337},"src\u002Fdashboard\u002Futils.js",323,849,37243,{"path":1339,"complexity":1340,"lines":1341,"bytes":1342},"src\u002Fcore\u002Fguide-validation.ts",322,1266,45198,{"path":1344,"complexity":1345,"lines":1346,"bytes":1347},"guides\u002Fvisual-design\u002Fvisual-effects\u002Ftargets\u002Fdaily-grind\u002Fgrader.ts",289,691,27838,{"percentage":1349,"findings":1350,"files":1351,"byCategory":1352,"largest":1359},46.04,286,635,[1353,1355,1356,1357],{"category":841,"count":1354},259,{"category":844,"count":255},{"category":846,"count":255},{"category":1358,"count":255},"unused-import",[1360,1361,1362,1363,1366,1367,1370,1373,1376,1379],{"category":841,"path":1300,"name":483,"line":317,"lines":1302},{"category":841,"path":1305,"name":483,"line":317,"lines":1307},{"category":841,"path":1310,"name":483,"line":317,"lines":1312},{"category":841,"path":1364,"name":483,"line":317,"lines":1365},"guides\u002Fui-components\u002Fmenu\u002Ftargets\u002Fdaily-grind\u002Fgrader.ts",1227,{"category":841,"path":1330,"name":483,"line":317,"lines":1331},{"category":841,"path":1368,"name":483,"line":317,"lines":1369},"src\u002Fanalyzing\u002Feval\u002Fdetection-eval.ts",1002,{"category":841,"path":1371,"name":483,"line":317,"lines":1372},"guides\u002Fjs\u002Fjs\u002Ftargets\u002Fdaily-grind\u002Fgrader.ts",994,{"category":841,"path":1374,"name":483,"line":317,"lines":1375},"src\u002Fdashboard\u002Fsearch\u002Fsearch.js",934,{"category":841,"path":1377,"name":483,"line":317,"lines":1378},"guides\u002Fsecurity\u002Fpasskeys\u002Ftargets\u002Fdevtools-times\u002Fgrader.ts",873,{"category":841,"path":1380,"name":483,"line":317,"lines":1381},"guides\u002Fui-behaviors\u002Fdrag\u002Ftargets\u002Fdaily-grind\u002Fgrader.ts",800,{"name":271,"url":1383,"description":1384,"language":302,"stars":1385,"starsToday":1386,"defaultBranch":339,"headSha":1387,"durationMs":1388,"total":1389,"formats":1396,"topClones":1439,"code":1603,"health":1727,"complexity":1750,"deadCode":1803},"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fcodex-security","OpenAI's Codex Security CLI and TypeScript SDK for finding, validating, and fixing security vulnerabilities. npm: https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@openai\u002Fcodex-security",13232,751,"173483d7c658be7a512c93d9559bf01a05d5b196",2232,{"sources":1390,"lines":1391,"tokens":1392,"clones":272,"duplicatedLines":1393,"duplicatedTokens":1394,"percentage":273,"percentageTokens":1395},1562,611927,3858317,11387,74054,1.92,[1397,1401,1407,1411,1416,1420,1424,1428,1432,1436],{"format":415,"sources":497,"lines":1398,"clones":1399,"duplicatedLines":1400,"percentage":1395},447258,799,8597,{"format":408,"sources":1402,"lines":1403,"clones":1404,"duplicatedLines":1405,"percentage":1406},171,103290,181,1715,1.66,{"format":402,"sources":1408,"lines":1409,"clones":587,"duplicatedLines":562,"percentage":1410},76,8276,3.95,{"format":360,"sources":1412,"lines":1413,"clones":842,"duplicatedLines":1414,"percentage":1415},64,9756,442,4.53,{"format":766,"sources":425,"lines":1417,"clones":255,"duplicatedLines":1418,"percentage":1419},962,170,17.67,{"format":374,"sources":1421,"lines":1422,"clones":704,"duplicatedLines":416,"percentage":1423},105,16983,0.34,{"format":381,"sources":1425,"lines":1426,"clones":658,"duplicatedLines":1427,"percentage":590},148,18238,54,{"format":367,"sources":1429,"lines":1430,"clones":317,"duplicatedLines":598,"percentage":1431},63,2000,0.4,{"format":1433,"sources":303,"lines":1434,"clones":317,"duplicatedLines":1110,"percentage":1435},"txt",86,19.77,{"format":1437,"sources":598,"lines":1438,"clones":604,"duplicatedLines":604,"percentage":604},"rust",2745,[1440,1460,1477,1518,1527,1537,1566,1574,1582,1589],{"format":415,"lines":1090,"tokens":1441,"copies":310,"first":1442,"others":1445,"excerpt":1448},1971,{"name":1443,"start":425,"end":1444},"plugins\u002Fcodex-security\u002Fmcp-app\u002Fsrc\u002Fmodels.ts",436,[1446],{"name":1447,"start":425,"end":1444},"sdk\u002Ftypescript\u002Fsrc\u002Fmodels.ts",{"lines":1449,"total":1090},[1450,1451,1452,1453,1454,1455,1456,1457,1458,1459],"export interface ScanManifest {","  documentType: \"codex-security.scan-manifest\";","  schemaVersion: \"1.0\";","  scan: {","    id: string;","    producer: {","      name: string;","      version: string;","      [k: string]: unknown;","    };",{"format":360,"lines":928,"tokens":1399,"copies":310,"first":1461,"others":1463,"excerpt":1466},{"name":1462,"start":317,"end":928},"plugins\u002Fcodex-security\u002Fmcp-app\u002Fsrc\u002Fdeep-scan\u002Fproject-config.schema.json",[1464],{"name":1465,"start":317,"end":928},"sdk\u002Ftypescript\u002Fschemas\u002Fproject-config.schema.json",{"lines":1467,"total":928},[442,1468,1469,1470,1471,1472,1473,1474,1475,1476],"  \"$schema\": \"http:\u002F\u002Fjson-schema.org\u002Fdraft-07\u002Fschema#\",","  \"type\": \"object\",","  \"properties\": {","    \"$schema\": {","      \"description\": \"Editor schema URI or relative path. The CLI does not fetch or select a validator from this value.\",","      \"type\": \"string\",","      \"minLength\": 1","    },","    \"auth\": {",{"format":415,"lines":418,"tokens":452,"copies":734,"first":1478,"others":1482,"excerpt":1507},{"name":1479,"start":1480,"end":1481},"sdk\u002Ftypescript\u002Ftests-ts\u002Fapi.test.ts",5945,5954,[1483,1486,1489,1492,1495,1498,1501,1504],{"name":1479,"start":1484,"end":1485},6253,6262,{"name":1479,"start":1487,"end":1488},6351,6360,{"name":1479,"start":1490,"end":1491},6693,6702,{"name":1479,"start":1493,"end":1494},6797,6806,{"name":1479,"start":1496,"end":1497},7222,7231,{"name":1479,"start":1499,"end":1500},7330,7339,{"name":1479,"start":1502,"end":1503},7444,7453,{"name":1479,"start":1505,"end":1506},8695,8704,{"lines":1508,"total":418},[1509,439,1510,1511,1512,1513,1514,1515,1516,1517],"      pollAllowed.resolve();","    return { events: completedEvents(\"thread-1\", events()) };","  }),","});","\u002F\u002F The fake stream has no process handle to keep the unref'ed poll alive.","const keepAlive = setInterval(() => {}, 1_000);","try {","  await client.run(repository, {","    onProgress: (update) => updates.push(update),",{"format":402,"lines":1434,"tokens":1519,"copies":310,"first":1520,"others":1524},643,{"name":1521,"start":1522,"end":1523},"github-action\u002FREADME.md",301,386,[1525],{"name":1526,"start":317,"end":1434},"github-action\u002Fexamples\u002Fpull-request.yml",{"format":766,"lines":1112,"tokens":1528,"copies":310,"first":1529,"others":1532},580,{"name":1530,"start":1531,"end":1224},"plugins\u002Fcodex-security\u002Fskills\u002Fthreat-model-visualize\u002Fassets\u002Fcontext-reference-overview.svg",163,[1533],{"name":1534,"start":1535,"end":1536},"plugins\u002Fcodex-security\u002Fskills\u002Fthreat-model-visualize\u002Fassets\u002Fcontext-reference-path.svg",247,280,{"format":415,"lines":418,"tokens":291,"copies":418,"first":1538,"others":1541},{"name":1479,"start":1539,"end":1540},7332,7341,[1542,1545,1548,1551,1554,1557,1560,1563],{"name":1479,"start":1543,"end":1544},7446,7455,{"name":1479,"start":1546,"end":1547},7583,7592,{"name":1479,"start":1549,"end":1550},7875,7884,{"name":1479,"start":1552,"end":1553},8027,8035,{"name":1479,"start":1555,"end":1556},8697,8706,{"name":1479,"start":1558,"end":1559},8896,8905,{"name":1479,"start":1561,"end":1562},9029,9038,{"name":1479,"start":1564,"end":1565},13211,13220,{"format":415,"lines":368,"tokens":1567,"copies":310,"first":1568,"others":1570},522,{"name":1569,"start":317,"end":368},"plugins\u002Fcodex-security\u002Fmcp-app\u002Fsrc\u002Fcontract-values.ts",[1571],{"name":1572,"start":310,"end":1573},"sdk\u002Ftypescript\u002Fsrc\u002Fcontract-values.ts",111,{"format":766,"lines":673,"tokens":1567,"copies":310,"first":1575,"others":1578},{"name":1530,"start":1576,"end":1577},197,214,[1579],{"name":1534,"start":1580,"end":1581},281,298,{"format":766,"lines":870,"tokens":1583,"copies":310,"first":1584,"others":1586},417,{"name":1530,"start":338,"end":1585},236,[1587],{"name":1534,"start":1032,"end":1588},320,{"format":415,"lines":842,"tokens":396,"copies":598,"first":1590,"others":1593},{"name":1479,"start":1591,"end":1592},5091,5101,[1594,1595,1596,1597,1598,1599,1600],{"name":1479,"start":1539,"end":1540},{"name":1479,"start":1543,"end":1544},{"name":1479,"start":1546,"end":1547},{"name":1479,"start":1549,"end":1550},{"name":1479,"start":1552,"end":1553},{"name":1479,"start":1555,"end":1556},{"name":1479,"start":1601,"end":1602},13526,13534,{"sources":1604,"lines":1605,"tokens":1606,"clones":289,"duplicatedLines":1607,"duplicatedTokens":1608,"percentage":290,"percentageTokens":1609,"formats":1610,"topClones":1628,"generated":1725},567,186555,1091114,1023,5501,0.5,[1611,1615,1618,1621,1623,1625,1627],{"format":415,"sources":904,"lines":1612,"clones":398,"duplicatedLines":1613,"percentage":1614},138497,874,0.63,{"format":408,"sources":396,"lines":1616,"clones":411,"duplicatedLines":1617,"percentage":1423},34188,115,{"format":374,"sources":416,"lines":1619,"clones":303,"duplicatedLines":1112,"percentage":1620},9847,0.35,{"format":1437,"sources":704,"lines":1622,"clones":604,"duplicatedLines":604,"percentage":604},2194,{"format":367,"sources":673,"lines":1624,"clones":604,"duplicatedLines":604,"percentage":604},1054,{"format":395,"sources":317,"lines":1626,"clones":604,"duplicatedLines":604,"percentage":604},768,{"format":602,"sources":317,"lines":704,"clones":604,"duplicatedLines":604,"percentage":604},[1629,1635,1650,1668,1675,1682,1691,1699,1708,1716],{"format":415,"lines":1090,"tokens":1441,"copies":310,"first":1630,"others":1631,"excerpt":1633},{"name":1443,"start":425,"end":1444},[1632],{"name":1447,"start":425,"end":1444},{"lines":1634,"total":1090},[1450,1451,1452,1453,1454,1455,1456,1457,1458,1459],{"format":415,"lines":368,"tokens":1567,"copies":310,"first":1636,"others":1637,"excerpt":1639},{"name":1569,"start":317,"end":368},[1638],{"name":1572,"start":310,"end":1573},{"lines":1640,"total":368},[1641,1642,1643,1644,483,1645,1646,1647,1648,1649],"import { hash } from \"node:crypto\";","import { isAbsolute, posix } from \"node:path\";","import type { Finding } from \".\u002Fmodels.js\";","import { isWindowsUnsafePathComponent } from \".\u002Fwindows-path.js\";","export class SealedContractError extends Error {","  constructor(message: string, options?: ErrorOptions) {","    super(message, options);","    this.name = new.target.name;","  }",{"format":415,"lines":1427,"tokens":1651,"copies":310,"first":1652,"others":1654,"excerpt":1658},268,{"name":1653,"start":317,"end":1427},"plugins\u002Fcodex-security\u002Fmcp-app\u002Fsrc\u002Fwindows-path.ts",[1655],{"name":1656,"start":310,"end":1657},"sdk\u002Ftypescript\u002Fsrc\u002Fwindows-path.ts",55,{"lines":1659,"total":1427},[1660,483,1661,1662,483,1663,1664,1665,1666,1667],"import { parse, toNamespacedPath } from \"node:path\";","\u002F\u002F SQLite's default win32 VFS allows MAX_PATH * 4 UTF-8 bytes, including room for \"-journal\".","const SQLITE_WINDOWS_MAX_FILENAME_BYTES = 260 * 4 - 8;","export function sqliteFilename(path: string): string {","  \u002F\u002F Ordinary paths also preserve Win32 handling of device names and trailing spaces or dots.","  if (","    process.platform !== \"win32\" ||","    path.length + 8 \u003C 260 ||",{"format":415,"lines":403,"tokens":469,"copies":310,"first":1669,"others":1671},{"name":1670,"start":317,"end":403},"plugins\u002Fcodex-security\u002Fmcp-app\u002Fsrc\u002Fexecutable-path.ts",[1672],{"name":1673,"start":310,"end":1674},"sdk\u002Ftypescript\u002Fsrc\u002Fexecutable-path.ts",48,{"format":415,"lines":643,"tokens":1676,"copies":310,"first":1677,"others":1679},184,{"name":1678,"start":317,"end":643},"plugins\u002Fcodex-security\u002Fmcp-app\u002Fsrc\u002Fworkbench-arguments.ts",[1680],{"name":1681,"start":310,"end":478},"sdk\u002Ftypescript\u002Fsrc\u002Fworkbench-arguments.ts",{"format":415,"lines":734,"tokens":416,"copies":425,"first":1683,"others":1685},{"name":1443,"start":1577,"end":1684},225,[1686,1688],{"name":1443,"start":928,"end":1687},237,{"name":1443,"start":1689,"end":1690},238,249,{"format":415,"lines":398,"tokens":1692,"copies":310,"first":1693,"others":1696},109,{"name":1694,"start":310,"end":1695},"plugins\u002Fcodex-security\u002Fmcp-app\u002Fsrc\u002Fdeep-scan-settings.ts",28,[1697],{"name":1698,"start":734,"end":1267},"sdk\u002Ftypescript\u002Fsrc\u002Fdeep-scan-defaults.ts",{"format":408,"lines":255,"tokens":361,"copies":310,"first":1700,"others":1704},{"name":1701,"start":1702,"end":1703},"plugins\u002Fcodex-security\u002Fscripts\u002Fworkbench_db.py",1991,1999,[1705],{"name":1701,"start":1706,"end":1707},2079,2087,{"format":408,"lines":598,"tokens":361,"copies":310,"first":1709,"others":1713},{"name":1710,"start":1711,"end":1712},"plugins\u002Fcodex-security\u002Fscripts\u002Fworkbench_scan_history.py",789,796,[1714],{"name":1710,"start":378,"end":1715},976,{"format":415,"lines":598,"tokens":1717,"copies":310,"first":1718,"others":1721},71,{"name":1719,"start":1075,"end":1720},"evals\u002Ftriage-finding\u002Fscripts\u002Ftest-triage-provider.mts",1204,[1722],{"name":1719,"start":1723,"end":1724},1419,1426,{"files":604,"minified":604,"sample":1726},[],{"score":452,"grade":296,"size":1728,"dimensions":1731},{"lines":1729,"files":1730,"class":753},571840,1189,[1732,1739,1745],{"id":756,"source":757,"value":1733,"adjusted":1733,"lines":1734,"halfLife":760,"formats":1735,"excluded":1737,"weight":317,"score":1738},1.8,10369,[415,408,374,1437,367,395,602,1736,764],"docker",[766,388,767],86.2,{"id":770,"source":757,"value":1740,"adjusted":1740,"lines":1741,"halfLife":773,"coverage":1742,"weight":1743,"score":1744},3.3,18941,99.3,0.993,73.5,{"id":778,"source":757,"value":1746,"adjusted":1747,"lines":1748,"halfLife":782,"weight":317,"score":1749},77.6,77.4,443508,34.2,{"total":1751,"mean":1752,"files":1753},80531,67.7,[1754,1759,1763,1768,1773,1778,1783,1788,1793,1798],{"path":1755,"complexity":1756,"lines":1757,"bytes":1758},"sdk\u002Ftypescript\u002Fsrc\u002Fcli.ts",2811,13714,493239,{"path":1479,"complexity":1760,"lines":1761,"bytes":1762},2627,19751,716110,{"path":1764,"complexity":1765,"lines":1766,"bytes":1767},"sdk\u002Ftypescript\u002Fsrc\u002Fapi.ts",1470,7847,279132,{"path":1769,"complexity":1770,"lines":1771,"bytes":1772},"plugins\u002Fcodex-security\u002Fscripts\u002Fworkbench\u002Fretained_coverage.py",1287,3193,148411,{"path":1774,"complexity":1775,"lines":1776,"bytes":1777},"sdk\u002Ftypescript\u002Fsrc\u002Fcost.ts",1235,4159,148628,{"path":1779,"complexity":1780,"lines":1781,"bytes":1782},"sdk\u002Ftypescript\u002Fsrc\u002Fruntime.ts",1064,4826,158509,{"path":1784,"complexity":1785,"lines":1786,"bytes":1787},"plugins\u002Fcodex-security\u002Fmcp-app\u002Fsrc\u002Fartifact-scan-draft.ts",1048,3524,118549,{"path":1789,"complexity":1790,"lines":1791,"bytes":1792},"plugins\u002Fcodex-security\u002Fscripts\u002Ffinalize_scan_contract.py",949,3471,147094,{"path":1794,"complexity":1795,"lines":1796,"bytes":1797},"sdk\u002Ftypescript\u002Ftests-ts\u002Fexternal-findings-publish.test.ts",805,9281,327460,{"path":1799,"complexity":1800,"lines":1801,"bytes":1802},"sdk\u002Ftypescript\u002Ftests-ts\u002Fcost.test.ts",696,7504,244915,{"percentage":1804,"findings":338,"files":1026,"byCategory":1805,"largest":1810},3.34,[1806,1807,1809],{"category":841,"count":1573},{"category":844,"count":1808},65,{"category":846,"count":864},[1811,1814,1817,1820,1822,1825,1828,1831,1834,1837],{"category":841,"path":1812,"name":483,"line":317,"lines":1813},"plugins\u002Fcodex-security\u002Fmcp-app\u002Fsrc\u002Fsealed-contract.ts",1151,{"category":841,"path":1815,"name":483,"line":317,"lines":1816},"plugins\u002Fcodex-security\u002Fnative\u002Fproof-process-windows.mts",1056,{"category":841,"path":1818,"name":483,"line":317,"lines":1819},"evals\u002Fsecret-discovery\u002Ftest_discovery.mts",1013,{"category":841,"path":1821,"name":483,"line":317,"lines":1626},"sdk\u002Ftypescript\u002Fsrc\u002Fpatch-tui.tsx",{"category":841,"path":1823,"name":483,"line":317,"lines":1824},"evals\u002Fsecret-discovery\u002Ftest_runtime.mts",758,{"category":841,"path":1826,"name":483,"line":317,"lines":1827},"evals\u002Fstandard-time-budget\u002Ftest_grading.mts",553,{"category":841,"path":1829,"name":483,"line":317,"lines":1830},"plugins\u002Fcodex-security\u002Fnative\u002Fproof-windows.mts",440,{"category":841,"path":1832,"name":483,"line":317,"lines":1833},"plugins\u002Fcodex-security\u002Fmcp-app\u002Fsrc\u002Fworkbench\u002Flocal-dedupe.ts",391,{"category":841,"path":1835,"name":483,"line":317,"lines":1836},"plugins\u002Fcodex-security\u002Fnative\u002Fproof-windows-wide.mts",379,{"category":841,"path":1838,"name":483,"line":317,"lines":1839},"evals\u002Fsecret-discovery\u002Fharness.mts",373,{"name":294,"url":1841,"description":1842,"language":316,"stars":1843,"starsToday":935,"defaultBranch":339,"headSha":1844,"durationMs":1845,"total":1846,"formats":1851,"topClones":1901,"code":2093,"health":2297,"complexity":2319,"deadCode":2369},"https:\u002F\u002Fgithub.com\u002Fwe-promise\u002Fsure","The personal finance app for everyone (by everyone)",14860,"c6f717055edfbe929a112a03d5b64413822812f7",3169,{"sources":1847,"lines":319,"tokens":1848,"clones":318,"duplicatedLines":320,"duplicatedTokens":1849,"percentage":321,"percentageTokens":1850},6593,4828216,261046,5.41,[1852,1859,1866,1872,1878,1883,1887,1891,1895,1898],{"format":1853,"sources":1854,"lines":1855,"clones":1856,"duplicatedLines":1857,"percentage":1858},"ruby",2949,522171,1841,23046,4.41,{"format":1860,"sources":1861,"lines":1862,"clones":1863,"duplicatedLines":1864,"percentage":1865},"erb",817,49392,663,6973,14.12,{"format":402,"sources":1867,"lines":1868,"clones":1869,"duplicatedLines":1870,"percentage":1871},2287,241559,621,16971,7.03,{"format":1873,"sources":1874,"lines":1875,"clones":940,"duplicatedLines":1876,"percentage":1877},"dart",154,36710,872,2.38,{"format":374,"sources":1879,"lines":1880,"clones":391,"duplicatedLines":1881,"percentage":1882},168,21853,980,4.48,{"format":766,"sources":640,"lines":1884,"clones":473,"duplicatedLines":1885,"percentage":1886},1294,415,32.07,{"format":381,"sources":1717,"lines":1888,"clones":418,"duplicatedLines":1889,"percentage":1890},16478,94,0.57,{"format":360,"sources":587,"lines":1892,"clones":310,"duplicatedLines":1893,"percentage":1894},2125,42,1.98,{"format":367,"sources":1110,"lines":1896,"clones":317,"duplicatedLines":310,"percentage":1897},1845,0.11,{"format":925,"sources":734,"lines":1899,"clones":317,"duplicatedLines":255,"percentage":1900},1827,0.49,[1902,1922,1962,1994,2003,2020,2038,2058,2078,2086],{"format":374,"lines":1903,"tokens":1904,"copies":310,"first":1905,"others":1909,"excerpt":1914},255,1493,{"name":1906,"start":1907,"end":1908},"app\u002Fjavascript\u002Fcontrollers\u002Fpreview_sankey_chart_controller.js",364,618,[1910],{"name":1911,"start":1912,"end":1913},"app\u002Fjavascript\u002Fcontrollers\u002Fsankey_chart_controller.js",303,557,{"lines":1915,"total":1903},[1916,446,483,1917,1918,1919,483,1920,1921,483],"  return `${this.gradientPrefix}-link-gradient-${link.source.index}-${link.target.index}-${index}`;","#colorWithOpacity(nodeColor, opacity = 0.1) {","  const defaultColor = this.constructor.DEFAULT_COLOR;","  let colorStr = nodeColor || defaultColor;","  \u002F\u002F Map CSS variables to hex values for d3 color manipulation","  colorStr = this.constructor.CSS_VAR_MAP[colorStr] || colorStr;",{"format":1853,"lines":255,"tokens":1223,"copies":478,"first":1923,"others":1925,"excerpt":1942,"excerptSecond":1953},{"name":1924,"start":537,"end":411},"spec\u002Frequests\u002Fapi\u002Fv1\u002Faccount_statements_spec.rb",[1926,1928,1930,1932,1934,1936,1938,1940],{"name":1927,"start":537,"end":587},"spec\u002Frequests\u002Fapi\u002Fv1\u002Faccounts_spec.rb",{"name":1929,"start":537,"end":587},"spec\u002Frequests\u002Fapi\u002Fv1\u002Fbalance_sheet_spec.rb",{"name":1931,"start":537,"end":587},"spec\u002Frequests\u002Fapi\u002Fv1\u002Fbalances_spec.rb",{"name":1933,"start":537,"end":587},"spec\u002Frequests\u002Fapi\u002Fv1\u002Fbudget_categories_spec.rb",{"name":1935,"start":537,"end":587},"spec\u002Frequests\u002Fapi\u002Fv1\u002Fbudgets_spec.rb",{"name":1937,"start":537,"end":587},"spec\u002Frequests\u002Fapi\u002Fv1\u002Fcash_flow_spec.rb",{"name":1939,"start":537,"end":587},"spec\u002Frequests\u002Fapi\u002Fv1\u002Fcategories_spec.rb",{"name":1941,"start":537,"end":587},"spec\u002Frequests\u002Fapi\u002Fv1\u002Fchats_spec.rb",{"lines":1943,"total":255},[1944,1945,1946,1947,1948,1949,1950,1951,1952],"RSpec.describe 'API V1 Account Statements', type: :request do","  let(:family) do","    Family.create!(name: 'API Family', currency: 'USD', locale: 'en', date_format: '%m-%d-%Y')","  end","  let(:user) do","    family.users.create!(","      email: 'api-user@example.com',","      password: 'password123',","      password_confirmation: 'password123',",{"lines":1954,"total":409},[1955,1945,1956,1957,1958,1959,1960,1961,1947,483],"RSpec.describe 'API V1 Accounts', type: :request do","    Family.create!(","      name: 'API Family',","      currency: 'USD',","      locale: 'en',","      date_format: '%m-%d-%Y'","    )",{"format":1853,"lines":842,"tokens":685,"copies":418,"first":1963,"others":1966,"excerpt":1984},{"name":1964,"start":705,"end":1965},"test\u002Fmodels\u002Fkraken_item\u002Fimporter_test.rb",138,[1967,1969,1971,1973,1975,1977,1979,1982],{"name":1964,"start":1968,"end":1531},153,{"name":1964,"start":1072,"end":1970},190,{"name":1964,"start":1972,"end":1042},211,{"name":1964,"start":1974,"end":1690},239,{"name":1964,"start":1976,"end":1335},313,{"name":1964,"start":1978,"end":1523},376,{"name":1964,"start":1980,"end":1981},404,414,{"name":1964,"start":1983,"end":1414},432,{"lines":1985,"total":842},[1986,1987,1988,1989,1990,1991,1992,440,1989,1993],"@provider.stubs(:get_asset_info).returns(asset_metadata)","@provider.stubs(:get_extended_balance).returns(","  \"ZUSD\" => { \"balance\" => \"50.0\", \"credit\" => \"0\", \"credit_used\" => \"0\", \"hold_trade\" => \"0\" }",")","@provider.stubs(:get_earn_allocations).returns(","  \"items\" => [","    { \"native_asset\" => \"XXBT\", \"amount_allocated\" => { \"total\" => { \"native\" => \"2.0\" } } }","@provider.stubs(:get_ticker).with(\"XBTUSD\").returns(\"XXBTZUSD\" => { \"c\" => [ \"50000.00\" ] })",{"format":402,"lines":1995,"tokens":804,"copies":425,"first":1996,"others":1998},133,{"name":1997,"start":310,"end":674},"config\u002Flocales\u002Fdefaults\u002Fes-AR.yml",[1999,2001],{"name":2000,"start":310,"end":674},"config\u002Flocales\u002Fdefaults\u002Fes-CR.yml",{"name":2002,"start":310,"end":674},"config\u002Flocales\u002Fdefaults\u002Fes-NI.yml",{"format":1853,"lines":375,"tokens":2004,"copies":734,"first":2005,"others":2006},95,{"name":1927,"start":658,"end":1112},[2007,2008,2009,2010,2012,2014,2016,2018],{"name":1929,"start":658,"end":1112},{"name":1937,"start":658,"end":1112},{"name":1939,"start":658,"end":1112},{"name":2011,"start":658,"end":1112},"spec\u002Frequests\u002Fapi\u002Fv1\u002Fholdings_spec.rb",{"name":2013,"start":658,"end":1112},"spec\u002Frequests\u002Fapi\u002Fv1\u002Fmerchants_spec.rb",{"name":2015,"start":658,"end":1112},"spec\u002Frequests\u002Fapi\u002Fv1\u002Frecurring_transactions_spec.rb",{"name":2017,"start":658,"end":1112},"spec\u002Frequests\u002Fapi\u002Fv1\u002Ftags_spec.rb",{"name":2019,"start":658,"end":1112},"spec\u002Frequests\u002Fapi\u002Fv1\u002Ftrades_spec.rb",{"format":1853,"lines":704,"tokens":291,"copies":595,"first":2021,"others":2023},{"name":1927,"start":384,"end":2022},88,[2024,2026,2027,2029,2030,2031,2033,2036],{"name":1931,"start":2025,"end":712},73,{"name":1933,"start":936,"end":361},{"name":1935,"start":291,"end":2028},67,{"name":1939,"start":1412,"end":940},{"name":2011,"start":936,"end":361},{"name":2032,"start":370,"end":2004},"spec\u002Frequests\u002Fapi\u002Fv1\u002Fimports_spec.rb",{"name":2015,"start":2034,"end":2035},78,84,{"name":2037,"start":1408,"end":384},"spec\u002Frequests\u002Fapi\u002Fv1\u002Frejected_transfers_spec.rb",{"format":1860,"lines":658,"tokens":573,"copies":1110,"first":2039,"others":2041},{"name":2040,"start":639,"end":1267},"app\u002Fviews\u002Fakahu_items\u002F_akahu_item.html.erb",[2042,2044,2046,2048,2050,2052,2054,2056],{"name":2043,"start":289,"end":492},"app\u002Fviews\u002Fbrex_items\u002F_brex_item.html.erb",{"name":2045,"start":1112,"end":864},"app\u002Fviews\u002Ffio_items\u002F_fio_item.html.erb",{"name":2047,"start":1112,"end":864},"app\u002Fviews\u002Fibkr_items\u002F_ibkr_item.html.erb",{"name":2049,"start":1112,"end":864},"app\u002Fviews\u002Findexa_capital_items\u002F_indexa_capital_item.html.erb",{"name":2051,"start":639,"end":1267},"app\u002Fviews\u002Flunchflow_items\u002F_lunchflow_item.html.erb",{"name":2053,"start":639,"end":1267},"app\u002Fviews\u002Fmercury_items\u002F_mercury_item.html.erb",{"name":2055,"start":639,"end":1267},"app\u002Fviews\u002Fmonobank_items\u002F_monobank_item.html.erb",{"name":2057,"start":398,"end":634},"app\u002Fviews\u002Fquestrade_items\u002F_questrade_item.html.erb",{"format":1860,"lines":704,"tokens":1427,"copies":1110,"first":2059,"others":2061},{"name":2060,"start":317,"end":704},"app\u002Fviews\u002Fakahu_items\u002Fselect_accounts.html.erb",[2062,2064,2066,2068,2070,2072,2074,2076],{"name":2063,"start":310,"end":704},"app\u002Fviews\u002Fbrex_items\u002F_api_error.html.erb",{"name":2065,"start":317,"end":658},"app\u002Fviews\u002Fbrex_items\u002F_setup_required.html.erb",{"name":2067,"start":317,"end":704},"app\u002Fviews\u002Fbrex_items\u002Fselect_accounts.html.erb",{"name":2069,"start":310,"end":704},"app\u002Fviews\u002Flunchflow_items\u002F_api_error.html.erb",{"name":2071,"start":317,"end":658},"app\u002Fviews\u002Flunchflow_items\u002F_setup_required.html.erb",{"name":2073,"start":317,"end":704},"app\u002Fviews\u002Flunchflow_items\u002Fselect_accounts.html.erb",{"name":2075,"start":317,"end":658},"app\u002Fviews\u002Fmercury_items\u002F_setup_required.html.erb",{"name":2077,"start":317,"end":704},"app\u002Fviews\u002Fmercury_items\u002Fselect_accounts.html.erb",{"format":402,"lines":338,"tokens":2079,"copies":310,"first":2080,"others":2083},814,{"name":2081,"start":310,"end":2082},"config\u002Flocales\u002Fdefaults\u002Fel-CY.yml",216,[2084],{"name":2085,"start":310,"end":2082},"config\u002Flocales\u002Fdefaults\u002Fel.yml",{"format":402,"lines":338,"tokens":2087,"copies":310,"first":2088,"others":2090},795,{"name":2089,"start":310,"end":2082},"config\u002Flocales\u002Fdefaults\u002Fen-AU.yml",[2091],{"name":2092,"start":310,"end":2082},"config\u002Flocales\u002Fdefaults\u002Fen-NZ.yml",{"sources":2094,"lines":2095,"tokens":2096,"clones":1217,"duplicatedLines":2097,"duplicatedTokens":2098,"percentage":2099,"percentageTokens":2100,"formats":2101,"topClones":2124,"generated":2286},1967,279310,1300860,8309,43366,2.97,3.33,[2102,2108,2111,2116,2118,2120,2121,2122],{"format":1853,"sources":2103,"lines":2104,"clones":2105,"duplicatedLines":2106,"percentage":2107},1679,226842,475,6717,2.96,{"format":1873,"sources":1259,"lines":2109,"clones":1427,"duplicatedLines":2110,"percentage":929},29574,646,{"format":374,"sources":2112,"lines":2113,"clones":582,"duplicatedLines":2114,"percentage":2115},155,19778,946,4.78,{"format":1437,"sources":734,"lines":2117,"clones":604,"duplicatedLines":604,"percentage":604},1364,{"format":367,"sources":537,"lines":2119,"clones":604,"duplicatedLines":604,"percentage":604},1243,{"format":415,"sources":537,"lines":718,"clones":604,"duplicatedLines":604,"percentage":604},{"format":763,"sources":310,"lines":714,"clones":604,"duplicatedLines":604,"percentage":604},{"format":2123,"sources":317,"lines":411,"clones":604,"duplicatedLines":604,"percentage":604},"swift",[2125,2131,2150,2180,2189,2201,2222,2234,2246,2267],{"format":374,"lines":1903,"tokens":1904,"copies":310,"first":2126,"others":2127,"excerpt":2129},{"name":1906,"start":1907,"end":1908},[2128],{"name":1911,"start":1912,"end":1913},{"lines":2130,"total":1903},[1916,446,483,1917,1918,1919,483,1920,1921,483],{"format":1853,"lines":1223,"tokens":2132,"copies":425,"first":2133,"others":2136,"excerpt":2141},355,{"name":2134,"start":370,"end":2135},"app\u002Fmodels\u002Ffio_item\u002Fsyncer.rb",146,[2137,2139],{"name":2138,"start":2035,"end":1201},"app\u002Fmodels\u002Fmonobank_item\u002Fsyncer.rb",{"name":2140,"start":2035,"end":1201},"app\u002Fmodels\u002Fup_item\u002Fsyncer.rb",{"lines":2142,"total":1223},[2143,2144,2145,483,2146,483,2147,2148,2149,483],"def perform_post_sync","  # no-op","end","private","  # Raise a SyncError if a single result hash indicates failure.","  def raise_if_failed_result!(result, stage:)","    return unless failed_result?(result)",{"format":1853,"lines":411,"tokens":1657,"copies":411,"first":2151,"others":2153,"excerpt":2170},{"name":2152,"start":418,"end":870},"app\u002Fmodels\u002Fbinance_item\u002Funlinking.rb",[2154,2156,2158,2160,2162,2164,2166,2168],{"name":2155,"start":409,"end":398},"app\u002Fmodels\u002Fcoinbase_item\u002Funlinking.rb",{"name":2157,"start":595,"end":1695},"app\u002Fmodels\u002Fcoinstats_item\u002Funlinking.rb",{"name":2159,"start":409,"end":398},"app\u002Fmodels\u002Ffio_item\u002Funlinking.rb",{"name":2161,"start":418,"end":870},"app\u002Fmodels\u002Fibkr_item\u002Funlinking.rb",{"name":2163,"start":409,"end":398},"app\u002Fmodels\u002Findexa_capital_item\u002Funlinking.rb",{"name":2165,"start":409,"end":398},"app\u002Fmodels\u002Fmercury_item\u002Funlinking.rb",{"name":2167,"start":409,"end":398},"app\u002Fmodels\u002Fquestrade_item\u002Funlinking.rb",{"name":2169,"start":409,"end":398},"app\u002Fmodels\u002Fredbark_item\u002Funlinking.rb",{"lines":2171,"total":411},[2172,2173,2174,2175,2176,2177,446,2178,483,2179],"links = AccountProvider.where(provider_type: BinanceAccount.name, provider_id: provider_account.id).to_a","link_ids = links.map(&:id)","result = {","  provider_account_id: provider_account.id,","  name: provider_account.name,","  provider_link_ids: link_ids","results \u003C\u003C result","next if dry_run",{"format":1853,"lines":478,"tokens":1097,"copies":658,"first":2181,"others":2182},{"name":2155,"start":409,"end":864},[2183,2184,2185,2186,2187],{"name":2157,"start":595,"end":635},{"name":2159,"start":409,"end":864},{"name":2163,"start":409,"end":864},{"name":2165,"start":409,"end":864},{"name":2188,"start":409,"end":864},"app\u002Fmodels\u002Fsnaptrade_item\u002Funlinking.rb",{"format":374,"lines":2190,"tokens":2191,"copies":310,"first":2192,"others":2196},77,477,{"name":2193,"start":2194,"end":2195},"app\u002Fjavascript\u002Fcontrollers\u002Fmerchant_select_controller.js",274,350,[2197],{"name":2198,"start":2199,"end":2200},"app\u002Fjavascript\u002Fcontrollers\u002Ftag_select_controller.js",370,446,{"format":1853,"lines":658,"tokens":2202,"copies":255,"first":2203,"others":2205},59,{"name":2204,"start":478,"end":473},"app\u002Fmodels\u002Fakahu_account.rb",[2206,2208,2210,2212,2214,2216,2218,2220],{"name":2207,"start":411,"end":673},"app\u002Fmodels\u002Fcoinbase_account.rb",{"name":2209,"start":927,"end":593},"app\u002Fmodels\u002Ffio_account.rb",{"name":2211,"start":1238,"end":587},"app\u002Fmodels\u002Fibkr_account.rb",{"name":2213,"start":1110,"end":870},"app\u002Fmodels\u002Findexa_capital_account.rb",{"name":2215,"start":1112,"end":864},"app\u002Fmodels\u002Fmonobank_account.rb",{"name":2217,"start":409,"end":589},"app\u002Fmodels\u002Fsharesight_account.rb",{"name":2219,"start":411,"end":673},"app\u002Fmodels\u002Ftruelayer_account.rb",{"name":2221,"start":723,"end":927},"app\u002Fmodels\u002Fup_account.rb",{"format":1853,"lines":478,"tokens":1259,"copies":537,"first":2223,"others":2225},{"name":2224,"start":303,"end":1695},"db\u002Fmigrate\u002F20251126094446_create_enable_banking_items_and_accounts.rb",[2226,2228,2230,2232],{"name":2227,"start":303,"end":1695},"db\u002Fmigrate\u002F20251221060111_create_coinstats_items_and_accounts.rb",{"name":2229,"start":303,"end":1695},"db\u002Fmigrate\u002F20260109220800_create_sophtron_items_and_accounts.rb",{"name":2231,"start":303,"end":1695},"db\u002Fmigrate\u002F20260121101345_create_mercury_items_and_accounts.rb",{"name":2233,"start":658,"end":473},"db\u002Fmigrate\u002F20260205110328_create_indexa_capital_items_and_accounts.rb",{"format":1853,"lines":635,"tokens":1972,"copies":425,"first":2235,"others":2238},{"name":2236,"start":2132,"end":2237},"app\u002Fcontrollers\u002Ffio_items_controller.rb",394,[2239,2242],{"name":2240,"start":2241,"end":1062},"app\u002Fcontrollers\u002Fmonobank_items_controller.rb",360,{"name":2243,"start":2244,"end":2245},"app\u002Fcontrollers\u002Fup_items_controller.rb",372,411,{"format":1853,"lines":478,"tokens":1429,"copies":704,"first":2247,"others":2251},{"name":2248,"start":2249,"end":2250},"app\u002Fmodels\u002Fprovider\u002Fcoinbase_adapter.rb",80,104,[2252,2255,2257,2259,2262,2265],{"name":2253,"start":1408,"end":2254},"app\u002Fmodels\u002Fprovider\u002Findexa_capital_adapter.rb",100,{"name":2256,"start":384,"end":419},"app\u002Fmodels\u002Fprovider\u002Flunchflow_adapter.rb",{"name":2258,"start":2250,"end":705},"app\u002Fmodels\u002Fprovider\u002Fmercury_adapter.rb",{"name":2260,"start":712,"end":2261},"app\u002Fmodels\u002Fprovider\u002Fquestrade_adapter.rb",103,{"name":2263,"start":631,"end":2264},"app\u002Fmodels\u002Fprovider\u002Fredbark_adapter.rb",98,{"name":2266,"start":2034,"end":662},"app\u002Fmodels\u002Fprovider\u002Fsnaptrade_adapter.rb",{"format":1853,"lines":411,"tokens":416,"copies":704,"first":2268,"others":2270},{"name":2269,"start":361,"end":1111},"app\u002Fmodels\u002Fbrex_item.rb",[2271,2273,2276,2279,2281,2284],{"name":2272,"start":712,"end":565},"app\u002Fmodels\u002Fcoinbase_item.rb",{"name":2274,"start":936,"end":2275},"app\u002Fmodels\u002Fcoinstats_item.rb",81,{"name":2277,"start":2278,"end":479},"app\u002Fmodels\u002Fenable_banking_item.rb",244,{"name":2280,"start":361,"end":1111},"app\u002Fmodels\u002Findexa_capital_item.rb",{"name":2282,"start":2283,"end":2249},"app\u002Fmodels\u002Fmercury_item.rb",68,{"name":2285,"start":2004,"end":709},"app\u002Fmodels\u002Fwise_item.rb",{"files":255,"minified":604,"sample":2287},[2288,2289,2290,2291,2292,2293,2294,2295,2296],"app\u002Fmodels\u002Ftransaction\u002Fgrouper\u002Fby_merchant_or_name.rb","bin\u002Ftokens.mjs","db\u002Fmigrate\u002F20251102143510_remove_duplicate_account_providers_index.rb","db\u002Fschema.rb","mobile\u002Fandroid\u002Fapp\u002Fsrc\u002Fmain\u002Fjava\u002Fio\u002Fflutter\u002Fplugins\u002FGeneratedPluginRegistrant.java","mobile\u002Fios\u002FRunner\u002FGeneratedPluginRegistrant.h","mobile\u002Fios\u002FRunner\u002FGeneratedPluginRegistrant.m","mobile\u002Flib\u002Ftheme\u002Fsure_tokens.dart","spec\u002Fspec_helper.rb",{"score":295,"grade":296,"size":2298,"dimensions":2301,"skipped":2316},{"lines":2299,"files":2300,"class":753},583829,3298,[2302,2311],{"id":756,"source":757,"value":2303,"adjusted":2303,"lines":2304,"halfLife":760,"formats":2305,"excluded":2309,"weight":317,"score":2310},4.3,24890,[1853,1873,374,1437,367,415,763,1736,2306,2307,2308,2123],"objectivec","java","c-header",[766,388,767],70.6,{"id":778,"source":757,"value":2312,"adjusted":2313,"lines":2314,"halfLife":782,"weight":317,"score":2315},33.8,33.7,197243,62.6,[2317],{"id":770,"reason":2318},"the languages dead code reads are under 5% of the code",{"total":2320,"mean":2321,"files":2322},78268,23.7,[2323,2328,2333,2337,2342,2347,2351,2355,2360,2364],{"path":2324,"complexity":2325,"lines":2326,"bytes":2327},"app\u002Fmodels\u002Fwise_item\u002Fimporter.rb",866,2037,97127,{"path":2329,"complexity":2330,"lines":2331,"bytes":2332},"app\u002Fmodels\u002Ffamily\u002Fdata_importer.rb",578,1781,68470,{"path":2334,"complexity":692,"lines":2335,"bytes":2336},"app\u002Fmodels\u002Fprovider\u002Ftrade_republic_client.rb",1940,80327,{"path":2338,"complexity":2339,"lines":2340,"bytes":2341},"app\u002Fmodels\u002Fsimplefin_item\u002Fimporter.rb",473,1556,68808,{"path":2343,"complexity":2344,"lines":2345,"bytes":2346},"app\u002Fmodels\u002Ftrade_republic_account\u002Factivities_processor.rb",441,1096,46380,{"path":2348,"complexity":1090,"lines":2349,"bytes":2350},"app\u002Fmodels\u002Fgoal.rb",1492,66402,{"path":2352,"complexity":678,"lines":2353,"bytes":2354},"app\u002Fmodels\u002Fuser.rb",1120,40656,{"path":2356,"complexity":2357,"lines":2358,"bytes":2359},"app\u002Fcontrollers\u002Fsophtron_items_controller.rb",420,1222,44448,{"path":2361,"complexity":1321,"lines":2362,"bytes":2363},"app\u002Fmodels\u002Fenable_banking_item\u002Fimporter.rb",1175,55255,{"path":2365,"complexity":2366,"lines":2367,"bytes":2368},"app\u002Fmodels\u002Faccount\u002Fprovider_import_adapter.rb",342,1233,59378,{"percentage":2370,"findings":2371,"files":1404,"byCategory":2372,"largest":2375},74.59,140,[2373,2374],{"category":841,"count":659},{"category":844,"count":317},[2376,2378,2379,2382,2385,2387,2390,2392,2394,2397],{"category":841,"path":1906,"name":483,"line":317,"lines":2377},750,{"category":841,"path":1911,"name":483,"line":317,"lines":1218},{"category":841,"path":2380,"name":483,"line":317,"lines":2381},"app\u002Fjavascript\u002Fcontrollers\u002Fgoal_projection_chart_controller.js",662,{"category":841,"path":2383,"name":483,"line":317,"lines":2384},"app\u002Fjavascript\u002Fcontrollers\u002Floan_payoff_chart_controller.js",655,{"category":841,"path":2198,"name":483,"line":317,"lines":2386},485,{"category":841,"path":2388,"name":483,"line":317,"lines":2389},"app\u002Fjavascript\u002Fcontrollers\u002Fselect_controller.js",413,{"category":841,"path":2193,"name":483,"line":317,"lines":2391},380,{"category":841,"path":2393,"name":483,"line":317,"lines":2244},"app\u002Fjavascript\u002Fcontrollers\u002Fcategory_select_controller.js",{"category":841,"path":2395,"name":483,"line":317,"lines":2396},"app\u002Fjavascript\u002Fcontrollers\u002Fdonut_chart_controller.js",351,{"category":841,"path":2398,"name":483,"line":317,"lines":2399},"app\u002Fjavascript\u002Fcontrollers\u002Fspending_chart_controller.js",330,{"name":275,"url":2401,"description":2402,"language":302,"stars":2403,"starsToday":1259,"defaultBranch":339,"headSha":2404,"durationMs":2405,"total":2406,"formats":2413,"topClones":2459,"code":2645,"health":2784,"complexity":2806,"deadCode":2858},"https:\u002F\u002Fgithub.com\u002Fbacknotprop\u002Fplannotator","The workspace to stay in the loop and on top of agents - shape, decide, plan, annotate, review code, share with team, and send all feedback to agents with one click. ",10536,"4638c7a9ccc2b63c7dfa7f61322ec64dc0571c5c",6135,{"sources":2407,"lines":2408,"tokens":2409,"clones":276,"duplicatedLines":2410,"duplicatedTokens":2411,"percentage":277,"percentageTokens":2412},5941,1498079,12767316,147059,925885,7.25,[2414,2420,2426,2432,2437,2441,2445,2449,2452,2455],{"format":415,"sources":2415,"lines":2416,"clones":2417,"duplicatedLines":2418,"percentage":2419},3681,917108,5061,55863,6.09,{"format":395,"sources":2421,"lines":2422,"clones":2423,"duplicatedLines":2424,"percentage":2425},1368,414506,3906,44534,10.74,{"format":360,"sources":2427,"lines":2428,"clones":2429,"duplicatedLines":2430,"percentage":2431},167,54751,1305,43743,79.89,{"format":925,"sources":368,"lines":2433,"clones":2434,"duplicatedLines":2435,"percentage":2436},19267,92,1211,6.29,{"format":402,"sources":916,"lines":2438,"clones":782,"duplicatedLines":2439,"percentage":2440},8300,699,8.42,{"format":381,"sources":2442,"lines":2443,"clones":639,"duplicatedLines":2357,"percentage":2444},258,42437,0.99,{"format":766,"sources":289,"lines":2446,"clones":593,"duplicatedLines":2447,"percentage":2448},4076,227,5.57,{"format":367,"sources":2249,"lines":2450,"clones":418,"duplicatedLines":1259,"percentage":2451},10236,1.06,{"format":1103,"sources":473,"lines":2453,"clones":418,"duplicatedLines":1111,"percentage":2454},2758,3.15,{"format":374,"sources":1112,"lines":2456,"clones":598,"duplicatedLines":2457,"percentage":2458},5943,124,2.09,[2460,2481,2513,2532,2553,2561,2575,2590,2602,2625],{"format":415,"lines":2461,"tokens":2462,"copies":310,"first":2463,"others":2466,"excerpt":2470},1986,10121,{"name":2464,"start":842,"end":2465},"apps\u002Fhook\u002Fhooks\u002Fmod\u002Finbox-contract.ts",1996,[2467],{"name":2468,"start":573,"end":2469},"packages\u002Fshared\u002Finbox\u002Fconnection.ts",2041,{"lines":2471,"total":2461},[2472,483,2473,2474,2475,2476,2477,2478,2479,2480],"export const INBOX_TOOL_NAME = 'plannotator_inbox'","\u002F**"," * The Inbox MCP tools the agent tool may carry, in the order it lists them."," * Only those the running Inbox offers become actions; an Inbox without one"," * (an older binary) simply has no such action."," *\u002F","export const INBOX_TOOL_ACTIONS = [","  'send_message',","  'read_thread',",{"format":360,"lines":2482,"tokens":2483,"copies":643,"first":2484,"others":2486,"excerpt":2503},66,206,{"name":2485,"start":704,"end":932},"packages\u002Fshared\u002Finbox\u002Ffixtures\u002Fthread-state\u002Fv1\u002Fgen-seed-1001.json",[2487,2489,2491,2493,2495,2497,2499,2501],{"name":2488,"start":704,"end":932},"packages\u002Fshared\u002Finbox\u002Ffixtures\u002Fthread-state\u002Fv1\u002Fgen-seed-1002.json",{"name":2490,"start":704,"end":932},"packages\u002Fshared\u002Finbox\u002Ffixtures\u002Fthread-state\u002Fv1\u002Fgen-seed-1003.json",{"name":2492,"start":704,"end":932},"packages\u002Fshared\u002Finbox\u002Ffixtures\u002Fthread-state\u002Fv1\u002Fgen-seed-1004.json",{"name":2494,"start":704,"end":932},"packages\u002Fshared\u002Finbox\u002Ffixtures\u002Fthread-state\u002Fv1\u002Fgen-seed-1005.json",{"name":2496,"start":704,"end":932},"packages\u002Fshared\u002Finbox\u002Ffixtures\u002Fthread-state\u002Fv1\u002Fgen-seed-1006.json",{"name":2498,"start":704,"end":932},"packages\u002Fshared\u002Finbox\u002Ffixtures\u002Fthread-state\u002Fv1\u002Fgen-seed-1007.json",{"name":2500,"start":704,"end":932},"packages\u002Fshared\u002Finbox\u002Ffixtures\u002Fthread-state\u002Fv1\u002Fgen-seed-1008.json",{"name":2502,"start":704,"end":932},"packages\u002Fshared\u002Finbox\u002Ffixtures\u002Fthread-state\u002Fv1\u002Fgen-seed-1009.json",{"lines":2504,"total":2482},[2505,2506,2507,2508,441,2509,2510,460,2511,2512],"\"seed\": 1001,","\"clock\": {","  \"start\": \"2026-10-12T10:00:00.000Z\",","  \"step_ms\": 1000","\"known_violations\": [],","\"steps\": [","    \"event\": {","      \"type\": \"agent_message\",",{"format":415,"lines":2514,"tokens":2515,"copies":310,"first":2516,"others":2519,"excerpt":2523},885,4672,{"name":2517,"start":411,"end":2518},"apps\u002Fhook\u002Fhooks\u002Fmod\u002Ftool.ts",897,[2520],{"name":2521,"start":2283,"end":2522},"packages\u002Fshared\u002Fplannotator-tool.ts",952,{"lines":2524,"total":2514},[2525,483,2526,483,2527,2528,483,2529,2530,2531],"export const PLANNOTATOR_TOOL_NAME = 'plannotator'","export type PlannotatorToolAction = 'annotate' | 'review' | 'last' | 'list' | 'close'","\u002F** The actions that open a review page. *\u002F","export type PlannotatorToolOpenAction = 'annotate' | 'review' | 'last'","export interface PlannotatorToolInput {","  action: PlannotatorToolAction","  \u002F**",{"format":395,"lines":658,"tokens":2028,"copies":640,"first":2533,"others":2535},{"name":2534,"start":2034,"end":1239},"packages\u002Finbox\u002Fack.test.tsx",[2536,2538,2540,2542,2544,2547,2549,2551],{"name":2537,"start":384,"end":1434},"packages\u002Finbox\u002FactionNoteRefusal.test.tsx",{"name":2539,"start":2028,"end":932},"packages\u002Finbox\u002Farchived.test.tsx",{"name":2541,"start":1223,"end":1429},"packages\u002Finbox\u002FattachmentsHeader.test.tsx",{"name":2543,"start":2025,"end":2190},"packages\u002Finbox\u002Fcompose.test.tsx",{"name":2545,"start":2546,"end":1889},"packages\u002Finbox\u002FdecisionMode.test.tsx",90,{"name":2548,"start":631,"end":712},"packages\u002Finbox\u002FfileBack.test.tsx",{"name":2550,"start":520,"end":665},"packages\u002Finbox\u002FfirstRunNotifications.test.tsx",{"name":2552,"start":368,"end":857},"packages\u002Finbox\u002FfullScreenComposer.test.tsx",{"format":415,"lines":399,"tokens":2554,"copies":310,"first":2555,"others":2558},2370,{"name":2556,"start":587,"end":2557},"apps\u002Fpi-extension\u002FserverReview-draft-pr.test.ts",339,[2559],{"name":2560,"start":587,"end":2557},"packages\u002Fserver\u002Freview-draft-pr.test.ts",{"format":395,"lines":598,"tokens":2190,"copies":927,"first":2562,"others":2563},{"name":2534,"start":1110,"end":643},[2564,2565,2567,2568,2569,2570,2571,2573],{"name":2537,"start":734,"end":587},{"name":2566,"start":589,"end":398},"packages\u002Finbox\u002FclickToRefresh.test.tsx",{"name":2545,"start":587,"end":927},{"name":2548,"start":1110,"end":643},{"name":2550,"start":723,"end":1695},{"name":2552,"start":405,"end":473},{"name":2572,"start":411,"end":589},"packages\u002Finbox\u002FfullScreenThread.test.tsx",{"name":2574,"start":587,"end":927},"packages\u002Finbox\u002FlistDeltaWindow.test.tsx",{"format":395,"lines":595,"tokens":2576,"copies":255,"first":2577,"others":2578},186,{"name":2534,"start":289,"end":2202},[2579,2580,2581,2583,2584,2585,2586,2588],{"name":2537,"start":864,"end":1657},{"name":2539,"start":737,"end":2202},{"name":2582,"start":1427,"end":936},"packages\u002Finbox\u002FboardSend.test.tsx",{"name":2566,"start":389,"end":2028},{"name":2550,"start":712,"end":1889},{"name":2574,"start":916,"end":2482},{"name":2587,"start":916,"end":2482},"packages\u002Finbox\u002FpinnedThreads.test.tsx",{"name":2589,"start":582,"end":782},"packages\u002Finbox\u002FprojectLabelHeld.test.tsx",{"format":415,"lines":2591,"tokens":2592,"copies":310,"first":2593,"others":2597},241,1459,{"name":2594,"start":2595,"end":2596},"apps\u002Fpi-extension\u002Fserver\u002FserverReview.ts",1664,1904,[2598],{"name":2599,"start":2600,"end":2601},"packages\u002Fserver\u002Freview.ts",1712,1960,{"format":415,"lines":255,"tokens":2249,"copies":1110,"first":2603,"others":2605},{"name":2604,"start":2546,"end":2264},"tests\u002Fe2e\u002Finbox-archived.spec.ts",[2606,2609,2611,2613,2616,2618,2620,2622],{"name":2607,"start":2608,"end":1195},"tests\u002Fe2e\u002Finbox-ended-session.spec.ts",156,{"name":2610,"start":709,"end":1617},"tests\u002Fe2e\u002Finbox-open-questions.spec.ts",{"name":2612,"start":452,"end":2283},"tests\u002Fe2e\u002Finbox-order.spec.ts",{"name":2614,"start":2615,"end":1404},"tests\u002Fe2e\u002Finbox-reask.spec.ts",173,{"name":2617,"start":724,"end":1995},"tests\u002Fe2e\u002Finbox-reload-hosts.spec.ts",{"name":2619,"start":452,"end":2283},"tests\u002Fe2e\u002Finbox-reply-drafts.spec.ts",{"name":2621,"start":661,"end":1421},"tests\u002Fe2e\u002Finbox-row-badges.spec.ts",{"name":2623,"start":2624,"end":2457},"tests\u002Fe2e\u002Finbox-search-type-filter.spec.ts",116,{"format":415,"lines":842,"tokens":857,"copies":734,"first":2626,"others":2628},{"name":2627,"start":673,"end":1695},"packages\u002Fserver\u002Finbox-ack.test.ts",[2629,2631,2633,2635,2637,2639,2641,2643],{"name":2630,"start":587,"end":375},"packages\u002Fserver\u002Finbox-cards.test.ts",{"name":2632,"start":1427,"end":1412},"packages\u002Fserver\u002Finbox-compose.test.ts",{"name":2634,"start":1695,"end":1267},"packages\u002Fserver\u002Finbox-continues.test.ts",{"name":2636,"start":411,"end":405},"packages\u002Fserver\u002Finbox-linked-page.test.ts",{"name":2638,"start":643,"end":1112},"packages\u002Fserver\u002Finbox-mcp-window.test.ts",{"name":2640,"start":643,"end":1112},"packages\u002Fserver\u002Finbox-notify-origin.test.ts",{"name":2642,"start":1110,"end":398},"packages\u002Fserver\u002Finbox-priority.test.ts",{"name":2644,"start":1651,"end":1536},"packages\u002Fserver\u002Finbox-restart.test.ts",{"sources":2646,"lines":2647,"tokens":2648,"clones":2649,"duplicatedLines":2650,"duplicatedTokens":2651,"percentage":283,"percentageTokens":2652,"formats":2653,"topClones":2686,"generated":2778},2509,668588,4405119,1035,16270,99966,2.27,[2654,2660,2666,2669,2672,2675,2677,2680,2682,2684],{"format":415,"sources":2655,"lines":2656,"clones":2657,"duplicatedLines":2658,"percentage":2659},1742,431758,714,12576,2.91,{"format":395,"sources":2661,"lines":2662,"clones":2663,"duplicatedLines":2664,"percentage":2665},647,211263,288,3346,1.58,{"format":925,"sources":1238,"lines":2667,"clones":409,"duplicatedLines":659,"percentage":2668},2911,4.77,{"format":1103,"sources":375,"lines":2670,"clones":418,"duplicatedLines":1111,"percentage":2671},2748,3.17,{"format":374,"sources":478,"lines":2673,"clones":537,"duplicatedLines":708,"percentage":2674},3982,2.54,{"format":602,"sources":310,"lines":2676,"clones":310,"duplicatedLines":409,"percentage":1609},2971,{"format":367,"sources":1238,"lines":2678,"clones":317,"duplicatedLines":658,"percentage":2679},4911,0.12,{"format":1107,"sources":375,"lines":2681,"clones":604,"duplicatedLines":604,"percentage":604},6690,{"format":408,"sources":537,"lines":2683,"clones":604,"duplicatedLines":604,"percentage":604},1277,{"format":2685,"sources":310,"lines":2190,"clones":604,"duplicatedLines":604,"percentage":604},"sql",[2687,2693,2699,2714,2723,2734,2742,2750,2759,2771],{"format":415,"lines":2461,"tokens":2462,"copies":310,"first":2688,"others":2689,"excerpt":2691},{"name":2464,"start":842,"end":2465},[2690],{"name":2468,"start":573,"end":2469},{"lines":2692,"total":2461},[2472,483,2473,2474,2475,2476,2477,2478,2479,2480],{"format":415,"lines":2514,"tokens":2515,"copies":310,"first":2694,"others":2695,"excerpt":2697},{"name":2517,"start":411,"end":2518},[2696],{"name":2521,"start":2283,"end":2522},{"lines":2698,"total":2514},[2525,483,2526,483,2527,2528,483,2529,2530,2531],{"format":415,"lines":2591,"tokens":2592,"copies":310,"first":2700,"others":2701,"excerpt":2703},{"name":2594,"start":2595,"end":2596},[2702],{"name":2599,"start":2600,"end":2601},{"lines":2704,"total":2591},[2705,2706,483,2707,2708,2709,2710,2711,2712,2713],"    : buildAgentReviewUserMessage(launchPatch, launchDiffType as DiffType, userMessageOptions, launchPrMeta, isCustomReview);","const jobLabel = workspacePrompt ? \"Workspace Review\" : \"Code Review\";","if (provider === \"codex\") {","    const model = typeof config?.model === \"string\" && config.model ? config.model : undefined;","    const reasoningEffort = typeof config?.reasoningEffort === \"string\" && config.reasoningEffort ? config.reasoningEffort : undefined;","    const fastMode = config?.fastMode === true;","    const outputPath = generateOutputPath();","    const prompt = composeCodexReviewPrompt(userMessage, reviewProfile);","    const command = await buildCodexCommand({ cwd, outputPath, prompt, model, reasoningEffort, fastMode });",{"format":415,"lines":1097,"tokens":2715,"copies":310,"first":2716,"others":2719},587,{"name":2717,"start":2718,"end":1689},"apps\u002Fpi-extension\u002Fserver\u002Freference.ts",143,[2720],{"name":2721,"start":694,"end":2722},"packages\u002Fserver\u002Freference-handlers.ts",224,{"format":415,"lines":932,"tokens":2724,"copies":310,"first":2725,"others":2729},506,{"name":2726,"start":2727,"end":2728},"apps\u002Fpi-extension\u002Fserver\u002Fagent-jobs.ts",752,823,[2730],{"name":2731,"start":2732,"end":2733},"packages\u002Fserver\u002Fagent-jobs.ts",793,864,{"format":415,"lines":2275,"tokens":2735,"copies":310,"first":2736,"others":2739},492,{"name":2726,"start":2737,"end":2738},543,623,[2740],{"name":2731,"start":898,"end":2741},659,{"format":415,"lines":640,"tokens":2743,"copies":310,"first":2744,"others":2746},365,{"name":2726,"start":1350,"end":2745},326,[2747],{"name":2731,"start":2748,"end":2749},307,346,{"format":395,"lines":478,"tokens":2615,"copies":425,"first":2751,"others":2753},{"name":2752,"start":685,"end":2608},"packages\u002Fui\u002Fcomponents\u002FAgentToolAnnouncementDialog.tsx",[2754,2757],{"name":2755,"start":2756,"end":1585},"packages\u002Fui\u002Fcomponents\u002FAskSessionAnnouncementDialog.tsx",212,{"name":2758,"start":1321,"end":2244},"packages\u002Fui\u002Fcomponents\u002FTerminalToolsAnnouncementDialog.tsx",{"format":415,"lines":1238,"tokens":2760,"copies":425,"first":2761,"others":2764},172,{"name":2762,"start":2763,"end":1365},"apps\u002Fpi-extension\u002Fserver\u002FserverAnnotate.ts",1214,[2765,2768],{"name":2766,"start":2767,"end":536},"apps\u002Fpi-extension\u002Fserver\u002FserverPlan.ts",498,{"name":2594,"start":2769,"end":2770},3945,3958,{"format":415,"lines":573,"tokens":1205,"copies":310,"first":2772,"others":2774},{"name":2594,"start":2773,"end":912},1503,[2775],{"name":2599,"start":2776,"end":2777},1550,1604,{"files":303,"minified":604,"sample":2779},[2780,2781,2782,2783],"apps\u002Fhook\u002Fhooks\u002Fmod\u002Finbox-default-tools.ts","packages\u002Finbox\u002Fpulls\u002FgithubShortcodes.ts","packages\u002Fshared\u002Fshape\u002Fstamp-data.ts","packages\u002Fsystem\u002Fsrc\u002Frecipe\u002Ftext.ts",{"score":2785,"grade":296,"size":2786,"dimensions":2790},57.8,{"lines":2787,"files":2788,"class":2789},1359704,5125,"XL",[2791,2796,2802],{"id":756,"source":757,"value":358,"adjusted":358,"lines":2792,"halfLife":760,"formats":2793,"excluded":2794,"weight":317,"score":2795},100598,[415,395,367,1107,374,602,764,408,2685,1736],[766,388,767],54.7,{"id":770,"source":757,"value":2797,"adjusted":2797,"lines":2798,"halfLife":773,"coverage":2799,"weight":2800,"score":2801},0.7,8915,99.6,0.996,94.1,{"id":778,"source":757,"value":2310,"adjusted":2803,"lines":2804,"halfLife":782,"weight":317,"score":2805},70.5,959904,37.6,{"total":2807,"mean":2808,"files":2809},313745,61.2,[2810,2815,2820,2825,2830,2835,2840,2845,2849,2853],{"path":2811,"complexity":2812,"lines":2813,"bytes":2814},"packages\u002Finbox\u002FApp.tsx",3833,8899,488677,{"path":2816,"complexity":2817,"lines":2818,"bytes":2819},"packages\u002Finbox\u002Fcomponents\u002FThread.tsx",3749,8161,471862,{"path":2821,"complexity":2822,"lines":2823,"bytes":2824},"packages\u002Fshared\u002Finbox\u002Fstore.ts",3285,8733,457054,{"path":2826,"complexity":2827,"lines":2828,"bytes":2829},"packages\u002Fserver\u002Finbox.ts",2879,7287,453042,{"path":2831,"complexity":2832,"lines":2833,"bytes":2834},"packages\u002Feditor\u002FApp.tsx",2433,8514,398471,{"path":2836,"complexity":2837,"lines":2838,"bytes":2839},"packages\u002Freview-editor\u002FApp.tsx",2030,7269,362810,{"path":2841,"complexity":2842,"lines":2843,"bytes":2844},"packages\u002Finbox\u002Fcomponents\u002FAttachmentPane.tsx",1326,3283,173134,{"path":2599,"complexity":2846,"lines":2847,"bytes":2848},1163,4706,237821,{"path":2594,"complexity":2850,"lines":2851,"bytes":2852},1159,4359,190178,{"path":2854,"complexity":2855,"lines":2856,"bytes":2857},"packages\u002Finbox\u002Fcompose\u002FComposeDialog.tsx",1069,2045,109351,{"percentage":2859,"findings":1042,"files":2860,"byCategory":2861,"largest":2866},0.66,5219,[2862,2863,2864,2865],{"category":841,"count":940},{"category":844,"count":1223},{"category":846,"count":673},{"category":1358,"count":361},[2867,2869,2872,2875,2878,2880,2882,2885,2887,2890],{"category":841,"path":2868,"name":483,"line":317,"lines":728},"packages\u002Fserver\u002Fdoc-any-path.scenarios.ts",{"category":841,"path":2870,"name":483,"line":317,"lines":2871},"packages\u002Fui\u002Fcomponents\u002FLanding.tsx",496,{"category":841,"path":2873,"name":483,"line":317,"lines":2874},"packages\u002Fserver\u002Fannotate-draft.scenarios.ts",479,{"category":841,"path":2876,"name":483,"line":317,"lines":2877},"packages\u002Fserver\u002Fstate-route-guards.scenarios.ts",450,{"category":841,"path":2879,"name":483,"line":317,"lines":1090},"packages\u002Fserver\u002Flinked-document-drafts.scenarios.ts",{"category":841,"path":2881,"name":483,"line":317,"lines":677},"packages\u002Fserver\u002Fannotate-bundle.scenarios.ts",{"category":841,"path":2883,"name":483,"line":317,"lines":2884},"packages\u002Fsystem\u002Fscripts\u002Fmeasure.mjs",390,{"category":841,"path":2886,"name":483,"line":317,"lines":2557},"packages\u002Finbox\u002FcssCascade.testing.ts",{"category":841,"path":2888,"name":483,"line":317,"lines":2889},"packages\u002Finbox\u002Fkeyboard\u002Fmodel.ts",319,{"category":841,"path":2891,"name":483,"line":317,"lines":2892},"packages\u002Fserver\u002Fref-card-route.scenarios.ts",315,{"name":267,"url":2894,"description":2895,"language":323,"stars":2896,"starsToday":936,"defaultBranch":339,"headSha":2897,"durationMs":2898,"total":2899,"formats":2904,"topClones":2946,"code":3096,"health":3267,"complexity":3287,"deadCode":3335},"https:\u002F\u002Fgithub.com\u002Ftradermonty\u002Fclaude-trading-skills","Claude Code skills for equity investors and traders — market analysis, technical charting, economic calendars, screeners, and trading strategy development.",4272,"3bd4b7a2c7329ffb5efef95db2e53d1125b3dc40",2187,{"sources":2900,"lines":324,"tokens":2901,"clones":268,"duplicatedLines":325,"duplicatedTokens":2902,"percentage":269,"percentageTokens":2903},2516,3349534,420864,12.56,[2905,2910,2916,2921,2926,2930,2935,2938,2941,2944],{"format":408,"sources":2906,"lines":2907,"clones":1317,"duplicatedLines":2908,"percentage":2909},963,333647,32691,9.8,{"format":381,"sources":2911,"lines":2912,"clones":2913,"duplicatedLines":2914,"percentage":2915},657,129373,798,22707,17.55,{"format":360,"sources":2917,"lines":2918,"clones":1912,"duplicatedLines":2919,"percentage":2920},272,42935,13911,32.4,{"format":367,"sources":2922,"lines":2923,"clones":674,"duplicatedLines":2924,"percentage":2925},223,4517,1643,36.37,{"format":402,"sources":1052,"lines":2927,"clones":2434,"duplicatedLines":2928,"percentage":2929},13459,1947,14.47,{"format":388,"sources":2931,"lines":2932,"clones":1267,"duplicatedLines":2933,"percentage":2934},160,4902,965,19.69,{"format":766,"sources":704,"lines":682,"clones":1238,"duplicatedLines":2936,"percentage":2937},131,21.72,{"format":2939,"sources":425,"lines":2264,"clones":317,"duplicatedLines":589,"percentage":2940},"mermaid",20.41,{"format":2942,"sources":317,"lines":2943,"clones":604,"duplicatedLines":604,"percentage":604},"toml",185,{"format":2945,"sources":317,"lines":603,"clones":604,"duplicatedLines":604,"percentage":604},"scss",[2947,2978,2999,3026,3039,3047,3055,3070,3080,3087],{"format":408,"lines":2889,"tokens":2948,"copies":255,"first":2949,"others":2951,"excerpt":2968},1779,{"name":2950,"start":317,"end":2889},"examples\u002Fweekly-trade-strategy\u002Fskills\u002Fmarket-environment-analysis\u002Fscripts\u002F_market_calendar.py",[2952,2954,2956,2958,2960,2962,2964,2966],{"name":2953,"start":317,"end":2889},"skills\u002Fbreakout-trade-planner\u002Fscripts\u002F_market_calendar.py",{"name":2955,"start":317,"end":2889},"skills\u002Fdrawdown-circuit-breaker\u002Fscripts\u002F_market_calendar.py",{"name":2957,"start":317,"end":2889},"skills\u002Fearnings-trade-analyzer\u002Fscripts\u002F_market_calendar.py",{"name":2959,"start":317,"end":2889},"skills\u002Fmarket-environment-analysis\u002Fscripts\u002F_market_calendar.py",{"name":2961,"start":317,"end":2889},"skills\u002Fmarket-top-detector\u002Fscripts\u002F_market_calendar.py",{"name":2963,"start":317,"end":2889},"skills\u002Fparabolic-short-trade-planner\u002Fscripts\u002F_market_calendar.py",{"name":2965,"start":317,"end":2889},"skills\u002Fstockbee-momentum-burst-screener\u002Fscripts\u002F_market_calendar.py",{"name":2967,"start":317,"end":2889},"skills\u002Ftheme-detector\u002Fscripts\u002F_market_calendar.py",{"lines":2969,"total":2889},[2970,2971,2972,483,2973,2974,2975,2976,2977,483],"# GENERATED by scripts\u002Fgenerate_market_calendar.py — do not edit.","# Source of truth: scripts\u002Fmarket_calendar\u002F and config\u002Fmarket-calendar-dependency.yaml.","\"\"\"Shared exchange-calendar and timezone contract for cash-equity skills.","The module is vendored into each standalone skill by","``scripts\u002Fgenerate_market_calendar.py``. Runtime code must not read repository","configuration: packaged skills contain this self-contained module plus an exact","runtime dependency declaration.","\"\"\"",{"format":408,"lines":904,"tokens":2979,"copies":303,"first":2980,"others":2983,"excerpt":2990},2503,{"name":2981,"start":598,"end":2982},"skills\u002Fstockbee-20pct-study\u002Fscripts\u002Ffmp_client.py",437,[2984,2986,2988],{"name":2985,"start":598,"end":2982},"skills\u002Fstockbee-episodic-pivot-analyzer\u002Fscripts\u002Ffmp_client.py",{"name":2987,"start":598,"end":2982},"skills\u002Fstockbee-exhaustion-hammer-screener\u002Fscripts\u002Ffmp_client.py",{"name":2989,"start":598,"end":2982},"skills\u002Fstockbee-setup-fluency-trainer\u002Fscripts\u002Ffmp_client.py",{"lines":2991,"total":904},[2992,483,2993,2994,2995,2996,2997,2977,483,2998],"Provides rate-limited access to Financial Modeling Prep API endpoints.","Features:","- Rate limiting (0.3s between requests)","- Automatic retry on 429 errors","- Session caching for duplicate requests","- Stable-only screener\u002FEOD\u002Fquote primitives for stockbee adapters","import os",{"format":408,"lines":3000,"tokens":3001,"copies":598,"first":3002,"others":3004,"excerpt":3019},137,960,{"name":3003,"start":317,"end":3000},"skills\u002Fbreakout-trade-planner\u002Fscripts\u002Ftests\u002Ftest_market_calendar_contract.py",[3005,3007,3009,3011,3013,3015,3017],{"name":3006,"start":317,"end":3000},"skills\u002Fdrawdown-circuit-breaker\u002Fscripts\u002Ftests\u002Ftest_market_calendar_contract.py",{"name":3008,"start":317,"end":3000},"skills\u002Fearnings-trade-analyzer\u002Fscripts\u002Ftests\u002Ftest_market_calendar_contract.py",{"name":3010,"start":317,"end":3000},"skills\u002Fmarket-environment-analysis\u002Fscripts\u002Ftests\u002Ftest_market_calendar_contract.py",{"name":3012,"start":317,"end":3000},"skills\u002Fmarket-top-detector\u002Fscripts\u002Ftests\u002Ftest_market_calendar_contract.py",{"name":3014,"start":317,"end":3000},"skills\u002Fparabolic-short-trade-planner\u002Fscripts\u002Ftests\u002Ftest_market_calendar_contract.py",{"name":3016,"start":317,"end":3000},"skills\u002Fstockbee-momentum-burst-screener\u002Fscripts\u002Ftests\u002Ftest_market_calendar_contract.py",{"name":3018,"start":317,"end":3000},"skills\u002Ftheme-detector\u002Fscripts\u002Ftests\u002Ftest_market_calendar_contract.py",{"lines":3020,"total":3000},[2970,2971,3021,483,3022,3023,483,3024,3025,483],"\"\"\"Generated contract tests for the vendored exchange calendar.\"\"\"","from datetime import date, datetime","from zoneinfo import ZoneInfo","import _market_calendar as calendar","import pytest",{"format":408,"lines":3027,"tokens":894,"copies":303,"first":3028,"others":3031},305,{"name":3029,"start":2028,"end":3030},"skills\u002Fcot-contrarian-detector\u002Fscripts\u002Ffmp_client.py",371,[3032,3035,3037],{"name":3033,"start":2025,"end":3034},"skills\u002Fearnings-calendar\u002Fscripts\u002Ffmp_client.py",377,{"name":3036,"start":2482,"end":2199},"skills\u002Feconomic-calendar-fetcher\u002Fscripts\u002Ffmp_client.py",{"name":3038,"start":2028,"end":3030},"skills\u002Finstitutional-flow-tracker\u002Fscripts\u002Ffmp_client.py",{"format":381,"lines":3040,"tokens":3041,"copies":310,"first":3042,"others":3044},590,5086,{"name":3043,"start":317,"end":3040},"examples\u002Fweekly-trade-strategy\u002Fskills\u002Fbreadth-chart-analyst\u002Freferences\u002Fbreadth_chart_methodology.md",[3045],{"name":3046,"start":317,"end":3040},"skills\u002Fbreadth-chart-analyst\u002Freferences\u002Fbreadth_chart_methodology.md",{"format":381,"lines":3048,"tokens":3049,"copies":310,"first":3050,"others":3052},558,4505,{"name":3051,"start":317,"end":3048},"examples\u002Fweekly-trade-strategy\u002Fskills\u002Fbreadth-chart-analyst\u002Fassets\u002Fbreadth_analysis_template.md",[3053],{"name":3054,"start":317,"end":3048},"skills\u002Fbreadth-chart-analyst\u002Fassets\u002Fbreadth_analysis_template.md",{"format":408,"lines":705,"tokens":3056,"copies":658,"first":3057,"others":3059},839,{"name":3058,"start":317,"end":705},"skills\u002Fearnings-calendar\u002Fscripts\u002F_fmp_compat.py",[3060,3062,3064,3066,3068],{"name":3061,"start":317,"end":705},"skills\u002Fearnings-trade-analyzer\u002Fscripts\u002F_fmp_compat.py",{"name":3063,"start":317,"end":705},"skills\u002Fibd-distribution-day-monitor\u002Fscripts\u002F_fmp_compat.py",{"name":3065,"start":317,"end":705},"skills\u002Fparabolic-short-trade-planner\u002Fscripts\u002F_fmp_compat.py",{"name":3067,"start":317,"end":705},"skills\u002Fpead-screener\u002Fscripts\u002F_fmp_compat.py",{"name":3069,"start":317,"end":705},"skills\u002Fvcp-screener\u002Fscripts\u002F_fmp_compat.py",{"format":408,"lines":804,"tokens":3071,"copies":310,"first":3072,"others":3075},3693,{"name":3073,"start":1974,"end":3074},"scripts\u002Ffmp_client\u002Fspecials\u002Fgarp.py.tmpl",762,[3076],{"name":3077,"start":3078,"end":3079},"skills\u002Fus-undervalued-growth-screener\u002Fscripts\u002Ffmp_client.py",262,785,{"format":381,"lines":547,"tokens":3081,"copies":310,"first":3082,"others":3084},3033,{"name":3083,"start":317,"end":547},"examples\u002Fweekly-trade-strategy\u002Fskills\u002Fmarket-news-analyst\u002Freferences\u002Fgeopolitical_commodity_correlations.md",[3085],{"name":3086,"start":317,"end":547},"skills\u002Fmarket-news-analyst\u002Freferences\u002Fgeopolitical_commodity_correlations.md",{"format":408,"lines":3088,"tokens":3089,"copies":310,"first":3090,"others":3093},505,2854,{"name":3091,"start":598,"end":3092},"skills\u002Fparabolic-short-trade-planner\u002Fscripts\u002Ffmp_client.py",512,[3094],{"name":3095,"start":598,"end":3092},"skills\u002Fvcp-screener\u002Fscripts\u002Ffmp_client.py",{"sources":1062,"lines":3097,"tokens":3098,"clones":3099,"duplicatedLines":3100,"duplicatedTokens":3101,"percentage":3102,"percentageTokens":3103,"formats":3104,"topClones":3111,"generated":3257},156421,862598,400,7042,41690,4.5,4.83,[3105,3108],{"format":408,"sources":2237,"lines":3106,"clones":1062,"duplicatedLines":3107,"percentage":3102},156138,7025,{"format":367,"sources":537,"lines":3109,"clones":317,"duplicatedLines":1110,"percentage":3110},283,6.01,[3112,3130,3147,3182,3204,3212,3218,3235,3245,3250],{"format":408,"lines":705,"tokens":3056,"copies":658,"first":3113,"others":3114,"excerpt":3120},{"name":3058,"start":317,"end":705},[3115,3116,3117,3118,3119],{"name":3061,"start":317,"end":705},{"name":3063,"start":317,"end":705},{"name":3065,"start":317,"end":705},{"name":3067,"start":317,"end":705},{"name":3069,"start":317,"end":705},{"lines":3121,"total":705},[3122,483,3123,3124,483,3125,3126,3127,3128,3129],"\"\"\"FMP ``\u002Fapi\u002Fv3`` → ``\u002Fstable`` URL compatibility shim.","FMP retired the legacy ``\u002Fapi\u002Fv3\u002F`` surface on 2025-08-31; API keys issued","after that date receive ``403 \"Legacy Endpoint\"`` on every ``\u002Fapi\u002Fv3\u002F`` request.","This helper rewrites a legacy v3-style URL (and its params) to the ``\u002Fstable``","equivalent. It is applied ONLY at construction points that build hardcoded v3","URLs and are *not* part of an explicit stable→v3 fallback list. Methods that","already iterate a ``_FMP_ENDPOINTS`` stable→v3 table must NOT route through this","shim, or the v3 fallback entry would be rewritten back to stable and the",{"format":408,"lines":338,"tokens":3131,"copies":425,"first":3132,"others":3134,"excerpt":3139},1164,{"name":3133,"start":317,"end":338},"skills\u002Fexposure-coach\u002Fscripts\u002Fprovenance_contract.py",[3135,3137],{"name":3136,"start":317,"end":338},"skills\u002Fmarket-breadth-analyzer\u002Fscripts\u002Fprovenance_contract.py",{"name":3138,"start":317,"end":338},"skills\u002Fuptrend-analyzer\u002Fscripts\u002Fprovenance_contract.py",{"lines":3140,"total":338},[3141,483,3142,3143,2977,483,3144,483,3145,3146],"\"\"\"Standalone common schema 1.0 and opt-in market handoff policy.","Vendored identically in the three market-regime skills. Keep schema validation","compatible with scripts\u002Fvalidate_provenance.py; strict policy is separate.","from __future__ import annotations","from datetime import date, datetime, timedelta","from typing import Any",{"format":408,"lines":418,"tokens":940,"copies":1110,"first":3148,"others":3150,"excerpt":3166,"excerptSecond":3178},{"name":3149,"start":1427,"end":1429},"scripts\u002Fworkflow_replay_pkg\u002Fsteps_earnings.py",[3151,3153,3155,3157,3159,3162,3163,3165],{"name":3149,"start":1573,"end":3152},120,{"name":3149,"start":2427,"end":3154},176,{"name":3149,"start":2591,"end":3156},250,{"name":3158,"start":2624,"end":724},"scripts\u002Fworkflow_replay_pkg\u002Fsteps_kanchi.py",{"name":3160,"start":3161,"end":1418},"scripts\u002Fworkflow_replay_pkg\u002Fsteps_monthly.py",161,{"name":3160,"start":833,"end":3034},{"name":3160,"start":3164,"end":1090},425,{"name":3160,"start":2871,"end":3088},{"lines":3167,"total":418},[3168,3169,3170,3171,3172,3173,3174,3175,3176,3177],"def _earnings_analyze(","    repo_root: Path,","    spec: Mapping[str, Any],","    step: Mapping[str, Any],","    inputs: Mapping[str, Path],","    consumed: Mapping[str, dict[str, Any]],","    work: Path,","    stage: Path,",") -> dict[str, dict[str, Any]]:","    if consumed:",{"lines":3179,"total":418},[3180,3169,3170,3171,3172,3173,3174,3175,3176,3181],"def _earnings_pead(","    if set(consumed) != {\"earnings_trade_analysis\"}:",{"format":408,"lines":255,"tokens":936,"copies":1110,"first":3183,"others":3184},{"name":3149,"start":1427,"end":741},[3185,3188,3191,3193,3197,3198,3201,3203],{"name":3149,"start":3186,"end":3187},287,295,{"name":3149,"start":3189,"end":3190},408,416,{"name":3158,"start":3192,"end":1981},406,{"name":3194,"start":3195,"end":3196},"scripts\u002Fworkflow_replay_pkg\u002Fsteps_market_regime.py",300,308,{"name":3160,"start":3048,"end":692},{"name":3199,"start":377,"end":3200},"scripts\u002Fworkflow_replay_pkg\u002Fsteps_stockbee_fluency.py",93,{"name":3202,"start":384,"end":2546},"scripts\u002Fworkflow_replay_pkg\u002Fsteps_strategy_research.py",{"name":3202,"start":1097,"end":2250},{"format":408,"lines":916,"tokens":2237,"copies":425,"first":3205,"others":3207},{"name":3206,"start":1142,"end":1879},"scripts\u002Ffmp_client\u002Fcore_template.py.tmpl",[3208,3210],{"name":3209,"start":419,"end":2608},"scripts\u002Ffmp_client\u002Fspecials\u002Fcanslim.py.tmpl",{"name":3211,"start":2434,"end":612},"scripts\u002Ffmp_client\u002Fspecials\u002Fmacro.py.tmpl",{"format":408,"lines":2457,"tokens":3213,"copies":310,"first":3214,"others":3215},738,{"name":3209,"start":639,"end":2608},[3216],{"name":3217,"start":639,"end":2608},"scripts\u002Ffmp_client\u002Fspecials\u002Fmarket_top.py.tmpl",{"format":408,"lines":704,"tokens":573,"copies":842,"first":3219,"others":3220},{"name":3149,"start":857,"end":3152},[3221,3222,3223,3224,3225,3227,3230,3232],{"name":3149,"start":1418,"end":3154},{"name":3149,"start":2278,"end":3156},{"name":3160,"start":1195,"end":1418},{"name":3160,"start":3030,"end":3034},{"name":3226,"start":399,"end":562},"scripts\u002Fworkflow_replay_pkg\u002Fsteps_multi_asset.py",{"name":3226,"start":3228,"end":3229},422,428,{"name":3202,"start":3231,"end":2608},150,{"name":3233,"start":3196,"end":3234},"scripts\u002Fworkflow_replay_pkg\u002Fsteps_swing.py",314,{"format":408,"lines":936,"tokens":3236,"copies":310,"first":3237,"others":3240},493,{"name":3238,"start":3239,"end":1311},"skills\u002Fnews-reaction-failure-analyzer\u002Fscripts\u002Fanalyze_news_reaction.py",514,[3241],{"name":3242,"start":3243,"end":3244},"skills\u002Ftechnical-analyst\u002Fscripts\u002Fcheck_weekly_price_action.py",381,449,{"format":408,"lines":593,"tokens":814,"copies":310,"first":3246,"others":3247},{"name":3238,"start":662,"end":685},[3248],{"name":3242,"start":370,"end":3249},119,{"format":408,"lines":1111,"tokens":2877,"copies":310,"first":3251,"others":3254},{"name":3252,"start":399,"end":3253},"skills\u002Fdividend-growth-pullback-screener\u002Fscripts\u002Fscreen_dividend_growth_rsi.py",407,[3255],{"name":3256,"start":3109,"end":718},"skills\u002Fvalue-dividend-screener\u002Fscripts\u002Fscreen_dividend_stocks.py",{"files":640,"minified":604,"sample":3258},[3259,2950,2953,3003,3260,3029,3261,2955,3006,3033,2957,3262,3008,3036,3263,3264,3038,3265,3266,2959],"examples\u002Fweekly-trade-strategy\u002F.claude\u002Fskills\u002Fmarket-environment-analysis\u002Fscripts\u002F_market_calendar.py","skills\u002Fcanslim-screener\u002Fscripts\u002Ffmp_client.py","skills\u002Fdividend-growth-pullback-screener\u002Fscripts\u002Ffmp_client.py","skills\u002Fearnings-trade-analyzer\u002Fscripts\u002Ffmp_client.py","skills\u002Fftd-detector\u002Fscripts\u002Ffmp_client.py","skills\u002Fibd-distribution-day-monitor\u002Fscripts\u002Ffmp_client.py","skills\u002Fkanchi-dividend-sop\u002Fscripts\u002Ffmp_client.py","skills\u002Fmacro-regime-detector\u002Fscripts\u002Ffmp_client.py",{"score":1657,"grade":296,"size":3268,"dimensions":3271},{"lines":3269,"files":3270,"class":753},332280,941,[3272,3279,3282],{"id":756,"source":757,"value":3273,"adjusted":3274,"lines":3275,"halfLife":760,"formats":3276,"excluded":3277,"weight":317,"score":3278},9.7,9.6,32184,[408,367],[766,388,767],45.5,{"id":770,"source":757,"value":3280,"adjusted":3280,"lines":3281,"halfLife":773,"coverage":2254,"weight":317,"score":3200},0.8,2544,{"id":778,"source":757,"value":3283,"adjusted":3284,"lines":3285,"halfLife":782,"weight":317,"score":3286},67.5,67.2,224179,39.4,{"total":3288,"mean":3289,"files":3290},47665,50.7,[3291,3296,3301,3306,3310,3314,3318,3323,3328,3331],{"path":3292,"complexity":3293,"lines":3294,"bytes":3295},"skills\u002Fus-undervalued-growth-screener\u002Fscripts\u002Fscreen_universe.py",542,2032,88673,{"path":3297,"complexity":3298,"lines":3299,"bytes":3300},"skills\u002Fus-undervalued-growth-screener\u002Fscripts\u002Fresearch_contract.py",538,1898,83455,{"path":3302,"complexity":3303,"lines":3304,"bytes":3305},"skills\u002Fstockbee-20pct-study\u002Fscripts\u002Frun_20pct_study.py",452,1839,69698,{"path":3307,"complexity":1907,"lines":3308,"bytes":3309},"skills\u002Fstockbee-exhaustion-hammer-screener\u002Fscripts\u002Fscreen_exhaustion_hammer.py",1361,50285,{"path":3311,"complexity":2396,"lines":3312,"bytes":3313},"skills\u002Fstockbee-episodic-pivot-analyzer\u002Fscripts\u002Fanalyze_ep.py",1251,45094,{"path":3315,"complexity":2396,"lines":3316,"bytes":3317},"skills\u002Fvcp-screener\u002Fscripts\u002Ftests\u002Ftest_vcp_screener.py",3490,138916,{"path":3319,"complexity":3320,"lines":3321,"bytes":3322},"skills\u002Fedge-signal-aggregator\u002Fscripts\u002Faggregate_signals.py",338,1649,64204,{"path":3324,"complexity":3325,"lines":3326,"bytes":3327},"skills\u002Fstockbee-momentum-burst-screener\u002Fscripts\u002Fscreen_momentum_burst.py",337,1240,45140,{"path":3329,"complexity":2889,"lines":1904,"bytes":3330},"skills\u002Fmt5-robot-tester\u002Fscripts\u002Fmt5_batch_tester.py",57870,{"path":3332,"complexity":1912,"lines":3333,"bytes":3334},"skills\u002Fresidual-edge-analyzer\u002Fscripts\u002Fanalyze_residual_edge.py",1285,50655,{"percentage":3336,"findings":1657,"files":3337,"byCategory":3338,"largest":3343},0.77,975,[3339,3340,3341,3342],{"category":841,"count":673},{"category":844,"count":595},{"category":846,"count":595},{"category":1358,"count":537},[3344,3345,3348,3351,3353,3358,3360,3362,3364,3366],{"category":841,"path":2965,"name":483,"line":317,"lines":2889},{"category":841,"path":3346,"name":483,"line":317,"lines":3347},"scripts\u002Fmarket_calendar\u002Fmarket_calendar.py",317,{"category":841,"path":3349,"name":483,"line":317,"lines":3350},"scripts\u002Fdev\u002Fgenerate_earnings_weekly_fixture.py",266,{"category":841,"path":3352,"name":483,"line":317,"lines":1173},"skills\u002Fparabolic-short-trade-planner\u002Fscripts\u002Fadapters\u002Falpaca_market_data_adapter.py",{"category":846,"path":3354,"name":3355,"line":3356,"lines":3357},"skills\u002Ftrader-memory-core\u002Fscripts\u002Fthesis_store_parts\u002Fpositions_futures.py","_finalize_futures_outcome",233,121,{"category":841,"path":3359,"name":483,"line":317,"lines":2250},"skills\u002Fparabolic-short-trade-planner\u002Fscripts\u002Fcalculators\u002Fparabolic_score_calculator.py",{"category":841,"path":3361,"name":483,"line":317,"lines":2250},"skills\u002Ftrader-memory-core\u002Fscripts\u002Ffmp_price_adapter.py",{"category":841,"path":3363,"name":483,"line":317,"lines":2261},"skills\u002Fparabolic-short-trade-planner\u002Fscripts\u002Fadapters\u002Falpaca_inventory_adapter.py",{"category":841,"path":3365,"name":483,"line":317,"lines":1097},"skills\u002Fparabolic-short-trade-planner\u002Fscripts\u002Fcalculators\u002Facceleration_calculator.py",{"category":841,"path":3367,"name":483,"line":317,"lines":370},"skills\u002Fparabolic-short-trade-planner\u002Fscripts\u002Fadapters\u002Ffixture_market_data_adapter.py",{"name":3369,"url":3370,"description":3371,"language":309,"stars":3372,"starsToday":479,"defaultBranch":339,"headSha":3373,"durationMs":3374,"total":3375,"formats":3381,"topClones":3402,"code":3514,"health":3621,"complexity":3637,"deadCode":3675},"tailscale\u002Ftailcat","https:\u002F\u002Fgithub.com\u002Ftailscale\u002Ftailcat","like netcat, but over Tailscale's data plane, without Tailscale's control plane",9548,"e00cdde6ff787f801361ff85ed085775c775d4c5",835,{"sources":2254,"lines":3376,"tokens":3377,"clones":1808,"duplicatedLines":3378,"duplicatedTokens":3379,"percentage":600,"percentageTokens":3380},24489,162252,689,5026,3.1,[3382,3386,3389,3391,3392,3394,3395,3397,3399,3400],{"format":353,"sources":2190,"lines":3383,"clones":1412,"duplicatedLines":3384,"percentage":3385},21302,678,3.18,{"format":402,"sources":658,"lines":3387,"clones":317,"duplicatedLines":842,"percentage":3388},423,2.6,{"format":381,"sources":704,"lines":3390,"clones":604,"duplicatedLines":604,"percentage":604},1545,{"format":2308,"sources":317,"lines":3253,"clones":604,"duplicatedLines":604,"percentage":604},{"format":374,"sources":317,"lines":3393,"clones":604,"duplicatedLines":604,"percentage":604},344,{"format":367,"sources":425,"lines":571,"clones":604,"duplicatedLines":604,"percentage":604},{"format":3396,"sources":317,"lines":520,"clones":604,"duplicatedLines":604,"percentage":604},"go-module",{"format":3398,"sources":310,"lines":2482,"clones":604,"duplicatedLines":604,"percentage":604},"c",{"format":766,"sources":317,"lines":1429,"clones":604,"duplicatedLines":604,"percentage":604},{"format":3401,"sources":317,"lines":1267,"clones":604,"duplicatedLines":604,"percentage":604},"nix",[3403,3425,3439,3457,3463,3471,3479,3488,3497,3505],{"format":353,"lines":598,"tokens":396,"copies":658,"first":3404,"others":3406,"excerpt":3417},{"name":3405,"start":587,"end":927},"listen_test.go",[3407,3410,3411,3413,3414],{"name":3408,"start":2241,"end":3409},"tailcat_test.go",367,{"name":3408,"start":823,"end":3164},{"name":3408,"start":3092,"end":3412},519,{"name":3408,"start":1331,"end":1210},{"name":3408,"start":3415,"end":3416},1121,1128,{"lines":3418,"total":598},[3419,3420,483,3421,3422,3423,3424,439],"func TestListen(t *testing.T) {","    t.Parallel()","    dm := integration.RunDERPAndSTUN(t, mkLogger(t, \"derpstun\"), \"127.0.0.1\")","    reg := dm.Regions[1]","    if reg == nil {","        t.Fatal(\"no region 1 in derpmap\")",{"format":353,"lines":478,"tokens":1224,"copies":310,"first":3426,"others":3429,"excerpt":3433},{"name":3408,"start":3427,"end":3428},711,735,[3430],{"name":3408,"start":3431,"end":3432},857,881,{"lines":3434,"total":478},[3435,3421,3422,3423,3424,439,483,3436,3437,3438],"func TestUDPForward(t *testing.T) {","    backend, err := net.ListenUDP(\"udp4\", &net.UDPAddr{IP: net.IPv4(127, 0, 0, 1)})","    if err != nil {","        t.Fatal(err)",{"format":353,"lines":927,"tokens":3440,"copies":310,"first":3441,"others":3444,"excerpt":3448},182,{"name":3442,"start":928,"end":3443},"cmd\u002Ftailcat\u002Fsocks_test.go",251,[3445],{"name":3408,"start":3446,"end":3447},712,737,{"lines":3449,"total":927},[3450,3451,3452,3453,446,483,3454,3455,3456,446],"dm := integration.RunDERPAndSTUN(t, testLogger(t, \"derpstun\"), \"127.0.0.1\")","reg := dm.Regions[1]","if reg == nil {","    t.Fatal(\"no region 1 in derpmap\")","backend, err := net.ListenUDP(\"udp4\", &net.UDPAddr{IP: net.IPv4(127, 0, 0, 1)})","if err != nil {","    t.Fatal(err)",{"format":353,"lines":478,"tokens":3458,"copies":310,"first":3459,"others":3461},169,{"name":3460,"start":741,"end":1434},"cmd\u002Ftailcat\u002Fforward_test.go",[3462],{"name":3460,"start":2457,"end":1425},{"format":353,"lines":478,"tokens":2608,"copies":310,"first":3464,"others":3468},{"name":3465,"start":3466,"end":3467},"web\u002Fwasm_test.go",253,277,[3469],{"name":3465,"start":2386,"end":3470},509,{"format":353,"lines":589,"tokens":613,"copies":310,"first":3472,"others":3475},{"name":3408,"start":3473,"end":3474},744,763,[3476],{"name":3408,"start":3477,"end":3478},896,915,{"format":353,"lines":255,"tokens":2283,"copies":425,"first":3480,"others":3481},{"name":3442,"start":1976,"end":399},[3482,3485],{"name":3442,"start":3483,"end":3484},333,341,{"name":3442,"start":3486,"end":3487},353,361,{"format":353,"lines":587,"tokens":2936,"copies":310,"first":3489,"others":3493},{"name":3490,"start":3491,"end":3492},"tailcat.go",652,670,[3494],{"name":3490,"start":3495,"end":3496},2011,2029,{"format":353,"lines":1110,"tokens":705,"copies":310,"first":3498,"others":3501},{"name":3408,"start":3499,"end":3500},806,822,[3502],{"name":3408,"start":3503,"end":3504},970,986,{"format":353,"lines":598,"tokens":741,"copies":425,"first":3506,"others":3509},{"name":3408,"start":3507,"end":3508},649,656,[3510,3512],{"name":3408,"start":3511,"end":3500},815,{"name":3408,"start":3513,"end":3504},979,{"sources":737,"lines":3515,"tokens":3516,"clones":255,"duplicatedLines":3200,"duplicatedTokens":3517,"percentage":2797,"percentageTokens":3518,"formats":3519,"topClones":3525,"generated":3619},13308,83736,726,0.87,[3520,3522,3523,3524],{"format":353,"sources":635,"lines":3521,"clones":255,"duplicatedLines":3200,"percentage":585},12516,{"format":2308,"sources":317,"lines":3253,"clones":604,"duplicatedLines":604,"percentage":604},{"format":374,"sources":317,"lines":3393,"clones":604,"duplicatedLines":604,"percentage":604},{"format":367,"sources":317,"lines":640,"clones":604,"duplicatedLines":604,"percentage":604},[3526,3540,3558,3576,3583,3592,3600,3607,3614],{"format":353,"lines":587,"tokens":2936,"copies":310,"first":3527,"others":3528,"excerpt":3530},{"name":3490,"start":3491,"end":3492},[3529],{"name":3490,"start":3495,"end":3496},{"lines":3531,"total":587},[3532,3533,3534,3535,483,3536,3537,3538,3455,3539],"sys := &lb.sys","bus := eventbus.New()","sys.Set(bus)","sys.Set(health.NewTracker(bus))","netMon, err := netmon.New(bus, func(format string, args ...any) {","    logf(format, args...)","})","    lb.Close() \u002F\u002F closes the subsystems started so far",{"format":353,"lines":842,"tokens":2546,"copies":310,"first":3541,"others":3543,"excerpt":3547},{"name":3542,"start":1425,"end":603},"cmd\u002Flibtailcat\u002Fmain.go",[3544],{"name":3542,"start":3545,"end":3546},165,175,{"lines":3548,"total":842},[3549,3550,3551,3552,3553,3554,3555,3556,3557,3553],"func tc_conn_read(id C.tc_handle, token C.tc_token, ptr unsafe.Pointer, size C.size_t, count *C.size_t, err **C.char) C.int32_t {","    return guard(err, func() error {","        if count == nil {","            return capi.ErrArgument","        }","        *count = 0","        b, err := buffer(ptr, size)","        if err != nil {","            return err",{"format":353,"lines":842,"tokens":2022,"copies":310,"first":3559,"others":3562,"excerpt":3566},{"name":3490,"start":3560,"end":3561},2338,2348,[3563],{"name":3490,"start":3564,"end":3565},2366,2376,{"lines":3567,"total":842},[3568,3569,3570,439,3571,3572,3573,3574,3575,439],"func (c *Client) DialTCP(ctx context.Context, ap netip.AddrPort) (net.Conn, error) {","    if err := c.up(ctx); err != nil {","        return nil, err","    if ap.Addr().Is4() {","        a := nat64PrefixBytes","        a4 := ap.Addr().As4()","        copy(a[12:], a4[:])","        ap = netip.AddrPortFrom(netip.AddrFrom16(a), ap.Port())",{"format":353,"lines":418,"tokens":1434,"copies":310,"first":3577,"others":3579},{"name":3490,"start":2377,"end":3578},759,[3580],{"name":3490,"start":3581,"end":3582},2073,2081,{"format":353,"lines":255,"tokens":361,"copies":310,"first":3584,"others":3588},{"name":3585,"start":3586,"end":3587},"cmd\u002Ftailcat\u002Ftailcat.go",1979,1987,[3589],{"name":3585,"start":3590,"end":3591},2061,2070,{"format":353,"lines":734,"tokens":936,"copies":310,"first":3593,"others":3596},{"name":3490,"start":3594,"end":3595},693,704,[3597],{"name":3490,"start":3598,"end":3599},2047,2058,{"format":353,"lines":255,"tokens":2028,"copies":310,"first":3601,"others":3603},{"name":3585,"start":3602,"end":3511},807,[3604],{"name":3585,"start":3605,"end":3606},1341,1349,{"format":353,"lines":658,"tokens":1412,"copies":310,"first":3608,"others":3611},{"name":3490,"start":3609,"end":3610},719,724,[3612],{"name":3490,"start":3613,"end":989},736,{"format":353,"lines":658,"tokens":573,"copies":310,"first":3615,"others":3617},{"name":3616,"start":3196,"end":1976},"internal\u002Fcapi\u002Fapi.go",[3618],{"name":3616,"start":399,"end":2745},{"files":604,"minified":604,"sample":3620},[],{"score":1657,"grade":296,"size":3622,"dimensions":3625,"skipped":3635},{"lines":3623,"files":2275,"class":3624},22136,"M",[3626,3630],{"id":756,"source":757,"value":3380,"adjusted":3380,"lines":3384,"halfLife":760,"formats":3627,"excluded":3628,"weight":317,"score":3629},[353,2308,374,3398,367,3401],[766,388,767],77.7,{"id":778,"source":757,"value":3631,"adjusted":3632,"lines":3633,"halfLife":782,"weight":317,"score":3634},72.4,68.2,16034,38.9,[3636],{"id":770,"reason":2318},{"total":3638,"mean":396,"files":3639},4296,[3640,3643,3647,3650,3655,3658,3662,3665,3668,3671],{"path":3585,"complexity":814,"lines":3641,"bytes":3642},2105,71630,{"path":3490,"complexity":3644,"lines":3645,"bytes":3646},402,2640,86171,{"path":3408,"complexity":688,"lines":3648,"bytes":3649},1684,47011,{"path":3651,"complexity":3652,"lines":3653,"bytes":3654},"internal\u002Fperf\u002Fperf.go",278,1363,35957,{"path":3616,"complexity":1425,"lines":3656,"bytes":3657},594,15915,{"path":3659,"complexity":1201,"lines":3660,"bytes":3661},"cmd\u002Ftailcat\u002Fcli_test.go",658,21110,{"path":3442,"complexity":714,"lines":3663,"bytes":3664},598,15966,{"path":3666,"complexity":368,"lines":2877,"bytes":3667},"cmd\u002Ftailcat\u002Fperf.go",15098,{"path":3669,"complexity":1692,"lines":3034,"bytes":3670},"internal\u002Fperf\u002Fperf_test.go",11985,{"path":3672,"complexity":1259,"lines":3673,"bytes":3674},"tailcat_ssh_test.go",497,12884,{"percentage":604,"findings":604,"files":317,"byCategory":3676,"largest":3677},[],[],{"name":3679,"url":3680,"description":3681,"language":327,"stars":3682,"starsToday":479,"defaultBranch":339,"headSha":3683,"durationMs":3684,"total":3685,"formats":3689,"topClones":3729,"code":3866,"health":3978,"complexity":4002,"deadCode":4052},"Likely7\u002FVeyra-NRVideo","https:\u002F\u002Fgithub.com\u002FLikely7\u002FVeyra-NRVideo","Bring PS5 GTA6 to 120FPS with DLSS 5. An advanced Windows video player and capture enhancement tool featuring real-time preview for videos, images, and capture card sources. Combine AI-powered Super Resolution, DLSS5 image enhancement, and Frame Generation to deliver a next-generation visual experience.",1698,"8332c8a8382242096a2699d3ba4dd52ad47bbd74",2592,{"sources":824,"lines":329,"tokens":3686,"clones":328,"duplicatedLines":330,"duplicatedTokens":3687,"percentage":331,"percentageTokens":3688},4308796,256663,5.96,[3690,3695,3701,3705,3708,3711,3715,3719,3723,3726],{"format":408,"sources":3691,"lines":3692,"clones":814,"duplicatedLines":3693,"percentage":3694},444,35761,6968,19.48,{"format":3696,"sources":1523,"lines":3697,"clones":3698,"duplicatedLines":3699,"percentage":3700},"cpp",119888,378,3465,2.89,{"format":381,"sources":2439,"lines":3702,"clones":714,"duplicatedLines":3703,"percentage":3704},61186,2259,3.69,{"format":1433,"sources":927,"lines":3706,"clones":416,"duplicatedLines":1785,"percentage":3707},11678,8.97,{"format":602,"sources":1229,"lines":3709,"clones":389,"duplicatedLines":547,"percentage":3710},8061,6.19,{"format":360,"sources":723,"lines":3712,"clones":1695,"duplicatedLines":3713,"percentage":3714},37407,5738,15.34,{"format":3716,"sources":2190,"lines":3717,"clones":478,"duplicatedLines":1970,"percentage":3718},"hlsl",5010,3.79,{"format":2308,"sources":1326,"lines":3720,"clones":405,"duplicatedLines":3721,"percentage":3722},30226,205,0.68,{"format":766,"sources":927,"lines":3724,"clones":598,"duplicatedLines":1402,"percentage":3725},563,30.37,{"format":891,"sources":704,"lines":3727,"clones":658,"duplicatedLines":2283,"percentage":3728},882,7.71,[3730,3749,3777,3798,3815,3826,3833,3840,3849,3857],{"format":360,"lines":3731,"tokens":3732,"copies":310,"first":3733,"others":3737,"excerpt":3741},2844,8934,{"name":3734,"start":3735,"end":3736},"docs\u002FUI_MIGRATION_SCOPE_BASELINE_2026-09-27.json",1248,4091,[3738],{"name":3734,"start":3739,"end":3740},4568,7411,{"lines":3742,"total":3731},[441,442,3743,3744,3745,3746,3747,441,442,3748],"  \"path\": \"tools\u002Fquality_probe\u002Fmain.cpp\",","  \"status\": \"committed\",","  \"scope\": null,","  \"headBlob\": \"1c688cbd97953a98dbe2d916654c6970cd149680\",","  \"worktreeSha256\": \"8585D094DFA58910515AADB342FD8E6D142C31B95467ACFE8ECD4FEE3B4305E3\"","  \"path\": \"veyra_preset_library_tests\u002F.ninja_deps\",",{"format":408,"lines":1287,"tokens":521,"copies":704,"first":3750,"others":3752,"excerpt":3765},{"name":3751,"start":704,"end":389},"scripts\u002Facceptance\u002Flist-preset-flow-audit.py",[3753,3755,3757,3759,3761,3763],{"name":3754,"start":704,"end":389},"scripts\u002Facceptance\u002Fpublish-2.0.4-audit.py",{"name":3756,"start":704,"end":389},"scripts\u002Facceptance\u002Fpublish-2.0.5-audit.py",{"name":3758,"start":704,"end":389},"scripts\u002Facceptance\u002Frelease-2.0.3-package-audit.py",{"name":3760,"start":704,"end":389},"scripts\u002Facceptance\u002Frelease-2.0.4-audit.py",{"name":3762,"start":704,"end":389},"scripts\u002Facceptance\u002Frelease-2.0.6-audit.py",{"name":3764,"start":704,"end":389},"scripts\u002Facceptance\u002Fvfg-next-audit.py",{"lines":3766,"total":1287},[3767,3768,3769,3770,3771,3772,3773,3774,3775,3776],"app=Path(sys.argv[1]).resolve(); flavor=sys.argv[2]; label=sys.argv[3]","assert app.is_relative_to(BASE.resolve()) and flavor in ('NVIDIA','AMD')","out=BASE\u002F'logs'\u002FTASK\u002F(label+'.json'); assert not out.exists()","manifest=json.loads((app\u002F'package-manifest.json').read_text(encoding='utf8'))","names={f.relative_to(app).as_posix():f for f in app.rglob('*') if f.is_file()}","expected={r['path'] for r in manifest['files']}|{'package-manifest.json'}","assert set(names)==expected, {'unexpected':list(set(names)-expected),'missing':list(expected-set(names))}","for row in manifest['files']:","    f=names[row['path']]","    with f.open('rb') as stream: sha=hashlib.file_digest(stream,'sha256').hexdigest()",{"format":408,"lines":3000,"tokens":3778,"copies":425,"first":3779,"others":3781,"excerpt":3786},2181,{"name":3780,"start":643,"end":2931},"scripts\u002Facceptance\u002Fminimal-edge-tests.py",[3782,3784],{"name":3783,"start":643,"end":2931},"scripts\u002Facceptance\u002Frelease-2.0.3-edge-tests.py",{"name":3785,"start":643,"end":2931},"scripts\u002Facceptance\u002Fruntime-size-edge-tests.py",{"lines":3787,"total":3000},[3788,3789,3790,3791,3792,3793,3794,3795,3796,3797],"subprocess.run([sys.executable,'-B',str(ROOT\u002F'scripts\u002Facceptance\u002Fminimal-edge-control.py')],check=True)","if not APP.exists():","    APP.mkdir()","    for path in REFERENCE.rglob('*'):","        if not path.is_file():continue","        rel=path.relative_to(REFERENCE); dst=APP\u002Frel","        dst.parent.mkdir(parents=True,exist_ok=True)","        if path.suffix.lower() in {'.exe','.qml','.js','.json','.log'} or rel.parts[0] in {'qml','shaders'}:","            shutil.copy2(path,dst)","        else:os.link(path,dst)",{"format":381,"lines":577,"tokens":3799,"copies":704,"first":3800,"others":3802},707,{"name":3801,"start":704,"end":916},"docs\u002Fhistory\u002Freports\u002FRUNTIME_COMPONENTS_0.0.3.md",[3803,3805,3807,3809,3811,3813],{"name":3804,"start":704,"end":916},"docs\u002Fhistory\u002Freports\u002FRUNTIME_COMPONENTS_0.0.4.md",{"name":3806,"start":704,"end":916},"docs\u002Fhistory\u002Freports\u002FRUNTIME_COMPONENTS_0.0.5.md",{"name":3808,"start":704,"end":916},"docs\u002Fhistory\u002Freports\u002FRUNTIME_COMPONENTS_1.0.0.md",{"name":3810,"start":704,"end":916},"docs\u002Fhistory\u002Freports\u002FRUNTIME_COMPONENTS_1.0.1.md",{"name":3812,"start":704,"end":916},"docs\u002Fhistory\u002Freports\u002FRUNTIME_COMPONENTS_1.0.2.md",{"name":3814,"start":704,"end":916},"docs\u002Fhistory\u002Freports\u002FRUNTIME_COMPONENTS_1.1.0.md",{"format":360,"lines":3816,"tokens":3817,"copies":425,"first":3818,"others":3821},518,1815,{"name":3819,"start":303,"end":3820},"docs\u002FRELEASE_2.0.0_RUNTIME_LOCK.json",521,[3822,3824],{"name":3823,"start":303,"end":3820},"docs\u002FRELEASE_2.0.2_RUNTIME_LOCK.json",{"name":3825,"start":303,"end":3820},"docs\u002FRELEASE_2.0.3_RUNTIME_LOCK.json",{"format":1433,"lines":1839,"tokens":3827,"copies":310,"first":3828,"others":3830},3397,{"name":3829,"start":317,"end":1839},"licenses\u002Fxbox\u002Flibdatachannel.txt",[3831],{"name":3832,"start":317,"end":1839},"licenses\u002Fxbox\u002Flibjuice.txt",{"format":381,"lines":2457,"tokens":3834,"copies":310,"first":3835,"others":3837},2731,{"name":3836,"start":317,"end":2457},"docs\u002Fhistory\u002Freleases\u002FRELEASE_NOTES_2.0.0.md",[3838],{"name":3839,"start":737,"end":1199},"docs\u002Fhistory\u002Freleases\u002FRELEASE_NOTES_2.0.1.md",{"format":408,"lines":1429,"tokens":3841,"copies":425,"first":3842,"others":3844},1162,{"name":3843,"start":537,"end":2028},"scripts\u002Facceptance\u002Fpublish-2.0.4-cold.py",[3845,3847],{"name":3846,"start":537,"end":2028},"scripts\u002Facceptance\u002Fpublish-2.0.5-cold.py",{"name":3848,"start":537,"end":2028},"scripts\u002Facceptance\u002Frelease-2.0.6-cold.py",{"format":408,"lines":1429,"tokens":3850,"copies":425,"first":3851,"others":3853},1153,{"name":3852,"start":537,"end":2028},"scripts\u002Facceptance\u002Flist-preset-flow-cold.py",[3854,3855],{"name":3843,"start":537,"end":2028},{"name":3856,"start":537,"end":2028},"scripts\u002Facceptance\u002Frelease-2.0.4-cold.py",{"format":408,"lines":389,"tokens":3858,"copies":425,"first":3859,"others":3861},1092,{"name":3860,"start":704,"end":1223},"scripts\u002Facceptance\u002Fdecklink-native-build.py",[3862,3864],{"name":3863,"start":704,"end":1223},"scripts\u002Facceptance\u002Finactive-effects-build.py",{"name":3865,"start":704,"end":1223},"scripts\u002Facceptance\u002Fsettings-sr-ui-build.py",{"sources":272,"lines":3867,"tokens":3868,"clones":3869,"duplicatedLines":3870,"duplicatedTokens":3871,"percentage":3872,"percentageTokens":3873,"formats":3874,"topClones":3893,"generated":3974},154539,1914723,749,9653,141510,6.25,7.39,[3875,3880,3884,3887,3890,3892],{"format":408,"sources":1983,"lines":3876,"clones":3877,"duplicatedLines":3878,"percentage":3879},33811,478,6946,20.54,{"format":3696,"sources":3721,"lines":3881,"clones":3882,"duplicatedLines":3598,"percentage":3883},83161,202,2.46,{"format":602,"sources":2283,"lines":3885,"clones":782,"duplicatedLines":1316,"percentage":3886},7399,6.58,{"format":2308,"sources":3234,"lines":3888,"clones":587,"duplicatedLines":2615,"percentage":3889},28008,0.62,{"format":374,"sources":1238,"lines":3891,"clones":604,"duplicatedLines":604,"percentage":604},1823,{"format":3398,"sources":317,"lines":3325,"clones":604,"duplicatedLines":604,"percentage":604},[3894,3905,3912,3929,3934,3939,3944,3951,3957,3967],{"format":408,"lines":1287,"tokens":521,"copies":704,"first":3895,"others":3896,"excerpt":3903},{"name":3751,"start":704,"end":389},[3897,3898,3899,3900,3901,3902],{"name":3754,"start":704,"end":389},{"name":3756,"start":704,"end":389},{"name":3758,"start":704,"end":389},{"name":3760,"start":704,"end":389},{"name":3762,"start":704,"end":389},{"name":3764,"start":704,"end":389},{"lines":3904,"total":1287},[3767,3768,3769,3770,3771,3772,3773,3774,3775,3776],{"format":408,"lines":3000,"tokens":3778,"copies":425,"first":3906,"others":3907,"excerpt":3910},{"name":3780,"start":643,"end":2931},[3908,3909],{"name":3783,"start":643,"end":2931},{"name":3785,"start":643,"end":2931},{"lines":3911,"total":3000},[3788,3789,3790,3791,3792,3793,3794,3795,3796,3797],{"format":408,"lines":1429,"tokens":3841,"copies":425,"first":3913,"others":3914,"excerpt":3917},{"name":3843,"start":537,"end":2028},[3915,3916],{"name":3846,"start":537,"end":2028},{"name":3848,"start":537,"end":2028},{"lines":3918,"total":1429},[3919,3920,3921,3922,3923,3924,3925,3926,3927,3928],"PACK=BASE\u002F'releases'\u002FTASK\u002F'packages'; LOG=BASE\u002F'logs'\u002FTASK","receipt=json.loads((PACK\u002F'DELIVERY.json').read_text(encoding='utf8'))","results=[]","for row in receipt:","    vendor=row['vendor']; destination=BASE\u002F'verify'\u002FTASK\u002Fvendor","    assert destination.resolve().is_relative_to((BASE\u002F'verify'\u002FTASK).resolve()) and not destination.exists()","    archive=Path(row['archive']); assert hashlib.sha256(archive.read_bytes()).hexdigest()==row['archiveSha256']","    with zipfile.ZipFile(archive) as z:","        assert len(z.infolist())\u003C5000 and sum(i.file_size for i in z.infolist())\u003C5*1024**3","        for entry in z.infolist():",{"format":408,"lines":1429,"tokens":3850,"copies":425,"first":3930,"others":3931},{"name":3852,"start":537,"end":2028},[3932,3933],{"name":3843,"start":537,"end":2028},{"name":3856,"start":537,"end":2028},{"format":408,"lines":389,"tokens":3858,"copies":425,"first":3935,"others":3936},{"name":3860,"start":704,"end":1223},[3937,3938],{"name":3863,"start":704,"end":1223},{"name":3865,"start":704,"end":1223},{"format":408,"lines":419,"tokens":3940,"copies":310,"first":3941,"others":3942},2017,{"name":3863,"start":1239,"end":571},[3943],{"name":3865,"start":1239,"end":571},{"format":408,"lines":741,"tokens":3945,"copies":310,"first":3946,"others":3948},1531,{"name":3947,"start":289,"end":1421},"scripts\u002Facceptance\u002Frelease-2.0.5-perf.py",[3949],{"name":3950,"start":289,"end":1421},"scripts\u002Facceptance\u002Fstability-export-priority-perf.py",{"format":408,"lines":940,"tokens":3952,"copies":310,"first":3953,"others":3954},1390,{"name":3863,"start":712,"end":1425},[3955],{"name":3956,"start":384,"end":613},"scripts\u002Facceptance\u002Fsr-visual-build.py",{"format":408,"lines":416,"tokens":3958,"copies":310,"first":3959,"others":3962},1340,{"name":3960,"start":3961,"end":428},"scripts\u002Facceptance\u002Ftest-2.0.7-package.py",152,[3963],{"name":3964,"start":3965,"end":3966},"scripts\u002Facceptance\u002Ftest-2.0.8-package.py",187,243,{"format":408,"lines":1808,"tokens":3968,"copies":310,"first":3969,"others":3971},1308,{"name":3970,"start":658,"end":940},"scripts\u002Facceptance\u002Fvfg-diagnosis-report.py",[3972],{"name":3973,"start":658,"end":940},"scripts\u002Facceptance\u002Fvfg-opt-report.py",{"files":310,"minified":604,"sample":3975},[3976,3977],"qml\u002FVeyra\u002FIconData.js","src\u002Fpipeline\u002FSmaaLookupTables.cpp",{"score":3979,"grade":299,"size":3980,"dimensions":3983},36.7,{"lines":3981,"files":3982,"class":753},203260,1339,[3984,3991,3997],{"id":756,"source":757,"value":3985,"adjusted":321,"lines":3986,"halfLife":760,"formats":3987,"excluded":3989,"weight":317,"score":3990},5.6,11315,[3696,408,2308,602,3716,3988,374,3398,764],"cmake",[766,388,767],63.6,{"id":770,"source":757,"value":2190,"adjusted":3992,"lines":3993,"halfLife":773,"coverage":3994,"weight":3995,"score":3996},73.2,28985,18.5,0.185,0.1,{"id":778,"source":757,"value":3998,"adjusted":3999,"lines":4000,"halfLife":782,"weight":317,"score":4001},64.4,63.9,130807,41.2,{"total":4003,"mean":1427,"files":4004},72290,[4005,4010,4015,4020,4025,4030,4034,4039,4044,4047],{"path":4006,"complexity":4007,"lines":4008,"bytes":4009},"src\u002Fpipeline\u002FEnhanceGraph.cpp",2252,4481,303049,{"path":4011,"complexity":4012,"lines":4013,"bytes":4014},"src\u002Fengine\u002FEngineController.cpp",1630,3085,279865,{"path":4016,"complexity":4017,"lines":4018,"bytes":4019},"apps\u002Fveyra\u002Fui\u002FAppShell.cpp",1529,1389,144949,{"path":4021,"complexity":4022,"lines":4023,"bytes":4024},"src\u002Fsource\u002FCaptureCardSource.cpp",1139,2055,162230,{"path":4026,"complexity":4027,"lines":4028,"bytes":4029},"apps\u002Fveyra\u002FSettingsWindow.cpp",1046,2016,138160,{"path":4031,"complexity":2728,"lines":4032,"bytes":4033},"src\u002Fengine\u002FPresetLibrary.cpp",1289,83775,{"path":4035,"complexity":4036,"lines":4037,"bytes":4038},"tests\u002Funit\u002FEffectChainTests.cpp",671,1697,124718,{"path":4040,"complexity":4041,"lines":4042,"bytes":4043},"src\u002Fngx\u002FDlssgTransfusion.cpp",539,1598,80078,{"path":4045,"complexity":3298,"lines":2429,"bytes":4046},"src\u002Fui\u002Fbridge\u002FEnhancement.cpp",72669,{"path":4048,"complexity":4049,"lines":4050,"bytes":4051},"src\u002Fsink\u002FWasapiAudioSink.cpp",520,1337,67997,{"percentage":4053,"findings":1062,"files":4054,"byCategory":4055,"largest":4059},76.95,459,[4056,4058],{"category":841,"count":4057},396,{"category":1358,"count":425},[4060,4063,4066,4068,4071,4072,4074,4077,4079,4082],{"category":841,"path":4061,"name":483,"line":317,"lines":4062},"prototypes\u002Fui-redesign-2026-09-25\u002Fpages-node.js",302,{"category":841,"path":4064,"name":483,"line":317,"lines":4065},"scripts\u002Facceptance\u002Flist-preset-flow-tests.py",264,{"category":841,"path":4067,"name":483,"line":317,"lines":1535},"scripts\u002Facceptance\u002Frelease-2.0.4-tests.py",{"category":841,"path":4069,"name":483,"line":317,"lines":4070},"scripts\u002Facceptance\u002Frtss-restart-real.py",245,{"category":841,"path":3964,"name":483,"line":317,"lines":3966},{"category":841,"path":4073,"name":483,"line":317,"lines":3966},"scripts\u002Facceptance\u002Fui-layout-dpi.py",{"category":841,"path":4075,"name":483,"line":317,"lines":4076},"scripts\u002Facceptance\u002Frtss-restart-tests.py",242,{"category":841,"path":4078,"name":483,"line":317,"lines":1585},"scripts\u002Facceptance\u002Fui-fg-backends.py",{"category":841,"path":4080,"name":483,"line":317,"lines":4081},"prototypes\u002Fui-redesign-2026-09-25\u002Fpages-pro.js",235,{"category":841,"path":4083,"name":483,"line":317,"lines":3356},"scripts\u002Fui-check\u002Fui-check.py",{"name":4085,"url":4086,"description":4087,"language":302,"stars":4088,"starsToday":2028,"defaultBranch":339,"headSha":4089,"durationMs":3337,"total":4090,"formats":4097,"topClones":4114,"code":4259,"health":4360,"complexity":4377,"deadCode":4421},"ChromeDevTools\u002Fchrome-devtools-mcp","https:\u002F\u002Fgithub.com\u002FChromeDevTools\u002Fchrome-devtools-mcp","Chrome DevTools for coding agents",55619,"8ba2ac945ebaf1adb92208c29f3a30e73a920956",{"sources":4091,"lines":4092,"tokens":4093,"clones":1082,"duplicatedLines":4094,"duplicatedTokens":4095,"percentage":265,"percentageTokens":4096},347,96789,542268,6587,35039,6.46,[4098,4102,4105,4109,4111,4113],{"format":415,"sources":4099,"lines":4100,"clones":3877,"duplicatedLines":4101,"percentage":358},267,85897,6355,{"format":381,"sources":473,"lines":4103,"clones":673,"duplicatedLines":3152,"percentage":4104},5803,2.07,{"format":402,"sources":595,"lines":4106,"clones":598,"duplicatedLines":4107,"percentage":4108},680,112,16.47,{"format":360,"sources":1238,"lines":4110,"clones":604,"duplicatedLines":604,"percentage":604},2452,{"format":374,"sources":411,"lines":4112,"clones":604,"duplicatedLines":604,"percentage":604},1776,{"format":367,"sources":704,"lines":1404,"clones":604,"duplicatedLines":604,"percentage":604},[4115,4140,4162,4187,4198,4209,4222,4234,4244,4252],{"format":415,"lines":643,"tokens":685,"copies":537,"first":4116,"others":4119,"excerpt":4130},{"name":4117,"start":4118,"end":3491},"tests\u002Ftools\u002Fconsole.test.ts",629,[4120,4122,4125,4128],{"name":4117,"start":3660,"end":4121},681,{"name":4117,"start":4123,"end":4124},687,710,{"name":4117,"start":4126,"end":4127},716,739,{"name":4117,"start":4129,"end":1399},776,{"lines":4131,"total":643},[4132,1512,4133,4134,4135,4136,483,4137,4138,4139],"    `);","server.addHtmlRoute(","  '\u002Findex.html',","  `\u003Cscript src=\"${server.getRoute('\u002Fmain.min.js')}\">\u003C\u002Fscript>`,",");","await withMcpContext(async (response, context, args) => {","  const page = context.getSelectedMcpPage();","  await page.pptrPage.goto(server.getRoute('\u002Findex.html'));",{"format":415,"lines":595,"tokens":661,"copies":537,"first":4141,"others":4143,"excerpt":4152},{"name":4142,"start":640,"end":573},"scripts\u002Feval_scenarios\u002Fcss_cascade_layer_override_test.ts",[4144,4146,4148,4150],{"name":4145,"start":391,"end":916},"scripts\u002Feval_scenarios\u002Fcss_custom_property_resolution_test.ts",{"name":4147,"start":1267,"end":396},"scripts\u002Feval_scenarios\u002Fcss_descendant_specificity_test.ts",{"name":4149,"start":1695,"end":737},"scripts\u002Feval_scenarios\u002Fcss_important_vs_specificity_test.ts",{"name":4151,"start":473,"end":577},"scripts\u002Feval_scenarios\u002Fcss_inline_style_override_test.ts",{"lines":4153,"total":595},[4154,441,4155,4156,4157,4158,4159,4160,483,4161],"  `,","expectations: result => {","  const pageId = result.consumePageNavigation();","  result.assertNextCall(","    'take_snapshot',","    result.hasPageIdRouting ? {pageId} : undefined,","  );","  const cssCalls = result.calls.filter(c => c.name === 'get_css_styles');",{"format":415,"lines":409,"tokens":631,"copies":537,"first":4163,"others":4165,"excerpt":4176},{"name":4164,"start":398,"end":640},"tests\u002Ftools\u002FthirdPartyDeveloper.test.ts",[4166,4168,4171,4173],{"name":4164,"start":1626,"end":4167},782,{"name":4164,"start":4169,"end":4170},844,858,{"name":4164,"start":2518,"end":4172},911,{"name":4164,"start":4174,"end":4175},950,964,{"lines":4177,"total":409},[4178,4179,4180,4181,4182,483,4183,4184,4185,4186],"it('lists tools', async () => {","  await withMcpContext(","    async (response, context, args) => {","      const page = await context.newPage();","      response.setPage(page);","      await page.pptrPage.evaluate(() => {","        const mockToolGroup = {","          name: 'test-group',","          description: 'test description',",{"format":415,"lines":634,"tokens":2264,"copies":303,"first":4188,"others":4190},{"name":4189,"start":573,"end":1111},"src\u002Fconfig\u002Fcli-options.ts",[4191,4193,4196],{"name":4189,"start":1042,"end":4192},252,{"name":4189,"start":4194,"end":4195},725,756,{"name":4189,"start":4197,"end":3001},929,{"format":415,"lines":587,"tokens":674,"copies":425,"first":4199,"others":4202},{"name":4200,"start":1535,"end":4201},"tests\u002Fformatters\u002FNetworkFormatter.test.ts",265,[4203,4206],{"name":4200,"start":4204,"end":4205},466,484,{"name":4200,"start":4207,"end":4208},747,765,{"format":415,"lines":658,"tokens":782,"copies":658,"first":4210,"others":4212},{"name":4211,"start":1974,"end":2278},"tests\u002Ftools\u002Fcomments.test.ts",[4213,4214,4217,4219,4221],{"name":4211,"start":3652,"end":3109},{"name":4211,"start":4215,"end":4216},304,309,{"name":4211,"start":4218,"end":833},363,{"name":4211,"start":4220,"end":3644},397,{"name":4211,"start":3164,"end":904},{"format":415,"lines":411,"tokens":1717,"copies":303,"first":4223,"others":4226},{"name":4164,"start":4224,"end":4225},489,501,[4227,4229,4231],{"name":4164,"start":4228,"end":1351},622,{"name":4164,"start":4230,"end":4106},668,{"name":4164,"start":4232,"end":4233},1115,1127,{"format":415,"lines":598,"tokens":396,"copies":537,"first":4235,"others":4238},{"name":4236,"start":906,"end":4237},"tests\u002FMcpResponse.test.ts",476,[4239,4240,4241,4242],{"name":4236,"start":3877,"end":2386},{"name":4236,"start":4224,"end":2871},{"name":4236,"start":2767,"end":3088},{"name":4236,"start":4243,"end":3239},507,{"format":415,"lines":723,"tokens":662,"copies":425,"first":4245,"others":4248},{"name":4246,"start":4247,"end":4076},"tests\u002Fformatters\u002FsnapshotFormatter.test.ts",222,[4249,4251],{"name":4246,"start":479,"end":4250},276,{"name":4246,"start":4205,"end":1082},{"format":415,"lines":782,"tokens":4253,"copies":310,"first":4254,"others":4256},203,{"name":4164,"start":4255,"end":2518},848,[4257],{"name":4164,"start":4258,"end":4174},901,{"sources":1418,"lines":4260,"tokens":4261,"clones":634,"duplicatedLines":3192,"duplicatedTokens":4262,"percentage":4263,"percentageTokens":4264,"formats":4265,"topClones":4270,"generated":4358},35394,157637,2143,1.15,1.36,[4266,4268],{"format":415,"sources":2931,"lines":4267,"clones":634,"duplicatedLines":3192,"percentage":420},33778,{"format":374,"sources":418,"lines":4269,"clones":604,"duplicatedLines":604,"percentage":604},1616,[4271,4280,4303,4319,4325,4332,4337,4342,4347,4352],{"format":415,"lines":595,"tokens":661,"copies":537,"first":4272,"others":4273,"excerpt":4278},{"name":4142,"start":640,"end":573},[4274,4275,4276,4277],{"name":4145,"start":391,"end":916},{"name":4147,"start":1267,"end":396},{"name":4149,"start":1695,"end":737},{"name":4151,"start":473,"end":577},{"lines":4279,"total":595},[4154,441,4155,4156,4157,4158,4159,4160,483,4161],{"format":415,"lines":409,"tokens":291,"copies":303,"first":4281,"others":4285,"excerpt":4293},{"name":4282,"start":4283,"end":4284},"src\u002Ftools\u002Fmemory.ts",234,248,[4286,4288,4290],{"name":4282,"start":1214,"end":4287},366,{"name":4282,"start":3189,"end":4289},424,{"name":4282,"start":4291,"end":4292},536,550,{"lines":4294,"total":409},[4295,4296,4297,4298,4299,441,4300,4301,4302,441],"  'Loads and caches a memory heapsnapshot and returns retainers for a specific node ID.',","annotations: {","  category: ToolCategory.MEMORY,","  readOnlyHint: true,","  conditions: ['memoryDebugging'],","blockedByDialog: false,","verifyFilesSchema: {","  filePath: true,",{"format":415,"lines":704,"tokens":1427,"copies":303,"first":4304,"others":4306,"excerpt":4311},{"name":4305,"start":1912,"end":4216},"src\u002Fprocessors\u002FHeapSnapshotManager.ts",[4307,4308,4309],{"name":4305,"start":3347,"end":1335},{"name":4305,"start":3484,"end":4091},{"name":4305,"start":4310,"end":2743},359,{"lines":4312,"total":704},[4313,4314,4315,4316,4317,4318,1649],"): Promise\u003CDevTools.HeapSnapshotModel.HeapSnapshotModel.ItemsRange> {","  using guard = await this.#scheduleTask(filePath);","  const snapshot = await this.getSnapshot(filePath);","  const nodeIndex = await snapshot.proxy.nodeIndexForId(nodeId);","  if (nodeIndex === undefined) {","    throw new Error(`Node with ID ${nodeId} not found`);",{"format":415,"lines":587,"tokens":2608,"copies":310,"first":4320,"others":4322},{"name":4321,"start":870,"end":635},"scripts\u002Feval_scenarios\u002Fnetwork_override_local_file_test.ts",[4323],{"name":4324,"start":870,"end":635},"scripts\u002Feval_scenarios\u002Fnetwork_override_redirect_test.ts",{"format":415,"lines":704,"tokens":1657,"copies":425,"first":4326,"others":4329},{"name":4305,"start":4327,"end":4328},318,324,[4330,4331],{"name":4305,"start":2366,"end":1321},{"name":4305,"start":2241,"end":4287},{"format":415,"lines":1238,"tokens":916,"copies":425,"first":4333,"others":4334},{"name":4282,"start":4283,"end":1535},[4335,4336],{"name":4282,"start":4225,"end":3239},{"name":4282,"start":1519,"end":3508},{"format":415,"lines":723,"tokens":1111,"copies":310,"first":4338,"others":4340},{"name":4339,"start":2718,"end":1531},"src\u002Ftools\u002Fcomments.ts",[4341],{"name":4339,"start":1577,"end":4283},{"format":415,"lines":595,"tokens":377,"copies":310,"first":4343,"others":4345},{"name":4344,"start":2190,"end":2434},"src\u002Ftelemetry\u002Ftransformation.ts",[4346],{"name":4344,"start":665,"end":685},{"format":415,"lines":255,"tokens":2025,"copies":310,"first":4348,"others":4350},{"name":4305,"start":4062,"end":4349},310,[4351],{"name":4305,"start":2244,"end":2391},{"format":415,"lines":927,"tokens":2028,"copies":310,"first":4353,"others":4355},{"name":4354,"start":734,"end":584},"scripts\u002Feval_scenarios\u002Flighthouse_a11y_test.ts",[4356],{"name":4357,"start":734,"end":584},"scripts\u002Feval_scenarios\u002Flighthouse_best_practices_test.ts",{"files":317,"minified":604,"sample":4359},[4189],{"score":4361,"grade":296,"size":4362,"dimensions":4364},58.4,{"lines":4363,"files":4250,"class":3624},87513,[4365,4371,4373],{"id":756,"source":757,"value":4366,"adjusted":4367,"lines":4101,"halfLife":760,"formats":4368,"excluded":4369,"weight":317,"score":4370},7.3,7.2,[415,374],[388,767],55.7,{"id":770,"source":757,"value":3388,"adjusted":3388,"lines":3703,"halfLife":773,"weight":317,"score":4372},78.7,{"id":778,"source":757,"value":4374,"adjusted":4375,"lines":4376,"halfLife":782,"weight":317,"score":3278},57.7,56.9,50486,{"total":1413,"mean":4378,"files":4379},35.3,[4380,4384,4388,4393,4397,4401,4405,4408,4412,4416],{"path":4381,"complexity":2889,"lines":4382,"bytes":4383},"tests\u002FToolHandler.test.ts",3151,100581,{"path":4385,"complexity":2663,"lines":4386,"bytes":4387},"src\u002FMcpPage.ts",1726,53621,{"path":4389,"complexity":4390,"lines":4391,"bytes":4392},"tests\u002FMcpPage.test.ts",263,2857,97036,{"path":4394,"complexity":4192,"lines":4395,"bytes":4396},"src\u002FMcpResponse.ts",2026,65861,{"path":4398,"complexity":4192,"lines":4399,"bytes":4400},"tests\u002FMcpContext.test.ts",2163,78172,{"path":4402,"complexity":2278,"lines":4403,"bytes":4404},"src\u002Fformatters\u002FCssFormatter.ts",1281,36442,{"path":4236,"complexity":1689,"lines":4406,"bytes":4407},2397,84387,{"path":4409,"complexity":1689,"lines":4410,"bytes":4411},"tests\u002Ftools\u002Fpages.test.ts",1935,61268,{"path":4413,"complexity":558,"lines":4414,"bytes":4415},"tests\u002Fmocks.ts",1458,43589,{"path":4417,"complexity":4418,"lines":4419,"bytes":4420},"tests\u002Fcli.test.ts",193,1575,50414,{"percentage":4422,"findings":1674,"files":1345,"byCategory":4423,"largest":4427},2.58,[4424,4425,4426],{"category":841,"count":635},{"category":844,"count":310},{"category":846,"count":658},[4428,4430,4432,4434,4436,4438,4440,4441,4442,4445],{"category":841,"path":4429,"name":483,"line":317,"lines":1523},"scripts\u002Fgenerate-third-party-notices.ts",{"category":841,"path":4431,"name":483,"line":317,"lines":1097},"scripts\u002Feval_scenarios\u002Ffill_select_and_checkboxes_test.ts",{"category":841,"path":4433,"name":483,"line":317,"lines":3200},"scripts\u002Feval_scenarios\u002Fpage_id_routing_cross_page_state_test.ts",{"category":841,"path":4435,"name":483,"line":317,"lines":940},"scripts\u002Feval_scenarios\u002Fpage_id_routing_concurrent_form_test.ts",{"category":841,"path":4437,"name":483,"line":317,"lines":2028},"scripts\u002Feval_scenarios\u002Fpage_focus_keyboard_test.ts",{"category":841,"path":4439,"name":483,"line":317,"lines":2482},"scripts\u002Fprofile\u002Fscenarios\u002Fget_css_styles.ts",{"category":841,"path":4142,"name":483,"line":317,"lines":1808},{"category":841,"path":4147,"name":483,"line":317,"lines":741},{"category":846,"path":4443,"name":4444,"line":838,"lines":291},"src\u002Fdaemon\u002Fdaemon.ts","handleRequest",{"category":841,"path":4145,"name":483,"line":317,"lines":452},{"\u002Ftrending\u002F2026-11-14":4447},{"views":604,"visits":604},null,1794720251495]