aibroker 0.61.2 → 0.61.4
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/dist/adapters/iterm/core.d.ts +34 -4
- package/dist/adapters/iterm/core.d.ts.map +1 -1
- package/dist/adapters/iterm/core.js +139 -104
- package/dist/adapters/iterm/core.js.map +1 -1
- package/dist/adapters/iterm/iterm2-api.d.ts.map +1 -1
- package/dist/adapters/iterm/iterm2-api.js +4 -2
- package/dist/adapters/iterm/iterm2-api.js.map +1 -1
- package/dist/adapters/iterm/sessions.d.ts.map +1 -1
- package/dist/adapters/iterm/sessions.js +47 -114
- package/dist/adapters/iterm/sessions.js.map +1 -1
- package/dist/adapters/pailot/gateway.d.ts.map +1 -1
- package/dist/adapters/pailot/gateway.js +6 -52
- package/dist/adapters/pailot/gateway.js.map +1 -1
- package/dist/daemon/commands.d.ts.map +1 -1
- package/dist/daemon/commands.js +4 -29
- package/dist/daemon/commands.js.map +1 -1
- package/dist/daemon/core-handlers.js +1 -1
- package/dist/daemon/core-handlers.js.map +1 -1
- package/dist/daemon/manage.d.ts +29 -18
- package/dist/daemon/manage.d.ts.map +1 -1
- package/dist/daemon/manage.js +120 -123
- package/dist/daemon/manage.js.map +1 -1
- package/dist/daemon/screenshot.d.ts.map +1 -1
- package/dist/daemon/screenshot.js +6 -42
- package/dist/daemon/screenshot.js.map +1 -1
- package/dist/daemon/session-content.d.ts +1 -1
- package/dist/daemon/session-content.d.ts.map +1 -1
- package/dist/daemon/session-content.js +10 -25
- package/dist/daemon/session-content.js.map +1 -1
- package/dist/daemon/sessions.d.ts.map +1 -1
- package/dist/daemon/sessions.js +7 -13
- package/dist/daemon/sessions.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/index.js +7 -13
- package/dist/mcp/index.js.map +1 -1
- package/dist/transport/iterm.d.ts.map +1 -1
- package/dist/transport/iterm.js +12 -20
- package/dist/transport/iterm.js.map +1 -1
- package/hooks/manage-hook.mjs +4 -1
- package/package.json +1 -1
package/dist/transport/iterm.js
CHANGED
|
@@ -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,
|
|
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 =
|
|
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
|
-
|
|
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 =
|
|
58
|
-
const 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 =
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,
|
|
1
|
+
{"version":3,"file":"iterm.js","sourceRoot":"","sources":["../../src/transport/iterm.ts"],"names":[],"mappings":"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"}
|
package/hooks/manage-hook.mjs
CHANGED
|
@@ -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
|
-
|
|
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);
|