@ycniuqton/devlens 0.1.4 → 0.1.6
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/dist/init.js +79 -10
- package/dist/init.js.map +1 -1
- package/package.json +1 -1
package/dist/init.js
CHANGED
|
@@ -28,6 +28,31 @@ curl -s -X POST "\$DEVLENS_URL" \\
|
|
|
28
28
|
-H "Content-Type: application/json" \\
|
|
29
29
|
-d "\$INPUT" > /dev/null 2>&1 &
|
|
30
30
|
|
|
31
|
+
exit 0
|
|
32
|
+
`;
|
|
33
|
+
const SHUTDOWN_HOOK_SCRIPT = `#!/bin/bash
|
|
34
|
+
# Devlens — stop dashboard on Claude Code session end
|
|
35
|
+
# Reads stdin to satisfy hook protocol
|
|
36
|
+
cat > /dev/null 2>&1
|
|
37
|
+
|
|
38
|
+
PROJECT_DIR="\${CLAUDE_PROJECT_DIR:-$PWD}"
|
|
39
|
+
RUNTIME_FILE="\$PROJECT_DIR/.devlens/runtime.json"
|
|
40
|
+
|
|
41
|
+
[ ! -f "\$RUNTIME_FILE" ] && exit 0
|
|
42
|
+
|
|
43
|
+
PID=$(grep -oE '"pid"[[:space:]]*:[[:space:]]*[0-9]+' "\$RUNTIME_FILE" 2>/dev/null | grep -oE "[0-9]+" | head -1)
|
|
44
|
+
[ -z "\$PID" ] && exit 0
|
|
45
|
+
|
|
46
|
+
# Verify the process is actually our devlens for this dir
|
|
47
|
+
if ps -p "\$PID" -o args= 2>/dev/null | grep -qE "(devlens|dist/index\\.js).*--dir[= ]?\$PROJECT_DIR"; then
|
|
48
|
+
kill "\$PID" 2>/dev/null
|
|
49
|
+
for i in 1 2 3; do
|
|
50
|
+
sleep 0.5
|
|
51
|
+
kill -0 "\$PID" 2>/dev/null || break
|
|
52
|
+
done
|
|
53
|
+
kill -0 "\$PID" 2>/dev/null && kill -9 "\$PID" 2>/dev/null
|
|
54
|
+
rm -f "\$RUNTIME_FILE"
|
|
55
|
+
fi
|
|
31
56
|
exit 0
|
|
32
57
|
`;
|
|
33
58
|
const STARTUP_HOOK_SCRIPT = `#!/bin/bash
|
|
@@ -92,6 +117,7 @@ function initDevlens(projectDir, port) {
|
|
|
92
117
|
const settingsFile = path_1.default.join(claudeDir, 'settings.json');
|
|
93
118
|
const syncScriptPath = path_1.default.join(hooksDir, 'devlens-sync.sh');
|
|
94
119
|
const startupScriptPath = path_1.default.join(hooksDir, 'devlens-startup.sh');
|
|
120
|
+
const shutdownScriptPath = path_1.default.join(hooksDir, 'devlens-shutdown.sh');
|
|
95
121
|
// 1. Create .claude/hooks/ directory
|
|
96
122
|
if (!fs_1.default.existsSync(hooksDir)) {
|
|
97
123
|
fs_1.default.mkdirSync(hooksDir, { recursive: true });
|
|
@@ -102,6 +128,8 @@ function initDevlens(projectDir, port) {
|
|
|
102
128
|
console.log(` Created hook: .claude/hooks/devlens-sync.sh (task sync)`);
|
|
103
129
|
fs_1.default.writeFileSync(startupScriptPath, STARTUP_HOOK_SCRIPT.replace(/__PORT__/g, portStr), { mode: 0o755 });
|
|
104
130
|
console.log(` Created hook: .claude/hooks/devlens-startup.sh (auto-start)`);
|
|
131
|
+
fs_1.default.writeFileSync(shutdownScriptPath, SHUTDOWN_HOOK_SCRIPT, { mode: 0o755 });
|
|
132
|
+
console.log(` Created hook: .claude/hooks/devlens-shutdown.sh (auto-stop)`);
|
|
105
133
|
// 3. Update .claude/settings.json
|
|
106
134
|
let settings = {};
|
|
107
135
|
if (fs_1.default.existsSync(settingsFile)) {
|
|
@@ -124,6 +152,20 @@ function initDevlens(projectDir, port) {
|
|
|
124
152
|
},
|
|
125
153
|
],
|
|
126
154
|
});
|
|
155
|
+
// --- SessionEnd hook ---
|
|
156
|
+
if (!settings.hooks.SessionEnd) {
|
|
157
|
+
settings.hooks.SessionEnd = [];
|
|
158
|
+
}
|
|
159
|
+
settings.hooks.SessionEnd = settings.hooks.SessionEnd.filter((h) => !h.command?.includes('devlens-shutdown') && !h.hooks?.some((hk) => hk.command.includes('devlens-shutdown')));
|
|
160
|
+
settings.hooks.SessionEnd.push({
|
|
161
|
+
matcher: '',
|
|
162
|
+
hooks: [
|
|
163
|
+
{
|
|
164
|
+
type: 'command',
|
|
165
|
+
command: `"$CLAUDE_PROJECT_DIR"/.claude/hooks/devlens-shutdown.sh`,
|
|
166
|
+
},
|
|
167
|
+
],
|
|
168
|
+
});
|
|
127
169
|
// --- PostToolUse hook ---
|
|
128
170
|
if (!settings.hooks.PostToolUse) {
|
|
129
171
|
settings.hooks.PostToolUse = [];
|
|
@@ -156,21 +198,43 @@ function initDevlens(projectDir, port) {
|
|
|
156
198
|
}
|
|
157
199
|
const skillContent = `---
|
|
158
200
|
name: devlens
|
|
159
|
-
description: Show the Devlens dashboard URL and status
|
|
201
|
+
description: Show the Devlens dashboard URL and status for the current project
|
|
160
202
|
---
|
|
161
203
|
|
|
162
|
-
Show the Devlens dashboard
|
|
204
|
+
Show the Devlens dashboard URLs for the current project by inspecting running processes (no AI reasoning needed — just print whatever the script returns):
|
|
163
205
|
|
|
164
206
|
\`\`\`!
|
|
165
|
-
|
|
166
|
-
|
|
207
|
+
DIR="\${CLAUDE_PROJECT_DIR:-$PWD}"
|
|
208
|
+
# Match any node process running devlens (binary, dist/index.js, or symlink) for this dir
|
|
209
|
+
PROC=$(ps -eo pid,args 2>/dev/null | grep -E "node.*(devlens|dist/index\\.js).*start.*--dir[= ]?\${DIR}([ /]|$)" | grep -v grep | head -1)
|
|
210
|
+
|
|
211
|
+
if [ -z "$PROC" ]; then
|
|
212
|
+
echo "DEVLENS_NOT_RUNNING for \${DIR}"
|
|
213
|
+
exit 0
|
|
214
|
+
fi
|
|
215
|
+
|
|
216
|
+
PID=$(echo "$PROC" | awk '{print $1}')
|
|
217
|
+
PORT=$(echo "$PROC" | grep -oE -- "--port[= ]?[0-9]+" | grep -oE "[0-9]+" | head -1)
|
|
218
|
+
[ -z "$PORT" ] && PORT=$(grep -oE '"port"[[:space:]]*:[[:space:]]*[0-9]+' "\${DIR}/.devlens/runtime.json" 2>/dev/null | grep -oE "[0-9]+" | head -1)
|
|
219
|
+
|
|
220
|
+
if [ -z "$PORT" ]; then
|
|
221
|
+
echo "DEVLENS_RUNNING but could not determine port (PID $PID)"
|
|
222
|
+
exit 0
|
|
223
|
+
fi
|
|
167
224
|
|
|
168
|
-
|
|
225
|
+
echo "DEVLENS_RUNNING"
|
|
226
|
+
echo " PID: $PID"
|
|
227
|
+
echo " Project: \${DIR}"
|
|
228
|
+
echo " Local: http://localhost:\${PORT}"
|
|
229
|
+
for ip in $(hostname -I 2>/dev/null || true); do
|
|
230
|
+
case "$ip" in
|
|
231
|
+
127.*|::1|fe80*|*:*) continue ;;
|
|
232
|
+
*) echo " Network: http://\${ip}:\${PORT}" ;;
|
|
233
|
+
esac
|
|
234
|
+
done
|
|
235
|
+
\`\`\`
|
|
169
236
|
|
|
170
|
-
|
|
171
|
-
- Local URL: http://localhost:{port}
|
|
172
|
-
- Network URLs: http://{each ip}:{port}
|
|
173
|
-
- PID and start time
|
|
237
|
+
Just print the script output verbatim. If it starts with \`DEVLENS_NOT_RUNNING\`, tell the user Devlens is not running for this project and suggest restarting the Claude Code session.
|
|
174
238
|
`;
|
|
175
239
|
fs_1.default.writeFileSync(path_1.default.join(skillDir, 'SKILL.md'), skillContent);
|
|
176
240
|
console.log(` Created skill: .claude/skills/devlens (use /devlens in Claude)`);
|
|
@@ -228,7 +292,7 @@ function uninstallDevlens(projectDir) {
|
|
|
228
292
|
fs_1.default.rmSync(skillDir, { recursive: true });
|
|
229
293
|
console.log(` Removed: .claude/skills/devlens`);
|
|
230
294
|
}
|
|
231
|
-
for (const script of ['devlens-sync.sh', 'devlens-startup.sh']) {
|
|
295
|
+
for (const script of ['devlens-sync.sh', 'devlens-startup.sh', 'devlens-shutdown.sh']) {
|
|
232
296
|
const scriptPath = path_1.default.join(hooksDir, script);
|
|
233
297
|
if (fs_1.default.existsSync(scriptPath)) {
|
|
234
298
|
fs_1.default.unlinkSync(scriptPath);
|
|
@@ -242,6 +306,11 @@ function uninstallDevlens(projectDir) {
|
|
|
242
306
|
if (settings.hooks.SessionStart.length === 0)
|
|
243
307
|
delete settings.hooks.SessionStart;
|
|
244
308
|
}
|
|
309
|
+
if (settings.hooks?.SessionEnd) {
|
|
310
|
+
settings.hooks.SessionEnd = settings.hooks.SessionEnd.filter((h) => !h.command?.includes('devlens-shutdown') && !h.hooks?.some((hk) => hk.command.includes('devlens-shutdown')));
|
|
311
|
+
if (settings.hooks.SessionEnd.length === 0)
|
|
312
|
+
delete settings.hooks.SessionEnd;
|
|
313
|
+
}
|
|
245
314
|
if (settings.hooks?.PostToolUse) {
|
|
246
315
|
settings.hooks.PostToolUse = settings.hooks.PostToolUse.filter((h) => !h.hooks?.some((hk) => hk.command.includes('devlens-sync')));
|
|
247
316
|
if (settings.hooks.PostToolUse.length === 0)
|
package/dist/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":";;;;;AAKA,kCAGC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
|