vibecheck-agent 1.0.5 → 1.0.7

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/agent.d.ts CHANGED
@@ -26,6 +26,7 @@ export declare class VibeAgent {
26
26
  private handleInterrupt;
27
27
  private generateScreenshot;
28
28
  private syncSession;
29
+ private sendClaudeCodeSessions;
29
30
  private handleSessionInfo;
30
31
  private send;
31
32
  private startPingLoop;
package/dist/agent.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import WebSocket from "ws";
2
2
  import path from "node:path";
3
+ import os from "node:os";
3
4
  import { ClaudeSession, AbortError } from "./claude.js";
4
5
  import { SecurityManager } from "./security.js";
5
6
  import { getImagesWithMtime, findNewOrModifiedImages, imageToBase64, extractImagePathsFromText, } from "./images.js";
@@ -8,6 +9,7 @@ import { saveSessionId, loadSessionId, clearSessionId, } from "./session.js";
8
9
  import { DEFAULT_SERVER, PING_INTERVAL_MS, IMAGE_SCAN_TIMEOUT_MS, MAX_IMAGES_PER_RESPONSE, SCREENSHOT_KEYWORDS, } from "./config.js";
9
10
  import { getSkill, getAllSkills } from "./skills.js";
10
11
  import { TaskScheduler } from "./scheduler.js";
12
+ import { scanClaudeCodeSessions } from "./sessions-scanner.js";
11
13
  export class VibeAgent {
12
14
  apiKey;
13
15
  workDir;
@@ -109,6 +111,8 @@ export class VibeAgent {
109
111
  this.startPingLoop();
110
112
  // Sync session with server
111
113
  await this.syncSession();
114
+ // Send Claude Code session history
115
+ this.sendClaudeCodeSessions();
112
116
  console.log("[agent] Waiting for messages...");
113
117
  });
114
118
  this.ws.on("message", async (data) => {
@@ -364,11 +368,22 @@ export class VibeAgent {
364
368
  type: "session_sync",
365
369
  work_dir: this.workDir,
366
370
  session_id: sessionId ?? null,
371
+ hostname: os.hostname(),
367
372
  });
368
373
  // Wait for session_info from server (with timeout)
369
374
  // The response is handled in handleSessionInfo
370
375
  console.log("[agent] Session sync request sent");
371
376
  }
377
+ sendClaudeCodeSessions() {
378
+ try {
379
+ const sessions = scanClaudeCodeSessions(this.workDir);
380
+ this.send({ type: "claude_sessions", sessions });
381
+ console.log(`[agent] Sent ${sessions.length} Claude Code sessions`);
382
+ }
383
+ catch (e) {
384
+ console.error("[agent] Failed to scan Claude Code sessions:", e);
385
+ }
386
+ }
372
387
  handleSessionInfo(msg) {
373
388
  if (msg.session_id && msg.source === "server") {
374
389
  // Server has a session, use it if we don't have one
package/dist/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
@@ -33,6 +33,7 @@ export interface SessionSyncMessage {
33
33
  type: "session_sync";
34
34
  work_dir: string;
35
35
  session_id: string | null;
36
+ hostname?: string;
36
37
  }
37
38
  export interface SessionUpdateMessage {
38
39
  type: "session_update";
@@ -62,7 +63,23 @@ export interface StreamingChunkMessage {
62
63
  delta: string;
63
64
  index: number;
64
65
  }
65
- export type AgentToServerMessage = PingMessage | PongMessage | ResponseMessage | ApprovalRequiredMessage | SessionSyncMessage | SessionUpdateMessage | ToolStatusMessage | StreamingChunkMessage | SkillListResponseMessage | ScheduleListResponseMessage | ScheduleAddResponseMessage;
66
+ /**
67
+ * Claude Code local session info — scanned from ~/.claude/projects/
68
+ */
69
+ export interface ClaudeCodeSessionInfo {
70
+ sessionId: string;
71
+ firstPrompt: string;
72
+ messageCount: number;
73
+ created: string;
74
+ modified: string;
75
+ gitBranch?: string;
76
+ projectPath: string;
77
+ }
78
+ export interface ClaudeSessionsMessage {
79
+ type: "claude_sessions";
80
+ sessions: ClaudeCodeSessionInfo[];
81
+ }
82
+ export type AgentToServerMessage = PingMessage | PongMessage | ResponseMessage | ApprovalRequiredMessage | SessionSyncMessage | SessionUpdateMessage | ToolStatusMessage | StreamingChunkMessage | SkillListResponseMessage | ScheduleListResponseMessage | ScheduleAddResponseMessage | ClaudeSessionsMessage;
66
83
  /** Definition of a custom sub-agent for multi-agent workflows */
67
84
  export interface AgentDef {
68
85
  description: string;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Scans Claude Code's local session history at ~/.claude/projects/
3
+ * and returns metadata for display in the web UI sidebar.
4
+ */
5
+ export interface ClaudeCodeSession {
6
+ sessionId: string;
7
+ firstPrompt: string;
8
+ messageCount: number;
9
+ created: string;
10
+ modified: string;
11
+ gitBranch?: string;
12
+ projectPath: string;
13
+ }
14
+ /**
15
+ * Scan Claude Code sessions for the given workDir.
16
+ * Fast path: reads sessions-index.json if available.
17
+ * Fallback: scans JSONL files and reads first few lines for metadata.
18
+ */
19
+ export declare function scanClaudeCodeSessions(workDir: string): ClaudeCodeSession[];
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Scans Claude Code's local session history at ~/.claude/projects/
3
+ * and returns metadata for display in the web UI sidebar.
4
+ */
5
+ import fs from "node:fs";
6
+ import path from "node:path";
7
+ import os from "node:os";
8
+ /**
9
+ * Encode a filesystem path to Claude Code's project directory name.
10
+ * /disk1/lecture/foo → -disk1-lecture-foo
11
+ */
12
+ function encodeProjectPath(projectPath) {
13
+ return projectPath.replace(/\//g, "-");
14
+ }
15
+ /**
16
+ * Scan Claude Code sessions for the given workDir.
17
+ * Fast path: reads sessions-index.json if available.
18
+ * Fallback: scans JSONL files and reads first few lines for metadata.
19
+ */
20
+ export function scanClaudeCodeSessions(workDir) {
21
+ const encoded = encodeProjectPath(workDir);
22
+ const projectDir = path.join(os.homedir(), ".claude", "projects", encoded);
23
+ if (!fs.existsSync(projectDir))
24
+ return [];
25
+ // Fast path: sessions-index.json
26
+ const indexPath = path.join(projectDir, "sessions-index.json");
27
+ if (fs.existsSync(indexPath)) {
28
+ try {
29
+ const data = JSON.parse(fs.readFileSync(indexPath, "utf-8"));
30
+ if (data.entries && Array.isArray(data.entries)) {
31
+ return data.entries
32
+ .filter((e) => !e.isSidechain)
33
+ .map((e) => ({
34
+ sessionId: e.sessionId,
35
+ firstPrompt: e.firstPrompt || "",
36
+ messageCount: e.messageCount || 0,
37
+ created: e.created || "",
38
+ modified: e.modified || "",
39
+ gitBranch: e.gitBranch,
40
+ projectPath: e.projectPath || workDir,
41
+ }))
42
+ .sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime())
43
+ .slice(0, 50);
44
+ }
45
+ }
46
+ catch {
47
+ // Fall through to JSONL scan
48
+ }
49
+ }
50
+ // Fallback: scan JSONL files
51
+ const sessions = [];
52
+ try {
53
+ const files = fs
54
+ .readdirSync(projectDir)
55
+ .filter((f) => f.endsWith(".jsonl"))
56
+ .map((f) => ({
57
+ name: f,
58
+ stats: fs.statSync(path.join(projectDir, f)),
59
+ }))
60
+ .sort((a, b) => b.stats.mtimeMs - a.stats.mtimeMs)
61
+ .slice(0, 50);
62
+ for (const { name, stats } of files) {
63
+ const sessionId = name.replace(".jsonl", "");
64
+ let firstPrompt = "";
65
+ let gitBranch;
66
+ const created = stats.birthtime.toISOString();
67
+ // Read first 4KB to extract metadata from early lines
68
+ try {
69
+ const fd = fs.openSync(path.join(projectDir, name), "r");
70
+ const buf = Buffer.alloc(4096);
71
+ const bytesRead = fs.readSync(fd, buf, 0, 4096, 0);
72
+ fs.closeSync(fd);
73
+ const chunk = buf.toString("utf-8", 0, bytesRead);
74
+ const lines = chunk.split("\n").filter(Boolean);
75
+ for (const line of lines) {
76
+ try {
77
+ const obj = JSON.parse(line);
78
+ if (obj.type === "user" && obj.message?.content) {
79
+ const content = obj.message.content;
80
+ if (Array.isArray(content)) {
81
+ const textPart = content.find((c) => c.type === "text");
82
+ if (textPart)
83
+ firstPrompt = textPart.text.slice(0, 100);
84
+ }
85
+ else if (typeof content === "string") {
86
+ firstPrompt = content.slice(0, 100);
87
+ }
88
+ if (obj.gitBranch)
89
+ gitBranch = obj.gitBranch;
90
+ break;
91
+ }
92
+ }
93
+ catch {
94
+ // Skip unparseable lines
95
+ }
96
+ }
97
+ }
98
+ catch {
99
+ // Skip unreadable files
100
+ }
101
+ sessions.push({
102
+ sessionId,
103
+ firstPrompt,
104
+ messageCount: 0,
105
+ created,
106
+ modified: stats.mtime.toISOString(),
107
+ gitBranch,
108
+ projectPath: workDir,
109
+ });
110
+ }
111
+ }
112
+ catch {
113
+ // Directory read failed
114
+ }
115
+ return sessions;
116
+ }
117
+ //# sourceMappingURL=sessions-scanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions-scanner.js","sourceRoot":"","sources":["../src/sessions-scanner.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibecheck-agent",
3
- "version": "1.0.5",
3
+ "version": "1.0.7",
4
4
  "description": "VibeCheck Agent - Remote control Claude Code from anywhere",
5
5
  "type": "module",
6
6
  "bin": {
package/src/agent.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import WebSocket from "ws";
2
2
  import path from "node:path";
3
+ import os from "node:os";
3
4
  import type { SDKSystemMessage } from "@anthropic-ai/claude-agent-sdk";
4
5
  import { ClaudeSession, AbortError } from "./claude.js";
5
6
  import type { ExecuteResult } from "./claude.js";
@@ -40,6 +41,7 @@ import type {
40
41
  } from "./protocol.js";
41
42
  import { getSkill, getAllSkills } from "./skills.js";
42
43
  import { TaskScheduler, type ScheduledTask } from "./scheduler.js";
44
+ import { scanClaudeCodeSessions } from "./sessions-scanner.js";
43
45
 
44
46
  export class VibeAgent {
45
47
  private ws: WebSocket | null = null;
@@ -155,6 +157,9 @@ export class VibeAgent {
155
157
  // Sync session with server
156
158
  await this.syncSession();
157
159
 
160
+ // Send Claude Code session history
161
+ this.sendClaudeCodeSessions();
162
+
158
163
  console.log("[agent] Waiting for messages...");
159
164
  });
160
165
 
@@ -481,6 +486,7 @@ export class VibeAgent {
481
486
  type: "session_sync",
482
487
  work_dir: this.workDir,
483
488
  session_id: sessionId ?? null,
489
+ hostname: os.hostname(),
484
490
  });
485
491
 
486
492
  // Wait for session_info from server (with timeout)
@@ -488,6 +494,16 @@ export class VibeAgent {
488
494
  console.log("[agent] Session sync request sent");
489
495
  }
490
496
 
497
+ private sendClaudeCodeSessions(): void {
498
+ try {
499
+ const sessions = scanClaudeCodeSessions(this.workDir);
500
+ this.send({ type: "claude_sessions", sessions });
501
+ console.log(`[agent] Sent ${sessions.length} Claude Code sessions`);
502
+ } catch (e) {
503
+ console.error("[agent] Failed to scan Claude Code sessions:", e);
504
+ }
505
+ }
506
+
491
507
  private handleSessionInfo(msg: { session_id: string | null; source: string }): void {
492
508
  if (msg.session_id && msg.source === "server") {
493
509
  // Server has a session, use it if we don't have one
package/src/protocol.ts CHANGED
@@ -44,6 +44,7 @@ export interface SessionSyncMessage {
44
44
  type: "session_sync";
45
45
  work_dir: string;
46
46
  session_id: string | null;
47
+ hostname?: string;
47
48
  }
48
49
 
49
50
  export interface SessionUpdateMessage {
@@ -77,6 +78,24 @@ export interface StreamingChunkMessage {
77
78
  index: number; // sequence number within this response
78
79
  }
79
80
 
81
+ /**
82
+ * Claude Code local session info — scanned from ~/.claude/projects/
83
+ */
84
+ export interface ClaudeCodeSessionInfo {
85
+ sessionId: string;
86
+ firstPrompt: string;
87
+ messageCount: number;
88
+ created: string;
89
+ modified: string;
90
+ gitBranch?: string;
91
+ projectPath: string;
92
+ }
93
+
94
+ export interface ClaudeSessionsMessage {
95
+ type: "claude_sessions";
96
+ sessions: ClaudeCodeSessionInfo[];
97
+ }
98
+
80
99
  export type AgentToServerMessage =
81
100
  | PingMessage
82
101
  | PongMessage
@@ -88,7 +107,8 @@ export type AgentToServerMessage =
88
107
  | StreamingChunkMessage
89
108
  | SkillListResponseMessage
90
109
  | ScheduleListResponseMessage
91
- | ScheduleAddResponseMessage;
110
+ | ScheduleAddResponseMessage
111
+ | ClaudeSessionsMessage;
92
112
 
93
113
  // === Server -> Agent messages ===
94
114
 
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Scans Claude Code's local session history at ~/.claude/projects/
3
+ * and returns metadata for display in the web UI sidebar.
4
+ */
5
+
6
+ import fs from "node:fs";
7
+ import path from "node:path";
8
+ import os from "node:os";
9
+
10
+ export interface ClaudeCodeSession {
11
+ sessionId: string;
12
+ firstPrompt: string;
13
+ messageCount: number;
14
+ created: string; // ISO timestamp
15
+ modified: string; // ISO timestamp
16
+ gitBranch?: string;
17
+ projectPath: string;
18
+ }
19
+
20
+ /**
21
+ * Encode a filesystem path to Claude Code's project directory name.
22
+ * /disk1/lecture/foo → -disk1-lecture-foo
23
+ */
24
+ function encodeProjectPath(projectPath: string): string {
25
+ return projectPath.replace(/\//g, "-");
26
+ }
27
+
28
+ /**
29
+ * Scan Claude Code sessions for the given workDir.
30
+ * Fast path: reads sessions-index.json if available.
31
+ * Fallback: scans JSONL files and reads first few lines for metadata.
32
+ */
33
+ export function scanClaudeCodeSessions(workDir: string): ClaudeCodeSession[] {
34
+ const encoded = encodeProjectPath(workDir);
35
+ const projectDir = path.join(os.homedir(), ".claude", "projects", encoded);
36
+
37
+ if (!fs.existsSync(projectDir)) return [];
38
+
39
+ // Fast path: sessions-index.json
40
+ const indexPath = path.join(projectDir, "sessions-index.json");
41
+ if (fs.existsSync(indexPath)) {
42
+ try {
43
+ const data = JSON.parse(fs.readFileSync(indexPath, "utf-8"));
44
+ if (data.entries && Array.isArray(data.entries)) {
45
+ return data.entries
46
+ .filter((e: Record<string, unknown>) => !e.isSidechain)
47
+ .map((e: Record<string, unknown>) => ({
48
+ sessionId: e.sessionId as string,
49
+ firstPrompt: (e.firstPrompt as string) || "",
50
+ messageCount: (e.messageCount as number) || 0,
51
+ created: (e.created as string) || "",
52
+ modified: (e.modified as string) || "",
53
+ gitBranch: e.gitBranch as string | undefined,
54
+ projectPath: (e.projectPath as string) || workDir,
55
+ }))
56
+ .sort(
57
+ (a: ClaudeCodeSession, b: ClaudeCodeSession) =>
58
+ new Date(b.modified).getTime() - new Date(a.modified).getTime(),
59
+ )
60
+ .slice(0, 50);
61
+ }
62
+ } catch {
63
+ // Fall through to JSONL scan
64
+ }
65
+ }
66
+
67
+ // Fallback: scan JSONL files
68
+ const sessions: ClaudeCodeSession[] = [];
69
+ try {
70
+ const files = fs
71
+ .readdirSync(projectDir)
72
+ .filter((f) => f.endsWith(".jsonl"))
73
+ .map((f) => ({
74
+ name: f,
75
+ stats: fs.statSync(path.join(projectDir, f)),
76
+ }))
77
+ .sort((a, b) => b.stats.mtimeMs - a.stats.mtimeMs)
78
+ .slice(0, 50);
79
+
80
+ for (const { name, stats } of files) {
81
+ const sessionId = name.replace(".jsonl", "");
82
+ let firstPrompt = "";
83
+ let gitBranch: string | undefined;
84
+ const created = stats.birthtime.toISOString();
85
+
86
+ // Read first 4KB to extract metadata from early lines
87
+ try {
88
+ const fd = fs.openSync(path.join(projectDir, name), "r");
89
+ const buf = Buffer.alloc(4096);
90
+ const bytesRead = fs.readSync(fd, buf, 0, 4096, 0);
91
+ fs.closeSync(fd);
92
+
93
+ const chunk = buf.toString("utf-8", 0, bytesRead);
94
+ const lines = chunk.split("\n").filter(Boolean);
95
+
96
+ for (const line of lines) {
97
+ try {
98
+ const obj = JSON.parse(line);
99
+ if (obj.type === "user" && obj.message?.content) {
100
+ const content = obj.message.content;
101
+ if (Array.isArray(content)) {
102
+ const textPart = content.find(
103
+ (c: Record<string, unknown>) => c.type === "text",
104
+ );
105
+ if (textPart) firstPrompt = (textPart.text as string).slice(0, 100);
106
+ } else if (typeof content === "string") {
107
+ firstPrompt = content.slice(0, 100);
108
+ }
109
+ if (obj.gitBranch) gitBranch = obj.gitBranch;
110
+ break;
111
+ }
112
+ } catch {
113
+ // Skip unparseable lines
114
+ }
115
+ }
116
+ } catch {
117
+ // Skip unreadable files
118
+ }
119
+
120
+ sessions.push({
121
+ sessionId,
122
+ firstPrompt,
123
+ messageCount: 0,
124
+ created,
125
+ modified: stats.mtime.toISOString(),
126
+ gitBranch,
127
+ projectPath: workDir,
128
+ });
129
+ }
130
+ } catch {
131
+ // Directory read failed
132
+ }
133
+
134
+ return sessions;
135
+ }