[{"data":1,"prerenderedAt":884},["ShallowReactive",2],{"navigation_docs":3,"trending-repo-HKUDS\u002FDeepTutor":249,"page-views-\u002Ftrending\u002FHKUDS\u002FDeepTutor":882},[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},"HKUDS\u002FDeepTutor","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FDeepTutor",[253],{"date":254,"rank":255,"stars":256,"starsToday":257,"headSha":258,"sources":259,"lines":260,"clones":261,"duplicatedLines":262,"percentage":263,"codePercentage":264,"codeSources":265,"healthScore":266,"healthGrade":267},"2026-10-28",4,46410,1598,"a31d82624c27d75f4e771d4fcb78dce16470b383",3477,850057,1713,22380,2.63,1.89,1855,64.3,"C",{"date":254,"generatedAt":269,"name":250,"url":251,"description":270,"language":271,"stars":256,"starsToday":257,"defaultBranch":272,"headSha":258,"durationMs":273,"total":274,"formats":278,"topClones":346,"code":557,"health":756,"complexity":787,"deadCode":839},"2026-10-28T05:23:00.965Z","DeepTutor: Lifelong Personalized Tutoring. https:\u002F\u002Fdeeptutor.info\u002F.","Python","main",5535,{"sources":259,"lines":260,"tokens":275,"clones":261,"duplicatedLines":262,"duplicatedTokens":276,"percentage":263,"percentageTokens":277},4943863,140511,2.84,[279,286,293,300,307,314,321,328,335,341],{"format":280,"sources":281,"lines":282,"clones":283,"duplicatedLines":284,"percentage":285},"python",1880,522955,1179,14030,2.68,{"format":287,"sources":288,"lines":289,"clones":290,"duplicatedLines":291,"percentage":292},"tsx",649,172571,327,4651,2.7,{"format":294,"sources":295,"lines":296,"clones":297,"duplicatedLines":298,"percentage":299},"typescript",568,79085,92,1225,1.55,{"format":301,"sources":302,"lines":303,"clones":304,"duplicatedLines":305,"percentage":306},"markdown",154,22641,70,710,3.14,{"format":308,"sources":309,"lines":310,"clones":311,"duplicatedLines":312,"percentage":313},"text",16,284,13,186,65.49,{"format":315,"sources":316,"lines":317,"clones":318,"duplicatedLines":319,"percentage":320},"bash",20,1464,12,1044,71.31,{"format":322,"sources":323,"lines":324,"clones":325,"duplicatedLines":326,"percentage":327},"yaml",105,7911,8,133,1.68,{"format":329,"sources":330,"lines":331,"clones":332,"duplicatedLines":333,"percentage":334},"json",30,37447,5,339,0.91,{"format":336,"sources":255,"lines":337,"clones":338,"duplicatedLines":339,"percentage":340},"css",1993,3,27,1.35,{"format":342,"sources":309,"lines":343,"clones":338,"duplicatedLines":344,"percentage":345},"markup",497,23,4.63,[347,393,427,469,480,494,503,521,528,549],{"format":315,"lines":348,"tokens":349,"first":350,"others":354,"copies":318,"excerpt":377,"excerptSecond":387,"kind":392},830,774,{"name":351,"start":352,"end":353},"README.md",278,1107,[355,358,361,364,367,369,372,374],{"name":356,"start":357,"end":348},"assets\u002FREADME\u002FREADME_AR.md",99,{"name":359,"start":357,"end":360},"assets\u002FREADME\u002FREADME_CN.md",834,{"name":362,"start":357,"end":363},"assets\u002FREADME\u002FREADME_ES.md",843,{"name":365,"start":357,"end":366},"assets\u002FREADME\u002FREADME_FR.md",845,{"name":368,"start":357,"end":360},"assets\u002FREADME\u002FREADME_HI.md",{"name":370,"start":357,"end":371},"assets\u002FREADME\u002FREADME_JA.md",825,{"name":373,"start":357,"end":371},"assets\u002FREADME\u002FREADME_PL.md",{"name":375,"start":357,"end":376},"assets\u002FREADME\u002FREADME_PT.md",835,{"lines":378,"total":348},[379,380,381,382,383,384,385,384,386,384],"docker run --rm --name deeptutor \\","  -p 127.0.0.1:3782:3782 \\","  -v deeptutor-data:\u002Fapp\u002Fdata \\","  ghcr.io\u002Fhkuds\u002Fdeeptutor:latest","```","","Open [http:\u002F\u002F127.0.0.1:3782](http:\u002F\u002F127.0.0.1:3782), configure model providers in **Settings → Providers**, and press `Ctrl+C` when you are done. The named `de…","### Content Workspace",{"lines":388,"total":391},[379,380,381,382,383,384,389,384,390,384],"افتح [http:\u002F\u002F127.0.0.1:3782](http:\u002F\u002F127.0.0.1:3782)، وهيّئ مزودي النماذج في **الإعدادات ← المزودون**، واضغط `Ctrl+C` عند الانتهاء. تحتفظ وحدة التخزين المسماة `…","### مساحة عمل المحتوى",732,"docs",{"format":308,"lines":394,"tokens":395,"first":396,"others":399,"copies":318,"excerpt":413,"excerptSecond":423,"kind":392},685,210,{"name":351,"start":397,"end":398},260,944,[400,403,405,407,409,410,411,412],{"name":356,"start":401,"end":402},81,672,{"name":359,"start":401,"end":404},671,{"name":362,"start":401,"end":406},680,{"name":365,"start":401,"end":408},682,{"name":368,"start":401,"end":404},{"name":370,"start":401,"end":404},{"name":373,"start":401,"end":404},{"name":375,"start":401,"end":402},{"lines":414,"total":394},[415,416,417,418,419,420,421,383,384,422],"Help me install and configure DeepTutor locally from https:\u002F\u002Fgithub.com\u002FHKUDS\u002FDeepTutor.","Clone the repository, or reuse my existing checkout, and read SKILL.md and","docs-for-user\u002FAGENT_SETUP.md first. Follow that guide to prepare the environment,","configure my model provider, verify the setup, and start the Web app.","Ask me for any missing provider, model, or credential-source information;","do not print API keys. Preserve my existing files and settings, and finish","with the access URL and the results of your checks.","The [Agent Setup guide](docs-for-user\u002FAGENT_SETUP.md) covers the full flow, including non-interactive CLI configuration. To install it yourself, choose one of …",{"lines":424,"total":426},[415,416,417,418,419,420,421,383,384,425],"يغطي [دليل إعداد الوكيل](..\u002F..\u002Fdocs-for-user\u002FAGENT_SETUP.md) التدفق كاملاً، بما فيه التهيئة غير التفاعلية عبر CLI. لتثبيته بنفسك، اختر أحد المسارات أدناه.",592,{"format":301,"lines":428,"tokens":429,"first":430,"others":433,"copies":455,"excerpt":456,"excerptSecond":466,"kind":392},9,159,{"name":351,"start":431,"end":432},1137,1145,[434,437,440,443,444,447,448,451],{"name":356,"start":435,"end":436},859,867,{"name":359,"start":438,"end":439},863,871,{"name":362,"start":441,"end":442},872,880,{"name":368,"start":438,"end":439},{"name":370,"start":445,"end":446},854,862,{"name":373,"start":445,"end":446},{"name":449,"start":450,"end":441},"assets\u002FREADME\u002FREADME_RU.md",864,{"name":452,"start":453,"end":454},"assets\u002FREADME\u002FREADME_TH.md",892,900,10,{"lines":457,"total":428},[458,459,460,461,462,463,464,384,465],"\u003Ctable>","  \u003Ctr>","    \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpancacake\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F150592536?v=4&s=80\" width=\"80\" height=\"80\" alt=…","    \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FTyrionH-is-coding\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F275607548?v=4&s=80\" width=\"80\" height=\"…","    \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fzzhtx258\">\u003Cimg src=\"https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F175302980?v=4&s=80\" width=\"80\" height=\"80\" alt=\"…","  \u003C\u002Ftr>","\u003C\u002Ftable>","### 📮 Contact",{"lines":467,"total":428},[458,459,460,461,462,463,464,384,468],"### 📮 التواصل",{"format":301,"lines":470,"tokens":471,"first":472,"others":475,"copies":255,"kind":392},17,466,{"name":359,"start":473,"end":474},21,37,[476,477,478],{"name":362,"start":473,"end":474},{"name":370,"start":473,"end":474},{"name":479,"start":473,"end":474},"assets\u002FREADME\u002FREADME_TW.md",{"format":280,"lines":481,"tokens":482,"first":483,"others":487,"copies":492,"kind":493},100,799,{"name":484,"start":485,"end":486},"tests\u002Fservices\u002Fsession\u002Ftest_pocketbase_isolation.py",25,124,[488],{"name":489,"start":490,"end":491},"tests\u002Fservices\u002Fsession\u002Ftest_pocketbase_store_fallbacks.py",39,138,2,"tests",{"format":301,"lines":495,"tokens":496,"first":497,"others":498,"copies":332,"kind":392},11,194,{"name":356,"start":311,"end":344},[499,500,501,502],{"name":368,"start":311,"end":344},{"name":373,"start":311,"end":344},{"name":449,"start":311,"end":344},{"name":452,"start":311,"end":344},{"format":301,"lines":428,"tokens":504,"first":505,"others":508,"copies":520,"kind":392},114,{"name":351,"start":506,"end":507},493,501,[509,512,513,514,515,517],{"name":362,"start":510,"end":511},280,288,{"name":368,"start":510,"end":511},{"name":373,"start":510,"end":511},{"name":449,"start":510,"end":511},{"name":452,"start":511,"end":516},296,{"name":518,"start":519,"end":516},"docs-for-user\u002FCONTAINERIZATION.md",286,7,{"format":301,"lines":495,"tokens":522,"first":523,"others":524,"copies":255,"kind":392},213,{"name":351,"start":520,"end":470},[525,526,527],{"name":362,"start":520,"end":470},{"name":370,"start":520,"end":470},{"name":375,"start":520,"end":470},{"format":301,"lines":495,"tokens":529,"first":530,"others":533,"copies":455,"kind":392},66,{"name":356,"start":531,"end":532},841,851,[534,536,537,540,541,544,545,546],{"name":359,"start":366,"end":535},855,{"name":362,"start":445,"end":450},{"name":365,"start":538,"end":539},856,866,{"name":368,"start":366,"end":535},{"name":370,"start":542,"end":543},836,846,{"name":375,"start":543,"end":538},{"name":449,"start":543,"end":538},{"name":452,"start":547,"end":548},874,884,{"format":301,"lines":550,"tokens":551,"first":552,"others":555,"copies":492,"kind":392},18,531,{"name":356,"start":553,"end":554},24,41,[556],{"name":449,"start":553,"end":554},{"sources":265,"lines":558,"tokens":559,"clones":560,"duplicatedLines":561,"duplicatedTokens":562,"percentage":264,"percentageTokens":492,"formats":563,"topClones":588,"generated":751},504739,2730876,727,9552,54492,[564,570,576,581,585],{"format":280,"sources":565,"lines":566,"clones":567,"duplicatedLines":568,"percentage":569},1020,304480,458,5453,1.79,{"format":287,"sources":571,"lines":572,"clones":573,"duplicatedLines":574,"percentage":575},494,149532,243,3760,2.51,{"format":294,"sources":577,"lines":578,"clones":579,"duplicatedLines":333,"percentage":580},322,49101,26,0.69,{"format":582,"sources":550,"lines":583,"clones":584,"duplicatedLines":584,"percentage":584},"javascript",1582,0,{"format":315,"sources":586,"lines":587,"clones":584,"duplicatedLines":584,"percentage":584},1,44,[589,623,646,667,674,686,711,721,733,742],{"format":280,"lines":520,"tokens":590,"first":591,"others":594,"copies":520,"excerpt":613,"kind":622},83,{"name":592,"start":593,"end":304},"deeptutor\u002Fbook\u002Fblocks\u002Fcode.py",64,[595,598,602,604,606,610],{"name":596,"start":597,"end":474},"deeptutor\u002Fbook\u002Fblocks\u002Ffigure.py",31,{"name":599,"start":600,"end":601},"deeptutor\u002Fbook\u002Fblocks\u002Fflash_cards.py",22,28,{"name":603,"start":597,"end":474},"deeptutor\u002Fbook\u002Fblocks\u002Finteractive.py",{"name":605,"start":470,"end":344},"deeptutor\u002Fbook\u002Fblocks\u002Fquiz.py",{"name":607,"start":608,"end":609},"deeptutor\u002Fbook\u002Fblocks\u002Fsection.py",73,79,{"name":611,"start":612,"end":490},"deeptutor\u002Fbook\u002Fblocks\u002Ftext.py",33,{"lines":614,"total":520},[615,616,617,618,619,620,621],"async def _generate(","    self, ctx: BlockContext",") -> tuple[dict[str, Any], list[SourceAnchor], dict[str, Any]]:","    params = ctx.block.params","    chapter_title = params.get(\"chapter_title\", ctx.chapter.title)","    chapter_summary = params.get(\"chapter_summary\", ctx.chapter.summary)","    objectives = params.get(\"objectives\") or ctx.chapter.learning_objectives","code",{"format":287,"lines":624,"tokens":625,"first":626,"others":630,"copies":492,"excerpt":635,"kind":622},60,446,{"name":627,"start":628,"end":629},"web\u002Fcomponents\u002Fcommon\u002FRichMarkdownRenderer.tsx",224,283,[631],{"name":632,"start":633,"end":634},"web\u002Fcomponents\u002Fcommon\u002FSimpleMarkdownRenderer.tsx",86,145,{"lines":636,"total":624},[637,638,639,640,641,642,643,644,640,645],"  \u003Ccode className=\"rounded bg-[var(--muted)] px-1 py-0.5 font-mono text-[0.95em] text-[var(--foreground)]\u002F90\">","    {String(children).replace(\u002F\\n$\u002F, \"\")}","  \u003C\u002Fcode>","),","img: () => null,","hr: () => \u003Cdiv className=\"my-1 h-px bg-current opacity-10\" \u002F>,","ul: ({ node, ...props }: any) => (","  \u003Cul className=\"my-1 ml-4 list-disc\" {...props} \u002F>","ol: ({ node, ...props }: any) => (",{"format":280,"lines":647,"tokens":648,"first":649,"others":652,"copies":492,"excerpt":656,"kind":622},78,369,{"name":650,"start":573,"end":651},"deeptutor\u002Fagents\u002Fmath_animator\u002Fcapability.py",320,[653],{"name":654,"start":507,"end":655},"deeptutor\u002Fagents\u002Fvisualize\u002Fcapability.py",578,{"lines":657,"total":647},[658,659,660,661,662,663,664,384,665,666],"stage = str(update.get(\"phase\") or update.get(\"stage\") or \"concept_analysis\")","base_metadata = {","    key: value","    for key, value in update.items()","    if key","    not in {\"event\", \"state\", \"response\", \"chunk\", \"result\", \"tool_name\", \"tool_args\"}","}","if event != \"llm_call\":","    return",{"format":287,"lines":554,"tokens":668,"first":669,"others":671,"copies":492,"kind":622},362,{"name":627,"start":670,"end":628},184,[672],{"name":632,"start":673,"end":633},46,{"format":280,"lines":675,"tokens":676,"first":677,"others":681,"copies":492,"kind":622},65,294,{"name":678,"start":679,"end":680},"deeptutor\u002Fagents\u002Fquestion\u002Fpipeline.py",1790,1854,[682],{"name":683,"start":684,"end":685},"deeptutor\u002Fagents\u002Fresearch\u002Fpipeline.py",2284,2348,{"format":280,"lines":325,"tokens":687,"first":688,"others":692,"copies":710,"kind":622},58,{"name":689,"start":690,"end":691},"deeptutor\u002Fservices\u002Fsubagent\u002Fantigravity.py",134,141,[693,696,698,702,706],{"name":694,"start":695,"end":647},"deeptutor\u002Fservices\u002Fsubagent\u002Fclaude_code.py",71,{"name":697,"start":695,"end":647},"deeptutor\u002Fservices\u002Fsubagent\u002Fcodex.py",{"name":699,"start":700,"end":701},"deeptutor\u002Fservices\u002Fsubagent\u002Fhermes.py",42,49,{"name":703,"start":704,"end":705},"deeptutor\u002Fservices\u002Fsubagent\u002Fkimi.py",80,87,{"name":707,"start":708,"end":709},"deeptutor\u002Fservices\u002Fsubagent\u002Fopenclaw.py",40,47,6,{"format":287,"lines":712,"tokens":713,"first":714,"others":717,"copies":492,"kind":622},53,272,{"name":627,"start":715,"end":716},541,593,[718],{"name":632,"start":719,"end":720},318,370,{"format":287,"lines":722,"tokens":723,"first":724,"others":728,"copies":492,"kind":622},52,270,{"name":725,"start":726,"end":727},"web\u002Fcomponents\u002Fchat\u002Fhome\u002FSessionViewerPanel.tsx",1203,1254,[729],{"name":730,"start":731,"end":732},"web\u002Fcomponents\u002Fchat\u002Fpreview\u002FFilePreviewDrawer.tsx",374,426,{"format":280,"lines":600,"tokens":734,"first":735,"others":738,"copies":338,"kind":622},118,{"name":736,"start":709,"end":737},"deeptutor\u002Fbook\u002Fblocks\u002Fanimation.py",68,[739,741],{"name":596,"start":708,"end":740},61,{"name":603,"start":708,"end":740},{"format":294,"lines":600,"tokens":743,"first":744,"others":747,"copies":492,"kind":622},235,{"name":745,"start":700,"end":746},"web\u002Fcontracts\u002Fparse\u002Fturn-command.ts",63,[748],{"name":749,"start":750,"end":708},"web\u002Flib\u002Frandom-uuid.ts",19,{"files":338,"minified":584,"sample":752},[753,754,755],"web\u002Fcontracts\u002Fgenerated\u002Fapi.ts","web\u002Fcontracts\u002Fgenerated\u002Fturn-protocol.ts","web\u002Flib\u002Fbrand-icons.generated.ts",{"score":266,"grade":267,"size":757,"dimensions":761},{"lines":758,"files":759,"class":760},776457,3113,"L",[762,774,780],{"id":763,"source":764,"value":765,"adjusted":765,"lines":766,"halfLife":767,"formats":768,"excluded":771,"weight":586,"score":773},"duplication","jscpd",2.6,19918,8.5,[280,287,294,582,769,315,770],"docker","batch",[342,308,772],"data",81.1,{"id":775,"source":764,"value":776,"adjusted":776,"lines":777,"halfLife":778,"weight":586,"score":779},"dead-code",3.6,27737,7.5,71.9,{"id":781,"source":764,"value":782,"adjusted":783,"lines":784,"halfLife":785,"weight":586,"score":786},"complexity",56.8,56.7,441170,50,45.5,{"total":788,"mean":789,"files":790},121944,39.2,[791,796,801,806,810,815,820,825,830,835],{"path":792,"complexity":793,"lines":794,"bytes":795},"web\u002Ffeatures\u002Fchat\u002FChatStateAdapter.tsx",996,3971,157509,{"path":797,"complexity":798,"lines":799,"bytes":800},"deeptutor\u002Flearning\u002Fservice.py",905,3355,146477,{"path":802,"complexity":803,"lines":804,"bytes":805},"deeptutor\u002Fapi\u002Frouters\u002Fknowledge.py",849,5225,209130,{"path":807,"complexity":348,"lines":808,"bytes":809},"deeptutor\u002Fservices\u002Fsession\u002Fsqlite_store.py",4720,204729,{"path":811,"complexity":812,"lines":813,"bytes":814},"deeptutor\u002Fcapabilities\u002Fmastery\u002Ftools.py",631,3816,170324,{"path":816,"complexity":817,"lines":818,"bytes":819},"web\u002Ffeatures\u002Fchat\u002Fcomponents\u002FChatWorkspace.tsx",613,3017,122379,{"path":821,"complexity":822,"lines":823,"bytes":824},"web\u002Ffeatures\u002Fchat\u002Fmessages\u002FChatMessageList.tsx",580,2539,99440,{"path":826,"complexity":827,"lines":828,"bytes":829},"deeptutor\u002Fknowledge\u002Fmanager.py",536,2570,105957,{"path":831,"complexity":832,"lines":833,"bytes":834},"deeptutor\u002Fpartners\u002Fchannels\u002Ffeishu.py",515,2459,100172,{"path":683,"complexity":836,"lines":837,"bytes":838},507,3275,127546,{"percentage":840,"findings":841,"files":842,"byCategory":843,"largest":856},3.57,319,3277,[844,847,850,853],{"category":845,"count":846},"unused-file",76,{"category":848,"count":849},"unused-export",121,{"category":851,"count":852},"unused-symbol",67,{"category":854,"count":855},"unused-import",55,[857,858,859,862,865,868,870,873,876,879],{"category":845,"path":683,"name":384,"line":586,"lines":837},{"category":845,"path":831,"name":384,"line":586,"lines":833},{"category":845,"path":860,"name":384,"line":586,"lines":861},"web\u002Fcomponents\u002Fsettings\u002FServiceConfigEditor.tsx",1877,{"category":845,"path":863,"name":384,"line":586,"lines":864},"deeptutor\u002Fpartners\u002Fchannels\u002Ftelegram.py",1157,{"category":845,"path":866,"name":384,"line":586,"lines":867},"deeptutor\u002Fpartners\u002Fchannels\u002Fmochat.py",1076,{"category":845,"path":869,"name":384,"line":586,"lines":435},"deeptutor\u002Fpartners\u002Fchannels\u002Fzulip.py",{"category":845,"path":871,"name":384,"line":586,"lines":872},"deeptutor\u002Fpartners\u002Fchannels\u002Fmsteams.py",847,{"category":845,"path":874,"name":384,"line":586,"lines":875},"deeptutor\u002Fpartners\u002Fchannels\u002Fmatrix.py",844,{"category":845,"path":877,"name":384,"line":586,"lines":878},"web\u002Fcomponents\u002Fsettings\u002FConnectionsEditor.tsx",762,{"category":845,"path":880,"name":384,"line":586,"lines":881},"deeptutor\u002Fpartners\u002Fchannels\u002Fnapcat.py",594,{"\u002Ftrending\u002FHKUDS\u002FDeepTutor":883},{"views":584,"visits":584},1793170362819]