@ian2018cs/agenthub 0.1.54 → 0.1.56
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 +173 -226
- package/dist/assets/index-Darx5qlF.js +162 -0
- package/dist/assets/index-gz7uqQ7s.css +32 -0
- package/dist/assets/{vendor-icons-D0_WToWG.js → vendor-icons-twCb5Vhp.js} +72 -87
- package/dist/index.html +3 -18
- package/package.json +7 -8
- package/server/claude-sdk.js +44 -1
- package/server/cli.js +61 -18
- package/server/index.js +1 -15
- package/server/middleware/auth.js +0 -31
- package/server/projects.js +1 -1
- package/server/services/feishu/command-handler.js +1 -1
- package/server/services/feishu/sdk-bridge.js +1 -1
- package/server/services/tool-guard/index.js +75 -0
- package/server/services/tool-guard/llm-reviewer.js +128 -0
- package/server/services/tool-guard/rules.js +653 -0
- package/dist/assets/index-BdtjtPre.css +0 -32
- package/dist/assets/index-_a9nlevD.js +0 -162
- package/dist/clear-cache.html +0 -85
- package/dist/icons/cursor-white.svg +0 -12
- package/dist/icons/cursor.svg +0 -1
- package/dist/screenshots/cli-selection.png +0 -0
- package/dist/screenshots/desktop-main.png +0 -0
- package/dist/screenshots/mobile-chat.png +0 -0
- package/dist/screenshots/tools-modal.png +0 -0
- package/dist/sw.js +0 -49
package/dist/clear-cache.html
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html>
|
|
3
|
-
<head>
|
|
4
|
-
<title>Clear Cache - Claude Code UI</title>
|
|
5
|
-
<style>
|
|
6
|
-
body {
|
|
7
|
-
font-family: system-ui, -apple-system, sans-serif;
|
|
8
|
-
max-width: 600px;
|
|
9
|
-
margin: 50px auto;
|
|
10
|
-
padding: 20px;
|
|
11
|
-
line-height: 1.6;
|
|
12
|
-
}
|
|
13
|
-
.success { color: green; }
|
|
14
|
-
.error { color: red; }
|
|
15
|
-
button {
|
|
16
|
-
background: #007bff;
|
|
17
|
-
color: white;
|
|
18
|
-
border: none;
|
|
19
|
-
padding: 10px 20px;
|
|
20
|
-
border-radius: 5px;
|
|
21
|
-
cursor: pointer;
|
|
22
|
-
font-size: 16px;
|
|
23
|
-
margin: 10px 5px;
|
|
24
|
-
}
|
|
25
|
-
button:hover {
|
|
26
|
-
background: #0056b3;
|
|
27
|
-
}
|
|
28
|
-
#status {
|
|
29
|
-
margin-top: 20px;
|
|
30
|
-
padding: 15px;
|
|
31
|
-
border-radius: 5px;
|
|
32
|
-
background: #f0f0f0;
|
|
33
|
-
}
|
|
34
|
-
</style>
|
|
35
|
-
</head>
|
|
36
|
-
<body>
|
|
37
|
-
<h1>Clear Cache & Service Worker</h1>
|
|
38
|
-
<p>If you're seeing a blank page or old content, click the button below to clear all cached data.</p>
|
|
39
|
-
|
|
40
|
-
<button onclick="clearEverything()">Clear Cache & Reload</button>
|
|
41
|
-
|
|
42
|
-
<div id="status"></div>
|
|
43
|
-
|
|
44
|
-
<script>
|
|
45
|
-
async function clearEverything() {
|
|
46
|
-
const status = document.getElementById('status');
|
|
47
|
-
status.innerHTML = '<p>Clearing cache and service workers...</p>';
|
|
48
|
-
|
|
49
|
-
try {
|
|
50
|
-
// Unregister all service workers
|
|
51
|
-
if ('serviceWorker' in navigator) {
|
|
52
|
-
const registrations = await navigator.serviceWorker.getRegistrations();
|
|
53
|
-
for (let registration of registrations) {
|
|
54
|
-
await registration.unregister();
|
|
55
|
-
status.innerHTML += '<p class="success">✓ Unregistered service worker</p>';
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// Clear all caches
|
|
60
|
-
if ('caches' in window) {
|
|
61
|
-
const cacheNames = await caches.keys();
|
|
62
|
-
for (let cacheName of cacheNames) {
|
|
63
|
-
await caches.delete(cacheName);
|
|
64
|
-
status.innerHTML += `<p class="success">✓ Deleted cache: ${cacheName}</p>`;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// Clear localStorage
|
|
69
|
-
localStorage.clear();
|
|
70
|
-
status.innerHTML += '<p class="success">✓ Cleared localStorage</p>';
|
|
71
|
-
|
|
72
|
-
// Clear sessionStorage
|
|
73
|
-
sessionStorage.clear();
|
|
74
|
-
status.innerHTML += '<p class="success">✓ Cleared sessionStorage</p>';
|
|
75
|
-
|
|
76
|
-
status.innerHTML += '<p class="success"><strong>✓ All caches cleared!</strong></p>';
|
|
77
|
-
status.innerHTML += '<p>Cache cleared successfully. You can now close this tab or <a href="/">go to home page</a>.</p>';
|
|
78
|
-
|
|
79
|
-
} catch (error) {
|
|
80
|
-
status.innerHTML += `<p class="error">✗ Error: ${error.message}</p>`;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
</script>
|
|
84
|
-
</body>
|
|
85
|
-
</html>
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<svg id="Ebene_1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 466.73 532.09">
|
|
3
|
-
<!-- Generator: Adobe Illustrator 29.6.1, SVG Export Plug-In . SVG Version: 2.1.1 Build 9) -->
|
|
4
|
-
<defs>
|
|
5
|
-
<style>
|
|
6
|
-
.st0 {
|
|
7
|
-
fill: #edecec;
|
|
8
|
-
}
|
|
9
|
-
</style>
|
|
10
|
-
</defs>
|
|
11
|
-
<path class="st0" d="M457.43,125.94L244.42,2.96c-6.84-3.95-15.28-3.95-22.12,0L9.3,125.94c-5.75,3.32-9.3,9.46-9.3,16.11v247.99c0,6.65,3.55,12.79,9.3,16.11l213.01,122.98c6.84,3.95,15.28,3.95,22.12,0l213.01-122.98c5.75-3.32,9.3-9.46,9.3-16.11v-247.99c0-6.65-3.55-12.79-9.3-16.11h-.01ZM444.05,151.99l-205.63,356.16c-1.39,2.4-5.06,1.42-5.06-1.36v-233.21c0-4.66-2.49-8.97-6.53-11.31L24.87,145.67c-2.4-1.39-1.42-5.06,1.36-5.06h411.26c5.84,0,9.49,6.33,6.57,11.39h-.01Z"/>
|
|
12
|
-
</svg>
|
package/dist/icons/cursor.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Cursor</title><path d="M11.925 24l10.425-6-10.425-6L1.5 18l10.425 6z" fill="url(#lobe-icons-cursorundefined-fill-0)"></path><path d="M22.35 18V6L11.925 0v12l10.425 6z" fill="url(#lobe-icons-cursorundefined-fill-1)"></path><path d="M11.925 0L1.5 6v12l10.425-6V0z" fill="url(#lobe-icons-cursorundefined-fill-2)"></path><path d="M22.35 6L11.925 24V12L22.35 6z" fill="#555"></path><path d="M22.35 6l-10.425 6L1.5 6h20.85z" fill="#000"></path><defs><linearGradient gradientUnits="userSpaceOnUse" id="lobe-icons-cursorundefined-fill-0" x1="11.925" x2="11.925" y1="12" y2="24"><stop offset=".16" stop-color="#000" stop-opacity=".39"></stop><stop offset=".658" stop-color="#000" stop-opacity=".8"></stop></linearGradient><linearGradient gradientUnits="userSpaceOnUse" id="lobe-icons-cursorundefined-fill-1" x1="22.35" x2="11.925" y1="6.037" y2="12.15"><stop offset=".182" stop-color="#000" stop-opacity=".31"></stop><stop offset=".715" stop-color="#000" stop-opacity="0"></stop></linearGradient><linearGradient gradientUnits="userSpaceOnUse" id="lobe-icons-cursorundefined-fill-2" x1="11.925" x2="1.5" y1="0" y2="18"><stop stop-color="#000" stop-opacity=".6"></stop><stop offset=".667" stop-color="#000" stop-opacity=".22"></stop></linearGradient></defs></svg>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/dist/sw.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
// Service Worker for Claude Code UI PWA
|
|
2
|
-
const CACHE_NAME = 'claude-ui-v1';
|
|
3
|
-
const urlsToCache = [
|
|
4
|
-
'/',
|
|
5
|
-
'/index.html',
|
|
6
|
-
'/manifest.json'
|
|
7
|
-
];
|
|
8
|
-
|
|
9
|
-
// Install event
|
|
10
|
-
self.addEventListener('install', event => {
|
|
11
|
-
event.waitUntil(
|
|
12
|
-
caches.open(CACHE_NAME)
|
|
13
|
-
.then(cache => {
|
|
14
|
-
return cache.addAll(urlsToCache);
|
|
15
|
-
})
|
|
16
|
-
);
|
|
17
|
-
self.skipWaiting();
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
// Fetch event
|
|
21
|
-
self.addEventListener('fetch', event => {
|
|
22
|
-
event.respondWith(
|
|
23
|
-
caches.match(event.request)
|
|
24
|
-
.then(response => {
|
|
25
|
-
// Return cached response if found
|
|
26
|
-
if (response) {
|
|
27
|
-
return response;
|
|
28
|
-
}
|
|
29
|
-
// Otherwise fetch from network
|
|
30
|
-
return fetch(event.request);
|
|
31
|
-
}
|
|
32
|
-
)
|
|
33
|
-
);
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
// Activate event
|
|
37
|
-
self.addEventListener('activate', event => {
|
|
38
|
-
event.waitUntil(
|
|
39
|
-
caches.keys().then(cacheNames => {
|
|
40
|
-
return Promise.all(
|
|
41
|
-
cacheNames.map(cacheName => {
|
|
42
|
-
if (cacheName !== CACHE_NAME) {
|
|
43
|
-
return caches.delete(cacheName);
|
|
44
|
-
}
|
|
45
|
-
})
|
|
46
|
-
);
|
|
47
|
-
})
|
|
48
|
-
);
|
|
49
|
-
});
|