whazaa 0.8.0 → 0.9.0

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.
@@ -45,6 +45,14 @@
45
45
  * Start the Whazaa watcher — the long-running process that bridges WhatsApp
46
46
  * and iTerm2 Claude Code sessions.
47
47
  *
48
+ * Supports two modes:
49
+ * - **Hub mode**: AIBroker daemon is running. Whazaa acts as a thin transport
50
+ * adapter — incoming WA messages are forwarded to the hub for routing.
51
+ * PAILot gateway is NOT started (hub owns it). Outgoing messages arrive
52
+ * via the `deliver` IPC handler (Phase 2).
53
+ * - **Embedded mode**: No daemon. Whazaa runs everything locally (current
54
+ * behavior, fully backward compatible).
55
+ *
48
56
  * Suspends the event loop indefinitely via `await new Promise(() => {})`;
49
57
  * exits only on SIGINT or SIGTERM.
50
58
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/watcher/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAyBH;;;;;;;;;;GAUG;AACH,wBAAsB,KAAK,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkHhE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/watcher/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAuEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,KAAK,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0JhE"}
@@ -52,12 +52,65 @@ import { createMessageHandler } from "./commands.js";
52
52
  import { setAppDir, loadSessionRegistry } from "./persistence.js";
53
53
  import { log, setLogPrefix } from "./log.js";
54
54
  import { handleScreenshot } from "./screenshot.js";
55
- import { router, APIBackend, HybridSessionManager, setHybridManager, snapshotAllSessions, startWsGateway, stopWsGateway, setScreenshotHandler, WatcherClient, DAEMON_SOCKET_PATH } from "aibroker";
55
+ import { router, APIBackend, HybridSessionManager, setHybridManager, snapshotAllSessions, startWsGateway, stopWsGateway, setScreenshotHandler, WatcherClient, DAEMON_SOCKET_PATH, createBrokerMessage } from "aibroker";
56
+ // ── Hub mode detection ───────────────────────────────────────────────────────
57
+ /**
58
+ * Probe the AIBroker hub daemon to determine whether it is running.
59
+ *
60
+ * Connects to `/tmp/aibroker.sock` and calls `status`. If the call succeeds
61
+ * within 2 seconds, the hub is considered alive and Whazaa enters hub mode.
62
+ * On any failure (socket missing, refused, timeout), returns false and
63
+ * Whazaa falls back to embedded mode (current behavior unchanged).
64
+ */
65
+ async function detectHubMode() {
66
+ const client = new WatcherClient(DAEMON_SOCKET_PATH);
67
+ try {
68
+ const result = await Promise.race([
69
+ client.call_raw("status", {}),
70
+ new Promise((_, reject) => setTimeout(() => reject(new Error("timeout")), 2000)),
71
+ ]);
72
+ return result !== null;
73
+ }
74
+ catch {
75
+ return false;
76
+ }
77
+ }
78
+ /**
79
+ * Slash commands that must be handled locally even in hub mode.
80
+ *
81
+ * These commands require direct iTerm2/Baileys access that only the Whazaa
82
+ * process has. They should never be forwarded to the hub.
83
+ */
84
+ const LOCAL_SLASH_COMMANDS = new Set([
85
+ "/h", "/help",
86
+ "/cc", "/esc", "/enter", "/tab",
87
+ "/up", "/down", "/left", "/right",
88
+ "/restart", "/login",
89
+ ]);
90
+ /** Check if a message matches a local-only slash command. */
91
+ function isLocalSlashCommand(text) {
92
+ const trimmed = text.trim();
93
+ // Exact matches
94
+ if (LOCAL_SLASH_COMMANDS.has(trimmed))
95
+ return true;
96
+ // /pick N pattern
97
+ if (/^\/pick\s+\d+/.test(trimmed))
98
+ return true;
99
+ return false;
100
+ }
56
101
  // --- Main loop ---------------------------------------------------------------
57
102
  /**
58
103
  * Start the Whazaa watcher — the long-running process that bridges WhatsApp
59
104
  * and iTerm2 Claude Code sessions.
60
105
  *
106
+ * Supports two modes:
107
+ * - **Hub mode**: AIBroker daemon is running. Whazaa acts as a thin transport
108
+ * adapter — incoming WA messages are forwarded to the hub for routing.
109
+ * PAILot gateway is NOT started (hub owns it). Outgoing messages arrive
110
+ * via the `deliver` IPC handler (Phase 2).
111
+ * - **Embedded mode**: No daemon. Whazaa runs everything locally (current
112
+ * behavior, fully backward compatible).
113
+ *
61
114
  * Suspends the event loop indefinitely via `await new Promise(() => {})`;
62
115
  * exits only on SIGINT or SIGTERM.
63
116
  *
@@ -89,10 +142,14 @@ export async function watch(rawSessionId) {
89
142
  manager.createApiSession("Default", process.env.AIBROKER_CWD ?? homedir());
90
143
  // Set APIBackend as default for backward-compat (deliverViaApi reads it)
91
144
  router.setDefaultBackend(apiBackend);
145
+ // ── Detect hub mode ──
146
+ const hubMode = await detectHubMode();
147
+ const hubClient = hubMode ? new WatcherClient(DAEMON_SOCKET_PATH) : null;
92
148
  console.log(`Whazaa Watch`);
93
149
  console.log(` Session: ${activeSessionId || "(auto-discover)"}`);
94
150
  console.log(` Backend: hybrid (api=${apiBackend.model})`);
95
151
  console.log(` Socket: ${IPC_SOCKET_PATH}`);
152
+ console.log(` Mode: ${hubMode ? "hub (daemon detected)" : "embedded (standalone)"}`);
96
153
  console.log();
97
154
  let consecutiveFailures = 0;
98
155
  // Graceful shutdown
@@ -102,7 +159,8 @@ export async function watch(rawSessionId) {
102
159
  console.log(`\n[whazaa-watch] ${signal} received. Stopping.`);
103
160
  if (cleanupWatcher)
104
161
  cleanupWatcher();
105
- stopWsGateway();
162
+ if (!hubMode)
163
+ stopWsGateway();
106
164
  if (ipcServer) {
107
165
  ipcServer.close();
108
166
  try {
@@ -110,6 +168,10 @@ export async function watch(rawSessionId) {
110
168
  }
111
169
  catch { /* ignore */ }
