Files
pr-agent/tools/compliance/index.html
2025-07-18 14:08:11 +00:00

2904 lines
83 KiB
HTML

<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="prev" href="../ci_feedback/">
<link rel="next" href="../custom_prompt/">
<link rel="icon" href="../../assets/favicon.ico">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.15">
<title>💎 Compliance - Qodo Merge (and open-source PR-Agent)</title>
<link rel="stylesheet" href="../../assets/stylesheets/main.342714a4.min.css">
<link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="../../css/custom.css">
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-5C9KZBM3');</script>
<!-- End Google Tag Manager -->
<script>"undefined"!=typeof __md_analytics&&__md_analytics()</script>
<meta property="og:type" content="website" >
<meta property="og:title" content="💎 Compliance - Qodo Merge (and open-source PR-Agent)" >
<meta property="og:description" content="None" >
<meta property="og:image" content="./assets/images/social/tools/compliance.png" >
<meta property="og:image:type" content="image/png" >
<meta property="og:image:width" content="1200" >
<meta property="og:image:height" content="630" >
<meta property="og:url" content="None" >
<meta name="twitter:card" content="summary_large_image" >
<meta name="twitter:title" content="💎 Compliance - Qodo Merge (and open-source PR-Agent)" >
<meta name="twitter:description" content="None" >
<meta name="twitter:image" content="./assets/images/social/tools/compliance.png" >
<link href="../../assets/stylesheets/glightbox.min.css" rel="stylesheet"/><style>
html.glightbox-open { overflow: initial; height: 100%; }
.gslide-title { margin-top: 0px; user-select: text; }
.gslide-desc { color: #666; user-select: text; }
.gslide-image img { background: white; }
.gscrollbar-fixer { padding-right: 15px; }
.gdesc-inner { font-size: 0.75rem; }
body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color);}
body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color);}
body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color);}</style> <script src="../../assets/javascripts/glightbox.min.js"></script></head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#overview" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="../.." title="Qodo Merge (and open-source PR-Agent)" class="md-header__button md-logo" aria-label="Qodo Merge (and open-source PR-Agent)" data-md-component="logo">
<img src="../../assets/logo.svg" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Qodo Merge (and open-source PR-Agent)
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
💎 Compliance
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="(prefers-color-scheme)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_0">
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m14.3 16-.7-2h-3.2l-.7 2H7.8L11 7h2l3.2 9zM20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12zm-9.15 3.96h2.3L12 9z"/></svg>
</label>
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="custom" data-md-color-accent="custom" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 6H7c-3.31 0-6 2.69-6 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6m0 10H7c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4M7 9c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"/></svg>
</label>
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="custom" data-md-color-accent="custom" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_2">
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3"/></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
</button>
</nav>
<div class="md-search__suggest" data-md-component="search-suggest"></div>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/qodo-ai/pr-agent" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
</div>
<div class="md-source__repository">
Qodo-ai/pr-agent
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
<div class="md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href="../.." class="md-tabs__link">
Overview
</a>
</li>
<li class="md-tabs__item">
<a href="../../installation/" class="md-tabs__link">
Installation
</a>
</li>
<li class="md-tabs__item">
<a href="../../usage-guide/" class="md-tabs__link">
Usage Guide
</a>
</li>
<li class="md-tabs__item md-tabs__item--active">
<a href="../" class="md-tabs__link">
Tools
</a>
</li>
<li class="md-tabs__item">
<a href="../../core-abilities/" class="md-tabs__link">
Core Abilities
</a>
</li>
<li class="md-tabs__item">
<a href="../../pr_benchmark/" class="md-tabs__link">
PR Benchmark
</a>
</li>
<li class="md-tabs__item">
<a href="../../recent_updates/" class="md-tabs__link">
Recent Updates
</a>
</li>
<li class="md-tabs__item">
<a href="../../ai_search/" class="md-tabs__link">
AI Docs Search
</a>
</li>
</ul>
</div>
</nav>
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../.." title="Qodo Merge (and open-source PR-Agent)" class="md-nav__button md-logo" aria-label="Qodo Merge (and open-source PR-Agent)" data-md-component="logo">
<img src="../../assets/logo.svg" alt="logo">
</a>
Qodo Merge (and open-source PR-Agent)
</label>
<div class="md-nav__source">
<a href="https://github.com/qodo-ai/pr-agent" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
</div>
<div class="md-source__repository">
Qodo-ai/pr-agent
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_1" >
<div class="md-nav__link md-nav__container">
<a href="../.." class="md-nav__link ">
<span class="md-ellipsis">
Overview
</span>
</a>
<label class="md-nav__link " for="__nav_1" id="__nav_1_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_1">
<span class="md-nav__icon md-icon"></span>
Overview
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../overview/pr_agent_pro/" class="md-nav__link">
<span class="md-ellipsis">
💎 Qodo Merge
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../overview/data_privacy/" class="md-nav__link">
<span class="md-ellipsis">
Data Privacy
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2" >
<div class="md-nav__link md-nav__container">
<a href="../../installation/" class="md-nav__link ">
<span class="md-ellipsis">
Installation
</span>
</a>
<label class="md-nav__link " for="__nav_2" id="__nav_2_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
Installation
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../installation/pr_agent/" class="md-nav__link">
<span class="md-ellipsis">
PR-Agent
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../installation/qodo_merge/" class="md-nav__link">
<span class="md-ellipsis">
💎 Qodo Merge
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3" >
<div class="md-nav__link md-nav__container">
<a href="../../usage-guide/" class="md-nav__link ">
<span class="md-ellipsis">
Usage Guide
</span>
</a>
<label class="md-nav__link " for="__nav_3" id="__nav_3_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
Usage Guide
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../usage-guide/introduction/" class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../usage-guide/enabling_a_wiki/" class="md-nav__link">
<span class="md-ellipsis">
Enabling a Wiki
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../usage-guide/configuration_options/" class="md-nav__link">
<span class="md-ellipsis">
Configuration File
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../usage-guide/automations_and_usage/" class="md-nav__link">
<span class="md-ellipsis">
Usage and Automation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../usage-guide/mail_notifications/" class="md-nav__link">
<span class="md-ellipsis">
Managing Mail Notifications
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../usage-guide/changing_a_model/" class="md-nav__link">
<span class="md-ellipsis">
Changing a Model
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../usage-guide/additional_configurations/" class="md-nav__link">
<span class="md-ellipsis">
Additional Configurations
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../faq/" class="md-nav__link">
<span class="md-ellipsis">
Frequently Asked Questions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../usage-guide/qodo_merge_models/" class="md-nav__link">
<span class="md-ellipsis">
💎 Qodo Merge Models
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" checked>
<div class="md-nav__link md-nav__container">
<a href="../" class="md-nav__link ">
<span class="md-ellipsis">
Tools
</span>
</a>
<label class="md-nav__link " for="__nav_4" id="__nav_4_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Tools
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../describe/" class="md-nav__link">
<span class="md-ellipsis">
Describe
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../review/" class="md-nav__link">
<span class="md-ellipsis">
Review
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../improve/" class="md-nav__link">
<span class="md-ellipsis">
Improve
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../ask/" class="md-nav__link">
<span class="md-ellipsis">
Ask
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../help/" class="md-nav__link">
<span class="md-ellipsis">
Help
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../help_docs/" class="md-nav__link">
<span class="md-ellipsis">
Help Docs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../update_changelog/" class="md-nav__link">
<span class="md-ellipsis">
Update Changelog
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../documentation/" class="md-nav__link">
<span class="md-ellipsis">
💎 Add Documentation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../analyze/" class="md-nav__link">
<span class="md-ellipsis">
💎 Analyze
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../ci_feedback/" class="md-nav__link">
<span class="md-ellipsis">
💎 CI Feedback
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
💎 Compliance
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
💎 Compliance
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="On this page">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
On this page
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#overview" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#example-usage" class="md-nav__link">
<span class="md-ellipsis">
Example Usage
</span>
</a>
<nav class="md-nav" aria-label="Example Usage">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#manual-triggering" class="md-nav__link">
<span class="md-ellipsis">
Manual Triggering
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#automatic-triggering" class="md-nav__link">
<span class="md-ellipsis">
Automatic Triggering
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#compliance-categories" class="md-nav__link">
<span class="md-ellipsis">
Compliance Categories
</span>
</a>
<nav class="md-nav" aria-label="Compliance Categories">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#1-security-compliance" class="md-nav__link">
<span class="md-ellipsis">
1. Security Compliance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#2-ticket-compliance" class="md-nav__link">
<span class="md-ellipsis">
2. Ticket Compliance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#3-custom-compliance" class="md-nav__link">
<span class="md-ellipsis">
3. Custom Compliance
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#custom-compliance" class="md-nav__link">
<span class="md-ellipsis">
Custom Compliance
</span>
</a>
<nav class="md-nav" aria-label="Custom Compliance">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#setting-up-custom-compliance" class="md-nav__link">
<span class="md-ellipsis">
Setting Up Custom Compliance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#global-hierarchical-compliance" class="md-nav__link">
<span class="md-ellipsis">
Global Hierarchical Compliance
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#configuration-options" class="md-nav__link">
<span class="md-ellipsis">
Configuration Options
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#usage-tips" class="md-nav__link">
<span class="md-ellipsis">
Usage Tips
</span>
</a>
<nav class="md-nav" aria-label="Usage Tips">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#blocking-prs-based-on-compliance" class="md-nav__link">
<span class="md-ellipsis">
Blocking PRs Based on Compliance
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../custom_prompt/" class="md-nav__link">
<span class="md-ellipsis">
💎 Custom Prompt
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../custom_labels/" class="md-nav__link">
<span class="md-ellipsis">
💎 Generate Labels
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../test/" class="md-nav__link">
<span class="md-ellipsis">
💎 Generate Tests
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../implement/" class="md-nav__link">
<span class="md-ellipsis">
💎 Implement
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../improve_component/" class="md-nav__link">
<span class="md-ellipsis">
💎 Improve Components
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../scan_repo_discussions/" class="md-nav__link">
<span class="md-ellipsis">
💎 Scan Repo Discussions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../similar_code/" class="md-nav__link">
<span class="md-ellipsis">
💎 Similar Code
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_5" >
<div class="md-nav__link md-nav__container">
<a href="../../core-abilities/" class="md-nav__link ">
<span class="md-ellipsis">
Core Abilities
</span>
</a>
<label class="md-nav__link " for="__nav_5" id="__nav_5_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Core Abilities
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../core-abilities/auto_approval/" class="md-nav__link">
<span class="md-ellipsis">
Auto approval
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../core-abilities/auto_best_practices/" class="md-nav__link">
<span class="md-ellipsis">
Auto best practices
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../core-abilities/chat_on_code_suggestions/" class="md-nav__link">
<span class="md-ellipsis">
Chat on code suggestions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../chrome-extension/" class="md-nav__link">
<span class="md-ellipsis">
Chrome extension
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../core-abilities/code_validation/" class="md-nav__link">
<span class="md-ellipsis">
Code validation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../core-abilities/dynamic_context/" class="md-nav__link">
<span class="md-ellipsis">
Dynamic context
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../core-abilities/fetching_ticket_context/" class="md-nav__link">
<span class="md-ellipsis">
Fetching ticket context
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../core-abilities/impact_evaluation/" class="md-nav__link">
<span class="md-ellipsis">
Impact evaluation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../core-abilities/incremental_update/" class="md-nav__link">
<span class="md-ellipsis">
Incremental Update
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../core-abilities/interactivity/" class="md-nav__link">
<span class="md-ellipsis">
Interactivity
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../core-abilities/metadata/" class="md-nav__link">
<span class="md-ellipsis">
Local and global metadata
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../core-abilities/rag_context_enrichment/" class="md-nav__link">
<span class="md-ellipsis">
RAG context enrichment
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../core-abilities/self_reflection/" class="md-nav__link">
<span class="md-ellipsis">
Self-reflection
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../core-abilities/static_code_analysis/" class="md-nav__link">
<span class="md-ellipsis">
Static code analysis
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_6" >
<div class="md-nav__link md-nav__container">
<a href="../../pr_benchmark/" class="md-nav__link ">
<span class="md-ellipsis">
PR Benchmark
</span>
</a>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
PR Benchmark
</label>
<ul class="md-nav__list" data-md-scrollfix>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_7" >
<div class="md-nav__link md-nav__container">
<a href="../../recent_updates/" class="md-nav__link ">
<span class="md-ellipsis">
Recent Updates
</span>
</a>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
Recent Updates
</label>
<ul class="md-nav__list" data-md-scrollfix>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../ai_search/" class="md-nav__link">
<span class="md-ellipsis">
AI Docs Search
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="On this page">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
On this page
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#overview" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#example-usage" class="md-nav__link">
<span class="md-ellipsis">
Example Usage
</span>
</a>
<nav class="md-nav" aria-label="Example Usage">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#manual-triggering" class="md-nav__link">
<span class="md-ellipsis">
Manual Triggering
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#automatic-triggering" class="md-nav__link">
<span class="md-ellipsis">
Automatic Triggering
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#compliance-categories" class="md-nav__link">
<span class="md-ellipsis">
Compliance Categories
</span>
</a>
<nav class="md-nav" aria-label="Compliance Categories">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#1-security-compliance" class="md-nav__link">
<span class="md-ellipsis">
1. Security Compliance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#2-ticket-compliance" class="md-nav__link">
<span class="md-ellipsis">
2. Ticket Compliance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#3-custom-compliance" class="md-nav__link">
<span class="md-ellipsis">
3. Custom Compliance
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#custom-compliance" class="md-nav__link">
<span class="md-ellipsis">
Custom Compliance
</span>
</a>
<nav class="md-nav" aria-label="Custom Compliance">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#setting-up-custom-compliance" class="md-nav__link">
<span class="md-ellipsis">
Setting Up Custom Compliance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#global-hierarchical-compliance" class="md-nav__link">
<span class="md-ellipsis">
Global Hierarchical Compliance
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#configuration-options" class="md-nav__link">
<span class="md-ellipsis">
Configuration Options
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#usage-tips" class="md-nav__link">
<span class="md-ellipsis">
Usage Tips
</span>
</a>
<nav class="md-nav" aria-label="Usage Tips">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#blocking-prs-based-on-compliance" class="md-nav__link">
<span class="md-ellipsis">
Blocking PRs Based on Compliance
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1>💎 Compliance</h1>
<p><code>Platforms supported: GitHub, GitLab, Bitbucket</code></p>
<h2 id="overview">Overview<a class="headerlink" href="#overview" title="Permanent link">&para;</a></h2>
<p>The <code>compliance</code> tool performs comprehensive compliance checks on PR code changes, validating them against security standards, ticket requirements, and custom organizational compliance checklists, thereby helping teams, enterprises, and agents maintain consistent code quality and security practices while ensuring that development work aligns with business requirements.</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Fully Compliant</label><label for="__tabbed_1_2">Partially Compliant</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><a class="glightbox" href="https://codium.ai/images/pr_agent/compliance_full.png" data-type="image" data-width="auto" data-height="auto" data-desc-position="bottom"><img alt="compliance_overview" src="https://codium.ai/images/pr_agent/compliance_full.png" width="256" /></a></p>
</div>
<div class="tabbed-block">
<p><a class="glightbox" href="https://codium.ai/images/pr_agent/compliance_partial.png" data-type="image" data-width="auto" data-height="auto" data-desc-position="bottom"><img alt="compliance_overview" src="https://codium.ai/images/pr_agent/compliance_partial.png" width="256" /></a></p>
</div>
</div>
</div>
<hr />
<h2 id="example-usage">Example Usage<a class="headerlink" href="#example-usage" title="Permanent link">&para;</a></h2>
<h3 id="manual-triggering">Manual Triggering<a class="headerlink" href="#manual-triggering" title="Permanent link">&para;</a></h3>
<p>Invoke the tool manually by commenting <code>/compliance</code> on any PR. The compliance results are presented in a comprehensive table:</p>
<p>To edit <a href="#configuration-options">configurations</a> related to the <code>compliance</code> tool, use the following template:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="err">/</span><span class="n">compliance</span><span class="w"> </span><span class="n">--pr_compliance</span><span class="p">.</span><span class="n">some_config1</span><span class="o">=</span><span class="err">... --pr</span><span class="mi">_</span><span class="n">compliance</span><span class="p">.</span><span class="n">some_config2</span><span class="o">=</span><span class="err">...</span>
</code></pre></div>
<p>For example, you can enable ticket compliance labels by running:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="err">/</span><span class="n">compliance</span><span class="w"> </span><span class="n">--pr_compliance</span><span class="p">.</span><span class="n">enable_ticket_labels</span><span class="o">=</span><span class="kc">true</span>
</code></pre></div>
<h3 id="automatic-triggering">Automatic Triggering<a class="headerlink" href="#automatic-triggering" title="Permanent link">&para;</a></h3>
<p>The tool can be triggered automatically every time a new PR is <a href="https://qodo-merge-docs.qodo.ai/usage-guide/automations_and_usage/#github-app-automatic-tools-when-a-new-pr-is-opened">opened</a>, or in a <a href="https://qodo-merge-docs.qodo.ai/usage-guide/automations_and_usage/?h=push#github-app-automatic-tools-for-push-actions-commits-to-an-open-pr">push</a> event to an existing PR.</p>
<p>To run the <code>compliance</code> tool automatically when a PR is opened, define the following in the <a href="https://qodo-merge-docs.qodo.ai/usage-guide/configuration_options/">configuration file</a>:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="k">[github_app]</span><span class="w"> </span><span class="c1"># for example</span>
<a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a><span class="n">pr_commands</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span>
<a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a><span class="w"> </span><span class="s2">&quot;/compliance&quot;</span><span class="p">,</span>
<a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a><span class="w"> </span><span class="err">...</span>
<a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a><span class="err">]</span>
</code></pre></div>
<h2 id="compliance-categories">Compliance Categories<a class="headerlink" href="#compliance-categories" title="Permanent link">&para;</a></h2>
<p>The compliance tool evaluates three main categories:</p>
<h3 id="1-security-compliance">1. Security Compliance<a class="headerlink" href="#1-security-compliance" title="Permanent link">&para;</a></h3>
<p>Scans for security vulnerabilities and potential exploits in the PR code changes:</p>
<ul>
<li><strong>Verified Security Concerns</strong> 🔴: Clear security vulnerabilities that require immediate attention</li>
<li><strong>Possible Security Risks</strong> ⚪: Potential security issues that need human verification</li>
<li><strong>No Security Concerns</strong> 🟢: No security vulnerabilities detected</li>
</ul>
<p>Examples of security issues:</p>
<ul>
<li>Exposure of sensitive information (API keys, passwords, secrets)</li>
<li>SQL injection vulnerabilities</li>
<li>Cross-site scripting (XSS) risks</li>
<li>Cross-site request forgery (CSRF) vulnerabilities</li>
<li>Insecure data handling patterns</li>
</ul>
<h3 id="2-ticket-compliance">2. Ticket Compliance<a class="headerlink" href="#2-ticket-compliance" title="Permanent link">&para;</a></h3>
<details class="tip" open="open">
<summary>How to set up ticket compliance</summary>
<p>Follow the guide on how to set up <a href="https://qodo-merge-docs.qodo.ai/core-abilities/fetching_ticket_context/">ticket compliance</a> with Qodo Merge.</p>
</details>
<p>Validates that PR changes fulfill the requirements specified in linked tickets:</p>
<ul>
<li><strong>Fully Compliant</strong> 🟢: All ticket requirements are satisfied</li>
<li><strong>Partially Compliant</strong> 🟡: Some requirements are met, others need attention</li>
<li><strong>Not Compliant</strong> 🔴: Clear violations of ticket requirements</li>
<li><strong>Requires Verification</strong> ⚪: Requirements that need human review</li>
</ul>
<h3 id="3-custom-compliance">3. Custom Compliance<a class="headerlink" href="#3-custom-compliance" title="Permanent link">&para;</a></h3>
<p>Validates against an organization-specific compliance checklist:</p>
<ul>
<li><strong>Fully Compliant</strong> 🟢: All custom compliance are satisfied</li>
<li><strong>Not Compliant</strong> 🔴: Violations of custom compliance</li>
<li><strong>Requires Verification</strong> ⚪: Compliance that need human assessment</li>
</ul>
<h2 id="custom-compliance">Custom Compliance<a class="headerlink" href="#custom-compliance" title="Permanent link">&para;</a></h2>
<h3 id="setting-up-custom-compliance">Setting Up Custom Compliance<a class="headerlink" href="#setting-up-custom-compliance" title="Permanent link">&para;</a></h3>
<p>Each compliance is defined in a YAML file as follows:
- <code>title</code>: Used to provide a clear name for the compliance
- <code>compliance_label</code>: Used to automatically generate labels for non-compliance issues
- <code>objective</code>, <code>success_criteria</code>, and <code>failure_criteria</code>: These fields are used to clearly define what constitutes compliance</p>
<details class="tip" open="open">
<summary>Example of a compliance checklist</summary>
<div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="c1"># pr_compliance_checklist.yaml</span>
<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a><span class="nt">pr_compliances</span><span class="p">:</span>
<a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;Error</span><span class="nv"> </span><span class="s">Handling&quot;</span>
<a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a><span class="w"> </span><span class="nt">compliance_label</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
<a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a><span class="w"> </span><span class="nt">objective</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;All</span><span class="nv"> </span><span class="s">external</span><span class="nv"> </span><span class="s">API</span><span class="nv"> </span><span class="s">calls</span><span class="nv"> </span><span class="s">must</span><span class="nv"> </span><span class="s">have</span><span class="nv"> </span><span class="s">proper</span><span class="nv"> </span><span class="s">error</span><span class="nv"> </span><span class="s">handling&quot;</span>
<a id="__codelineno-3-6" name="__codelineno-3-6" href="#__codelineno-3-6"></a><span class="w"> </span><span class="nt">success_criteria</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;Try-catch</span><span class="nv"> </span><span class="s">blocks</span><span class="nv"> </span><span class="s">around</span><span class="nv"> </span><span class="s">external</span><span class="nv"> </span><span class="s">calls</span><span class="nv"> </span><span class="s">with</span><span class="nv"> </span><span class="s">appropriate</span><span class="nv"> </span><span class="s">logging&quot;</span>
<a id="__codelineno-3-7" name="__codelineno-3-7" href="#__codelineno-3-7"></a><span class="w"> </span><span class="nt">failure_criteria</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;External</span><span class="nv"> </span><span class="s">API</span><span class="nv"> </span><span class="s">calls</span><span class="nv"> </span><span class="s">without</span><span class="nv"> </span><span class="s">error</span><span class="nv"> </span><span class="s">handling</span><span class="nv"> </span><span class="s">or</span><span class="nv"> </span><span class="s">logging&quot;</span>
<a id="__codelineno-3-8" name="__codelineno-3-8" href="#__codelineno-3-8"></a>
<a id="__codelineno-3-9" name="__codelineno-3-9" href="#__codelineno-3-9"></a><span class="nn">...</span>
</code></pre></div>
</details>
<details class="tip" open="open">
<summary>Writing effective compliance checklists</summary>
<ul>
<li>Avoid overly complex or subjective compliances that are hard to verify</li>
<li>Keep compliances focused on security, business requirements, and critical standards</li>
<li>Use clear, actionable language that developers can understand</li>
<li>Focus on meaningful compliance requirements, not style preferences</li>
</ul>
</details>
<h3 id="global-hierarchical-compliance">Global Hierarchical Compliance<a class="headerlink" href="#global-hierarchical-compliance" title="Permanent link">&para;</a></h3>
<p>Qodo Merge supports hierarchical compliance checklists using a dedicated global configuration repository.</p>
<h4 id="setting-up-global-hierarchical-compliance">Setting up global hierarchical compliance<a class="headerlink" href="#setting-up-global-hierarchical-compliance" title="Permanent link">&para;</a></h4>
<p>1. Create a new repository named <code>pr-agent-settings</code> in your organization or workspace.</p>
<p>2. Build the folder hierarchy in your <code>pr-agent-settings</code> repository:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a>pr-agent-settings/
<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a>├──<span class="w"> </span>metadata.yaml<span class="w"> </span><span class="c1"># Maps repos/folders to compliance paths</span>
<a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a>└──<span class="w"> </span>compliance_standards/<span class="w"> </span><span class="c1"># Root for all compliance definitions</span>
<a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a><span class="w"> </span>├──<span class="w"> </span>global/<span class="w"> </span><span class="c1"># Global compliance, inherited widely</span>
<a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a><span class="w"> </span><span class="w"> </span>└──<span class="w"> </span>pr_compliance_checklist.yaml
<a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a><span class="w"> </span>├──<span class="w"> </span>groups/<span class="w"> </span><span class="c1"># For groups of repositories</span>
<a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a><span class="w"> </span><span class="w"> </span>├──<span class="w"> </span>frontend_repos/
<a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a><span class="w"> </span><span class="w"> </span><span class="w"> </span>└──<span class="w"> </span>pr_compliance_checklist.yaml
<a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a><span class="w"> </span><span class="w"> </span>└──<span class="w"> </span>backend_repos/
<a id="__codelineno-4-10" name="__codelineno-4-10" href="#__codelineno-4-10"></a><span class="w"> </span><span class="w"> </span>└──<span class="w"> </span>pr_compliance_checklist.yaml
<a id="__codelineno-4-11" name="__codelineno-4-11" href="#__codelineno-4-11"></a><span class="w"> </span>├──<span class="w"> </span>qodo-merge/<span class="w"> </span><span class="c1"># For standalone repositories</span>
<a id="__codelineno-4-12" name="__codelineno-4-12" href="#__codelineno-4-12"></a><span class="w"> </span><span class="w"> </span>└──<span class="w"> </span>pr_compliance_checklist.yaml
<a id="__codelineno-4-13" name="__codelineno-4-13" href="#__codelineno-4-13"></a><span class="w"> </span>└──<span class="w"> </span>qodo-monorepo/<span class="w"> </span><span class="c1"># For monorepo-specific compliance</span>
<a id="__codelineno-4-14" name="__codelineno-4-14" href="#__codelineno-4-14"></a><span class="w"> </span>├──<span class="w"> </span>pr_compliance_checklist.yaml<span class="w"> </span><span class="c1"># Root-level monorepo compliance</span>
<a id="__codelineno-4-15" name="__codelineno-4-15" href="#__codelineno-4-15"></a><span class="w"> </span>├──<span class="w"> </span>qodo-github/<span class="w"> </span><span class="c1"># Subproject compliance</span>
<a id="__codelineno-4-16" name="__codelineno-4-16" href="#__codelineno-4-16"></a><span class="w"> </span><span class="w"> </span>└──<span class="w"> </span>pr_compliance_checklist.yaml
<a id="__codelineno-4-17" name="__codelineno-4-17" href="#__codelineno-4-17"></a><span class="w"> </span>└──<span class="w"> </span>qodo-gitlab/<span class="w"> </span><span class="c1"># Another subproject</span>
<a id="__codelineno-4-18" name="__codelineno-4-18" href="#__codelineno-4-18"></a><span class="w"> </span>└──<span class="w"> </span>pr_compliance_checklist.yaml
</code></pre></div>
<p>3. Define the metadata file <code>metadata.yaml</code> in the root of <code>pr-agent-settings</code>:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="c1"># Standalone repos</span>
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a><span class="nt">qodo-merge</span><span class="p">:</span>
<a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a><span class="w"> </span><span class="nt">pr_compliance_checklist_paths</span><span class="p">:</span>
<a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">&quot;qodo-merge&quot;</span>
<a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a>
<a id="__codelineno-5-6" name="__codelineno-5-6" href="#__codelineno-5-6"></a><span class="c1"># Group-associated repos</span>
<a id="__codelineno-5-7" name="__codelineno-5-7" href="#__codelineno-5-7"></a><span class="nt">repo_b</span><span class="p">:</span>
<a id="__codelineno-5-8" name="__codelineno-5-8" href="#__codelineno-5-8"></a><span class="w"> </span><span class="nt">pr_compliance_checklist_paths</span><span class="p">:</span>
<a id="__codelineno-5-9" name="__codelineno-5-9" href="#__codelineno-5-9"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">&quot;groups/backend_repos&quot;</span>
<a id="__codelineno-5-10" name="__codelineno-5-10" href="#__codelineno-5-10"></a>
<a id="__codelineno-5-11" name="__codelineno-5-11" href="#__codelineno-5-11"></a><span class="c1"># Multi-group repos</span>
<a id="__codelineno-5-12" name="__codelineno-5-12" href="#__codelineno-5-12"></a><span class="nt">repo_c</span><span class="p">:</span>
<a id="__codelineno-5-13" name="__codelineno-5-13" href="#__codelineno-5-13"></a><span class="w"> </span><span class="nt">pr_compliance_checklist_paths</span><span class="p">:</span>
<a id="__codelineno-5-14" name="__codelineno-5-14" href="#__codelineno-5-14"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">&quot;groups/frontend_repos&quot;</span>
<a id="__codelineno-5-15" name="__codelineno-5-15" href="#__codelineno-5-15"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">&quot;groups/backend_repos&quot;</span>
<a id="__codelineno-5-16" name="__codelineno-5-16" href="#__codelineno-5-16"></a>
<a id="__codelineno-5-17" name="__codelineno-5-17" href="#__codelineno-5-17"></a><span class="c1"># Monorepo with subprojects</span>
<a id="__codelineno-5-18" name="__codelineno-5-18" href="#__codelineno-5-18"></a><span class="nt">qodo-monorepo</span><span class="p">:</span>
<a id="__codelineno-5-19" name="__codelineno-5-19" href="#__codelineno-5-19"></a><span class="w"> </span><span class="nt">pr_compliance_checklist_paths</span><span class="p">:</span>
<a id="__codelineno-5-20" name="__codelineno-5-20" href="#__codelineno-5-20"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">&quot;qodo-monorepo&quot;</span>
<a id="__codelineno-5-21" name="__codelineno-5-21" href="#__codelineno-5-21"></a><span class="w"> </span><span class="nt">monorepo_subprojects</span><span class="p">:</span>
<a id="__codelineno-5-22" name="__codelineno-5-22" href="#__codelineno-5-22"></a><span class="w"> </span><span class="nt">frontend</span><span class="p">:</span>
<a id="__codelineno-5-23" name="__codelineno-5-23" href="#__codelineno-5-23"></a><span class="w"> </span><span class="nt">pr_compliance_checklist_paths</span><span class="p">:</span>
<a id="__codelineno-5-24" name="__codelineno-5-24" href="#__codelineno-5-24"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">&quot;qodo-monorepo/qodo-github&quot;</span>
<a id="__codelineno-5-25" name="__codelineno-5-25" href="#__codelineno-5-25"></a><span class="w"> </span><span class="nt">backend</span><span class="p">:</span>
<a id="__codelineno-5-26" name="__codelineno-5-26" href="#__codelineno-5-26"></a><span class="w"> </span><span class="nt">pr_compliance_checklist_paths</span><span class="p">:</span>
<a id="__codelineno-5-27" name="__codelineno-5-27" href="#__codelineno-5-27"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">&quot;qodo-monorepo/qodo-gitlab&quot;</span>
</code></pre></div>
<p>4. Set the following configuration:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="k">[pr_compliance]</span>
<a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a><span class="n">enable_global_pr_compliance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span>
</code></pre></div>
<details class="- info">
<summary>Compliance priority and fallback behavior</summary>
<p>1. <strong>Primary</strong>: Global hierarchical compliance checklists from the <code>pr-agent-settings</code> repository:</p>
<div class="highlight"><pre><span></span><code>1.1 If the repository is mapped in `metadata.yaml`, it uses the specified paths
1.2 For monorepos, it automatically collects compliance checklists matching PR file paths
1.3 If no mapping exists, it falls back to the global compliance checklists
</code></pre></div>
<p>2. <strong>Fallback</strong>: Local repository wiki <code>pr_compliance_checklist.yaml</code> file:</p>
<div class="highlight"><pre><span></span><code>2.1 Used when global compliance checklists are not found or configured
2.2 Acts as a safety net for repositories not yet configured in the global system
2.3 Local wiki compliance checklists are completely ignored when compliance checklists are successfully loaded
</code></pre></div>
</details>
<h2 id="configuration-options">Configuration Options<a class="headerlink" href="#configuration-options" title="Permanent link">&para;</a></h2>
<details class="example" open="open">
<summary>General options</summary>
<p><table>
<tr>
<td><b>extra_instructions</b></td>
<td>Optional extra instructions for the tool. For example: "Ensure that all error-handling paths in the code contain appropriate logging statements". Default is empty string.</td>
</tr>
<tr>
<td><b>persistent_comment</b></td>
<td>If set to true, the compliance comment will be persistent, meaning that every new compliance request will edit the previous one. Default is true.</td>
</tr>
<tr>
<td><b>enable_user_defined_compliance_labels</b></td>
<td>If set to true, the tool will add the label <code>Failed compliance check</code> for custom compliance violations. Default is true.</td>
</tr>
<tr>
<td><b>enable_estimate_effort_to_review</b></td>
<td>If set to true, the tool will estimate the effort required to review the PR (1-5 scale) as a label. Default is true.</td>
</tr>
<tr>
<td><b>enable_todo_scan</b></td>
<td>If set to true, the tool will scan for TODO comments in the PR code. Default is false.</td>
</tr>
<tr>
<td><b>enable_update_pr_compliance_checkbox</b></td>
<td>If set to true, the tool will add an update checkbox to refresh compliance status following push events. Default is true.</td>
</tr>
<tr>
<td><b>enable_help_text</b></td>
<td>If set to true, the tool will display help text in the comment. Default is false.</td>
</tr>
</table></p>
</details>
<details class="example" open="open">
<summary>Security compliance options</summary>
<p><table>
<tr>
<td><b>enable_security_compliance</b></td>
<td>If set to true, the tool will check for security vulnerabilities. Default is true.</td>
</tr>
<tr>
<td><b>enable_compliance_labels_security</b></td>
<td>If set to true, the tool will add a <code>Possible security concern</code> label to the PR when security-related concerns are detected. Default is true.</td>
</tr>
</table></p>
</details>
<details class="example" open="open">
<summary>Ticket compliance options</summary>
<p><table>
<tr>
<td><b>enable_ticket_labels</b></td>
<td>If set to true, the tool will add ticket compliance labels to the PR. Default is false.</td>
</tr>
<tr>
<td><b>enable_no_ticket_labels</b></td>
<td>If set to true, the tool will add a label when no ticket is found. Default is false.</td>
</tr>
<tr>
<td><b>check_pr_additional_content</b></td>
<td>If set to true, the tool will check if the PR contains content not related to the ticket. Default is false.</td>
</tr>
</table></p>
</details>
<h2 id="usage-tips">Usage Tips<a class="headerlink" href="#usage-tips" title="Permanent link">&para;</a></h2>
<h3 id="blocking-prs-based-on-compliance">Blocking PRs Based on Compliance<a class="headerlink" href="#blocking-prs-based-on-compliance" title="Permanent link">&para;</a></h3>
<div class="admonition tip">
<p>You can configure CI/CD Actions to prevent merging PRs with specific compliance labels:</p>
<ul>
<li><code>Possible security concern</code> - Block PRs with potential security issues</li>
<li><code>Failed compliance check</code> - Block PRs that violate custom compliance checklists</li>
</ul>
<p>Implement a dedicated <a href="https://medium.com/sequra-tech/quick-tip-block-pull-request-merge-using-labels-6cc326936221">GitHub Action</a> to enforce these checklists.</p>
</div>
</article>
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
Back to top
</button>
</main>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Footer</title>
<style>
body {
margin: 0;
padding: 0;
font-family: Arial, sans-serif;
font-size: 16px;
}
.wrapper {
background-color: #171518;
}
.container {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
color: white;
padding: 20px;
max-width: 61rem;
margin-left: auto;
margin-right: auto;
}
.footer-links, .social-icons {
padding: 0;
list-style-type: none;
display: flex;
justify-content: center;
gap: 20px;
align-items: center;
}
.footer-links a:hover, .social-icons a:hover {
color: #AEA1F1;
}
.social-icons svg {
width: 24px;
height: auto;
fill: white;
}
.footer-text {
width: 240px;
}
@media (max-width: 768px) {
.container {
flex-direction: column;
align-items: center;
text-align: center;
}
.footer-links, .social-icons, .footer-text {
width: 100%;
justify-content: center;
margin: 10px 0;
}
.footer-links {
order: 1;
}
.social-icons {
order: 2;
}
.footer-text {
order: 3;
}
}
</style>
<link href="../../assets/stylesheets/glightbox.min.css" rel="stylesheet"/><style>
html.glightbox-open { overflow: initial; height: 100%; }
.gslide-title { margin-top: 0px; user-select: text; }
.gslide-desc { color: #666; user-select: text; }
.gslide-image img { background: white; }
.gscrollbar-fixer { padding-right: 15px; }
.gdesc-inner { font-size: 0.75rem; }
body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color);}
body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color);}
body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color);}</style> <script src="../../assets/javascripts/glightbox.min.js"></script></head>
<body>
<footer class="wrapper">
<div class="container">
<p class="footer-text">© 2025 <a href="https://www.qodo.ai/" target="_blank" rel="noopener">Qodo</a></p>
<div class="footer-links">
<a href="https://qodo-gen-docs.qodo.ai/">Qodo Gen</a>
<p>|</p>
<a href="https://qodo-flow-docs.qodo.ai/">AlphaCodium</a>
</div>
<div class="social-icons">
<a href="https://github.com/Codium-ai" target="_blank" rel="noopener" title="github.com" class="social-link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg>
</a>
<a href="https://discord.com/invite/SgSxuQ65GF" target="_blank" rel="noopener" title="discord.com" class="social-link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M524.531 69.836a1.5 1.5 0 0 0-.764-.7A485.065 485.065 0 0 0 404.081 32.03a1.816 1.816 0 0 0-1.923.91 337.461 337.461 0 0 0-14.9 30.6 447.848 447.848 0 0 0-134.426 0 309.541 309.541 0 0 0-15.135-30.6 1.89 1.89 0 0 0-1.924-.91 483.689 483.689 0 0 0-119.688 37.107 1.712 1.712 0 0 0-.788.676C39.068 183.651 18.186 294.69 28.43 404.354a2.016 2.016 0 0 0 .765 1.375 487.666 487.666 0 0 0 146.825 74.189 1.9 1.9 0 0 0 2.063-.676A348.2 348.2 0 0 0 208.12 430.4a1.86 1.86 0 0 0-1.019-2.588 321.173 321.173 0 0 1-45.868-21.853 1.885 1.885 0 0 1-.185-3.126 251.047 251.047 0 0 0 9.109-7.137 1.819 1.819 0 0 1 1.9-.256c96.229 43.917 200.41 43.917 295.5 0a1.812 1.812 0 0 1 1.924.233 234.533 234.533 0 0 0 9.132 7.16 1.884 1.884 0 0 1-.162 3.126 301.407 301.407 0 0 1-45.89 21.83 1.875 1.875 0 0 0-1 2.611 391.055 391.055 0 0 0 30.014 48.815 1.864 1.864 0 0 0 2.063.7A486.048 486.048 0 0 0 610.7 405.729a1.882 1.882 0 0 0 .765-1.352c12.264-126.783-20.532-236.912-86.934-334.541ZM222.491 337.58c-28.972 0-52.844-26.587-52.844-59.239s23.409-59.241 52.844-59.241c29.665 0 53.306 26.82 52.843 59.239 0 32.654-23.41 59.241-52.843 59.241Zm195.38 0c-28.971 0-52.843-26.587-52.843-59.239s23.409-59.241 52.843-59.241c29.667 0 53.307 26.82 52.844 59.239 0 32.654-23.177 59.241-52.844 59.241Z"></path></svg>
</a>
<a href="https://www.youtube.com/@QodoAI" target="_blank" rel="noopener" title="www.youtube.com" class="social-link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"></path></svg>
</a>
<a href="https://www.linkedin.com/company/qodoai" target="_blank" rel="noopener" title="www.linkedin.com" class="social-link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path></svg>
</a>
<a href="https://twitter.com/QodoAI" target="_blank" rel="noopener" title="twitter.com" class="social-link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"></path></svg>
</a>
<a href="https://www.instagram.com/qodo_ai" target="_blank" rel="noopener" title="www.instagram.com" class="social-link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"></path></svg>
</a>
</div>
</div>
</footer>
<script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"});
document$.subscribe(() => { lightbox.reload() });
</script></body>
</html>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.tabs", "navigation.expand", "navigation.path", "navigation.top", "navigation.tracking", "navigation.indexes", "search.suggest", "search.highlight", "content.tabs.link", "content.code.annotation", "content.code.copy"], "search": "../../assets/javascripts/workers/search.d50fe291.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
<script src="../../assets/javascripts/bundle.56ea9cef.min.js"></script>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5C9KZBM3"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
</body>
</html>