Navegador

Deployed c967611 with MkDocs version: 1.6.1

anonymous 2026-03-30 02:49 UTC gh-pages
Commit a1352dcee5b9c94fe092764d211d71bd2ec27a25c875f116b9debdaf1ea7570f
77 files changed +1348 +1 +2417 +1919 +2163 +2150 +2857 +1908 +1916 +237 +156 +12 +12 +16 +7 +1 +18 +18 +18 +1 +18 +18 +18 +1 +1 +18 +1 +18 +1 +1 +1 +1 +1 +18 +18 +18 +18 +18 +1 +1 +18 +1 +1 +1 +18 +1 +1 +206 +6708 +42 +7 +1 +1 +1 +1 +1815 +1707 +1750 +2005 +2297 +2073 +2123 +2109 +1942 +1917 +2271 +2060 +1860 +1996 +2061 +1803 +1 +95
+ .nojekyll + 404.html + CNAME + api/analysis/index.html + api/graph/index.html + api/ingestion/index.html + api/mcp/index.html + api/sdk/index.html + architecture/graph-schema/index.html + architecture/overview/index.html + assets/_mkdocstrings.css + assets/css/custom.css + assets/images/conflict-logo-black.svg + assets/images/conflict-logo.svg + assets/images/favicon.png + assets/javascripts/bundle.79ae519e.min.js + assets/javascripts/bundle.79ae519e.min.js.map + assets/javascripts/lunr/min/lunr.ar.min.js + assets/javascripts/lunr/min/lunr.da.min.js + assets/javascripts/lunr/min/lunr.de.min.js + assets/javascripts/lunr/min/lunr.du.min.js + assets/javascripts/lunr/min/lunr.el.min.js + assets/javascripts/lunr/min/lunr.es.min.js + assets/javascripts/lunr/min/lunr.fi.min.js + assets/javascripts/lunr/min/lunr.fr.min.js + assets/javascripts/lunr/min/lunr.he.min.js + assets/javascripts/lunr/min/lunr.hi.min.js + assets/javascripts/lunr/min/lunr.hu.min.js + assets/javascripts/lunr/min/lunr.hy.min.js + assets/javascripts/lunr/min/lunr.it.min.js + assets/javascripts/lunr/min/lunr.ja.min.js + assets/javascripts/lunr/min/lunr.jp.min.js + assets/javascripts/lunr/min/lunr.kn.min.js + assets/javascripts/lunr/min/lunr.ko.min.js + assets/javascripts/lunr/min/lunr.multi.min.js + assets/javascripts/lunr/min/lunr.nl.min.js + assets/javascripts/lunr/min/lunr.no.min.js + assets/javascripts/lunr/min/lunr.pt.min.js + assets/javascripts/lunr/min/lunr.ro.min.js + assets/javascripts/lunr/min/lunr.ru.min.js + assets/javascripts/lunr/min/lunr.sa.min.js + assets/javascripts/lunr/min/lunr.stemmer.support.min.js + assets/javascripts/lunr/min/lunr.sv.min.js + assets/javascripts/lunr/min/lunr.ta.min.js + assets/javascripts/lunr/min/lunr.te.min.js + assets/javascripts/lunr/min/lunr.th.min.js + assets/javascripts/lunr/min/lunr.tr.min.js + assets/javascripts/lunr/min/lunr.vi.min.js + assets/javascripts/lunr/min/lunr.zh.min.js + assets/javascripts/lunr/tinyseg.js + assets/javascripts/lunr/wordcut.js + assets/javascripts/workers/search.2c215733.min.js + assets/javascripts/workers/search.2c215733.min.js.map + assets/stylesheets/main.484c7ddc.min.css + assets/stylesheets/main.484c7ddc.min.css.map + assets/stylesheets/palette.ab4e12ef.min.css + assets/stylesheets/palette.ab4e12ef.min.css.map + getting-started/configuration/index.html + getting-started/installation/index.html + getting-started/quickstart/index.html + guide/agent-hooks/index.html + guide/analysis/index.html + guide/ci-cd/index.html + guide/cluster/index.html + guide/context-loading/index.html + guide/framework-enrichment/index.html + guide/graph-queries/index.html + guide/ingestion/index.html + guide/intelligence/index.html + guide/mcp-integration/index.html + guide/planopticon/index.html + guide/sdk/index.html + index.html + objects.inv + search/search_index.json + sitemap.xml + sitemap.xml.gz

No diff available

