@kage-core/kage-graph-mcp 1.1.35 → 1.1.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +157 -135
- package/dist/cli.js +429 -3
- package/dist/daemon.js +314 -7
- package/dist/index.js +329 -3
- package/dist/kernel.js +3255 -64
- package/package.json +1 -1
- package/viewer/app.js +2421 -316
- package/viewer/data.html +296 -0
- package/viewer/graph.html +296 -0
- package/viewer/index.html +170 -165
- package/viewer/intel.html +296 -0
- package/viewer/memory.html +367 -0
- package/viewer/owners.html +296 -0
- package/viewer/review.html +307 -0
- package/viewer/styles.css +1581 -371
package/viewer/index.html
CHANGED
|
@@ -3,95 +3,83 @@
|
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
-
<title>Kage
|
|
7
|
-
<link rel="stylesheet" href="./styles.css?v=
|
|
6
|
+
<title>Kage viewer</title>
|
|
7
|
+
<link rel="stylesheet" href="./styles.css?v=36">
|
|
8
8
|
</head>
|
|
9
9
|
<body>
|
|
10
|
-
<
|
|
11
|
-
<
|
|
12
|
-
<
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
<
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
10
|
+
<div class="viewer-shell">
|
|
11
|
+
<aside class="repo-sidebar" aria-label="Repository navigation">
|
|
12
|
+
<a class="sidebar-brand" href="../">
|
|
13
|
+
<span class="brand-mark">K</span>
|
|
14
|
+
<span>Kage</span>
|
|
15
|
+
</a>
|
|
16
|
+
<div class="repo-card">
|
|
17
|
+
<span>Repository</span>
|
|
18
|
+
<strong>kage-core/Kage</strong>
|
|
19
|
+
</div>
|
|
20
|
+
<nav class="viewer-sections" aria-label="Kage viewer sections">
|
|
21
|
+
<a class="viewer-section active" href="./" data-viewer-page="overview" aria-current="page">Overview</a>
|
|
22
|
+
<a class="viewer-section" href="./graph.html" data-viewer-page="graph">Graph</a>
|
|
23
|
+
<a class="viewer-section" href="./memory.html" data-viewer-page="memory">Memory</a>
|
|
24
|
+
<a class="viewer-section" href="./intel.html" data-viewer-page="intel">Risks</a>
|
|
25
|
+
<a class="viewer-section" href="./review.html" data-viewer-page="review">Review</a>
|
|
26
|
+
</nav>
|
|
27
|
+
<nav class="sidebar-secondary" aria-label="Diagnostics">
|
|
28
|
+
<span class="sidebar-secondary-label">Diagnostics</span>
|
|
29
|
+
<a href="./owners.html" data-viewer-page="owners">Owners</a>
|
|
30
|
+
<a href="./data.html" data-viewer-page="data">Artifacts</a>
|
|
31
|
+
</nav>
|
|
32
|
+
<nav class="sidebar-links" aria-label="Kage links">
|
|
33
|
+
<a href="https://kage-core.com/">Home</a>
|
|
34
|
+
<a href="https://kage-core.com/guide.html">Docs</a>
|
|
35
|
+
<a href="https://kage-core.com/releases.html">Releases</a>
|
|
36
|
+
<a href="https://github.com/kage-core/Kage">GitHub</a>
|
|
37
|
+
</nav>
|
|
38
|
+
</aside>
|
|
37
39
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
<
|
|
43
|
-
<
|
|
44
|
-
<p>Kage turns repo-local memory packets, source graph facts, git signals, and review state into one navigable dashboard before you dive into the graph.</p>
|
|
45
|
-
</div>
|
|
46
|
-
<div class="dashboard-actions">
|
|
47
|
-
<button type="button" data-viewer-section="graph">Open graph</button>
|
|
48
|
-
<button type="button" data-dashboard-action="intelligence">Repo intelligence</button>
|
|
49
|
-
<button type="button" data-dashboard-action="memory">Memory review</button>
|
|
40
|
+
<section class="viewer-main">
|
|
41
|
+
<header class="app-header">
|
|
42
|
+
<div class="brand-block">
|
|
43
|
+
<span class="eyebrow" id="pageEyebrow">kage://overview</span>
|
|
44
|
+
<h1 id="pageTitle">Repo dashboard</h1>
|
|
45
|
+
<p id="graphSummary">What is safe to change next, what needs attention, and what is ready to hand off.</p>
|
|
50
46
|
</div>
|
|
51
|
-
|
|
47
|
+
<div id="statusStrip" class="status-strip" aria-label="Graph health"></div>
|
|
48
|
+
<div id="autoLoadStatus" class="autoload-status">auto-load: waiting</div>
|
|
49
|
+
<label class="file-picker">
|
|
50
|
+
<span>Manual JSON</span>
|
|
51
|
+
<input id="graphFile" type="file" accept=".json,application/json" multiple>
|
|
52
|
+
</label>
|
|
53
|
+
</header>
|
|
54
|
+
|
|
55
|
+
<main class="layout">
|
|
56
|
+
<section class="dashboard-panel" aria-label="Kage repo dashboard">
|
|
52
57
|
<div id="dashboardStats" class="dashboard-stats" aria-label="Repo dashboard stats"></div>
|
|
58
|
+
<div id="dashboardCharts" class="dashboard-charts" aria-label="Repo health charts"></div>
|
|
53
59
|
<div class="dashboard-grid">
|
|
54
|
-
<article class="dashboard-card" id="dashboardMemory">
|
|
60
|
+
<article class="dashboard-card primary" id="dashboardMemory">
|
|
55
61
|
<div class="dashboard-card-head"><span>Memory</span><strong>repo lore</strong></div>
|
|
56
|
-
<h3>
|
|
57
|
-
<p>Approved packets, memory-code links, and review state.</p>
|
|
62
|
+
<h3>Reusable repo context</h3>
|
|
58
63
|
<ul></ul>
|
|
59
|
-
<
|
|
64
|
+
<a href="./memory.html" data-viewer-page="memory">Open memory</a>
|
|
60
65
|
</article>
|
|
61
|
-
<article class="dashboard-card" id="dashboardGraph">
|
|
66
|
+
<article class="dashboard-card primary" id="dashboardGraph">
|
|
62
67
|
<div class="dashboard-card-head"><span>Graph</span><strong>source map</strong></div>
|
|
63
|
-
<h3>
|
|
64
|
-
<p>Explore the source graph and memory-code bridge.</p>
|
|
65
|
-
<ul></ul>
|
|
66
|
-
<button type="button" data-viewer-section="graph">Explore graph</button>
|
|
67
|
-
</article>
|
|
68
|
-
<article class="dashboard-card" id="dashboardIntel">
|
|
69
|
-
<div class="dashboard-card-head"><span>Intel</span><strong>reports</strong></div>
|
|
70
|
-
<h3>Risk, modules, owners, decisions</h3>
|
|
71
|
-
<p>Operational maps generated from local artifacts.</p>
|
|
68
|
+
<h3>What to inspect before editing</h3>
|
|
72
69
|
<ul></ul>
|
|
73
|
-
<
|
|
70
|
+
<a href="./graph.html" data-viewer-page="graph">Explore graph</a>
|
|
74
71
|
</article>
|
|
75
|
-
<article class="dashboard-card" id="
|
|
76
|
-
<div class="dashboard-card-head"><span>
|
|
77
|
-
<h3>
|
|
78
|
-
<p>Git and graph signals for risky change areas.</p>
|
|
72
|
+
<article class="dashboard-card primary" id="dashboardIntel">
|
|
73
|
+
<div class="dashboard-card-head"><span>Risks</span><strong>reports</strong></div>
|
|
74
|
+
<h3>What needs attention</h3>
|
|
79
75
|
<ul></ul>
|
|
80
|
-
<
|
|
76
|
+
<a href="./intel.html" data-viewer-page="intel">Open risks</a>
|
|
81
77
|
</article>
|
|
82
|
-
<article class="dashboard-card" id="dashboardReview">
|
|
78
|
+
<article class="dashboard-card primary" id="dashboardReview">
|
|
83
79
|
<div class="dashboard-card-head"><span>Review</span><strong>handoff</strong></div>
|
|
84
|
-
<h3>
|
|
85
|
-
<p>Check pending memory, graph freshness, and proof metrics.</p>
|
|
86
|
-
<ul></ul>
|
|
87
|
-
<button type="button" data-dashboard-action="review">Open review</button>
|
|
88
|
-
</article>
|
|
89
|
-
<article class="dashboard-card" id="dashboardWorkspace">
|
|
90
|
-
<div class="dashboard-card-head"><span>Workspace</span><strong>team map</strong></div>
|
|
91
|
-
<h3>Cross-repo links and collaboration</h3>
|
|
92
|
-
<p>Package links, contracts, topics, and co-change pairs.</p>
|
|
80
|
+
<h3>Ready for handoff?</h3>
|
|
93
81
|
<ul></ul>
|
|
94
|
-
<
|
|
82
|
+
<a href="./review.html" data-viewer-page="review">Open review</a>
|
|
95
83
|
</article>
|
|
96
84
|
</div>
|
|
97
85
|
</section>
|
|
@@ -109,24 +97,6 @@
|
|
|
109
97
|
<button id="zoomIn" type="button">+</button>
|
|
110
98
|
</div>
|
|
111
99
|
</div>
|
|
112
|
-
<div class="graph-quickbar" aria-label="Graph quick controls">
|
|
113
|
-
<div class="quick-group" aria-label="Scope">
|
|
114
|
-
<span>Scope</span>
|
|
115
|
-
<button type="button" data-quick-view="combined">Combined</button>
|
|
116
|
-
<button type="button" data-quick-view="memory">Memory</button>
|
|
117
|
-
<button type="button" data-quick-view="code">Code</button>
|
|
118
|
-
</div>
|
|
119
|
-
<div class="quick-group" aria-label="Render mode">
|
|
120
|
-
<span>Mode</span>
|
|
121
|
-
<button type="button" data-quick-render="2d">2D</button>
|
|
122
|
-
<button type="button" data-quick-render="3d">3D</button>
|
|
123
|
-
</div>
|
|
124
|
-
<div class="quick-group quick-actions" aria-label="Graph tools">
|
|
125
|
-
<button id="quickSearch" type="button">Search</button>
|
|
126
|
-
<button id="quickPath" type="button">Path</button>
|
|
127
|
-
<button id="quickInspector" type="button">Inspect</button>
|
|
128
|
-
</div>
|
|
129
|
-
</div>
|
|
130
100
|
<div id="graphCanvasWrap" class="graph-canvas-wrap">
|
|
131
101
|
<canvas id="graphCanvas" aria-label="Interactive Kage memory and code graph"></canvas>
|
|
132
102
|
<div id="threeGraph" class="three-graph" aria-label="Interactive 3D Kage memory and code graph"></div>
|
|
@@ -150,84 +120,60 @@
|
|
|
150
120
|
</section>
|
|
151
121
|
|
|
152
122
|
<section class="workspace-shell" aria-label="Viewer workspace">
|
|
153
|
-
<div class="workspace-top">
|
|
154
|
-
<nav class="workspace-tabs" aria-label="Viewer panels">
|
|
155
|
-
<button class="workspace-tab active" type="button" data-workspace-tab="controls" aria-selected="true">Tools</button>
|
|
156
|
-
<button class="workspace-tab" type="button" data-workspace-tab="inspector" aria-selected="false">Inspect</button>
|
|
157
|
-
<button class="workspace-tab" type="button" data-workspace-tab="intelligence" aria-selected="false">Intel</button>
|
|
158
|
-
<button class="workspace-tab" type="button" data-workspace-tab="review" aria-selected="false">Review</button>
|
|
159
|
-
<button class="workspace-tab" type="button" data-workspace-tab="tables" aria-selected="false">Data</button>
|
|
160
|
-
</nav>
|
|
161
|
-
<button id="closeWorkspace" class="workspace-close" type="button" aria-label="Close viewer workspace">x</button>
|
|
162
|
-
</div>
|
|
163
|
-
|
|
164
123
|
<div class="workspace-body">
|
|
165
124
|
<aside class="control-panel" aria-label="Graph controls">
|
|
166
125
|
<div class="panel-heading compact">
|
|
167
|
-
<h2>
|
|
126
|
+
<h2>Find Context</h2>
|
|
168
127
|
<span id="workspaceMode">Combined</span>
|
|
169
128
|
</div>
|
|
170
129
|
<div id="metricsSummary" class="metrics-grid"></div>
|
|
171
130
|
<label>
|
|
172
|
-
<span>
|
|
173
|
-
<input id="searchInput" type="search" placeholder="
|
|
131
|
+
<span>File, symbol, route, test, or memory</span>
|
|
132
|
+
<input id="searchInput" type="search" placeholder="Search before changing code...">
|
|
174
133
|
</label>
|
|
175
|
-
<div class="
|
|
176
|
-
<
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
</div>
|
|
180
|
-
<div class="path-finder-inputs">
|
|
181
|
-
<input id="pathFromInput" type="search" list="pathNodeOptions" placeholder="From file, symbol, route...">
|
|
182
|
-
<input id="pathToInput" type="search" list="pathNodeOptions" placeholder="To file, symbol, route...">
|
|
183
|
-
<button id="findPath" type="button">Find</button>
|
|
184
|
-
</div>
|
|
185
|
-
<datalist id="pathNodeOptions"></datalist>
|
|
186
|
-
<div id="pathStatus" class="path-status">Pick two code nodes to trace a dependency path.</div>
|
|
187
|
-
<div id="pathResult" class="path-result"></div>
|
|
134
|
+
<div class="journey-actions" aria-label="Graph journeys">
|
|
135
|
+
<button id="showUntrusted" type="button">Show untrusted edges</button>
|
|
136
|
+
<button id="showUncovered" type="button">Show code without memory</button>
|
|
137
|
+
<button id="showMemoryCode" type="button">Show memory-code links</button>
|
|
188
138
|
</div>
|
|
189
|
-
<
|
|
190
|
-
<
|
|
191
|
-
<
|
|
192
|
-
<
|
|
193
|
-
<
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
<
|
|
200
|
-
<
|
|
201
|
-
<
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
<
|
|
206
|
-
|
|
207
|
-
<
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
<
|
|
212
|
-
|
|
213
|
-
<
|
|
214
|
-
|
|
215
|
-
|
|
139
|
+
<details class="advanced-controls">
|
|
140
|
+
<summary>More filters</summary>
|
|
141
|
+
<label>
|
|
142
|
+
<span>View</span>
|
|
143
|
+
<select id="viewMode">
|
|
144
|
+
<option value="combined">Combined</option>
|
|
145
|
+
<option value="memory">Memory</option>
|
|
146
|
+
<option value="code">Code</option>
|
|
147
|
+
</select>
|
|
148
|
+
</label>
|
|
149
|
+
<label>
|
|
150
|
+
<span>Node Type</span>
|
|
151
|
+
<select id="typeFilter">
|
|
152
|
+
<option value="">All types</option>
|
|
153
|
+
</select>
|
|
154
|
+
</label>
|
|
155
|
+
<label>
|
|
156
|
+
<span>Relation</span>
|
|
157
|
+
<select id="relationFilter">
|
|
158
|
+
<option value="">All relations</option>
|
|
159
|
+
</select>
|
|
160
|
+
</label>
|
|
161
|
+
<label>
|
|
162
|
+
<span>Max Nodes</span>
|
|
163
|
+
<select id="maxNodes">
|
|
164
|
+
<option value="60">60</option>
|
|
165
|
+
<option value="90" selected>90</option>
|
|
166
|
+
<option value="140">140</option>
|
|
167
|
+
<option value="220">220</option>
|
|
168
|
+
</select>
|
|
169
|
+
</label>
|
|
170
|
+
<label class="toggle-control">
|
|
171
|
+
<input id="showDependencies" type="checkbox">
|
|
172
|
+
<span>Include external dependencies</span>
|
|
173
|
+
</label>
|
|
174
|
+
<button id="resetView" type="button">Reset filters</button>
|
|
175
|
+
</details>
|
|
216
176
|
<input id="scopeFilter" type="hidden" value="signal">
|
|
217
|
-
<label>
|
|
218
|
-
<span>Max Nodes</span>
|
|
219
|
-
<select id="maxNodes">
|
|
220
|
-
<option value="60">60</option>
|
|
221
|
-
<option value="90" selected>90</option>
|
|
222
|
-
<option value="140">140</option>
|
|
223
|
-
<option value="220">220</option>
|
|
224
|
-
</select>
|
|
225
|
-
</label>
|
|
226
|
-
<label class="toggle-control">
|
|
227
|
-
<input id="showDependencies" type="checkbox">
|
|
228
|
-
<span>Show dependency noise</span>
|
|
229
|
-
</label>
|
|
230
|
-
<button id="resetView" type="button">Reset</button>
|
|
231
177
|
<div class="legend" aria-label="Legend">
|
|
232
178
|
<span><i class="dot memory-dot"></i>memory packet</span>
|
|
233
179
|
<span><i class="dot code-dot"></i>code artifact</span>
|
|
@@ -235,19 +181,72 @@
|
|
|
235
181
|
</div>
|
|
236
182
|
</aside>
|
|
237
183
|
|
|
184
|
+
<aside class="graph-insights-panel" aria-label="Graph insights">
|
|
185
|
+
<div class="panel-heading compact">
|
|
186
|
+
<h2>Before You Change</h2>
|
|
187
|
+
<span id="graphInsightStatus">signals</span>
|
|
188
|
+
</div>
|
|
189
|
+
<div id="graphInsights" class="graph-insights"></div>
|
|
190
|
+
</aside>
|
|
191
|
+
|
|
238
192
|
<aside class="details-panel" aria-label="Selection details">
|
|
239
193
|
<div class="panel-heading compact">
|
|
240
194
|
<h2>Inspector</h2>
|
|
241
195
|
<span id="selectionStatus">No selection</span>
|
|
242
196
|
</div>
|
|
243
197
|
<div id="selectionDetails" class="details-empty">Select an entity or edge.</div>
|
|
198
|
+
<div class="path-finder inspector-path-finder" aria-label="Dependency path finder">
|
|
199
|
+
<div class="path-finder-header">
|
|
200
|
+
<span>Trace Code Path</span>
|
|
201
|
+
<button id="clearPath" type="button">Clear</button>
|
|
202
|
+
</div>
|
|
203
|
+
<div class="path-finder-inputs">
|
|
204
|
+
<input id="pathFromInput" type="search" list="pathNodeOptions" placeholder="From selected file or symbol...">
|
|
205
|
+
<input id="pathToInput" type="search" list="pathNodeOptions" placeholder="To related test, route, or symbol...">
|
|
206
|
+
<button id="findPath" type="button">Trace</button>
|
|
207
|
+
</div>
|
|
208
|
+
<datalist id="pathNodeOptions"></datalist>
|
|
209
|
+
<div id="pathStatus" class="path-status">Select a code node, then trace to another code node when you need impact proof.</div>
|
|
210
|
+
<div id="pathResult" class="path-result"></div>
|
|
211
|
+
</div>
|
|
244
212
|
</aside>
|
|
245
213
|
|
|
214
|
+
<section class="memory-panel" aria-label="Memory library">
|
|
215
|
+
<div class="panel-heading">
|
|
216
|
+
<h2>Memory</h2>
|
|
217
|
+
<span id="memoryStatus">packets</span>
|
|
218
|
+
</div>
|
|
219
|
+
<div id="memoryStats" class="memory-stats" aria-label="Memory summary"></div>
|
|
220
|
+
<div id="memoryOverview" class="memory-overview" aria-label="Memory coverage chart"></div>
|
|
221
|
+
<div class="memory-toolbar">
|
|
222
|
+
<input id="memorySearch" type="search" placeholder="Search memory, path, command, bug, decision...">
|
|
223
|
+
<select id="memoryFilter" aria-label="Memory filter">
|
|
224
|
+
<option value="all">All memory</option>
|
|
225
|
+
<option value="linked">Linked to code</option>
|
|
226
|
+
<option value="needs-paths">Needs paths</option>
|
|
227
|
+
<option value="decision">Decisions</option>
|
|
228
|
+
<option value="runbook">Runbooks</option>
|
|
229
|
+
<option value="bug_fix">Bug fixes</option>
|
|
230
|
+
</select>
|
|
231
|
+
</div>
|
|
232
|
+
<div id="memoryList" class="memory-list"></div>
|
|
233
|
+
</section>
|
|
234
|
+
|
|
235
|
+
<section class="owners-panel" aria-label="Owners and contributors">
|
|
236
|
+
<div class="panel-heading">
|
|
237
|
+
<h2>Owners</h2>
|
|
238
|
+
<span id="ownersStatus">git signals</span>
|
|
239
|
+
</div>
|
|
240
|
+
<div id="ownersSummary" class="owners-summary"></div>
|
|
241
|
+
<div id="ownersList" class="owners-list"></div>
|
|
242
|
+
</section>
|
|
243
|
+
|
|
246
244
|
<section class="review-panel" aria-label="Review queue">
|
|
247
245
|
<div class="panel-heading">
|
|
248
246
|
<h2>Memory Inbox</h2>
|
|
249
247
|
<span id="reviewCount">0</span>
|
|
250
248
|
</div>
|
|
249
|
+
<div id="reviewOverview" class="review-overview"></div>
|
|
251
250
|
<div id="reviewList" class="review-list"></div>
|
|
252
251
|
</section>
|
|
253
252
|
|
|
@@ -256,12 +255,13 @@
|
|
|
256
255
|
<h2>Proof</h2>
|
|
257
256
|
<span id="proofStatus">metrics</span>
|
|
258
257
|
</div>
|
|
258
|
+
<div id="proofOverview" class="proof-overview"></div>
|
|
259
259
|
<div id="proofList" class="proof-list"></div>
|
|
260
260
|
</section>
|
|
261
261
|
|
|
262
|
-
<section class="intelligence-panel" aria-label="
|
|
262
|
+
<section class="intelligence-panel" aria-label="Risks and reports">
|
|
263
263
|
<div class="panel-heading">
|
|
264
|
-
<h2>
|
|
264
|
+
<h2>Risks</h2>
|
|
265
265
|
<span id="intelligenceStatus">reports</span>
|
|
266
266
|
</div>
|
|
267
267
|
<div id="intelligenceList" class="intelligence-list"></div>
|
|
@@ -269,23 +269,28 @@
|
|
|
269
269
|
|
|
270
270
|
<section class="table-panel entities-panel" aria-label="Nodes">
|
|
271
271
|
<div class="panel-heading">
|
|
272
|
-
<h2>Nodes</h2>
|
|
272
|
+
<h2>Artifact Nodes</h2>
|
|
273
273
|
<span id="entityCount">0</span>
|
|
274
274
|
</div>
|
|
275
|
+
<div id="debugOverview" class="debug-overview"></div>
|
|
276
|
+
<div class="debug-guide">Use artifacts when the graph or recall output looks wrong. Normal repo work starts from Overview, Graph, Memory, Risks, or Review.</div>
|
|
275
277
|
<div id="entityList" class="list"></div>
|
|
276
278
|
</section>
|
|
277
279
|
|
|
278
280
|
<section class="table-panel edges-panel" aria-label="Relations">
|
|
279
281
|
<div class="panel-heading">
|
|
280
|
-
<h2>Relations</h2>
|
|
282
|
+
<h2>Artifact Relations</h2>
|
|
281
283
|
<span id="edgeCount">0</span>
|
|
282
284
|
</div>
|
|
285
|
+
<div class="debug-guide">Relations expose generation quality: evidence, confidence, invalidation, and memory-code linking.</div>
|
|
283
286
|
<div id="edgeList" class="list"></div>
|
|
284
287
|
</section>
|
|
285
288
|
</div>
|
|
286
289
|
</section>
|
|
287
|
-
|
|
290
|
+
</main>
|
|
291
|
+
</section>
|
|
292
|
+
</div>
|
|
288
293
|
|
|
289
|
-
<script src="./app.js?v=
|
|
294
|
+
<script src="./app.js?v=50"></script>
|
|
290
295
|
</body>
|
|
291
296
|
</html>
|