bajaclaw 0.17.0 → 0.17.1

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,7 +7,7 @@
7
7
  ██╔══██╗██╔══██║██ ██║██╔══██║ ██║ ██║ ██╔══██║██║███╗██║
8
8
  ██████╔╝██║ ██║╚█████╔╝██║ ██║ ╚██████╗███████╗██║ ██║╚███╔███╔╝
9
9
  ╚═════╝ ╚═╝ ╚═╝ ╚════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝╚═╝ ╚═╝ ╚══╝╚══╝
10
- autonomous agents on your terms · MIT · v0.17.0
10
+ autonomous agents on your terms · MIT · v0.17.1
11
11
  ```
12
12
 
13
13
  ## What BajaClaw is
@@ -323,40 +323,17 @@ export async function startIMessage(profile, config, log, deps) {
323
323
  // chatId here is the normalized handle string for the adapter.
324
324
  await sendViaAppleScript(String(chatId), text, log);
325
325
  },
326
- startTyping: (chatId) => {
327
- // Native typing helper (helpers/bajaclaw-imessage-helper) speaks
328
- // to IMCore directly to set the "..." indicator. AppleScript
329
- // can't do this; our Obj-C helper calls setLocalUserIsTyping:
330
- // on IMChat via the private framework.
331
- //
332
- // IMCore's typing flag auto-expires after ~60s on the receiver
333
- // side (matches Messages.app's own heartbeat). We refresh every
334
- // 30s to keep it lit until the cycle finishes. Each refresh is
335
- // a sub-100ms spawn; cost is negligible.
336
- //
337
- // Graceful degradation: if the helper isn't installed or fails
338
- // (missing TCC permission, no existing chat, Apple changed the
339
- // private API), we log once and proceed silently - the adapter
340
- // never blocks a reply because of a typing failure.
341
- const handle = String(chatId);
342
- const first = sendTypingIndicator(handle, true, log);
343
- if (!first.ok) {
344
- // Return a no-op stop fn; caller side doesn't care about the
345
- // distinction as long as the method shape is preserved.
346
- return () => { };
347
- }
348
- const timer = setInterval(() => {
349
- const r = sendTypingIndicator(handle, true, log);
350
- // If a refresh fails, stop trying - something changed
351
- // (chat deleted, permission revoked). Next cycle will retry.
352
- if (!r.ok)
353
- clearInterval(timer);
354
- }, 30_000);
355
- return () => {
356
- clearInterval(timer);
357
- // Fire-and-forget stop; don't block reply routing on it.
358
- sendTypingIndicator(handle, false, log);
359
- };
326
+ startTyping: (_chatId) => {
327
+ // iMessage typing indicators are not wired as of v0.17.1. v0.17.0
328
+ // shipped a native helper that talks to IMCore, but the registry
329
+ // stays empty in a standalone process because we don't register
330
+ // as a proper IMDaemonListener - imagent only pushes chat state
331
+ // to subscribed listeners (that's how BlueBubbles works, with a
332
+ // full Obj-C delegate). The helper binary is retained for a
333
+ // future pass that implements the listener properly; for now we
334
+ // keep the shape (startTyping returns a stop fn) so the gateway
335
+ // plumbing stays consistent.
336
+ return () => { };
360
337
  },
361
338
  stop: async () => {
362
339
  stopped = true;
@@ -1 +1 @@
1
- {"version":3,"file":"imessage.js","sourceRoot":"","sources":["../../src/channels/imessage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"imessage.js","sourceRoot":"","sources":["../../src/channels/imessage.ts"],"names":[],"mappings":"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"}
Binary file
@@ -1,76 +1,242 @@
1
1
  // bajaclaw-imessage-helper
2
2
  // ------------------------
3
- // Narrow Objective-C helper that calls Apple's private IMCore framework
4
- // to toggle the "typing..." indicator on an iMessage thread. AppleScript
5
- // doesn't expose setLocalUserIsTyping: and there's no public path to it;
6
- // this binary dlopens IMCore, looks up IMChatRegistry, finds the chat,
7
- // and invokes the selector via NSInvocation.
3
+ // Long-running Obj-C helper that keeps a live connection to Apple's
4
+ // imagent via IMDaemonController, maintains the IMChatRegistry cache
5
+ // in-process, and toggles the "..." typing indicator on iMessage
6
+ // threads via the private IMCore framework.
8
7
  //
9
- // Usage:
10
- // bajaclaw-imessage-helper start <handle-or-guid>
11
- // bajaclaw-imessage-helper stop <handle-or-guid>
8
+ // Why long-running: imagent pushes chat state asynchronously to any
9
+ // process that has registered as an IMDaemonListener. A short-lived
10
+ // one-shot helper exits before that state arrives, so the registry
11
+ // always looks empty. Keeping one helper per daemon lifetime lets us
12
+ // amortize the startup cost and always have a populated registry.
12
13
  //
13
- // Handle can be a phone number (E.164) or email. GUID can be the full
14
- // chat guid (e.g. "iMessage;-;+15551234567") - we try both forms.
14
+ // Protocol: the helper reads newline-delimited commands from stdin
15
+ // and writes newline-delimited responses to stdout.
15
16
  //
16
- // Exit codes:
17
- // 0 typing toggled
18
- // 1 bad args
19
- // 2 IMCore failed to load (framework path changed or TCC denied)
20
- // 3 IMChatRegistry class not found (IMCore is loaded but symbol missing)
21
- // 4 no chat found for the given handle (user must text first)
22
- // 5 setLocalUserIsTyping: selector missing on IMChat
23
- // 6 invocation failed (rare; caught and logged)
17
+ // start <handle-or-guid> -> "ok" | "err <reason>"
18
+ // stop <handle-or-guid> -> "ok" | "err <reason>"
19
+ // ping -> "ok"
20
+ // quit -> exits 0
24
21
  //
25
- // Graceful-failure contract: any non-zero exit from this binary is
26
- // treated as "typing unavailable" by the caller (src/channels/imessage.ts).
27
- // The iMessage adapter never fails a send because of typing; it just
28
- // skips the indicator and proceeds with the reply.
22
+ // Arg-style legacy mode is also supported so existing callers and
23
+ // unit tests keep working: invoking with `<verb> <handle>` as argv
24
+ // performs a single toggle and exits. In that mode we wait up to
25
+ // 5s for the registry to populate (shorter than the long-running
26
+ // path would need, because a single ask can give up).
27
+ //
28
+ // Graceful-failure contract: any non-zero exit or "err <reason>"
29
+ // line means "typing unavailable for this call". The Node adapter
30
+ // never fails a send because of typing.
29
31
  #import <Foundation/Foundation.h>
30
32
  #import <dlfcn.h>
31
33
 
32
34
  // Reverse-engineered private class declarations. Apple does not ship
33
- // these headers; the symbols have been stable across macOS 10.14-15.
34
- // If Apple renames any of these on a future macOS, this helper will
35
- // fail with a clear exit code and the caller will skip typing.
35
+ // these headers; symbols have been stable across macOS 10.14-15.
36
+ @interface IMDaemonController : NSObject
37
+ + (instancetype)sharedInstance;
38
+ - (BOOL)connectToDaemon;
39
+ - (BOOL)blockUntilConnected;
40
+ - (id)listener;
41
+ @end
42
+
36
43
  @interface IMChatRegistry : NSObject
37
44
  + (instancetype)sharedInstance;
38
45
  - (id)existingChatWithChatIdentifier:(NSString *)identifier;
39
- - (id)existingChatForIMHandleID:(NSString *)handle;
46
+ - (id)existingChatWithGUID:(NSString *)guid;
47
+ - (id)_existingChatWithGUID:(NSString *)guid;
48
+ - (NSArray *)allExistingChats;
40
49
  @end
41
50
 
42
51
  @interface IMChat : NSObject
43
52
  - (void)setLocalUserIsTyping:(BOOL)typing;
44
53
  - (NSString *)guid;
54
+ - (NSString *)chatIdentifier;
45
55
  @end
46
56
 
47
57
  static NSString * const IMCORE_PATH = @"/System/Library/PrivateFrameworks/IMCore.framework/IMCore";
58
+ static BOOL gVerbose = NO;
59
+
60
+ static void logDebug(NSString *fmt, ...) {
61
+ if (!gVerbose) return;
62
+ va_list args;
63
+ va_start(args, fmt);
64
+ NSString *s = [[NSString alloc] initWithFormat:fmt arguments:args];
65
+ va_end(args);
66
+ fprintf(stderr, "DEBUG: %s\n", [s UTF8String]);
67
+ }
68
+
69
+ static BOOL loadIMCore(void) {
70
+ void *h = dlopen([IMCORE_PATH UTF8String], RTLD_NOW);
71
+ if (!h) {
72
+ fprintf(stderr, "ERROR: failed to load IMCore: %s\n", dlerror());
73
+ return NO;
74
+ }
75
+ return YES;
76
+ }
77
+
78
+ static BOOL connectDaemon(void) {
79
+ Class daemonClass = NSClassFromString(@"IMDaemonController");
80
+ if (!daemonClass) return NO;
81
+ id daemon = [daemonClass performSelector:@selector(sharedInstance)];
82
+ if (!daemon) return NO;
83
+ if ([daemon respondsToSelector:@selector(connectToDaemon)]) {
84
+ [daemon performSelector:@selector(connectToDaemon)];
85
+ }
86
+ if ([daemon respondsToSelector:@selector(blockUntilConnected)]) {
87
+ [daemon performSelector:@selector(blockUntilConnected)];
88
+ }
89
+ return YES;
90
+ }
48
91
 
49
- static id findChat(id registry, NSString *target) {
50
- // Try the most specific form first - a full chat identifier like
51
- // "iMessage;-;+15551234567". If that fails, try the bare handle
52
- // (which may work against some older registry lookup paths).
53
- NSString *identifier = [NSString stringWithFormat:@"iMessage;-;%@", target];
54
- id chat = [registry performSelector:@selector(existingChatWithChatIdentifier:) withObject:identifier];
55
- if (chat) return chat;
56
-
57
- chat = [registry performSelector:@selector(existingChatWithChatIdentifier:) withObject:target];
58
- if (chat) return chat;
59
-
60
- // Last resort: lookup by handle directly (not all macOS versions
61
- // expose this selector; guarded by respondsToSelector:).
62
- SEL handleSel = @selector(existingChatForIMHandleID:);
63
- if ([registry respondsToSelector:handleSel]) {
64
- chat = [registry performSelector:handleSel withObject:target];
92
+ // Wait up to `seconds` for the registry to report at least one chat.
93
+ // Returns the number of chats when it gave up (may be 0 if the wait
94
+ // expired).
95
+ static NSUInteger waitForChats(NSTimeInterval seconds) {
96
+ NSDate *deadline = [NSDate dateWithTimeIntervalSinceNow:seconds];
97
+ NSUInteger last = 0;
98
+ while ([[NSDate date] compare:deadline] == NSOrderedAscending) {
99
+ @autoreleasepool {
100
+ [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
101
+ Class rc = NSClassFromString(@"IMChatRegistry");
102
+ id reg = [rc performSelector:@selector(sharedInstance)];
103
+ id chats = [reg performSelector:@selector(allExistingChats)];
104
+ if ([chats isKindOfClass:[NSArray class]]) {
105
+ last = [(NSArray *)chats count];
106
+ if (last > 0) return last;
107
+ }
108
+ }
109
+ }
110
+ return last;
111
+ }
112
+
113
+ static id findChat(NSString *target) {
114
+ Class rc = NSClassFromString(@"IMChatRegistry");
115
+ id registry = [rc performSelector:@selector(sharedInstance)];
116
+
117
+ NSArray<NSString *> *guids = @[
118
+ [NSString stringWithFormat:@"any;-;%@", target],
119
+ [NSString stringWithFormat:@"iMessage;-;%@", target],
120
+ [NSString stringWithFormat:@"SMS;-;%@", target],
121
+ ];
122
+
123
+ // Strategy 1: enumerate allExistingChats and match by
124
+ // chatIdentifier or guid tail. Works once imagent has pushed state.
125
+ if ([registry respondsToSelector:@selector(allExistingChats)]) {
126
+ id allChats = [registry performSelector:@selector(allExistingChats)];
127
+ if ([allChats isKindOfClass:[NSArray class]]) {
128
+ logDebug(@"allExistingChats -> %lu chats", (unsigned long)[(NSArray *)allChats count]);
129
+ for (id chat in (NSArray *)allChats) {
130
+ NSString *cid = [chat respondsToSelector:@selector(chatIdentifier)]
131
+ ? [chat performSelector:@selector(chatIdentifier)] : nil;
132
+ NSString *cguid = [chat respondsToSelector:@selector(guid)]
133
+ ? [chat performSelector:@selector(guid)] : nil;
134
+ if ([cid isEqualToString:target]) return chat;
135
+ if (cguid) {
136
+ for (NSString *g in guids) if ([cguid isEqualToString:g]) return chat;
137
+ if ([cguid hasSuffix:[NSString stringWithFormat:@";-;%@", target]]) return chat;
138
+ }
139
+ }
140
+ }
141
+ }
142
+
143
+ // Strategy 2: direct GUID lookup on the registry.
144
+ for (NSString *guid in guids) {
145
+ id chat = [registry performSelector:@selector(existingChatWithChatIdentifier:) withObject:guid];
65
146
  if (chat) return chat;
147
+ if ([registry respondsToSelector:@selector(_existingChatWithGUID:)]) {
148
+ chat = [registry performSelector:@selector(_existingChatWithGUID:) withObject:guid];
149
+ if (chat) return chat;
150
+ }
151
+ }
152
+
153
+ // Strategy 3: bare handle.
154
+ return [registry performSelector:@selector(existingChatWithChatIdentifier:) withObject:target];
155
+ }
156
+
157
+ // Perform typing toggle; return nil on success or an error string.
158
+ static NSString *toggleTyping(NSString *target, BOOL typing) {
159
+ id chat = findChat(target);
160
+ if (!chat) return @"no existing chat (user must text first)";
161
+ SEL sel = @selector(setLocalUserIsTyping:);
162
+ NSMethodSignature *sig = [chat methodSignatureForSelector:sel];
163
+ if (!sig) return @"setLocalUserIsTyping: not available";
164
+ NSInvocation *inv = [NSInvocation invocationWithMethodSignature:sig];
165
+ [inv setTarget:chat];
166
+ [inv setSelector:sel];
167
+ [inv setArgument:&typing atIndex:2];
168
+ @try {
169
+ [inv invoke];
170
+ } @catch (NSException *e) {
171
+ return [NSString stringWithFormat:@"invoke threw: %@", [e reason]];
66
172
  }
67
173
  return nil;
68
174
  }
69
175
 
176
+ // Long-running stdin loop. Reads line-delimited commands; writes
177
+ // "ok"/"err ..." lines to stdout. Returns when stdin is closed or a
178
+ // "quit" command arrives.
179
+ static int runDaemonLoop(void) {
180
+ logDebug(@"entering daemon loop");
181
+ // Warm up the registry once. A few seconds of waiting at start is
182
+ // fine because we only pay it once per helper lifetime.
183
+ waitForChats(5.0);
184
+
185
+ char *buf = NULL;
186
+ size_t bufSize = 0;
187
+ ssize_t len;
188
+ setvbuf(stdout, NULL, _IOLBF, 0); // line-buffered
189
+ while ((len = getline(&buf, &bufSize, stdin)) != -1) {
190
+ @autoreleasepool {
191
+ // Trim trailing newline.
192
+ while (len > 0 && (buf[len-1] == '\n' || buf[len-1] == '\r')) { buf[--len] = '\0'; }
193
+ if (len == 0) continue;
194
+ NSString *line = [NSString stringWithUTF8String:buf];
195
+ NSArray<NSString *> *parts = [line componentsSeparatedByString:@" "];
196
+ NSString *cmd = parts.count > 0 ? parts[0] : @"";
197
+ NSString *arg = parts.count > 1 ? [[parts subarrayWithRange:NSMakeRange(1, parts.count - 1)] componentsJoinedByString:@" "] : @"";
198
+
199
+ if ([cmd isEqualToString:@"ping"]) {
200
+ printf("ok\n");
201
+ } else if ([cmd isEqualToString:@"quit"]) {
202
+ printf("ok\n");
203
+ break;
204
+ } else if ([cmd isEqualToString:@"start"] || [cmd isEqualToString:@"stop"]) {
205
+ BOOL typing = [cmd isEqualToString:@"start"];
206
+ NSString *err = toggleTyping(arg, typing);
207
+ if (err) {
208
+ printf("err %s\n", [err UTF8String]);
209
+ } else {
210
+ printf("ok\n");
211
+ }
212
+ } else {
213
+ printf("err unknown command\n");
214
+ }
215
+ }
216
+ }
217
+ free(buf);
218
+ return 0;
219
+ }
220
+
70
221
  int main(int argc, char *argv[]) {
71
222
  @autoreleasepool {
223
+ gVerbose = getenv("BAJACLAW_HELPER_DEBUG") != NULL;
224
+
225
+ if (!loadIMCore()) return 2;
226
+ if (!connectDaemon()) {
227
+ fprintf(stderr, "ERROR: IMDaemonController not available\n");
228
+ return 3;
229
+ }
230
+
231
+ // Two modes:
232
+ // argv form (legacy): helper <start|stop> <handle>
233
+ // daemon form: helper serve (reads stdin)
234
+ if (argc >= 2 && strcmp(argv[1], "serve") == 0) {
235
+ return runDaemonLoop();
236
+ }
237
+
72
238
  if (argc < 3) {
73
- fprintf(stderr, "usage: %s <start|stop> <handle-or-guid>\n", argv[0]);
239
+ fprintf(stderr, "usage: %s <start|stop|serve> [handle]\n", argv[0]);
74
240
  return 1;
75
241
  }
76
242
 
@@ -79,57 +245,23 @@ int main(int argc, char *argv[]) {
79
245
  if (strcmp(cmd, "start") == 0) typing = YES;
80
246
  else if (strcmp(cmd, "stop") == 0) typing = NO;
81
247
  else {
82
- fprintf(stderr, "usage: %s <start|stop> <handle-or-guid>\n", argv[0]);
248
+ fprintf(stderr, "usage: %s <start|stop|serve> [handle]\n", argv[0]);
83
249
  return 1;
84
250
  }
85
251
 
86
252
  NSString *target = [NSString stringWithUTF8String:argv[2]];
87
253
 
88
- // dlopen the private framework. Without this, NSClassFromString
89
- // won't find IMChatRegistry because the framework isn't loaded
90
- // by default in a vanilla Foundation process.
91
- void *h = dlopen([IMCORE_PATH UTF8String], RTLD_NOW);
92
- if (!h) {
93
- fprintf(stderr, "ERROR: failed to load IMCore: %s\n", dlerror());
94
- return 2;
95
- }
96
-
97
- Class regClass = NSClassFromString(@"IMChatRegistry");
98
- if (!regClass) {
99
- fprintf(stderr, "ERROR: IMChatRegistry class not found (IMCore loaded but symbol missing)\n");
100
- return 3;
101
- }
102
-
103
- id registry = [regClass performSelector:@selector(sharedInstance)];
104
- if (!registry) {
105
- fprintf(stderr, "ERROR: [IMChatRegistry sharedInstance] returned nil\n");
106
- return 3;
107
- }
254
+ // One-shot mode: wait up to 5s for registry. If still empty,
255
+ // we won't find the chat. Callers in long-running setups
256
+ // should use `serve` instead.
257
+ waitForChats(5.0);
108
258
 
109
- id chat = findChat(registry, target);
110
- if (!chat) {
111
- fprintf(stderr, "ERROR: no existing chat for '%s' - user must text first\n", argv[2]);
259
+ NSString *err = toggleTyping(target, typing);
260
+ if (err) {
261
+ fprintf(stderr, "ERROR: %s\n", [err UTF8String]);
112
262
  return 4;
113
263
  }
114
264
 
115
- SEL sel = @selector(setLocalUserIsTyping:);
116
- NSMethodSignature *sig = [chat methodSignatureForSelector:sel];
117
- if (!sig) {
118
- fprintf(stderr, "ERROR: setLocalUserIsTyping: not available on IMChat\n");
119
- return 5;
120
- }
121
-
122
- NSInvocation *inv = [NSInvocation invocationWithMethodSignature:sig];
123
- [inv setTarget:chat];
124
- [inv setSelector:sel];
125
- [inv setArgument:&typing atIndex:2];
126
- @try {
127
- [inv invoke];
128
- } @catch (NSException *e) {
129
- fprintf(stderr, "ERROR: invoke threw: %s\n", [[e reason] UTF8String] ?: "unknown");
130
- return 6;
131
- }
132
-
133
265
  fprintf(stdout, "ok\n");
134
266
  return 0;
135
267
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bajaclaw",
3
- "version": "0.17.0",
3
+ "version": "0.17.1",
4
4
  "description": "BajaClaw - autonomous agents on your terms",
5
5
  "type": "module",
6
6
  "bajaclaw": {