+1348
--- a/404.html
+++ b/404.html
@@ -0,0 +1,1348 @@
1
+
2
+<!doctype html>
3
+<html lang="en" class="no-js">
4
+ <head>
5
+
6
+ <meta charset="utf-8">
7
+ <meta name="viewport" content="width=device-width,initial-scale=1">
8
+
9
+ <meta name="description" content="Project knowledge graph for AI coding agents — code structure, business rules, and architectural decisions in one queryable graph">
10
+
11
+
12
+ <meta name="author" content="CONFLICT LLC">
13
+
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+ <link rel="icon" href="/assets/images/favicon.png">
22
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.6">
23
+
24
+
25
+
26
+ <title>Navegador</title>
27
+
28
+
29
+
30
+ <link rel="stylesheet" href="/assets/stylesheets/main.484c7ddc.min.css">
31
+
32
+
33
+ <link rel="stylesheet" href="/assets/stylesheets/palette.ab4e12ef.min.css">
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
47
+ <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">
48
+ <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
49
+
50
+
51
+
52
+ <link rel="stylesheet" href="/assets/_mkdocstrings.css">
53
+
54
+ <link rel="stylesheet" href="/assets/css/custom.css">
55
+
56
+ <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>
57
+
58
+
59
+
60
+
61
+
62
+ </head>
63
+
64
+
65
+
66
+
67
+
68
+
69
+
70
+
71
+
72
+ <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="custom" data-md-color-accent="custom">
73
+
74
+
75
+ <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
76
+ <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
77
+ <label class="md-overlay" for="__drawer"></label>
78
+ <div data-md-component="skip">
79
+
80
+ </div>
81
+ <div data-md-component="announce">
82
+
83
+ </div>
84
+
85
+
86
+
87
+
88
+<header class="md-header" data-md-component="header">
89
+ <nav class="md-header__inner md-grid" aria-label="Header">
90
+ <a href="/." title="Navegador" class="md-header__button md-logo" aria-label="Navegador" data-md-component="logo">
91
+
92
+ <img src="/assets/images/conflict-logo.svg" alt="logo">
93
+
94
+ </a>
95
+ <label class="md-header__button md-icon" for="__drawer">
96
+
97
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
98
+ </label>
99
+ <div class="md-header__title" data-md-component="header-title">
100
+ <div class="md-header__ellipsis">
101
+ <div class="md-header__topic">
102
+ <span class="md-ellipsis">
103
+ Navegador
104
+ </span>
105
+ </div>
106
+ <div class="md-header__topic" data-md-component="header-topic">
107
+ <span class="md-ellipsis">
108
+
109
+
110
+
111
+ </span>
112
+ </div>
113
+ </div>
114
+ </div>
115
+
116
+
117
+ <form class="md-header__option" data-md-component="palette">
118
+
119
+
120
+
121
+
122
+ <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_0">
123
+
124
+ <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
125
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
126
+ </label>
127
+
128
+
129
+
130
+
131
+
132
+ <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">
133
+
134
+ <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_0" hidden>
135
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
136
+ </label>
137
+
138
+
139
+</form>
140
+
141
+
142
+
143
+ <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>
144
+
145
+
146
+
147
+
148
+
149
+ <label class="md-header__button md-icon" for="__search">
150
+
151
+ <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>
152
+ </label>
153
+ <div class="md-search" data-md-component="search" role="dialog">
154
+ <label class="md-search__overlay" for="__search"></label>
155
+ <div class="md-search__inner" role="search">
156
+ <form class="md-search__form" name="search">
157
+ <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>
158
+ <label class="md-search__icon md-icon" for="__search">
159
+
160
+ <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>
161
+
162
+ <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>
163
+ </label>
164
+ <nav class="md-search__options" aria-label="Search">
165
+
166
+ <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
167
+
168
+ <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>
169
+ </button>
170
+ </nav>
171
+
172
+ <div class="md-search__suggest" data-md-component="search-suggest"></div>
173
+
174
+ </form>
175
+ <div class="md-search__output">
176
+ <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
177
+ <div class="md-search-result" data-md-component="search-result">
178
+ <div class="md-search-result__meta">
179
+ Initializing search
180
+ </div>
181
+ <ol class="md-search-result__list" role="presentation"></ol>
182
+ </div>
183
+ </div>
184
+ </div>
185
+ </div>
186
+</div>
187
+
188
+
189
+
190
+ <div class="md-header__source">
191
+ <a href="https://github.com/ConflictHQ/navegador" title="Go to repository" class="md-source" data-md-component="source">
192
+ <div class="md-source__icon md-icon">
193
+
194
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 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 2025 Fonticons, Inc.--><path d="M173.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.9M252.8 8C114.1 8 8 113.3 8 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.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.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>
195
+ </div>
196
+ <div class="md-source__repository">
197
+ ConflictHQ/navegador
198
+ </div>
199
+</a>
200
+ </div>
201
+
202
+ </nav>
203
+
204
+</header>
205
+
206
+ <div class="md-container" data-md-component="container">
207
+
208
+
209
+
210
+
211
+
212
+<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
213
+ <div class="md-grid">
214
+ <ul class="md-tabs__list">
215
+
216
+
217
+
218
+
219
+
220
+
221
+ <li class="md-tabs__item">
222
+ <a href="/." class="md-tabs__link">
223
+
224
+
225
+
226
+
227
+
228
+ Home
229
+
230
+ </a>
231
+ </li>
232
+
233
+
234
+
235
+
236
+
237
+
238
+
239
+
240
+
241
+
242
+ <li class="md-tabs__item">
243
+ <a href="/getting-started/installation/" class="md-tabs__link">
244
+
245
+
246
+
247
+ Getting Started
248
+
249
+ </a>
250
+ </li>
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+
261
+
262
+ <li class="md-tabs__item">
263
+ <a href="/guide/ingestion/" class="md-tabs__link">
264
+
265
+
266
+
267
+ Guide
268
+
269
+ </a>
270
+ </li>
271
+
272
+
273
+
274
+
275
+
276
+
277
+
278
+
279
+
280
+
281
+
282
+ <li class="md-tabs__item">
283
+ <a href="/architecture/overview/" class="md-tabs__link">
284
+
285
+
286
+
287
+ Architecture
288
+
289
+ </a>
290
+ </li>
291
+
292
+
293
+
294
+
295
+
296
+
297
+
298
+
299
+
300
+
301
+
302
+ <li class="md-tabs__item">
303
+ <a href="/api/sdk/" class="md-tabs__link">
304
+
305
+
306
+
307
+ API Reference
308
+
309
+ </a>
310
+ </li>
311
+
312
+
313
+
314
+
315
+ </ul>
316
+ </div>
317
+</nav>
318
+
319
+
320
+
321
+ <main class="md-main" data-md-component="main">
322
+ <div class="md-main__inner md-grid">
323
+
324
+
325
+
326
+ <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
327
+ <div class="md-sidebar__scrollwrap">
328
+ <div class="md-sidebar__inner">
329
+
330
+
331
+
332
+
333
+
334
+
335
+<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
336
+ <label class="md-nav__title" for="__drawer">
337
+ <a href="/." title="Navegador" class="md-nav__button md-logo" aria-label="Navegador" data-md-component="logo">
338
+
339
+ <img src="/assets/images/conflict-logo.svg" alt="logo">
340
+
341
+ </a>
342
+ Navegador
343
+ </label>
344
+
345
+ <div class="md-nav__source">
346
+ <a href="https://github.com/ConflictHQ/navegador" title="Go to repository" class="md-source" data-md-component="source">
347
+ <div class="md-source__icon md-icon">
348
+
349
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 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 2025 Fonticons, Inc.--><path d="M173.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.9M252.8 8C114.1 8 8 113.3 8 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.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.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>
350
+ </div>
351
+ <div class="md-source__repository">
352
+ ConflictHQ/navegador
353
+ </div>
354
+</a>
355
+ </div>
356
+
357
+ <ul class="md-nav__list" data-md-scrollfix>
358
+
359
+
360
+
361
+
362
+
363
+
364
+
365
+ <li class="md-nav__item">
366
+ <a href="/." class="md-nav__link">
367
+
368
+
369
+
370
+ <span class="md-ellipsis">
371
+
372
+
373
+ Home
374
+
375
+
376
+
377
+ </span>
378
+
379
+
380
+
381
+ </a>
382
+ </li>
383
+
384
+
385
+
386
+
387
+
388
+
389
+
390
+
391
+
392
+
393
+
394
+
395
+
396
+
397
+
398
+
399
+
400
+
401
+
402
+ <li class="md-nav__item md-nav__item--nested">
403
+
404
+
405
+
406
+
407
+
408
+ <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2" >
409
+
410
+
411
+ <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
412
+
413
+
414
+
415
+ <span class="md-ellipsis">
416
+
417
+
418
+ Getting Started
419
+
420
+
421
+
422
+ </span>
423
+
424
+
425
+
426
+ <span class="md-nav__icon md-icon"></span>
427
+ </label>
428
+
429
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
430
+ <label class="md-nav__title" for="__nav_2">
431
+ <span class="md-nav__icon md-icon"></span>
432
+
433
+
434
+ Getting Started
435
+
436
+
437
+ </label>
438
+ <ul class="md-nav__list" data-md-scrollfix>
439
+
440
+
441
+
442
+
443
+
444
+
445
+
446
+ <li class="md-nav__item">
447
+ <a href="/getting-started/installation/" class="md-nav__link">
448
+
449
+
450
+
451
+ <span class="md-ellipsis">
452
+
453
+
454
+ Installation
455
+
456
+
457
+
458
+ </span>
459
+
460
+
461
+
462
+ </a>
463
+ </li>
464
+
465
+
466
+
467
+
468
+
469
+
470
+
471
+
472
+
473
+
474
+ <li class="md-nav__item">
475
+ <a href="/getting-started/quickstart/" class="md-nav__link">
476
+
477
+
478
+
479
+ <span class="md-ellipsis">
480
+
481
+
482
+ Quick Start
483
+
484
+
485
+
486
+ </span>
487
+
488
+
489
+
490
+ </a>
491
+ </li>
492
+
493
+
494
+
495
+
496
+
497
+
498
+
499
+
500
+
501
+
502
+ <li class="md-nav__item">
503
+ <a href="/getting-started/configuration/" class="md-nav__link">
504
+
505
+
506
+
507
+ <span class="md-ellipsis">
508
+
509
+
510
+ Configuration
511
+
512
+
513
+
514
+ </span>
515
+
516
+
517
+
518
+ </a>
519
+ </li>
520
+
521
+
522
+
523
+
524
+ </ul>
525
+ </nav>
526
+
527
+ </li>
528
+
529
+
530
+
531
+
532
+
533
+
534
+
535
+
536
+
537
+
538
+
539
+
540
+
541
+
542
+
543
+
544
+
545
+
546
+
547
+ <li class="md-nav__item md-nav__item--nested">
548
+
549
+
550
+
551
+
552
+
553
+ <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3" >
554
+
555
+
556
+ <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
557
+
558
+
559
+
560
+ <span class="md-ellipsis">
561
+
562
+
563
+ Guide
564
+
565
+
566
+
567
+ </span>
568
+
569
+
570
+
571
+ <span class="md-nav__icon md-icon"></span>
572
+ </label>
573
+
574
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
575
+ <label class="md-nav__title" for="__nav_3">
576
+ <span class="md-nav__icon md-icon"></span>
577
+
578
+
579
+ Guide
580
+
581
+
582
+ </label>
583
+ <ul class="md-nav__list" data-md-scrollfix>
584
+
585
+
586
+
587
+
588
+
589
+
590
+
591
+ <li class="md-nav__item">
592
+ <a href="/guide/ingestion/" class="md-nav__link">
593
+
594
+
595
+
596
+ <span class="md-ellipsis">
597
+
598
+
599
+ Ingesting a Repo
600
+
601
+
602
+
603
+ </span>
604
+
605
+
606
+
607
+ </a>
608
+ </li>
609
+
610
+
611
+
612
+
613
+
614
+
615
+
616
+
617
+
618
+
619
+ <li class="md-nav__item">
620
+ <a href="/guide/context-loading/" class="md-nav__link">
621
+
622
+
623
+
624
+ <span class="md-ellipsis">
625
+
626
+
627
+ Loading Context
628
+
629
+
630
+
631
+ </span>
632
+
633
+
634
+
635
+ </a>
636
+ </li>
637
+
638
+
639
+
640
+
641
+
642
+
643
+
644
+
645
+
646
+
647
+ <li class="md-nav__item">
648
+ <a href="/guide/framework-enrichment/" class="md-nav__link">
649
+
650
+
651
+
652
+ <span class="md-ellipsis">
653
+
654
+
655
+ Framework Enrichment
656
+
657
+
658
+
659
+ </span>
660
+
661
+
662
+
663
+ </a>
664
+ </li>
665
+
666
+
667
+
668
+
669
+
670
+
671
+
672
+
673
+
674
+
675
+ <li class="md-nav__item">
676
+ <a href="/guide/analysis/" class="md-nav__link">
677
+
678
+
679
+
680
+ <span class="md-ellipsis">
681
+
682
+
683
+ Structural Analysis
684
+
685
+
686
+
687
+ </span>
688
+
689
+
690
+
691
+ </a>
692
+ </li>
693
+
694
+
695
+
696
+
697
+
698
+
699
+
700
+
701
+
702
+
703
+ <li class="md-nav__item">
704
+ <a href="/guide/intelligence/" class="md-nav__link">
705
+
706
+
707
+
708
+ <span class="md-ellipsis">
709
+
710
+
711
+ Intelligence Layer
712
+
713
+
714
+
715
+ </span>
716
+
717
+
718
+
719
+ </a>
720
+ </li>
721
+
722
+
723
+
724
+
725
+
726
+
727
+
728
+
729
+
730
+
731
+ <li class="md-nav__item">
732
+ <a href="/guide/sdk/" class="md-nav__link">
733
+
734
+
735
+
736
+ <span class="md-ellipsis">
737
+
738
+
739
+ Python SDK
740
+
741
+
742
+
743
+ </span>
744
+
745
+
746
+
747
+ </a>
748
+ </li>
749
+
750
+
751
+
752
+
753
+
754
+
755
+
756
+
757
+
758
+
759
+ <li class="md-nav__item">
760
+ <a href="/guide/graph-queries/" class="md-nav__link">
761
+
762
+
763
+
764
+ <span class="md-ellipsis">
765
+
766
+
767
+ Graph Queries
768
+
769
+
770
+
771
+ </span>
772
+
773
+
774
+
775
+ </a>
776
+ </li>
777
+
778
+
779
+
780
+
781
+
782
+
783
+
784
+
785
+
786
+
787
+ <li class="md-nav__item">
788
+ <a href="/guide/mcp-integration/" class="md-nav__link">
789
+
790
+
791
+
792
+ <span class="md-ellipsis">
793
+
794
+
795
+ MCP Integration
796
+
797
+
798
+
799
+ </span>
800
+
801
+
802
+
803
+ </a>
804
+ </li>
805
+
806
+
807
+
808
+
809
+
810
+
811
+
812
+
813
+
814
+
815
+ <li class="md-nav__item">
816
+ <a href="/guide/ci-cd/" class="md-nav__link">
817
+
818
+
819
+
820
+ <span class="md-ellipsis">
821
+
822
+
823
+ CI/CD
824
+
825
+
826
+
827
+ </span>
828
+
829
+
830
+
831
+ </a>
832
+ </li>
833
+
834
+
835
+
836
+
837
+
838
+
839
+
840
+
841
+
842
+
843
+ <li class="md-nav__item">
844
+ <a href="/guide/cluster/" class="md-nav__link">
845
+
846
+
847
+
848
+ <span class="md-ellipsis">
849
+
850
+
851
+ Cluster Mode
852
+
853
+
854
+
855
+ </span>
856
+
857
+
858
+
859
+ </a>
860
+ </li>
861
+
862
+
863
+
864
+
865
+
866
+
867
+
868
+
869
+
870
+
871
+ <li class="md-nav__item">
872
+ <a href="/guide/agent-hooks/" class="md-nav__link">
873
+
874
+
875
+
876
+ <span class="md-ellipsis">
877
+
878
+
879
+ Agent Hooks
880
+
881
+
882
+
883
+ </span>
884
+
885
+
886
+
887
+ </a>
888
+ </li>
889
+
890
+
891
+
892
+
893
+
894
+
895
+
896
+
897
+
898
+
899
+ <li class="md-nav__item">
900
+ <a href="/guide/planopticon/" class="md-nav__link">
901
+
902
+
903
+
904
+ <span class="md-ellipsis">
905
+
906
+
907
+ Planopticon
908
+
909
+
910
+
911
+ </span>
912
+
913
+
914
+
915
+ </a>
916
+ </li>
917
+
918
+
919
+
920
+
921
+ </ul>
922
+ </nav>
923
+
924
+ </li>
925
+
926
+
927
+
928
+
929
+
930
+
931
+
932
+
933
+
934
+
935
+
936
+
937
+
938
+
939
+
940
+
941
+
942
+
943
+
944
+ <li class="md-nav__item md-nav__item--nested">
945
+
946
+
947
+
948
+
949
+
950
+ <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_4" >
951
+
952
+
953
+ <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
954
+
955
+
956
+
957
+ <span class="md-ellipsis">
958
+
959
+
960
+ Architecture
961
+
962
+
963
+
964
+ </span>
965
+
966
+
967
+
968
+ <span class="md-nav__icon md-icon"></span>
969
+ </label>
970
+
971
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
972
+ <label class="md-nav__title" for="__nav_4">
973
+ <span class="md-nav__icon md-icon"></span>
974
+
975
+
976
+ Architecture
977
+
978
+
979
+ </label>
980
+ <ul class="md-nav__list" data-md-scrollfix>
981
+
982
+
983
+
984
+
985
+
986
+
987
+
988
+ <li class="md-nav__item">
989
+ <a href="/architecture/overview/" class="md-nav__link">
990
+
991
+
992
+
993
+ <span class="md-ellipsis">
994
+
995
+
996
+ Overview
997
+
998
+
999
+
1000
+ </span>
1001
+
1002
+
1003
+
1004
+ </a>
1005
+ </li>
1006
+
1007
+
1008
+
1009
+
1010
+
1011
+
1012
+
1013
+
1014
+
1015
+
1016
+ <li class="md-nav__item">
1017
+ <a href="/architecture/graph-schema/" class="md-nav__link">
1018
+
1019
+
1020
+
1021
+ <span class="md-ellipsis">
1022
+
1023
+
1024
+ Graph Schema
1025
+
1026
+
1027
+
1028
+ </span>
1029
+
1030
+
1031
+
1032
+ </a>
1033
+ </li>
1034
+
1035
+
1036
+
1037
+
1038
+ </ul>
1039
+ </nav>
1040
+
1041
+ </li>
1042
+
1043
+
1044
+
1045
+
1046
+
1047
+
1048
+
1049
+
1050
+
1051
+
1052
+
1053
+
1054
+
1055
+
1056
+
1057
+
1058
+
1059
+
1060
+
1061
+ <li class="md-nav__item md-nav__item--nested">
1062
+
1063
+
1064
+
1065
+
1066
+
1067
+ <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_5" >
1068
+
1069
+
1070
+ <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
1071
+
1072
+
1073
+
1074
+ <span class="md-ellipsis">
1075
+
1076
+
1077
+ API Reference
1078
+
1079
+
1080
+
1081
+ </span>
1082
+
1083
+
1084
+
1085
+ <span class="md-nav__icon md-icon"></span>
1086
+ </label>
1087
+
1088
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
1089
+ <label class="md-nav__title" for="__nav_5">
1090
+ <span class="md-nav__icon md-icon"></span>
1091
+
1092
+
1093
+ API Reference
1094
+
1095
+
1096
+ </label>
1097
+ <ul class="md-nav__list" data-md-scrollfix>
1098
+
1099
+
1100
+
1101
+
1102
+
1103
+
1104
+
1105
+ <li class="md-nav__item">
1106
+ <a href="/api/sdk/" class="md-nav__link">
1107
+
1108
+
1109
+
1110
+ <span class="md-ellipsis">
1111
+
1112
+
1113
+ Python SDK
1114
+
1115
+
1116
+
1117
+ </span>
1118
+
1119
+
1120
+
1121
+ </a>
1122
+ </li>
1123
+
1124
+
1125
+
1126
+
1127
+
1128
+
1129
+
1130
+
1131
+
1132
+
1133
+ <li class="md-nav__item">
1134
+ <a href="/api/ingestion/" class="md-nav__link">
1135
+
1136
+
1137
+
1138
+ <span class="md-ellipsis">
1139
+
1140
+
1141
+ Ingestion
1142
+
1143
+
1144
+
1145
+ </span>
1146
+
1147
+
1148
+
1149
+ </a>
1150
+ </li>
1151
+
1152
+
1153
+
1154
+
1155
+
1156
+
1157
+
1158
+
1159
+
1160
+
1161
+ <li class="md-nav__item">
1162
+ <a href="/api/analysis/" class="md-nav__link">
1163
+
1164
+
1165
+
1166
+ <span class="md-ellipsis">
1167
+
1168
+
1169
+ Analysis
1170
+
1171
+
1172
+
1173
+ </span>
1174
+
1175
+
1176
+
1177
+ </a>
1178
+ </li>
1179
+
1180
+
1181
+
1182
+
1183
+
1184
+
1185
+
1186
+
1187
+
1188
+
1189
+ <li class="md-nav__item">
1190
+ <a href="/api/graph/" class="md-nav__link">
1191
+
1192
+
1193
+
1194
+ <span class="md-ellipsis">
1195
+
1196
+
1197
+ Graph
1198
+
1199
+
1200
+
1201
+ </span>
1202
+
1203
+
1204
+
1205
+ </a>
1206
+ </li>
1207
+
1208
+
1209
+
1210
+
1211
+
1212
+
1213
+
1214
+
1215
+
1216
+
1217
+ <li class="md-nav__item">
1218
+ <a href="/api/mcp/" class="md-nav__link">
1219
+
1220
+
1221
+
1222
+ <span class="md-ellipsis">
1223
+
1224
+
1225
+ MCP Server
1226
+
1227
+
1228
+
1229
+ </span>
1230
+
1231
+
1232
+
1233
+ </a>
1234
+ </li>
1235
+
1236
+
1237
+
1238
+
1239
+ </ul>
1240
+ </nav>
1241
+
1242
+ </li>
1243
+
1244
+
1245
+
1246
+ </ul>
1247
+</nav>
1248
+ </div>
1249
+ </div>
1250
+ </div>
1251
+
1252
+
1253
+
1254
+ <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
1255
+ <div class="md-sidebar__scrollwrap">
1256
+ <div class="md-sidebar__inner">
1257
+
1258
+
1259
+<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
1260
+
1261
+
1262
+
1263
+
1264
+</nav>
1265
+ </div>
1266
+ </div>
1267
+ </div>
1268
+
1269
+
1270
+
1271
+ <div class="md-content" data-md-component="content">
1272
+
1273
+ <article class="md-content__inner md-typeset">
1274
+
1275
+ <h1>404 - Not found</h1>
1276
+
1277
+ </article>
1278
+ </div>
1279
+
1280
+
1281
+ <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>
1282
+
1283
+<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
1284
+ </div>
1285
+
1286
+ <button type="button" class="md-top md-icon" data-md-component="top" hidden>
1287
+
1288
+ <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>
1289
+ Back to top
1290
+</button>
1291
+
1292
+ </main>
1293
+
1294
+ <footer class="md-footer">
1295
+
1296
+ <div class="md-footer-meta md-typeset">
1297
+ <div class="md-footer-meta__inner md-grid">
1298
+ <div class="md-copyright">
1299
+
1300
+ <div class="md-copyright__highlight">
1301
+ Copyright &copy; 2026 CONFLICT LLC
1302
+ </div>
1303
+
1304
+
1305
+ Made with
1306
+ <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
1307
+ Material for MkDocs
1308
+ </a>
1309
+
1310
+</div>
1311
+
1312
+
1313
+<div class="md-social">
1314
+
1315
+
1316
+
1317
+
1318
+
1319
+
1320
+
1321
+
1322
+ <a href="https://github.com/ConflictHQ/navegador" target="_blank" rel="noopener" title="github.com" class="md-social__link">
1323
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 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 2025 Fonticons, Inc.--><path d="M173.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.9M252.8 8C114.1 8 8 113.3 8 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.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.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>
1324
+ </a>
1325
+
1326
+</div>
1327
+
1328
+ </div>
1329
+ </div>
1330
+</footer>
1331
+
1332
+ </div>
1333
+ <div class="md-dialog" data-md-component="dialog">
1334
+ <div class="md-dialog__inner md-typeset"></div>
1335
+ </div>
1336
+
1337
+
1338
+
1339
+
1340
+
1341
+ <script id="__config" type="application/json">{"annotate": null, "base": "/", "features": ["navigation.instant", "navigation.tabs", "navigation.sections", "navigation.expand", "navigation.top", "search.suggest", "search.highlight", "content.code.copy", "content.tabs.link", "header.autohide"], "search": "/assets/javascripts/workers/search.2c215733.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>
1342
+
1343
+
1344
+ <script src="/assets/javascripts/bundle.79ae519e.min.js"></script>
1345
+
1346
+
1347
+ </body>
1348
+</html>
--- a/404.html
+++ b/404.html
@@ -0,0 +1,1348 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/404.html
+++ b/404.html
@@ -0,0 +1,1348 @@
1
2 <!doctype html>
3 <html lang="en" class="no-js">
4 <head>
5
6 <meta charset="utf-8">
7 <meta name="viewport" content="width=device-width,initial-scale=1">
8
9 <meta name="description" content="Project knowledge graph for AI coding agents — code structure, business rules, and architectural decisions in one queryable graph">
10
11
12 <meta name="author" content="CONFLICT LLC">
13
14
15
16
17
18
19
20
21 <link rel="icon" href="/assets/images/favicon.png">
22 <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.6">
23
24
25
26 <title>Navegador</title>
27
28
29
30 <link rel="stylesheet" href="/assets/stylesheets/main.484c7ddc.min.css">
31
32
33 <link rel="stylesheet" href="/assets/stylesheets/palette.ab4e12ef.min.css">
34
35
36
37
38
39
40
41
42
43
44
45
46 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
47 <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">
48 <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
49
50
51
52 <link rel="stylesheet" href="/assets/_mkdocstrings.css">
53
54 <link rel="stylesheet" href="/assets/css/custom.css">
55
56 <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>
57
58
59
60
61
62 </head>
63
64
65
66
67
68
69
70
71
72 <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="custom" data-md-color-accent="custom">
73
74
75 <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
76 <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
77 <label class="md-overlay" for="__drawer"></label>
78 <div data-md-component="skip">
79
80 </div>
81 <div data-md-component="announce">
82
83 </div>
84
85
86
87
88 <header class="md-header" data-md-component="header">
89 <nav class="md-header__inner md-grid" aria-label="Header">
90 <a href="/." title="Navegador" class="md-header__button md-logo" aria-label="Navegador" data-md-component="logo">
91
92 <img src="/assets/images/conflict-logo.svg" alt="logo">
93
94 </a>
95 <label class="md-header__button md-icon" for="__drawer">
96
97 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
98 </label>
99 <div class="md-header__title" data-md-component="header-title">
100 <div class="md-header__ellipsis">
101 <div class="md-header__topic">
102 <span class="md-ellipsis">
103 Navegador
104 </span>
105 </div>
106 <div class="md-header__topic" data-md-component="header-topic">
107 <span class="md-ellipsis">
108
109
110
111 </span>
112 </div>
113 </div>
114 </div>
115
116
117 <form class="md-header__option" data-md-component="palette">
118
119
120
121
122 <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_0">
123
124 <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
125 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
126 </label>
127
128
129
130
131
132 <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">
133
134 <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_0" hidden>
135 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
136 </label>
137
138
139 </form>
140
141
142
143 <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>
144
145
146
147
148
149 <label class="md-header__button md-icon" for="__search">
150
151 <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>
152 </label>
153 <div class="md-search" data-md-component="search" role="dialog">
154 <label class="md-search__overlay" for="__search"></label>
155 <div class="md-search__inner" role="search">
156 <form class="md-search__form" name="search">
157 <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>
158 <label class="md-search__icon md-icon" for="__search">
159
160 <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>
161
162 <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>
163 </label>
164 <nav class="md-search__options" aria-label="Search">
165
166 <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
167
168 <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>
169 </button>
170 </nav>
171
172 <div class="md-search__suggest" data-md-component="search-suggest"></div>
173
174 </form>
175 <div class="md-search__output">
176 <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
177 <div class="md-search-result" data-md-component="search-result">
178 <div class="md-search-result__meta">
179 Initializing search
180 </div>
181 <ol class="md-search-result__list" role="presentation"></ol>
182 </div>
183 </div>
184 </div>
185 </div>
186 </div>
187
188
189
190 <div class="md-header__source">
191 <a href="https://github.com/ConflictHQ/navegador" title="Go to repository" class="md-source" data-md-component="source">
192 <div class="md-source__icon md-icon">
193
194 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 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 2025 Fonticons, Inc.--><path d="M173.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.9M252.8 8C114.1 8 8 113.3 8 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.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.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>
195 </div>
196 <div class="md-source__repository">
197 ConflictHQ/navegador
198 </div>
199 </a>
200 </div>
201
202 </nav>
203
204 </header>
205
206 <div class="md-container" data-md-component="container">
207
208
209
210
211
212 <nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
213 <div class="md-grid">
214 <ul class="md-tabs__list">
215
216
217
218
219
220
221 <li class="md-tabs__item">
222 <a href="/." class="md-tabs__link">
223
224
225
226
227
228 Home
229
230 </a>
231 </li>
232
233
234
235
236
237
238
239
240
241
242 <li class="md-tabs__item">
243 <a href="/getting-started/installation/" class="md-tabs__link">
244
245
246
247 Getting Started
248
249 </a>
250 </li>
251
252
253
254
255
256
257
258
259
260
261
262 <li class="md-tabs__item">
263 <a href="/guide/ingestion/" class="md-tabs__link">
264
265
266
267 Guide
268
269 </a>
270 </li>
271
272
273
274
275
276
277
278
279
280
281
282 <li class="md-tabs__item">
283 <a href="/architecture/overview/" class="md-tabs__link">
284
285
286
287 Architecture
288
289 </a>
290 </li>
291
292
293
294
295
296
297
298
299
300
301
302 <li class="md-tabs__item">
303 <a href="/api/sdk/" class="md-tabs__link">
304
305
306
307 API Reference
308
309 </a>
310 </li>
311
312
313
314
315 </ul>
316 </div>
317 </nav>
318
319
320
321 <main class="md-main" data-md-component="main">
322 <div class="md-main__inner md-grid">
323
324
325
326 <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
327 <div class="md-sidebar__scrollwrap">
328 <div class="md-sidebar__inner">
329
330
331
332
333
334
335 <nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
336 <label class="md-nav__title" for="__drawer">
337 <a href="/." title="Navegador" class="md-nav__button md-logo" aria-label="Navegador" data-md-component="logo">
338
339 <img src="/assets/images/conflict-logo.svg" alt="logo">
340
341 </a>
342 Navegador
343 </label>
344
345 <div class="md-nav__source">
346 <a href="https://github.com/ConflictHQ/navegador" title="Go to repository" class="md-source" data-md-component="source">
347 <div class="md-source__icon md-icon">
348
349 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 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 2025 Fonticons, Inc.--><path d="M173.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.9M252.8 8C114.1 8 8 113.3 8 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.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.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>
350 </div>
351 <div class="md-source__repository">
352 ConflictHQ/navegador
353 </div>
354 </a>
355 </div>
356
357 <ul class="md-nav__list" data-md-scrollfix>
358
359
360
361
362
363
364
365 <li class="md-nav__item">
366 <a href="/." class="md-nav__link">
367
368
369
370 <span class="md-ellipsis">
371
372
373 Home
374
375
376
377 </span>
378
379
380
381 </a>
382 </li>
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402 <li class="md-nav__item md-nav__item--nested">
403
404
405
406
407
408 <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2" >
409
410
411 <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
412
413
414
415 <span class="md-ellipsis">
416
417
418 Getting Started
419
420
421
422 </span>
423
424
425
426 <span class="md-nav__icon md-icon"></span>
427 </label>
428
429 <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
430 <label class="md-nav__title" for="__nav_2">
431 <span class="md-nav__icon md-icon"></span>
432
433
434 Getting Started
435
436
437 </label>
438 <ul class="md-nav__list" data-md-scrollfix>
439
440
441
442
443
444
445
446 <li class="md-nav__item">
447 <a href="/getting-started/installation/" class="md-nav__link">
448
449
450
451 <span class="md-ellipsis">
452
453
454 Installation
455
456
457
458 </span>
459
460
461
462 </a>
463 </li>
464
465
466
467
468
469
470
471
472
473
474 <li class="md-nav__item">
475 <a href="/getting-started/quickstart/" class="md-nav__link">
476
477
478
479 <span class="md-ellipsis">
480
481
482 Quick Start
483
484
485
486 </span>
487
488
489
490 </a>
491 </li>
492
493
494
495
496
497
498
499
500
501
502 <li class="md-nav__item">
503 <a href="/getting-started/configuration/" class="md-nav__link">
504
505
506
507 <span class="md-ellipsis">
508
509
510 Configuration
511
512
513
514 </span>
515
516
517
518 </a>
519 </li>
520
521
522
523
524 </ul>
525 </nav>
526
527 </li>
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547 <li class="md-nav__item md-nav__item--nested">
548
549
550
551
552
553 <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3" >
554
555
556 <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
557
558
559
560 <span class="md-ellipsis">
561
562
563 Guide
564
565
566
567 </span>
568
569
570
571 <span class="md-nav__icon md-icon"></span>
572 </label>
573
574 <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
575 <label class="md-nav__title" for="__nav_3">
576 <span class="md-nav__icon md-icon"></span>
577
578
579 Guide
580
581
582 </label>
583 <ul class="md-nav__list" data-md-scrollfix>
584
585
586
587
588
589
590
591 <li class="md-nav__item">
592 <a href="/guide/ingestion/" class="md-nav__link">
593
594
595
596 <span class="md-ellipsis">
597
598
599 Ingesting a Repo
600
601
602
603 </span>
604
605
606
607 </a>
608 </li>
609
610
611
612
613
614
615
616
617
618
619 <li class="md-nav__item">
620 <a href="/guide/context-loading/" class="md-nav__link">
621
622
623
624 <span class="md-ellipsis">
625
626
627 Loading Context
628
629
630
631 </span>
632
633
634
635 </a>
636 </li>
637
638
639
640
641
642
643
644
645
646
647 <li class="md-nav__item">
648 <a href="/guide/framework-enrichment/" class="md-nav__link">
649
650
651
652 <span class="md-ellipsis">
653
654
655 Framework Enrichment
656
657
658
659 </span>
660
661
662
663 </a>
664 </li>
665
666
667
668
669
670
671
672
673
674
675 <li class="md-nav__item">
676 <a href="/guide/analysis/" class="md-nav__link">
677
678
679
680 <span class="md-ellipsis">
681
682
683 Structural Analysis
684
685
686
687 </span>
688
689
690
691 </a>
692 </li>
693
694
695
696
697
698
699
700
701
702
703 <li class="md-nav__item">
704 <a href="/guide/intelligence/" class="md-nav__link">
705
706
707
708 <span class="md-ellipsis">
709
710
711 Intelligence Layer
712
713
714
715 </span>
716
717
718
719 </a>
720 </li>
721
722
723
724
725
726
727
728
729
730
731 <li class="md-nav__item">
732 <a href="/guide/sdk/" class="md-nav__link">
733
734
735
736 <span class="md-ellipsis">
737
738
739 Python SDK
740
741
742
743 </span>
744
745
746
747 </a>
748 </li>
749
750
751
752
753
754
755
756
757
758
759 <li class="md-nav__item">
760 <a href="/guide/graph-queries/" class="md-nav__link">
761
762
763
764 <span class="md-ellipsis">
765
766
767 Graph Queries
768
769
770
771 </span>
772
773
774
775 </a>
776 </li>
777
778
779
780
781
782
783
784
785
786
787 <li class="md-nav__item">
788 <a href="/guide/mcp-integration/" class="md-nav__link">
789
790
791
792 <span class="md-ellipsis">
793
794
795 MCP Integration
796
797
798
799 </span>
800
801
802
803 </a>
804 </li>
805
806
807
808
809
810
811
812
813
814
815 <li class="md-nav__item">
816 <a href="/guide/ci-cd/" class="md-nav__link">
817
818
819
820 <span class="md-ellipsis">
821
822
823 CI/CD
824
825
826
827 </span>
828
829
830
831 </a>
832 </li>
833
834
835
836
837
838
839
840
841
842
843 <li class="md-nav__item">
844 <a href="/guide/cluster/" class="md-nav__link">
845
846
847
848 <span class="md-ellipsis">
849
850
851 Cluster Mode
852
853
854
855 </span>
856
857
858
859 </a>
860 </li>
861
862
863
864
865
866
867
868
869
870
871 <li class="md-nav__item">
872 <a href="/guide/agent-hooks/" class="md-nav__link">
873
874
875
876 <span class="md-ellipsis">
877
878
879 Agent Hooks
880
881
882
883 </span>
884
885
886
887 </a>
888 </li>
889
890
891
892
893
894
895
896
897
898
899 <li class="md-nav__item">
900 <a href="/guide/planopticon/" class="md-nav__link">
901
902
903
904 <span class="md-ellipsis">
905
906
907 Planopticon
908
909
910
911 </span>
912
913
914
915 </a>
916 </li>
917
918
919
920
921 </ul>
922 </nav>
923
924 </li>
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944 <li class="md-nav__item md-nav__item--nested">
945
946
947
948
949
950 <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_4" >
951
952
953 <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
954
955
956
957 <span class="md-ellipsis">
958
959
960 Architecture
961
962
963
964 </span>
965
966
967
968 <span class="md-nav__icon md-icon"></span>
969 </label>
970
971 <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
972 <label class="md-nav__title" for="__nav_4">
973 <span class="md-nav__icon md-icon"></span>
974
975
976 Architecture
977
978
979 </label>
980 <ul class="md-nav__list" data-md-scrollfix>
981
982
983
984
985
986
987
988 <li class="md-nav__item">
989 <a href="/architecture/overview/" class="md-nav__link">
990
991
992
993 <span class="md-ellipsis">
994
995
996 Overview
997
998
999
1000 </span>
1001
1002
1003
1004 </a>
1005 </li>
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016 <li class="md-nav__item">
1017 <a href="/architecture/graph-schema/" class="md-nav__link">
1018
1019
1020
1021 <span class="md-ellipsis">
1022
1023
1024 Graph Schema
1025
1026
1027
1028 </span>
1029
1030
1031
1032 </a>
1033 </li>
1034
1035
1036
1037
1038 </ul>
1039 </nav>
1040
1041 </li>
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061 <li class="md-nav__item md-nav__item--nested">
1062
1063
1064
1065
1066
1067 <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_5" >
1068
1069
1070 <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
1071
1072
1073
1074 <span class="md-ellipsis">
1075
1076
1077 API Reference
1078
1079
1080
1081 </span>
1082
1083
1084
1085 <span class="md-nav__icon md-icon"></span>
1086 </label>
1087
1088 <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
1089 <label class="md-nav__title" for="__nav_5">
1090 <span class="md-nav__icon md-icon"></span>
1091
1092
1093 API Reference
1094
1095
1096 </label>
1097 <ul class="md-nav__list" data-md-scrollfix>
1098
1099
1100
1101
1102
1103
1104
1105 <li class="md-nav__item">
1106 <a href="/api/sdk/" class="md-nav__link">
1107
1108
1109
1110 <span class="md-ellipsis">
1111
1112
1113 Python SDK
1114
1115
1116
1117 </span>
1118
1119
1120
1121 </a>
1122 </li>
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133 <li class="md-nav__item">
1134 <a href="/api/ingestion/" class="md-nav__link">
1135
1136
1137
1138 <span class="md-ellipsis">
1139
1140
1141 Ingestion
1142
1143
1144
1145 </span>
1146
1147
1148
1149 </a>
1150 </li>
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161 <li class="md-nav__item">
1162 <a href="/api/analysis/" class="md-nav__link">
1163
1164
1165
1166 <span class="md-ellipsis">
1167
1168
1169 Analysis
1170
1171
1172
1173 </span>
1174
1175
1176
1177 </a>
1178 </li>
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189 <li class="md-nav__item">
1190 <a href="/api/graph/" class="md-nav__link">
1191
1192
1193
1194 <span class="md-ellipsis">
1195
1196
1197 Graph
1198
1199
1200
1201 </span>
1202
1203
1204
1205 </a>
1206 </li>
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217 <li class="md-nav__item">
1218 <a href="/api/mcp/" class="md-nav__link">
1219
1220
1221
1222 <span class="md-ellipsis">
1223
1224
1225 MCP Server
1226
1227
1228
1229 </span>
1230
1231
1232
1233 </a>
1234 </li>
1235
1236
1237
1238
1239 </ul>
1240 </nav>
1241
1242 </li>
1243
1244
1245
1246 </ul>
1247 </nav>
1248 </div>
1249 </div>
1250 </div>
1251
1252
1253
1254 <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
1255 <div class="md-sidebar__scrollwrap">
1256 <div class="md-sidebar__inner">
1257
1258
1259 <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
1260
1261
1262
1263
1264 </nav>
1265 </div>
1266 </div>
1267 </div>
1268
1269
1270
1271 <div class="md-content" data-md-component="content">
1272
1273 <article class="md-content__inner md-typeset">
1274
1275 <h1>404 - Not found</h1>
1276
1277 </article>
1278 </div>
1279
1280
1281 <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>
1282
1283 <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
1284 </div>
1285
1286 <button type="button" class="md-top md-icon" data-md-component="top" hidden>
1287
1288 <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>
1289 Back to top
1290 </button>
1291
1292 </main>
1293
1294 <footer class="md-footer">
1295
1296 <div class="md-footer-meta md-typeset">
1297 <div class="md-footer-meta__inner md-grid">
1298 <div class="md-copyright">
1299
1300 <div class="md-copyright__highlight">
1301 Copyright &copy; 2026 CONFLICT LLC
1302 </div>
1303
1304
1305 Made with
1306 <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
1307 Material for MkDocs
1308 </a>
1309
1310 </div>
1311
1312
1313 <div class="md-social">
1314
1315
1316
1317
1318
1319
1320
1321
1322 <a href="https://github.com/ConflictHQ/navegador" target="_blank" rel="noopener" title="github.com" class="md-social__link">
1323 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 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 2025 Fonticons, Inc.--><path d="M173.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.9M252.8 8C114.1 8 8 113.3 8 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.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.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>
1324 </a>
1325
1326 </div>
1327
1328 </div>
1329 </div>
1330 </footer>
1331
1332 </div>
1333 <div class="md-dialog" data-md-component="dialog">
1334 <div class="md-dialog__inner md-typeset"></div>
1335 </div>
1336
1337
1338
1339
1340
1341 <script id="__config" type="application/json">{"annotate": null, "base": "/", "features": ["navigation.instant", "navigation.tabs", "navigation.sections", "navigation.expand", "navigation.top", "search.suggest", "search.highlight", "content.code.copy", "content.tabs.link", "header.autohide"], "search": "/assets/javascripts/workers/search.2c215733.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>
1342
1343
1344 <script src="/assets/javascripts/bundle.79ae519e.min.js"></script>
1345
1346
1347 </body>
1348 </html>
A CNAME
+1
--- a/CNAME
+++ b/CNAME
@@ -0,0 +1 @@
1
+navegador.dev
--- a/CNAME
+++ b/CNAME
@@ -0,0 +1 @@
 
--- a/CNAME
+++ b/CNAME
@@ -0,0 +1 @@
1 navegador.dev
--- a/api/analysis/index.html
+++ b/api/analysis/index.html
@@ -0,0 +1,2417 @@
1
+
2
+<!doctype html>
3
+<html lang="en" class="no-js">
4
+ <head>
5
+
6
+ <meta charset="utf-8">
7
+ <meta name="viewport" content="width=device-width,initial-scale=1">
8
+
9
+ <meta name="description" content="Project knowledge graph for AI coding agents — code structure, business rules, and architectural decisions in one queryable graph">
10
+
11
+
12
+ <meta name="author" content="CONFLICT LLC">
13
+
14
+
15
+ <link rel="canonical" href="https://navegador.dev/api/analysis/">
16
+
17
+
18
+ <link rel="prev" href="../ingestion/">
19
+
20
+
21
+ <link rel="next" href="../graph/">
22
+
23
+
24
+
25
+
26
+
27
+ <link rel="icon" href="../../assets/images/favicon.png">
28
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.6">
29
+
30
+
31
+
32
+ <title>Analysis - Navegador</title>
33
+
34
+
35
+
36
+ <link rel="stylesheet" href="../../assets/stylesheets/main.484c7ddc.min.css">
37
+
38
+
39
+ <link rel="stylesheet" href="../../assets/stylesheets/palette.ab4e12ef.min.css">
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
53
+ <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">
54
+ <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
55
+
56
+
57
+
58
+ <link rel="stylesheet" href="../../assets/_mkdocstrings.css">
59
+
60
+ <link rel="stylesheet" href="../../assets/css/custom.css">
61
+
62
+ <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>
63
+
64
+
65
+
66
+
67
+
68
+ </head>
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+ <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="custom" data-md-color-accent="custom">
79
+
80
+
81
+ <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
82
+ <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
83
+ <label class="md-overlay" for="__drawer"></label>
84
+ <div data-md-component="skip">
85
+
86
+
87
+ <a href="#analysis-api-reference" class="md-skip">
88
+ Skip to content
89
+ </a>
90
+
91
+ </div>
92
+ <div data-md-component="announce">
93
+
94
+ </div>
95
+
96
+
97
+
98
+
99
+<header class="md-header" data-md-component="header">
100
+ <nav class="md-header__inner md-grid" aria-label="Header">
101
+ <a href="../.." title="Navegador" class="md-header__button md-logo" aria-label="Navegador" data-md-component="logo">
102
+
103
+ <img src="../../assets/images/conflict-logo.svg" alt="logo">
104
+
105
+ </a>
106
+ <label class="md-header__button md-icon" for="__drawer">
107
+
108
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
109
+ </label>
110
+ <div class="md-header__title" data-md-component="header-title">
111
+ <div class="md-header__ellipsis">
112
+ <div class="md-header__topic">
113
+ <span class="md-ellipsis">
114
+ Navegador
115
+ </span>
116
+ </div>
117
+ <div class="md-header__topic" data-md-component="header-topic">
118
+ <span class="md-ellipsis">
119
+
120
+ Analysis
121
+
122
+ </span>
123
+ </div>
124
+ </div>
125
+ </div>
126
+
127
+
128
+ <form class="md-header__option" data-md-component="palette">
129
+
130
+
131
+
132
+
133
+ <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_0">
134
+
135
+ <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
136
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
137
+ </label>
138
+
139
+
140
+
141
+
142
+
143
+ <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">
144
+
145
+ <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_0" hidden>
146
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
147
+ </label>
148
+
149
+
150
+</form>
151
+
152
+
153
+
154
+ <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>
155
+
156
+
157
+
158
+
159
+
160
+ <label class="md-header__button md-icon" for="__search">
161
+
162
+ <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>
163
+ </label>
164
+ <div class="md-search" data-md-component="search" role="dialog">
165
+ <label class="md-search__overlay" for="__search"></label>
166
+ <div class="md-search__inner" role="search">
167
+ <form class="md-search__form" name="search">
168
+ <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>
169
+ <label class="md-search__icon md-icon" for="__search">
170
+
171
+ <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>
172
+
173
+ <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>
174
+ </label>
175
+ <nav class="md-search__options" aria-label="Search">
176
+
177
+ <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
178
+
179
+ <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>
180
+ </button>
181
+ </nav>
182
+
183
+ <div class="md-search__suggest" data-md-component="search-suggest"></div>
184
+
185
+ </form>
186
+ <div class="md-search__output">
187
+ <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
188
+ <div class="md-search-result" data-md-component="search-result">
189
+ <div class="md-search-result__meta">
190
+ Initializing search
191
+ </div>
192
+ <ol class="md-search-result__list" role="presentation"></ol>
193
+ </div>
194
+ </div>
195
+ </div>
196
+ </div>
197
+</div>
198
+
199
+
200
+
201
+ <div class="md-header__source">
202
+ <a href="https://github.com/ConflictHQ/navegador" title="Go to repository" class="md-source" data-md-component="source">
203
+ <div class="md-source__icon md-icon">
204
+
205
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 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 2025 Fonticons, Inc.--><path d="M173.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.9M252.8 8C114.1 8 8 113.3 8 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.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.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>
206
+ </div>
207
+ <div class="md-source__repository">
208
+ ConflictHQ/navegador
209
+ </div>
210
+</a>
211
+ </div>
212
+
213
+ </nav>
214
+
215
+</header>
216
+
217
+ <div class="md-container" data-md-component="container">
218
+
219
+
220
+
221
+
222
+
223
+<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
224
+ <div class="md-grid">
225
+ <ul class="md-tabs__list">
226
+
227
+
228
+
229
+
230
+
231
+
232
+ <li class="md-tabs__item">
233
+ <a href="../.." class="md-tabs__link">
234
+
235
+
236
+
237
+
238
+
239
+ Home
240
+
241
+ </a>
242
+ </li>
243
+
244
+
245
+
246
+
247
+
248
+
249
+
250
+
251
+
252
+
253
+ <li class="md-tabs__item">
254
+ <a href="../../getting-started/installation/" class="md-tabs__link">
255
+
256
+
257
+
258
+ Getting Started
259
+
260
+ </a>
261
+ </li>
262
+
263
+
264
+
265
+
266
+
267
+
268
+
269
+
270
+
271
+
272
+
273
+ <li class="md-tabs__item">
274
+ <a href="../../guide/ingestion/" class="md-tabs__link">
275
+
276
+
277
+
278
+ Guide
279
+
280
+ </a>
281
+ </li>
282
+
283
+
284
+
285
+
286
+
287
+
288
+
289
+
290
+
291
+
292
+
293
+ <li class="md-tabs__item">
294
+ <a href="../../architecture/overview/" class="md-tabs__link">
295
+
296
+
297
+
298
+ Architecture
299
+
300
+ </a>
301
+ </li>
302
+
303
+
304
+
305
+
306
+
307
+
308
+
309
+
310
+
311
+
312
+
313
+
314
+
315
+ <li class="md-tabs__item md-tabs__item--active">
316
+ <a href="../sdk/" class="md-tabs__link">
317
+
318
+
319
+
320
+ API Reference
321
+
322
+ </a>
323
+ </li>
324
+
325
+
326
+
327
+
328
+ </ul>
329
+ </div>
330
+</nav>
331
+
332
+
333
+
334
+ <main class="md-main" data-md-component="main">
335
+ <div class="md-main__inner md-grid">
336
+
337
+
338
+
339
+ <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
340
+ <div class="md-sidebar__scrollwrap">
341
+ <div class="md-sidebar__inner">
342
+
343
+
344
+
345
+
346
+
347
+
348
+<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
349
+ <label class="md-nav__title" for="__drawer">
350
+ <a href="../.." title="Navegador" class="md-nav__button md-logo" aria-label="Navegador" data-md-component="logo">
351
+
352
+ <img src="../../assets/images/conflict-logo.svg" alt="logo">
353
+
354
+ </a>
355
+ Navegador
356
+ </label>
357
+
358
+ <div class="md-nav__source">
359
+ <a href="https://github.com/ConflictHQ/navegador" title="Go to repository" class="md-source" data-md-component="source">
360
+ <div class="md-source__icon md-icon">
361
+
362
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 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 2025 Fonticons, Inc.--><path d="M173.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.9M252.8 8C114.1 8 8 113.3 8 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.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.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>
363
+ </div>
364
+ <div class="md-source__repository">
365
+ ConflictHQ/navegador
366
+ </div>
367
+</a>
368
+ </div>
369
+
370
+ <ul class="md-nav__list" data-md-scrollfix>
371
+
372
+
373
+
374
+
375
+
376
+
377
+
378
+ <li class="md-nav__item">
379
+ <a href="../.." class="md-nav__link">
380
+
381
+
382
+
383
+ <span class="md-ellipsis">
384
+
385
+
386
+ Home
387
+
388
+
389
+
390
+ </span>
391
+
392
+
393
+
394
+ </a>
395
+ </li>
396
+
397
+
398
+
399
+
400
+
401
+
402
+
403
+
404
+
405
+
406
+
407
+
408
+
409
+
410
+
411
+
412
+
413
+
414
+
415
+ <li class="md-nav__item md-nav__item--nested">
416
+
417
+
418
+
419
+
420
+
421
+ <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2" >
422
+
423
+
424
+ <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
425
+
426
+
427
+
428
+ <span class="md-ellipsis">
429
+
430
+
431
+ Getting Started
432
+
433
+
434
+
435
+ </span>
436
+
437
+
438
+
439
+ <span class="md-nav__icon md-icon"></span>
440
+ </label>
441
+
442
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
443
+ <label class="md-nav__title" for="__nav_2">
444
+ <span class="md-nav__icon md-icon"></span>
445
+
446
+
447
+ Getting Started
448
+
449
+
450
+ </label>
451
+ <ul class="md-nav__list" data-md-scrollfix>
452
+
453
+
454
+
455
+
456
+
457
+
458
+
459
+ <li class="md-nav__item">
460
+ <a href="../../getting-started/installation/" class="md-nav__link">
461
+
462
+
463
+
464
+ <span class="md-ellipsis">
465
+
466
+
467
+ Installation
468
+
469
+
470
+
471
+ </span>
472
+
473
+
474
+
475
+ </a>
476
+ </li>
477
+
478
+
479
+
480
+
481
+
482
+
483
+
484
+
485
+
486
+
487
+ <li class="md-nav__item">
488
+ <a href="../../getting-started/quickstart/" class="md-nav__link">
489
+
490
+
491
+
492
+ <span class="md-ellipsis">
493
+
494
+
495
+ Quick Start
496
+
497
+
498
+
499
+ </span>
500
+
501
+
502
+
503
+ </a>
504
+ </li>
505
+
506
+
507
+
508
+
509
+
510
+
511
+
512
+
513
+
514
+
515
+ <li class="md-nav__item">
516
+ <a href="../../getting-started/configuration/" class="md-nav__link">
517
+
518
+
519
+
520
+ <span class="md-ellipsis">
521
+
522
+
523
+ Configuration
524
+
525
+
526
+
527
+ </span>
528
+
529
+
530
+
531
+ </a>
532
+ </li>
533
+
534
+
535
+
536
+
537
+ </ul>
538
+ </nav>
539
+
540
+ </li>
541
+
542
+
543
+
544
+
545
+
546
+
547
+
548
+
549
+
550
+
551
+
552
+
553
+
554
+
555
+
556
+
557
+
558
+
559
+
560
+ <li class="md-nav__item md-nav__item--nested">
561
+
562
+
563
+
564
+
565
+
566
+ <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3" >
567
+
568
+
569
+ <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
570
+
571
+
572
+
573
+ <span class="md-ellipsis">
574
+
575
+
576
+ Guide
577
+
578
+
579
+
580
+ </span>
581
+
582
+
583
+
584
+ <span class="md-nav__icon md-icon"></span>
585
+ </label>
586
+
587
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
588
+ <label class="md-nav__title" for="__nav_3">
589
+ <span class="md-nav__icon md-icon"></span>
590
+
591
+
592
+ Guide
593
+
594
+
595
+ </label>
596
+ <ul class="md-nav__list" data-md-scrollfix>
597
+
598
+
599
+
600
+
601
+
602
+
603
+
604
+ <li class="md-nav__item">
605
+ <a href="../../guide/ingestion/" class="md-nav__link">
606
+
607
+
608
+
609
+ <span class="md-ellipsis">
610
+
611
+
612
+ Ingesting a Repo
613
+
614
+
615
+
616
+ </span>
617
+
618
+
619
+
620
+ </a>
621
+ </li>
622
+
623
+
624
+
625
+
626
+
627
+
628
+
629
+
630
+
631
+
632
+ <li class="md-nav__item">
633
+ <a href="../../guide/context-loading/" class="md-nav__link">
634
+
635
+
636
+
637
+ <span class="md-ellipsis">
638
+
639
+
640
+ Loading Context
641
+
642
+
643
+
644
+ </span>
645
+
646
+
647
+
648
+ </a>
649
+ </li>
650
+
651
+
652
+
653
+
654
+
655
+
656
+
657
+
658
+
659
+
660
+ <li class="md-nav__item">
661
+ <a href="../../guide/framework-enrichment/" class="md-nav__link">
662
+
663
+
664
+
665
+ <span class="md-ellipsis">
666
+
667
+
668
+ Framework Enrichment
669
+
670
+
671
+
672
+ </span>
673
+
674
+
675
+
676
+ </a>
677
+ </li>
678
+
679
+
680
+
681
+
682
+
683
+
684
+
685
+
686
+
687
+
688
+ <li class="md-nav__item">
689
+ <a href="../../guide/analysis/" class="md-nav__link">
690
+
691
+
692
+
693
+ <span class="md-ellipsis">
694
+
695
+
696
+ Structural Analysis
697
+
698
+
699
+
700
+ </span>
701
+
702
+
703
+
704
+ </a>
705
+ </li>
706
+
707
+
708
+
709
+
710
+
711
+
712
+
713
+
714
+
715
+
716
+ <li class="md-nav__item">
717
+ <a href="../../guide/intelligence/" class="md-nav__link">
718
+
719
+
720
+
721
+ <span class="md-ellipsis">
722
+
723
+
724
+ Intelligence Layer
725
+
726
+
727
+
728
+ </span>
729
+
730
+
731
+
732
+ </a>
733
+ </li>
734
+
735
+
736
+
737
+
738
+
739
+
740
+
741
+
742
+
743
+
744
+ <li class="md-nav__item">
745
+ <a href="../../guide/sdk/" class="md-nav__link">
746
+
747
+
748
+
749
+ <span class="md-ellipsis">
750
+
751
+
752
+ Python SDK
753
+
754
+
755
+
756
+ </span>
757
+
758
+
759
+
760
+ </a>
761
+ </li>
762
+
763
+
764
+
765
+
766
+
767
+
768
+
769
+
770
+
771
+
772
+ <li class="md-nav__item">
773
+ <a href="../../guide/graph-queries/" class="md-nav__link">
774
+
775
+
776
+
777
+ <span class="md-ellipsis">
778
+
779
+
780
+ Graph Queries
781
+
782
+
783
+
784
+ </span>
785
+
786
+
787
+
788
+ </a>
789
+ </li>
790
+
791
+
792
+
793
+
794
+
795
+
796
+
797
+
798
+
799
+
800
+ <li class="md-nav__item">
801
+ <a href="../../guide/mcp-integration/" class="md-nav__link">
802
+
803
+
804
+
805
+ <span class="md-ellipsis">
806
+
807
+
808
+ MCP Integration
809
+
810
+
811
+
812
+ </span>
813
+
814
+
815
+
816
+ </a>
817
+ </li>
818
+
819
+
820
+
821
+
822
+
823
+
824
+
825
+
826
+
827
+
828
+ <li class="md-nav__item">
829
+ <a href="../../guide/ci-cd/" class="md-nav__link">
830
+
831
+
832
+
833
+ <span class="md-ellipsis">
834
+
835
+
836
+ CI/CD
837
+
838
+
839
+
840
+ </span>
841
+
842
+
843
+
844
+ </a>
845
+ </li>
846
+
847
+
848
+
849
+
850
+
851
+
852
+
853
+
854
+
855
+
856
+ <li class="md-nav__item">
857
+ <a href="../../guide/cluster/" class="md-nav__link">
858
+
859
+
860
+
861
+ <span class="md-ellipsis">
862
+
863
+
864
+ Cluster Mode
865
+
866
+
867
+
868
+ </span>
869
+
870
+
871
+
872
+ </a>
873
+ </li>
874
+
875
+
876
+
877
+
878
+
879
+
880
+
881
+
882
+
883
+
884
+ <li class="md-nav__item">
885
+ <a href="../../guide/agent-hooks/" class="md-nav__link">
886
+
887
+
888
+
889
+ <span class="md-ellipsis">
890
+
891
+
892
+ Agent Hooks
893
+
894
+
895
+
896
+ </span>
897
+
898
+
899
+
900
+ </a>
901
+ </li>
902
+
903
+
904
+
905
+
906
+
907
+
908
+
909
+
910
+
911
+
912
+ <li class="md-nav__item">
913
+ <a href="../../guide/planopticon/" class="md-nav__link">
914
+
915
+
916
+
917
+ <span class="md-ellipsis">
918
+
919
+
920
+ Planopticon
921
+
922
+
923
+
924
+ </span>
925
+
926
+
927
+
928
+ </a>
929
+ </li>
930
+
931
+
932
+
933
+
934
+ </ul>
935
+ </nav>
936
+
937
+ </li>
938
+
939
+
940
+
941
+
942
+
943
+
944
+
945
+
946
+
947
+
948
+
949
+
950
+
951
+
952
+
953
+
954
+
955
+
956
+
957
+ <li class="md-nav__item md-nav__item--nested">
958
+
959
+
960
+
961
+
962
+
963
+ <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_4" >
964
+
965
+
966
+ <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
967
+
968
+
969
+
970
+ <span class="md-ellipsis">
971
+
972
+
973
+ Architecture
974
+
975
+
976
+
977
+ </span>
978
+
979
+
980
+
981
+ <span class="md-nav__icon md-icon"></span>
982
+ </label>
983
+
984
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
985
+ <label class="md-nav__title" for="__nav_4">
986
+ <span class="md-nav__icon md-icon"></span>
987
+
988
+
989
+ Architecture
990
+
991
+
992
+ </label>
993
+ <ul class="md-nav__list" data-md-scrollfix>
994
+
995
+
996
+
997
+
998
+
999
+
1000
+
1001
+ <li class="md-nav__item">
1002
+ <a href="../../architecture/overview/" class="md-nav__link">
1003
+
1004
+
1005
+
1006
+ <span class="md-ellipsis">
1007
+
1008
+
1009
+ Overview
1010
+
1011
+
1012
+
1013
+ </span>
1014
+
1015
+
1016
+
1017
+ </a>
1018
+ </li>
1019
+
1020
+
1021
+
1022
+
1023
+
1024
+
1025
+
1026
+
1027
+
1028
+
1029
+ <li class="md-nav__item">
1030
+ <a href="../../architecture/graph-schema/" class="md-nav__link">
1031
+
1032
+
1033
+
1034
+ <span class="md-ellipsis">
1035
+
1036
+
1037
+ Graph Schema
1038
+
1039
+
1040
+
1041
+ </span>
1042
+
1043
+
1044
+
1045
+ </a>
1046
+ </li>
1047
+
1048
+
1049
+
1050
+
1051
+ </ul>
1052
+ </nav>
1053
+
1054
+ </li>
1055
+
1056
+
1057
+
1058
+
1059
+
1060
+
1061
+
1062
+
1063
+
1064
+
1065
+
1066
+
1067
+
1068
+
1069
+
1070
+
1071
+
1072
+
1073
+
1074
+
1075
+
1076
+
1077
+
1078
+
1079
+ <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
1080
+
1081
+
1082
+
1083
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" checked>
1084
+
1085
+
1086
+ <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="">
1087
+
1088
+
1089
+
1090
+ <span class="md-ellipsis">
1091
+
1092
+
1093
+ API Reference
1094
+
1095
+
1096
+
1097
+ </span>
1098
+
1099
+
1100
+
1101
+ <span class="md-nav__icon md-icon"></span>
1102
+ </label>
1103
+
1104
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="true">
1105
+ <label class="md-nav__title" for="__nav_5">
1106
+ <span class="md-nav__icon md-icon"></span>
1107
+
1108
+
1109
+ API Reference
1110
+
1111
+
1112
+ </label>
1113
+ <ul class="md-nav__list" data-md-scrollfix>
1114
+
1115
+
1116
+
1117
+
1118
+
1119
+
1120
+
1121
+ <li class="md-nav__item">
1122
+ <a href="../sdk/" class="md-nav__link">
1123
+
1124
+
1125
+
1126
+ <span class="md-ellipsis">
1127
+
1128
+
1129
+ Python SDK
1130
+
1131
+
1132
+
1133
+ </span>
1134
+
1135
+
1136
+
1137
+ </a>
1138
+ </li>
1139
+
1140
+
1141
+
1142
+
1143
+
1144
+
1145
+
1146
+
1147
+
1148
+
1149
+ <li class="md-nav__item">
1150
+ <a href="../ingestion/" class="md-nav__link">
1151
+
1152
+
1153
+
1154
+ <span class="md-ellipsis">
1155
+
1156
+
1157
+ Ingestion
1158
+
1159
+
1160
+
1161
+ </span>
1162
+
1163
+
1164
+
1165
+ </a>
1166
+ </li>
1167
+
1168
+
1169
+
1170
+
1171
+
1172
+
1173
+
1174
+
1175
+
1176
+
1177
+
1178
+
1179
+ <li class="md-nav__item md-nav__item--active">
1180
+
1181
+ <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
1182
+
1183
+
1184
+
1185
+
1186
+
1187
+ <label class="md-nav__link md-nav__link--active" for="__toc">
1188
+
1189
+
1190
+
1191
+ <span class="md-ellipsis">
1192
+
1193
+
1194
+ Analysis
1195
+
1196
+
1197
+
1198
+ </span>
1199
+
1200
+
1201
+
1202
+ <span class="md-nav__icon md-icon"></span>
1203
+ </label>
1204
+
1205
+ <a href="./" class="md-nav__link md-nav__link--active">
1206
+
1207
+
1208
+
1209
+ <span class="md-ellipsis">
1210
+
1211
+
1212
+ Analysis
1213
+
1214
+
1215
+
1216
+ </span>
1217
+
1218
+
1219
+
1220
+ </a>
1221
+
1222
+
1223
+
1224
+<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
1225
+
1226
+
1227
+
1228
+
1229
+
1230
+
1231
+ <label class="md-nav__title" for="__toc">
1232
+ <span class="md-nav__icon md-icon"></span>
1233
+ Table of contents
1234
+ </label>
1235
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
1236
+
1237
+ <li class="md-nav__item">
1238
+ <a href="#impactanalyzer" class="md-nav__link">
1239
+ <span class="md-ellipsis">
1240
+
1241
+ ImpactAnalyzer
1242
+
1243
+ </span>
1244
+ </a>
1245
+
1246
+ <nav class="md-nav" aria-label="ImpactAnalyzer">
1247
+ <ul class="md-nav__list">
1248
+
1249
+ <li class="md-nav__item">
1250
+ <a href="#analyze" class="md-nav__link">
1251
+ <span class="md-ellipsis">
1252
+
1253
+ analyze
1254
+
1255
+ </span>
1256
+ </a>
1257
+
1258
+</li>
1259
+
1260
+ <li class="md-nav__item">
1261
+ <a href="#impactresult" class="md-nav__link">
1262
+ <span class="md-ellipsis">
1263
+
1264
+ ImpactResult
1265
+
1266
+ </span>
1267
+ </a>
1268
+
1269
+</li>
1270
+
1271
+ </ul>
1272
+ </nav>
1273
+
1274
+</li>
1275
+
1276
+ <li class="md-nav__item">
1277
+ <a href="#flowtracer" class="md-nav__link">
1278
+ <span class="md-ellipsis">
1279
+
1280
+ FlowTracer
1281
+
1282
+ </span>
1283
+ </a>
1284
+
1285
+ <nav class="md-nav" aria-label="FlowTracer">
1286
+ <ul class="md-nav__list">
1287
+
1288
+ <li class="md-nav__item">
1289
+ <a href="#trace" class="md-nav__link">
1290
+ <span class="md-ellipsis">
1291
+
1292
+ trace
1293
+
1294
+ </span>
1295
+ </a>
1296
+
1297
+</li>
1298
+
1299
+ <li class="md-nav__item">
1300
+ <a href="#flowpath" class="md-nav__link">
1301
+ <span class="md-ellipsis">
1302
+
1303
+ FlowPath
1304
+
1305
+ </span>
1306
+ </a>
1307
+
1308
+</li>
1309
+
1310
+ </ul>
1311
+ </nav>
1312
+
1313
+</li>
1314
+
1315
+ <li class="md-nav__item">
1316
+ <a href="#deadcodedetector" class="md-nav__link">
1317
+ <span class="md-ellipsis">
1318
+
1319
+ DeadCodeDetector
1320
+
1321
+ </span>
1322
+ </a>
1323
+
1324
+ <nav class="md-nav" aria-label="DeadCodeDetector">
1325
+ <ul class="md-nav__list">
1326
+
1327
+ <li class="md-nav__item">
1328
+ <a href="#find" class="md-nav__link">
1329
+ <span class="md-ellipsis">
1330
+
1331
+ find
1332
+
1333
+ </span>
1334
+ </a>
1335
+
1336
+</li>
1337
+
1338
+ <li class="md-nav__item">
1339
+ <a href="#deadcodecandidate" class="md-nav__link">
1340
+ <span class="md-ellipsis">
1341
+
1342
+ DeadCodeCandidate
1343
+
1344
+ </span>
1345
+ </a>
1346
+
1347
+</li>
1348
+
1349
+ </ul>
1350
+ </nav>
1351
+
1352
+</li>
1353
+
1354
+ <li class="md-nav__item">
1355
+ <a href="#cycledetector" class="md-nav__link">
1356
+ <span class="md-ellipsis">
1357
+
1358
+ CycleDetector
1359
+
1360
+ </span>
1361
+ </a>
1362
+
1363
+ <nav class="md-nav" aria-label="CycleDetector">
1364
+ <ul class="md-nav__list">
1365
+
1366
+ <li class="md-nav__item">
1367
+ <a href="#find_import_cycles" class="md-nav__link">
1368
+ <span class="md-ellipsis">
1369
+
1370
+ find_import_cycles
1371
+
1372
+ </span>
1373
+ </a>
1374
+
1375
+</li>
1376
+
1377
+ <li class="md-nav__item">
1378
+ <a href="#find_call_cycles" class="md-nav__link">
1379
+ <span class="md-ellipsis">
1380
+
1381
+ find_call_cycles
1382
+
1383
+ </span>
1384
+ </a>
1385
+
1386
+</li>
1387
+
1388
+ <li class="md-nav__item">
1389
+ <a href="#find_all" class="md-nav__link">
1390
+ <span class="md-ellipsis">
1391
+
1392
+ find_all
1393
+
1394
+ </span>
1395
+ </a>
1396
+
1397
+</li>
1398
+
1399
+ <li class="md-nav__item">
1400
+ <a href="#cycle" class="md-nav__link">
1401
+ <span class="md-ellipsis">
1402
+
1403
+ Cycle
1404
+
1405
+ </span>
1406
+ </a>
1407
+
1408
+</li>
1409
+
1410
+ <li class="md-nav__item">
1411
+ <a href="#cyclereport" class="md-nav__link">
1412
+ <span class="md-ellipsis">
1413
+
1414
+ CycleReport
1415
+
1416
+ </span>
1417
+ </a>
1418
+
1419
+</li>
1420
+
1421
+ </ul>
1422
+ </nav>
1423
+
1424
+</li>
1425
+
1426
+ <li class="md-nav__item">
1427
+ <a href="#testmapper" class="md-nav__link">
1428
+ <span class="md-ellipsis">
1429
+
1430
+ TestMapper
1431
+
1432
+ </span>
1433
+ </a>
1434
+
1435
+ <nav class="md-nav" aria-label="TestMapper">
1436
+ <ul class="md-nav__list">
1437
+
1438
+ <li class="md-nav__item">
1439
+ <a href="#map" class="md-nav__link">
1440
+ <span class="md-ellipsis">
1441
+
1442
+ map
1443
+
1444
+ </span>
1445
+ </a>
1446
+
1447
+</li>
1448
+
1449
+ <li class="md-nav__item">
1450
+ <a href="#uncovered" class="md-nav__link">
1451
+ <span class="md-ellipsis">
1452
+
1453
+ uncovered
1454
+
1455
+ </span>
1456
+ </a>
1457
+
1458
+</li>
1459
+
1460
+ <li class="md-nav__item">
1461
+ <a href="#testcoveragemap" class="md-nav__link">
1462
+ <span class="md-ellipsis">
1463
+
1464
+ TestCoverageMap
1465
+
1466
+ </span>
1467
+ </a>
1468
+
1469
+</li>
1470
+
1471
+ </ul>
1472
+ </nav>
1473
+
1474
+</li>
1475
+
1476
+ </ul>
1477
+
1478
+</nav>
1479
+
1480
+ </li>
1481
+
1482
+
1483
+
1484
+
1485
+
1486
+
1487
+
1488
+
1489
+
1490
+
1491
+ <li class="md-nav__item">
1492
+ <a href="../graph/" class="md-nav__link">
1493
+
1494
+
1495
+
1496
+ <span class="md-ellipsis">
1497
+
1498
+
1499
+ Graph
1500
+
1501
+
1502
+
1503
+ </span>
1504
+
1505
+
1506
+
1507
+ </a>
1508
+ </li>
1509
+
1510
+
1511
+
1512
+
1513
+
1514
+
1515
+
1516
+
1517
+
1518
+
1519
+ <li class="md-nav__item">
1520
+ <a href="../mcp/" class="md-nav__link">
1521
+
1522
+
1523
+
1524
+ <span class="md-ellipsis">
1525
+
1526
+
1527
+ MCP Server
1528
+
1529
+
1530
+
1531
+ </span>
1532
+
1533
+
1534
+
1535
+ </a>
1536
+ </li>
1537
+
1538
+
1539
+
1540
+
1541
+ </ul>
1542
+ </nav>
1543
+
1544
+ </li>
1545
+
1546
+
1547
+
1548
+ </ul>
1549
+</nav>
1550
+ </div>
1551
+ </div>
1552
+ </div>
1553
+
1554
+
1555
+
1556
+ <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
1557
+ <div class="md-sidebar__scrollwrap">
1558
+ <div class="md-sidebar__inner">
1559
+
1560
+
1561
+<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
1562
+
1563
+
1564
+
1565
+
1566
+
1567
+
1568
+ <label class="md-nav__title" for="__toc">
1569
+ <span class="md-nav__icon md-icon"></span>
1570
+ Table of contents
1571
+ </label>
1572
+ <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
1573
+
1574
+ <li class="md-nav__item">
1575
+ <a href="#impactanalyzer" class="md-nav__link">
1576
+ <span class="md-ellipsis">
1577
+
1578
+ ImpactAnalyzer
1579
+
1580
+ </span>
1581
+ </a>
1582
+
1583
+ <nav class="md-nav" aria-label="ImpactAnalyzer">
1584
+ <ul class="md-nav__list">
1585
+
1586
+ <li class="md-nav__item">
1587
+ <a href="#analyze" class="md-nav__link">
1588
+ <span class="md-ellipsis">
1589
+
1590
+ analyze
1591
+
1592
+ </span>
1593
+ </a>
1594
+
1595
+</li>
1596
+
1597
+ <li class="md-nav__item">
1598
+ <a href="#impactresult" class="md-nav__link">
1599
+ <span class="md-ellipsis">
1600
+
1601
+ ImpactResult
1602
+
1603
+ </span>
1604
+ </a>
1605
+
1606
+</li>
1607
+
1608
+ </ul>
1609
+ </nav>
1610
+
1611
+</li>
1612
+
1613
+ <li class="md-nav__item">
1614
+ <a href="#flowtracer" class="md-nav__link">
1615
+ <span class="md-ellipsis">
1616
+
1617
+ FlowTracer
1618
+
1619
+ </span>
1620
+ </a>
1621
+
1622
+ <nav class="md-nav" aria-label="FlowTracer">
1623
+ <ul class="md-nav__list">
1624
+
1625
+ <li class="md-nav__item">
1626
+ <a href="#trace" class="md-nav__link">
1627
+ <span class="md-ellipsis">
1628
+
1629
+ trace
1630
+
1631
+ </span>
1632
+ </a>
1633
+
1634
+</li>
1635
+
1636
+ <li class="md-nav__item">
1637
+ <a href="#flowpath" class="md-nav__link">
1638
+ <span class="md-ellipsis">
1639
+
1640
+ FlowPath
1641
+
1642
+ </span>
1643
+ </a>
1644
+
1645
+</li>
1646
+
1647
+ </ul>
1648
+ </nav>
1649
+
1650
+</li>
1651
+
1652
+ <li class="md-nav__item">
1653
+ <a href="#deadcodedetector" class="md-nav__link">
1654
+ <span class="md-ellipsis">
1655
+
1656
+ DeadCodeDetector
1657
+
1658
+ </span>
1659
+ </a>
1660
+
1661
+ <nav class="md-nav" aria-label="DeadCodeDetector">
1662
+ <ul class="md-nav__list">
1663
+
1664
+ <li class="md-nav__item">
1665
+ <a href="#find" class="md-nav__link">
1666
+ <span class="md-ellipsis">
1667
+
1668
+ find
1669
+
1670
+ </span>
1671
+ </a>
1672
+
1673
+</li>
1674
+
1675
+ <li class="md-nav__item">
1676
+ <a href="#deadcodecandidate" class="md-nav__link">
1677
+ <span class="md-ellipsis">
1678
+
1679
+ DeadCodeCandidate
1680
+
1681
+ </span>
1682
+ </a>
1683
+
1684
+</li>
1685
+
1686
+ </ul>
1687
+ </nav>
1688
+
1689
+</li>
1690
+
1691
+ <li class="md-nav__item">
1692
+ <a href="#cycledetector" class="md-nav__link">
1693
+ <span class="md-ellipsis">
1694
+
1695
+ CycleDetector
1696
+
1697
+ </span>
1698
+ </a>
1699
+
1700
+ <nav class="md-nav" aria-label="CycleDetector">
1701
+ <ul class="md-nav__list">
1702
+
1703
+ <li class="md-nav__item">
1704
+ <a href="#find_import_cycles" class="md-nav__link">
1705
+ <span class="md-ellipsis">
1706
+
1707
+ find_import_cycles
1708
+
1709
+ </span>
1710
+ </a>
1711
+
1712
+</li>
1713
+
1714
+ <li class="md-nav__item">
1715
+ <a href="#find_call_cycles" class="md-nav__link">
1716
+ <span class="md-ellipsis">
1717
+
1718
+ find_call_cycles
1719
+
1720
+ </span>
1721
+ </a>
1722
+
1723
+</li>
1724
+
1725
+ <li class="md-nav__item">
1726
+ <a href="#find_all" class="md-nav__link">
1727
+ <span class="md-ellipsis">
1728
+
1729
+ find_all
1730
+
1731
+ </span>
1732
+ </a>
1733
+
1734
+</li>
1735
+
1736
+ <li class="md-nav__item">
1737
+ <a href="#cycle" class="md-nav__link">
1738
+ <span class="md-ellipsis">
1739
+
1740
+ Cycle
1741
+
1742
+ </span>
1743
+ </a>
1744
+
1745
+</li>
1746
+
1747
+ <li class="md-nav__item">
1748
+ <a href="#cyclereport" class="md-nav__link">
1749
+ <span class="md-ellipsis">
1750
+
1751
+ CycleReport
1752
+
1753
+ </span>
1754
+ </a>
1755
+
1756
+</li>
1757
+
1758
+ </ul>
1759
+ </nav>
1760
+
1761
+</li>
1762
+
1763
+ <li class="md-nav__item">
1764
+ <a href="#testmapper" class="md-nav__link">
1765
+ <span class="md-ellipsis">
1766
+
1767
+ TestMapper
1768
+
1769
+ </span>
1770
+ </a>
1771
+
1772
+ <nav class="md-nav" aria-label="TestMapper">
1773
+ <ul class="md-nav__list">
1774
+
1775
+ <li class="md-nav__item">
1776
+ <a href="#map" class="md-nav__link">
1777
+ <span class="md-ellipsis">
1778
+
1779
+ map
1780
+
1781
+ </span>
1782
+ </a>
1783
+
1784
+</li>
1785
+
1786
+ <li class="md-nav__item">
1787
+ <a href="#uncovered" class="md-nav__link">
1788
+ <span class="md-ellipsis">
1789
+
1790
+ uncovered
1791
+
1792
+ </span>
1793
+ </a>
1794
+
1795
+</li>
1796
+
1797
+ <li class="md-nav__item">
1798
+ <a href="#testcoveragemap" class="md-nav__link">
1799
+ <span class="md-ellipsis">
1800
+
1801
+ TestCoverageMap
1802
+
1803
+ </span>
1804
+ </a>
1805
+
1806
+</li>
1807
+
1808
+ </ul>
1809
+ </nav>
1810
+
1811
+</li>
1812
+
1813
+ </ul>
1814
+
1815
+</nav>
1816
+ </div>
1817
+ </div>
1818
+ </div>
1819
+
1820
+
1821
+
1822
+ <div class="md-content" data-md-component="content">
1823
+
1824
+ <article class="md-content__inner md-typeset">
1825
+
1826
+
1827
+
1828
+
1829
+
1830
+
1831
+
1832
+
1833
+<h1 id="analysis-api-reference">Analysis API Reference<a class="headerlink" href="#analysis-api-reference" title="Permanent link">&para;</a></h1>
1834
+<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="kn">from</span><span class="w"> </span><span class="nn">navegador.analysis</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span>
1835
+<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">ImpactAnalyzer</span><span class="p">,</span>
1836
+<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">FlowTracer</span><span class="p">,</span>
1837
+<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">DeadCodeDetector</span><span class="p">,</span>
1838
+<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">CycleDetector</span><span class="p">,</span>
1839
+<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="n">TestMapper</span><span class="p">,</span>
1840
+<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a><span class="p">)</span>
1841
+<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a><span class="kn">from</span><span class="w"> </span><span class="nn">navegador.graph</span><span class="w"> </span><span class="kn">import</span> <span class="n">GraphStore</span>
1842
+</code></pre></div>
1843
+<hr />
1844
+<h2 id="impactanalyzer">ImpactAnalyzer<a class="headerlink" href="#impactanalyzer" title="Permanent link">&para;</a></h2>
1845
+<p>Traces downstream dependents of a function, class, or file by following <code>CALLS</code>, <code>INHERITS</code>, and <code>IMPORTS</code> edges.</p>
1846
+<div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="k">class</span><span class="w"> </span><span class="nc">ImpactAnalyzer</span><span class="p">:</span>
1847
+<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a> <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">store</span><span class="p">:</span> <span class="n">GraphStore</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span> <span class="o">...</span>
1848
+</code></pre></div>
1849
+<h3 id="analyze"><code>analyze</code><a class="headerlink" href="#analyze" title="Permanent link">&para;</a></h3>
1850
+<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">analyze</span><span class="p">(</span>
1851
+<a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a> <span class="bp">self</span><span class="p">,</span>
1852
+<a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
1853
+<a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a> <span class="o">*</span><span class="p">,</span>
1854
+<a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a> <span class="n">node_type</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
1855
+<a id="__codelineno-2-6" name="__codelineno-2-6" href="#__codelineno-2-6"></a> <span class="n">file</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
1856
+<a id="__codelineno-2-7" name="__codelineno-2-7" href="#__codelineno-2-7"></a> <span class="n">depth</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
1857
+<a id="__codelineno-2-8" name="__codelineno-2-8" href="#__codelineno-2-8"></a> <span class="n">include_tests</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
1858
+<a id="__codelineno-2-9" name="__codelineno-2-9" href="#__codelineno-2-9"></a> <span class="n">include_knowledge</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
1859
+<a id="__codelineno-2-10" name="__codelineno-2-10" href="#__codelineno-2-10"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">ImpactResult</span>
1860
+</code></pre></div>
1861
+<p>Compute the impact set for a given node.</p>
1862
+<p><strong>Parameters:</strong></p>
1863
+<table>
1864
+<thead>
1865
+<tr>
1866
+<th>Name</th>
1867
+<th>Type</th>
1868
+<th>Default</th>
1869
+<th>Description</th>
1870
+</tr>
1871
+</thead>
1872
+<tbody>
1873
+<tr>
1874
+<td><code>name</code></td>
1875
+<td><code>str</code></td>
1876
+<td>—</td>
1877
+<td>Name of the function, class, or file to analyze</td>
1878
+</tr>
1879
+<tr>
1880
+<td><code>node_type</code></td>
1881
+<td><code>str</code></td>
1882
+<td><code>""</code></td>
1883
+<td>Node type hint: <code>"Function"</code>, <code>"Class"</code>, <code>"File"</code></td>
1884
+</tr>
1885
+<tr>
1886
+<td><code>file</code></td>
1887
+<td><code>str</code></td>
1888
+<td><code>""</code></td>
1889
+<td>Optional file path to disambiguate</td>
1890
+</tr>
1891
+<tr>
1892
+<td><code>depth</code></td>
1893
+<td><code>int</code></td>
1894
+<td><code>0</code></td>
1895
+<td>Maximum hops to follow (0 = unlimited)</td>
1896
+</tr>
1897
+<tr>
1898
+<td><code>include_tests</code></td>
1899
+<td><code>bool</code></td>
1900
+<td><code>False</code></td>
1901
+<td>Include test files in the impact set</td>
1902
+</tr>
1903
+<tr>
1904
+<td><code>include_knowledge</code></td>
1905
+<td><code>bool</code></td>
1906
+<td><code>False</code></td>
1907
+<td>Include linked knowledge nodes (rules, concepts, decisions)</td>
1908
+</tr>
1909
+</tbody>
1910
+</table>
1911
+<p><strong>Returns:</strong> <code>ImpactResult</code></p>
1912
+<hr />
1913
+<h3 id="impactresult">ImpactResult<a class="headerlink" href="#impactresult" title="Permanent link">&para;</a></h3>
1914
+<div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="nd">@dataclass</span>
1915
+<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a><span class="k">class</span><span class="w"> </span><span class="nc">ImpactResult</span><span class="p">:</span>
1916
+<a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a> <span class="n">root</span><span class="p">:</span> <span class="n">ContextNode</span>
1917
+<a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a> <span class="n">direct_dependents</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">ContextNode</span><span class="p">]</span>
1918
+<a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a> <span class="n">transitive_dependents</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">ContextNode</span><span class="p">]</span>
1919
+<a id="__codelineno-3-6" name="__codelineno-3-6" href="#__codelineno-3-6"></a> <span class="n">affected_files</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span>
1920
+<a id="__codelineno-3-7" name="__codelineno-3-7" href="#__codelineno-3-7"></a> <span class="n">knowledge_nodes</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">ContextNode</span><span class="p">]</span> <span class="c1"># empty unless include_knowledge=True</span>
1921
+<a id="__codelineno-3-8" name="__codelineno-3-8" href="#__codelineno-3-8"></a> <span class="n">depth_reached</span><span class="p">:</span> <span class="nb">int</span>
1922
+</code></pre></div>
1923
+<table>
1924
+<thead>
1925
+<tr>
1926
+<th>Field</th>
1927
+<th>Type</th>
1928
+<th>Description</th>
1929
+</tr>
1930
+</thead>
1931
+<tbody>
1932
+<tr>
1933
+<td><code>root</code></td>
1934
+<td><code>ContextNode</code></td>
1935
+<td>The analyzed node</td>
1936
+</tr>
1937
+<tr>
1938
+<td><code>direct_dependents</code></td>
1939
+<td><code>list[ContextNode]</code></td>
1940
+<td>Nodes one hop away</td>
1941
+</tr>
1942
+<tr>
1943
+<td><code>transitive_dependents</code></td>
1944
+<td><code>list[ContextNode]</code></td>
1945
+<td>All nodes reachable beyond one hop</td>
1946
+</tr>
1947
+<tr>
1948
+<td><code>affected_files</code></td>
1949
+<td><code>list[str]</code></td>
1950
+<td>Unique file paths in the full dependent set</td>
1951
+</tr>
1952
+<tr>
1953
+<td><code>knowledge_nodes</code></td>
1954
+<td><code>list[ContextNode]</code></td>
1955
+<td>Linked concepts, rules, decisions</td>
1956
+</tr>
1957
+<tr>
1958
+<td><code>depth_reached</code></td>
1959
+<td><code>int</code></td>
1960
+<td>Actual maximum depth traversed</td>
1961
+</tr>
1962
+</tbody>
1963
+</table>
1964
+<p><strong>Example:</strong></p>
1965
+<div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="n">store</span> <span class="o">=</span> <span class="n">GraphStore</span><span class="o">.</span><span class="n">sqlite</span><span class="p">(</span><span class="s2">&quot;.navegador/navegador.db&quot;</span><span class="p">)</span>
1966
+<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="n">analyzer</span> <span class="o">=</span> <span class="n">ImpactAnalyzer</span><span class="p">(</span><span class="n">store</span><span class="p">)</span>
1967
+<a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a>
1968
+<a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a><span class="n">result</span> <span class="o">=</span> <span class="n">analyzer</span><span class="o">.</span><span class="n">analyze</span><span class="p">(</span><span class="s2">&quot;validate_token&quot;</span><span class="p">,</span> <span class="n">depth</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">include_knowledge</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
1969
+<a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">direct_dependents</span><span class="p">)</span><span class="si">}</span><span class="s2"> direct dependents&quot;</span><span class="p">)</span>
1970
+<a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">transitive_dependents</span><span class="p">)</span><span class="si">}</span><span class="s2"> transitive dependents&quot;</span><span class="p">)</span>
1971
+<a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Affects </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">affected_files</span><span class="p">)</span><span class="si">}</span><span class="s2"> files&quot;</span><span class="p">)</span>
1972
+<a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a><span class="k">for</span> <span class="n">rule</span> <span class="ow">in</span> <span class="p">[</span><span class="n">n</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">result</span><span class="o">.</span><span class="n">knowledge_nodes</span> <span class="k">if</span> <span class="n">n</span><span class="o">.</span><span class="n">label</span> <span class="o">==</span> <span class="s2">&quot;Rule&quot;</span><span class="p">]:</span>
1973
+<a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a> <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; Governed by: </span><span class="si">{</span><span class="n">rule</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">rule</span><span class="o">.</span><span class="n">properties</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;severity&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
1974
+</code></pre></div>
1975
+<hr />
1976
+<h2 id="flowtracer">FlowTracer<a class="headerlink" href="#flowtracer" title="Permanent link">&para;</a></h2>
1977
+<p>Finds call paths between two functions.</p>
1978
+<div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="k">class</span><span class="w"> </span><span class="nc">FlowTracer</span><span class="p">:</span>
1979
+<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a> <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">store</span><span class="p">:</span> <span class="n">GraphStore</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span> <span class="o">...</span>
1980
+</code></pre></div>
1981
+<h3 id="trace"><code>trace</code><a class="headerlink" href="#trace" title="Permanent link">&para;</a></h3>
1982
+<div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">trace</span><span class="p">(</span>
1983
+<a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a> <span class="bp">self</span><span class="p">,</span>
1984
+<a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a> <span class="n">from_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
1985
+<a id="__codelineno-6-4" name="__codelineno-6-4" href="#__codelineno-6-4"></a> <span class="n">to_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
1986
+<a id="__codelineno-6-5" name="__codelineno-6-5" href="#__codelineno-6-5"></a> <span class="o">*</span><span class="p">,</span>
1987
+<a id="__codelineno-6-6" name="__codelineno-6-6" href="#__codelineno-6-6"></a> <span class="n">from_file</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
1988
+<a id="__codelineno-6-7" name="__codelineno-6-7" href="#__codelineno-6-7"></a> <span class="n">to_file</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
1989
+<a id="__codelineno-6-8" name="__codelineno-6-8" href="#__codelineno-6-8"></a> <span class="n">max_paths</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span>
1990
+<a id="__codelineno-6-9" name="__codelineno-6-9" href="#__codelineno-6-9"></a> <span class="n">max_depth</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">10</span><span class="p">,</span>
1991
+<a id="__codelineno-6-10" name="__codelineno-6-10" href="#__codelineno-6-10"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">[</span><span class="n">FlowPath</span><span class="p">]</span>
1992
+</code></pre></div>
1993
+<p>Find call chains from <code>from_name</code> to <code>to_name</code>.</p>
1994
+<p><strong>Parameters:</strong></p>
1995
+<table>
1996
+<thead>
1997
+<tr>
1998
+<th>Name</th>
1999
+<th>Type</th>
2000
+<th>Default</th>
2001
+<th>Description</th>
2002
+</tr>
2003
+</thead>
2004
+<tbody>
2005
+<tr>
2006
+<td><code>from_name</code></td>
2007
+<td><code>str</code></td>
2008
+<td>—</td>
2009
+<td>Starting function name</td>
2010
+</tr>
2011
+<tr>
2012
+<td><code>to_name</code></td>
2013
+<td><code>str</code></td>
2014
+<td>—</td>
2015
+<td>Target function name</td>
2016
+</tr>
2017
+<tr>
2018
+<td><code>from_file</code></td>
2019
+<td><code>str</code></td>
2020
+<td><code>""</code></td>
2021
+<td>File path to disambiguate start</td>
2022
+</tr>
2023
+<tr>
2024
+<td><code>to_file</code></td>
2025
+<td><code>str</code></td>
2026
+<td><code>""</code></td>
2027
+<td>File path to disambiguate target</td>
2028
+</tr>
2029
+<tr>
2030
+<td><code>max_paths</code></td>
2031
+<td><code>int</code></td>
2032
+<td><code>3</code></td>
2033
+<td>Maximum number of paths to return</td>
2034
+</tr>
2035
+<tr>
2036
+<td><code>max_depth</code></td>
2037
+<td><code>int</code></td>
2038
+<td><code>10</code></td>
2039
+<td>Maximum call chain length</td>
2040
+</tr>
2041
+</tbody>
2042
+</table>
2043
+<p><strong>Returns:</strong> <code>list[FlowPath]</code></p>
2044
+<hr />
2045
+<h3 id="flowpath">FlowPath<a class="headerlink" href="#flowpath" title="Permanent link">&para;</a></h3>
2046
+<div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a><span class="nd">@dataclass</span>
2047
+<a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a><span class="k">class</span><span class="w"> </span><span class="nc">FlowPath</span><span class="p">:</span>
2048
+<a id="__codelineno-7-3" name="__codelineno-7-3" href="#__codelineno-7-3"></a> <span class="n">nodes</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="c1"># function names in order</span>
2049
+<a id="__codelineno-7-4" name="__codelineno-7-4" href="#__codelineno-7-4"></a> <span class="n">node_details</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">ContextNode</span><span class="p">]</span>
2050
+<a id="__codelineno-7-5" name="__codelineno-7-5" href="#__codelineno-7-5"></a> <span class="n">length</span><span class="p">:</span> <span class="nb">int</span>
2051
+</code></pre></div>
2052
+<p><strong>Example:</strong></p>
2053
+<div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a><span class="n">tracer</span> <span class="o">=</span> <span class="n">FlowTracer</span><span class="p">(</span><span class="n">store</span><span class="p">)</span>
2054
+<a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a><span class="n">paths</span> <span class="o">=</span> <span class="n">tracer</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="s2">&quot;create_order&quot;</span><span class="p">,</span> <span class="s2">&quot;process_payment&quot;</span><span class="p">,</span> <span class="n">max_paths</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
2055
+<a id="__codelineno-8-3" name="__codelineno-8-3" href="#__codelineno-8-3"></a><span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">path</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">paths</span><span class="p">,</span> <span class="mi">1</span><span class="p">):</span>
2056
+<a id="__codelineno-8-4" name="__codelineno-8-4" href="#__codelineno-8-4"></a> <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Path </span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="s1">&#39; -&gt; &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">path</span><span class="o">.</span><span class="n">nodes</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
2057
+</code></pre></div>
2058
+<hr />
2059
+<h2 id="deadcodedetector">DeadCodeDetector<a class="headerlink" href="#deadcodedetector" title="Permanent link">&para;</a></h2>
2060
+<p>Identifies functions and classes that are never called, never imported, and not entry points.</p>
2061
+<div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a><span class="k">class</span><span class="w"> </span><span class="nc">DeadCodeDetector</span><span class="p">:</span>
2062
+<a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a> <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">store</span><span class="p">:</span> <span class="n">GraphStore</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span> <span class="o">...</span>
2063
+</code></pre></div>
2064
+<h3 id="find"><code>find</code><a class="headerlink" href="#find" title="Permanent link">&para;</a></h3>
2065
+<div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">find</span><span class="p">(</span>
2066
+<a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a> <span class="bp">self</span><span class="p">,</span>
2067
+<a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a> <span class="n">path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Path</span><span class="p">,</span>
2068
+<a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a> <span class="o">*</span><span class="p">,</span>
2069
+<a id="__codelineno-10-5" name="__codelineno-10-5" href="#__codelineno-10-5"></a> <span class="n">exclude_tests</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
2070
+<a id="__codelineno-10-6" name="__codelineno-10-6" href="#__codelineno-10-6"></a> <span class="n">min_confidence</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">80</span><span class="p">,</span>
2071
+<a id="__codelineno-10-7" name="__codelineno-10-7" href="#__codelineno-10-7"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">[</span><span class="n">DeadCodeCandidate</span><span class="p">]</span>
2072
+</code></pre></div>
2073
+<p>Find potentially dead code within a path.</p>
2074
+<p><strong>Parameters:</strong></p>
2075
+<table>
2076
+<thead>
2077
+<tr>
2078
+<th>Name</th>
2079
+<th>Type</th>
2080
+<th>Default</th>
2081
+<th>Description</th>
2082
+</tr>
2083
+</thead>
2084
+<tbody>
2085
+<tr>
2086
+<td><code>path</code></td>
2087
+<td><code>str \| Path</code></td>
2088
+<td>—</td>
2089
+<td>Directory or file to analyze</td>
2090
+</tr>
2091
+<tr>
2092
+<td><code>exclude_tests</code></td>
2093
+<td><code>bool</code></td>
2094
+<td><code>False</code></td>
2095
+<td>Skip test files</td>
2096
+</tr>
2097
+<tr>
2098
+<td><code>min_confidence</code></td>
2099
+<td><code>int</code></td>
2100
+<td><code>80</code></td>
2101
+<td>Minimum confidence score to include (0–100)</td>
2102
+</tr>
2103
+</tbody>
2104
+</table>
2105
+<p><strong>Returns:</strong> <code>list[DeadCodeCandidate]</code></p>
2106
+<hr />
2107
+<h3 id="deadcodecandidate">DeadCodeCandidate<a class="headerlink" href="#deadcodecandidate" title="Permanent link">&para;</a></h3>
2108
+<div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a><span class="nd">@dataclass</span>
2109
+<a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a><span class="k">class</span><span class="w"> </span><span class="nc">DeadCodeCandidate</span><span class="p">:</span>
2110
+<a id="__codelineno-11-3" name="__codelineno-11-3" href="#__codelineno-11-3"></a> <span class="n">node</span><span class="p">:</span> <span class="n">ContextNode</span>
2111
+<a id="__codelineno-11-4" name="__codelineno-11-4" href="#__codelineno-11-4"></a> <span class="n">confidence</span><span class="p">:</span> <span class="nb">int</span> <span class="c1"># 0–100</span>
2112
+<a id="__codelineno-11-5" name="__codelineno-11-5" href="#__codelineno-11-5"></a> <span class="n">reasons</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="c1"># e.g. [&quot;no callers&quot;, &quot;no imports&quot;, &quot;no decorator entry point&quot;]</span>
2113
+</code></pre></div>
2114
+<table>
2115
+<thead>
2116
+<tr>
2117
+<th>Field</th>
2118
+<th>Type</th>
2119
+<th>Description</th>
2120
+</tr>
2121
+</thead>
2122
+<tbody>
2123
+<tr>
2124
+<td><code>node</code></td>
2125
+<td><code>ContextNode</code></td>
2126
+<td>The potentially dead node</td>
2127
+</tr>
2128
+<tr>
2129
+<td><code>confidence</code></td>
2130
+<td><code>int</code></td>
2131
+<td>Confidence that this is truly unreachable (higher = more confident)</td>
2132
+</tr>
2133
+<tr>
2134
+<td><code>reasons</code></td>
2135
+<td><code>list[str]</code></td>
2136
+<td>Reasons for the classification</td>
2137
+</tr>
2138
+</tbody>
2139
+</table>
2140
+<p><strong>Example:</strong></p>
2141
+<div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a><span class="n">detector</span> <span class="o">=</span> <span class="n">DeadCodeDetector</span><span class="p">(</span><span class="n">store</span><span class="p">)</span>
2142
+<a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a><span class="n">candidates</span> <span class="o">=</span> <span class="n">detector</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">&quot;./src&quot;</span><span class="p">,</span> <span class="n">exclude_tests</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">min_confidence</span><span class="o">=</span><span class="mi">90</span><span class="p">)</span>
2143
+<a id="__codelineno-12-3" name="__codelineno-12-3" href="#__codelineno-12-3"></a><span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">candidates</span><span class="p">:</span>
2144
+<a id="__codelineno-12-4" name="__codelineno-12-4" href="#__codelineno-12-4"></a> <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;[</span><span class="si">{</span><span class="n">c</span><span class="o">.</span><span class="n">confidence</span><span class="si">}</span><span class="s2">%] </span><span class="si">{</span><span class="n">c</span><span class="o">.</span><span class="n">node</span><span class="o">.</span><span class="n">label</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">c</span><span class="o">.</span><span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">c</span><span class="o">.</span><span class="n">node</span><span class="o">.</span><span class="n">properties</span><span class="p">[</span><span class="s1">&#39;file&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
2145
+<a id="__codelineno-12-5" name="__codelineno-12-5" href="#__codelineno-12-5"></a> <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; Reasons: </span><span class="si">{</span><span class="s1">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">reasons</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
2146
+</code></pre></div>
2147
+<hr />
2148
+<h2 id="cycledetector">CycleDetector<a class="headerlink" href="#cycledetector" title="Permanent link">&para;</a></h2>
2149
+<p>Finds circular dependency chains in call and import graphs.</p>
2150
+<div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a><span class="k">class</span><span class="w"> </span><span class="nc">CycleDetector</span><span class="p">:</span>
2151
+<a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a> <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">store</span><span class="p">:</span> <span class="n">GraphStore</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span> <span class="o">...</span>
2152
+</code></pre></div>
2153
+<h3 id="find_import_cycles"><code>find_import_cycles</code><a class="headerlink" href="#find_import_cycles" title="Permanent link">&para;</a></h3>
2154
+<div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">find_import_cycles</span><span class="p">(</span>
2155
+<a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a> <span class="bp">self</span><span class="p">,</span>
2156
+<a id="__codelineno-14-3" name="__codelineno-14-3" href="#__codelineno-14-3"></a> <span class="n">path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Path</span><span class="p">,</span>
2157
+<a id="__codelineno-14-4" name="__codelineno-14-4" href="#__codelineno-14-4"></a> <span class="o">*</span><span class="p">,</span>
2158
+<a id="__codelineno-14-5" name="__codelineno-14-5" href="#__codelineno-14-5"></a> <span class="n">min_length</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span>
2159
+<a id="__codelineno-14-6" name="__codelineno-14-6" href="#__codelineno-14-6"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">[</span><span class="n">Cycle</span><span class="p">]</span>
2160
+</code></pre></div>
2161
+<p>Find circular import chains within a path.</p>
2162
+<hr />
2163
+<h3 id="find_call_cycles"><code>find_call_cycles</code><a class="headerlink" href="#find_call_cycles" title="Permanent link">&para;</a></h3>
2164
+<div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">find_call_cycles</span><span class="p">(</span>
2165
+<a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a> <span class="bp">self</span><span class="p">,</span>
2166
+<a id="__codelineno-15-3" name="__codelineno-15-3" href="#__codelineno-15-3"></a> <span class="n">path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Path</span><span class="p">,</span>
2167
+<a id="__codelineno-15-4" name="__codelineno-15-4" href="#__codelineno-15-4"></a> <span class="o">*</span><span class="p">,</span>
2168
+<a id="__codelineno-15-5" name="__codelineno-15-5" href="#__codelineno-15-5"></a> <span class="n">min_length</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span>
2169
+<a id="__codelineno-15-6" name="__codelineno-15-6" href="#__codelineno-15-6"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">[</span><span class="n">Cycle</span><span class="p">]</span>
2170
+</code></pre></div>
2171
+<p>Find circular call chains within a path.</p>
2172
+<hr />
2173
+<h3 id="find_all"><code>find_all</code><a class="headerlink" href="#find_all" title="Permanent link">&para;</a></h3>
2174
+<div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">find_all</span><span class="p">(</span>
2175
+<a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a> <span class="bp">self</span><span class="p">,</span>
2176
+<a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a> <span class="n">path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Path</span><span class="p">,</span>
2177
+<a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a> <span class="o">*</span><span class="p">,</span>
2178
+<a id="__codelineno-16-5" name="__codelineno-16-5" href="#__codelineno-16-5"></a> <span class="n">min_length</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span>
2179
+<a id="__codelineno-16-6" name="__codelineno-16-6" href="#__codelineno-16-6"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">CycleReport</span>
2180
+</code></pre></div>
2181
+<p>Find both import and call cycles.</p>
2182
+<p><strong>Parameters (all methods):</strong></p>
2183
+<table>
2184
+<thead>
2185
+<tr>
2186
+<th>Name</th>
2187
+<th>Type</th>
2188
+<th>Default</th>
2189
+<th>Description</th>
2190
+</tr>
2191
+</thead>
2192
+<tbody>
2193
+<tr>
2194
+<td><code>path</code></td>
2195
+<td><code>str \| Path</code></td>
2196
+<td>—</td>
2197
+<td>Directory or file to analyze</td>
2198
+</tr>
2199
+<tr>
2200
+<td><code>min_length</code></td>
2201
+<td><code>int</code></td>
2202
+<td><code>2</code></td>
2203
+<td>Minimum cycle length to report</td>
2204
+</tr>
2205
+</tbody>
2206
+</table>
2207
+<p><strong>Returns:</strong> <code>list[Cycle]</code> or <code>CycleReport</code></p>
2208
+<hr />
2209
+<h3 id="cycle">Cycle<a class="headerlink" href="#cycle" title="Permanent link">&para;</a></h3>
2210
+<div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a><span class="nd">@dataclass</span>
2211
+<a id="__codelineno-17-2" name="__codelineno-17-2" href="#__codelineno-17-2"></a><span class="k">class</span><span class="w"> </span><span class="nc">Cycle</span><span class="p">:</span>
2212
+<a id="__codelineno-17-3" name="__codelineno-17-3" href="#__codelineno-17-3"></a> <span class="n">path</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="c1"># node names (files or functions) forming the cycle</span>
2213
+<a id="__codelineno-17-4" name="__codelineno-17-4" href="#__codelineno-17-4"></a> <span class="n">cycle_type</span><span class="p">:</span> <span class="nb">str</span> <span class="c1"># &quot;import&quot; or &quot;call&quot;</span>
2214
+<a id="__codelineno-17-5" name="__codelineno-17-5" href="#__codelineno-17-5"></a> <span class="n">length</span><span class="p">:</span> <span class="nb">int</span>
2215
+</code></pre></div>
2216
+<h3 id="cyclereport">CycleReport<a class="headerlink" href="#cyclereport" title="Permanent link">&para;</a></h3>
2217
+<div class="highlight"><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a><span class="nd">@dataclass</span>
2218
+<a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a><span class="k">class</span><span class="w"> </span><span class="nc">CycleReport</span><span class="p">:</span>
2219
+<a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a> <span class="n">import_cycles</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">Cycle</span><span class="p">]</span>
2220
+<a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a> <span class="n">call_cycles</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">Cycle</span><span class="p">]</span>
2221
+<a id="__codelineno-18-5" name="__codelineno-18-5" href="#__codelineno-18-5"></a> <span class="n">total</span><span class="p">:</span> <span class="nb">int</span>
2222
+</code></pre></div>
2223
+<p><strong>Example:</strong></p>
2224
+<div class="highlight"><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a><span class="n">detector</span> <span class="o">=</span> <span class="n">CycleDetector</span><span class="p">(</span><span class="n">store</span><span class="p">)</span>
2225
+<a id="__codelineno-19-2" name="__codelineno-19-2" href="#__codelineno-19-2"></a><span class="n">report</span> <span class="o">=</span> <span class="n">detector</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="s2">&quot;./src&quot;</span><span class="p">)</span>
2226
+<a id="__codelineno-19-3" name="__codelineno-19-3" href="#__codelineno-19-3"></a><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">report</span><span class="o">.</span><span class="n">total</span><span class="si">}</span><span class="s2"> cycles found&quot;</span><span class="p">)</span>
2227
+<a id="__codelineno-19-4" name="__codelineno-19-4" href="#__codelineno-19-4"></a><span class="k">for</span> <span class="n">cycle</span> <span class="ow">in</span> <span class="n">report</span><span class="o">.</span><span class="n">import_cycles</span><span class="p">:</span>
2228
+<a id="__codelineno-19-5" name="__codelineno-19-5" href="#__codelineno-19-5"></a> <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; Import cycle: </span><span class="si">{</span><span class="s1">&#39; -&gt; &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">cycle</span><span class="o">.</span><span class="n">path</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
2229
+</code></pre></div>
2230
+<hr />
2231
+<h2 id="testmapper">TestMapper<a class="headerlink" href="#testmapper" title="Permanent link">&para;</a></h2>
2232
+<p>Maps test functions to the production code they exercise via call graph analysis.</p>
2233
+<div class="highlight"><pre><span></span><code><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a><span class="k">class</span><span class="w"> </span><span class="nc">TestMapper</span><span class="p">:</span>
2234
+<a id="__codelineno-20-2" name="__codelineno-20-2" href="#__codelineno-20-2"></a> <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">store</span><span class="p">:</span> <span class="n">GraphStore</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span> <span class="o">...</span>
2235
+</code></pre></div>
2236
+<h3 id="map"><code>map</code><a class="headerlink" href="#map" title="Permanent link">&para;</a></h3>
2237
+<div class="highlight"><pre><span></span><code><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">map</span><span class="p">(</span>
2238
+<a id="__codelineno-21-2" name="__codelineno-21-2" href="#__codelineno-21-2"></a> <span class="bp">self</span><span class="p">,</span>
2239
+<a id="__codelineno-21-3" name="__codelineno-21-3" href="#__codelineno-21-3"></a> <span class="n">src_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Path</span><span class="p">,</span>
2240
+<a id="__codelineno-21-4" name="__codelineno-21-4" href="#__codelineno-21-4"></a> <span class="n">test_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Path</span><span class="p">,</span>
2241
+<a id="__codelineno-21-5" name="__codelineno-21-5" href="#__codelineno-21-5"></a> <span class="o">*</span><span class="p">,</span>
2242
+<a id="__codelineno-21-6" name="__codelineno-21-6" href="#__codelineno-21-6"></a> <span class="n">target</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
2243
+<a id="__codelineno-21-7" name="__codelineno-21-7" href="#__codelineno-21-7"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">TestCoverageMap</span>
2244
+</code></pre></div>
2245
+<p>Build a mapping of production functions to their covering tests.</p>
2246
+<p><strong>Parameters:</strong></p>
2247
+<table>
2248
+<thead>
2249
+<tr>
2250
+<th>Name</th>
2251
+<th>Type</th>
2252
+<th>Default</th>
2253
+<th>Description</th>
2254
+</tr>
2255
+</thead>
2256
+<tbody>
2257
+<tr>
2258
+<td><code>src_path</code></td>
2259
+<td><code>str \| Path</code></td>
2260
+<td>—</td>
2261
+<td>Production code directory</td>
2262
+</tr>
2263
+<tr>
2264
+<td><code>test_path</code></td>
2265
+<td><code>str \| Path</code></td>
2266
+<td>—</td>
2267
+<td>Test directory</td>
2268
+</tr>
2269
+<tr>
2270
+<td><code>target</code></td>
2271
+<td><code>str</code></td>
2272
+<td><code>""</code></td>
2273
+<td>If set, only map coverage for this specific function</td>
2274
+</tr>
2275
+</tbody>
2276
+</table>
2277
+<p><strong>Returns:</strong> <code>TestCoverageMap</code></p>
2278
+<hr />
2279
+<h3 id="uncovered"><code>uncovered</code><a class="headerlink" href="#uncovered" title="Permanent link">&para;</a></h3>
2280
+<div class="highlight"><pre><span></span><code><a id="__codelineno-22-1" name="__codelineno-22-1" href="#__codelineno-22-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">uncovered</span><span class="p">(</span>
2281
+<a id="__codelineno-22-2" name="__codelineno-22-2" href="#__codelineno-22-2"></a> <span class="bp">self</span><span class="p">,</span>
2282
+<a id="__codelineno-22-3" name="__codelineno-22-3" href="#__codelineno-22-3"></a> <span class="n">src_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Path</span><span class="p">,</span>
2283
+<a id="__codelineno-22-4" name="__codelineno-22-4" href="#__codelineno-22-4"></a> <span class="n">test_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Path</span><span class="p">,</span>
2284
+<a id="__codelineno-22-5" name="__codelineno-22-5" href="#__codelineno-22-5"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">[</span><span class="n">ContextNode</span><span class="p">]</span>
2285
+</code></pre></div>
2286
+<p>Return production functions and classes with no covering tests.</p>
2287
+<hr />
2288
+<h3 id="testcoveragemap">TestCoverageMap<a class="headerlink" href="#testcoveragemap" title="Permanent link">&para;</a></h3>
2289
+<div class="highlight"><pre><span></span><code><a id="__codelineno-23-1" name="__codelineno-23-1" href="#__codelineno-23-1"></a><span class="nd">@dataclass</span>
2290
+<a id="__codelineno-23-2" name="__codelineno-23-2" href="#__codelineno-23-2"></a><span class="k">class</span><span class="w"> </span><span class="nc">TestCoverageMap</span><span class="p">:</span>
2291
+<a id="__codelineno-23-3" name="__codelineno-23-3" href="#__codelineno-23-3"></a> <span class="n">coverage</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">list</span><span class="p">[</span><span class="n">ContextNode</span><span class="p">]]</span> <span class="c1"># function name -&gt; list of test nodes</span>
2292
+<a id="__codelineno-23-4" name="__codelineno-23-4" href="#__codelineno-23-4"></a> <span class="n">uncovered</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">ContextNode</span><span class="p">]</span>
2293
+<a id="__codelineno-23-5" name="__codelineno-23-5" href="#__codelineno-23-5"></a> <span class="n">coverage_percent</span><span class="p">:</span> <span class="nb">float</span>
2294
+</code></pre></div>
2295
+<table>
2296
+<thead>
2297
+<tr>
2298
+<th>Field</th>
2299
+<th>Type</th>
2300
+<th>Description</th>
2301
+</tr>
2302
+</thead>
2303
+<tbody>
2304
+<tr>
2305
+<td><code>coverage</code></td>
2306
+<td><code>dict[str, list[ContextNode]]</code></td>
2307
+<td>Maps each production function to its test nodes</td>
2308
+</tr>
2309
+<tr>
2310
+<td><code>uncovered</code></td>
2311
+<td><code>list[ContextNode]</code></td>
2312
+<td>Production functions with no tests</td>
2313
+</tr>
2314
+<tr>
2315
+<td><code>coverage_percent</code></td>
2316
+<td><code>float</code></td>
2317
+<td>Percentage of functions with at least one test</td>
2318
+</tr>
2319
+</tbody>
2320
+</table>
2321
+<p><strong>Example:</strong></p>
2322
+<div class="highlight"><pre><span></span><code><a id="__codelineno-24-1" name="__codelineno-24-1" href="#__codelineno-24-1"></a><span class="n">mapper</span> <span class="o">=</span> <span class="n">TestMapper</span><span class="p">(</span><span class="n">store</span><span class="p">)</span>
2323
+<a id="__codelineno-24-2" name="__codelineno-24-2" href="#__codelineno-24-2"></a><span class="n">coverage_map</span> <span class="o">=</span> <span class="n">mapper</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="s2">&quot;./src&quot;</span><span class="p">,</span> <span class="s2">&quot;./tests&quot;</span><span class="p">)</span>
2324
+<a id="__codelineno-24-3" name="__codelineno-24-3" href="#__codelineno-24-3"></a>
2325
+<a id="__codelineno-24-4" name="__codelineno-24-4" href="#__codelineno-24-4"></a><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Coverage: </span><span class="si">{</span><span class="n">coverage_map</span><span class="o">.</span><span class="n">coverage_percent</span><span class="si">:</span><span class="s2">.1f</span><span class="si">}</span><span class="s2">%&quot;</span><span class="p">)</span>
2326
+<a id="__codelineno-24-5" name="__codelineno-24-5" href="#__codelineno-24-5"></a><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Uncovered: </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">coverage_map</span><span class="o">.</span><span class="n">uncovered</span><span class="p">)</span><span class="si">}</span><span class="s2"> functions&quot;</span><span class="p">)</span>
2327
+<a id="__codelineno-24-6" name="__codelineno-24-6" href="#__codelineno-24-6"></a>
2328
+<a id="__codelineno-24-7" name="__codelineno-24-7" href="#__codelineno-24-7"></a><span class="k">for</span> <span class="n">fn_name</span><span class="p">,</span> <span class="n">tests</span> <span class="ow">in</span> <span class="n">coverage_map</span><span class="o">.</span><span class="n">coverage</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
2329
+<a id="__codelineno-24-8" name="__codelineno-24-8" href="#__codelineno-24-8"></a> <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">fn_name</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">tests</span><span class="p">)</span><span class="si">}</span><span class="s2"> tests&quot;</span><span class="p">)</span>
2330
+<a id="__codelineno-24-9" name="__codelineno-24-9" href="#__codelineno-24-9"></a> <span class="k">for</span> <span class="n">test</span> <span class="ow">in</span> <span class="n">tests</span><span class="p">:</span>
2331
+<a id="__codelineno-24-10" name="__codelineno-24-10" href="#__codelineno-24-10"></a> <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">test</span><span class="o">.</span><span class="n">properties</span><span class="p">[</span><span class="s1">&#39;file&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">::</span><span class="si">{</span><span class="n">test</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
2332
+</code></pre></div>
2333
+
2334
+
2335
+
2336
+
2337
+
2338
+
2339
+
2340
+
2341
+
2342
+
2343
+
2344
+
2345
+
2346
+ </article>
2347
+ </div>
2348
+
2349
+
2350
+ <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>
2351
+
2352
+<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
2353
+ </div>
2354
+
2355
+ <button type="button" class="md-top md-icon" data-md-component="top" hidden>
2356
+
2357
+ <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>
2358
+ Back to top
2359
+</button>
2360
+
2361
+ </main>
2362
+
2363
+ <footer class="md-footer">
2364
+
2365
+ <div class="md-footer-meta md-typeset">
2366
+ <div class="md-footer-meta__inner md-grid">
2367
+ <div class="md-copyright">
2368
+
2369
+ <div class="md-copyright__highlight">
2370
+ Copyright &copy; 2026 CONFLICT LLC
2371
+ </div>
2372
+
2373
+
2374
+ Made with
2375
+ <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
2376
+ Material for MkDocs
2377
+ </a>
2378
+
2379
+</div>
2380
+
2381
+
2382
+<div class="md-social">
2383
+
2384
+
2385
+
2386
+
2387
+
2388
+
2389
+
2390
+
2391
+ <a href="https://github.com/ConflictHQ/navegador" target="_blank" rel="noopener" title="github.com" class="md-social__link">
2392
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 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 2025 Fonticons, Inc.--><path d="M173.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.9M252.8 8C114.1 8 8 113.3 8 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.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.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>
2393
+ </a>
2394
+
2395
+</div>
2396
+
2397
+ </div>
2398
+ </div>
2399
+</footer>
2400
+
2401
+ </div>
2402
+ <div class="md-dialog" data-md-component="dialog">
2403
+ <div class="md-dialog__inner md-typeset"></div>
2404
+ </div>
2405
+
2406
+
2407
+
2408
+
2409
+
2410
+ <script id="__config" type="application/json">{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tabs", "navigation.sections", "navigation.expand", "navigation.top", "search.suggest", "search.highlight", "content.code.copy", "content.tabs.link", "header.autohide"], "search": "../../assets/javascripts/workers/search.2c215733.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>
2411
+
2412
+
2413
+ <script src="../../assets/javascripts/bundle.79ae519e.min.js"></script>
2414
+
2415
+
2416
+ </body>
2417
+</html>
--- a/api/analysis/index.html
+++ b/api/analysis/index.html
@@ -0,0 +1,2417 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/api/analysis/index.html
+++ b/api/analysis/index.html
@@ -0,0 +1,2417 @@
1
2 <!doctype html>
3 <html lang="en" class="no-js">
4 <head>
5
6 <meta charset="utf-8">
7 <meta name="viewport" content="width=device-width,initial-scale=1">
8
9 <meta name="description" content="Project knowledge graph for AI coding agents — code structure, business rules, and architectural decisions in one queryable graph">
10
11
12 <meta name="author" content="CONFLICT LLC">
13
14
15 <link rel="canonical" href="https://navegador.dev/api/analysis/">
16
17
18 <link rel="prev" href="../ingestion/">
19
20
21 <link rel="next" href="../graph/">
22
23
24
25
26
27 <link rel="icon" href="../../assets/images/favicon.png">
28 <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.6">
29
30
31
32 <title>Analysis - Navegador</title>
33
34
35
36 <link rel="stylesheet" href="../../assets/stylesheets/main.484c7ddc.min.css">
37
38
39 <link rel="stylesheet" href="../../assets/stylesheets/palette.ab4e12ef.min.css">
40
41
42
43
44
45
46
47
48
49
50
51
52 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
53 <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">
54 <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
55
56
57
58 <link rel="stylesheet" href="../../assets/_mkdocstrings.css">
59
60 <link rel="stylesheet" href="../../assets/css/custom.css">
61
62 <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>
63
64
65
66
67
68 </head>
69
70
71
72
73
74
75
76
77
78 <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="custom" data-md-color-accent="custom">
79
80
81 <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
82 <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
83 <label class="md-overlay" for="__drawer"></label>
84 <div data-md-component="skip">
85
86
87 <a href="#analysis-api-reference" class="md-skip">
88 Skip to content
89 </a>
90
91 </div>
92 <div data-md-component="announce">
93
94 </div>
95
96
97
98
99 <header class="md-header" data-md-component="header">
100 <nav class="md-header__inner md-grid" aria-label="Header">
101 <a href="../.." title="Navegador" class="md-header__button md-logo" aria-label="Navegador" data-md-component="logo">
102
103 <img src="../../assets/images/conflict-logo.svg" alt="logo">
104
105 </a>
106 <label class="md-header__button md-icon" for="__drawer">
107
108 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
109 </label>
110 <div class="md-header__title" data-md-component="header-title">
111 <div class="md-header__ellipsis">
112 <div class="md-header__topic">
113 <span class="md-ellipsis">
114 Navegador
115 </span>
116 </div>
117 <div class="md-header__topic" data-md-component="header-topic">
118 <span class="md-ellipsis">
119
120 Analysis
121
122 </span>
123 </div>
124 </div>
125 </div>
126
127
128 <form class="md-header__option" data-md-component="palette">
129
130
131
132
133 <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_0">
134
135 <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
136 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
137 </label>
138
139
140
141
142
143 <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">
144
145 <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_0" hidden>
146 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
147 </label>
148
149
150 </form>
151
152
153
154 <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>
155
156
157
158
159
160 <label class="md-header__button md-icon" for="__search">
161
162 <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>
163 </label>
164 <div class="md-search" data-md-component="search" role="dialog">
165 <label class="md-search__overlay" for="__search"></label>
166 <div class="md-search__inner" role="search">
167 <form class="md-search__form" name="search">
168 <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>
169 <label class="md-search__icon md-icon" for="__search">
170
171 <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>
172
173 <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>
174 </label>
175 <nav class="md-search__options" aria-label="Search">
176
177 <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
178
179 <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>
180 </button>
181 </nav>
182
183 <div class="md-search__suggest" data-md-component="search-suggest"></div>
184
185 </form>
186 <div class="md-search__output">
187 <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
188 <div class="md-search-result" data-md-component="search-result">
189 <div class="md-search-result__meta">
190 Initializing search
191 </div>
192 <ol class="md-search-result__list" role="presentation"></ol>
193 </div>
194 </div>
195 </div>
196 </div>
197 </div>
198
199
200
201 <div class="md-header__source">
202 <a href="https://github.com/ConflictHQ/navegador" title="Go to repository" class="md-source" data-md-component="source">
203 <div class="md-source__icon md-icon">
204
205 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 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 2025 Fonticons, Inc.--><path d="M173.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.9M252.8 8C114.1 8 8 113.3 8 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.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.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>
206 </div>
207 <div class="md-source__repository">
208 ConflictHQ/navegador
209 </div>
210 </a>
211 </div>
212
213 </nav>
214
215 </header>
216
217 <div class="md-container" data-md-component="container">
218
219
220
221
222
223 <nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
224 <div class="md-grid">
225 <ul class="md-tabs__list">
226
227
228
229
230
231
232 <li class="md-tabs__item">
233 <a href="../.." class="md-tabs__link">
234
235
236
237
238
239 Home
240
241 </a>
242 </li>
243
244
245
246
247
248
249
250
251
252
253 <li class="md-tabs__item">
254 <a href="../../getting-started/installation/" class="md-tabs__link">
255
256
257
258 Getting Started
259
260 </a>
261 </li>
262
263
264
265
266
267
268
269
270
271
272
273 <li class="md-tabs__item">
274 <a href="../../guide/ingestion/" class="md-tabs__link">
275
276
277
278 Guide
279
280 </a>
281 </li>
282
283
284
285
286
287
288
289
290
291
292
293 <li class="md-tabs__item">
294 <a href="../../architecture/overview/" class="md-tabs__link">
295
296
297
298 Architecture
299
300 </a>
301 </li>
302
303
304
305
306
307
308
309
310
311
312
313
314
315 <li class="md-tabs__item md-tabs__item--active">
316 <a href="../sdk/" class="md-tabs__link">
317
318
319
320 API Reference
321
322 </a>
323 </li>
324
325
326
327
328 </ul>
329 </div>
330 </nav>
331
332
333
334 <main class="md-main" data-md-component="main">
335 <div class="md-main__inner md-grid">
336
337
338
339 <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
340 <div class="md-sidebar__scrollwrap">
341 <div class="md-sidebar__inner">
342
343
344
345
346
347
348 <nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
349 <label class="md-nav__title" for="__drawer">
350 <a href="../.." title="Navegador" class="md-nav__button md-logo" aria-label="Navegador" data-md-component="logo">
351
352 <img src="../../assets/images/conflict-logo.svg" alt="logo">
353
354 </a>
355 Navegador
356 </label>
357
358 <div class="md-nav__source">
359 <a href="https://github.com/ConflictHQ/navegador" title="Go to repository" class="md-source" data-md-component="source">
360 <div class="md-source__icon md-icon">
361
362 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 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 2025 Fonticons, Inc.--><path d="M173.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.9M252.8 8C114.1 8 8 113.3 8 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.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.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>
363 </div>
364 <div class="md-source__repository">
365 ConflictHQ/navegador
366 </div>
367 </a>
368 </div>
369
370 <ul class="md-nav__list" data-md-scrollfix>
371
372
373
374
375
376
377
378 <li class="md-nav__item">
379 <a href="../.." class="md-nav__link">
380
381
382
383 <span class="md-ellipsis">
384
385
386 Home
387
388
389
390 </span>
391
392
393
394 </a>
395 </li>
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415 <li class="md-nav__item md-nav__item--nested">
416
417
418
419
420
421 <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2" >
422
423
424 <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
425
426
427
428 <span class="md-ellipsis">
429
430
431 Getting Started
432
433
434
435 </span>
436
437
438
439 <span class="md-nav__icon md-icon"></span>
440 </label>
441
442 <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
443 <label class="md-nav__title" for="__nav_2">
444 <span class="md-nav__icon md-icon"></span>
445
446
447 Getting Started
448
449
450 </label>
451 <ul class="md-nav__list" data-md-scrollfix>
452
453
454
455
456
457
458
459 <li class="md-nav__item">
460 <a href="../../getting-started/installation/" class="md-nav__link">
461
462
463
464 <span class="md-ellipsis">
465
466
467 Installation
468
469
470
471 </span>
472
473
474
475 </a>
476 </li>
477
478
479
480
481
482
483
484
485
486
487 <li class="md-nav__item">
488 <a href="../../getting-started/quickstart/" class="md-nav__link">
489
490
491
492 <span class="md-ellipsis">
493
494
495 Quick Start
496
497
498
499 </span>
500
501
502
503 </a>
504 </li>
505
506
507
508
509
510
511
512
513
514
515 <li class="md-nav__item">
516 <a href="../../getting-started/configuration/" class="md-nav__link">
517
518
519
520 <span class="md-ellipsis">
521
522
523 Configuration
524
525
526
527 </span>
528
529
530
531 </a>
532 </li>
533
534
535
536
537 </ul>
538 </nav>
539
540 </li>
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560 <li class="md-nav__item md-nav__item--nested">
561
562
563
564
565
566 <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3" >
567
568
569 <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
570
571
572
573 <span class="md-ellipsis">
574
575
576 Guide
577
578
579
580 </span>
581
582
583
584 <span class="md-nav__icon md-icon"></span>
585 </label>
586
587 <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
588 <label class="md-nav__title" for="__nav_3">
589 <span class="md-nav__icon md-icon"></span>
590
591
592 Guide
593
594
595 </label>
596 <ul class="md-nav__list" data-md-scrollfix>
597
598
599
600
601
602
603
604 <li class="md-nav__item">
605 <a href="../../guide/ingestion/" class="md-nav__link">
606
607
608
609 <span class="md-ellipsis">
610
611
612 Ingesting a Repo
613
614
615
616 </span>
617
618
619
620 </a>
621 </li>
622
623
624
625
626
627
628
629
630
631
632 <li class="md-nav__item">
633 <a href="../../guide/context-loading/" class="md-nav__link">
634
635
636
637 <span class="md-ellipsis">
638
639
640 Loading Context
641
642
643
644 </span>
645
646
647
648 </a>
649 </li>
650
651
652
653
654
655
656
657
658
659
660 <li class="md-nav__item">
661 <a href="../../guide/framework-enrichment/" class="md-nav__link">
662
663
664
665 <span class="md-ellipsis">
666
667
668 Framework Enrichment
669
670
671
672 </span>
673
674
675
676 </a>
677 </li>
678
679
680
681
682
683
684
685
686
687
688 <li class="md-nav__item">
689 <a href="../../guide/analysis/" class="md-nav__link">
690
691
692
693 <span class="md-ellipsis">
694
695
696 Structural Analysis
697
698
699
700 </span>
701
702
703
704 </a>
705 </li>
706
707
708
709
710
711
712
713
714
715
716 <li class="md-nav__item">
717 <a href="../../guide/intelligence/" class="md-nav__link">
718
719
720
721 <span class="md-ellipsis">
722
723
724 Intelligence Layer
725
726
727
728 </span>
729
730
731
732 </a>
733 </li>
734
735
736
737
738
739
740
741
742
743
744 <li class="md-nav__item">
745 <a href="../../guide/sdk/" class="md-nav__link">
746
747
748
749 <span class="md-ellipsis">
750
751
752 Python SDK
753
754
755
756 </span>
757
758
759
760 </a>
761 </li>
762
763
764
765
766
767
768
769
770
771
772 <li class="md-nav__item">
773 <a href="../../guide/graph-queries/" class="md-nav__link">
774
775
776
777 <span class="md-ellipsis">
778
779
780 Graph Queries
781
782
783
784 </span>
785
786
787
788 </a>
789 </li>
790
791
792
793
794
795
796
797
798
799
800 <li class="md-nav__item">
801 <a href="../../guide/mcp-integration/" class="md-nav__link">
802
803
804
805 <span class="md-ellipsis">
806
807
808 MCP Integration
809
810
811
812 </span>
813
814
815
816 </a>
817 </li>
818
819
820
821
822
823
824
825
826
827
828 <li class="md-nav__item">
829 <a href="../../guide/ci-cd/" class="md-nav__link">
830
831
832
833 <span class="md-ellipsis">
834
835
836 CI/CD
837
838
839
840 </span>
841
842
843
844 </a>
845 </li>
846
847
848
849
850
851
852
853
854
855
856 <li class="md-nav__item">
857 <a href="../../guide/cluster/" class="md-nav__link">
858
859
860
861 <span class="md-ellipsis">
862
863
864 Cluster Mode
865
866
867
868 </span>
869
870
871
872 </a>
873 </li>
874
875
876
877
878
879
880
881
882
883
884 <li class="md-nav__item">
885 <a href="../../guide/agent-hooks/" class="md-nav__link">
886
887
888
889 <span class="md-ellipsis">
890
891
892 Agent Hooks
893
894
895
896 </span>
897
898
899
900 </a>
901 </li>
902
903
904
905
906
907
908
909
910
911
912 <li class="md-nav__item">
913 <a href="../../guide/planopticon/" class="md-nav__link">
914
915
916
917 <span class="md-ellipsis">
918
919
920 Planopticon
921
922
923
924 </span>
925
926
927
928 </a>
929 </li>
930
931
932
933
934 </ul>
935 </nav>
936
937 </li>
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957 <li class="md-nav__item md-nav__item--nested">
958
959
960
961
962
963 <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_4" >
964
965
966 <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
967
968
969
970 <span class="md-ellipsis">
971
972
973 Architecture
974
975
976
977 </span>
978
979
980
981 <span class="md-nav__icon md-icon"></span>
982 </label>
983
984 <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
985 <label class="md-nav__title" for="__nav_4">
986 <span class="md-nav__icon md-icon"></span>
987
988
989 Architecture
990
991
992 </label>
993 <ul class="md-nav__list" data-md-scrollfix>
994
995
996
997
998
999
1000
1001 <li class="md-nav__item">
1002 <a href="../../architecture/overview/" class="md-nav__link">
1003
1004
1005
1006 <span class="md-ellipsis">
1007
1008
1009 Overview
1010
1011
1012
1013 </span>
1014
1015
1016
1017 </a>
1018 </li>
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029 <li class="md-nav__item">
1030 <a href="../../architecture/graph-schema/" class="md-nav__link">
1031
1032
1033
1034 <span class="md-ellipsis">
1035
1036
1037 Graph Schema
1038
1039
1040
1041 </span>
1042
1043
1044
1045 </a>
1046 </li>
1047
1048
1049
1050
1051 </ul>
1052 </nav>
1053
1054 </li>
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079 <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
1080
1081
1082
1083 <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" checked>
1084
1085
1086 <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="">
1087
1088
1089
1090 <span class="md-ellipsis">
1091
1092
1093 API Reference
1094
1095
1096
1097 </span>
1098
1099
1100
1101 <span class="md-nav__icon md-icon"></span>
1102 </label>
1103
1104 <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="true">
1105 <label class="md-nav__title" for="__nav_5">
1106 <span class="md-nav__icon md-icon"></span>
1107
1108
1109 API Reference
1110
1111
1112 </label>
1113 <ul class="md-nav__list" data-md-scrollfix>
1114
1115
1116
1117
1118
1119
1120
1121 <li class="md-nav__item">
1122 <a href="../sdk/" class="md-nav__link">
1123
1124
1125
1126 <span class="md-ellipsis">
1127
1128
1129 Python SDK
1130
1131
1132
1133 </span>
1134
1135
1136
1137 </a>
1138 </li>
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149 <li class="md-nav__item">
1150 <a href="../ingestion/" class="md-nav__link">
1151
1152
1153
1154 <span class="md-ellipsis">
1155
1156
1157 Ingestion
1158
1159
1160
1161 </span>
1162
1163
1164
1165 </a>
1166 </li>
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179 <li class="md-nav__item md-nav__item--active">
1180
1181 <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
1182
1183
1184
1185
1186
1187 <label class="md-nav__link md-nav__link--active" for="__toc">
1188
1189
1190
1191 <span class="md-ellipsis">
1192
1193
1194 Analysis
1195
1196
1197
1198 </span>
1199
1200
1201
1202 <span class="md-nav__icon md-icon"></span>
1203 </label>
1204
1205 <a href="./" class="md-nav__link md-nav__link--active">
1206
1207
1208
1209 <span class="md-ellipsis">
1210
1211
1212 Analysis
1213
1214
1215
1216 </span>
1217
1218
1219
1220 </a>
1221
1222
1223
1224 <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
1225
1226
1227
1228
1229
1230
1231 <label class="md-nav__title" for="__toc">
1232 <span class="md-nav__icon md-icon"></span>
1233 Table of contents
1234 </label>
1235 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
1236
1237 <li class="md-nav__item">
1238 <a href="#impactanalyzer" class="md-nav__link">
1239 <span class="md-ellipsis">
1240
1241 ImpactAnalyzer
1242
1243 </span>
1244 </a>
1245
1246 <nav class="md-nav" aria-label="ImpactAnalyzer">
1247 <ul class="md-nav__list">
1248
1249 <li class="md-nav__item">
1250 <a href="#analyze" class="md-nav__link">
1251 <span class="md-ellipsis">
1252
1253 analyze
1254
1255 </span>
1256 </a>
1257
1258 </li>
1259
1260 <li class="md-nav__item">
1261 <a href="#impactresult" class="md-nav__link">
1262 <span class="md-ellipsis">
1263
1264 ImpactResult
1265
1266 </span>
1267 </a>
1268
1269 </li>
1270
1271 </ul>
1272 </nav>
1273
1274 </li>
1275
1276 <li class="md-nav__item">
1277 <a href="#flowtracer" class="md-nav__link">
1278 <span class="md-ellipsis">
1279
1280 FlowTracer
1281
1282 </span>
1283 </a>
1284
1285 <nav class="md-nav" aria-label="FlowTracer">
1286 <ul class="md-nav__list">
1287
1288 <li class="md-nav__item">
1289 <a href="#trace" class="md-nav__link">
1290 <span class="md-ellipsis">
1291
1292 trace
1293
1294 </span>
1295 </a>
1296
1297 </li>
1298
1299 <li class="md-nav__item">
1300 <a href="#flowpath" class="md-nav__link">
1301 <span class="md-ellipsis">
1302
1303 FlowPath
1304
1305 </span>
1306 </a>
1307
1308 </li>
1309
1310 </ul>
1311 </nav>
1312
1313 </li>
1314
1315 <li class="md-nav__item">
1316 <a href="#deadcodedetector" class="md-nav__link">
1317 <span class="md-ellipsis">
1318
1319 DeadCodeDetector
1320
1321 </span>
1322 </a>
1323
1324 <nav class="md-nav" aria-label="DeadCodeDetector">
1325 <ul class="md-nav__list">
1326
1327 <li class="md-nav__item">
1328 <a href="#find" class="md-nav__link">
1329 <span class="md-ellipsis">
1330
1331 find
1332
1333 </span>
1334 </a>
1335
1336 </li>
1337
1338 <li class="md-nav__item">
1339 <a href="#deadcodecandidate" class="md-nav__link">
1340 <span class="md-ellipsis">
1341
1342 DeadCodeCandidate
1343
1344 </span>
1345 </a>
1346
1347 </li>
1348
1349 </ul>
1350 </nav>
1351
1352 </li>
1353
1354 <li class="md-nav__item">
1355 <a href="#cycledetector" class="md-nav__link">
1356 <span class="md-ellipsis">
1357
1358 CycleDetector
1359
1360 </span>
1361 </a>
1362
1363 <nav class="md-nav" aria-label="CycleDetector">
1364 <ul class="md-nav__list">
1365
1366 <li class="md-nav__item">
1367 <a href="#find_import_cycles" class="md-nav__link">
1368 <span class="md-ellipsis">
1369
1370 find_import_cycles
1371
1372 </span>
1373 </a>
1374
1375 </li>
1376
1377 <li class="md-nav__item">
1378 <a href="#find_call_cycles" class="md-nav__link">
1379 <span class="md-ellipsis">
1380
1381 find_call_cycles
1382
1383 </span>
1384 </a>
1385
1386 </li>
1387
1388 <li class="md-nav__item">
1389 <a href="#find_all" class="md-nav__link">
1390 <span class="md-ellipsis">
1391
1392 find_all
1393
1394 </span>
1395 </a>
1396
1397 </li>
1398
1399 <li class="md-nav__item">
1400 <a href="#cycle" class="md-nav__link">
1401 <span class="md-ellipsis">
1402
1403 Cycle
1404
1405 </span>
1406 </a>
1407
1408 </li>
1409
1410 <li class="md-nav__item">
1411 <a href="#cyclereport" class="md-nav__link">
1412 <span class="md-ellipsis">
1413
1414 CycleReport
1415
1416 </span>
1417 </a>
1418
1419 </li>
1420
1421 </ul>
1422 </nav>
1423
1424 </li>
1425
1426 <li class="md-nav__item">
1427 <a href="#testmapper" class="md-nav__link">
1428 <span class="md-ellipsis">
1429
1430 TestMapper
1431
1432 </span>
1433 </a>
1434
1435 <nav class="md-nav" aria-label="TestMapper">
1436 <ul class="md-nav__list">
1437
1438 <li class="md-nav__item">
1439 <a href="#map" class="md-nav__link">
1440 <span class="md-ellipsis">
1441
1442 map
1443
1444 </span>
1445 </a>
1446
1447 </li>
1448
1449 <li class="md-nav__item">
1450 <a href="#uncovered" class="md-nav__link">
1451 <span class="md-ellipsis">
1452
1453 uncovered
1454
1455 </span>
1456 </a>
1457
1458 </li>
1459
1460 <li class="md-nav__item">
1461 <a href="#testcoveragemap" class="md-nav__link">
1462 <span class="md-ellipsis">
1463
1464 TestCoverageMap
1465
1466 </span>
1467 </a>
1468
1469 </li>
1470
1471 </ul>
1472 </nav>
1473
1474 </li>
1475
1476 </ul>
1477
1478 </nav>
1479
1480 </li>
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491 <li class="md-nav__item">
1492 <a href="../graph/" class="md-nav__link">
1493
1494
1495
1496 <span class="md-ellipsis">
1497
1498
1499 Graph
1500
1501
1502
1503 </span>
1504
1505
1506
1507 </a>
1508 </li>
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519 <li class="md-nav__item">
1520 <a href="../mcp/" class="md-nav__link">
1521
1522
1523
1524 <span class="md-ellipsis">
1525
1526
1527 MCP Server
1528
1529
1530
1531 </span>
1532
1533
1534
1535 </a>
1536 </li>
1537
1538
1539
1540
1541 </ul>
1542 </nav>
1543
1544 </li>
1545
1546
1547
1548 </ul>
1549 </nav>
1550 </div>
1551 </div>
1552 </div>
1553
1554
1555
1556 <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
1557 <div class="md-sidebar__scrollwrap">
1558 <div class="md-sidebar__inner">
1559
1560
1561 <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
1562
1563
1564
1565
1566
1567
1568 <label class="md-nav__title" for="__toc">
1569 <span class="md-nav__icon md-icon"></span>
1570 Table of contents
1571 </label>
1572 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
1573
1574 <li class="md-nav__item">
1575 <a href="#impactanalyzer" class="md-nav__link">
1576 <span class="md-ellipsis">
1577
1578 ImpactAnalyzer
1579
1580 </span>
1581 </a>
1582
1583 <nav class="md-nav" aria-label="ImpactAnalyzer">
1584 <ul class="md-nav__list">
1585
1586 <li class="md-nav__item">
1587 <a href="#analyze" class="md-nav__link">
1588 <span class="md-ellipsis">
1589
1590 analyze
1591
1592 </span>
1593 </a>
1594
1595 </li>
1596
1597 <li class="md-nav__item">
1598 <a href="#impactresult" class="md-nav__link">
1599 <span class="md-ellipsis">
1600
1601 ImpactResult
1602
1603 </span>
1604 </a>
1605
1606 </li>
1607
1608 </ul>
1609 </nav>
1610
1611 </li>
1612
1613 <li class="md-nav__item">
1614 <a href="#flowtracer" class="md-nav__link">
1615 <span class="md-ellipsis">
1616
1617 FlowTracer
1618
1619 </span>
1620 </a>
1621
1622 <nav class="md-nav" aria-label="FlowTracer">
1623 <ul class="md-nav__list">
1624
1625 <li class="md-nav__item">
1626 <a href="#trace" class="md-nav__link">
1627 <span class="md-ellipsis">
1628
1629 trace
1630
1631 </span>
1632 </a>
1633
1634 </li>
1635
1636 <li class="md-nav__item">
1637 <a href="#flowpath" class="md-nav__link">
1638 <span class="md-ellipsis">
1639
1640 FlowPath
1641
1642 </span>
1643 </a>
1644
1645 </li>
1646
1647 </ul>
1648 </nav>
1649
1650 </li>
1651
1652 <li class="md-nav__item">
1653 <a href="#deadcodedetector" class="md-nav__link">
1654 <span class="md-ellipsis">
1655
1656 DeadCodeDetector
1657
1658 </span>
1659 </a>
1660
1661 <nav class="md-nav" aria-label="DeadCodeDetector">
1662 <ul class="md-nav__list">
1663
1664 <li class="md-nav__item">
1665 <a href="#find" class="md-nav__link">
1666 <span class="md-ellipsis">
1667
1668 find
1669
1670 </span>
1671 </a>
1672
1673 </li>
1674
1675 <li class="md-nav__item">
1676 <a href="#deadcodecandidate" class="md-nav__link">
1677 <span class="md-ellipsis">
1678
1679 DeadCodeCandidate
1680
1681 </span>
1682 </a>
1683
1684 </li>
1685
1686 </ul>
1687 </nav>
1688
1689 </li>
1690
1691 <li class="md-nav__item">
1692 <a href="#cycledetector" class="md-nav__link">
1693 <span class="md-ellipsis">
1694
1695 CycleDetector
1696
1697 </span>
1698 </a>
1699
1700 <nav class="md-nav" aria-label="CycleDetector">
1701 <ul class="md-nav__list">
1702
1703 <li class="md-nav__item">
1704 <a href="#find_import_cycles" class="md-nav__link">
1705 <span class="md-ellipsis">
1706
1707 find_import_cycles
1708
1709 </span>
1710 </a>
1711
1712 </li>
1713
1714 <li class="md-nav__item">
1715 <a href="#find_call_cycles" class="md-nav__link">
1716 <span class="md-ellipsis">
1717
1718 find_call_cycles
1719
1720 </span>
1721 </a>
1722
1723 </li>
1724
1725 <li class="md-nav__item">
1726 <a href="#find_all" class="md-nav__link">
1727 <span class="md-ellipsis">
1728
1729 find_all
1730
1731 </span>
1732 </a>
1733
1734 </li>
1735
1736 <li class="md-nav__item">
1737 <a href="#cycle" class="md-nav__link">
1738 <span class="md-ellipsis">
1739
1740 Cycle
1741
1742 </span>
1743 </a>
1744
1745 </li>
1746
1747 <li class="md-nav__item">
1748 <a href="#cyclereport" class="md-nav__link">
1749 <span class="md-ellipsis">
1750
1751 CycleReport
1752
1753 </span>
1754 </a>
1755
1756 </li>
1757
1758 </ul>
1759 </nav>
1760
1761 </li>
1762
1763 <li class="md-nav__item">
1764 <a href="#testmapper" class="md-nav__link">
1765 <span class="md-ellipsis">
1766
1767 TestMapper
1768
1769 </span>
1770 </a>
1771
1772 <nav class="md-nav" aria-label="TestMapper">
1773 <ul class="md-nav__list">
1774
1775 <li class="md-nav__item">
1776 <a href="#map" class="md-nav__link">
1777 <span class="md-ellipsis">
1778
1779 map
1780
1781 </span>
1782 </a>
1783
1784 </li>
1785
1786 <li class="md-nav__item">
1787 <a href="#uncovered" class="md-nav__link">
1788 <span class="md-ellipsis">
1789
1790 uncovered
1791
1792 </span>
1793 </a>
1794
1795 </li>
1796
1797 <li class="md-nav__item">
1798 <a href="#testcoveragemap" class="md-nav__link">
1799 <span class="md-ellipsis">
1800
1801 TestCoverageMap
1802
1803 </span>
1804 </a>
1805
1806 </li>
1807
1808 </ul>
1809 </nav>
1810
1811 </li>
1812
1813 </ul>
1814
1815 </nav>
1816 </div>
1817 </div>
1818 </div>
1819
1820
1821
1822 <div class="md-content" data-md-component="content">
1823
1824 <article class="md-content__inner md-typeset">
1825
1826
1827
1828
1829
1830
1831
1832
1833 <h1 id="analysis-api-reference">Analysis API Reference<a class="headerlink" href="#analysis-api-reference" title="Permanent link">&para;</a></h1>
1834 <div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="kn">from</span><span class="w"> </span><span class="nn">navegador.analysis</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span>
1835 <a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">ImpactAnalyzer</span><span class="p">,</span>
1836 <a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">FlowTracer</span><span class="p">,</span>
1837 <a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a> <span class="n">DeadCodeDetector</span><span class="p">,</span>
1838 <a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">CycleDetector</span><span class="p">,</span>
1839 <a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="n">TestMapper</span><span class="p">,</span>
1840 <a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a><span class="p">)</span>
1841 <a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a><span class="kn">from</span><span class="w"> </span><span class="nn">navegador.graph</span><span class="w"> </span><span class="kn">import</span> <span class="n">GraphStore</span>
1842 </code></pre></div>
1843 <hr />
1844 <h2 id="impactanalyzer">ImpactAnalyzer<a class="headerlink" href="#impactanalyzer" title="Permanent link">&para;</a></h2>
1845 <p>Traces downstream dependents of a function, class, or file by following <code>CALLS</code>, <code>INHERITS</code>, and <code>IMPORTS</code> edges.</p>
1846 <div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="k">class</span><span class="w"> </span><span class="nc">ImpactAnalyzer</span><span class="p">:</span>
1847 <a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a> <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">store</span><span class="p">:</span> <span class="n">GraphStore</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span> <span class="o">...</span>
1848 </code></pre></div>
1849 <h3 id="analyze"><code>analyze</code><a class="headerlink" href="#analyze" title="Permanent link">&para;</a></h3>
1850 <div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">analyze</span><span class="p">(</span>
1851 <a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a> <span class="bp">self</span><span class="p">,</span>
1852 <a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
1853 <a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a> <span class="o">*</span><span class="p">,</span>
1854 <a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a> <span class="n">node_type</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
1855 <a id="__codelineno-2-6" name="__codelineno-2-6" href="#__codelineno-2-6"></a> <span class="n">file</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
1856 <a id="__codelineno-2-7" name="__codelineno-2-7" href="#__codelineno-2-7"></a> <span class="n">depth</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
1857 <a id="__codelineno-2-8" name="__codelineno-2-8" href="#__codelineno-2-8"></a> <span class="n">include_tests</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
1858 <a id="__codelineno-2-9" name="__codelineno-2-9" href="#__codelineno-2-9"></a> <span class="n">include_knowledge</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
1859 <a id="__codelineno-2-10" name="__codelineno-2-10" href="#__codelineno-2-10"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">ImpactResult</span>
1860 </code></pre></div>
1861 <p>Compute the impact set for a given node.</p>
1862 <p><strong>Parameters:</strong></p>
1863 <table>
1864 <thead>
1865 <tr>
1866 <th>Name</th>
1867 <th>Type</th>
1868 <th>Default</th>
1869 <th>Description</th>
1870 </tr>
1871 </thead>
1872 <tbody>
1873 <tr>
1874 <td><code>name</code></td>
1875 <td><code>str</code></td>
1876 <td>—</td>
1877 <td>Name of the function, class, or file to analyze</td>
1878 </tr>
1879 <tr>
1880 <td><code>node_type</code></td>
1881 <td><code>str</code></td>
1882 <td><code>""</code></td>
1883 <td>Node type hint: <code>"Function"</code>, <code>"Class"</code>, <code>"File"</code></td>
1884 </tr>
1885 <tr>
1886 <td><code>file</code></td>
1887 <td><code>str</code></td>
1888 <td><code>""</code></td>
1889 <td>Optional file path to disambiguate</td>
1890 </tr>
1891 <tr>
1892 <td><code>depth</code></td>
1893 <td><code>int</code></td>
1894 <td><code>0</code></td>
1895 <td>Maximum hops to follow (0 = unlimited)</td>
1896 </tr>
1897 <tr>
1898 <td><code>include_tests</code></td>
1899 <td><code>bool</code></td>
1900 <td><code>False</code></td>
1901 <td>Include test files in the impact set</td>
1902 </tr>
1903 <tr>
1904 <td><code>include_knowledge</code></td>
1905 <td><code>bool</code></td>
1906 <td><code>False</code></td>
1907 <td>Include linked knowledge nodes (rules, concepts, decisions)</td>
1908 </tr>
1909 </tbody>
1910 </table>
1911 <p><strong>Returns:</strong> <code>ImpactResult</code></p>
1912 <hr />
1913 <h3 id="impactresult">ImpactResult<a class="headerlink" href="#impactresult" title="Permanent link">&para;</a></h3>
1914 <div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="nd">@dataclass</span>
1915 <a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a><span class="k">class</span><span class="w"> </span><span class="nc">ImpactResult</span><span class="p">:</span>
1916 <a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a> <span class="n">root</span><span class="p">:</span> <span class="n">ContextNode</span>
1917 <a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a> <span class="n">direct_dependents</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">ContextNode</span><span class="p">]</span>
1918 <a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a> <span class="n">transitive_dependents</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">ContextNode</span><span class="p">]</span>
1919 <a id="__codelineno-3-6" name="__codelineno-3-6" href="#__codelineno-3-6"></a> <span class="n">affected_files</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span>
1920 <a id="__codelineno-3-7" name="__codelineno-3-7" href="#__codelineno-3-7"></a> <span class="n">knowledge_nodes</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">ContextNode</span><span class="p">]</span> <span class="c1"># empty unless include_knowledge=True</span>
1921 <a id="__codelineno-3-8" name="__codelineno-3-8" href="#__codelineno-3-8"></a> <span class="n">depth_reached</span><span class="p">:</span> <span class="nb">int</span>
1922 </code></pre></div>
1923 <table>
1924 <thead>
1925 <tr>
1926 <th>Field</th>
1927 <th>Type</th>
1928 <th>Description</th>
1929 </tr>
1930 </thead>
1931 <tbody>
1932 <tr>
1933 <td><code>root</code></td>
1934 <td><code>ContextNode</code></td>
1935 <td>The analyzed node</td>
1936 </tr>
1937 <tr>
1938 <td><code>direct_dependents</code></td>
1939 <td><code>list[ContextNode]</code></td>
1940 <td>Nodes one hop away</td>
1941 </tr>
1942 <tr>
1943 <td><code>transitive_dependents</code></td>
1944 <td><code>list[ContextNode]</code></td>
1945 <td>All nodes reachable beyond one hop</td>
1946 </tr>
1947 <tr>
1948 <td><code>affected_files</code></td>
1949 <td><code>list[str]</code></td>
1950 <td>Unique file paths in the full dependent set</td>
1951 </tr>
1952 <tr>
1953 <td><code>knowledge_nodes</code></td>
1954 <td><code>list[ContextNode]</code></td>
1955 <td>Linked concepts, rules, decisions</td>
1956 </tr>
1957 <tr>
1958 <td><code>depth_reached</code></td>
1959 <td><code>int</code></td>
1960 <td>Actual maximum depth traversed</td>
1961 </tr>
1962 </tbody>
1963 </table>
1964 <p><strong>Example:</strong></p>
1965 <div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="n">store</span> <span class="o">=</span> <span class="n">GraphStore</span><span class="o">.</span><span class="n">sqlite</span><span class="p">(</span><span class="s2">&quot;.navegador/navegador.db&quot;</span><span class="p">)</span>
1966 <a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="n">analyzer</span> <span class="o">=</span> <span class="n">ImpactAnalyzer</span><span class="p">(</span><span class="n">store</span><span class="p">)</span>
1967 <a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a>
1968 <a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a><span class="n">result</span> <span class="o">=</span> <span class="n">analyzer</span><span class="o">.</span><span class="n">analyze</span><span class="p">(</span><span class="s2">&quot;validate_token&quot;</span><span class="p">,</span> <span class="n">depth</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> <span class="n">include_knowledge</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
1969 <a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">direct_dependents</span><span class="p">)</span><span class="si">}</span><span class="s2"> direct dependents&quot;</span><span class="p">)</span>
1970 <a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">transitive_dependents</span><span class="p">)</span><span class="si">}</span><span class="s2"> transitive dependents&quot;</span><span class="p">)</span>
1971 <a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Affects </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">affected_files</span><span class="p">)</span><span class="si">}</span><span class="s2"> files&quot;</span><span class="p">)</span>
1972 <a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a><span class="k">for</span> <span class="n">rule</span> <span class="ow">in</span> <span class="p">[</span><span class="n">n</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">result</span><span class="o">.</span><span class="n">knowledge_nodes</span> <span class="k">if</span> <span class="n">n</span><span class="o">.</span><span class="n">label</span> <span class="o">==</span> <span class="s2">&quot;Rule&quot;</span><span class="p">]:</span>
1973 <a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a> <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; Governed by: </span><span class="si">{</span><span class="n">rule</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">rule</span><span class="o">.</span><span class="n">properties</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;severity&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
1974 </code></pre></div>
1975 <hr />
1976 <h2 id="flowtracer">FlowTracer<a class="headerlink" href="#flowtracer" title="Permanent link">&para;</a></h2>
1977 <p>Finds call paths between two functions.</p>
1978 <div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="k">class</span><span class="w"> </span><span class="nc">FlowTracer</span><span class="p">:</span>
1979 <a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a> <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">store</span><span class="p">:</span> <span class="n">GraphStore</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span> <span class="o">...</span>
1980 </code></pre></div>
1981 <h3 id="trace"><code>trace</code><a class="headerlink" href="#trace" title="Permanent link">&para;</a></h3>
1982 <div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">trace</span><span class="p">(</span>
1983 <a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a> <span class="bp">self</span><span class="p">,</span>
1984 <a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a> <span class="n">from_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
1985 <a id="__codelineno-6-4" name="__codelineno-6-4" href="#__codelineno-6-4"></a> <span class="n">to_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
1986 <a id="__codelineno-6-5" name="__codelineno-6-5" href="#__codelineno-6-5"></a> <span class="o">*</span><span class="p">,</span>
1987 <a id="__codelineno-6-6" name="__codelineno-6-6" href="#__codelineno-6-6"></a> <span class="n">from_file</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
1988 <a id="__codelineno-6-7" name="__codelineno-6-7" href="#__codelineno-6-7"></a> <span class="n">to_file</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
1989 <a id="__codelineno-6-8" name="__codelineno-6-8" href="#__codelineno-6-8"></a> <span class="n">max_paths</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span>
1990 <a id="__codelineno-6-9" name="__codelineno-6-9" href="#__codelineno-6-9"></a> <span class="n">max_depth</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">10</span><span class="p">,</span>
1991 <a id="__codelineno-6-10" name="__codelineno-6-10" href="#__codelineno-6-10"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">[</span><span class="n">FlowPath</span><span class="p">]</span>
1992 </code></pre></div>
1993 <p>Find call chains from <code>from_name</code> to <code>to_name</code>.</p>
1994 <p><strong>Parameters:</strong></p>
1995 <table>
1996 <thead>
1997 <tr>
1998 <th>Name</th>
1999 <th>Type</th>
2000 <th>Default</th>
2001 <th>Description</th>
2002 </tr>
2003 </thead>
2004 <tbody>
2005 <tr>
2006 <td><code>from_name</code></td>
2007 <td><code>str</code></td>
2008 <td>—</td>
2009 <td>Starting function name</td>
2010 </tr>
2011 <tr>
2012 <td><code>to_name</code></td>
2013 <td><code>str</code></td>
2014 <td>—</td>
2015 <td>Target function name</td>
2016 </tr>
2017 <tr>
2018 <td><code>from_file</code></td>
2019 <td><code>str</code></td>
2020 <td><code>""</code></td>
2021 <td>File path to disambiguate start</td>
2022 </tr>
2023 <tr>
2024 <td><code>to_file</code></td>
2025 <td><code>str</code></td>
2026 <td><code>""</code></td>
2027 <td>File path to disambiguate target</td>
2028 </tr>
2029 <tr>
2030 <td><code>max_paths</code></td>
2031 <td><code>int</code></td>
2032 <td><code>3</code></td>
2033 <td>Maximum number of paths to return</td>
2034 </tr>
2035 <tr>
2036 <td><code>max_depth</code></td>
2037 <td><code>int</code></td>
2038 <td><code>10</code></td>
2039 <td>Maximum call chain length</td>
2040 </tr>
2041 </tbody>
2042 </table>
2043 <p><strong>Returns:</strong> <code>list[FlowPath]</code></p>
2044 <hr />
2045 <h3 id="flowpath">FlowPath<a class="headerlink" href="#flowpath" title="Permanent link">&para;</a></h3>
2046 <div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a><span class="nd">@dataclass</span>
2047 <a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a><span class="k">class</span><span class="w"> </span><span class="nc">FlowPath</span><span class="p">:</span>
2048 <a id="__codelineno-7-3" name="__codelineno-7-3" href="#__codelineno-7-3"></a> <span class="n">nodes</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="c1"># function names in order</span>
2049 <a id="__codelineno-7-4" name="__codelineno-7-4" href="#__codelineno-7-4"></a> <span class="n">node_details</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">ContextNode</span><span class="p">]</span>
2050 <a id="__codelineno-7-5" name="__codelineno-7-5" href="#__codelineno-7-5"></a> <span class="n">length</span><span class="p">:</span> <span class="nb">int</span>
2051 </code></pre></div>
2052 <p><strong>Example:</strong></p>
2053 <div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a><span class="n">tracer</span> <span class="o">=</span> <span class="n">FlowTracer</span><span class="p">(</span><span class="n">store</span><span class="p">)</span>
2054 <a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a><span class="n">paths</span> <span class="o">=</span> <span class="n">tracer</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="s2">&quot;create_order&quot;</span><span class="p">,</span> <span class="s2">&quot;process_payment&quot;</span><span class="p">,</span> <span class="n">max_paths</span><span class="o">=</span><span class="mi">5</span><span class="p">)</span>
2055 <a id="__codelineno-8-3" name="__codelineno-8-3" href="#__codelineno-8-3"></a><span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">path</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">paths</span><span class="p">,</span> <span class="mi">1</span><span class="p">):</span>
2056 <a id="__codelineno-8-4" name="__codelineno-8-4" href="#__codelineno-8-4"></a> <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Path </span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="s1">&#39; -&gt; &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">path</span><span class="o">.</span><span class="n">nodes</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
2057 </code></pre></div>
2058 <hr />
2059 <h2 id="deadcodedetector">DeadCodeDetector<a class="headerlink" href="#deadcodedetector" title="Permanent link">&para;</a></h2>
2060 <p>Identifies functions and classes that are never called, never imported, and not entry points.</p>
2061 <div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a><span class="k">class</span><span class="w"> </span><span class="nc">DeadCodeDetector</span><span class="p">:</span>
2062 <a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a> <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">store</span><span class="p">:</span> <span class="n">GraphStore</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span> <span class="o">...</span>
2063 </code></pre></div>
2064 <h3 id="find"><code>find</code><a class="headerlink" href="#find" title="Permanent link">&para;</a></h3>
2065 <div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">find</span><span class="p">(</span>
2066 <a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a> <span class="bp">self</span><span class="p">,</span>
2067 <a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a> <span class="n">path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Path</span><span class="p">,</span>
2068 <a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a> <span class="o">*</span><span class="p">,</span>
2069 <a id="__codelineno-10-5" name="__codelineno-10-5" href="#__codelineno-10-5"></a> <span class="n">exclude_tests</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
2070 <a id="__codelineno-10-6" name="__codelineno-10-6" href="#__codelineno-10-6"></a> <span class="n">min_confidence</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">80</span><span class="p">,</span>
2071 <a id="__codelineno-10-7" name="__codelineno-10-7" href="#__codelineno-10-7"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">[</span><span class="n">DeadCodeCandidate</span><span class="p">]</span>
2072 </code></pre></div>
2073 <p>Find potentially dead code within a path.</p>
2074 <p><strong>Parameters:</strong></p>
2075 <table>
2076 <thead>
2077 <tr>
2078 <th>Name</th>
2079 <th>Type</th>
2080 <th>Default</th>
2081 <th>Description</th>
2082 </tr>
2083 </thead>
2084 <tbody>
2085 <tr>
2086 <td><code>path</code></td>
2087 <td><code>str \| Path</code></td>
2088 <td>—</td>
2089 <td>Directory or file to analyze</td>
2090 </tr>
2091 <tr>
2092 <td><code>exclude_tests</code></td>
2093 <td><code>bool</code></td>
2094 <td><code>False</code></td>
2095 <td>Skip test files</td>
2096 </tr>
2097 <tr>
2098 <td><code>min_confidence</code></td>
2099 <td><code>int</code></td>
2100 <td><code>80</code></td>
2101 <td>Minimum confidence score to include (0–100)</td>
2102 </tr>
2103 </tbody>
2104 </table>
2105 <p><strong>Returns:</strong> <code>list[DeadCodeCandidate]</code></p>
2106 <hr />
2107 <h3 id="deadcodecandidate">DeadCodeCandidate<a class="headerlink" href="#deadcodecandidate" title="Permanent link">&para;</a></h3>
2108 <div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a><span class="nd">@dataclass</span>
2109 <a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a><span class="k">class</span><span class="w"> </span><span class="nc">DeadCodeCandidate</span><span class="p">:</span>
2110 <a id="__codelineno-11-3" name="__codelineno-11-3" href="#__codelineno-11-3"></a> <span class="n">node</span><span class="p">:</span> <span class="n">ContextNode</span>
2111 <a id="__codelineno-11-4" name="__codelineno-11-4" href="#__codelineno-11-4"></a> <span class="n">confidence</span><span class="p">:</span> <span class="nb">int</span> <span class="c1"># 0–100</span>
2112 <a id="__codelineno-11-5" name="__codelineno-11-5" href="#__codelineno-11-5"></a> <span class="n">reasons</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="c1"># e.g. [&quot;no callers&quot;, &quot;no imports&quot;, &quot;no decorator entry point&quot;]</span>
2113 </code></pre></div>
2114 <table>
2115 <thead>
2116 <tr>
2117 <th>Field</th>
2118 <th>Type</th>
2119 <th>Description</th>
2120 </tr>
2121 </thead>
2122 <tbody>
2123 <tr>
2124 <td><code>node</code></td>
2125 <td><code>ContextNode</code></td>
2126 <td>The potentially dead node</td>
2127 </tr>
2128 <tr>
2129 <td><code>confidence</code></td>
2130 <td><code>int</code></td>
2131 <td>Confidence that this is truly unreachable (higher = more confident)</td>
2132 </tr>
2133 <tr>
2134 <td><code>reasons</code></td>
2135 <td><code>list[str]</code></td>
2136 <td>Reasons for the classification</td>
2137 </tr>
2138 </tbody>
2139 </table>
2140 <p><strong>Example:</strong></p>
2141 <div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a><span class="n">detector</span> <span class="o">=</span> <span class="n">DeadCodeDetector</span><span class="p">(</span><span class="n">store</span><span class="p">)</span>
2142 <a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a><span class="n">candidates</span> <span class="o">=</span> <span class="n">detector</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s2">&quot;./src&quot;</span><span class="p">,</span> <span class="n">exclude_tests</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">min_confidence</span><span class="o">=</span><span class="mi">90</span><span class="p">)</span>
2143 <a id="__codelineno-12-3" name="__codelineno-12-3" href="#__codelineno-12-3"></a><span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">candidates</span><span class="p">:</span>
2144 <a id="__codelineno-12-4" name="__codelineno-12-4" href="#__codelineno-12-4"></a> <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;[</span><span class="si">{</span><span class="n">c</span><span class="o">.</span><span class="n">confidence</span><span class="si">}</span><span class="s2">%] </span><span class="si">{</span><span class="n">c</span><span class="o">.</span><span class="n">node</span><span class="o">.</span><span class="n">label</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">c</span><span class="o">.</span><span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">c</span><span class="o">.</span><span class="n">node</span><span class="o">.</span><span class="n">properties</span><span class="p">[</span><span class="s1">&#39;file&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
2145 <a id="__codelineno-12-5" name="__codelineno-12-5" href="#__codelineno-12-5"></a> <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; Reasons: </span><span class="si">{</span><span class="s1">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">reasons</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
2146 </code></pre></div>
2147 <hr />
2148 <h2 id="cycledetector">CycleDetector<a class="headerlink" href="#cycledetector" title="Permanent link">&para;</a></h2>
2149 <p>Finds circular dependency chains in call and import graphs.</p>
2150 <div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a><span class="k">class</span><span class="w"> </span><span class="nc">CycleDetector</span><span class="p">:</span>
2151 <a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a> <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">store</span><span class="p">:</span> <span class="n">GraphStore</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span> <span class="o">...</span>
2152 </code></pre></div>
2153 <h3 id="find_import_cycles"><code>find_import_cycles</code><a class="headerlink" href="#find_import_cycles" title="Permanent link">&para;</a></h3>
2154 <div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">find_import_cycles</span><span class="p">(</span>
2155 <a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a> <span class="bp">self</span><span class="p">,</span>
2156 <a id="__codelineno-14-3" name="__codelineno-14-3" href="#__codelineno-14-3"></a> <span class="n">path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Path</span><span class="p">,</span>
2157 <a id="__codelineno-14-4" name="__codelineno-14-4" href="#__codelineno-14-4"></a> <span class="o">*</span><span class="p">,</span>
2158 <a id="__codelineno-14-5" name="__codelineno-14-5" href="#__codelineno-14-5"></a> <span class="n">min_length</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span>
2159 <a id="__codelineno-14-6" name="__codelineno-14-6" href="#__codelineno-14-6"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">[</span><span class="n">Cycle</span><span class="p">]</span>
2160 </code></pre></div>
2161 <p>Find circular import chains within a path.</p>
2162 <hr />
2163 <h3 id="find_call_cycles"><code>find_call_cycles</code><a class="headerlink" href="#find_call_cycles" title="Permanent link">&para;</a></h3>
2164 <div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">find_call_cycles</span><span class="p">(</span>
2165 <a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a> <span class="bp">self</span><span class="p">,</span>
2166 <a id="__codelineno-15-3" name="__codelineno-15-3" href="#__codelineno-15-3"></a> <span class="n">path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Path</span><span class="p">,</span>
2167 <a id="__codelineno-15-4" name="__codelineno-15-4" href="#__codelineno-15-4"></a> <span class="o">*</span><span class="p">,</span>
2168 <a id="__codelineno-15-5" name="__codelineno-15-5" href="#__codelineno-15-5"></a> <span class="n">min_length</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span>
2169 <a id="__codelineno-15-6" name="__codelineno-15-6" href="#__codelineno-15-6"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">[</span><span class="n">Cycle</span><span class="p">]</span>
2170 </code></pre></div>
2171 <p>Find circular call chains within a path.</p>
2172 <hr />
2173 <h3 id="find_all"><code>find_all</code><a class="headerlink" href="#find_all" title="Permanent link">&para;</a></h3>
2174 <div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">find_all</span><span class="p">(</span>
2175 <a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a> <span class="bp">self</span><span class="p">,</span>
2176 <a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a> <span class="n">path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Path</span><span class="p">,</span>
2177 <a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a> <span class="o">*</span><span class="p">,</span>
2178 <a id="__codelineno-16-5" name="__codelineno-16-5" href="#__codelineno-16-5"></a> <span class="n">min_length</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">2</span><span class="p">,</span>
2179 <a id="__codelineno-16-6" name="__codelineno-16-6" href="#__codelineno-16-6"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">CycleReport</span>
2180 </code></pre></div>
2181 <p>Find both import and call cycles.</p>
2182 <p><strong>Parameters (all methods):</strong></p>
2183 <table>
2184 <thead>
2185 <tr>
2186 <th>Name</th>
2187 <th>Type</th>
2188 <th>Default</th>
2189 <th>Description</th>
2190 </tr>
2191 </thead>
2192 <tbody>
2193 <tr>
2194 <td><code>path</code></td>
2195 <td><code>str \| Path</code></td>
2196 <td>—</td>
2197 <td>Directory or file to analyze</td>
2198 </tr>
2199 <tr>
2200 <td><code>min_length</code></td>
2201 <td><code>int</code></td>
2202 <td><code>2</code></td>
2203 <td>Minimum cycle length to report</td>
2204 </tr>
2205 </tbody>
2206 </table>
2207 <p><strong>Returns:</strong> <code>list[Cycle]</code> or <code>CycleReport</code></p>
2208 <hr />
2209 <h3 id="cycle">Cycle<a class="headerlink" href="#cycle" title="Permanent link">&para;</a></h3>
2210 <div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a><span class="nd">@dataclass</span>
2211 <a id="__codelineno-17-2" name="__codelineno-17-2" href="#__codelineno-17-2"></a><span class="k">class</span><span class="w"> </span><span class="nc">Cycle</span><span class="p">:</span>
2212 <a id="__codelineno-17-3" name="__codelineno-17-3" href="#__codelineno-17-3"></a> <span class="n">path</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="c1"># node names (files or functions) forming the cycle</span>
2213 <a id="__codelineno-17-4" name="__codelineno-17-4" href="#__codelineno-17-4"></a> <span class="n">cycle_type</span><span class="p">:</span> <span class="nb">str</span> <span class="c1"># &quot;import&quot; or &quot;call&quot;</span>
2214 <a id="__codelineno-17-5" name="__codelineno-17-5" href="#__codelineno-17-5"></a> <span class="n">length</span><span class="p">:</span> <span class="nb">int</span>
2215 </code></pre></div>
2216 <h3 id="cyclereport">CycleReport<a class="headerlink" href="#cyclereport" title="Permanent link">&para;</a></h3>
2217 <div class="highlight"><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a><span class="nd">@dataclass</span>
2218 <a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a><span class="k">class</span><span class="w"> </span><span class="nc">CycleReport</span><span class="p">:</span>
2219 <a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a> <span class="n">import_cycles</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">Cycle</span><span class="p">]</span>
2220 <a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a> <span class="n">call_cycles</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">Cycle</span><span class="p">]</span>
2221 <a id="__codelineno-18-5" name="__codelineno-18-5" href="#__codelineno-18-5"></a> <span class="n">total</span><span class="p">:</span> <span class="nb">int</span>
2222 </code></pre></div>
2223 <p><strong>Example:</strong></p>
2224 <div class="highlight"><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a><span class="n">detector</span> <span class="o">=</span> <span class="n">CycleDetector</span><span class="p">(</span><span class="n">store</span><span class="p">)</span>
2225 <a id="__codelineno-19-2" name="__codelineno-19-2" href="#__codelineno-19-2"></a><span class="n">report</span> <span class="o">=</span> <span class="n">detector</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="s2">&quot;./src&quot;</span><span class="p">)</span>
2226 <a id="__codelineno-19-3" name="__codelineno-19-3" href="#__codelineno-19-3"></a><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">report</span><span class="o">.</span><span class="n">total</span><span class="si">}</span><span class="s2"> cycles found&quot;</span><span class="p">)</span>
2227 <a id="__codelineno-19-4" name="__codelineno-19-4" href="#__codelineno-19-4"></a><span class="k">for</span> <span class="n">cycle</span> <span class="ow">in</span> <span class="n">report</span><span class="o">.</span><span class="n">import_cycles</span><span class="p">:</span>
2228 <a id="__codelineno-19-5" name="__codelineno-19-5" href="#__codelineno-19-5"></a> <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; Import cycle: </span><span class="si">{</span><span class="s1">&#39; -&gt; &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">cycle</span><span class="o">.</span><span class="n">path</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
2229 </code></pre></div>
2230 <hr />
2231 <h2 id="testmapper">TestMapper<a class="headerlink" href="#testmapper" title="Permanent link">&para;</a></h2>
2232 <p>Maps test functions to the production code they exercise via call graph analysis.</p>
2233 <div class="highlight"><pre><span></span><code><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a><span class="k">class</span><span class="w"> </span><span class="nc">TestMapper</span><span class="p">:</span>
2234 <a id="__codelineno-20-2" name="__codelineno-20-2" href="#__codelineno-20-2"></a> <span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">store</span><span class="p">:</span> <span class="n">GraphStore</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span> <span class="o">...</span>
2235 </code></pre></div>
2236 <h3 id="map"><code>map</code><a class="headerlink" href="#map" title="Permanent link">&para;</a></h3>
2237 <div class="highlight"><pre><span></span><code><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">map</span><span class="p">(</span>
2238 <a id="__codelineno-21-2" name="__codelineno-21-2" href="#__codelineno-21-2"></a> <span class="bp">self</span><span class="p">,</span>
2239 <a id="__codelineno-21-3" name="__codelineno-21-3" href="#__codelineno-21-3"></a> <span class="n">src_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Path</span><span class="p">,</span>
2240 <a id="__codelineno-21-4" name="__codelineno-21-4" href="#__codelineno-21-4"></a> <span class="n">test_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Path</span><span class="p">,</span>
2241 <a id="__codelineno-21-5" name="__codelineno-21-5" href="#__codelineno-21-5"></a> <span class="o">*</span><span class="p">,</span>
2242 <a id="__codelineno-21-6" name="__codelineno-21-6" href="#__codelineno-21-6"></a> <span class="n">target</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="p">,</span>
2243 <a id="__codelineno-21-7" name="__codelineno-21-7" href="#__codelineno-21-7"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">TestCoverageMap</span>
2244 </code></pre></div>
2245 <p>Build a mapping of production functions to their covering tests.</p>
2246 <p><strong>Parameters:</strong></p>
2247 <table>
2248 <thead>
2249 <tr>
2250 <th>Name</th>
2251 <th>Type</th>
2252 <th>Default</th>
2253 <th>Description</th>
2254 </tr>
2255 </thead>
2256 <tbody>
2257 <tr>
2258 <td><code>src_path</code></td>
2259 <td><code>str \| Path</code></td>
2260 <td>—</td>
2261 <td>Production code directory</td>
2262 </tr>
2263 <tr>
2264 <td><code>test_path</code></td>
2265 <td><code>str \| Path</code></td>
2266 <td>—</td>
2267 <td>Test directory</td>
2268 </tr>
2269 <tr>
2270 <td><code>target</code></td>
2271 <td><code>str</code></td>
2272 <td><code>""</code></td>
2273 <td>If set, only map coverage for this specific function</td>
2274 </tr>
2275 </tbody>
2276 </table>
2277 <p><strong>Returns:</strong> <code>TestCoverageMap</code></p>
2278 <hr />
2279 <h3 id="uncovered"><code>uncovered</code><a class="headerlink" href="#uncovered" title="Permanent link">&para;</a></h3>
2280 <div class="highlight"><pre><span></span><code><a id="__codelineno-22-1" name="__codelineno-22-1" href="#__codelineno-22-1"></a><span class="k">def</span><span class="w"> </span><span class="nf">uncovered</span><span class="p">(</span>
2281 <a id="__codelineno-22-2" name="__codelineno-22-2" href="#__codelineno-22-2"></a> <span class="bp">self</span><span class="p">,</span>
2282 <a id="__codelineno-22-3" name="__codelineno-22-3" href="#__codelineno-22-3"></a> <span class="n">src_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Path</span><span class="p">,</span>
2283 <a id="__codelineno-22-4" name="__codelineno-22-4" href="#__codelineno-22-4"></a> <span class="n">test_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Path</span><span class="p">,</span>
2284 <a id="__codelineno-22-5" name="__codelineno-22-5" href="#__codelineno-22-5"></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">[</span><span class="n">ContextNode</span><span class="p">]</span>
2285 </code></pre></div>
2286 <p>Return production functions and classes with no covering tests.</p>
2287 <hr />
2288 <h3 id="testcoveragemap">TestCoverageMap<a class="headerlink" href="#testcoveragemap" title="Permanent link">&para;</a></h3>
2289 <div class="highlight"><pre><span></span><code><a id="__codelineno-23-1" name="__codelineno-23-1" href="#__codelineno-23-1"></a><span class="nd">@dataclass</span>
2290 <a id="__codelineno-23-2" name="__codelineno-23-2" href="#__codelineno-23-2"></a><span class="k">class</span><span class="w"> </span><span class="nc">TestCoverageMap</span><span class="p">:</span>
2291 <a id="__codelineno-23-3" name="__codelineno-23-3" href="#__codelineno-23-3"></a> <span class="n">coverage</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">list</span><span class="p">[</span><span class="n">ContextNode</span><span class="p">]]</span> <span class="c1"># function name -&gt; list of test nodes</span>
2292 <a id="__codelineno-23-4" name="__codelineno-23-4" href="#__codelineno-23-4"></a> <span class="n">uncovered</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="n">ContextNode</span><span class="p">]</span>
2293 <a id="__codelineno-23-5" name="__codelineno-23-5" href="#__codelineno-23-5"></a> <span class="n">coverage_percent</span><span class="p">:</span> <span class="nb">float</span>
2294 </code></pre></div>
2295 <table>
2296 <thead>
2297 <tr>
2298 <th>Field</th>
2299 <th>Type</th>
2300 <th>Description</th>
2301 </tr>
2302 </thead>
2303 <tbody>
2304 <tr>
2305 <td><code>coverage</code></td>
2306 <td><code>dict[str, list[ContextNode]]</code></td>
2307 <td>Maps each production function to its test nodes</td>
2308 </tr>
2309 <tr>
2310 <td><code>uncovered</code></td>
2311 <td><code>list[ContextNode]</code></td>
2312 <td>Production functions with no tests</td>
2313 </tr>
2314 <tr>
2315 <td><code>coverage_percent</code></td>
2316 <td><code>float</code></td>
2317 <td>Percentage of functions with at least one test</td>
2318 </tr>
2319 </tbody>
2320 </table>
2321 <p><strong>Example:</strong></p>
2322 <div class="highlight"><pre><span></span><code><a id="__codelineno-24-1" name="__codelineno-24-1" href="#__codelineno-24-1"></a><span class="n">mapper</span> <span class="o">=</span> <span class="n">TestMapper</span><span class="p">(</span><span class="n">store</span><span class="p">)</span>
2323 <a id="__codelineno-24-2" name="__codelineno-24-2" href="#__codelineno-24-2"></a><span class="n">coverage_map</span> <span class="o">=</span> <span class="n">mapper</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="s2">&quot;./src&quot;</span><span class="p">,</span> <span class="s2">&quot;./tests&quot;</span><span class="p">)</span>
2324 <a id="__codelineno-24-3" name="__codelineno-24-3" href="#__codelineno-24-3"></a>
2325 <a id="__codelineno-24-4" name="__codelineno-24-4" href="#__codelineno-24-4"></a><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Coverage: </span><span class="si">{</span><span class="n">coverage_map</span><span class="o">.</span><span class="n">coverage_percent</span><span class="si">:</span><span class="s2">.1f</span><span class="si">}</span><span class="s2">%&quot;</span><span class="p">)</span>
2326 <a id="__codelineno-24-5" name="__codelineno-24-5" href="#__codelineno-24-5"></a><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Uncovered: </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">coverage_map</span><span class="o">.</span><span class="n">uncovered</span><span class="p">)</span><span class="si">}</span><span class="s2"> functions&quot;</span><span class="p">)</span>
2327 <a id="__codelineno-24-6" name="__codelineno-24-6" href="#__codelineno-24-6"></a>
2328 <a id="__codelineno-24-7" name="__codelineno-24-7" href="#__codelineno-24-7"></a><span class="k">for</span> <span class="n">fn_name</span><span class="p">,</span> <span class="n">tests</span> <span class="ow">in</span> <span class="n">coverage_map</span><span class="o">.</span><span class="n">coverage</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
2329 <a id="__codelineno-24-8" name="__codelineno-24-8" href="#__codelineno-24-8"></a> <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">fn_name</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">tests</span><span class="p">)</span><span class="si">}</span><span class="s2"> tests&quot;</span><span class="p">)</span>
2330 <a id="__codelineno-24-9" name="__codelineno-24-9" href="#__codelineno-24-9"></a> <span class="k">for</span> <span class="n">test</span> <span class="ow">in</span> <span class="n">tests</span><span class="p">:</span>
2331 <a id="__codelineno-24-10" name="__codelineno-24-10" href="#__codelineno-24-10"></a> <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">test</span><span class="o">.</span><span class="n">properties</span><span class="p">[</span><span class="s1">&#39;file&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">::</span><span class="si">{</span><span class="n">test</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
2332 </code></pre></div>
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346 </article>
2347 </div>
2348
2349
2350 <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>
2351
2352 <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
2353 </div>
2354
2355 <button type="button" class="md-top md-icon" data-md-component="top" hidden>
2356
2357 <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>
2358 Back to top
2359 </button>
2360
2361 </main>
2362
2363 <footer class="md-footer">
2364
2365 <div class="md-footer-meta md-typeset">
2366 <div class="md-footer-meta__inner md-grid">
2367 <div class="md-copyright">
2368
2369 <div class="md-copyright__highlight">
2370 Copyright &copy; 2026 CONFLICT LLC
2371 </div>
2372
2373
2374 Made with
2375 <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
2376 Material for MkDocs
2377 </a>
2378
2379 </div>
2380
2381
2382 <div class="md-social">
2383
2384
2385
2386
2387
2388
2389
2390
2391 <a href="https://github.com/ConflictHQ/navegador" target="_blank" rel="noopener" title="github.com" class="md-social__link">
2392 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 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 2025 Fonticons, Inc.--><path d="M173.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.9M252.8 8C114.1 8 8 113.3 8 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.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.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>
2393 </a>
2394
2395 </div>
2396
2397 </div>
2398 </div>
2399 </footer>
2400
2401 </div>
2402 <div class="md-dialog" data-md-component="dialog">
2403 <div class="md-dialog__inner md-typeset"></div>
2404 </div>
2405
2406
2407
2408
2409
2410 <script id="__config" type="application/json">{"annotate": null, "base": "../..", "features": ["navigation.instant", "navigation.tabs", "navigation.sections", "navigation.expand", "navigation.top", "search.suggest", "search.highlight", "content.code.copy", "content.tabs.link", "header.autohide"], "search": "../../assets/javascripts/workers/search.2c215733.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>
2411
2412
2413 <script src="../../assets/javascripts/bundle.79ae519e.min.js"></script>
2414
2415
2416 </body>
2417 </html>
--- a/api/graph/index.html
+++ b/api/graph/index.html
@@ -0,0 +1,1919 @@
1
+
2
+<!doctype html>
3
+<html lang="en" class="no-js">
4
+ <head>
5
+
6
+ <meta charset="utf-8">
7
+ <meta name="viewport" content="width=device-width,initial-scale=1">
8
+
9
+ <meta name="description" content="Project knowledge graph for AI coding agents — code structure, business rules, and architectural decisions in one queryable graph">
10
+
11
+
12
+ <meta name="author" content="CONFLICT LLC">
13
+
14
+
15
+ <link rel="canonical" href="https://navegador.dev/api/graph/">
16
+
17
+
18
+ <link rel="prev" href="../analysis/">
19
+
20
+
21
+ <link rel="next" href="../mcp/">
22
+
23
+
24
+
25
+
26
+
27
+ <link rel="icon" href="../../assets/images/favicon.png">
28
+ <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.6">
29
+
30
+
31
+
32
+ <title>Graph - Navegador</title>
33
+
34
+
35
+
36
+ <link rel="stylesheet" href="../../assets/stylesheets/main.484c7ddc.min.css">
37
+
38
+
39
+ <link rel="stylesheet" href="../../assets/stylesheets/palette.ab4e12ef.min.css">
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
53
+ <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">
54
+ <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
55
+
56
+
57
+
58
+ <link rel="stylesheet" href="../../assets/_mkdocstrings.css">
59
+
60
+ <link rel="stylesheet" href="../../assets/css/custom.css">
61
+
62
+ <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>
63
+
64
+
65
+
66
+
67
+
68
+ </head>
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+ <body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="custom" data-md-color-accent="custom">
79
+
80
+
81
+ <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
82
+ <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
83
+ <label class="md-overlay" for="__drawer"></label>
84
+ <div data-md-component="skip">
85
+
86
+
87
+ <a href="#graph-api" class="md-skip">
88
+ Skip to content
89
+ </a>
90
+
91
+ </div>
92
+ <div data-md-component="announce">
93
+
94
+ </div>
95
+
96
+
97
+
98
+
99
+<header class="md-header" data-md-component="header">
100
+ <nav class="md-header__inner md-grid" aria-label="Header">
101
+ <a href="../.." title="Navegador" class="md-header__button md-logo" aria-label="Navegador" data-md-component="logo">
102
+
103
+ <img src="../../assets/images/conflict-logo.svg" alt="logo">
104
+
105
+ </a>
106
+ <label class="md-header__button md-icon" for="__drawer">
107
+
108
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
109
+ </label>
110
+ <div class="md-header__title" data-md-component="header-title">
111
+ <div class="md-header__ellipsis">
112
+ <div class="md-header__topic">
113
+ <span class="md-ellipsis">
114
+ Navegador
115
+ </span>
116
+ </div>
117
+ <div class="md-header__topic" data-md-component="header-topic">
118
+ <span class="md-ellipsis">
119
+
120
+ Graph
121
+
122
+ </span>
123
+ </div>
124
+ </div>
125
+ </div>
126
+
127
+
128
+ <form class="md-header__option" data-md-component="palette">
129
+
130
+
131
+
132
+
133
+ <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_0">
134
+
135
+ <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
136
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
137
+ </label>
138
+
139
+
140
+
141
+
142
+
143
+ <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">
144
+
145
+ <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_0" hidden>
146
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
147
+ </label>
148
+
149
+
150
+</form>
151
+
152
+
153
+
154
+ <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>
155
+
156
+
157
+
158
+
159
+
160
+ <label class="md-header__button md-icon" for="__search">
161
+
162
+ <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>
163
+ </label>
164
+ <div class="md-search" data-md-component="search" role="dialog">
165
+ <label class="md-search__overlay" for="__search"></label>
166
+ <div class="md-search__inner" role="search">
167
+ <form class="md-search__form" name="search">
168
+ <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>
169
+ <label class="md-search__icon md-icon" for="__search">
170
+
171
+ <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>
172
+
173
+ <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>
174
+ </label>
175
+ <nav class="md-search__options" aria-label="Search">
176
+
177
+ <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
178
+
179
+ <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>
180
+ </button>
181
+ </nav>
182
+
183
+ <div class="md-search__suggest" data-md-component="search-suggest"></div>
184
+
185
+ </form>
186
+ <div class="md-search__output">
187
+ <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
188
+ <div class="md-search-result" data-md-component="search-result">
189
+ <div class="md-search-result__meta">
190
+ Initializing search
191
+ </div>
192
+ <ol class="md-search-result__list" role="presentation"></ol>
193
+ </div>
194
+ </div>
195
+ </div>
196
+ </div>
197
+</div>
198
+
199
+
200
+
201
+ <div class="md-header__source">
202
+ <a href="https://github.com/ConflictHQ/navegador" title="Go to repository" class="md-source" data-md-component="source">
203
+ <div class="md-source__icon md-icon">
204
+
205
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 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 2025 Fonticons, Inc.--><path d="M173.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.9M252.8 8C114.1 8 8 113.3 8 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.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.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>
206
+ </div>
207
+ <div class="md-source__repository">
208
+ ConflictHQ/navegador
209
+ </div>
210
+</a>
211
+ </div>
212
+
213
+ </nav>
214
+
215
+</header>
216
+
217
+ <div class="md-container" data-md-component="container">
218
+
219
+
220
+
221
+
222
+
223
+<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
224
+ <div class="md-grid">
225
+ <ul class="md-tabs__list">
226
+
227
+
228
+
229
+
230
+
231
+
232
+ <li class="md-tabs__item">
233
+ <a href="../.." class="md-tabs__link">
234
+
235
+
236
+
237
+
238
+
239
+ Home
240
+
241
+ </a>
242
+ </li>
243
+
244
+
245
+
246
+
247
+
248
+
249
+
250
+
251
+
252
+
253
+ <li class="md-tabs__item">
254
+ <a href="../../getting-started/installation/" class="md-tabs__link">
255
+
256
+
257
+
258
+ Getting Started
259
+
260
+ </a>
261
+ </li>
262
+
263
+
264
+
265
+
266
+
267
+
268
+
269
+
270
+
271
+
272
+
273
+ <li class="md-tabs__item">
274
+ <a href="../../guide/ingestion/" class="md-tabs__link">
275
+
276
+
277
+
278
+ Guide
279
+
280
+ </a>
281
+ </li>
282
+
283
+
284
+
285
+
286
+
287
+
288
+
289
+
290
+
291
+
292
+
293
+ <li class="md-tabs__item">
294
+ <a href="../../architecture/overview/" class="md-tabs__link">
295
+
296
+
297
+
298
+ Architecture
299
+
300
+ </a>
301
+ </li>
302
+
303
+
304
+
305
+
306
+
307
+
308
+
309
+
310
+
311
+
312
+
313
+
314
+
315
+ <li class="md-tabs__item md-tabs__item--active">
316
+ <a href="../sdk/" class="md-tabs__link">
317
+
318
+
319
+
320
+ API Reference
321
+
322
+ </a>
323
+ </li>
324
+
325
+
326
+
327
+
328
+ </ul>
329
+ </div>
330
+</nav>
331
+
332
+
333
+
334
+ <main class="md-main" data-md-component="main">
335
+ <div class="md-main__inner md-grid">
336
+
337
+
338
+
339
+ <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
340
+ <div class="md-sidebar__scrollwrap">
341
+ <div class="md-sidebar__inner">
342
+
343
+
344
+
345
+
346
+
347
+
348
+<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
349
+ <label class="md-nav__title" for="__drawer">
350
+ <a href="../.." title="Navegador" class="md-nav__button md-logo" aria-label="Navegador" data-md-component="logo">
351
+
352
+ <img src="../../assets/images/conflict-logo.svg" alt="logo">
353
+
354
+ </a>
355
+ Navegador
356
+ </label>
357
+
358
+ <div class="md-nav__source">
359
+ <a href="https://github.com/ConflictHQ/navegador" title="Go to repository" class="md-source" data-md-component="source">
360
+ <div class="md-source__icon md-icon">
361
+
362
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 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 2025 Fonticons, Inc.--><path d="M173.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.9M252.8 8C114.1 8 8 113.3 8 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.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.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>
363
+ </div>
364
+ <div class="md-source__repository">
365
+ ConflictHQ/navegador
366
+ </div>
367
+</a>
368
+ </div>
369
+
370
+ <ul class="md-nav__list" data-md-scrollfix>
371
+
372
+
373
+
374
+
375
+
376
+
377
+
378
+ <li class="md-nav__item">
379
+ <a href="../.." class="md-nav__link">
380
+
381
+
382
+
383
+ <span class="md-ellipsis">
384
+
385
+
386
+ Home
387
+
388
+
389
+
390
+ </span>
391
+
392
+
393
+
394
+ </a>
395
+ </li>
396
+
397
+
398
+
399
+
400
+
401
+
402
+
403
+
404
+
405
+
406
+
407
+
408
+
409
+
410
+
411
+
412
+
413
+
414
+
415
+ <li class="md-nav__item md-nav__item--nested">
416
+
417
+
418
+
419
+
420
+
421
+ <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2" >
422
+
423
+
424
+ <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
425
+
426
+
427
+
428
+ <span class="md-ellipsis">
429
+
430
+
431
+ Getting Started
432
+
433
+
434
+
435
+ </span>
436
+
437
+
438
+
439
+ <span class="md-nav__icon md-icon"></span>
440
+ </label>
441
+
442
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
443
+ <label class="md-nav__title" for="__nav_2">
444
+ <span class="md-nav__icon md-icon"></span>
445
+
446
+
447
+ Getting Started
448
+
449
+
450
+ </label>
451
+ <ul class="md-nav__list" data-md-scrollfix>
452
+
453
+
454
+
455
+
456
+
457
+
458
+
459
+ <li class="md-nav__item">
460
+ <a href="../../getting-started/installation/" class="md-nav__link">
461
+
462
+
463
+
464
+ <span class="md-ellipsis">
465
+
466
+
467
+ Installation
468
+
469
+
470
+
471
+ </span>
472
+
473
+
474
+
475
+ </a>
476
+ </li>
477
+
478
+
479
+
480
+
481
+
482
+
483
+
484
+
485
+
486
+
487
+ <li class="md-nav__item">
488
+ <a href="../../getting-started/quickstart/" class="md-nav__link">
489
+
490
+
491
+
492
+ <span class="md-ellipsis">
493
+
494
+
495
+ Quick Start
496
+
497
+
498
+
499
+ </span>
500
+
501
+
502
+
503
+ </a>
504
+ </li>
505
+
506
+
507
+
508
+
509
+
510
+
511
+
512
+
513
+
514
+
515
+ <li class="md-nav__item">
516
+ <a href="../../getting-started/configuration/" class="md-nav__link">
517
+
518
+
519
+
520
+ <span class="md-ellipsis">
521
+
522
+
523
+ Configuration
524
+
525
+
526
+
527
+ </span>
528
+
529
+
530
+
531
+ </a>
532
+ </li>
533
+
534
+
535
+
536
+
537
+ </ul>
538
+ </nav>
539
+
540
+ </li>
541
+
542
+
543
+
544
+
545
+
546
+
547
+
548
+
549
+
550
+
551
+
552
+
553
+
554
+
555
+
556
+
557
+
558
+
559
+
560
+ <li class="md-nav__item md-nav__item--nested">
561
+
562
+
563
+
564
+
565
+
566
+ <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3" >
567
+
568
+
569
+ <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
570
+
571
+
572
+
573
+ <span class="md-ellipsis">
574
+
575
+
576
+ Guide
577
+
578
+
579
+
580
+ </span>
581
+
582
+
583
+
584
+ <span class="md-nav__icon md-icon"></span>
585
+ </label>
586
+
587
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
588
+ <label class="md-nav__title" for="__nav_3">
589
+ <span class="md-nav__icon md-icon"></span>
590
+
591
+
592
+ Guide
593
+
594
+
595
+ </label>
596
+ <ul class="md-nav__list" data-md-scrollfix>
597
+
598
+
599
+
600
+
601
+
602
+
603
+
604
+ <li class="md-nav__item">
605
+ <a href="../../guide/ingestion/" class="md-nav__link">
606
+
607
+
608
+
609
+ <span class="md-ellipsis">
610
+
611
+
612
+ Ingesting a Repo
613
+
614
+
615
+
616
+ </span>
617
+
618
+
619
+
620
+ </a>
621
+ </li>
622
+
623
+
624
+
625
+
626
+
627
+
628
+
629
+
630
+
631
+
632
+ <li class="md-nav__item">
633
+ <a href="../../guide/context-loading/" class="md-nav__link">
634
+
635
+
636
+
637
+ <span class="md-ellipsis">
638
+
639
+
640
+ Loading Context
641
+
642
+
643
+
644
+ </span>
645
+
646
+
647
+
648
+ </a>
649
+ </li>
650
+
651
+
652
+
653
+
654
+
655
+
656
+
657
+
658
+
659
+
660
+ <li class="md-nav__item">
661
+ <a href="../../guide/framework-enrichment/" class="md-nav__link">
662
+
663
+
664
+
665
+ <span class="md-ellipsis">
666
+
667
+
668
+ Framework Enrichment
669
+
670
+
671
+
672
+ </span>
673
+
674
+
675
+
676
+ </a>
677
+ </li>
678
+
679
+
680
+
681
+
682
+
683
+
684
+
685
+
686
+
687
+
688
+ <li class="md-nav__item">
689
+ <a href="../../guide/analysis/" class="md-nav__link">
690
+
691
+
692
+
693
+ <span class="md-ellipsis">
694
+
695
+
696
+ Structural Analysis
697
+
698
+
699
+
700
+ </span>
701
+
702
+
703
+
704
+ </a>
705
+ </li>
706
+
707
+
708
+
709
+
710
+
711
+
712
+
713
+
714
+
715
+
716
+ <li class="md-nav__item">
717
+ <a href="../../guide/intelligence/" class="md-nav__link">
718
+
719
+
720
+
721
+ <span class="md-ellipsis">
722
+
723
+
724
+ Intelligence Layer
725
+
726
+
727
+
728
+ </span>
729
+
730
+
731
+
732
+ </a>
733
+ </li>
734
+
735
+
736
+
737
+
738
+
739
+
740
+
741
+
742
+
743
+
744
+ <li class="md-nav__item">
745
+ <a href="../../guide/sdk/" class="md-nav__link">
746
+
747
+
748
+
749
+ <span class="md-ellipsis">
750
+
751
+
752
+ Python SDK
753
+
754
+
755
+
756
+ </span>
757
+
758
+
759
+
760
+ </a>
761
+ </li>
762
+
763
+
764
+
765
+
766
+
767
+
768
+
769
+
770
+
771
+
772
+ <li class="md-nav__item">
773
+ <a href="../../guide/graph-queries/" class="md-nav__link">
774
+
775
+
776
+
777
+ <span class="md-ellipsis">
778
+
779
+
780
+ Graph Queries
781
+
782
+
783
+
784
+ </span>
785
+
786
+
787
+
788
+ </a>
789
+ </li>
790
+
791
+
792
+
793
+
794
+
795
+
796
+
797
+
798
+
799
+
800
+ <li class="md-nav__item">
801
+ <a href="../../guide/mcp-integration/" class="md-nav__link">
802
+
803
+
804
+
805
+ <span class="md-ellipsis">
806
+
807
+
808
+ MCP Integration
809
+
810
+
811
+
812
+ </span>
813
+
814
+
815
+
816
+ </a>
817
+ </li>
818
+
819
+
820
+
821
+
822
+
823
+
824
+
825
+
826
+
827
+
828
+ <li class="md-nav__item">
829
+ <a href="../../guide/ci-cd/" class="md-nav__link">
830
+
831
+
832
+
833
+ <span class="md-ellipsis">
834
+
835
+
836
+ CI/CD
837
+
838
+
839
+
840
+ </span>
841
+
842
+
843
+
844
+ </a>
845
+ </li>
846
+
847
+
848
+
849
+
850
+
851
+
852
+
853
+
854
+
855
+
856
+ <li class="md-nav__item">
857
+ <a href="../../guide/cluster/" class="md-nav__link">
858
+
859
+
860
+
861
+ <span class="md-ellipsis">
862
+
863
+
864
+ Cluster Mode
865
+
866
+
867
+
868
+ </span>
869
+
870
+
871
+
872
+ </a>
873
+ </li>
874
+
875
+
876
+
877
+
878
+
879
+
880
+
881
+
882
+
883
+
884
+ <li class="md-nav__item">
885
+ <a href="../../guide/agent-hooks/" class="md-nav__link">
886
+
887
+
888
+
889
+ <span class="md-ellipsis">
890
+
891
+
892
+ Agent Hooks
893
+
894
+
895
+
896
+ </span>
897
+
898
+
899
+
900
+ </a>
901
+ </li>
902
+
903
+
904
+
905
+
906
+
907
+
908
+
909
+
910
+
911
+
912
+ <li class="md-nav__item">
913
+ <a href="../../guide/planopticon/" class="md-nav__link">
914
+
915
+
916
+
917
+ <span class="md-ellipsis">
918
+
919
+
920
+ Planopticon
921
+
922
+
923
+
924
+ </span>
925
+
926
+
927
+
928
+ </a>
929
+ </li>
930
+
931
+
932
+
933
+
934
+ </ul>
935
+ </nav>
936
+
937
+ </li>
938
+
939
+
940
+
941
+
942
+
943
+
944
+
945
+
946
+
947
+
948
+
949
+
950
+
951
+
952
+
953
+
954
+
955
+
956
+
957
+ <li class="md-nav__item md-nav__item--nested">
958
+
959
+
960
+
961
+
962
+
963
+ <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_4" >
964
+
965
+
966
+ <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
967
+
968
+
969
+
970
+ <span class="md-ellipsis">
971
+
972
+
973
+ Architecture
974
+
975
+
976
+
977
+ </span>
978
+
979
+
980
+
981
+ <span class="md-nav__icon md-icon"></span>
982
+ </label>
983
+
984
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
985
+ <label class="md-nav__title" for="__nav_4">
986
+ <span class="md-nav__icon md-icon"></span>
987
+
988
+
989
+ Architecture
990
+
991
+
992
+ </label>
993
+ <ul class="md-nav__list" data-md-scrollfix>
994
+
995
+
996
+
997
+
998
+
999
+
1000
+
1001
+ <li class="md-nav__item">
1002
+ <a href="../../architecture/overview/" class="md-nav__link">
1003
+
1004
+
1005
+
1006
+ <span class="md-ellipsis">
1007
+
1008
+
1009
+ Overview
1010
+
1011
+
1012
+
1013
+ </span>
1014
+
1015
+
1016
+
1017
+ </a>
1018
+ </li>
1019
+
1020
+
1021
+
1022
+
1023
+
1024
+
1025
+
1026
+
1027
+
1028
+
1029
+ <li class="md-nav__item">
1030
+ <a href="../../architecture/graph-schema/" class="md-nav__link">
1031
+
1032
+
1033
+
1034
+ <span class="md-ellipsis">
1035
+
1036
+
1037
+ Graph Schema
1038
+
1039
+
1040
+
1041
+ </span>
1042
+
1043
+
1044
+
1045
+ </a>
1046
+ </li>
1047
+
1048
+
1049
+
1050
+
1051
+ </ul>
1052
+ </nav>
1053
+
1054
+ </li>
1055
+
1056
+
1057
+
1058
+
1059
+
1060
+
1061
+
1062
+
1063
+
1064
+
1065
+
1066
+
1067
+
1068
+
1069
+
1070
+
1071
+
1072
+
1073
+
1074
+
1075
+
1076
+
1077
+
1078
+
1079
+ <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
1080
+
1081
+
1082
+
1083
+ <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" checked>
1084
+
1085
+
1086
+ <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="">
1087
+
1088
+
1089
+
1090
+ <span class="md-ellipsis">
1091
+
1092
+
1093
+ API Reference
1094
+
1095
+
1096
+
1097
+ </span>
1098
+
1099
+
1100
+
1101
+ <span class="md-nav__icon md-icon"></span>
1102
+ </label>
1103
+
1104
+ <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="true">
1105
+ <label class="md-nav__title" for="__nav_5">
1106
+ <span class="md-nav__icon md-icon"></span>
1107
+
1108
+
1109
+ API Reference
1110
+
1111
+
1112
+ </label>
1113
+ <ul class="md-nav__list" data-md-scrollfix>
1114
+
1115
+
1116
+
1117
+
1118
+
1119
+
1120
+
1121
+ <li class="md-nav__item">
1122
+ <a href="../sdk/" class="md-nav__link">
1123
+
1124
+
1125
+
1126
+ <span class="md-ellipsis">
1127
+
1128
+
1129
+ Python SDK
1130
+
1131
+
1132
+
1133
+ </span>
1134
+
1135
+
1136
+
1137
+ </a>
1138
+ </li>
1139
+
1140
+
1141
+
1142
+
1143
+
1144
+
1145
+
1146
+
1147
+
1148
+
1149
+ <li class="md-nav__item">
1150
+ <a href="../ingestion/" class="md-nav__link">
1151
+
1152
+
1153
+
1154
+ <span class="md-ellipsis">
1155
+
1156
+
1157
+ Ingestion
1158
+
1159
+
1160
+
1161
+ </span>
1162
+
1163
+
1164
+
1165
+ </a>
1166
+ </li>
1167
+
1168
+
1169
+
1170
+
1171
+
1172
+
1173
+
1174
+
1175
+
1176
+
1177
+ <li class="md-nav__item">
1178
+ <a href="../analysis/" class="md-nav__link">
1179
+
1180
+
1181
+
1182
+ <span class="md-ellipsis">
1183
+
1184
+
1185
+ Analysis
1186
+