pi-inspect 0.1.0
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 +42 -0
- package/extensions/inspect.ts +309 -0
- package/extensions/package.json +1 -0
- package/extensions/tsconfig.json +16 -0
- package/lib/snapshot.js +56 -0
- package/package.json +66 -0
- package/public/app.js +616 -0
- package/public/icon-maskable.svg +1 -0
- package/public/icon.svg +1 -0
- package/public/index.html +77 -0
- package/public/manifest.webmanifest +24 -0
- package/public/style.css +1443 -0
- package/public/sw.js +41 -0
- package/server.js +152 -0
- package/themes/pi-dark.json +21 -0
- package/themes/pi-light.json +21 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>pi-inspect</title>
|
|
7
|
+
<link rel="stylesheet" href="style.css">
|
|
8
|
+
<link rel="manifest" href="manifest.webmanifest">
|
|
9
|
+
<link rel="icon" type="image/svg+xml" href="icon.svg">
|
|
10
|
+
<link rel="apple-touch-icon" href="icon.svg">
|
|
11
|
+
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
12
|
+
<meta name="apple-mobile-web-app-title" content="pi-inspect">
|
|
13
|
+
<meta name="theme-color" content="#101114" media="(prefers-color-scheme: dark)">
|
|
14
|
+
<meta name="theme-color" content="#e8e6e3" media="(prefers-color-scheme: light)">
|
|
15
|
+
</head>
|
|
16
|
+
<body>
|
|
17
|
+
<div class="topbar">
|
|
18
|
+
<div class="topbar-logo">
|
|
19
|
+
<div class="logo-mark">
|
|
20
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="7"/><path d="M21 21l-4.35-4.35"/></svg>
|
|
21
|
+
</div>
|
|
22
|
+
<span class="logo-text">pi <span class="accent">inspect</span></span>
|
|
23
|
+
</div>
|
|
24
|
+
<div class="spacer"></div>
|
|
25
|
+
<div class="topbar-search">
|
|
26
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="11" cy="11" r="8"/><path d="M21 21l-4.35-4.35"/></svg>
|
|
27
|
+
<input type="text" id="searchInput" placeholder="Filter tools / commands..." autocomplete="off">
|
|
28
|
+
</div>
|
|
29
|
+
<select class="topbar-select" id="kindFilter">
|
|
30
|
+
<option value="all" selected>All</option>
|
|
31
|
+
<option value="context">Context</option>
|
|
32
|
+
<option value="tool">Tools</option>
|
|
33
|
+
<option value="command">Commands</option>
|
|
34
|
+
<option value="skill">Skills</option>
|
|
35
|
+
</select>
|
|
36
|
+
<select class="topbar-select" id="sessionSelect" title="Switch session"></select>
|
|
37
|
+
<div class="topbar-project" id="projectBtn" title="Current cwd">
|
|
38
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h5l2 3h9a2 2 0 012 2z"/></svg>
|
|
39
|
+
<span id="projectPath">—</span>
|
|
40
|
+
</div>
|
|
41
|
+
<button class="topbar-btn" id="refreshBtn" title="Refresh data">
|
|
42
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="23 4 23 10 17 10"/><path d="M20.49 15a9 9 0 11-2.12-9.36L23 10"/></svg>
|
|
43
|
+
Refresh
|
|
44
|
+
</button>
|
|
45
|
+
<button class="topbar-btn" id="themeBtn" title="Toggle theme">
|
|
46
|
+
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg>
|
|
47
|
+
</button>
|
|
48
|
+
</div>
|
|
49
|
+
|
|
50
|
+
<div class="main-layout">
|
|
51
|
+
<div class="tree-panel" id="treePanel">
|
|
52
|
+
<div class="tree-expand-toggle" id="expandToggle">Expand all</div>
|
|
53
|
+
<div class="tree-container" id="treeContainer">
|
|
54
|
+
<div class="loading">Loading snapshot...</div>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
<div class="resize-handle" id="resizeHandle"></div>
|
|
58
|
+
<div class="detail-panel" id="detailPanel">
|
|
59
|
+
<div class="detail-empty">
|
|
60
|
+
<svg width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1" opacity="0.3"><circle cx="11" cy="11" r="7"/><path d="M21 21l-4.35-4.35"/></svg>
|
|
61
|
+
<span>Select an item to view details</span>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
|
|
66
|
+
<div class="toast-container" id="toast"></div>
|
|
67
|
+
|
|
68
|
+
<script src="app.js"></script>
|
|
69
|
+
<script>
|
|
70
|
+
if ('serviceWorker' in navigator) {
|
|
71
|
+
window.addEventListener('load', () => {
|
|
72
|
+
navigator.serviceWorker.register('/sw.js').catch((e) => console.warn('sw register failed:', e));
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
</script>
|
|
76
|
+
</body>
|
|
77
|
+
</html>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "pi-inspect",
|
|
3
|
+
"short_name": "pi-inspect",
|
|
4
|
+
"description": "Introspection dashboard for pi coding agent sessions",
|
|
5
|
+
"start_url": "/",
|
|
6
|
+
"scope": "/",
|
|
7
|
+
"display": "standalone",
|
|
8
|
+
"background_color": "#101114",
|
|
9
|
+
"theme_color": "#101114",
|
|
10
|
+
"icons": [
|
|
11
|
+
{
|
|
12
|
+
"src": "icon.svg",
|
|
13
|
+
"sizes": "any",
|
|
14
|
+
"type": "image/svg+xml",
|
|
15
|
+
"purpose": "any"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"src": "icon-maskable.svg",
|
|
19
|
+
"sizes": "any",
|
|
20
|
+
"type": "image/svg+xml",
|
|
21
|
+
"purpose": "maskable"
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
}
|