@claudecam/server 0.1.2 → 0.1.4

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 ADDED
@@ -0,0 +1,54 @@
1
+ # @claudecam/server
2
+
3
+ Backend server for [Claude Agent Monitor (CAM)](https://github.com/pedropauloai/claude-agent-monitor) -- Mission Control for Claude Code agents.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/@claudecam/server)](https://www.npmjs.com/package/@claudecam/server)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/pedropauloai/claude-agent-monitor/blob/main/LICENSE)
7
+
8
+ ## What This Package Does
9
+
10
+ Express server with SQLite persistence, REST API, and Server-Sent Events (SSE) for real-time agent monitoring. Receives hook events from Claude Code, stores them, and streams updates to the dashboard.
11
+
12
+ **Key features:**
13
+ - REST API for sessions, agents, events, projects, sprints, and tasks
14
+ - SSE streaming for real-time dashboard updates
15
+ - SQLite (WAL mode) for concurrent reads
16
+ - Correlation Engine that auto-links tool events to sprint tasks
17
+ - Multi-project support with project registry
18
+
19
+ ## Usage
20
+
21
+ This package is used internally by `@claudecam/cli`. You typically don't install it directly.
22
+
23
+ ```bash
24
+ # Recommended: use the CLI
25
+ npx @claudecam/cli start
26
+
27
+ # Or programmatic usage
28
+ import { startServer } from '@claudecam/server';
29
+ startServer({ port: 7890 });
30
+ ```
31
+
32
+ ## API Endpoints
33
+
34
+ | Method | Endpoint | Description |
35
+ |--------|----------|-------------|
36
+ | `POST` | `/api/events` | Ingest hook events |
37
+ | `GET` | `/api/sessions` | List sessions |
38
+ | `GET` | `/api/sessions/:id` | Session details with agents |
39
+ | `GET` | `/api/sessions/:id/agents` | Agents in a session |
40
+ | `GET` | `/api/sessions/:id/events` | Events with filters |
41
+ | `GET` | `/api/sessions/:id/files` | File changes |
42
+ | `GET` | `/api/stream` | SSE real-time stream |
43
+ | `GET` | `/api/projects` | List projects |
44
+ | `GET` | `/api/projects/:id/tasks` | Tasks with filters |
45
+
46
+ ## Links
47
+
48
+ - [GitHub Repository](https://github.com/pedropauloai/claude-agent-monitor)
49
+ - [Full Documentation](https://github.com/pedropauloai/claude-agent-monitor#readme)
50
+ - [CLI Package](https://www.npmjs.com/package/@claudecam/cli)
51
+
52
+ ## License
53
+
54
+ [MIT](https://github.com/pedropauloai/claude-agent-monitor/blob/main/LICENSE)
package/dist/db/index.js CHANGED
@@ -1,9 +1,12 @@
1
1
  import Database from 'better-sqlite3';
2
- import { readFileSync } from 'node:fs';
2
+ import { readFileSync, mkdirSync } from 'node:fs';
3
3
  import { join, dirname } from 'node:path';
4
4
  import { fileURLToPath } from 'node:url';
5
+ import { homedir } from 'node:os';
5
6
  const __filename = fileURLToPath(import.meta.url);
6
7
  const __dirname = dirname(__filename);
8
+ /** Global data directory: ~/.cam/ */
9
+ const CAM_DATA_DIR = join(homedir(), '.cam');
7
10
  let db;
8
11
  export function getDb() {
9
12
  if (!db) {
@@ -12,7 +15,9 @@ export function getDb() {
12
15
  return db;
13
16
  }
14
17
  export function initDb(dbPath) {
15
- const resolvedPath = dbPath ?? join(process.cwd(), 'cam-data.db');
18
+ const resolvedPath = dbPath ?? join(CAM_DATA_DIR, 'cam-data.db');
19
+ // Ensure the data directory exists
20
+ mkdirSync(dirname(resolvedPath), { recursive: true });
16
21
  db = new Database(resolvedPath);
17
22
  db.pragma('journal_mode = WAL');
18
23
  db.pragma('foreign_keys = ON');
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,IAAI,EAAqB,CAAC;AAE1B,MAAM,UAAU,KAAK;IACnB,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,MAAe;IACpC,MAAM,YAAY,GAAG,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC;IAElE,EAAE,GAAG,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC;IAEhC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC/B,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAClC,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAEjC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACjD,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,kEAAkE;IAClE,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,CAAC;IACvC,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,CAAC;IAEvC,0DAA0D;IAC1D,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,CAAC;IAEvC,qEAAqE;IACrE,uGAAuG;IACvG,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC;;;;;KAKP,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC,CAAC,mDAAmD,CAAC,CAAC;IAE/D,iDAAiD;IACjD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;GAUP,CAAC,CAAC;IAEH,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,IAAI,EAAE,EAAE,CAAC;QACP,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,qCAAqC;AACrC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;AAE7C,IAAI,EAAqB,CAAC;AAE1B,MAAM,UAAU,KAAK;IACnB,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,MAAe;IACpC,MAAM,YAAY,GAAG,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IAEjE,mCAAmC;IACnC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEtD,EAAE,GAAG,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC;IAEhC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC/B,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAClC,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAEjC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACjD,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,kEAAkE;IAClE,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,CAAC;IACvC,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,CAAC;IAEvC,0DAA0D;IAC1D,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,CAAC;IAEvC,qEAAqE;IACrE,uGAAuG;IACvG,IAAI,CAAC;QACH,EAAE,CAAC,IAAI,CAAC;;;;;KAKP,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC,CAAC,mDAAmD,CAAC,CAAC;IAE/D,iDAAiD;IACjD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;GAUP,CAAC,CAAC;IAEH,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,IAAI,EAAE,EAAE,CAAC;QACP,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@claudecam/server",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Backend server for Claude Agent Monitor - Express + SQLite + REST API + SSE",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -20,7 +20,7 @@
20
20
  "cors": "^2.8.5",
21
21
  "express": "^4.21.0",
22
22
  "uuid": "^11.0.0",
23
- "@claudecam/shared": "0.1.0"
23
+ "@claudecam/shared": "0.1.1"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@types/better-sqlite3": "^7.6.13",