aibroker 0.61.2 → 0.61.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.
Files changed (43) hide show
  1. package/dist/adapters/iterm/core.d.ts +34 -4
  2. package/dist/adapters/iterm/core.d.ts.map +1 -1
  3. package/dist/adapters/iterm/core.js +139 -104
  4. package/dist/adapters/iterm/core.js.map +1 -1
  5. package/dist/adapters/iterm/iterm2-api.d.ts.map +1 -1
  6. package/dist/adapters/iterm/iterm2-api.js +4 -2
  7. package/dist/adapters/iterm/iterm2-api.js.map +1 -1
  8. package/dist/adapters/iterm/sessions.d.ts.map +1 -1
  9. package/dist/adapters/iterm/sessions.js +47 -114
  10. package/dist/adapters/iterm/sessions.js.map +1 -1
  11. package/dist/adapters/pailot/gateway.d.ts.map +1 -1
  12. package/dist/adapters/pailot/gateway.js +6 -52
  13. package/dist/adapters/pailot/gateway.js.map +1 -1
  14. package/dist/daemon/commands.d.ts.map +1 -1
  15. package/dist/daemon/commands.js +4 -29
  16. package/dist/daemon/commands.js.map +1 -1
  17. package/dist/daemon/core-handlers.js +1 -1
  18. package/dist/daemon/core-handlers.js.map +1 -1
  19. package/dist/daemon/manage.d.ts +0 -18
  20. package/dist/daemon/manage.d.ts.map +1 -1
  21. package/dist/daemon/manage.js +8 -38
  22. package/dist/daemon/manage.js.map +1 -1
  23. package/dist/daemon/screenshot.d.ts.map +1 -1
  24. package/dist/daemon/screenshot.js +6 -42
  25. package/dist/daemon/screenshot.js.map +1 -1
  26. package/dist/daemon/session-content.d.ts +1 -1
  27. package/dist/daemon/session-content.d.ts.map +1 -1
  28. package/dist/daemon/session-content.js +10 -25
  29. package/dist/daemon/session-content.js.map +1 -1
  30. package/dist/daemon/sessions.d.ts.map +1 -1
  31. package/dist/daemon/sessions.js +7 -13
  32. package/dist/daemon/sessions.js.map +1 -1
  33. package/dist/index.d.ts +1 -1
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +1 -1
  36. package/dist/index.js.map +1 -1
  37. package/dist/mcp/index.js +7 -13
  38. package/dist/mcp/index.js.map +1 -1
  39. package/dist/transport/iterm.d.ts.map +1 -1
  40. package/dist/transport/iterm.js +12 -20
  41. package/dist/transport/iterm.js.map +1 -1
  42. package/hooks/manage-hook.mjs +4 -1
  43. package/package.json +1 -1
@@ -9,10 +9,7 @@
9
9
  * by the selector and to prove the abstraction against both hosts.
10
10
  */
11
11
  import { log } from "../core/log.js";
12
- import { isClaudeRunningInSession, pasteTextIntoSession, runAppleScript, snapshotAllSessions, typeIntoSession, withSessionAppleScript, } from "../adapters/iterm/core.js";
13
- function escapeForAppleScript(s) {
14
- return s.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
15
- }
12
+ import { isClaudeRunningInSession, pasteTextIntoSession, runItermJxa, snapshotAllSessions, typeIntoSession, withSessionJxa, } from "../adapters/iterm/core.js";
16
13
  const sq = (s) => `'${s.replace(/'/g, "'\\''")}'`;
17
14
  /** Shell line typed into a fresh tab. `resume` is the PAI-style restore start. */
18
15
  export function itermLaunchLine(opts) {
@@ -25,7 +22,7 @@ export function itermLaunchLine(opts) {
25
22
  export class ItermTransport {
26
23
  kind = "iterm";
27
24
  isAvailable() {
28
- const out = runAppleScript('tell application "iTerm2" to count windows');
25
+ const out = runItermJxa('return String(app.windows().length);');
29
26
  return out != null && /^\d+$/.test(out.trim());
30
27
  }
31
28
  listSessions() {
@@ -47,32 +44,27 @@ export class ItermTransport {
47
44
  return enter ? typeIntoSession(id, text) : pasteTextIntoSession(id, text);
48
45
  }
49
46
  capture(id) {
50
- const script = withSessionAppleScript(id, " return (text of aSession)", 'return ""');
51
- return runAppleScript(script);
47
+ return runItermJxa(withSessionJxa(id, " return aSession.text();"));
52
48
  }
53
49
  isBusy(id) {
54
50
  return isClaudeRunningInSession(id);
55
51
  }
56
52
  setTitle(id, title) {
57
- const script = withSessionAppleScript(id, ` set name of aSession to "${escapeForAppleScript(title)}"\n return "ok"`, 'return "not_found"');
58
- const ok = runAppleScript(script) === "ok";
53
+ const script = withSessionJxa(id, ` aSession.name = ${JSON.stringify(title)};\n return "ok";`, '"not_found"');
54
+ const ok = runItermJxa(script) === "ok";
59
55
  if (!ok)
60
56
  log(`iterm setTitle: failed for ${id}`);
61
57
  return ok;
62
58
  }
63
59
  launch(opts) {
60
+ // Same literal rules as the AppleScript it replaces: only `"` is escaped, so `\\\\n` in the line reaches the shell as `\\n`.
64
61
  const esc = itermLaunchLine(opts).replace(/"/g, '\\"');
65
- const id = runAppleScript(`tell application "iTerm2"
66
- activate
67
- if (count of windows) = 0 then create window with default profile
68
- tell current window
69
- set newTab to (create tab with default profile)
70
- tell current session of newTab
71
- write text "${esc}"
72
- return id of it
73
- end tell
74
- end tell
75
- end tell`);
62
+ const id = runItermJxa(` app.activate();
63
+ if (app.windows().length === 0) app.createWindowWithDefaultProfile();
64
+ var newTab = app.currentWindow().createTabWithDefaultProfile();
65
+ var session = newTab.currentSession();
66
+ session.write({ text: "${esc}" });
67
+ return session.id();`);
76
68
  if (!id)
77
69
  return null;
78
70
  return { id: id.trim(), transport: this.kind, where: "new iTerm2 tab" };
@@ -1 +1 @@
1
- {"version":3,"file":"iterm.js","sourceRoot":"","sources":["../../src/transport/iterm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"iterm.js","sourceRoot":"","sources":["../../src/transport/iterm.ts"],"names":[],"mappings":"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"}
@@ -194,7 +194,10 @@ async function notify(body) {
194
194
  // part that answers "what is going on".
195
195
  const [head, ...tail] = body.split("\n");
196
196
  const script = `display notification "${esc(tail.join(" · ").slice(0, 240))}" with title "manage" subtitle "${esc(head.slice(0, 100))}"`;
197
- await new Promise((res) => execFile("/usr/bin/osascript", ["-e", script], () => res()));
197
+ // The hook inherits iTerm's __CFBundleIdentifier through the session's shell; an osascript child that
198
+ // keeps it registers as iTerm2 (an impostor) while it runs and breaks iTerm scripting.
199
+ const { __CFBundleIdentifier: _drop, ...env } = process.env;
200
+ await new Promise((res) => execFile("/usr/bin/osascript", ["-e", script], { env }, () => res()));
198
201
  }
199
202
 
200
203
  await notify(text);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aibroker",
3
- "version": "0.61.2",
3
+ "version": "0.61.3",
4
4
  "description": "Platform-agnostic AI message broker — routes between user channels and AI backends",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",