[{"data":1,"prerenderedAt":3113},["ShallowReactive",2],{"navigation_docs":3,"trending-day-2026-10-26":249,"page-views-\u002Ftrending\u002F2026-10-26":3110,"trending-week-null":3112},[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":330},"2026-10-26","2026-10-26T05:32:18.055Z","github-trending-daily","5.4.2",{"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":277,"codeSources":278,"codeLines":279,"codeClones":280,"codeDuplicatedLines":281,"codePercentage":282,"codeMedianPercentage":283,"codeMostDuplicated":284,"codeCleanest":288,"generatedFiles":291,"avgHealth":292,"healthiest":293,"leastHealthy":296,"languages":299},7,3777,735610,6494575,2312,27789,306889,3.78,4.73,4.68,2.84,{"name":267,"clones":268,"percentage":269},"Nutlope\u002Fhallmark",484,8.34,{"name":271,"clones":272,"percentage":273},"TauricResearch\u002FTradingAgents",40,1.26,{"name":275,"clones":276,"percentage":265},"JetBrains\u002Fthinkrail",988,6,1389,372516,528,5676,1.52,1.44,{"name":285,"clones":286,"percentage":287},"AgriciDaniel\u002Fclaude-seo",65,2.61,{"name":267,"clones":289,"percentage":290},9,0.63,3,59.4,{"name":271,"score":294,"grade":295},83.6,"B",{"name":267,"score":297,"grade":298},31.1,"E",[300,307,313,318,324],{"language":301,"repos":302,"clones":303,"lines":304,"duplicatedLines":305,"percentage":306},"TypeScript",2,1015,359845,9956,2.77,{"language":308,"repos":302,"clones":309,"lines":310,"duplicatedLines":311,"percentage":312},"Python",308,110676,6799,6.14,{"language":314,"repos":315,"clones":268,"lines":316,"duplicatedLines":317,"percentage":269},"CSS",1,62602,5224,{"language":319,"repos":315,"clones":320,"lines":321,"duplicatedLines":322,"percentage":323},"Rust",477,196774,5342,2.71,{"language":325,"repos":315,"clones":326,"lines":327,"duplicatedLines":328,"percentage":329},"JavaScript",28,5713,468,8.19,[331,845,1312,1616,1970,2452,2711],{"name":267,"url":332,"description":333,"language":314,"stars":334,"starsToday":335,"defaultBranch":336,"headSha":337,"durationMs":338,"total":339,"formats":344,"topClones":390,"code":597,"health":733,"complexity":763,"deadCode":814},"https:\u002F\u002Fgithub.com\u002FNutlope\u002Fhallmark","Anti-AI-slop design skill for Claude Code, Cursor, and Codex.",34315,1317,"main","7ec868225c6caa040558c321ee0fefa0e73f83a8",1149,{"sources":340,"lines":316,"tokens":341,"clones":268,"duplicatedLines":317,"duplicatedTokens":342,"percentage":269,"percentageTokens":343},573,1459385,144838,9.92,[345,352,359,364,369,372,376,380,383,387],{"format":346,"sources":347,"lines":348,"clones":349,"duplicatedLines":350,"percentage":351},"css",270,19653,247,3230,16.44,{"format":353,"sources":354,"lines":355,"clones":356,"duplicatedLines":357,"percentage":358},"markup",91,18459,228,1911,10.35,{"format":360,"sources":272,"lines":361,"clones":289,"duplicatedLines":362,"percentage":363},"javascript",12099,83,0.69,{"format":365,"sources":366,"lines":367,"clones":368,"duplicatedLines":368,"percentage":368},"markdown",102,7976,0,{"format":370,"sources":255,"lines":371,"clones":368,"duplicatedLines":368,"percentage":368},"json",2609,{"format":373,"sources":374,"lines":375,"clones":368,"duplicatedLines":368,"percentage":368},"python",4,1104,{"format":377,"sources":378,"lines":379,"clones":368,"duplicatedLines":368,"percentage":368},"yaml",49,549,{"format":381,"sources":302,"lines":382,"clones":368,"duplicatedLines":368,"percentage":368},"tsx",66,{"format":384,"sources":385,"lines":386,"clones":368,"duplicatedLines":368,"percentage":368},"text",5,38,{"format":388,"sources":315,"lines":389,"clones":368,"duplicatedLines":368,"percentage":368},"bash",29,[391,426,461,489,510,528,545,562,575,589],{"format":346,"lines":392,"tokens":393,"copies":394,"first":395,"others":397,"excerpt":414},12,518,44,{"name":396,"start":315,"end":392},"site\u002Fmade\u002Fatelier-architect\u002Ftokens.css",[398,400,402,404,406,408,410,412],{"name":399,"start":315,"end":392},"site\u002Fmade\u002Fbloom-swim-school\u002Ftokens.css",{"name":401,"start":315,"end":392},"site\u002Fmade\u002Fcobalt-database-client\u002Ftokens.css",{"name":403,"start":315,"end":392},"site\u002Fmade\u002Fcoral-physio-booking\u002Ftokens.css",{"name":405,"start":315,"end":392},"site\u002Fmade\u002Ffurrow-farm-shop\u002Ftokens.css",{"name":407,"start":315,"end":392},"site\u002Fmade\u002Fhum-coding-camp\u002Ftokens.css",{"name":409,"start":315,"end":392},"site\u002Fmade\u002Fpiste-surf-school\u002Ftokens.css",{"name":411,"start":315,"end":392},"site\u002Fmade\u002Fribbon-meditation-app\u002Ftokens.css",{"name":413,"start":315,"end":392},"site\u002Fmade\u002Fvellum-coffee-subscription\u002Ftokens.css",{"lines":415,"total":392},[416,417,418,419,420,421,422,423,424,425],":root {","  color-scheme: light;","  --space-3xs: 2px; --space-2xs: 4px; --space-xs: 8px; --space-sm: 12px; --space-md: 16px; --space-lg: 24px; --space-xl: 40px; --space-2xl: 64px; --space-3xl: …","  --text-xs: 0.8125rem; --text-sm: 0.875rem; --text-md: 1rem; --text-lg: 1.25rem; --text-xl: 1.5625rem; --text-2xl: 1.953rem; --text-3xl: 2.441rem;","  --text-display-s: clamp(2.25rem, 4vw + 0.5rem, 3.75rem); --text-display: clamp(2.75rem, 5vw + 1rem, 5.25rem);","  --text-section: clamp(2rem, 2.5vw + 1rem, 3.5rem); --text-title: clamp(1.25rem, 0.75vw + 0.875rem, 1.625rem); --text-lead: clamp(1.125rem, 0.35vw + 1rem, 1.3…","  --ease-out: cubic-bezier(0.16, 1, 0.3, 1); --ease-in: cubic-bezier(0.7, 0, 0.84, 0); --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);","  --dur-micro: 120ms; --dur-short: 220ms; --dur-long: 420ms;","  --color-error: oklch(52% 0.19 27); --color-success: oklch(50% 0.12 150);","  --container: 1440px; --gutter: 64px; --gap-columns: 32px; --section-gap-s: 120px; --section-gap: 144px; --section-gap-l: 176px;",{"format":346,"lines":427,"tokens":428,"copies":429,"first":430,"others":432,"excerpt":449},26,978,11,{"name":431,"start":315,"end":427},"site\u002Fmade\u002Fatelier-architect\u002Fbase.css",[433,435,437,439,441,443,445,447],{"name":434,"start":315,"end":427},"site\u002Fmade\u002Fhedgerow-dog-walking\u002Fbase.css",{"name":436,"start":315,"end":427},"site\u002Fmade\u002Fribbon-meditation-app\u002Fbase.css",{"name":438,"start":315,"end":427},"site\u002Fmade\u002Fvellum-coffee-subscription\u002Fbase.css",{"name":440,"start":315,"end":427},"site\u002Fmade\u002Fvellum-translation\u002Fbase.css",{"name":442,"start":315,"end":427},"site\u002Fthemes\u002Farcade\u002Fbase.css",{"name":444,"start":315,"end":427},"site\u002Fthemes\u002Fcarnival\u002Fbase.css",{"name":446,"start":315,"end":427},"site\u002Fthemes\u002Ffurrow\u002Fbase.css",{"name":448,"start":315,"end":427},"site\u002Fthemes\u002Friso\u002Fbase.css",{"lines":450,"total":427},[451,452,453,454,455,456,457,458,459,460],"*, *::before, *::after { box-sizing: border-box; }","html, body { overflow-x: clip; }","html { scrollbar-color: var(--color-muted) var(--color-paper); scroll-padding-top: var(--space-3xl); }","body { margin: 0; background: var(--color-paper); color: var(--color-ink); font-family: var(--font-body); font-size: var(--text-md); line-height: 1.55; -webkit…","::selection { background: color-mix(in oklab, var(--color-accent) 22%, transparent); color: var(--color-ink); }",":focus-visible { outline: 2px solid var(--color-focus); outline-offset: 2px; }","a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: 0.16em; }","h1, h2, h3 { margin: 0; font-family: var(--font-display); font-weight: var(--display-weight, 700); font-synthesis: none; letter-spacing: var(--tracking-display…","h1 { max-width: 20ch; font-size: var(--text-display); } h2 { max-width: 30ch; font-size: var(--text-section); } h3 { max-width: 40ch; font-size: var(--text-tit…",".lead { font-size: var(--text-lead); line-height: 1.45; max-width: 52ch; }",{"format":346,"lines":462,"tokens":463,"copies":464,"first":465,"others":466,"excerpt":483},22,792,13,{"name":431,"start":385,"end":427},[467,469,471,473,475,477,479,481],{"name":468,"start":385,"end":427},"site\u002Fmade\u002Fbloom-swim-school\u002Fbase.css",{"name":470,"start":385,"end":427},"site\u002Fmade\u002Fhum-coding-camp\u002Fbase.css",{"name":472,"start":385,"end":427},"site\u002Fmade\u002Fmidnight-jazz-club\u002Fbase.css",{"name":474,"start":385,"end":427},"site\u002Fmade\u002Fterminal-migrations-cli\u002Fbase.css",{"name":476,"start":385,"end":427},"site\u002Fthemes\u002Fbrutal\u002Fbase.css",{"name":478,"start":385,"end":427},"site\u002Fthemes\u002Fgrid\u002Fbase.css",{"name":480,"start":385,"end":427},"site\u002Fthemes\u002Fink\u002Fbase.css",{"name":482,"start":385,"end":427},"site\u002Fthemes\u002Fpasteup\u002Fbase.css",{"lines":484,"total":462},[455,456,457,458,459,460,485,486,487,488],"p { margin: 0; text-wrap: pretty; }","p:not([class]) { max-width: 65ch; }","img, video { max-width: 100%; height: auto; display: block; }","svg { display: block; }",{"format":346,"lines":392,"tokens":393,"copies":490,"first":491,"others":493},17,{"name":492,"start":315,"end":392},"site\u002Fmade\u002Fdarkroom-photographer\u002Ftokens.css",[494,496,498,500,502,504,506,508],{"name":495,"start":315,"end":392},"site\u002Fmade\u002Fhedgerow-dog-walking\u002Ftokens.css",{"name":497,"start":315,"end":392},"site\u002Fmade\u002Fkiln-pottery-school\u002Ftokens.css",{"name":499,"start":315,"end":392},"site\u002Fmade\u002Fkiln-stoneware-shop\u002Ftokens.css",{"name":501,"start":315,"end":392},"site\u002Fmade\u002Fmidnight-jazz-club\u002Ftokens.css",{"name":503,"start":315,"end":392},"site\u002Fmade\u002Fmidnight-video-tool\u002Ftokens.css",{"name":505,"start":315,"end":392},"site\u002Fmade\u002Fterminal-migrations-cli\u002Ftokens.css",{"name":507,"start":315,"end":392},"site\u002Fthemes\u002Farcade\u002Ftokens.css",{"name":509,"start":315,"end":392},"site\u002Fthemes\u002Fconsole\u002Ftokens.css",{"format":346,"lines":511,"tokens":512,"copies":255,"first":513,"others":515},23,852,{"name":514,"start":374,"end":427},"site\u002Fmade\u002Ffurrow-farm-shop\u002Fbase.css",[516,518,520,522,524,526],{"name":517,"start":374,"end":427},"site\u002Fmade\u002Fpiste-surf-school\u002Fbase.css",{"name":519,"start":374,"end":427},"site\u002Fthemes\u002Fbroadside\u002Fbase.css",{"name":521,"start":374,"end":427},"site\u002Fthemes\u002Fdusk\u002Fbase.css",{"name":523,"start":374,"end":427},"site\u002Fthemes\u002Fhalftone\u002Fbase.css",{"name":525,"start":374,"end":427},"site\u002Fthemes\u002Flumen\u002Fbase.css",{"name":527,"start":374,"end":427},"site\u002Fthemes\u002Fpiste\u002Fbase.css",{"format":346,"lines":511,"tokens":529,"copies":255,"first":530,"others":532},841,{"name":531,"start":374,"end":427},"site\u002Fmade\u002Fcoral-physio-booking\u002Fbase.css",[533,535,537,539,541,543],{"name":534,"start":374,"end":427},"site\u002Fmade\u002Fdarkroom-photographer\u002Fbase.css",{"name":536,"start":374,"end":427},"site\u002Fmade\u002Fkiln-pottery-school\u002Fbase.css",{"name":538,"start":374,"end":427},"site\u002Fmade\u002Fkiln-stoneware-shop\u002Fbase.css",{"name":540,"start":374,"end":427},"site\u002Fthemes\u002Fdarkroom\u002Fbase.css",{"name":542,"start":374,"end":427},"site\u002Fthemes\u002Fformwork\u002Fbase.css",{"name":544,"start":374,"end":427},"site\u002Fthemes\u002Fkiln\u002Fbase.css",{"format":346,"lines":511,"tokens":546,"copies":255,"first":547,"others":549},834,{"name":548,"start":374,"end":427},"site\u002Fmade\u002Fcobalt-database-client\u002Fbase.css",[550,552,554,556,558,560],{"name":551,"start":374,"end":427},"site\u002Fthemes\u002Falmanac\u002Fbase.css",{"name":553,"start":374,"end":427},"site\u002Fthemes\u002Fatelier\u002Fbase.css",{"name":555,"start":374,"end":427},"site\u002Fthemes\u002Feditorial\u002Fbase.css",{"name":557,"start":374,"end":427},"site\u002Fthemes\u002Fgarden\u002Fbase.css",{"name":559,"start":374,"end":427},"site\u002Fthemes\u002Fribbon\u002Fbase.css",{"name":561,"start":374,"end":427},"site\u002Fthemes\u002Fspecimen\u002Fbase.css",{"format":346,"lines":462,"tokens":563,"copies":255,"first":564,"others":565},790,{"name":468,"start":385,"end":427},[566,567,568,569,571,573],{"name":548,"start":385,"end":427},{"name":531,"start":385,"end":427},{"name":514,"start":385,"end":427},{"name":570,"start":385,"end":427},"site\u002Fthemes\u002Fblueprint\u002Fbase.css",{"name":572,"start":385,"end":427},"site\u002Fthemes\u002Fnewsprint\u002Fbase.css",{"name":574,"start":385,"end":427},"site\u002Fthemes\u002Foverprint\u002Fbase.css",{"format":346,"lines":511,"tokens":576,"copies":277,"first":577,"others":578},840,{"name":468,"start":374,"end":427},[579,581,583,585,587],{"name":580,"start":374,"end":427},"site\u002Fthemes\u002Fconsole\u002Fbase.css",{"name":582,"start":374,"end":427},"site\u002Fthemes\u002Fdose\u002Fbase.css",{"name":584,"start":374,"end":427},"site\u002Fthemes\u002Floom\u002Fbase.css",{"name":586,"start":374,"end":427},"site\u002Fthemes\u002Fterrazzo\u002Fbase.css",{"name":588,"start":374,"end":427},"site\u002Fthemes\u002Fultraviolet\u002Fbase.css",{"format":346,"lines":427,"tokens":590,"copies":291,"first":591,"others":592},1023,{"name":472,"start":374,"end":389},[593,595],{"name":594,"start":374,"end":389},"site\u002Fmade\u002Fmidnight-video-tool\u002Fbase.css",{"name":596,"start":374,"end":389},"site\u002Fthemes\u002Fmidnight\u002Fbase.css",{"sources":598,"lines":599,"tokens":600,"clones":289,"duplicatedLines":362,"duplicatedTokens":601,"percentage":290,"percentageTokens":602,"formats":603,"topClones":607,"generated":730},42,13166,190642,898,0.47,[604,606],{"format":360,"sources":386,"lines":605,"clones":289,"duplicatedLines":362,"percentage":363},12062,{"format":373,"sources":374,"lines":375,"clones":368,"duplicatedLines":368,"percentage":368},[608,632,652,680,690,699,707,716,722],{"format":360,"lines":609,"tokens":610,"copies":302,"first":611,"others":615,"excerpt":620},16,172,{"name":612,"start":613,"end":614},"eval\u002Fscore.mjs",62,77,[616],{"name":617,"start":618,"end":619},"eval\u002Fscreenshot.mjs",52,67,{"lines":621,"total":609},[622,623,624,625,626,627,628,629,630,631],"}","","function listRuns(filter) {","  const out = [];","  if (!existsSync(RUNS)) return out;","  for (const briefId of readdirSync(RUNS).sort()) {","    const briefDir = path.join(RUNS, briefId);","    if (!statSync(briefDir).isDirectory()) continue;","    if (filter.brief && briefId !== filter.brief) continue;","    for (const cell of readdirSync(briefDir).sort()) {",{"format":360,"lines":392,"tokens":633,"copies":302,"first":634,"others":637,"excerpt":641},128,{"name":612,"start":635,"end":636},35,46,[638],{"name":617,"start":639,"end":640},36,47,{"lines":642,"total":392},[643,623,644,645,646,647,648,649,650,651],");","function parseArgs(argv) {","  const args = { brief: null, arm: null, force: false, dryRun: false };","  for (let i = 0; i \u003C argv.length; i++) {","    const a = argv[i];","    if (a === \"--brief\") args.brief = argv[++i];","    else if (a === \"--arm\") args.arm = argv[++i];","    else if (a === \"--force\") args.force = true;","    else if (a === \"--dry-run\") args.dryRun = true;",{"format":360,"lines":653,"tokens":654,"copies":302,"first":655,"others":658,"excerpt":662,"excerptSecond":674},10,109,{"name":656,"start":394,"end":657},"skills\u002Fhallmark\u002Fscripts\u002Fsloplint-render.mjs",53,[659],{"name":656,"start":660,"end":661},402,407,{"lines":663,"total":653},[664,665,666,667,668,669,670,671,672,673],"const img = new Image();","img.src = 'data:image\u002Fpng;base64,' + b64;","await img.decode();","const c = document.createElement('canvas');","c.width = img.width; c.height = img.height;","const x = c.getContext('2d');","x.drawImage(img, 0, 0);","const d = x.getImageData(0, 0, c.width, c.height).data;","const ch = [[], [], []];","for (let i = 0; i \u003C d.length; i += 4) { ch[0].push(d[i]); ch[1].push(d[i + 1]); ch[2].push(d[i + 2]); }",{"lines":675,"total":277},[676,677,678,671,672,679],"const img = new Image(); img.src = 'data:image\u002Fpng;base64,' + b64; await img.decode();","const c = document.createElement('canvas'); c.width = img.width; c.height = img.height;","const x = c.getContext('2d'); x.drawImage(img, 0, 0);","for (let py = 0; py \u003C c.height; py++) for (let px = 0; px \u003C c.width; px++) {",{"format":360,"lines":289,"tokens":681,"copies":302,"first":682,"others":686},106,{"name":683,"start":684,"end":685},"skills\u002Fhallmark\u002Fscripts\u002Fsloplint.mjs",1206,1214,[687],{"name":683,"start":688,"end":689},2149,2157,{"format":360,"lines":277,"tokens":691,"copies":302,"first":692,"others":695},100,{"name":683,"start":693,"end":694},85,90,[696],{"name":683,"start":697,"end":698},178,183,{"format":360,"lines":429,"tokens":693,"copies":302,"first":700,"others":703},{"name":683,"start":701,"end":702},1230,1240,[704],{"name":683,"start":705,"end":706},1736,1746,{"format":360,"lines":255,"tokens":708,"copies":302,"first":709,"others":712},68,{"name":683,"start":710,"end":711},2120,2126,[713],{"name":683,"start":714,"end":715},2178,2184,{"format":360,"lines":277,"tokens":382,"copies":302,"first":717,"others":719},{"name":683,"start":684,"end":718},1211,[720],{"name":683,"start":710,"end":721},2125,{"format":360,"lines":277,"tokens":723,"copies":302,"first":724,"others":727},64,{"name":656,"start":725,"end":726},425,430,[728],{"name":656,"start":729,"end":729},1018,{"files":315,"minified":315,"sample":731},[732],"site\u002Fthemes\u002Fterminal\u002Fart.js",{"score":297,"grade":298,"size":734,"dimensions":738},{"lines":735,"files":736,"class":737},13245,45,"M",[739,749,756],{"id":740,"source":741,"value":742,"adjusted":315,"lines":362,"halfLife":743,"formats":744,"excluded":746,"weight":315,"score":748},"duplication","jscpd",0.6,8.5,[360,373,381,745],"vue",[353,384,747],"data",92.1,{"id":750,"source":741,"value":751,"adjusted":752,"lines":753,"halfLife":754,"weight":315,"score":755},"dead-code",28.4,25,3757,7.5,9.9,{"id":757,"source":741,"value":758,"adjusted":759,"lines":760,"halfLife":761,"weight":315,"score":762},"complexity",88.6,79.7,11734,50,33.1,{"total":764,"mean":765,"files":766},8486,188.6,[767,771,775,780,785,789,794,799,804,809],{"path":683,"complexity":768,"lines":769,"bytes":770},3445,4422,231622,{"path":656,"complexity":772,"lines":773,"bytes":774},1423,1252,99164,{"path":776,"complexity":777,"lines":778,"bytes":779},"skills\u002Fhallmark\u002Fscripts\u002Ftheme.mjs",516,650,58980,{"path":781,"complexity":782,"lines":783,"bytes":784},"site\u002Fthemes\u002Ffurrow\u002Fmap.js",335,574,39829,{"path":786,"complexity":309,"lines":787,"bytes":788},"site\u002Fthemes\u002Fcobalt\u002Fwire.js",553,32836,{"path":790,"complexity":791,"lines":792,"bytes":793},"skills\u002Fhallmark\u002Fscripts\u002Frefcheck.mjs",250,352,21313,{"path":795,"complexity":796,"lines":797,"bytes":798},"site\u002Fthemes\u002Fribbon\u002Fnight.js",217,414,27309,{"path":800,"complexity":801,"lines":802,"bytes":803},"site\u002Fthemes\u002Fbloom\u002Fpage.js",164,314,19096,{"path":805,"complexity":806,"lines":807,"bytes":808},"eval\u002Fgen-direct.py",136,547,20849,{"path":810,"complexity":811,"lines":812,"bytes":813},"eval\u002Fgen-cli.mjs",118,285,15379,{"percentage":815,"findings":752,"files":636,"byCategory":816,"largest":822},28.36,[817,820],{"category":818,"count":819},"unused-file",24,{"category":821,"count":315},"unused-import",[823,824,825,826,827,830,833,836,839,842],{"category":818,"path":781,"name":623,"line":315,"lines":783},{"category":818,"path":786,"name":623,"line":315,"lines":787},{"category":818,"path":795,"name":623,"line":315,"lines":797},{"category":818,"path":800,"name":623,"line":315,"lines":802},{"category":818,"path":828,"name":623,"line":315,"lines":829},"site\u002Fthemes\u002Fatelier\u002Fair.js",226,{"category":818,"path":831,"name":623,"line":315,"lines":832},"site\u002Fthemes\u002Fbloom\u002Farrange.js",198,{"category":818,"path":834,"name":623,"line":315,"lines":835},"site\u002Fthemes\u002Fstudio\u002Fspec.js",180,{"category":818,"path":837,"name":623,"line":315,"lines":838},"site\u002Fthemes\u002Fterminal\u002Fpage.js",142,{"category":818,"path":840,"name":623,"line":315,"lines":841},"site\u002Fjs\u002Fheadline.js",130,{"category":818,"path":843,"name":623,"line":315,"lines":844},"site\u002Fjs\u002Fcompare.js",122,{"name":846,"url":847,"description":848,"language":319,"stars":849,"starsToday":850,"defaultBranch":336,"headSha":851,"durationMs":852,"total":853,"formats":858,"topClones":894,"code":1068,"health":1219,"complexity":1243,"deadCode":1293},"pollen-robotics\u002Fmicroduck","https:\u002F\u002Fgithub.com\u002Fpollen-robotics\u002Fmicroduck","A Tiny biped duck robot 🦆",11853,647,"942e58e3aa6dbb28e7037203fff11866122c7567",1341,{"sources":854,"lines":321,"tokens":855,"clones":320,"duplicatedLines":322,"duplicatedTokens":856,"percentage":323,"percentageTokens":857},438,1278575,40848,3.19,[859,866,869,874,877,881,884,886,888,891],{"format":860,"sources":861,"lines":862,"clones":863,"duplicatedLines":864,"percentage":865},"rust",218,142464,464,5064,3.55,{"format":377,"sources":653,"lines":867,"clones":255,"duplicatedLines":698,"percentage":868},1928,9.49,{"format":870,"sources":871,"lines":872,"clones":291,"duplicatedLines":389,"percentage":873},"toml",30,2367,1.23,{"format":388,"sources":636,"lines":875,"clones":302,"duplicatedLines":876,"percentage":602},12643,60,{"format":878,"sources":291,"lines":879,"clones":315,"duplicatedLines":277,"percentage":880},"c",2039,0.29,{"format":365,"sources":882,"lines":883,"clones":368,"duplicatedLines":368,"percentage":368},51,19985,{"format":370,"sources":277,"lines":885,"clones":368,"duplicatedLines":368,"percentage":368},6373,{"format":373,"sources":490,"lines":887,"clones":368,"duplicatedLines":368,"percentage":368},3326,{"format":353,"sources":889,"lines":890,"clones":368,"duplicatedLines":368,"percentage":368},15,2610,{"format":892,"sources":374,"lines":893,"clones":368,"duplicatedLines":368,"percentage":368},"typescript",1587,[895,916,935,969,978,1009,1029,1039,1049,1059],{"format":860,"lines":708,"tokens":896,"copies":302,"first":897,"others":901,"excerpt":906},952,{"name":898,"start":899,"end":900},"docs\u002Fsuperpowers\u002Fplans\u002F2026-10-07-netpad-udp.md",1256,1323,[902],{"name":903,"start":904,"end":905},"netpadd\u002Fsrc\u002Freceiver.rs",422,505,{"lines":907,"total":708},[908,622,623,909,910,911,912,913,914,915],"    assert_eq!(r.on_datagram(t, addr(A), &pkt(u32::MAX, Buttons::NONE, 0.0)), Accept::Stale);","\u002F\u002F\u002F A press and a release that both land between two sends still make a tap.","#[test]","fn a_press_and_release_inside_one_interval_are_both_seen() {","    let (mut r, t) = (rx(), Instant::now());","    r.on_datagram(t, addr(A), &pkt(1, Buttons::NONE, 0.0));","    tick(r.poll(t));","    r.on_datagram(ms(t, 5), addr(A), &pkt(2, Buttons::START, 0.0));",{"format":860,"lines":876,"tokens":917,"copies":302,"first":918,"others":921,"excerpt":925},794,{"name":898,"start":919,"end":920},1198,1257,[922],{"name":903,"start":923,"end":924},324,401,{"lines":926,"total":876},[927,622,928,929,622,930,931,932,933,934],"    Packet::from_axes(seq, 0, [lx, 0.0, 0.0, 0.0], [0.0, 0.0], buttons).encode()","fn ms(t0: Instant, n: u64) -> Instant {","    t0 + Duration::from_millis(n)","fn tick(step: Step) -> PadFrame {","    match step {","        Step::Tick(f) => f,","        other => panic!(\"expected a tick, got {other:?}\"),","    }",{"format":860,"lines":889,"tokens":691,"copies":255,"first":936,"others":940,"excerpt":959},{"name":937,"start":938,"end":939},"robotd\u002Fsrc\u002Fmain.rs",8295,8309,[941,944,947,950,953,956],{"name":937,"start":942,"end":943},8365,8379,{"name":937,"start":945,"end":946},8394,8408,{"name":937,"start":948,"end":949},8467,8481,{"name":937,"start":951,"end":952},8525,8539,{"name":937,"start":954,"end":955},8586,8600,{"name":937,"start":957,"end":958},8624,8638,{"lines":960,"total":889},[961,962,963,964,965,965,966,967,623,968],"fn an_unknown_slot_is_refused_with_the_names() {","    let s = RobotState::new(","        &Params::default(),","        std::path::Path::new(\"\u002Ftest\u002Frobotd.toml\"),","        false,","    );","    let intents = Arc::new(Intents::new());","    let result: proto::IntentResult = dispatch(",{"format":860,"lines":970,"tokens":971,"copies":302,"first":972,"others":974},63,524,{"name":898,"start":706,"end":973},1808,[975],{"name":976,"start":977,"end":806},"netpadd\u002Fsrc\u002Fmain.rs",71,{"format":860,"lines":979,"tokens":980,"copies":289,"first":981,"others":985},8,55,{"name":982,"start":983,"end":984},"updater\u002Ftests\u002Fapply.rs",443,450,[986,989,991,994,997,1000,1003,1006],{"name":982,"start":987,"end":988},1120,1128,{"name":982,"start":919,"end":990},1205,{"name":982,"start":992,"end":993},1237,1244,{"name":982,"start":995,"end":996},1302,1309,{"name":982,"start":998,"end":999},1354,1361,{"name":982,"start":1001,"end":1002},1393,1400,{"name":982,"start":1004,"end":1005},1433,1440,{"name":982,"start":1007,"end":1008},2996,3003,{"format":860,"lines":979,"tokens":1010,"copies":979,"first":1011,"others":1013},61,{"name":982,"start":1012,"end":988},1121,[1014,1016,1019,1021,1023,1025,1027],{"name":982,"start":1015,"end":684},1199,{"name":982,"start":1017,"end":1018},1238,1245,{"name":982,"start":1020,"end":996},1303,{"name":982,"start":1022,"end":999},1355,{"name":982,"start":1024,"end":1002},1394,{"name":982,"start":1026,"end":1005},1434,{"name":982,"start":1028,"end":1008},2997,{"format":860,"lines":635,"tokens":1030,"copies":302,"first":1031,"others":1034},344,{"name":898,"start":1032,"end":1033},931,965,[1035],{"name":1036,"start":1037,"end":1038},"pad-map\u002Fsrc\u002Fwire.rs",467,507,{"format":860,"lines":1040,"tokens":1041,"copies":302,"first":1042,"others":1045},27,332,{"name":898,"start":1043,"end":1044},1036,1062,[1046],{"name":1036,"start":1047,"end":1048},69,99,{"format":860,"lines":1050,"tokens":923,"copies":302,"first":1051,"others":1054},19,{"name":898,"start":1052,"end":1053},757,775,[1055],{"name":1056,"start":1057,"end":1058},"pad-map\u002Fsrc\u002Fmapper.rs",635,681,{"format":860,"lines":1060,"tokens":1061,"copies":302,"first":1062,"others":1065},31,317,{"name":898,"start":1063,"end":1064},1655,1685,[1066],{"name":1067,"start":980,"end":693},"netpadd\u002Fsrc\u002Frobotd.rs",{"sources":1069,"lines":1070,"tokens":1071,"clones":1072,"duplicatedLines":1073,"duplicatedTokens":1074,"percentage":1075,"percentageTokens":265,"formats":1076,"topClones":1093,"generated":1216},241,151166,856064,320,3318,24279,2.19,[1077,1082,1085,1086,1089,1090],{"format":860,"sources":1078,"lines":1079,"clones":1061,"duplicatedLines":1080,"percentage":1081},189,131762,3252,2.47,{"format":388,"sources":871,"lines":1083,"clones":302,"duplicatedLines":876,"percentage":1084},12309,0.49,{"format":878,"sources":291,"lines":879,"clones":315,"duplicatedLines":277,"percentage":880},{"format":373,"sources":1087,"lines":1088,"clones":368,"duplicatedLines":368,"percentage":368},14,3168,{"format":892,"sources":374,"lines":893,"clones":368,"duplicatedLines":368,"percentage":368},{"format":1091,"sources":315,"lines":1092,"clones":368,"duplicatedLines":368,"percentage":368},"c-header",301,[1094,1105,1127,1145,1160,1169,1179,1189,1197,1207],{"format":860,"lines":889,"tokens":691,"copies":255,"first":1095,"others":1096,"excerpt":1103},{"name":937,"start":938,"end":939},[1097,1098,1099,1100,1101,1102],{"name":937,"start":942,"end":943},{"name":937,"start":945,"end":946},{"name":937,"start":948,"end":949},{"name":937,"start":951,"end":952},{"name":937,"start":954,"end":955},{"name":937,"start":957,"end":958},{"lines":1104,"total":889},[961,962,963,964,965,965,966,967,623,968],{"format":860,"lines":490,"tokens":1106,"copies":291,"first":1107,"others":1110,"excerpt":1117},147,{"name":937,"start":1108,"end":1109},9343,9359,[1111,1114],{"name":937,"start":1112,"end":1113},9391,9407,{"name":937,"start":1115,"end":1116},9437,9453,{"lines":1118,"total":490},[1119,1120,1121,1122,1122,1123,1124,1125,623,1126],"let s = Arc::new(RobotState::new(","    &params,","    std::path::Path::new(\"\u002Ftest\u002Frobotd.toml\"),","    false,","));","let intents = Arc::new(Intents::new());","intents.request_init();","let (tx, rx) = std::sync::mpsc::channel();",{"format":388,"lines":1128,"tokens":1129,"copies":302,"first":1130,"others":1132,"excerpt":1135},43,231,{"name":1131,"start":752,"end":619},"mediad\u002Fwebclient\u002Fspace\u002Fentrypoint.sh",[1133],{"name":1134,"start":819,"end":382},"spaces\u002Fpolicy-playground\u002Fentrypoint.sh",{"lines":1136,"total":1128},[1137,1138,623,1139,623,1140,1141,1142,1143,1144],"    echo \"no OAUTH_CLIENT_ID in the environment; the page will not be able to sign anybody in\" >&2","fi","mkdir -p \u002Fsrv","# Python rather than `sed`, because the value being substituted is now JSON: a provider URL is","# full of the characters a `sed` replacement treats as syntax, and one of them silently produces","# a page that parses and signs nobody in.","python3 - \u002Fapp\u002Findex.html \u002Fsrv\u002Findex.html \u003C\u003C'PY'","import json",{"format":860,"lines":889,"tokens":1146,"copies":374,"first":1147,"others":1150},76,{"name":937,"start":1148,"end":1149},8337,8351,[1151,1154,1157],{"name":937,"start":1152,"end":1153},8562,8576,{"name":937,"start":1155,"end":1156},8593,8608,{"name":937,"start":1158,"end":1159},8711,8725,{"format":860,"lines":1161,"tokens":796,"copies":302,"first":1162,"others":1165},21,{"name":937,"start":1163,"end":1164},6999,7019,[1166],{"name":937,"start":1167,"end":1168},9220,9240,{"format":860,"lines":819,"tokens":1170,"copies":302,"first":1171,"others":1175},202,{"name":1172,"start":1173,"end":1174},"configd\u002Fsrc\u002Fmain.rs",607,630,[1176],{"name":937,"start":1177,"end":1178},5567,5589,{"format":860,"lines":979,"tokens":1180,"copies":302,"first":1181,"others":1185},190,{"name":1182,"start":1183,"end":1184},"pad-imu\u002Fsrc\u002Flib.rs",392,399,[1186],{"name":1187,"start":841,"end":1188},"robotd\u002Fsrc\u002Fhead_imu.rs",137,{"format":878,"lines":277,"tokens":1190,"copies":302,"first":1191,"others":1195},187,{"name":1192,"start":1193,"end":1194},"deploy\u002Faudio\u002Faic3x-dkms\u002Ftlv320aic3x.c",325,330,[1196],{"name":1192,"start":725,"end":726},{"format":860,"lines":462,"tokens":1198,"copies":302,"first":1199,"others":1203},186,{"name":1200,"start":1201,"end":1202},"robotctl\u002Fsrc\u002Fmain.rs",4032,4053,[1204],{"name":1200,"start":1205,"end":1206},4305,4325,{"format":860,"lines":752,"tokens":1208,"copies":302,"first":1209,"others":1212},185,{"name":937,"start":1210,"end":1211},9886,9910,[1213],{"name":937,"start":1214,"end":1215},9942,9966,{"files":315,"minified":368,"sample":1217},[1218],"odometry\u002Fsrc\u002Fanchors.rs",{"score":1220,"grade":1221,"size":1222,"dimensions":1226,"skipped":1240},53.6,"D",{"lines":1223,"files":1224,"class":1225},160756,275,"L",[1227,1235],{"id":740,"source":741,"value":1228,"adjusted":1228,"lines":1229,"halfLife":743,"formats":1230,"excluded":1233,"weight":315,"score":1234},2.6,4122,[860,388,373,878,892,1091,1231,1232],"docker","makefile",[353,384,747],81.1,{"id":757,"source":741,"value":1236,"adjusted":1237,"lines":1238,"halfLife":761,"weight":315,"score":1239},75.7,75,121649,35.4,[1241],{"id":750,"reason":1242},"the languages dead code reads are under 5% of the code",{"total":1244,"mean":1245,"files":1246},17262,62.8,[1247,1250,1254,1259,1263,1268,1273,1278,1283,1288],{"path":937,"complexity":276,"lines":1248,"bytes":1249},10007,437765,{"path":1200,"complexity":1251,"lines":1252,"bytes":1253},954,8109,342130,{"path":1255,"complexity":1256,"lines":1257,"bytes":1258},"duck-ipc-proto\u002Fsrc\u002Flib.rs",497,6940,337229,{"path":1260,"complexity":1037,"lines":1261,"bytes":1262},"robotctl\u002Fsrc\u002Fmonitor.rs",4965,212445,{"path":1264,"complexity":1265,"lines":1266,"bytes":1267},"updater\u002Fsrc\u002Fengine.rs",441,4125,185925,{"path":1269,"complexity":1270,"lines":1271,"bytes":1272},"duckctl\u002Fsrc\u002Fmain.rs",388,3862,178239,{"path":1274,"complexity":1275,"lines":1276,"bytes":1277},"robotd-params\u002Fsrc\u002Flib.rs",375,4374,196503,{"path":1279,"complexity":1280,"lines":1281,"bytes":1282},"mediad\u002Fsrc\u002Fpipeline.rs",267,2799,131070,{"path":1284,"complexity":1285,"lines":1286,"bytes":1287},"mediad\u002Fsrc\u002Frelay.rs",262,2764,117796,{"path":1289,"complexity":1290,"lines":1291,"bytes":1292},"xtask\u002Fsrc\u002Fmain.rs",236,2387,104866,{"percentage":1294,"findings":374,"files":1161,"byCategory":1295,"largest":1299},0.35,[1296,1298],{"category":1297,"count":302},"unused-export",{"category":821,"count":302},[1300,1303,1306,1310],{"category":1297,"path":1301,"name":1302,"line":326,"lines":1087},"spaces\u002Fvision-demo\u002Ffilters.py","upright",{"category":821,"path":1304,"name":1305,"line":511,"lines":315},"spaces\u002Fshared\u002Fcontrol.py","asyncio",{"category":821,"path":1307,"name":1308,"line":1309,"lines":315},"spaces\u002Fvision-demo\u002Fapp.py","np",39,{"category":1297,"path":1301,"name":1311,"line":1050,"lines":315},"MOUNT_ROTATION_DEGREES",{"name":271,"url":1313,"description":1314,"language":308,"stars":1315,"starsToday":1316,"defaultBranch":336,"headSha":1317,"durationMs":1318,"total":1319,"formats":1325,"topClones":1342,"code":1465,"health":1548,"complexity":1565,"deadCode":1613},"https:\u002F\u002Fgithub.com\u002FTauricResearch\u002FTradingAgents","TradingAgents: Multi-Agents LLM Financial Trading Framework",114871,381,"e8f5503e9b86d5c2710b0c76b1f686703968c9df",917,{"sources":1208,"lines":1320,"tokens":1321,"clones":272,"duplicatedLines":1322,"duplicatedTokens":1323,"percentage":273,"percentageTokens":1324},29942,195276,378,2700,1.38,[1326,1330,1332,1334,1336,1337,1338,1339,1340],{"format":373,"sources":1327,"lines":1328,"clones":272,"duplicatedLines":1322,"percentage":1329},170,28241,1.34,{"format":365,"sources":302,"lines":1331,"clones":368,"duplicatedLines":368,"percentage":368},1155,{"format":377,"sources":255,"lines":1333,"clones":368,"duplicatedLines":368,"percentage":368},305,{"format":870,"sources":315,"lines":1335,"clones":368,"duplicatedLines":368,"percentage":368},89,{"format":353,"sources":315,"lines":619,"clones":368,"duplicatedLines":368,"percentage":368},{"format":388,"sources":315,"lines":1309,"clones":368,"duplicatedLines":368,"percentage":368},{"format":1231,"sources":315,"lines":871,"clones":368,"duplicatedLines":368,"percentage":368},{"format":384,"sources":315,"lines":289,"clones":368,"duplicatedLines":368,"percentage":368},{"format":1341,"sources":315,"lines":255,"clones":368,"duplicatedLines":368,"percentage":368},"txt",[1343,1366,1387,1407,1419,1426,1432,1440,1451,1456],{"format":373,"lines":979,"tokens":1047,"copies":291,"first":1344,"others":1347,"excerpt":1353,"excerptSecond":1363},{"name":1345,"start":1346,"end":971},"tests\u002Ftest_memory_log.py",517,[1348,1350],{"name":1345,"start":787,"end":1349},560,{"name":1345,"start":1351,"end":1352},569,576,{"lines":1354,"total":979},[1355,1356,1357,1358,1359,1360,1361,1362],"with patch(\"yfinance.Ticker\") as mock_ticker_cls:","    def _make_ticker(sym):","        m = MagicMock()","        m.history.return_value = _price_df(spy_prices if sym == \"SPY\" else stock_prices)","        return m","    mock_ticker_cls.side_effect = _make_ticker","    raw, alpha, days, resolved = settlement.fetch_returns(\"NVDA\", \"2026-01-05\")","assert raw is not None and alpha is not None and days is not None",{"lines":1364,"total":979},[1355,1356,1357,1358,1359,1360,1361,1365],"assert raw is not None and alpha is not None",{"format":373,"lines":653,"tokens":633,"copies":302,"first":1367,"others":1369,"excerpt":1372,"excerptSecond":1383},{"name":1368,"start":657,"end":613},"tests\u002Ftest_cli_env_skip.py",[1370],{"name":1368,"start":844,"end":1371},131,{"lines":1373,"total":653},[1374,623,1375,1376,1377,1378,1379,1380,1381,1382],"})","with mock.patch.dict(os.environ, env, clear=False), \\","     mock.patch.object(cli_selections, \"DEFAULT_CONFIG\", fake_cfg), \\","     mock.patch.object(cli_selections.updates, \"enabled\", return_value=False), \\","     mock.patch.object(cli_selections, \"get_ticker\", return_value=\"AAPL\"), \\","     mock.patch.object(cli_selections, \"get_analysis_date\", return_value=\"2026-05-29\"), \\","     mock.patch.object(cli_selections, \"select_analysts\", return_value=[]), \\","     mock.patch.object(cli_selections, \"select_research_depth\", return_value=1), \\","     mock.patch.object(cli_selections, \"ensure_api_key\") as ensure_key, \\",{"lines":1384,"total":653},[1385,623,1375,1376,1377,1378,1379,1380,1381,1386],"fake_cfg.update({\"openai_reasoning_effort\": \"high\"})","     mock.patch.object(cli_selections, \"ensure_api_key\"), \\",{"format":373,"lines":871,"tokens":1388,"copies":302,"first":1389,"others":1392,"excerpt":1396},117,{"name":1390,"start":882,"end":1391},"tradingagents\u002Fagents\u002Fanalysts\u002Fmarket_analyst.py",80,[1393],{"name":1394,"start":871,"end":1395},"tradingagents\u002Fagents\u002Fanalysts\u002Fnews_analyst.py",59,{"lines":1397,"total":871},[1398,1399,1400,623,1401,1402,1403,1404,1405,1406],"    + \"\"\" Make sure to append a Markdown table at the end of the report to organize key points in the report, organized and easy to read.\"\"\"","    + get_language_instruction()",")","prompt = ChatPromptTemplate.from_messages(","    [","        (","            \"system\",","            \"You are a helpful AI assistant, collaborating with other assistants.\"","            \" Use the provided tools to progress towards answering the question.\"",{"format":373,"lines":979,"tokens":1408,"copies":291,"first":1409,"others":1412},57,{"name":1410,"start":1411,"end":844},"tradingagents\u002Fagents\u002Ftools.py",115,[1413,1416],{"name":1410,"start":1414,"end":1415},134,141,{"name":1410,"start":1417,"end":1418},153,160,{"format":373,"lines":389,"tokens":1420,"copies":302,"first":1421,"others":1424},113,{"name":1422,"start":1423,"end":876},"tradingagents\u002Fagents\u002Fanalysts\u002Ffundamentals_analyst.py",32,[1425],{"name":1390,"start":618,"end":1391},{"format":373,"lines":289,"tokens":1427,"copies":302,"first":1428,"others":1429},111,{"name":1368,"start":657,"end":1010},[1430],{"name":1368,"start":1431,"end":366},94,{"format":373,"lines":277,"tokens":882,"copies":291,"first":1433,"others":1435},{"name":1434,"start":490,"end":462},"tradingagents\u002Fagents\u002Fresearchers\u002Fbear_researcher.py",[1436,1438],{"name":1437,"start":1161,"end":1040},"tradingagents\u002Fagents\u002Frisk_mgmt\u002Faggressive_debator.py",{"name":1439,"start":1161,"end":1040},"tradingagents\u002Fagents\u002Frisk_mgmt\u002Fneutral_debator.py",{"format":373,"lines":255,"tokens":761,"copies":291,"first":1441,"others":1445},{"name":1442,"start":1443,"end":1444},"tests\u002Ftest_social_lookahead.py",104,110,[1446,1448],{"name":1442,"start":1447,"end":844},116,{"name":1442,"start":1449,"end":1450},144,150,{"format":373,"lines":255,"tokens":354,"copies":302,"first":1452,"others":1454},{"name":1368,"start":366,"end":1453},108,[1455],{"name":1368,"start":841,"end":806},{"format":373,"lines":277,"tokens":1457,"copies":302,"first":1458,"others":1462},87,{"name":1459,"start":1460,"end":1461},"tests\u002Ftest_cli_prefs.py",98,103,[1463],{"name":1459,"start":1450,"end":1464},155,{"sources":723,"lines":1466,"tokens":1467,"clones":609,"duplicatedLines":698,"duplicatedTokens":1468,"percentage":1469,"percentageTokens":1470,"formats":1471,"topClones":1473,"generated":1546},10484,62422,1076,1.75,1.72,[1472],{"format":373,"sources":723,"lines":1466,"clones":609,"duplicatedLines":698,"percentage":1469},[1474,1480,1499,1506,1511,1516,1523,1527,1531,1540],{"format":373,"lines":871,"tokens":1388,"copies":302,"first":1475,"others":1476,"excerpt":1478},{"name":1390,"start":882,"end":1391},[1477],{"name":1394,"start":871,"end":1395},{"lines":1479,"total":871},[1398,1399,1400,623,1401,1402,1403,1404,1405,1406],{"format":373,"lines":979,"tokens":1408,"copies":291,"first":1481,"others":1482,"excerpt":1485,"excerptSecond":1495},{"name":1410,"start":1411,"end":844},[1483,1484],{"name":1410,"start":1414,"end":1415},{"name":1410,"start":1417,"end":1418},{"lines":1486,"total":979},[1487,1488,1489,1490,1491,1492,1493,1494],"def get_balance_sheet(","    ticker: Annotated[str, InjectedState(\"company_of_interest\")],","    freq: Annotated[str, \"reporting frequency: annual\u002Fquarterly\"] = \"quarterly\",","    curr_date: Annotated[str, \"current date you are trading at, yyyy-mm-dd\"] = None,","    trade_date: Annotated[str, InjectedState(\"trade_date\")] = \"\",",") -> str:","    \"\"\"","    Retrieve balance sheet data for the instrument under analysis.",{"lines":1496,"total":979},[1497,1488,1489,1490,1491,1492,1493,1498],"def get_cashflow(","    Retrieve cash flow statement data for the instrument under analysis.",{"format":373,"lines":389,"tokens":1420,"copies":302,"first":1500,"others":1501,"excerpt":1503},{"name":1422,"start":1423,"end":876},[1502],{"name":1390,"start":618,"end":1391},{"lines":1504,"total":389},[1399,1400,623,1401,1402,1403,1404,1405,1406,1505],"            \" If you are unable to fully answer, that's OK; another assistant with different tools\"",{"format":373,"lines":277,"tokens":882,"copies":291,"first":1507,"others":1508},{"name":1434,"start":490,"end":462},[1509,1510],{"name":1437,"start":1161,"end":1040},{"name":1439,"start":1161,"end":1040},{"format":373,"lines":889,"tokens":1457,"copies":302,"first":1512,"others":1513},{"name":1434,"start":490,"end":1060},[1514],{"name":1515,"start":490,"end":1060},"tradingagents\u002Fagents\u002Fresearchers\u002Fbull_researcher.py",{"format":373,"lines":889,"tokens":1517,"copies":302,"first":1518,"others":1520},82,{"name":1437,"start":1519,"end":1423},18,[1521],{"name":1522,"start":1519,"end":1423},"tradingagents\u002Fagents\u002Frisk_mgmt\u002Fconservative_debator.py",{"format":373,"lines":289,"tokens":1047,"copies":302,"first":1524,"others":1525},{"name":1522,"start":639,"end":394},[1526],{"name":1439,"start":639,"end":394},{"format":373,"lines":653,"tokens":286,"copies":302,"first":1528,"others":1529},{"name":1437,"start":511,"end":1423},[1530],{"name":1439,"start":511,"end":1423},{"format":373,"lines":1087,"tokens":1395,"copies":302,"first":1532,"others":1536},{"name":1533,"start":1534,"end":1535},"cli\u002Fdisplay.py",232,245,[1537],{"name":1533,"start":1538,"end":1539},248,261,{"format":373,"lines":255,"tokens":1541,"copies":302,"first":1542,"others":1543},56,{"name":1410,"start":1415,"end":1106},[1544],{"name":1410,"start":1418,"end":1545},166,{"files":368,"minified":368,"sample":1547},[],{"score":294,"grade":295,"size":1549,"dimensions":1551},{"lines":1550,"files":1327,"class":737},28231,[1552,1557,1560],{"id":740,"source":741,"value":1553,"adjusted":1554,"lines":1322,"halfLife":743,"formats":1555,"excluded":1556,"weight":315,"score":758},1.3,1.5,[373,1231],[353,384,747],{"id":750,"source":741,"value":368,"adjusted":1558,"lines":368,"halfLife":754,"weight":315,"score":1559},0.2,98.1,{"id":757,"source":741,"value":1561,"adjusted":1562,"lines":1563,"halfLife":761,"weight":315,"score":1564},29.3,28.7,8264,67.2,{"total":1566,"mean":1567,"files":1568},3776,22.2,[1569,1573,1577,1581,1586,1590,1595,1599,1604,1609],{"path":1345,"complexity":1570,"lines":1571,"bytes":1572},171,1316,59920,{"path":1533,"complexity":1574,"lines":1575,"bytes":1576},125,622,23542,{"path":1578,"complexity":811,"lines":1579,"bytes":1580},"tradingagents\u002Fllm_clients\u002Fchatgpt_auth.py",416,18792,{"path":1582,"complexity":1583,"lines":1584,"bytes":1585},"tradingagents\u002Fmemory\u002Flog.py",101,359,14841,{"path":1587,"complexity":1588,"lines":863,"bytes":1589},"cli\u002Frun.py",93,22177,{"path":1591,"complexity":1592,"lines":1593,"bytes":1594},"tests\u002Ftest_graph_end_to_end.py",88,389,17955,{"path":1596,"complexity":1391,"lines":1597,"bytes":1598},"tests\u002Ftest_chatgpt_auth.py",424,17513,{"path":1600,"complexity":1601,"lines":1602,"bytes":1603},"cli\u002Fupdates.py",79,220,8855,{"path":1605,"complexity":1606,"lines":1607,"bytes":1608},"tradingagents\u002Fdataflows\u002Fvendors\u002Freddit.py",74,337,14593,{"path":1610,"complexity":1047,"lines":1611,"bytes":1612},"tradingagents\u002Fllm_clients\u002Fopenai_client.py",411,19627,{"percentage":368,"findings":368,"files":698,"byCategory":1614,"largest":1615},[],[],{"name":1617,"url":1618,"description":1619,"language":301,"stars":1620,"starsToday":1621,"defaultBranch":336,"headSha":1622,"durationMs":1623,"total":1624,"formats":1631,"topClones":1649,"code":1757,"health":1877,"complexity":1898,"deadCode":1940},"Renhuai123\u002Fziwei-doushu","https:\u002F\u002Fgithub.com\u002FRenhuai123\u002Fziwei-doushu","紫微斗数开源排盘引擎 — 基于倪海厦《天纪》体系，含完整排盘算法、四化系统、格局知识库、古籍原文数据",7857,199,"e478393ad6c865ad6270e978a3164d2f2cb5315b",1283,{"sources":1453,"lines":1625,"tokens":1626,"clones":1040,"duplicatedLines":1627,"duplicatedTokens":1628,"percentage":1629,"percentageTokens":1630},18941,249350,283,4521,1.49,1.81,[1632,1635,1639,1641,1643,1645,1647,1648],{"format":381,"sources":871,"lines":1633,"clones":609,"duplicatedLines":1450,"percentage":1634},6681,2.25,{"format":892,"sources":394,"lines":1636,"clones":429,"duplicatedLines":1637,"percentage":1638},8430,133,1.58,{"format":365,"sources":819,"lines":1640,"clones":368,"duplicatedLines":368,"percentage":368},3115,{"format":346,"sources":315,"lines":1642,"clones":368,"duplicatedLines":368,"percentage":368},436,{"format":377,"sources":385,"lines":1644,"clones":368,"duplicatedLines":368,"percentage":368},176,{"format":370,"sources":302,"lines":1646,"clones":368,"duplicatedLines":368,"percentage":368},78,{"format":388,"sources":315,"lines":1161,"clones":368,"duplicatedLines":368,"percentage":368},{"format":384,"sources":315,"lines":374,"clones":368,"duplicatedLines":368,"percentage":368},[1650,1673,1696,1714,1720,1725,1732,1737,1744,1752],{"format":892,"lines":653,"tokens":1651,"copies":302,"first":1652,"others":1655,"excerpt":1658,"excerptSecond":1670},435,{"name":1653,"start":1654,"end":598},"lib\u002Fziwei\u002Fdst-cn.ts",33,[1656],{"name":1657,"start":1087,"end":1087},"scripts\u002Fregression\u002Fdst-cn.test.ts",{"lines":1659,"total":653},[1660,1661,1662,1663,1664,1665,1666,1667,1668,1669],"const XLS_CN: readonly (readonly [number, number, number, number, number])[] = [","  [1935, 5, 1, 9, 30], [1936, 5, 1, 9, 30], [1937, 5, 1, 9, 30], [1938, 5, 1, 9, 30],","  [1939, 5, 1, 9, 30], [1940, 5, 1, 9, 30], [1941, 5, 1, 9, 30], [1942, 5, 1, 9, 30],","  [1943, 5, 1, 9, 30], [1944, 5, 1, 9, 30], [1945, 5, 1, 9, 30], [1946, 5, 1, 9, 30],","  [1947, 5, 1, 9, 30], [1948, 5, 1, 9, 30], [1949, 5, 1, 9, 30], [1950, 5, 1, 9, 30],","  [1951, 5, 1, 9, 30], [1952, 3, 1, 10, 31], [1953, 4, 1, 10, 31], [1954, 4, 1, 10, 31],","  [1955, 5, 1, 9, 30], [1956, 5, 1, 9, 30], [1957, 4, 1, 9, 30], [1958, 4, 1, 9, 30],","  [1959, 4, 1, 9, 30], [1960, 6, 1, 9, 30], [1961, 6, 1, 9, 30], [1974, 4, 1, 10, 31],","  [1975, 4, 1, 10, 31], [1979, 7, 1, 9, 30], [1986, 5, 4, 9, 14], [1987, 4, 12, 9, 13],","  [1988, 4, 10, 9, 11], [1989, 4, 16, 9, 17], [1990, 4, 15, 9, 16], [1991, 4, 14, 9, 15],",{"lines":1671,"total":315},[1672],"const ORACLE_XLS_CN: number[][] = [[1935, 5, 1, 9, 30], [1936, 5, 1, 9, 30], [1937, 5, 1, 9, 30], [1938, 5, 1, 9, 30], [1939, 5, 1, 9, 30], [1940, 5, 1, 9, 30]…",{"format":892,"lines":609,"tokens":1674,"copies":302,"first":1675,"others":1678,"excerpt":1681,"excerptSecond":1693},421,{"name":1676,"start":1415,"end":1677},"lib\u002Fziwei\u002Fschool-data.ts",156,[1679],{"name":1680,"start":640,"end":640},"lib\u002Fziwei\u002Fschool-tables.generated.ts",{"lines":1682,"total":609},[1683,1684,1685,1686,1687,1688,1689,1690,1691,1692],"export const SCHOOL_BRIGHTNESS_QS: number[][] = [","  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],     \u002F\u002F [0] 占位","  [0, 5, 1, 2, 2, 3, 2, 1, 1, 2, 2, 3, 2],     \u002F\u002F 紫微","  [0, 1, 7, 3, 2, 4, 5, 1, 7, 3, 2, 4, 5],     \u002F\u002F 天机","  [0, 7, 6, 2, 1, 2, 2, 2, 3, 3, 5, 6, 7],     \u002F\u002F 太阳","  [0, 2, 1, 3, 4, 1, 5, 2, 1, 3, 4, 1, 5],     \u002F\u002F 武曲","  [0, 2, 6, 4, 5, 5, 1, 7, 6, 2, 5, 5, 1],     \u002F\u002F 天同","  [0, 5, 4, 1, 5, 4, 7, 5, 4, 1, 5, 4, 7],     \u002F\u002F 廉贞","  [0, 1, 1, 1, 3, 1, 3, 2, 1, 3, 2, 1, 3],     \u002F\u002F 天府","  [0, 1, 1, 2, 7, 7, 7, 6, 6, 4, 2, 2, 1],     \u002F\u002F 太阴",{"lines":1694,"total":315},[1695],"SB_QS: [[0,0,0,0,0,0,0,0,0,0,0,0,0],[0,5,1,2,2,3,2,1,1,2,2,3,2],[0,1,7,3,2,4,5,1,7,3,2,4,5],[0,7,6,2,1,2,2,2,3,3,5,6,7],[0,2,1,3,4,1,5,2,1,3,4,1,5],[0,2,6,4,5,…",{"format":892,"lines":609,"tokens":1674,"copies":302,"first":1697,"others":1699,"excerpt":1702,"excerptSecond":1711},{"name":1676,"start":1418,"end":1698},175,[1700],{"name":1680,"start":1701,"end":1701},48,{"lines":1703,"total":609},[1704,1705,1706,1686,1707,1688,1708,1690,1709,1710],"export const SCHOOL_BRIGHTNESS_XD1: number[][] = [","  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],","  [0, 5, 1, 1, 2, 3, 2, 1, 1, 2, 2, 3, 2],     \u002F\u002F 紫微","  [0, 7, 6, 2, 1, 2, 2, 1, 3, 4, 5, 7, 7],     \u002F\u002F 太阳","  [0, 2, 6, 4, 1, 5, 1, 7, 6, 2, 5, 5, 1],     \u002F\u002F 天同","  [0, 1, 1, 1, 3, 2, 3, 2, 1, 3, 2, 2, 3],     \u002F\u002F 天府","  [0, 1, 1, 6, 7, 7, 7, 7, 5, 4, 2, 2, 1],     \u002F\u002F 太阴",{"lines":1712,"total":315},[1713],"SB_XD1: [[0,0,0,0,0,0,0,0,0,0,0,0,0],[0,5,1,1,2,3,2,1,1,2,2,3,2],[0,1,7,3,2,4,5,1,7,3,2,4,5],[0,7,6,2,1,2,2,1,3,4,5,7,7],[0,2,1,3,4,1,5,2,1,3,4,1,5],[0,2,6,4,1…",{"format":892,"lines":609,"tokens":1674,"copies":302,"first":1715,"others":1718},{"name":1676,"start":1716,"end":1717},179,194,[1719],{"name":1680,"start":378,"end":378},{"format":892,"lines":609,"tokens":1674,"copies":302,"first":1721,"others":1723},{"name":1676,"start":832,"end":1722},213,[1724],{"name":1680,"start":761,"end":761},{"format":892,"lines":1087,"tokens":1726,"copies":302,"first":1727,"others":1730},364,{"name":1676,"start":1728,"end":1729},369,382,[1731],{"name":1680,"start":618,"end":618},{"format":892,"lines":1087,"tokens":1726,"copies":302,"first":1733,"others":1735},{"name":1676,"start":1734,"end":1184},386,[1736],{"name":1680,"start":657,"end":657},{"format":381,"lines":464,"tokens":1738,"copies":302,"first":1739,"others":1741},223,{"name":1740,"start":291,"end":889},"app\u002Fprivacy\u002Fpage.tsx",[1742],{"name":1743,"start":291,"end":889},"app\u002Fterms\u002Fpage.tsx",{"format":381,"lines":490,"tokens":1414,"copies":302,"first":1745,"others":1747},{"name":1746,"start":640,"end":970},"components\u002FChatPanel.tsx",[1748],{"name":1749,"start":1750,"end":1751},"components\u002FInsightPanel.tsx",282,297,{"format":892,"lines":392,"tokens":1753,"copies":302,"first":1754,"others":1755},132,{"name":1676,"start":366,"end":1420},[1756],{"name":1680,"start":289,"end":289},{"sources":613,"lines":1758,"tokens":1759,"clones":1519,"duplicatedLines":1760,"duplicatedTokens":1761,"percentage":1762,"percentageTokens":1763,"formats":1764,"topClones":1769,"generated":1875},14468,98293,162,1446,1.12,1.47,[1765,1766],{"format":381,"sources":871,"lines":1633,"clones":609,"duplicatedLines":1450,"percentage":1634},{"format":892,"sources":1423,"lines":1767,"clones":302,"duplicatedLines":392,"percentage":1768},7787,0.15,[1770,1786,1803,1821,1833,1839,1848,1855,1864,1870],{"format":381,"lines":464,"tokens":1738,"copies":302,"first":1771,"others":1772,"excerpt":1774},{"name":1740,"start":291,"end":889},[1773],{"name":1743,"start":291,"end":889},{"lines":1775,"total":464},[1776,1777,1778,1779,1780,1781,1782,1783,1784,1785],"export default function PrivacyPage() {","  return (","    \u003C>","      \u003Cheader style={{ position: 'sticky', top: 0, zIndex: 50, background: 'var(--bg-0)', borderBottom: '1px solid var(--bdr)', padding: '14px 24px', display: …","        \u003Ca href=\"\u002F\" style={{ display: 'inline-flex', alignItems: 'center', gap: '6px', fontSize: '13px', color: 'var(--tx-3)', textDecoration: 'none' }}>","          \u003Cspan style={{ fontSize: '16px' }}>‹\u003C\u002Fspan>","          \u003Cspan>返回首页\u003C\u002Fspan>","        \u003C\u002Fa>","        \u003Cdiv style={{ width: '1px', height: '20px', background: 'var(--bdr-med)' }} \u002F>","        \u003Cspan style={{ fontSize: '12px', color: 'var(--ac)', letterSpacing: '0.2em' }}>紫微命盘\u003C\u002Fspan>",{"format":381,"lines":490,"tokens":1414,"copies":302,"first":1787,"others":1788,"excerpt":1790,"excerptSecond":1800},{"name":1746,"start":640,"end":970},[1789],{"name":1749,"start":1750,"end":1751},{"lines":1791,"total":490},[1792,1793,623,1794,1795,1796,623,1797,1798,1799],"  body: JSON.stringify({ chart, messages: [...messages, userMsg] }),","});","if (res.status === 404) throw new Error('api-missing');","if (!res.ok) throw new Error('请求失败');","if (!res.body) throw new Error('无响应流');","const reader = res.body.getReader();","const decoder = new TextDecoder();","let assistantText = '';",{"lines":1801,"total":609},[1802,1793,1794,1795,1796,623,1797,1798,1799,623],"  body: JSON.stringify({ chart, messages: apiMessages }),",{"format":381,"lines":392,"tokens":1461,"copies":302,"first":1804,"others":1806,"excerpt":1810},{"name":1805,"start":1574,"end":806},"app\u002Fheming\u002Fpage.tsx",[1807],{"name":1749,"start":1808,"end":1809},292,303,{"lines":1811,"total":392},[1812,623,1813,1814,1815,1816,1817,1818,1819,1820],"let text = '';","while (true) {","  const { done, value } = await reader.read();","  if (done) break;","  const chunk = decoder.decode(value, { stream: true });","  for (const line of chunk.split('\\n')) {","    if (!line.startsWith('data: ')) continue;","    const data = line.slice(6);","    if (data === '[DONE]') break;",{"format":381,"lines":277,"tokens":882,"copies":291,"first":1822,"others":1826},{"name":1823,"start":1824,"end":1825},"components\u002FBirthForm.tsx",239,244,[1827,1830],{"name":1823,"start":1828,"end":1829},288,293,{"name":1823,"start":1831,"end":1832},343,348,{"format":381,"lines":653,"tokens":1588,"copies":302,"first":1834,"others":1836},{"name":1835,"start":427,"end":635},"app\u002Flibrary\u002F[book]\u002Fpage.tsx",[1837],{"name":1838,"start":889,"end":819},"app\u002Flibrary\u002Fsearch\u002Fpage.tsx",{"format":381,"lines":979,"tokens":354,"copies":302,"first":1840,"others":1844},{"name":1841,"start":1842,"end":1843},"app\u002Fpage.tsx",874,881,[1845],{"name":1841,"start":1846,"end":1847},933,940,{"format":381,"lines":609,"tokens":1335,"copies":302,"first":1849,"others":1853},{"name":1850,"start":1851,"end":1852},"components\u002FScrollIntro.tsx",240,255,[1854],{"name":1850,"start":347,"end":812},{"format":381,"lines":653,"tokens":1856,"copies":302,"first":1857,"others":1861},86,{"name":1858,"start":1859,"end":1860},"app\u002Fknowledge\u002F[star]\u002F[topic]\u002Fpage.tsx",105,114,[1862],{"name":1863,"start":1161,"end":871},"app\u002Fknowledge\u002Fpage.tsx",{"format":381,"lines":979,"tokens":977,"copies":302,"first":1865,"others":1867},{"name":1866,"start":429,"end":1519},"components\u002FChartSummary.tsx",[1868],{"name":1869,"start":277,"end":464},"components\u002FPatternsCard.tsx",{"format":381,"lines":277,"tokens":1047,"copies":302,"first":1871,"others":1872},{"name":1863,"start":1050,"end":819},[1873],{"name":1874,"start":490,"end":462},"app\u002Flibrary\u002Fpage.tsx",{"files":368,"minified":368,"sample":1876},[],{"score":1878,"grade":1221,"size":1879,"dimensions":1881},47.8,{"lines":1880,"files":1606,"class":737},15111,[1882,1888,1893],{"id":740,"source":741,"value":1883,"adjusted":1884,"lines":1627,"halfLife":743,"formats":1885,"excluded":1886,"weight":315,"score":1887},1.9,2.1,[892,381],[353,384,747],84.5,{"id":750,"source":741,"value":1889,"adjusted":1890,"lines":1891,"halfLife":754,"weight":315,"score":1892},19.4,17.5,2930,19.9,{"id":757,"source":741,"value":1894,"adjusted":1895,"lines":1896,"halfLife":761,"weight":315,"score":1897},32.2,30.9,4872,65.1,{"total":1899,"mean":1900,"files":1901},2028,27.4,[1902,1907,1911,1915,1918,1921,1924,1928,1932,1936],{"path":1903,"complexity":1904,"lines":1905,"bytes":1906},"lib\u002Fziwei\u002Fpatterns.ts",426,1119,54637,{"path":1823,"complexity":1908,"lines":1909,"bytes":1910},167,495,21223,{"path":1912,"complexity":1545,"lines":1913,"bytes":1914},"lib\u002Fziwei\u002Falgorithm.ts",662,36104,{"path":1841,"complexity":1450,"lines":1916,"bytes":1917},1191,67117,{"path":1805,"complexity":1919,"lines":1728,"bytes":1920},81,15792,{"path":1749,"complexity":977,"lines":1922,"bytes":1923},469,16391,{"path":1925,"complexity":980,"lines":1926,"bytes":1927},"lib\u002Fziwei\u002Fschool-config.ts",291,15854,{"path":1929,"complexity":761,"lines":1930,"bytes":1931},"lib\u002Fziwei\u002Fsihua.ts",276,10203,{"path":1933,"complexity":736,"lines":1934,"bytes":1935},"components\u002FPalaceCell.tsx",201,6817,{"path":1937,"complexity":1128,"lines":1938,"bytes":1939},"lib\u002Fziwei\u002Fyunxian-context.ts",124,5430,{"percentage":1941,"findings":980,"files":614,"byCategory":1942,"largest":1948},19.36,[1943,1944,1945,1947],{"category":818,"count":1087},{"category":1297,"count":1654},{"category":1946,"count":374},"unused-symbol",{"category":821,"count":374},[1949,1951,1954,1957,1958,1960,1962,1964,1966,1969],{"category":818,"path":1950,"name":623,"line":315,"lines":1041},"components\u002FStarDetailPanel.tsx",{"category":818,"path":1952,"name":623,"line":315,"lines":1953},"lib\u002Fziwei\u002Fheming-knowledge.ts",329,{"category":818,"path":1955,"name":623,"line":315,"lines":1956},"components\u002FShareCardCanvas.tsx",300,{"category":818,"path":1929,"name":623,"line":315,"lines":1930},{"category":818,"path":1866,"name":623,"line":315,"lines":1959},265,{"category":818,"path":1746,"name":623,"line":315,"lines":1961},212,{"category":818,"path":1963,"name":623,"line":315,"lines":801},"lib\u002Fziwei\u002Fshier-shen.ts",{"category":818,"path":1965,"name":623,"line":315,"lines":1418},"lib\u002Fziwei\u002Ftrue-solar-time.ts",{"category":818,"path":1967,"name":623,"line":315,"lines":1968},"components\u002FShareModal.tsx",148,{"category":818,"path":1937,"name":623,"line":315,"lines":1938},{"name":275,"url":1971,"description":1972,"language":301,"stars":1973,"starsToday":882,"defaultBranch":336,"headSha":1974,"durationMs":1975,"total":1976,"formats":1983,"topClones":2023,"code":2220,"health":2348,"complexity":2370,"deadCode":2422},"https:\u002F\u002Fgithub.com\u002FJetBrains\u002Fthinkrail","Vibe code with pi in a lightweight, real IDE that customises itself around the way you work — The Vibe You Need",2012,"d299f20d2ba014f382ddbcc9b49f2aa63fada132",2208,{"sources":1977,"lines":1978,"tokens":1979,"clones":276,"duplicatedLines":1980,"duplicatedTokens":1981,"percentage":265,"percentageTokens":1982},1848,340904,2647904,9673,68701,2.59,[1984,1990,1994,1999,2002,2005,2009,2014,2018,2020],{"format":892,"sources":1985,"lines":1986,"clones":1987,"duplicatedLines":1988,"percentage":1989},1213,238187,833,8021,3.37,{"format":346,"sources":289,"lines":1991,"clones":708,"duplicatedLines":1992,"percentage":1993},4436,539,12.15,{"format":381,"sources":1995,"lines":1996,"clones":1541,"duplicatedLines":1997,"percentage":1998},315,59362,629,1.06,{"format":377,"sources":613,"lines":2000,"clones":653,"duplicatedLines":1420,"percentage":2001},1333,8.48,{"format":370,"sources":636,"lines":2003,"clones":289,"duplicatedLines":1824,"percentage":2004},7886,3.03,{"format":2006,"sources":464,"lines":2007,"clones":979,"duplicatedLines":1335,"percentage":2008},"html",992,8.97,{"format":365,"sources":2010,"lines":2011,"clones":291,"duplicatedLines":2012,"percentage":2013},149,26582,37,0.14,{"format":2015,"sources":315,"lines":2016,"clones":315,"duplicatedLines":277,"percentage":2017},"diff",70,8.57,{"format":388,"sources":277,"lines":2019,"clones":368,"duplicatedLines":368,"percentage":368},858,{"format":2021,"sources":464,"lines":2022,"clones":368,"duplicatedLines":368,"percentage":368},"astro",485,[2024,2065,2095,2114,2124,2142,2151,2172,2189,2204],{"format":892,"lines":277,"tokens":613,"copies":1050,"first":2025,"others":2029,"excerpt":2053,"excerptSecond":2061},{"name":2026,"start":2027,"end":2028},"packages\u002Fserver\u002Fsrc\u002Ftodos\u002Fartifacts.test.ts",152,157,[2030,2033,2035,2038,2041,2044,2047,2050],{"name":2026,"start":2031,"end":2032},188,193,{"name":2026,"start":2034,"end":1280},258,{"name":2026,"start":2036,"end":2037},306,311,{"name":2026,"start":2039,"end":2040},336,341,{"name":2026,"start":2042,"end":2043},371,376,{"name":2026,"start":2045,"end":2046},385,390,{"name":2026,"start":2048,"end":2049},506,511,{"name":2026,"start":2051,"end":2052},572,577,{"lines":2054,"total":277},[2055,2056,2057,2058,2059,2060],"test(\"done attaches the delta of changes since the in_progress baseline\", async () => {","    const { store, root } = tempStore();","    try {","        const todo = store.add({ title: \"step\" });","        store.update(todo.id, { status: \"in_progress\" });","        await reconcileChangeArtifacts(store, root, SESSION, async () => [\"a.ts\"]);",{"lines":2062,"total":277},[2063,2056,2057,2058,2059,2064],"test(\"a done reconcile cannot commit an item reopened during its git read\", async () => {","        await reconcileChangeArtifacts(store, root, SESSION, async () => []);",{"format":346,"lines":289,"tokens":693,"copies":277,"first":2066,"others":2070,"excerpt":2082,"excerptSecond":2092},{"name":2067,"start":2068,"end":2069},"apps\u002Fweb\u002Fsrc\u002Fstyles\u002Fgenerated\u002Ftypography.css",161,169,[2071,2073,2075,2077,2079],{"name":2067,"start":2072,"end":1069},233,{"name":2067,"start":2074,"end":1828},280,{"name":2067,"start":2076,"end":1728},361,{"name":2067,"start":2078,"end":1322},370,{"name":2067,"start":2080,"end":2081},412,420,{"lines":2083,"total":289},[2084,2085,2086,2087,2088,2089,2090,622,2091],"    font-family: var(--tr-font-family-interface);","    font-size: var(--tr-font-size-s14);","    font-weight: var(--tr-font-weight-light);","    line-height: var(--tr-line-height-reading);","    letter-spacing: var(--tr-letter-spacing-normal);","    text-transform: none;","    font-style: normal;",".tr-text-ui {",{"lines":2093,"total":289},[2084,2085,2086,2087,2088,2089,2090,622,2094],".tr-code-text {",{"format":346,"lines":653,"tokens":1443,"copies":385,"first":2096,"others":2097,"excerpt":2105,"excerptSecond":2111},{"name":2067,"start":1938,"end":1637},[2098,2099,2100,2103],{"name":2067,"start":1637,"end":838},{"name":2067,"start":1751,"end":2036},{"name":2067,"start":2101,"end":2102},456,465,{"name":2067,"start":2104,"end":280},519,{"lines":2106,"total":653},[2107,2084,2085,2108,2109,2088,2089,2090,622,2110],".tr-title-dialog {","    font-weight: var(--tr-font-weight-semibold);","    line-height: var(--tr-line-height-compact);",".tr-title-card {",{"lines":2112,"total":653},[2110,2084,2085,2108,2109,2088,2089,2090,622,2113],".tr-title-section {",{"format":346,"lines":653,"tokens":366,"copies":385,"first":2115,"others":2117},{"name":2067,"start":2116,"end":1418},151,[2118,2120,2121,2122],{"name":2067,"start":2119,"end":1738},214,{"name":2067,"start":1738,"end":1534},{"name":2067,"start":1995,"end":923},{"name":2067,"start":923,"end":2123},333,{"format":892,"lines":289,"tokens":619,"copies":255,"first":2125,"others":2128},{"name":2126,"start":2069,"end":2127},"packages\u002Fserver\u002Fsrc\u002Fagent\u002Fextensions.test.ts",177,[2129,2131,2133,2135,2138,2140],{"name":2126,"start":796,"end":2130},224,{"name":2126,"start":2036,"end":2132},313,{"name":2126,"start":1831,"end":2134},350,{"name":2126,"start":2136,"end":2137},377,384,{"name":2126,"start":1904,"end":2139},433,{"name":2126,"start":984,"end":2141},457,{"format":2006,"lines":639,"tokens":2143,"copies":291,"first":2144,"others":2146},200,{"name":2145,"start":315,"end":639},"apps\u002Fwebsite\u002Fsrc\u002Fpages\u002Fagentic-development\u002Findex.astro",[2147,2149],{"name":2148,"start":315,"end":386},"apps\u002Fwebsite\u002Fsrc\u002Fpages\u002Fagentic-ide\u002Findex.astro",{"name":2150,"start":315,"end":639},"apps\u002Fwebsite\u002Fsrc\u002Fpages\u002Fvibecoding\u002Findex.astro",{"format":892,"lines":289,"tokens":1408,"copies":979,"first":2152,"others":2154},{"name":2153,"start":1395,"end":619},"packages\u002Fserver\u002Fsrc\u002Fagent\u002FchatResources.test.ts",[2155,2157,2159,2162,2165,2168,2170],{"name":2156,"start":2012,"end":736},"packages\u002Fserver\u002Fsrc\u002Fagent\u002FmcpConfirm.test.ts",{"name":2158,"start":378,"end":1408},"packages\u002Fserver\u002Fsrc\u002Fagent\u002FmcpEngine.test.ts",{"name":2160,"start":1654,"end":2161},"packages\u002Fserver\u002Fsrc\u002Fagent\u002FprojectTrust.test.ts",41,{"name":2163,"start":752,"end":2164},"packages\u002Fserver\u002Fsrc\u002Fagent\u002FreloadGate.test.ts",34,{"name":2166,"start":2167,"end":1040},"packages\u002Fserver\u002Fsrc\u002Fagent\u002FsessionShutdown.test.ts",20,{"name":2169,"start":640,"end":980},"packages\u002Fserver\u002Fsrc\u002Fhost\u002FdirectorySpelling.test.ts",{"name":2171,"start":1938,"end":1753},"packages\u002Fserver\u002Fsrc\u002Fhost\u002FturnShutdown.test.ts",{"format":892,"lines":289,"tokens":1431,"copies":385,"first":2173,"others":2177},{"name":2174,"start":2175,"end":2176},"apps\u002Fweb\u002Fsrc\u002Fnavigation\u002Frestore.test.ts",383,391,[2178,2180,2183,2186],{"name":2174,"start":2179,"end":1992},531,{"name":2174,"start":2181,"end":2182},601,609,{"name":2174,"start":2184,"end":2185},649,657,{"name":2174,"start":2187,"end":2188},683,691,{"format":2006,"lines":255,"tokens":2190,"copies":277,"first":2191,"others":2193},73,{"name":2192,"start":619,"end":2190},"apps\u002Fwebsite\u002Fsrc\u002Fcomponents\u002FInstallPicker.astro",[2194,2195,2196,2200,2202],{"name":2192,"start":614,"end":362},{"name":2192,"start":1457,"end":1588},{"name":2197,"start":2198,"end":2199},"apps\u002Fwebsite\u002Fsrc\u002Fpages\u002Findex.astro",284,287,{"name":2197,"start":1926,"end":2201},294,{"name":2197,"start":2203,"end":1092},298,{"format":346,"lines":277,"tokens":618,"copies":979,"first":2205,"others":2206},{"name":2067,"start":1808,"end":1751},[2207,2208,2210,2211,2214,2216,2218],{"name":2067,"start":1092,"end":2036},{"name":2067,"start":1597,"end":2209},429,{"name":2067,"start":2139,"end":854},{"name":2067,"start":2212,"end":2213},442,447,{"name":2067,"start":2215,"end":2101},451,{"name":2067,"start":2217,"end":2102},460,{"name":2067,"start":2219,"end":280},523,{"sources":2221,"lines":2222,"tokens":2223,"clones":691,"duplicatedLines":987,"duplicatedTokens":2224,"percentage":2225,"percentageTokens":2226,"formats":2227,"topClones":2245,"generated":2345},879,152162,966197,7476,0.74,0.77,[2228,2234,2237,2238,2240,2241,2243],{"format":381,"sources":2229,"lines":2230,"clones":2231,"duplicatedLines":2232,"percentage":2233},273,54641,54,602,1.1,{"format":892,"sources":783,"lines":2235,"clones":386,"duplicatedLines":2209,"percentage":2236},94899,0.45,{"format":2006,"sources":464,"lines":2007,"clones":979,"duplicatedLines":1335,"percentage":2008},{"format":388,"sources":302,"lines":2239,"clones":368,"duplicatedLines":368,"percentage":368},665,{"format":2021,"sources":464,"lines":2022,"clones":368,"duplicatedLines":368,"percentage":368},{"format":2242,"sources":315,"lines":2076,"clones":368,"duplicatedLines":368,"percentage":368},"powershell",{"format":360,"sources":291,"lines":2244,"clones":368,"duplicatedLines":368,"percentage":368},119,[2246,2260,2281,2299,2307,2316,2322,2330,2334,2338],{"format":2006,"lines":639,"tokens":2143,"copies":291,"first":2247,"others":2248,"excerpt":2251},{"name":2145,"start":315,"end":639},[2249,2250],{"name":2148,"start":315,"end":386},{"name":2150,"start":315,"end":639},{"lines":2252,"total":639},[2253,2254,2255,623,2256,2257,2253,623,2258,2259],"---","import Analytics from \"..\u002F..\u002Fcomponents\u002FAnalytics.astro\";","import { Landing, siteMetadata } from \"..\u002F..\u002Fvibecoding\";","const canonicalUrl = new URL(siteMetadata.path, siteMetadata.origin);","const ogImageUrl = new URL(siteMetadata.openGraphImagePath, siteMetadata.origin);","\u003C!doctype html>","\u003Chtml lang=\"en\">",{"format":2006,"lines":255,"tokens":2190,"copies":277,"first":2261,"others":2262,"excerpt":2268,"excerptSecond":2277},{"name":2192,"start":619,"end":2190},[2263,2264,2265,2266,2267],{"name":2192,"start":614,"end":362},{"name":2192,"start":1457,"end":1588},{"name":2197,"start":2198,"end":2199},{"name":2197,"start":1926,"end":2201},{"name":2197,"start":2203,"end":1092},{"lines":2269,"total":255},[2270,2271,2272,2273,2274,2275,2276],"        \u003Cbutton type=\"button\" class=\"copy-btn\" data-copy={installCommands.windows.powershell} aria-label=\"Copy PowerShell install command\">","            \u003Csvg class=\"i\" aria-hidden=\"true\">\u003Cuse href=\"#i-copy\" \u002F>\u003C\u002Fsvg>","            \u003Csvg class=\"i i-done\" aria-hidden=\"true\">\u003Cuse href=\"#i-check\" \u002F>\u003C\u002Fsvg>","        \u003C\u002Fbutton>","    \u003C\u002Fdiv>","\u003C\u002Fdiv>","\u003Cdiv class=\"windows-shell-panel\" id={`${idPrefix}-shell-cmd`} role=\"tabpanel\" aria-labelledby={`${idPrefix}-shell-cmd-tab`} data-windows-shell-panel=\"cmd\">",{"lines":2278,"total":255},[2279,2271,2272,2273,2274,2275,2280],"        \u003Cbutton type=\"button\" class=\"copy-btn\" data-copy={installCommands.windows.cmd} aria-label=\"Copy Command Prompt (cmd) install command\">","\u003Cdiv class=\"windows-shell-panel\" id={`${idPrefix}-shell-wsl`} role=\"tabpanel\" aria-labelledby={`${idPrefix}-shell-wsl-tab`} data-windows-shell-panel=\"wsl\">",{"format":892,"lines":2164,"tokens":2282,"copies":302,"first":2283,"others":2285,"excerpt":2288},346,{"name":2284,"start":876,"end":1588},"apps\u002Fwebsite\u002Fsrc\u002Fattribution\u002Fprotocol.ts",[2286],{"name":2287,"start":2231,"end":1457},"packages\u002Fserver\u002Fsrc\u002Fpersistence\u002FattributionProtocol.ts",{"lines":2289,"total":2164},[2290,2291,2292,2293,2294,2295,2296,2297,2298,622],"export function normalizeCampaignValue(value: string, limit: number): string | undefined {","    const withoutControls = Array.from(value)","        .filter((character) => {","            const codePoint = character.codePointAt(0) ?? 0;","            return codePoint > 31 && (codePoint \u003C 127 || codePoint > 159);","        })","        .join(\"\");","    const normalized = Array.from(withoutControls.trim()).slice(0, limit).join(\"\");","    return normalized.length > 0 ? normalized : undefined;",{"format":381,"lines":1040,"tokens":1908,"copies":302,"first":2300,"others":2303},{"name":2301,"start":654,"end":2302},"packages\u002Fresource-renderers\u002Fsrc\u002Frenderers\u002Fcsv\u002FDiff.tsx",135,[2304],{"name":2305,"start":2306,"end":844},"packages\u002Fresource-renderers\u002Fsrc\u002Frenderers\u002Fjson\u002FDiff.tsx",96,{"format":381,"lines":653,"tokens":1237,"copies":291,"first":2308,"others":2310},{"name":2301,"start":2309,"end":2199},278,[2311,2314],{"name":2312,"start":1934,"end":2313},"packages\u002Fresource-renderers\u002Fsrc\u002Frenderers\u002Fcsv\u002FView.tsx",210,{"name":2315,"start":633,"end":1188},"packages\u002Fresource-renderers\u002Fsrc\u002Frenderers\u002Fjson\u002FView.tsx",{"format":381,"lines":2167,"tokens":2317,"copies":302,"first":2318,"others":2319},138,{"name":2312,"start":382,"end":693},[2320],{"name":2315,"start":2321,"end":614},58,{"format":381,"lines":1050,"tokens":1188,"copies":302,"first":2323,"others":2326},{"name":2301,"start":2324,"end":2325},277,295,[2327],{"name":2305,"start":2328,"end":2329},225,243,{"format":892,"lines":289,"tokens":1420,"copies":302,"first":2331,"others":2332},{"name":2284,"start":761,"end":2321},[2333],{"name":2287,"start":394,"end":618},{"format":381,"lines":490,"tokens":1420,"copies":302,"first":2335,"others":2336},{"name":2301,"start":1388,"end":1637},[2337],{"name":2312,"start":619,"end":362},{"format":381,"lines":462,"tokens":2339,"copies":302,"first":2340,"others":2342},112,{"name":2341,"start":723,"end":693},"packages\u002Fresource-renderers\u002Fsrc\u002Frenderers\u002Fpdf\u002FPdfDiffPage.tsx",[2343],{"name":2344,"start":386,"end":1395},"packages\u002Fresource-renderers\u002Fsrc\u002Frenderers\u002Fpdf\u002FPdfPageCanvas.tsx",{"files":315,"minified":368,"sample":2346},[2347],"apps\u002Fweb\u002Fsrc\u002Fchat\u002Fgenerated\u002FproviderGlyphs.ts",{"score":2349,"grade":2350,"size":2351,"dimensions":2354},69.9,"C",{"lines":2352,"files":2353,"class":1225},299316,1542,[2355,2361,2366],{"id":740,"source":741,"value":2356,"adjusted":2356,"lines":2357,"halfLife":743,"formats":2358,"excluded":2360,"weight":315,"score":1601},2.9,8650,[892,381,388,2021,2242,360,2359],"sql",[353,384,747],{"id":750,"source":741,"value":2362,"adjusted":2363,"lines":2364,"halfLife":754,"coverage":691,"weight":315,"score":2365},0.3,0.4,1019,96.7,{"id":757,"source":741,"value":2367,"adjusted":2321,"lines":2368,"halfLife":761,"weight":315,"score":2369},58.3,174423,44.7,{"total":2371,"mean":2372,"files":2373},57457,37.3,[2374,2379,2384,2389,2393,2398,2403,2408,2413,2418],{"path":2375,"complexity":2376,"lines":2377,"bytes":2378},"apps\u002Fweb\u002Fsrc\u002Fstore\u002FappStore.ts",1544,4455,147112,{"path":2380,"complexity":2381,"lines":2382,"bytes":2383},"packages\u002Fserver\u002Fsrc\u002Fagent\u002FagentSessionManager.ts",758,2860,91568,{"path":2385,"complexity":2386,"lines":2387,"bytes":2388},"packages\u002Fserver\u002Fsrc\u002Fagent\u002FagentSessionManager.test.ts",610,3470,123205,{"path":2390,"complexity":280,"lines":2391,"bytes":2392},"apps\u002Fweb\u002Fsrc\u002Fshell\u002Flayout\u002Fmodel.ts",1515,52750,{"path":2394,"complexity":2395,"lines":2396,"bytes":2397},"packages\u002Fpi-dag\u002Fruntime\u002Fservice.ts",508,1695,60521,{"path":2399,"complexity":2400,"lines":2401,"bytes":2402},"apps\u002Fweb\u002Fsrc\u002Fstore\u002FappStore.test.ts",488,4847,169613,{"path":2404,"complexity":2405,"lines":2406,"bytes":2407},"apps\u002Fweb\u002Fsrc\u002Fchat\u002FuseChatScroll.ts",432,1322,47334,{"path":2409,"complexity":2410,"lines":2411,"bytes":2412},"apps\u002Fweb\u002Fsrc\u002Fchat\u002Ftools\u002FAskUserQuestionCard.tsx",403,1465,46811,{"path":2414,"complexity":2415,"lines":2416,"bytes":2417},"packages\u002Fpi-delegation\u002Fsrc\u002Fservice.ts",398,1346,44497,{"path":2419,"complexity":2045,"lines":2420,"bytes":2421},"packages\u002Fserver\u002Fsrc\u002Fhost\u002Fhandlers.ts",1380,45044,{"percentage":2423,"findings":736,"files":2424,"byCategory":2425,"largest":2429},0.34,1617,[2426,2427,2428],{"category":818,"count":392},{"category":1297,"count":2167},{"category":1946,"count":464},[2430,2432,2435,2437,2439,2441,2444,2446,2448,2450],{"category":818,"path":2431,"name":623,"line":315,"lines":2031},"apps\u002Fdesktop\u002Fsrc\u002Fpreload.ts",{"category":818,"path":2433,"name":623,"line":315,"lines":2434},"apps\u002Fdesktop\u002FpreBuild.ts",184,{"category":818,"path":2436,"name":623,"line":315,"lines":1460},"scripts\u002Fpi-package-parity.node.mjs",{"category":818,"path":2438,"name":623,"line":315,"lines":362},"packages\u002Fpi-dag\u002Fruntime\u002Frecovery.fixture.ts",{"category":818,"path":2440,"name":623,"line":315,"lines":708},"packages\u002Fserver\u002Fsrc\u002Fsubprocess\u002FwindowsConsole.fixture.ts",{"category":1297,"path":2442,"name":2443,"line":980,"lines":1309},"apps\u002Fdesktop\u002Fsrc\u002FpageZoom.ts","installPageZoomGestures",{"category":818,"path":2445,"name":623,"line":315,"lines":1309},"packages\u002Fpi-dag\u002Fpersistence\u002Ffixtures.ts",{"category":818,"path":2447,"name":623,"line":315,"lines":1309},"packages\u002Fpi-dag\u002Fruntime\u002Fprovider.fixture.ts",{"category":818,"path":2449,"name":623,"line":315,"lines":386},"packages\u002Fpi-dag\u002Fpersistence\u002Fprocess.fixture.ts",{"category":818,"path":2451,"name":623,"line":315,"lines":639},"packages\u002Fpi-background-commands\u002Fsrc\u002Ftest-support.ts",{"name":2453,"url":2454,"description":2455,"language":325,"stars":2456,"starsToday":2457,"defaultBranch":336,"headSha":2458,"durationMs":2459,"total":2460,"formats":2464,"topClones":2477,"code":2579,"health":2675,"complexity":2692,"deadCode":2708},"cloudflare\u002Fsecurity-audit-skill","https:\u002F\u002Fgithub.com\u002Fcloudflare\u002Fsecurity-audit-skill","A coding-agent skill for multi-phase security audits with independently verified, machine-readable findings",47270,2878,"c1c8a8c1471069fb0e188eeaff69b8e8db6564a8",849,{"sources":386,"lines":327,"tokens":2461,"clones":326,"duplicatedLines":328,"duplicatedTokens":2462,"percentage":329,"percentageTokens":2463},65273,2850,4.37,[2465,2468,2471,2473,2475,2476],{"format":360,"sources":374,"lines":2466,"clones":819,"duplicatedLines":1930,"percentage":2467},3037,9.09,{"format":370,"sources":291,"lines":2469,"clones":291,"duplicatedLines":1418,"percentage":2470},537,29.8,{"format":384,"sources":464,"lines":1538,"clones":315,"duplicatedLines":1423,"percentage":2472},12.9,{"format":365,"sources":609,"lines":2474,"clones":368,"duplicatedLines":368,"percentage":368},1884,{"format":388,"sources":315,"lines":385,"clones":368,"duplicatedLines":368,"percentage":368},{"format":377,"sources":315,"lines":302,"clones":368,"duplicatedLines":368,"percentage":368},[2478,2495,2512,2525,2533,2545,2552,2558,2565,2572],{"format":384,"lines":2164,"tokens":1184,"copies":302,"first":2479,"others":2481,"excerpt":2485},{"name":2480,"start":366,"end":2302},"skills\u002Fsecurity-audit\u002FHUNTING.md",[2482],{"name":2483,"start":882,"end":2484},"skills\u002Fsecurity-audit\u002FVALIDATION-AND-REPORTING.md",84,{"lines":2486,"total":2164},[2487,2488,623,2489,2490,2491,2492,2493,2494,623],"Artifact promotion procedure (trusted parent-side code only):","Reference only for you: the parent performs these steps; you never perform them.","Before execution, the parent opens and retains trusted, non-inheritable directory","descriptors for the agent's scratch\u002F and artifacts\u002F roots, and records an allowlist","of expected scratch-relative artifact files plus explicit per-file and cumulative","byte limits. Never pass those descriptors to the agent or sandbox. After the sandbox","and all its processes terminate, trusted parent-side code promotes each allowlisted","file separately:",{"format":370,"lines":1391,"tokens":2496,"copies":302,"first":2497,"others":2500,"excerpt":2503},268,{"name":2498,"start":2499,"end":1041},"skills\u002Fsecurity-audit\u002Freport-schema.json",253,[2501],{"name":2498,"start":2078,"end":2502},449,{"lines":2504,"total":1391},[2505,2506,2507,2508,2509,2505,2510,2507,2508,2511],"},","\"fingerprint\": {","  \"type\": \"string\",","  \"minLength\": 1,","  \"pattern\": \"^[A-Za-z0-9][A-Za-z0-9._:\u002F@+-]*$\"","\"title\": {","  \"visibleContent\": true",{"format":370,"lines":723,"tokens":796,"copies":302,"first":2513,"others":2514,"excerpt":2517},{"name":2498,"start":635,"end":1460},[2515],{"name":2498,"start":2516,"end":1041},269,{"lines":2518,"total":723},[2519,2507,2508,2511,2505,2520,2521,2522,2523,2524],"\"intended_behavior\": {","\"trace\": {","  \"type\": \"array\",","  \"minItems\": 1,","  \"uniqueItems\": true,","  \"items\": {",{"format":360,"lines":1423,"tokens":1621,"copies":302,"first":2526,"others":2530},{"name":2527,"start":2528,"end":2529},"skills\u002Fsecurity-audit\u002Fvalidate-coverage-ledger.cjs",92,123,[2531],{"name":2532,"start":980,"end":1856},"skills\u002Fsecurity-audit\u002Fvalidate-findings.cjs",{"format":360,"lines":255,"tokens":1391,"copies":291,"first":2534,"others":2538},{"name":2535,"start":2536,"end":2537},"skills\u002Fsecurity-audit\u002Fvalidate-coverage-ledger.test.cjs",705,711,[2539,2542],{"name":2540,"start":2541,"end":379},"skills\u002Fsecurity-audit\u002Fvalidate-findings.test.cjs",543,{"name":2540,"start":2543,"end":2544},565,571,{"format":360,"lines":1087,"tokens":1938,"copies":302,"first":2546,"others":2549},{"name":2535,"start":2547,"end":2548},628,641,[2550],{"name":2540,"start":1037,"end":2551},480,{"format":360,"lines":511,"tokens":844,"copies":302,"first":2553,"others":2556},{"name":2527,"start":2554,"end":2555},318,340,[2557],{"name":2532,"start":2317,"end":1418},{"format":360,"lines":609,"tokens":654,"copies":302,"first":2559,"others":2562},{"name":2527,"start":2560,"end":2561},718,733,[2563],{"name":2532,"start":2181,"end":2564},615,{"format":360,"lines":1087,"tokens":681,"copies":302,"first":2566,"others":2568},{"name":2535,"start":2386,"end":2567},623,[2569],{"name":2540,"start":2570,"end":2571},387,400,{"format":360,"lines":429,"tokens":1431,"copies":302,"first":2573,"others":2575},{"name":2535,"start":2574,"end":1913},652,[2576],{"name":2540,"start":2577,"end":2578},491,501,{"sources":302,"lines":2580,"tokens":2581,"clones":289,"duplicatedLines":2317,"duplicatedTokens":2582,"percentage":2583,"percentageTokens":2584,"formats":2585,"topClones":2587,"generated":2673},1645,12266,816,8.39,6.65,[2586],{"format":360,"sources":302,"lines":2580,"clones":289,"duplicatedLines":2317,"percentage":2583},[2588,2602,2616,2632,2637,2645,2652,2660,2667],{"format":360,"lines":1423,"tokens":1621,"copies":302,"first":2589,"others":2590,"excerpt":2592},{"name":2527,"start":2528,"end":2529},[2591],{"name":2532,"start":980,"end":1856},{"lines":2593,"total":1423},[2594,623,2595,2596,623,2597,2598,2599,2600,2601],"const hasOwn = (value, key) => Object.prototype.hasOwnProperty.call(value, key);","class JsonStructureError extends Error {}","class SafeInputError extends Error {}","function escapeUnsafeDiagnosticCharacters(value) {","  return String(value).replace(UNSAFE_DIAGNOSTIC_CHARACTER, (character) => {","    const codePoint = character.codePointAt(0);","    return codePoint \u003C= 0xffff","      ? `\\\\u${codePoint.toString(16).padStart(4, \"0\")}`",{"format":360,"lines":511,"tokens":844,"copies":302,"first":2603,"others":2604,"excerpt":2606},{"name":2527,"start":2554,"end":2555},[2605],{"name":2532,"start":2317,"end":1418},{"lines":2607,"total":511},[2608,622,623,2609,2610,2611,2612,2613,2614,2615],"  return errors;","function hasValidUnicodeScalarValues(value) {","  let index = 0;","  while (index \u003C value.length) {","    const first = value.charCodeAt(index++);","    if (first >= 0xd800 && first \u003C= 0xdbff) {","      if (index >= value.length) return false;","      const second = value.charCodeAt(index++);",{"format":360,"lines":609,"tokens":654,"copies":302,"first":2617,"others":2618,"excerpt":2620,"excerptSecond":2629},{"name":2527,"start":2560,"end":2561},[2619],{"name":2532,"start":2181,"end":2564},{"lines":2621,"total":609},[2608,622,623,2622,2623,2624,2625,2626,2627,2628],"function readFileWithinLimit(file) {","  const noFollow = fs.constants.O_NOFOLLOW;","  const nonBlock = fs.constants.O_NONBLOCK;","  if (!Number.isInteger(noFollow) || noFollow === 0 || !Number.isInteger(nonBlock) || nonBlock === 0) {","    \u002F\u002F Node exposes no race-safe fallback on these platforms, so reject all inputs.","    throw new SafeInputError(\"OS no-follow and nonblocking input protection is unavailable\");","  }",{"lines":2630,"total":889},[2631,622,623,2622,2623,2624,2625,2627,2628,623],"  return schema;",{"format":360,"lines":1519,"tokens":1457,"copies":302,"first":2633,"others":2635},{"name":2527,"start":2634,"end":1188},120,[2636],{"name":2532,"start":1335,"end":681},{"format":360,"lines":889,"tokens":2638,"copies":302,"first":2639,"others":2641},72,{"name":2527,"start":2640,"end":1825},230,[2642],{"name":2532,"start":2643,"end":2644},664,679,{"format":360,"lines":979,"tokens":723,"copies":302,"first":2646,"others":2649},{"name":2527,"start":2647,"end":2648},741,748,[2650],{"name":2532,"start":1997,"end":2651},636,{"format":360,"lines":464,"tokens":1010,"copies":302,"first":2653,"others":2656},{"name":2527,"start":2654,"end":2655},749,761,[2657],{"name":2532,"start":2658,"end":2659},639,651,{"format":360,"lines":255,"tokens":618,"copies":302,"first":2661,"others":2664},{"name":2527,"start":2662,"end":2663},845,851,[2665],{"name":2532,"start":2654,"end":2666},755,{"format":360,"lines":277,"tokens":761,"copies":302,"first":2668,"others":2669},{"name":2527,"start":1674,"end":1904},[2670],{"name":2527,"start":2671,"end":2672},471,476,{"files":368,"minified":368,"sample":2674},[],{"score":2676,"grade":2350,"size":2677,"dimensions":2679},58.1,{"lines":2466,"files":374,"class":2678},"S",[2680,2686,2689],{"id":740,"source":741,"value":2681,"adjusted":2682,"lines":1930,"halfLife":743,"formats":2683,"excluded":2684,"weight":315,"score":2685},9.1,6.9,[360],[384,747],57.1,{"id":750,"source":741,"value":368,"adjusted":2687,"lines":368,"halfLife":754,"weight":315,"score":2688},1.2,89.2,{"id":757,"source":741,"value":691,"adjusted":2690,"lines":2466,"halfLife":761,"weight":315,"score":2691},68.6,38.6,{"total":2693,"mean":1290,"files":2694},944,[2695,2699,2703,2706],{"path":2527,"complexity":2696,"lines":2697,"bytes":2698},358,872,33522,{"path":2532,"complexity":2700,"lines":2701,"bytes":2702},347,773,28806,{"path":2535,"complexity":2634,"lines":2704,"bytes":2705},740,28483,{"path":2540,"complexity":2244,"lines":2574,"bytes":2707},26384,{"percentage":368,"findings":368,"files":374,"byCategory":2709,"largest":2710},[],[],{"name":285,"url":2712,"description":2713,"language":308,"stars":2714,"starsToday":2715,"defaultBranch":336,"headSha":2716,"durationMs":2717,"total":2718,"formats":2726,"topClones":2757,"code":2915,"health":3032,"complexity":3053,"deadCode":3097},"https:\u002F\u002Fgithub.com\u002FAgriciDaniel\u002Fclaude-seo","Universal SEO skill for Claude Code. 26 sub-skills + 19 sub-agents covering technical SEO, E-E-A-T, schema, GEO\u002FAEO, agent readiness (Lighthouse Agentic Browsing, WebMCP, llms.txt), backlinks, local SEO, e-commerce, international SEO, Google APIs, and PDF\u002FExcel reporting. 9 optional extensions for live SEO data.",21206,197,"6be93f45064ffbadced572b5d5c95f55fd263af0",1008,{"sources":2719,"lines":2720,"tokens":2721,"clones":2496,"duplicatedLines":2722,"duplicatedTokens":2723,"percentage":2724,"percentageTokens":2725},587,80734,598812,6421,42431,7.95,7.09,[2727,2731,2736,2740,2743,2746,2749,2752,2755,2756],{"format":365,"sources":861,"lines":2728,"clones":1938,"duplicatedLines":2729,"percentage":2730},29580,4496,15.2,{"format":373,"sources":2732,"lines":2733,"clones":1606,"duplicatedLines":2734,"percentage":2735},146,41799,900,2.15,{"format":384,"sources":1646,"lines":2737,"clones":386,"duplicatedLines":2738,"percentage":2739},1591,431,27.09,{"format":388,"sources":2012,"lines":2741,"clones":464,"duplicatedLines":1961,"percentage":2742},1946,10.89,{"format":377,"sources":2231,"lines":2744,"clones":289,"duplicatedLines":1698,"percentage":2745},1328,13.18,{"format":2242,"sources":392,"lines":2747,"clones":385,"duplicatedLines":1128,"percentage":2748},1064,4.04,{"format":370,"sources":326,"lines":2750,"clones":291,"duplicatedLines":1450,"percentage":2751},2205,6.8,{"format":353,"sources":289,"lines":2753,"clones":302,"duplicatedLines":1087,"percentage":2754},1007,1.39,{"format":1341,"sources":302,"lines":654,"clones":368,"duplicatedLines":368,"percentage":368},{"format":360,"sources":315,"lines":286,"clones":368,"duplicatedLines":368,"percentage":368},[2758,2776,2804,2830,2848,2855,2865,2879,2902,2909],{"format":365,"lines":2759,"tokens":2760,"copies":302,"first":2761,"others":2764,"excerpt":2767},396,3633,{"name":2762,"start":2167,"end":2763},"extensions\u002Fdataforseo\u002Fskills\u002Fseo-dataforseo\u002FSKILL.md",415,[2765],{"name":2766,"start":2167,"end":2763},"skills\u002Fseo-dataforseo\u002FSKILL.md",{"lines":2768,"total":2759},[2769,623,2770,2771,2772,2773,623,2774,623,2775],"# DataForSEO: Live SEO Data (Extension)","Live search data via the DataForSEO MCP server. Provides real-time SERP results","(organic + images), keyword metrics, backlink profiles, on-page analysis, content","analysis, business listings, AI visibility checking, and LLM mention tracking","across 9 API modules with 79+ MCP tools.","## Prerequisites","This skill requires the DataForSEO extension to be installed:",{"format":365,"lines":876,"tokens":2777,"copies":464,"first":2778,"others":2780,"excerpt":2797},271,{"name":2779,"start":429,"end":2016},"skills\u002Fseo-flow\u002Freferences\u002Fprompts\u002Foptimize\u002Fai-detector-test-follow-up-prompt.md",[2781,2783,2785,2787,2789,2791,2793,2795],{"name":2782,"start":429,"end":2016},"skills\u002Fseo-flow\u002Freferences\u002Fprompts\u002Foptimize\u002Fai-supporting-pages-rewrite-prompt.md",{"name":2784,"start":429,"end":2016},"skills\u002Fseo-flow\u002Freferences\u002Fprompts\u002Foptimize\u002Fbasic-prompt.md",{"name":2786,"start":429,"end":2016},"skills\u002Fseo-flow\u002Freferences\u002Fprompts\u002Foptimize\u002Fblog-post-outline-prompt.md",{"name":2788,"start":429,"end":2016},"skills\u002Fseo-flow\u002Freferences\u002Fprompts\u002Foptimize\u002Fblog-post-writing-prompt.md",{"name":2790,"start":429,"end":2016},"skills\u002Fseo-flow\u002Freferences\u002Fprompts\u002Foptimize\u002Ffollow-up-prompt.md",{"name":2792,"start":429,"end":2016},"skills\u002Fseo-flow\u002Freferences\u002Fprompts\u002Foptimize\u002Fpaa-question-rewording-prompt.md",{"name":2794,"start":429,"end":2016},"skills\u002Fseo-flow\u002Freferences\u002Fprompts\u002Foptimize\u002Freddit-claude-prompt.md",{"name":2796,"start":429,"end":2016},"skills\u002Fseo-flow\u002Freferences\u002Fprompts\u002Foptimize\u002Fstep-1-the-chatgpt-discovery-prompt.md",{"lines":2798,"total":876},[2799,623,2800,623,2801,623,2802,623,2803,623],"# AI detector test follow-up Prompt","## Use This When","Use this prompt when you need a structured optimize deliverable and want the model to separate observations, assumptions, recommended actions, and claims that …","## AI Compatibility","Works with long-context reasoning models. For smaller models, provide narrower inputs and ask for one output section at a time.",{"format":384,"lines":464,"tokens":2805,"copies":1161,"first":2806,"others":2807,"excerpt":2820},107,{"name":2779,"start":1423,"end":394},[2808,2809,2810,2811,2812,2814,2816,2818],{"name":2782,"start":1423,"end":394},{"name":2784,"start":1423,"end":394},{"name":2786,"start":1423,"end":394},{"name":2788,"start":1423,"end":394},{"name":2813,"start":1423,"end":394},"skills\u002Fseo-flow\u002Freferences\u002Fprompts\u002Foptimize\u002Fclaude-prompt-1.md",{"name":2815,"start":1423,"end":394},"skills\u002Fseo-flow\u002Freferences\u002Fprompts\u002Foptimize\u002Fclaude-prompt-2.md",{"name":2817,"start":1423,"end":394},"skills\u002Fseo-flow\u002Freferences\u002Fprompts\u002Foptimize\u002Fctr-audit-prompt.md",{"name":2819,"start":1423,"end":394},"skills\u002Fseo-flow\u002Freferences\u002Fprompts\u002Foptimize\u002Ffollow-up-prompt-1.md",{"lines":2821,"total":464},[2822,623,2823,623,2824,2825,2826,2827,2828,2829],"Act as a senior SEO strategist using the FLOW model.","Task: create a optimize deliverable for: [BUSINESS OR ASSET].","Use only the supplied inputs and clearly label any assumption. Do not invent statistics. Do not reuse private examples. Build the answer around:","1. Searcher or buyer intent.","2. Evidence available now.","3. Gaps that block trust, extraction, or conversion.","4. Recommended changes in priority order.","5. Measurement events and review cadence.",{"format":365,"lines":2321,"tokens":347,"copies":979,"first":2831,"others":2833},{"name":2832,"start":464,"end":2016},"skills\u002Fseo-flow\u002Freferences\u002Fprompts\u002Flocal\u002Fai-homepage-rewrite-prompt.md",[2834,2836,2838,2840,2842,2844,2846],{"name":2835,"start":464,"end":2016},"skills\u002Fseo-flow\u002Freferences\u002Fprompts\u002Flocal\u002Fgbp-description-claude-prompt-1.md",{"name":2837,"start":464,"end":2016},"skills\u002Fseo-flow\u002Freferences\u002Fprompts\u002Flocal\u002Fgbp-description-claude-prompt-2.md",{"name":2839,"start":464,"end":2016},"skills\u002Fseo-flow\u002Freferences\u002Fprompts\u002Flocal\u002Fgbp-description-claude-prompt-3.md",{"name":2841,"start":464,"end":2016},"skills\u002Fseo-flow\u002Freferences\u002Fprompts\u002Flocal\u002Fprompt-generating-a-meta-description.md",{"name":2843,"start":464,"end":2016},"skills\u002Fseo-flow\u002Freferences\u002Fprompts\u002Flocal\u002Fprompt-generating-a-title-tag.md",{"name":2845,"start":464,"end":2016},"skills\u002Fseo-flow\u002Freferences\u002Fprompts\u002Flocal\u002Fprompt-rewriting-existing-homepage.md",{"name":2847,"start":464,"end":2016},"skills\u002Fseo-flow\u002Freferences\u002Fprompts\u002Flocal\u002Fprompt-rewriting-existing-service-page.md",{"format":365,"lines":838,"tokens":2849,"copies":302,"first":2850,"others":2852},1517,{"name":2851,"start":315,"end":838},"extensions\u002Fbanana\u002Freferences\u002Fprompt-engineering.md",[2853],{"name":2854,"start":315,"end":838},"skills\u002Fseo-image-gen\u002Freferences\u002Fprompt-engineering.md",{"format":365,"lines":2321,"tokens":347,"copies":277,"first":2856,"others":2857},{"name":2779,"start":464,"end":2016},[2858,2859,2860,2861,2863],{"name":2813,"start":464,"end":2016},{"name":2815,"start":464,"end":2016},{"name":2817,"start":464,"end":2016},{"name":2862,"start":464,"end":2016},"skills\u002Fseo-flow\u002Freferences\u002Fprompts\u002Foptimize\u002Fprompt-core-30-content-audit.md",{"name":2864,"start":464,"end":2016},"skills\u002Fseo-flow\u002Freferences\u002Fprompts\u002Foptimize\u002Fproperty-content-with-authority-audit-prompt.md",{"format":384,"lines":464,"tokens":2805,"copies":429,"first":2866,"others":2867},{"name":2832,"start":1423,"end":394},[2868,2870,2872,2873,2874,2875,2877,2878],{"name":2869,"start":1423,"end":394},"skills\u002Fseo-flow\u002Freferences\u002Fprompts\u002Flocal\u002Fclaude-deep-research-prompt.md",{"name":2871,"start":1423,"end":394},"skills\u002Fseo-flow\u002Freferences\u002Fprompts\u002Flocal\u002Fgbp-categories-prompt.md",{"name":2835,"start":1423,"end":394},{"name":2837,"start":1423,"end":394},{"name":2839,"start":1423,"end":394},{"name":2876,"start":1423,"end":394},"skills\u002Fseo-flow\u002Freferences\u002Fprompts\u002Flocal\u002Fgbp-services-prompt.md",{"name":2841,"start":1423,"end":394},{"name":2843,"start":1423,"end":394},{"format":365,"lines":289,"tokens":977,"copies":1087,"first":2880,"others":2882},{"name":2881,"start":1170,"end":2313},"skills\u002Fseo-audit\u002FSKILL.md",[2883,2885,2888,2890,2892,2895,2898,2900],{"name":2884,"start":1602,"end":356},"skills\u002Fseo-competitor-pages\u002FSKILL.md",{"name":2886,"start":1538,"end":2887},"skills\u002Fseo-content-brief\u002FSKILL.md",256,{"name":2889,"start":806,"end":1449},"skills\u002Fseo-flow\u002FSKILL.md",{"name":2891,"start":1728,"end":2136},"skills\u002Fseo-google\u002FSKILL.md",{"name":2893,"start":2894,"end":2203},"skills\u002Fseo-hreflang\u002FSKILL.md",290,{"name":2896,"start":1642,"end":2897},"skills\u002Fseo-images\u002FSKILL.md",444,{"name":2899,"start":1930,"end":2198},"skills\u002Fseo-maps\u002FSKILL.md",{"name":2901,"start":1048,"end":2805},"skills\u002Fseo-page\u002FSKILL.md",{"format":365,"lines":1010,"tokens":2903,"copies":302,"first":2904,"others":2906},871,{"name":2905,"start":315,"end":1010},"extensions\u002Fdataforseo\u002Fskills\u002Fseo-dataforseo\u002Freferences\u002Fcost-tiers.md",[2907],{"name":2908,"start":315,"end":1010},"skills\u002Fseo-dataforseo\u002Freferences\u002Fcost-tiers.md",{"format":365,"lines":2638,"tokens":2459,"copies":302,"first":2910,"others":2912},{"name":2911,"start":315,"end":2638},"extensions\u002Fbanana\u002Freferences\u002Fprompt-adaptation-safety.md",[2913],{"name":2914,"start":315,"end":2638},"skills\u002Fseo-image-gen\u002Freferences\u002Fprompt-adaptation-safety.md",{"sources":1583,"lines":2916,"tokens":2917,"clones":286,"duplicatedLines":2918,"duplicatedTokens":2919,"percentage":287,"percentageTokens":2920,"formats":2921,"topClones":2929,"generated":3030},31070,176337,810,4895,2.78,[2922,2925,2927,2928],{"format":373,"sources":708,"lines":2923,"clones":378,"duplicatedLines":1057,"percentage":2924},28400,2.24,{"format":388,"sources":2167,"lines":2926,"clones":429,"duplicatedLines":1753,"percentage":2017},1541,{"format":2242,"sources":392,"lines":2747,"clones":385,"duplicatedLines":1128,"percentage":2748},{"format":360,"sources":315,"lines":286,"clones":368,"duplicatedLines":368,"percentage":368},[2930,2946,2965,2983,2988,3000,3006,3012,3016,3024],{"format":373,"lines":378,"tokens":2931,"copies":302,"first":2932,"others":2934,"excerpt":2938},363,{"name":2933,"start":1391,"end":633},"extensions\u002Fbanana\u002Fscripts\u002Fedit.py",[2935],{"name":2936,"start":2190,"end":2937},"extensions\u002Fbanana\u002Fscripts\u002Fgenerate.py",121,{"lines":2939,"total":378},[622,623,2940,2941,2942,2943,2944,2945,1400,623],"data = json.dumps(body).encode(\"utf-8\")","req = urllib.request.Request(","    url,","    data=data,","    headers={\"Content-Type\": \"application\u002Fjson\", \"X-Goog-Api-Key\": api_key},","    method=\"POST\",",{"format":388,"lines":490,"tokens":1388,"copies":291,"first":2947,"others":2949,"excerpt":2955},{"name":2948,"start":811,"end":1414},"extensions\u002Fbanana\u002Finstall.sh",[2950,2953],{"name":2951,"start":2952,"end":1677},"extensions\u002Fdataforseo\u002Finstall.sh",140,{"name":2954,"start":2805,"end":2529},"extensions\u002Ffirecrawl\u002Finstall.sh",{"lines":2956,"total":490},[2957,2958,622,623,2959,2960,2961,2962,2963,2964],"        'GOOGLE_AI_API_KEY': api_key,","    },","os.makedirs(os.path.dirname(settings_path) or '.', exist_ok=True)","fd, tmp = tempfile.mkstemp(dir=os.path.dirname(settings_path) or '.', prefix='.settings.', suffix='.json')","try:","    with os.fdopen(fd, 'w') as f:","        json.dump(settings, f, indent=2)","    os.chmod(tmp, 0o600)",{"format":373,"lines":635,"tokens":1677,"copies":302,"first":2966,"others":2968,"excerpt":2971},{"name":2967,"start":362,"end":1388},"scripts\u002Fbacklinks_auth.py",[2969],{"name":2970,"start":1646,"end":654},"scripts\u002Fmatomo_auth.py",{"lines":2972,"total":635},[2973,2974,2975,2976,2977,2978,2979,2980,2981,2982],"function at all, since it is a no-op there.","\"\"\"","if os.name != \"nt\":","    return","user = os.environ.get(\"USERNAME\", \"\").strip()","if not user:","    print(","        f\"Warning: USERNAME is not set; could not restrict {path} to the current user\",","        file=sys.stderr,","    )",{"format":373,"lines":752,"tokens":2984,"copies":302,"first":2985,"others":2986},126,{"name":2933,"start":752,"end":378},[2987],{"name":2936,"start":1060,"end":980},{"format":373,"lines":653,"tokens":1010,"copies":291,"first":2989,"others":2993},{"name":2990,"start":2991,"end":2992},"scripts\u002Fgoogle_report.py",2154,2163,[2994,2997],{"name":2990,"start":2995,"end":2996},2195,2204,{"name":2990,"start":2998,"end":2999},2231,2240,{"format":2242,"lines":464,"tokens":681,"copies":302,"first":3001,"others":3003},{"name":3002,"start":2244,"end":1371},"extensions\u002Fdataforseo\u002Finstall.ps1",[3004],{"name":3005,"start":2484,"end":2306},"extensions\u002Ffirecrawl\u002Finstall.ps1",{"format":373,"lines":609,"tokens":1443,"copies":302,"first":3007,"others":3009},{"name":3008,"start":812,"end":1956},"scripts\u002Fga4_report.py",[3010],{"name":3008,"start":2134,"end":3011},365,{"format":388,"lines":1040,"tokens":1461,"copies":302,"first":3013,"others":3014},{"name":2948,"start":462,"end":1701},[3015],{"name":2951,"start":635,"end":1010},{"format":373,"lines":462,"tokens":2306,"copies":302,"first":3017,"others":3019},{"name":2967,"start":3018,"end":1352},555,[3020],{"name":3021,"start":3022,"end":3023},"scripts\u002Fgoogle_auth.py",1101,1122,{"format":373,"lines":429,"tokens":1588,"copies":302,"first":3025,"others":3027},{"name":3026,"start":1072,"end":1194},"scripts\u002Fdataforseo_merchant.py",[3028],{"name":3026,"start":2738,"end":3029},439,{"files":368,"minified":368,"sample":3031},[],{"score":3033,"grade":295,"size":3034,"dimensions":3036},71.7,{"lines":3035,"files":2127,"class":737},44415,[3037,3044,3048],{"id":740,"source":741,"value":3038,"adjusted":3039,"lines":3040,"halfLife":743,"formats":3041,"excluded":3042,"weight":315,"score":3043},2.4,2.5,1075,[373,388,2242,360],[353,384,747],81.8,{"id":750,"source":741,"value":368,"adjusted":1558,"lines":490,"halfLife":754,"coverage":3045,"weight":3046,"score":3047},94.1,0.941,98.3,{"id":757,"source":741,"value":3049,"adjusted":3050,"lines":3051,"halfLife":761,"weight":315,"score":3052},56.5,54.9,25087,46.7,{"total":3054,"mean":3055,"files":3056},6885,38.9,[3057,3061,3065,3069,3072,3077,3082,3086,3089,3093],{"path":2990,"complexity":3058,"lines":3059,"bytes":3060},408,2714,100608,{"path":3062,"complexity":1809,"lines":3063,"bytes":3064},"scripts\u002Fagentic_check.py",918,45587,{"path":3066,"complexity":1621,"lines":3067,"bytes":3068},"scripts\u002Furl_safety.py",1195,45633,{"path":3021,"complexity":2127,"lines":3070,"bytes":3071},1151,41754,{"path":3073,"complexity":3074,"lines":3075,"bytes":3076},"scripts\u002Fdrift_compare.py",158,608,22811,{"path":3078,"complexity":3079,"lines":3080,"bytes":3081},"scripts\u002Frender_page.py",143,777,27963,{"path":3083,"complexity":1188,"lines":3084,"bytes":3085},"scripts\u002Fpagespeed_check.py",669,23891,{"path":3087,"complexity":844,"lines":904,"bytes":3088},"scripts\u002Flighthouse_agentic.py",17836,{"path":3090,"complexity":2634,"lines":3091,"bytes":3092},"scripts\u002Fbing_webmaster.py",611,22294,{"path":3094,"complexity":2244,"lines":3095,"bytes":3096},"scripts\u002Fmatomo_report.py",708,26499,{"percentage":3098,"findings":291,"files":3099,"byCategory":3100,"largest":3102},0.04,145,[3101],{"category":1946,"count":291},[3103,3105,3107],{"category":1946,"path":2990,"name":3104,"line":708,"lines":979},"_rating_color",{"category":1946,"path":2990,"name":3106,"line":1251,"lines":385},"_img_tag",{"category":1946,"path":2990,"name":3108,"line":3109,"lines":374},"_finding_severity",1079,{"\u002Ftrending\u002F2026-10-26":3111},{"views":315,"visits":315},null,1793141465741]