[{"data":1,"prerenderedAt":903},["ShallowReactive",2],{"navigation_docs":3,"trending-repo-ranxianglei\u002Fbillion-context":249,"page-views-\u002Ftrending\u002Franxianglei\u002Fbillion-context":901},[4,29,104,124,194],{"title":5,"icon":6,"path":7,"stem":8,"children":9},"Start",false,"\u002Fstart","1.start",[10,14,19,24],{"title":11,"path":7,"stem":12,"icon":13},"What jscpd finds","1.start\u002Findex","i-lucide-house",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fstart\u002Finstallation","1.start\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quickstart","\u002Fstart\u002Fquickstart","1.start\u002F3.quickstart","i-lucide-rocket",{"title":25,"path":26,"stem":27,"icon":28},"Configuration basics","\u002Fstart\u002Fconfiguration","1.start\u002F4.configuration","i-lucide-settings-2",{"title":30,"icon":6,"path":31,"stem":32,"children":33,"page":6},"Guides","\u002Fguides","2.guides",[34,39,44,49,54,59,64,69,74,79,84,89,94,99],{"title":35,"path":36,"stem":37,"icon":38},"Use jscpd in CI","\u002Fguides\u002Fci","2.guides\u002F01.ci","i-lucide-github",{"title":40,"path":41,"stem":42,"icon":43},"Pre-commit hooks","\u002Fguides\u002Fpre-commit","2.guides\u002F02.pre-commit","i-lucide-git-commit",{"title":45,"path":46,"stem":47,"icon":48},"Fail only on new duplication","\u002Fguides\u002Fbaseline","2.guides\u002F03.baseline","i-lucide-git-compare",{"title":50,"path":51,"stem":52,"icon":53},"Monorepos","\u002Fguides\u002Fmonorepos","2.guides\u002F04.monorepos","i-lucide-folder-tree",{"title":55,"path":56,"stem":57,"icon":58},"Cross-format detection","\u002Fguides\u002Fcross-format","2.guides\u002F05.cross-format","i-lucide-layers",{"title":60,"path":61,"stem":62,"icon":63},"Agents","\u002Fguides\u002Fagents","2.guides\u002F06.agents","i-lucide-cpu",{"title":65,"path":66,"stem":67,"icon":68},"Editors","\u002Fguides\u002Feditors","2.guides\u002F07.editors","i-lucide-code",{"title":70,"path":71,"stem":72,"icon":73},"Duplication over git history","\u002Fguides\u002Fhistory","2.guides\u002F08.history","i-lucide-chart-no-axes-combined",{"title":75,"path":76,"stem":77,"icon":78},"Dashboard and health score","\u002Fguides\u002Fdashboard","2.guides\u002F09.dashboard","i-lucide-layout-dashboard",{"title":80,"path":81,"stem":82,"icon":83},"Dead code","\u002Fguides\u002Fdead-code","2.guides\u002F10.dead-code","i-lucide-ghost",{"title":85,"path":86,"stem":87,"icon":88},"Comparing two codebases","\u002Fguides\u002Fcompare","2.guides\u002F11.compare","i-lucide-git-compare-arrows",{"title":90,"path":91,"stem":92,"icon":93},"Semantic clones","\u002Fguides\u002Fsemantic-clones","2.guides\u002F12.semantic-clones","i-lucide-brain-circuit",{"title":95,"path":96,"stem":97,"icon":98},"Similar functions","\u002Fguides\u002Fsimilarity","2.guides\u002F13.similarity","i-lucide-list-tree",{"title":100,"path":101,"stem":102,"icon":103},"Boundaries","\u002Fguides\u002Fboundaries","2.guides\u002F14.boundaries","i-lucide-fence",{"title":105,"icon":6,"path":106,"stem":107,"children":108,"page":6},"Concepts","\u002Fconcepts","3.concepts",[109,114,119],{"title":110,"path":111,"stem":112,"icon":113},"Types of code clones","\u002Fconcepts\u002Fclone-types","3.concepts\u002F1.clone-types","i-lucide-copy",{"title":115,"path":116,"stem":117,"icon":118},"How detection works","\u002Fconcepts\u002Fhow-detection-works","3.concepts\u002F2.how-detection-works","i-lucide-scan-search",{"title":120,"path":121,"stem":122,"icon":123},"The health score","\u002Fconcepts\u002Fhealth-score","3.concepts\u002F3.health-score","i-lucide-heart-pulse",{"title":125,"icon":6,"path":126,"stem":127,"children":128,"page":6},"Reference","\u002Freference","4.reference",[129,134,139,144,181,186,190],{"title":130,"path":131,"stem":132,"icon":133},"CLI options","\u002Freference\u002Fcli","4.reference\u002F1.cli","i-lucide-terminal",{"title":135,"path":136,"stem":137,"icon":138},"The config file","\u002Freference\u002Fconfig-file","4.reference\u002F2.config-file","i-lucide-settings",{"title":140,"path":141,"stem":142,"icon":143},"Exit codes","\u002Freference\u002Fexit-codes","4.reference\u002F3.exit-codes","i-lucide-log-out",{"title":145,"icon":6,"path":146,"stem":147,"children":148},"Reporters","\u002Freference\u002Freporters","4.reference\u002F4.reporters\u002Findex",[149,151,156,161,166,171,176],{"title":145,"path":146,"stem":147,"icon":150},"i-lucide-file-chart-column",{"title":152,"path":153,"stem":154,"icon":155},"HTML reporter","\u002Freference\u002Freporters\u002Fhtml","4.reference\u002F4.reporters\u002F2.html","i-lucide-file-code",{"title":157,"path":158,"stem":159,"icon":160},"JSON reporter","\u002Freference\u002Freporters\u002Fjson","4.reference\u002F4.reporters\u002F3.json","i-lucide-braces",{"title":162,"path":163,"stem":164,"icon":165},"Badge reporter","\u002Freference\u002Freporters\u002Fbadge","4.reference\u002F4.reporters\u002F4.badge","i-lucide-award",{"title":167,"path":168,"stem":169,"icon":170},"SARIF reporter","\u002Freference\u002Freporters\u002Fsarif","4.reference\u002F4.reporters\u002F5.sarif","i-lucide-shield-check",{"title":172,"path":173,"stem":174,"icon":175},"CodeClimate reporter","\u002Freference\u002Freporters\u002Fcodeclimate","4.reference\u002F4.reporters\u002F6.codeclimate","i-lucide-flag-triangle-right",{"title":177,"path":178,"stem":179,"icon":180},"OpenMetrics reporter","\u002Freference\u002Freporters\u002Fopenmetrics","4.reference\u002F4.reporters\u002F7.openmetrics","i-lucide-activity",{"title":182,"path":183,"stem":184,"icon":185},"Supported formats","\u002Freference\u002Fsupported-formats","4.reference\u002F5.supported-formats","i-lucide-languages",{"title":187,"path":188,"stem":189,"icon":38},"GitHub Action","\u002Freference\u002Fgithub-action","4.reference\u002F6.github-action",{"title":191,"path":192,"stem":193,"icon":68},"Rust crates","\u002Freference\u002Frust-crates","4.reference\u002F7.rust-crates",{"title":195,"icon":6,"path":196,"stem":197,"children":198,"page":6},"Project","\u002Fproject","5.project",[199,204,209,214,239,244],{"title":200,"path":201,"stem":202,"icon":203},"Changelog","\u002Fproject\u002Fchangelog","5.project\u002F1.changelog","i-lucide-scroll-text",{"title":205,"path":206,"stem":207,"icon":208},"Migrating from v4 to v5","\u002Fproject\u002Fmigration","5.project\u002F2.migration","i-lucide-arrow-right-left",{"title":210,"path":211,"stem":212,"icon":213},"jscpd v4 (TypeScript)","\u002Fproject\u002Fv4","5.project\u002F3.v4","i-simple-icons-typescript",{"title":215,"icon":6,"path":216,"stem":217,"children":218},"Benchmarks","\u002Fproject\u002Fbenchmarks","5.project\u002F4.benchmarks\u002Findex",[219,221,226,230,235],{"title":215,"path":216,"stem":217,"icon":220},"i-lucide-gauge",{"title":222,"path":223,"stem":224,"icon":225},"Detection Speed","\u002Fproject\u002Fbenchmarks\u002Fdetection-speed","5.project\u002F4.benchmarks\u002F2.detection-speed","i-lucide-zap",{"title":227,"path":228,"stem":229,"icon":58},"Multi-Format Detection","\u002Fproject\u002Fbenchmarks\u002Fcross-format","5.project\u002F4.benchmarks\u002F3.cross-format",{"title":231,"path":232,"stem":233,"icon":234},"AI Token Efficiency","\u002Fproject\u002Fbenchmarks\u002Fai-token-efficiency","5.project\u002F4.benchmarks\u002F4.ai-token-efficiency","i-lucide-sparkles",{"title":236,"path":237,"stem":238,"icon":93},"Embedding Models","\u002Fproject\u002Fbenchmarks\u002Fembedding-models","5.project\u002F4.benchmarks\u002F5.embedding-models",{"title":240,"path":241,"stem":242,"icon":243},"Research","\u002Fproject\u002Fresearch","5.project\u002F5.research","i-lucide-graduation-cap",{"title":245,"path":246,"stem":247,"icon":248},"Articles","\u002Fproject\u002Farticles","5.project\u002F6.articles","i-lucide-newspaper",{"name":250,"url":251,"appearances":252,"latest":268},"ranxianglei\u002Fbillion-context","https:\u002F\u002Fgithub.com\u002Franxianglei\u002Fbillion-context",[253],{"date":254,"rank":255,"stars":256,"starsToday":257,"headSha":258,"sources":259,"lines":260,"clones":261,"duplicatedLines":262,"percentage":263,"codePercentage":264,"codeSources":265,"healthScore":266,"healthGrade":267},"2026-11-08",9,4694,191,"354e21e23af4f5dc10166c94c47f09f1e514899d",2052,618491,8152,100092,16.18,2.74,449,46.3,"D",{"date":254,"generatedAt":269,"name":250,"url":251,"description":270,"language":271,"stars":256,"starsToday":257,"defaultBranch":272,"headSha":258,"durationMs":273,"total":274,"formats":278,"topClones":342,"code":593,"health":776,"complexity":806,"deadCode":858},"2026-11-08T05:21:26.124Z","A context-compression plugin for month-long single sessions (billions of tokens) ,small context windows (a 100K context is enough) and token savings (5x fewer tokens) .上下文压缩插件，月级长会话会话， 兼顾小窗口(100k上下文足矣)省token(省5倍token) . billion-context is all you need","TypeScript","master",4282,{"sources":259,"lines":260,"tokens":275,"clones":261,"duplicatedLines":262,"duplicatedTokens":276,"percentage":263,"percentageTokens":277},5046836,731203,14.49,[279,286,293,300,307,314,321,327,334,338],{"format":280,"sources":281,"lines":282,"clones":283,"duplicatedLines":284,"percentage":285},"typescript",1737,569062,7969,95354,16.76,{"format":287,"sources":288,"lines":289,"clones":290,"duplicatedLines":291,"percentage":292},"json",34,7234,90,2968,41.03,{"format":294,"sources":295,"lines":296,"clones":297,"duplicatedLines":298,"percentage":299},"yaml",42,7741,38,752,9.71,{"format":301,"sources":302,"lines":303,"clones":304,"duplicatedLines":305,"percentage":306},"javascript",39,8411,25,304,3.61,{"format":308,"sources":309,"lines":310,"clones":311,"duplicatedLines":312,"percentage":313},"markdown",153,21689,13,406,1.87,{"format":315,"sources":316,"lines":317,"clones":318,"duplicatedLines":319,"percentage":320},"markup",14,1068,11,174,16.29,{"format":322,"sources":323,"lines":324,"clones":323,"duplicatedLines":325,"percentage":326},"txt",4,243,113,46.5,{"format":328,"sources":329,"lines":330,"clones":331,"duplicatedLines":332,"percentage":333},"bash",12,282,2,21,7.45,{"format":335,"sources":331,"lines":336,"clones":337,"duplicatedLines":337,"percentage":337},"python",2143,0,{"format":339,"sources":340,"lines":341,"clones":337,"duplicatedLines":337,"percentage":337},"css",1,281,[343,393,435,460,486,497,516,538,550,581],{"format":280,"lines":344,"tokens":345,"first":346,"others":350,"copies":379,"excerpt":380,"kind":392},10,51,{"name":347,"start":348,"end":349},"tests\u002Fcompaction-trigger-finality.test.ts",137,146,[351,355,358,362,365,369,372,375],{"name":352,"start":353,"end":354},"tests\u002Fe2e-issue3450-stated-counts.test.ts",167,176,{"name":352,"start":356,"end":357},246,255,{"name":359,"start":360,"end":361},"tests\u002Fe2e-issue3900-overflow-teaches.test.ts",127,136,{"name":359,"start":363,"end":364},172,181,{"name":366,"start":367,"end":368},"tests\u002Fe2e-overflow-selfheal.test.ts",185,194,{"name":366,"start":370,"end":371},261,270,{"name":366,"start":373,"end":374},340,349,{"name":376,"start":377,"end":378},"tests\u002Fe2e\u002Fe2e-image-billing.test.ts",408,417,53,{"lines":381,"total":344},[382,383,384,385,386,387,388,389,390,391],"        assert.ok(bodies[bodies.length - 1].includes(\"Context limit reached\"), \"nudge still injected on a normal request\");","    } finally {","        proxy.close();","        proxy.closeIdleConnections?.();","        await once(proxy, \"close\");","        upstream.close();","        upstream.closeIdleConnections?.();","        await once(upstream, \"close\");","    }","});","tests",{"format":280,"lines":329,"tokens":394,"first":395,"others":398,"copies":422,"excerpt":423,"kind":392},118,{"name":396,"start":255,"end":397},"tests\u002Facp-status-estimator.test.ts",20,[399,402,405,409,413,416,418,420],{"name":400,"start":332,"end":401},"tests\u002Fcompress-credit.test.ts",32,{"name":403,"start":304,"end":404},"tests\u002Fcompress-fingerprint-refold.test.ts",36,{"name":406,"start":407,"end":408},"tests\u002Fcompress-observability.test.ts",22,33,{"name":410,"start":411,"end":412},"tests\u002Fcompress-reject-reasons.test.ts",19,30,{"name":414,"start":415,"end":302},"tests\u002Fcompress-span-hint.test.ts",28,{"name":417,"start":407,"end":408},"tests\u002Fcompress-success-tail.test.ts",{"name":419,"start":304,"end":404},"tests\u002Ffix-1124-compress-receipt.test.ts",{"name":421,"start":422,"end":288},"tests\u002Ffix-stream.test.ts",23,{"lines":424,"total":329},[425,426,427,428,429,430,431,432,433,434],"id: `test-${Math.random().toString(36).slice(2)}`,","meta: {},","stats: { requests: 0, tokensSaved: 0, inputTokens: 0, cachedTokens: 0, outputTokens: 0, cacheSamples: 0, lastInputTokens: 0, compressCreditTokens: 0, contextTo…","metadata: {},","state: createInitialState(),","createdAt: Date.now(),","lastSeen: Date.now(),","blockContents: new Map(),","inFlight: 0,","persisted: false,",{"format":308,"lines":436,"tokens":437,"first":438,"others":442,"copies":331,"excerpt":447,"kind":459},164,2413,{"name":439,"start":440,"end":441},"CONFIGURATION.md",1845,2008,[443],{"name":444,"start":445,"end":446},"CONFIGURATION.zh-CN.md",1822,1985,{"lines":448,"total":436},[449,450,451,452,453,454,455,456,457,458],"| Env var | Config key | Default |","|---------|------------|--------|","| `ACP_AUTO_RESTART_ON_UPDATE` | `autoRestartOnUpdate` | false |","| `ACP_AUTO_UPDATE` | `autoUpdate` | true |","| `ACP_COMPRESS_NUDGE` | `compress.injectNudge` | true |","| `ACP_COMPRESS_PROTOCOL` | `diagnostics.compressProtocol` | \"tools\" |","| `ACP_COMPRESS_TOOL` | `compress.injectTool` | true |","| `ACP_COUNT_TOKENS_PASSTHROUGH` | `diagnostics.countTokensPassthrough` | false |","| `ACP_DEBUG` | `debug` | false |","| `ACP_DUMP_BODY` | `diagnostics.dumpBody` | false |","docs",{"format":294,"lines":288,"tokens":461,"first":462,"others":464,"copies":344,"kind":485},265,{"name":463,"start":397,"end":379},".github\u002Fworkflows\u002Fci-e2e-codex-persona.yml",[465,467,470,472,474,476,478,482],{"name":466,"start":397,"end":379},".github\u002Fworkflows\u002Fci-e2e-dsh-native.yml",{"name":468,"start":401,"end":469},".github\u002Fworkflows\u002Fci-e2e-dsh.yml",65,{"name":471,"start":397,"end":379},".github\u002Fworkflows\u002Fci-e2e-fake.yml",{"name":473,"start":397,"end":379},".github\u002Fworkflows\u002Fci-e2e-native-opencode.yml",{"name":475,"start":397,"end":379},".github\u002Fworkflows\u002Fci-e2e-native.yml",{"name":477,"start":397,"end":379},".github\u002Fworkflows\u002Fci-e2e-pi-ws.yml",{"name":479,"start":480,"end":481},".github\u002Fworkflows\u002Fci-e2e.yml",45,78,{"name":483,"start":412,"end":484},".github\u002Fworkflows\u002Fci-image.yml",63,"data",{"format":322,"lines":487,"tokens":488,"first":489,"others":491,"copies":496,"kind":392},48,1114,{"name":490,"start":340,"end":487},"kernel\u002Ftests\u002Ffixtures\u002Fprompt-function-default.txt",[492,494],{"name":493,"start":340,"end":487},"kernel\u002Ftests\u002Ffixtures\u002Fprompt-hybrid-default.txt",{"name":495,"start":340,"end":487},"kernel\u002Ftests\u002Ffixtures\u002Fprompt-text-default.txt",3,{"format":280,"lines":498,"tokens":499,"first":500,"others":503,"copies":323,"kind":392},95,740,{"name":501,"start":288,"end":502},"tests\u002Fissue2419-dsh-skill-catalog.test.ts",128,[504,508,512],{"name":505,"start":506,"end":507},"tests\u002Fissue2446-dsh-mcp-catalog.test.ts",50,144,{"name":509,"start":510,"end":511},"tests\u002Fissue2447-dsh-workspace-instructions.test.ts",40,134,{"name":513,"start":514,"end":515},"tests\u002Fissue2481-dsh-runtime-context.test.ts",47,141,{"format":280,"lines":311,"tokens":517,"first":518,"others":520,"copies":537,"kind":392},73,{"name":519,"start":340,"end":311},"tests\u002Fclaude-bridge-e2e.test.ts",[521,523,524,526,528,530,533,535],{"name":522,"start":340,"end":311},"tests\u002Fcodex-compact-e2e.test.ts",{"name":347,"start":340,"end":311},{"name":525,"start":340,"end":311},"tests\u002Ffix-488-multimodal.test.ts",{"name":527,"start":340,"end":311},"tests\u002Ffork-nudge-trigger.test.ts",{"name":529,"start":340,"end":311},"tests\u002Fissue1492-stale-estimate-view.test.ts",{"name":531,"start":340,"end":532},"tests\u002Fissue1839-ghost-denominator.test.ts",35,{"name":534,"start":340,"end":311},"tests\u002Fissue1841-preflight-futility.test.ts",{"name":536,"start":340,"end":311},"tests\u002Fissue1843-learned-image-cost.test.ts",29,{"format":280,"lines":539,"tokens":540,"first":541,"others":545,"copies":331,"kind":392},110,1780,{"name":542,"start":543,"end":544},"tests\u002Fgolden-storage-drive.ts",217,326,[546],{"name":547,"start":548,"end":549},"tests\u002Fidentity-proof.test.ts",211,316,{"format":280,"lines":318,"tokens":345,"first":551,"others":554,"copies":288,"kind":392},{"name":352,"start":552,"end":553},168,178,[555,557,560,563,566,570,574,578],{"name":359,"start":502,"end":556},138,{"name":366,"start":558,"end":559},186,196,{"name":366,"start":561,"end":562},262,272,{"name":376,"start":564,"end":565},409,419,{"name":567,"start":568,"end":569},"tests\u002Ffake-completion.test.ts",438,448,{"name":571,"start":572,"end":573},"tests\u002Ffallback-window-floor.test.ts",125,135,{"name":575,"start":576,"end":577},"tests\u002Ffix-1001-history-rewrite.test.ts",236,250,{"name":579,"start":580,"end":373},"tests\u002Fissue1933-preflight-calibration.test.ts",330,{"format":308,"lines":582,"tokens":583,"first":584,"others":588,"copies":331,"kind":459},52,1502,{"name":585,"start":586,"end":587},"paper\u002Fmodel-driven-incremental-hierarchical-compression-training-free-multi-generational-context-management-for-long-lived-coding-agents.md",332,383,[589],{"name":590,"start":591,"end":592},"paper\u002F模型驱动的分层增量压缩-免训练多代上下文管理.md",333,386,{"sources":265,"lines":594,"tokens":595,"clones":596,"duplicatedLines":597,"duplicatedTokens":598,"percentage":264,"percentageTokens":599,"formats":600,"topClones":614,"generated":772},203630,1201511,445,5586,38946,3.24,[601,607,610,611,613],{"format":280,"sources":602,"lines":603,"clones":604,"duplicatedLines":605,"percentage":606},411,193682,434,5435,2.81,{"format":301,"sources":408,"lines":608,"clones":318,"duplicatedLines":609,"percentage":331},7555,151,{"format":335,"sources":331,"lines":336,"clones":337,"duplicatedLines":337,"percentage":337},{"format":612,"sources":331,"lines":543,"clones":337,"duplicatedLines":337,"percentage":337},"powershell",{"format":328,"sources":340,"lines":408,"clones":337,"duplicatedLines":337,"percentage":337},[615,640,667,699,708,723,734,744,753,762],{"format":280,"lines":616,"tokens":617,"first":618,"others":622,"copies":331,"excerpt":627,"kind":639},64,534,{"name":619,"start":620,"end":621},"src\u002Fserver\u002Fprepare-google.ts",205,268,[623],{"name":624,"start":625,"end":626},"src\u002Fserver\u002Fprepare-openai.ts",322,392,{"lines":628,"total":616},[629,630,631,632,633,634,635,636,637,638],"const turn = core.processTurn({ messages: renderMsgs, state: session.state, config: loopConfig, tokenCount, tokenCountSource, renderTags: renderStrategy, conte…","session.state = turn.state;","adoptContentStore(session, turn.contentStore);","\u002F\u002F #4528: split the kernel pass from its post-processing scan passes so","\u002F\u002F each is a bounded synchronous stretch rather than one long block.","await yieldToEventLoop();","\u002F\u002F The fold from last turn's compress has now materialized in state —","\u002F\u002F future usage reports are post-fold reality, drop the credit.","session.stats.compressCreditTokens = 0;","if (foldCoveredBefore !== null && !isTitleGen && msgs.length >= REWRITE_MIN_INCOMING_TOTAL) {","code",{"format":280,"lines":641,"tokens":642,"first":643,"others":647,"copies":331,"excerpt":650,"excerptSecond":662,"kind":639},58,483,{"name":644,"start":645,"end":646},"src\u002Fserver\u002Fprepare-anthropic.ts",375,432,[648],{"name":619,"start":649,"end":621},214,{"lines":651,"total":641},[652,653,654,655,656,657,658,659,660,661],"if (foldCoveredBefore !== null && msgs.length >= REWRITE_MIN_INCOMING_TOTAL) {","    const gap = foldCoverage(foldCoveredBefore, msgs.map((m) => m.id));","    if (gap) log(\"warn\", `[${sessionId}] [acp-drift] fold coverage mismatch: ${gap.matched}\u002F${gap.expected} covered message id(s) present in resent history — $…","}","storeEffectiveAbsorb(session, loopConfig);","storeEffectiveRules(session, config);","turn.messages = applyAbsorbView(turn.messages, session.state, loopConfig, tokenCount);","turn.messages = attachSubagentSessions(turn.messages, session);","\u002F\u002F Drop sub-viability fragments before any consumer sees them: a tiny","\u002F\u002F range in the list makes batched compress attempts fail atomically",{"lines":663,"total":666},[638,653,654,655,656,657,658,659,664,665],"\u002F\u002F #3204: also drop DEAD-ref-bracketing spans at this single point so","\u002F\u002F every downstream consumer (decision prompt + directive, prose nudge,",55,{"format":280,"lines":255,"tokens":668,"first":669,"others":673,"copies":686,"excerpt":687,"excerptSecond":695,"kind":639},77,{"name":670,"start":671,"end":672},"src\u002Fserver\u002Fadmin.ts",811,819,[674,677,680,683],{"name":670,"start":675,"end":676},846,854,{"name":670,"start":678,"end":679},859,867,{"name":670,"start":681,"end":682},870,878,{"name":670,"start":684,"end":685},883,897,5,{"lines":688,"total":255},[689,690,691,692,693,690,390,655,694],"        handlePluginRegister(body.toString(\"utf8\"), res);","        return;","    } catch (err) {","        res.writeHead(err instanceof BodyTooLargeError ? 413 : 400, { \"content-type\": \"application\u002Fjson\" });","        res.end(JSON.stringify({ ok: false, error: String(err) }));","if (req.method === \"POST\" && req.url === \"\u002F__bili\u002Fagent-providers\") {",{"lines":696,"total":255},[697,690,691,692,693,690,390,655,698],"        handlePluginRuntimeInfo(body.toString(\"utf8\"), res);","if (req.method === \"POST\" && req.url === \"\u002F__bili\u002Fplugin\u002Fattribution\") {",{"format":280,"lines":412,"tokens":700,"first":701,"others":704,"copies":331,"kind":639},300,{"name":644,"start":702,"end":703},441,470,[705],{"name":624,"start":706,"end":707},402,431,{"format":280,"lines":415,"tokens":709,"first":710,"others":714,"copies":496,"kind":639},150,{"name":711,"start":712,"end":713},"src\u002Fagent\u002Fomp-native.ts",353,380,[715,719],{"name":716,"start":717,"end":718},"src\u002Fagent\u002Fopencode-native.ts",376,404,{"name":720,"start":721,"end":722},"src\u002Fagent\u002Fpi-native.ts",251,278,{"format":280,"lines":297,"tokens":724,"first":725,"others":729,"copies":331,"kind":639},299,{"name":726,"start":727,"end":728},"src\u002Fstorage\u002Fmysql.ts",1835,1872,[730],{"name":731,"start":732,"end":733},"src\u002Fstorage\u002Fstore.ts",2087,2124,{"format":280,"lines":407,"tokens":735,"first":736,"others":740,"copies":331,"kind":639},293,{"name":737,"start":738,"end":739},"src\u002Fclient-config.ts",2119,2140,[741],{"name":737,"start":742,"end":743},2150,2171,{"format":280,"lines":510,"tokens":745,"first":746,"others":749,"copies":331,"kind":639},267,{"name":747,"start":332,"end":748},"src\u002Floop\u002Fadapter-anthropic.ts",60,[750],{"name":751,"start":752,"end":649},"src\u002Floop\u002Fadapter-responses.ts",175,{"format":280,"lines":297,"tokens":754,"first":755,"others":758,"copies":331,"kind":639},266,{"name":756,"start":757,"end":481},"src\u002Fkimi\u002Fnative.ts",41,[759],{"name":760,"start":666,"end":761},"src\u002Fzcode\u002Fnative.ts",92,{"format":280,"lines":763,"tokens":754,"first":764,"others":768,"copies":331,"kind":639},31,{"name":765,"start":766,"end":767},"src\u002Fplugin.ts",3540,3570,[769],{"name":765,"start":770,"end":771},4291,4321,{"files":331,"minified":337,"sample":773},[774,775],"src\u002Fweb\u002Ffavicon.ts","src\u002Fzcode\u002Fjson-edit.ts",{"score":266,"grade":267,"size":777,"dimensions":781},{"lines":778,"files":779,"class":780},579631,1777,"L",[782,793,800],{"id":783,"source":784,"value":785,"adjusted":785,"lines":786,"halfLife":787,"formats":788,"excluded":790,"weight":340,"score":792},"duplication","jscpd",16.5,95646,8.5,[280,301,335,612,328,789],"docker",[315,791,485],"text",26.1,{"id":794,"source":784,"value":795,"adjusted":796,"lines":797,"halfLife":798,"weight":340,"score":799},"dead-code",1.2,1.3,7239,7.5,89.1,{"id":801,"source":784,"value":802,"adjusted":803,"lines":804,"halfLife":506,"weight":340,"score":805},"complexity",61.4,61.2,355616,42.8,{"total":807,"mean":803,"files":808},108808,[809,814,818,823,828,833,838,843,848,853],{"path":810,"complexity":811,"lines":812,"bytes":813},"src\u002Flauncher.ts",1865,7350,395291,{"path":765,"complexity":815,"lines":816,"bytes":817},1850,4866,299456,{"path":819,"complexity":820,"lines":821,"bytes":822},"verif\u002Fsymbolic.ts",1779,3581,193597,{"path":824,"complexity":825,"lines":826,"bytes":827},"tests\u002Flauncher.test.ts",1533,8532,419509,{"path":829,"complexity":830,"lines":831,"bytes":832},"src\u002Fserver.ts",1025,4687,297963,{"path":834,"complexity":835,"lines":836,"bytes":837},"src\u002Fpersist.ts",998,4384,250789,{"path":839,"complexity":840,"lines":841,"bytes":842},"src\u002Fpreflight.ts",950,3180,205752,{"path":844,"complexity":845,"lines":846,"bytes":847},"src\u002Fplugin-install.ts",940,2670,139568,{"path":849,"complexity":850,"lines":851,"bytes":852},"src\u002Fconfig.ts",879,3484,206179,{"path":854,"complexity":855,"lines":856,"bytes":857},"src\u002Fserver\u002Fhandle.ts",869,3143,233529,{"percentage":859,"findings":717,"files":860,"byCategory":861,"largest":874},1.25,1791,[862,865,868,871],{"category":863,"count":864},"unused-file",17,{"category":866,"count":867},"unused-export",24,{"category":869,"count":870},"unused-symbol",61,{"category":872,"count":873},"unused-import",274,[875,877,880,883,886,889,891,894,896,899],{"category":863,"path":819,"name":876,"line":340,"lines":821},"",{"category":863,"path":878,"name":876,"line":340,"lines":879},"verif\u002Fsubset-guard.ts",584,{"category":863,"path":881,"name":876,"line":340,"lines":882},"verif\u002Fterms.ts",541,{"category":863,"path":884,"name":876,"line":340,"lines":885},"scripts\u002Fupdate-storage-corpus.ts",472,{"category":863,"path":887,"name":876,"line":340,"lines":888},"src\u002Fpersona-anchor.ts",179,{"category":863,"path":890,"name":876,"line":340,"lines":319},"verif\u002Fsolve.ts",{"category":863,"path":892,"name":876,"line":340,"lines":893},"kernel\u002Fsrc\u002Fsearch\u002Falgorithms\u002Fsemantic.ts",112,{"category":863,"path":895,"name":876,"line":340,"lines":498},"verif\u002Fexceptions.ts",{"category":863,"path":897,"name":876,"line":340,"lines":898},"scripts\u002Fcheck-dist-external-zod.mjs",86,{"category":863,"path":900,"name":876,"line":340,"lines":898},"verif\u002Fdrivers\u002Fresponses-ingress-driver.ts",{"\u002Ftrending\u002Franxianglei\u002Fbillion-context":902},{"views":337,"visits":337},1794135048223]