[{"data":1,"prerenderedAt":910},["ShallowReactive",2],{"navigation_docs":3,"trending-repo-beenuar\u002FAiSOC":249,"page-views-\u002Ftrending\u002Fbeenuar\u002FAiSOC":908},[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},"beenuar\u002FAiSOC","https:\u002F\u002Fgithub.com\u002Fbeenuar\u002FAiSOC",[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-02",4,6363,446,"517a08f602235c86fe9959d0ef92e3bcf1b9a11d",12051,1579126,7834,160421,10.16,4.9,2108,69.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":349,"code":579,"health":775,"complexity":807,"deadCode":861},"2026-11-02T05:22:05.631Z","Open-source AI Security Operations Center: alert fusion, LLM-agent triage, MITRE ATT&CK investigation, and a replayable decision ledger for every agent step. Self-hostable, runs with no API keys, MIT licensed. Ships an MCP server for Claude, Cursor and Continue.","Python","main",10410,{"sources":259,"lines":260,"tokens":275,"clones":261,"duplicatedLines":262,"duplicatedTokens":276,"percentage":263,"percentageTokens":277},9881771,938612,9.5,[279,286,293,300,307,314,321,328,335,342],{"format":280,"sources":281,"lines":282,"clones":283,"duplicatedLines":284,"percentage":285},"yaml",7579,404355,4892,63531,15.71,{"format":287,"sources":288,"lines":289,"clones":290,"duplicatedLines":291,"percentage":292},"python",2560,763049,1725,40943,5.37,{"format":294,"sources":295,"lines":296,"clones":297,"duplicatedLines":298,"percentage":299},"json",283,118094,594,47799,40.48,{"format":301,"sources":302,"lines":303,"clones":304,"duplicatedLines":305,"percentage":306},"markdown",423,81329,230,2405,2.96,{"format":308,"sources":309,"lines":310,"clones":311,"duplicatedLines":312,"percentage":313},"tsx",364,93404,216,2684,2.87,{"format":315,"sources":316,"lines":317,"clones":318,"duplicatedLines":319,"percentage":320},"go",144,36892,70,735,1.99,{"format":322,"sources":323,"lines":324,"clones":325,"duplicatedLines":326,"percentage":327},"typescript",189,39505,45,893,2.26,{"format":329,"sources":330,"lines":331,"clones":332,"duplicatedLines":333,"percentage":334},"docker",22,1477,24,835,56.53,{"format":336,"sources":337,"lines":338,"clones":339,"duplicatedLines":340,"percentage":341},"sql",148,15526,11,157,1.01,{"format":343,"sources":344,"lines":345,"clones":346,"duplicatedLines":347,"percentage":348},"hcl",38,4507,10,140,3.11,[350,373,392,427,451,475,496,520,541,571],{"format":294,"lines":351,"tokens":352,"first":353,"others":356,"copies":359,"excerpt":360,"kind":372},13779,39613,{"name":354,"start":355,"end":351},"services\u002Fapi\u002Fapp\u002Fdata\u002Fdetections\u002Fdetection_ruleset.json",1,[357],{"name":358,"start":355,"end":351},"services\u002Ffusion\u002Fapp\u002Fdata\u002Fdetection_ruleset.json",2,{"lines":361,"total":351},[362,363,364,365,366,367,368,369,370,371],"{","  \"count\": 768,","  \"rules\": [","    {","      \"category\": \"application\",","      \"id\": \"det-application-001\",","      \"match_when\": {","        \"request_uri_pattern_match_any\": [","          \"UNION SELECT\",","          \"OR '1'='1\",","data",{"format":294,"lines":374,"tokens":375,"first":376,"others":378,"copies":359,"excerpt":381,"kind":372},13415,37478,{"name":377,"start":355,"end":374},"apps\u002Fweb\u002Fpublic\u002Fmarketplace\u002Fcurated.json",[379],{"name":380,"start":355,"end":374},"marketplace\u002Fcurated.json",{"lines":382,"total":374},[362,383,384,385,386,387,388,389,390,391],"  \"$schema\": \"https:\u002F\u002Faisoc.example.com\u002Fschemas\u002Fcurated\u002Fv1.json\",","  \"version\": \"1.0.0\",","  \"generated\": \"2026-11-02T01:47:38Z\",","  \"stats\": {","    \"considered\": 2514,","    \"eligible\": 2503,","    \"selected\": 489,","    \"min_per_family\": 25,","    \"min_total\": 300,",{"format":280,"lines":393,"tokens":394,"first":395,"others":397,"copies":414,"excerpt":415,"kind":372},19,158,{"name":396,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Fadfs-db-suspicious-named-pipe-connection.yaml",[398,400,402,404,406,408,410,412],{"name":399,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Fadfs-dkm-key-access.yaml",{"name":401,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Faws-account-leaving-or-removed-from-organization.yaml",{"name":403,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Faws-api-call-outside-of-organization.yaml",{"name":405,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Faws-cloudtrail-logging-tampered.yaml",{"name":407,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Faws-config-service-modified.yaml",{"name":409,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Faws-console-login-without-mfa.yaml",{"name":411,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Faws-delete-cloudwatch-log-group.yaml",{"name":413,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Faws-delete-vpc-flow-logs.yaml",160,{"lines":416,"total":393},[417,418,419,420,421,422,423,424,425,426],"severity: medium","enabled: false","tags:","  mitre: []","  categories:","  - endpoint","references: []","logsource:","  product: chronicle","detection:",{"format":287,"lines":428,"tokens":429,"first":430,"others":432,"copies":449,"kind":450},249,1824,{"name":431,"start":355,"end":428},"services\u002Factions\u002Fapp\u002F_health.py",[433,435,437,439,441,443,445,447],{"name":434,"start":355,"end":428},"services\u002Fagents\u002Fapp\u002F_health.py",{"name":436,"start":355,"end":428},"services\u002Fapi\u002Fapp\u002F_health.py",{"name":438,"start":355,"end":428},"services\u002Fconnectors\u002Fapp\u002F_health.py",{"name":440,"start":355,"end":428},"services\u002Ffusion\u002Fapp\u002F_health.py",{"name":442,"start":355,"end":428},"services\u002Fhoneytokens\u002Fapp\u002F_health.py",{"name":444,"start":355,"end":428},"services\u002Fmesh\u002Fapp\u002F_health.py",{"name":446,"start":355,"end":428},"services\u002Fosquery-tls\u002Fapp\u002F_health.py",{"name":448,"start":355,"end":428},"services\u002Fpurple-team\u002Fapp\u002F_health.py",13,"code",{"format":287,"lines":452,"tokens":453,"first":454,"others":456,"copies":473,"kind":474},368,2419,{"name":455,"start":355,"end":452},"services\u002Factions\u002Ftests\u002Ftest_tenant_scope.py",[457,459,461,463,465,467,469,471],{"name":458,"start":355,"end":452},"services\u002Fagents\u002Ftests\u002Ftest_tenant_scope.py",{"name":460,"start":355,"end":452},"services\u002Fconnectors\u002Ftests\u002Ftest_tenant_scope.py",{"name":462,"start":355,"end":452},"services\u002Ffusion\u002Ftests\u002Ftest_tenant_scope.py",{"name":464,"start":355,"end":452},"services\u002Fhoneytokens\u002Ftests\u002Ftest_tenant_scope.py",{"name":466,"start":355,"end":452},"services\u002Fosquery-tls\u002Ftests\u002Ftest_tenant_scope.py",{"name":468,"start":355,"end":452},"services\u002Fpurple-team\u002Ftests\u002Ftest_tenant_scope.py",{"name":470,"start":355,"end":452},"services\u002Fthreatintel\u002Ftests\u002Ftest_tenant_scope.py",{"name":472,"start":355,"end":452},"services\u002Fueba\u002Ftests\u002Ftest_tenant_scope.py",9,"tests",{"format":280,"lines":393,"tokens":394,"first":476,"others":478,"copies":495,"kind":372},{"name":477,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Fbase64-encoded-powershell-command-detected.yaml",[479,481,483,485,487,489,491,493],{"name":480,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Fblackbyte-ransomware-registry.yaml",{"name":482,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Fconvertto-securestring-cmdlet-usage-via-commandline.yaml",{"name":484,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Fcopy-from-or-to-admin-share-or-sysvol-folder.yaml",{"name":486,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Fcreate-dump-process-dump.yaml",{"name":488,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Fcred-dump-tools-dropped-files.yaml",{"name":490,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Fcredential-dumping-attempt-via-werfault.yaml",{"name":492,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Fcurrentcontrolset-autorun-keys-modification.yaml",{"name":494,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Fcurrentversion-autorun-keys-modification.yaml",110,{"format":287,"lines":497,"tokens":498,"first":499,"others":503,"copies":473,"kind":450},409,1942,{"name":500,"start":501,"end":502},"services\u002Factions\u002Fapp\u002Fsecurity\u002Ftenant_scope.py",78,486,[504,506,508,510,512,514,516,518],{"name":505,"start":501,"end":502},"services\u002Fagents\u002Fapp\u002Fsecurity\u002Ftenant_scope.py",{"name":507,"start":501,"end":502},"services\u002Fconnectors\u002Fapp\u002Fsecurity\u002Ftenant_scope.py",{"name":509,"start":501,"end":502},"services\u002Ffusion\u002Fapp\u002Fsecurity\u002Ftenant_scope.py",{"name":511,"start":501,"end":502},"services\u002Fhoneytokens\u002Fapp\u002Fsecurity\u002Ftenant_scope.py",{"name":513,"start":501,"end":502},"services\u002Fosquery-tls\u002Fapp\u002Fsecurity\u002Ftenant_scope.py",{"name":515,"start":501,"end":502},"services\u002Fpurple-team\u002Fapp\u002Fsecurity\u002Ftenant_scope.py",{"name":517,"start":501,"end":502},"services\u002Fthreatintel\u002Fapp\u002Fsecurity\u002Ftenant_scope.py",{"name":519,"start":501,"end":502},"services\u002Fueba\u002Fapp\u002Fsecurity\u002Ftenant_scope.py",{"format":280,"lines":393,"tokens":394,"first":521,"others":523,"copies":540,"kind":372},{"name":522,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Finfo-certutil-urlcache.yaml",[524,526,528,530,532,534,536,538],{"name":525,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Finfo-command-line-regedit.yaml",{"name":527,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Finfo-dns-lookup-exact.yaml",{"name":529,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Finfo-dns-lookup-partial.yaml",{"name":531,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Finfo-dns-lookup-suffix.yaml",{"name":533,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Finfo-file-batch-executed.yaml",{"name":535,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Finfo-file-batch-written.yaml",{"name":537,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Finfo-file-iso-mounted.yaml",{"name":539,"start":255,"end":330},"detections\u002Fchronicle-imports\u002F_quarantine\u002Finfo-file-iso-written.yaml",66,{"format":280,"lines":542,"tokens":543,"first":544,"others":548,"copies":318,"kind":372},7,103,{"name":545,"start":546,"end":547},"detections\u002Fsplunk-imports\u002F_quarantine\u002Fanomalous-usage-of-7zip.yaml",29,35,[549,553,555,557,561,563,565,568],{"name":550,"start":551,"end":552},"detections\u002Fsplunk-imports\u002F_quarantine\u002Fbcdedit-command-back-to-normal-mode-boot.yaml",27,33,{"name":554,"start":551,"end":552},"detections\u002Fsplunk-imports\u002F_quarantine\u002Fbcdedit-failure-recovery-modification.yaml",{"name":556,"start":546,"end":547},"detections\u002Fsplunk-imports\u002F_quarantine\u002Fcertutil-with-decode-argument.yaml",{"name":558,"start":559,"end":560},"detections\u002Fsplunk-imports\u002F_quarantine\u002Fcheck-elevated-cmd-using-whoami.yaml",28,34,{"name":562,"start":559,"end":560},"detections\u002Fsplunk-imports\u002F_quarantine\u002Fclop-common-exec-parameter.yaml",{"name":564,"start":546,"end":547},"detections\u002Fsplunk-imports\u002F_quarantine\u002Fcsc-net-on-the-fly-compilation.yaml",{"name":566,"start":567,"end":344},"detections\u002Fsplunk-imports\u002F_quarantine\u002Fdetect-azurehound-command-line-arguments.yaml",32,{"name":569,"start":570,"end":567},"detections\u002Fsplunk-imports\u002F_quarantine\u002Fdetection-of-tools-built-by-nirsoft.yaml",26,{"format":287,"lines":572,"tokens":573,"first":574,"others":576,"copies":359,"kind":450},1125,6669,{"name":575,"start":355,"end":572},"packages\u002Faisoc-benchmark\u002Faisoc_benchmark\u002Freplay.py",[577],{"name":578,"start":355,"end":572},"services\u002Fapi\u002Fapp\u002F_vendor\u002Faisoc_benchmark\u002Freplay.py",{"sources":265,"lines":580,"tokens":581,"clones":582,"duplicatedLines":583,"duplicatedTokens":584,"percentage":264,"percentageTokens":585,"formats":586,"topClones":627,"generated":765},641461,3563879,1140,31406,184482,5.18,[587,593,599,605,610,616,621,625],{"format":287,"sources":588,"lines":589,"clones":590,"duplicatedLines":591,"percentage":592},1579,501464,991,29168,5.82,{"format":308,"sources":594,"lines":595,"clones":596,"duplicatedLines":597,"percentage":598},277,75110,82,1116,1.49,{"format":315,"sources":600,"lines":601,"clones":602,"duplicatedLines":603,"percentage":604},96,25042,43,463,1.85,{"format":322,"sources":606,"lines":607,"clones":330,"duplicatedLines":608,"percentage":609},122,30097,638,2.12,{"format":611,"sources":612,"lines":613,"clones":359,"duplicatedLines":614,"percentage":615},"bash",20,5273,21,0.4,{"format":617,"sources":618,"lines":619,"clones":620,"duplicatedLines":620,"percentage":620},"powershell",3,2255,0,{"format":622,"sources":623,"lines":624,"clones":620,"duplicatedLines":620,"percentage":620},"javascript",8,1931,{"format":336,"sources":618,"lines":626,"clones":620,"duplicatedLines":620,"percentage":620},289,[628,650,670,684,701,714,722,737,745,757],{"format":287,"lines":428,"tokens":429,"first":629,"others":630,"copies":449,"excerpt":639,"kind":450},{"name":431,"start":355,"end":428},[631,632,633,634,635,636,637,638],{"name":434,"start":355,"end":428},{"name":436,"start":355,"end":428},{"name":438,"start":355,"end":428},{"name":440,"start":355,"end":428},{"name":442,"start":355,"end":428},{"name":444,"start":355,"end":428},{"name":446,"start":355,"end":428},{"name":448,"start":355,"end":428},{"lines":640,"total":428},[641,642,643,644,645,646,647,648,644,649],"\"\"\"","Phase 2.6 — shared liveness + readiness probes for AiSOC FastAPI","services.","","The \"liveness vs readiness\" distinction is the single most-missed","detail in self-deployed Python services. The two checks answer","DIFFERENT questions and k8s (and any sensible load balancer)","treats the answers differently:","  * ``\u002Flivez``  — \"is this process still running?\". Returns 200 if",{"format":287,"lines":497,"tokens":498,"first":651,"others":652,"copies":473,"excerpt":661,"kind":450},{"name":500,"start":501,"end":502},[653,654,655,656,657,658,659,660],{"name":505,"start":501,"end":502},{"name":507,"start":501,"end":502},{"name":509,"start":501,"end":502},{"name":511,"start":501,"end":502},{"name":513,"start":501,"end":502},{"name":515,"start":501,"end":502},{"name":517,"start":501,"end":502},{"name":519,"start":501,"end":502},{"lines":662,"total":497},[663,644,664,644,665,666,667,668,669,365],"logger = logging.getLogger(\"aisoc.tenant_scope\")","_TRUTHY = {\"1\", \"true\", \"yes\", \"on\"}","#: Mirrors ``INSECURE_SECRET_KEY_DEFAULTS`` in services\u002Fapi\u002Fapp\u002Fcore\u002Fconfig.py","#: so a placeholder secret is treated as \"unset\" on this side too. Verifying a","#: token signed with a well-known literal would authenticate anybody who read","#: the repository.","INSECURE_SECRET_DEFAULTS = frozenset(",{"format":287,"lines":572,"tokens":573,"first":671,"others":672,"copies":359,"excerpt":674,"kind":450},{"name":575,"start":355,"end":572},[673],{"name":578,"start":355,"end":572},{"lines":675,"total":572},[676,644,677,644,678,679,680,681,682,683],"\"\"\"Scoring for replay evaluation: the agent against a customer's own analysts.","Gap-closure Phase 1.3.","This extends the benchmark package rather than standing beside it. The","hallucination machinery is :func:`aisoc_benchmark.metrics.is_checkable_indicator`","and :func:`~aisoc_benchmark.metrics.extract_checkable_indicators`, unchanged, so","an indicator counted here is one the synthetic-corpus grader would also have","counted. A second grader would eventually disagree with the first about what","\"hallucinated\" means, and the published numbers would stop being comparable",{"format":287,"lines":685,"tokens":686,"first":687,"others":689,"copies":700,"kind":450},211,1271,{"name":688,"start":355,"end":685},"services\u002Fagents\u002Fapp\u002Fcore\u002Fcors.py",[690,692,694,696,698],{"name":691,"start":355,"end":685},"services\u002Fapi\u002Fapp\u002Fcore\u002Fcors.py",{"name":693,"start":355,"end":685},"services\u002Fconnectors\u002Fapp\u002Fsecurity\u002Fcors.py",{"name":695,"start":355,"end":685},"services\u002Fhoneytokens\u002Fapp\u002Fcore\u002Fcors.py",{"name":697,"start":355,"end":685},"services\u002Fpurple-team\u002Fapp\u002Fcore\u002Fcors.py",{"name":699,"start":355,"end":685},"services\u002Fueba\u002Fapp\u002Fcore\u002Fcors.py",6,{"format":287,"lines":702,"tokens":703,"first":704,"others":705,"copies":473,"kind":450},76,665,{"name":500,"start":355,"end":702},[706,707,708,709,710,711,712,713],{"name":505,"start":355,"end":702},{"name":507,"start":355,"end":702},{"name":509,"start":355,"end":702},{"name":511,"start":355,"end":702},{"name":513,"start":355,"end":702},{"name":515,"start":355,"end":702},{"name":517,"start":355,"end":702},{"name":519,"start":355,"end":702},{"format":287,"lines":715,"tokens":716,"first":717,"others":719,"copies":359,"kind":450},976,4821,{"name":718,"start":355,"end":715},"services\u002Fagents\u002Fapp\u002Fnl_query\u002Ftranslator.py",[720],{"name":721,"start":355,"end":715},"services\u002Fapi\u002Fapp\u002F_vendor\u002Fnl_query\u002Ftranslator.py",{"format":287,"lines":723,"tokens":724,"first":725,"others":727,"copies":736,"kind":450},181,1167,{"name":726,"start":355,"end":723},"services\u002Fagents\u002Fapp\u002Fcore\u002Fkafka_security.py",[728,730,732,734],{"name":729,"start":355,"end":723},"services\u002Fapi\u002Fapp\u002Fcore\u002Fkafka_security.py",{"name":731,"start":355,"end":723},"services\u002Ffusion\u002Fapp\u002Fcore\u002Fkafka_security.py",{"name":733,"start":355,"end":723},"services\u002Fthreatintel\u002Fapp\u002Fcore\u002Fkafka_security.py",{"name":735,"start":355,"end":723},"services\u002Fueba\u002Fapp\u002Fcore\u002Fkafka_security.py",5,{"format":287,"lines":738,"tokens":739,"first":740,"others":742,"copies":359,"kind":450},711,4578,{"name":741,"start":355,"end":738},"services\u002Factions\u002Fapp\u002Fservices\u002Fautonomy_evidence_rules.py",[743],{"name":744,"start":355,"end":738},"services\u002Fapi\u002Fapp\u002F_vendor\u002Fautonomy_evidence_rules.py",{"format":287,"lines":746,"tokens":747,"first":748,"others":750,"copies":255,"kind":450},228,1473,{"name":749,"start":355,"end":746},"services\u002Fhoneytokens\u002Fapp\u002F_migrate.py",[751,753,755],{"name":752,"start":355,"end":746},"services\u002Fosquery-tls\u002Fapp\u002F_migrate.py",{"name":754,"start":355,"end":746},"services\u002Fpurple-team\u002Fapp\u002F_migrate.py",{"name":756,"start":355,"end":746},"services\u002Fueba\u002Fapp\u002F_migrate.py",{"format":287,"lines":758,"tokens":759,"first":760,"others":762,"copies":359,"kind":450},1343,4387,{"name":761,"start":355,"end":758},"services\u002Factions\u002Fapp\u002Flive_actions\u002Fcapability_contracts.py",[763],{"name":764,"start":355,"end":758},"services\u002Fapi\u002Fapp\u002F_vendor\u002Faction_contracts\u002Fcapability_contracts.py",{"files":623,"minified":620,"sample":766},[767,768,769,770,771,772,773,774],"apps\u002Fweb\u002Fsrc\u002Fdata\u002FconnectorCount.ts","apps\u002Fweb\u002Fsrc\u002Fdata\u002FcorpusStats.ts","packages\u002Faisoc-action\u002Fsrc\u002F_vendor\u002Fverdict\u002Findex.ts","packages\u002Fsdk-ts\u002Fsrc\u002Findex.ts","packages\u002Ftypes\u002Fsrc\u002Fgenerated\u002Fconnector-types.ts","services\u002Fapi\u002Fapp\u002Fapi\u002Fv1\u002Fendpoints\u002Freports.py","services\u002Fapi\u002Fapp\u002Fmodels\u002Freport.py","services\u002Fapi\u002Fmigrations\u002F019_board_reports.sql",{"score":266,"grade":267,"size":776,"dimensions":780},{"lines":777,"files":778,"class":779},963748,3469,"L",[781,793,801],{"id":782,"source":783,"value":784,"adjusted":784,"lines":785,"halfLife":786,"formats":787,"excluded":789,"weight":355,"score":792},"duplication","jscpd",4.8,46267,8.5,[287,308,322,315,336,611,343,617,622,329,788],"makefile",[790,791,372],"markup","text",67.6,{"id":794,"source":783,"value":795,"adjusted":795,"lines":796,"halfLife":797,"coverage":798,"weight":799,"score":800},"dead-code",0.9,7711,7.5,93.2,0.932,92.3,{"id":802,"source":783,"value":803,"adjusted":803,"lines":804,"halfLife":805,"weight":355,"score":806},"complexity",43.8,422581,50,54.5,{"total":808,"mean":809,"files":810},113379,32.7,[811,816,821,826,831,836,841,846,851,856],{"path":812,"complexity":813,"lines":814,"bytes":815},"apps\u002Fweb\u002Fsrc\u002Flib\u002Fapi.ts",645,7660,263345,{"path":817,"complexity":818,"lines":819,"bytes":820},"scripts\u002Fcheck_tenant_query_predicates.py",405,3021,146234,{"path":822,"complexity":823,"lines":824,"bytes":825},"services\u002Fagents\u002Fapp\u002Fplaybook\u002Fengine.py",378,2361,102635,{"path":827,"complexity":828,"lines":829,"bytes":830},"scripts\u002Fcheck_required_check_substance.py",370,1631,75380,{"path":832,"complexity":833,"lines":834,"bytes":835},"scripts\u002Fcheck_toolchain_pins.py",366,2610,134300,{"path":837,"complexity":838,"lines":839,"bytes":840},"scripts\u002Fcheck_ci_install_parity.py",365,1616,77734,{"path":842,"complexity":843,"lines":844,"bytes":845},"apps\u002Fweb\u002Fsrc\u002Fcomponents\u002Fsettings\u002FSettingsView.tsx",359,2614,91693,{"path":847,"complexity":848,"lines":849,"bytes":850},"apps\u002Fweb\u002Fsrc\u002Fcomponents\u002Fcases\u002FCaseWorkspace.tsx",323,2159,88565,{"path":852,"complexity":853,"lines":854,"bytes":855},"scripts\u002Fcheck_gate_coverage.py",305,956,42494,{"path":857,"complexity":858,"lines":859,"bytes":860},"apps\u002Fweb\u002Fsrc\u002Fcomponents\u002Fconnectors\u002FAddConnectorModal.tsx",290,1718,67236,{"percentage":862,"findings":863,"files":864,"byCategory":865,"largest":877},0.86,208,3270,[866,869,872,874],{"category":867,"count":868},"unused-file",47,{"category":870,"count":871},"unused-export",54,{"category":873,"count":344},"unused-symbol",{"category":875,"count":876},"unused-import",69,[878,881,884,887,890,893,896,899,902,905],{"category":867,"path":879,"name":644,"line":355,"lines":880},"apps\u002Fweb\u002Fsrc\u002Fcomponents\u002Fcopilot\u002FInvestigationTimeline.tsx",752,{"category":867,"path":882,"name":644,"line":355,"lines":883},"plans\u002Fcyble-aisoc\u002Fplatform\u002Ffrontend\u002Fapp.js",717,{"category":867,"path":885,"name":644,"line":355,"lines":886},"apps\u002Fweb\u002Fsrc\u002Fcomponents\u002Fgraph\u002FRealtimeGraph.tsx",400,{"category":867,"path":888,"name":644,"line":355,"lines":889},"plans\u002Fcyble-aisoc\u002Fplatform\u002Fbackend\u002Fapp\u002Fconnectors\u002Fsdk\u002Fts_bridge.py",320,{"category":867,"path":891,"name":644,"line":355,"lines":892},"apps\u002Fweb\u002Fpublic\u002Fsw.js",310,{"category":867,"path":894,"name":644,"line":355,"lines":895},"services\u002Fconnectors\u002Fapp\u002Fconnectors\u002F_examples\u002Fhello_connector.py",269,{"category":867,"path":897,"name":644,"line":355,"lines":898},"apps\u002Fweb\u002Fsrc\u002Fcomponents\u002Flanding\u002FFeatures.tsx",184,{"category":867,"path":900,"name":644,"line":355,"lines":901},"services\u002Fapi\u002Fapp\u002Fservices\u002Fcompliance.py",182,{"category":867,"path":903,"name":644,"line":355,"lines":904},"plugins\u002Fmttr-widget\u002Fplugin.py",154,{"category":867,"path":906,"name":644,"line":355,"lines":907},"services\u002Fosquery-tls\u002Fapp\u002Fapi\u002Fv1\u002Fendpoints\u002Fextensions.py",152,{"\u002Ftrending\u002Fbeenuar\u002FAiSOC":909},{"views":620,"visits":620},1793602481335]