bajaclaw 0.17.1 → 0.17.3

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.1
10
+ autonomous agents on your terms · MIT · v0.17.2
11
11
  ```
12
12
 
13
13
  ## What BajaClaw is
@@ -118,29 +118,26 @@ export function saveState(profile, state) {
118
118
  export function openChatDb() {
119
119
  return new Database(chatDbPath(), { readonly: true, fileMustExist: true });
120
120
  }
121
- // Native typing helper. Compiled from helpers/imessage-typing.m into a
122
- // universal Mach-O binary shipped alongside bajaclaw. Calls IMCore's
123
- // private setLocalUserIsTyping: to produce the "..." indicator on the
124
- // recipient's device - something AppleScript can't do.
121
+ // Native typing helper: retained as source + pre-built binary in
122
+ // helpers/ but not currently invoked. Prior attempts (v0.17.0 one-shot,
123
+ // v0.17.2 long-lived listener) both fail on macOS 26+: unsigned
124
+ // helpers never receive account/chat state from imagent, so
125
+ // `IMChatRegistry.allExistingChats` stays empty and there's no
126
+ // `IMChat` object to call `setLocalUserIsTyping:` on. Making it work
127
+ // would require either code signing with private entitlements or
128
+ // running from an Apple-trusted context - neither is in scope.
125
129
  //
126
- // Resolves to one of:
127
- // - <repo>/helpers/bajaclaw-imessage-helper (dev checkout; src/channels -> up two)
128
- // - <pkg>/helpers/bajaclaw-imessage-helper (installed; dist/channels -> up two)
129
- // Both paths end up the same shape because `files` in package.json
130
- // ships helpers/ verbatim next to dist/.
130
+ // Resolver kept for future experiments and so existing unit tests
131
+ // that import it keep compiling.
131
132
  let cachedHelperPath;
132
133
  export function resolveTypingHelperPath() {
133
134
  if (cachedHelperPath !== undefined)
134
135
  return cachedHelperPath;
135
- // __dirname is <root>/dist/channels when installed, or <root>/src/channels
136
- // via tsx. Either way, up two levels is the package root.
137
136
  const root = join(__dirname, "..", "..");
138
137
  const candidate = join(root, "helpers", "bajaclaw-imessage-helper");
139
138
  try {
140
139
  const st = statSync(candidate);
141
140
  if (st.isFile()) {
142
- // Strip the quarantine attribute npm applies to files downloaded
143
- // in tarballs. Idempotent; no-op if absent. Ignored on failure.
144
141
  spawnSync("xattr", ["-dr", "com.apple.quarantine", candidate], { stdio: "ignore" });
145
142
  cachedHelperPath = candidate;
146
143
  return candidate;
@@ -150,6 +147,8 @@ export function resolveTypingHelperPath() {
150
147
  cachedHelperPath = null;
151
148
  return null;
152
149
  }
150
+ // One-shot helper invocation retained for tests and future use.
151
+ // Currently unused by the adapter because it can't succeed on macOS 26+.
153
152
  export function sendTypingIndicator(handle, typing, log) {
154
153
  if (process.platform !== "darwin") {
155
154
  return { ok: false, exitCode: -1, error: "unsupported-platform" };
@@ -324,15 +323,11 @@ export async function startIMessage(profile, config, log, deps) {
324
323
  await sendViaAppleScript(String(chatId), text, log);
325
324
  },
326
325
  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.
326
+ // Typing indicator is not functional on macOS 26+ for unsigned
327
+ // helpers. Attempts in v0.17.0/v0.17.2 both failed because
328
+ // imagent doesn't push account/chat state to our process, so
329
+ // IMChatRegistry stays empty. Returning a no-op stop keeps the
330
+ // gateway plumbing consistent.
336
331
  return () => { };
337
332
  },
338
333
  stop: async () => {
@@ -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
@@ -54,8 +54,23 @@
54
54
  - (NSString *)chatIdentifier;
55
55
  @end
56
56
 
57
+ // Listener class. Registered with imagent so it pushes chat state
58
+ // to this process. Without this registration, IMChatRegistry stays
59
+ // empty even after a successful connectToDaemon + blockUntilConnected.
60
+ //
61
+ // Key insight from BlueBubbles: imagent only delivers chat state to
62
+ // processes registered via [[daemon listener] addHandler:] with an
63
+ // appropriate capabilities bitmask.
64
+ @interface BajaCrawListener : NSObject
65
+ @end
66
+
57
67
  static NSString * const IMCORE_PATH = @"/System/Library/PrivateFrameworks/IMCore.framework/IMCore";
58
68
  static BOOL gVerbose = NO;
69
+ // Set to YES by listener callbacks once imagent has pushed at least
70
+ // the initial chat state. Used as an early-exit signal in waitForChats.
71
+ static BOOL gReady = NO;
72
+ // Kept alive for process lifetime; ARC retains through this global.
73
+ static id gListenerInstance = nil;
59
74
 
60
75
  static void logDebug(NSString *fmt, ...) {
61
76
  if (!gVerbose) return;
@@ -66,6 +81,77 @@ static void logDebug(NSString *fmt, ...) {
66
81
  fprintf(stderr, "DEBUG: %s\n", [s UTF8String]);
67
82
  }
68
83
 
84
+ @implementation BajaCrawListener
85
+
86
+ // imagent calls setupComplete: / setupCompleted: when the connection
87
+ // handshake finishes. Either name can appear depending on macOS version.
88
+ - (void)setupComplete:(id)arg {
89
+ logDebug(@"setupComplete:");
90
+ gReady = YES;
91
+ }
92
+ - (void)setupCompleted:(id)arg {
93
+ logDebug(@"setupCompleted:");
94
+ gReady = YES;
95
+ }
96
+ - (void)didConnectToIMAgent:(id)arg {
97
+ logDebug(@"didConnectToIMAgent:");
98
+ gReady = YES;
99
+ }
100
+
101
+ // imagent calls these when chat state becomes available.
102
+ - (void)chatLoaded:(id)arg1 chatProperties:(id)arg2 {
103
+ logDebug(@"chatLoaded:chatProperties:");
104
+ gReady = YES;
105
+ }
106
+ - (void)chatsDidChange:(id)arg1 {
107
+ logDebug(@"chatsDidChange:");
108
+ gReady = YES;
109
+ }
110
+ - (void)chatsLoaded:(id)arg1 {
111
+ logDebug(@"chatsLoaded:");
112
+ gReady = YES;
113
+ }
114
+
115
+ // No-op stubs for other common imagent callbacks.
116
+ - (void)messageReceived:(id)arg1 { }
117
+ - (void)account:(id)arg1 updatedSettings:(id)arg2 { }
118
+ - (void)account:(id)arg1 status:(id)arg2 { }
119
+ - (void)account:(id)arg1 loginStatusChanged:(id)arg2 { }
120
+ - (void)didDisconnectFromIMAgent:(id)arg1 { }
121
+
122
+ // imagent queries capabilities to decide which events to push.
123
+ // Return all bits so we receive chat list and setup events.
124
+ - (unsigned long long)capabilities {
125
+ return 0xFFFFFFFFFFFFFFFFULL;
126
+ }
127
+
128
+ // Safe fallback: imagent sends many selectors we haven't declared.
129
+ // Without methodSignatureForSelector: + forwardInvocation:, any
130
+ // unknown selector would crash with "unrecognized selector".
131
+ - (NSMethodSignature *)methodSignatureForSelector:(SEL)sel {
132
+ NSMethodSignature *sig = [super methodSignatureForSelector:sel];
133
+ if (!sig) {
134
+ // Generic void(id) signature covers the vast majority of
135
+ // imagent callbacks that deliver a single object argument.
136
+ sig = [NSMethodSignature signatureWithObjCTypes:"v@:@"];
137
+ }
138
+ return sig;
139
+ }
140
+ - (void)forwardInvocation:(NSInvocation *)inv {
141
+ NSString *selName = NSStringFromSelector([inv selector]);
142
+ logDebug(@"unhandled imagent callback: %@", selName);
143
+ // Treat any "chat"/"setup"/"chats" prefixed callback as a ready
144
+ // signal - imagent may rename these methods across macOS versions.
145
+ if ([selName hasPrefix:@"chat"]
146
+ || [selName hasPrefix:@"setup"]
147
+ || [selName hasPrefix:@"chats"]
148
+ || [selName hasPrefix:@"didConnect"]) {
149
+ gReady = YES;
150
+ }
151
+ }
152
+
153
+ @end
154
+
69
155
  static BOOL loadIMCore(void) {
70
156
  void *h = dlopen([IMCORE_PATH UTF8String], RTLD_NOW);
71
157
  if (!h) {
@@ -80,18 +166,53 @@ static BOOL connectDaemon(void) {
80
166
  if (!daemonClass) return NO;
81
167
  id daemon = [daemonClass performSelector:@selector(sharedInstance)];
82
168
  if (!daemon) return NO;
169
+
170
+ // Create the listener before connecting so it is ready when imagent
171
+ // delivers the initial connection callbacks.
172
+ gListenerInstance = [[BajaCrawListener alloc] init];
173
+
83
174
  if ([daemon respondsToSelector:@selector(connectToDaemon)]) {
84
175
  [daemon performSelector:@selector(connectToDaemon)];
85
176
  }
86
177
  if ([daemon respondsToSelector:@selector(blockUntilConnected)]) {
87
178
  [daemon performSelector:@selector(blockUntilConnected)];
88
179
  }
180
+
181
+ // Register as a listener. imagent will begin pushing chat state
182
+ // once the handler is added with appropriate capabilities.
183
+ // Primary path: [[daemon listener] addHandler:]
184
+ id daemonListener = [daemon respondsToSelector:@selector(listener)]
185
+ ? [daemon performSelector:@selector(listener)] : nil;
186
+
187
+ SEL addHandlerSel = NSSelectorFromString(@"addHandler:");
188
+ if (daemonListener && [daemonListener respondsToSelector:addHandlerSel]) {
189
+ // Dynamic selector: ARC warns about potential leak but gListenerInstance
190
+ // is a strong global so there is no actual leak.
191
+ #pragma clang diagnostic push
192
+ #pragma clang diagnostic ignored "-Warc-performSelector-leaks"
193
+ [daemonListener performSelector:addHandlerSel withObject:gListenerInstance];
194
+ #pragma clang diagnostic pop
195
+ logDebug(@"listener registered via [daemonListener addHandler:]");
196
+ } else {
197
+ // Fallback: some macOS versions expose addListener: on the daemon itself.
198
+ SEL addListenerSel = NSSelectorFromString(@"addListener:");
199
+ if ([daemon respondsToSelector:addListenerSel]) {
200
+ #pragma clang diagnostic push
201
+ #pragma clang diagnostic ignored "-Warc-performSelector-leaks"
202
+ [daemon performSelector:addListenerSel withObject:gListenerInstance];
203
+ #pragma clang diagnostic pop
204
+ logDebug(@"listener registered via [daemon addListener:]");
205
+ } else {
206
+ logDebug(@"WARNING: no listener registration API found - chat list may not load");
207
+ }
208
+ }
209
+
89
210
  return YES;
90
211
  }
91
212
 
92
213
  // 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).
214
+ // Now also watches gReady (set by listener callbacks) as an early exit.
215
+ // Returns the chat count when it gives up (may be 0 on timeout).
95
216
  static NSUInteger waitForChats(NSTimeInterval seconds) {
96
217
  NSDate *deadline = [NSDate dateWithTimeIntervalSinceNow:seconds];
97
218
  NSUInteger last = 0;
@@ -105,6 +226,18 @@ static NSUInteger waitForChats(NSTimeInterval seconds) {
105
226
  last = [(NSArray *)chats count];
106
227
  if (last > 0) return last;
107
228
  }
229
+ // gReady means the listener received a chat-state callback.
230
+ // Give the registry one extra tick to settle, then return
231
+ // whatever we have (even if count is still 0 - some macOS
232
+ // versions populate via chatIdentifier lookup only).
233
+ if (gReady) {
234
+ [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.3]];
235
+ id chats2 = [reg performSelector:@selector(allExistingChats)];
236
+ if ([chats2 isKindOfClass:[NSArray class]]) {
237
+ last = [(NSArray *)chats2 count];
238
+ }
239
+ return last;
240
+ }
108
241
  }
109
242
  }
110
243
  return last;
@@ -173,48 +306,72 @@ static NSString *toggleTyping(NSString *target, BOOL typing) {
173
306
  return nil;
174
307
  }
175
308
 
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.
309
+ // Long-running stdin loop. Reads commands on a GCD background thread
310
+ // so the main thread can keep spinning NSRunLoop, which is required
311
+ // for imagent to deliver callbacks to gListenerInstance.
312
+ //
313
+ // Commands are dispatched back to the main thread for toggleTyping
314
+ // because IMCore is not thread-safe.
179
315
  static int runDaemonLoop(void) {
180
316
  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 {
317
+ setvbuf(stdout, NULL, _IOLBF, 0);
318
+
319
+ __block volatile BOOL done = NO;
320
+
321
+ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
322
+ char *buf = NULL;
323
+ size_t bufSize = 0;
324
+ ssize_t len;
325
+ while (!done && (len = getline(&buf, &bufSize, stdin)) != -1) {
326
+ @autoreleasepool {
327
+ while (len > 0 && (buf[len-1] == '\n' || buf[len-1] == '\r')) { buf[--len] = '\0'; }
328
+ if (len == 0) continue;
329
+ NSString *line = [NSString stringWithUTF8String:buf];
330
+ NSArray<NSString *> *parts = [line componentsSeparatedByString:@" "];
331
+ NSString *cmd = parts.count > 0 ? parts[0] : @"";
332
+ NSString *arg = parts.count > 1
333
+ ? [[parts subarrayWithRange:NSMakeRange(1, parts.count - 1)] componentsJoinedByString:@" "]
334
+ : @"";
335
+
336
+ if ([cmd isEqualToString:@"ping"]) {
210
337
  printf("ok\n");
338
+ } else if ([cmd isEqualToString:@"quit"]) {
339
+ printf("ok\n");
340
+ done = YES;
341
+ break;
342
+ } else if ([cmd isEqualToString:@"start"] || [cmd isEqualToString:@"stop"]) {
343
+ BOOL typing = [cmd isEqualToString:@"start"];
344
+ __block NSString *err = nil;
345
+ // Dispatch to main thread: IMCore callbacks and toggleTyping
346
+ // must run on the same thread as the runloop.
347
+ dispatch_sync(dispatch_get_main_queue(), ^{
348
+ err = toggleTyping(arg, typing);
349
+ });
350
+ if (err) {
351
+ printf("err %s\n", [err UTF8String]);
352
+ } else {
353
+ printf("ok\n");
354
+ }
355
+ } else {
356
+ printf("err unknown command\n");
211
357
  }
212
- } else {
213
- printf("err unknown command\n");
214
358
  }
215
359
  }
360
+ free(buf);
361
+ done = YES;
362
+ dispatch_async(dispatch_get_main_queue(), ^{
363
+ CFRunLoopStop(CFRunLoopGetMain());
364
+ });
365
+ });
366
+
367
+ // Spin the main runloop indefinitely. This is what keeps imagent
368
+ // able to fire callbacks on gListenerInstance. Without this, the
369
+ // listener is registered but never invoked.
370
+ while (!done) {
371
+ @autoreleasepool {
372
+ [[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1.0]];
373
+ }
216
374
  }
217
- free(buf);
218
375
  return 0;
219
376
  }
220
377
 
@@ -251,9 +408,9 @@ int main(int argc, char *argv[]) {
251
408
 
252
409
  NSString *target = [NSString stringWithUTF8String:argv[2]];
253
410
 
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.
411
+ // One-shot mode: wait up to 5s for registry. The listener registered
412
+ // in connectDaemon() will receive callbacks while the runloop spins
413
+ // inside waitForChats(), which now exits early when gReady is set.
257
414
  waitForChats(5.0);
258
415
 
259
416
  NSString *err = toggleTyping(target, typing);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bajaclaw",
3
- "version": "0.17.1",
3
+ "version": "0.17.3",
4
4
  "description": "BajaClaw - autonomous agents on your terms",
5
5
  "type": "module",
6
6
  "bajaclaw": {