112
170
  }
171
+ // Unregister from hub on shutdown
172
+ if (hubClient) {
173
+ hubClient.call_raw("unregister_adapter", { name: "whazaa" }).catch(() => { });
174
+ }
113
175
  process.exit(0);
114
176
  };
115
177
  process.on("SIGINT", () => shutdown("SIGINT"));
@@ -123,7 +185,28 @@ export async function watch(rawSessionId) {
123
185
  console.log(`Connecting to WhatsApp...\n`);
124
186
  const { cleanup, triggerLogin } = await connectWatcher((body, _msgId, timestamp) => {
125
187
  console.log(`[whazaa-watch] (direct) -> ${body}`);
126
- handleMessage(body, timestamp);
188
+ if (hubMode && hubClient) {
189
+ // Hub mode: forward non-local messages to the hub for routing.
190
+ // Local slash commands (keyboard, /restart, /help) stay in Whazaa.
191
+ if (isLocalSlashCommand(body)) {
192
+ handleMessage(body, timestamp);
193
+ return;
194
+ }
195
+ // Create a BrokerMessage and route through the hub
196
+ const message = createBrokerMessage("whazaa", body.trim().startsWith("/") ? "command" : "text", { text: body });
197
+ message.timestamp = timestamp;
198
+ hubClient.call_raw("route_message", {
199
+ message: message,
200
+ }).catch((err) => {
201
+ // Hub delivery failed — fall back to local handling
202
+ log(`Hub route_message failed, falling back to local: ${err instanceof Error ? err.message : String(err)}`);
203
+ handleMessage(body, timestamp);
204
+ });
205
+ }
206
+ else {
207
+ // Embedded mode: handle everything locally (unchanged)
208
+ handleMessage(body, timestamp);
209
+ }
127
210
  });
128
211
  cleanupWatcher = cleanup;
129
212
  // Restore persisted sessions and auto-discover active iTerm2 sessions
@@ -146,19 +229,25 @@ export async function watch(rawSessionId) {
146
229
  }
147
230
  // Start the IPC server
148
231
  ipcServer = startIpcServer(triggerLogin);
149
- // Start WebSocket gateway for PAILot app connections
150
- setScreenshotHandler(handleScreenshot);
151
- startWsGateway(handleMessage);
152
- // Optional: register with the AIBroker hub daemon (fire-and-forget)
153
- const hubClient = new WatcherClient(DAEMON_SOCKET_PATH);
154
- hubClient.call_raw("register_adapter", {
155
- name: "whazaa",
156
- socketPath: IPC_SOCKET_PATH,
157
- }).then(() => {
158
- log("Registered with AIBroker hub daemon");
159
- }).catch(() => {
160
- // Hub daemon not running — embedded mode, perfectly fine
161
- });
232
+ if (hubMode && hubClient) {
233
+ // Hub mode: do NOT start PAILot WsGateway — the hub owns it.
234
+ // Register with the hub so it can route messages to us.
235
+ log("Hub mode: skipping WsGateway (hub owns PAILot gateway)");
236
+ hubClient.call_raw("register_adapter", {
237
+ name: "whazaa",
238
+ socketPath: IPC_SOCKET_PATH,
239
+ }).then(() => {
240
+ log("Registered with AIBroker hub daemon");
241
+ }).catch((err) => {
242
+ log(`Hub registration failed: ${err instanceof Error ? err.message : String(err)}`);
243
+ });
244
+ }
245
+ else {
246
+ // Embedded mode: start WsGateway locally (current behavior)
247
+ setScreenshotHandler(handleScreenshot);
248
+ startWsGateway(handleMessage);
249
+ log("Embedded mode: started local WsGateway");
250
+ }
162
251
  // Keep process alive
163
252
  await new Promise(() => { });
164
253
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/watcher/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/watcher/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "whazaa",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "WhatsApp MCP server for Claude Code — talk to Claude from your phone via WhatsApp self-chat",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",