clawborrator-mcp 0.0.31 → 0.0.33

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 CHANGED
@@ -7,11 +7,7 @@ runs as both a long-lived stdio MCP server AND a short-lived hook
7
7
  spawn (selected by the `--hook=<HookName>` CLI flag).
8
8
 
9
9
  Published as [`clawborrator-mcp`](https://www.npmjs.com/package/clawborrator-mcp)
10
- on npm. Sibling repos:
11
-
12
- - [`hub_v1`](https://github.com/clawborrator/hub_v1) — the hub server (REST + WS), deployed at https://next.clawborrator.com
13
- - [`cli_v1`](https://github.com/clawborrator/cli_v1) — `claw`, the operator CLI ([`clawborrator-cli`](https://www.npmjs.com/package/clawborrator-cli) on npm)
14
- - [`desktop_v1`](https://github.com/clawborrator/desktop_v1) — `clawborrator-supervisor`, the desktop daemon for managed CC sessions
10
+ on npm.
15
11
 
16
12
  > **Status: production hub at [`next.clawborrator.com`](https://next.clawborrator.com).**
17
13
  > Local dev uses `ws://localhost:8787`. Both supported.
@@ -64,7 +60,7 @@ ends up in the spawned project automatically.
64
60
  1. Reads env config; loads channel token.
65
61
  2. Opens WSS to `<HUB_URL>/channel` with `Authorization: Bearer <CHANNEL_TOKEN>`.
66
62
  3. Sends `register` with host / cwd / pid / version; receives `welcome` with sessionId + routingName.
67
- 4. Writes `<cwd>/.claude/clawborrator.session.json` (mode 0600) so per-event hook spawns can find the active session.
63
+ 4. Writes `<cwd>/.claude/clawborrator/runtime.json` (mode 0600) so per-event hook spawns can find the active session.
68
64
  5. Maintains the WS with heartbeat ping/pong; reconnects with exponential backoff (1s/2s/5s/15s/30s/60s).
69
65
  6. Listens for hub-side messages: `prompt` (cross-session route), `permission_response`, `peers_update`, `bye`, `error`.
70
66
  7. Dispatches MCP tool calls (see below) over the same WS.
@@ -72,7 +68,7 @@ ends up in the spawned project automatically.
72
68
 
73
69
  **Short-lived hook path** (`--hook=<HookName>` flag):
74
70
  1. Reads JSON payload from stdin (Claude Code's hook protocol).
75
- 2. Locates the active sidecar (walks up from cwd looking for `.claude/clawborrator.session.json`).
71
+ 2. Locates the active sidecar at `.claude/clawborrator/runtime.json`.
76
72
  3. Maps the hook name to a clawborrator event (e.g. `PreToolUse` → `tail/PreToolUse`, `UserPromptSubmit` → `chat/prompt`).
77
73
  4. POSTs to `<HUB_URL>/api/channel/event` with the channel token from the sidecar.
78
74
  5. Echoes stdin to stdout so Claude's hook chain stays intact.
@@ -129,7 +125,8 @@ for the dispatcher-pattern setup.
129
125
  ## Hook coverage
130
126
 
131
127
  Maps each Claude Code hook to a hub event. The hook script is
132
- `dist-hook/clawborrator-tail.mjs`; install via `claw session init`.
128
+ `dist-hook/clawborrator-tail.mjs`; auto-installed on first MCP
129
+ startup (no separate install step).
133
130
 
134
131
  | Hook | Hub event | Notes |
135
132
  |---|---|---|
@@ -139,27 +136,23 @@ Maps each Claude Code hook to a hub event. The hook script is
139
136
  | `PostToolUseFailure` | `tail/PostToolUseFailure` | |
140
137
  | `Stop` | `tail/Stop` (+ `chat/reply` if assistant_text present) | Turn-end signal. |
141
138
  | `Notification` | `tail/Notification` | CC user notifications (idle / permission). |
142
- | `SessionStart` / `SessionEnd` | `tail/SessionStart` / `tail/SessionEnd` | |
143
139
  | `TaskCreated` / `TaskCompleted` | `tail/TaskCreated` / `tail/TaskCompleted` | Carries `task_id`, `task_subject`, `task_description`. |
144
140
  | `SubagentStart` / `SubagentStop` | `tail/SubagentStart` / `tail/SubagentStop` | SubagentStop carries `last_assistant_message` recap. |
145
141
 
142
+ `SessionStart` / `SessionEnd` are intentionally **not** hooked by
143
+ this MCP. The hook spawn had a fundamental race — the sidecar
144
+ isn't written yet at SessionStart, and is already gone by SessionEnd
145
+ — so lifecycle is now emitted server-side from the `/channel` WS
146
+ welcome / close transitions (`hub_v1/server/src/ws/channel.ts`).
147
+ Hub-authoritative, captures actual channel liveness, no hook timing
148
+ involved.
149
+
146
150
  The tail reads the CC transcript file directly to enrich `PreToolUse`
147
151
  with the assistant's pre-reply text (which CC doesn't put on the
148
152
  hook payload directly). See `transcript.ts` for the walker.
149
153
 
150
154
  ---
151
155
 
152
- ## Phases (all shipped)
153
-
154
- - **Phase A** ✓ — connect / register / heartbeat / reconnect
155
- - **Phase B** ✓ — hooks + event forwarding via sidecar
156
- - **Phase C** ✓ — bidirectional permission relay (channel → hub → operator → back)
157
- - **Phase D** ✓ — MCP tools (above)
158
- - **Phase E** ✓ — public-agent dispatch (`dispatch_to_agent`, `list_agents`); 15-min timeouts; cyclomatic-complexity refactor
159
- - **Phase F** ✓ — streaming `reply_chunk` (incremental output), `read_file` / `download_to_path` for cross-session file exchange
160
-
161
- ---
162
-
163
156
  ## Local dev (linked to a sibling hub_v1 checkout)
164
157
 
165
158
  ```bash
@@ -7,7 +7,7 @@
7
7
  */
8
8
  export declare function loadPersistedSessionId(cwd: string): string | null;
9
9
  /**
10
- * Write the session.json after a successful welcome. Also drops a
10
+ * Write identity.json after a successful welcome. Also drops a
11
11
  * sibling .gitignore on first creation so the dir as a whole stays
12
12
  * out of source control.
13
13
  */
@@ -17,7 +17,7 @@ export declare function savePersistedSession(cwd: string, info: {
17
17
  hubUrl?: string;
18
18
  }): void;
19
19
  /**
20
- * Delete the persisted session.json. Currently unused — kept for
21
- * symmetry / future operator-driven `claw session reset` flows.
20
+ * Delete identity.json. Currently unused — kept for symmetry / future
21
+ * operator-driven `claw session reset` flows.
22
22
  */
23
23
  export declare function deletePersistedSession(cwd: string): void;
@@ -1,11 +1,19 @@
1
- // Persist the hub-issued session UUID across MCP process restarts so a
2
- // fresh `claude` boot in the same project rebinds to the existing
1
+ // Persist the hub-issued session identity across MCP process restarts
2
+ // so a fresh `claude` boot in the same project rebinds to the existing
3
3
  // session row instead of minting a sibling row with the same routing
4
4
  // name. This is what eliminates the "@driver appears 5 times in
5
5
  // list_peers / session ls" duplicate-row class of bug.
6
6
  //
7
+ // Forward-only rename in 0.0.33: this file used to live at
8
+ // `<cwd>/.claude/clawborrator/session.json` (and a separate hook
9
+ // runtime sidecar lived at `<cwd>/.claude/clawborrator.session.json`).
10
+ // Both have been moved into the `clawborrator/` subdir and given
11
+ // purpose-named filenames so they no longer look like typos of each
12
+ // other. The daemon's clean_stale + destroy paths nuke the legacy
13
+ // names as well, so existing sessions don't leak cruft when restarted.
14
+ //
7
15
  // Storage shape:
8
- // <cwd>/.claude/clawborrator/session.json
16
+ // <cwd>/.claude/clawborrator/identity.json
9
17
  // {
10
18
  // "sessionId": "<uuid>",
11
19
  // "routingName": "@<slug>",
@@ -14,13 +22,13 @@
14
22
  // }
15
23
  //
16
24
  // Plus a sibling `.gitignore` ("*\n") inside the same directory so the
17
- // session file (which contains nothing secret, but is per-machine
25
+ // identity file (which contains nothing secret, but is per-machine
18
26
  // runtime state) never leaks into commits.
19
27
  import { readFileSync, writeFileSync, existsSync, mkdirSync, unlinkSync } from 'node:fs';
20
28
  import { resolve } from 'node:path';
21
29
  import { log } from './log.js';
22
30
  const REL_DIR = '.claude/clawborrator';
23
- const REL_FILE = '.claude/clawborrator/session.json';
31
+ const REL_FILE = '.claude/clawborrator/identity.json';
24
32
  const REL_GI = '.claude/clawborrator/.gitignore';
25
33
  const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
26
34
  /**
@@ -49,7 +57,7 @@ export function loadPersistedSessionId(cwd) {
49
57
  }
50
58
  }
51
59
  /**
52
- * Write the session.json after a successful welcome. Also drops a
60
+ * Write identity.json after a successful welcome. Also drops a
53
61
  * sibling .gitignore on first creation so the dir as a whole stays
54
62
  * out of source control.
55
63
  */
@@ -75,8 +83,8 @@ export function savePersistedSession(cwd, info) {
75
83
  }
76
84
  }
77
85
  /**
78
- * Delete the persisted session.json. Currently unused — kept for
79
- * symmetry / future operator-driven `claw session reset` flows.
86
+ * Delete identity.json. Currently unused — kept for symmetry / future
87
+ * operator-driven `claw session reset` flows.
80
88
  */
81
89
  export function deletePersistedSession(cwd) {
82
90
  const path = resolve(cwd, REL_FILE);
@@ -1 +1 @@
1
- {"version":3,"file":"persisted-session.js","sourceRoot":"","sources":["../src/persisted-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"persisted-session.js","sourceRoot":"","sources":["../src/persisted-session.ts"],"names":[],"mappings":"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"}
package/dist/sidecar.js CHANGED
@@ -3,7 +3,14 @@
3
3
  // Code's hook system) read this file to know which session to
4
4
  // attribute their event to and which hub to POST to.
5
5
  //
6
- // Path: <cwd>/.claude/clawborrator.session.json. Mode 0600 on POSIX.
6
+ // Path: <cwd>/.claude/clawborrator/runtime.json. Mode 0600 on POSIX.
7
+ //
8
+ // Forward-only rename in 0.0.33: previously at
9
+ // `<cwd>/.claude/clawborrator.session.json` (a flat file that looked
10
+ // like a typo of identity.json). Now under the same `clawborrator/`
11
+ // subdir as identity.json with a purpose-named filename. The daemon's
12
+ // clean_stale + destroy paths nuke the legacy flat-file location as
13
+ // well, so existing sessions don't leak cruft on restart.
7
14
  //
8
15
  // Storing the channel-token plaintext here matters: hooks need it to
9
16
  // authenticate to /api/channel/event. The risk surface is the same
@@ -13,10 +20,14 @@ import { resolve } from 'node:path';
13
20
  import { mkdirSync, writeFileSync, readFileSync, unlinkSync, chmodSync, existsSync } from 'node:fs';
14
21
  import { log } from './log.js';
15
22
  function sidecarPath(cwd) {
16
- return resolve(cwd, '.claude', 'clawborrator.session.json');
23
+ return resolve(cwd, '.claude', 'clawborrator', 'runtime.json');
17
24
  }
18
25
  export function writeSidecar(payload) {
19
- const dir = resolve(payload.cwd, '.claude');
26
+ // Mkdir the clawborrator/ subdir (used to be just .claude/, but
27
+ // runtime.json now lives alongside identity.json under
28
+ // clawborrator/). The daemon's write_persisted_session creates this
29
+ // dir at preflight too — both calls are idempotent with recursive.
30
+ const dir = resolve(payload.cwd, '.claude', 'clawborrator');
20
31
  try {
21
32
  if (!existsSync(dir))
22
33
  mkdirSync(dir, { recursive: true, mode: 0o700 });
@@ -1 +1 @@
1
- {"version":3,"file":"sidecar.js","sourceRoot":"","sources":["../src/sidecar.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,kEAAkE;AAClE,8DAA8D;AAC9D,qDAAqD;AACrD,EAAE;AACF,qEAAqE;AACrE,EAAE;AACF,qEAAqE;AACrE,mEAAmE;AACnE,mEAAmE;AACnE,+DAA+D;AAE/D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACpG,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAY/B,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,2BAA2B,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAuB;IAClD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACvE,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACtC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9E,IAAI,CAAC;YAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;QACvD,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,UAAU,CAAC,IAAI,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,8DAA8D;AAC9D,8DAA8D;AAC9D,kEAAkE;AAClE,gEAAgE;AAChE,gEAAgE;AAChE,8DAA8D;AAC9D,iEAAiE;AACjE,iEAAiE;AACjE,8DAA8D;AAC9D,8BAA8B;AAC9B,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"sidecar.js","sourceRoot":"","sources":["../src/sidecar.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,kEAAkE;AAClE,8DAA8D;AAC9D,qDAAqD;AACrD,EAAE;AACF,qEAAqE;AACrE,EAAE;AACF,+CAA+C;AAC/C,qEAAqE;AACrE,oEAAoE;AACpE,sEAAsE;AACtE,oEAAoE;AACpE,0DAA0D;AAC1D,EAAE;AACF,qEAAqE;AACrE,mEAAmE;AACnE,mEAAmE;AACnE,+DAA+D;AAE/D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACpG,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAY/B,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAuB;IAClD,gEAAgE;IAChE,uDAAuD;IACvD,oEAAoE;IACpE,mEAAmE;IACnE,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IAC5D,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACvE,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACtC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9E,IAAI,CAAC;YAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;QACvD,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,UAAU,CAAC,IAAI,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,8DAA8D;AAC9D,8DAA8D;AAC9D,kEAAkE;AAClE,gEAAgE;AAChE,gEAAgE;AAChE,8DAA8D;AAC9D,iEAAiE;AACjE,iEAAiE;AACjE,8DAA8D;AAC9D,8BAA8B;AAC9B,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC"}
@@ -30,7 +30,7 @@ var log = {
30
30
 
31
31
  // src/sidecar.ts
32
32
  function sidecarPath(cwd) {
33
- return resolve(cwd, ".claude", "clawborrator.session.json");
33
+ return resolve(cwd, ".claude", "clawborrator", "runtime.json");
34
34
  }
35
35
  function readSidecar(cwd) {
36
36
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clawborrator-mcp",
3
- "version": "0.0.31",
3
+ "version": "0.0.33",
4
4
  "type": "module",
5
5
  "description": "clawborrator channel for hub_v1 — MCP server that connects Claude Code to a hub over WebSocket, with hooks for activity capture and tools for cross-session routing.",
6
6
  "license": "MIT",
@@ -19,8 +19,7 @@
19
19
  "websocket",
20
20
  "remote",
21
21
  "ai",
22
- "agent",
23
- "hub-v1"
22
+ "agent"
24
23
  ],
25
24
  "main": "dist/index.js",
26
25
  "bin": {