@agentdeck/bridge 1.0.8 → 1.0.10
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/ask-gate.d.ts +113 -0
- package/dist/ask-gate.d.ts.map +1 -0
- package/dist/ask-gate.js +110 -0
- package/dist/ask-gate.js.map +1 -0
- package/dist/auth.d.ts +8 -0
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +15 -0
- package/dist/auth.js.map +1 -1
- package/dist/awaiting-overlay.d.ts +54 -6
- package/dist/awaiting-overlay.d.ts.map +1 -1
- package/dist/awaiting-overlay.js +109 -26
- package/dist/awaiting-overlay.js.map +1 -1
- package/dist/broadcast.d.ts +1 -1
- package/dist/broadcast.d.ts.map +1 -1
- package/dist/broadcast.js +10 -7
- package/dist/broadcast.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +74 -4
- package/dist/cli.js.map +1 -1
- package/dist/daemon-server.d.ts.map +1 -1
- package/dist/daemon-server.js +239 -20
- package/dist/daemon-server.js.map +1 -1
- package/dist/daemon.js +1 -1
- package/dist/daemon.js.map +1 -1
- package/dist/http-auth-gate.d.ts +40 -0
- package/dist/http-auth-gate.d.ts.map +1 -0
- package/dist/http-auth-gate.js +46 -0
- package/dist/http-auth-gate.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -9
- package/dist/index.js.map +1 -1
- package/dist/mdns.d.ts +7 -1
- package/dist/mdns.d.ts.map +1 -1
- package/dist/mdns.js +7 -3
- package/dist/mdns.js.map +1 -1
- package/dist/modules/broadcast-module.d.ts.map +1 -1
- package/dist/modules/broadcast-module.js +3 -1
- package/dist/modules/broadcast-module.js.map +1 -1
- package/dist/modules/mdns-module.d.ts.map +1 -1
- package/dist/modules/mdns-module.js +3 -1
- package/dist/modules/mdns-module.js.map +1 -1
- package/dist/observed-inject.d.ts +21 -5
- package/dist/observed-inject.d.ts.map +1 -1
- package/dist/observed-inject.js +85 -22
- package/dist/observed-inject.js.map +1 -1
- package/dist/observed-steering.d.ts +38 -0
- package/dist/observed-steering.d.ts.map +1 -1
- package/dist/observed-steering.js +53 -0
- package/dist/observed-steering.js.map +1 -1
- package/dist/passive-observer.d.ts +9 -0
- package/dist/passive-observer.d.ts.map +1 -1
- package/dist/passive-observer.js +90 -5
- package/dist/passive-observer.js.map +1 -1
- package/dist/permission-resolver.d.ts +11 -0
- package/dist/permission-resolver.d.ts.map +1 -1
- package/dist/permission-resolver.js +23 -3
- package/dist/permission-resolver.js.map +1 -1
- package/dist/session-registry.d.ts +23 -2
- package/dist/session-registry.d.ts.map +1 -1
- package/dist/session-registry.js +56 -5
- package/dist/session-registry.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mdns-module.js","sourceRoot":"","sources":["../../src/modules/mdns-module.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,MAAM,OAAO,UAAU;IACZ,IAAI,GAAG,MAAM,CAAC;IACf,OAAO,GAAwB,IAAI,CAAC;IACpC,SAAS,CAAY;IAE7B,YAAY,SAAoB;QAC9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAyB;QAC5C,mEAAmE;QACnE,OAAO,OAAO,KAAK,KAAK,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAkB;QAC5B,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"mdns-module.js","sourceRoot":"","sources":["../../src/modules/mdns-module.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,MAAM,OAAO,UAAU;IACZ,IAAI,GAAG,MAAM,CAAC;IACf,OAAO,GAAwB,IAAI,CAAC;IACpC,SAAS,CAAY;IAE7B,YAAY,SAAoB;QAC9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAyB;QAC5C,mEAAmE;QACnE,OAAO,OAAO,KAAK,KAAK,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAkB;QAC5B,uEAAuE;QACvE,wDAAwD;QACxD,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;CACF"}
|
|
@@ -59,8 +59,15 @@ export declare function escapeAppleScript(s: string): string;
|
|
|
59
59
|
/** Parse `tmux list-panes -a -F "#{pane_tty}\t#{pane_id}"` output into a
|
|
60
60
|
* tty-suffix → paneId map ("/dev/ttys012" is matched by "ttys012"). */
|
|
61
61
|
export declare function parseTmuxPanes(output: string): Map<string, string>;
|
|
62
|
-
/**
|
|
63
|
-
|
|
62
|
+
/**
|
|
63
|
+
* AppleScript that types part of a selection into the iTerm2 session owning
|
|
64
|
+
* `tty`. Arrows and the Enter that acts on them are emitted by SEPARATE calls
|
|
65
|
+
* with a pause between (see `KEY_PACE_MS`): delivered as one burst the picker
|
|
66
|
+
* resolves Enter against the pre-arrow cursor and answers option 0.
|
|
67
|
+
*/
|
|
68
|
+
export declare function buildItermSelectScript(tty: string, downs: number, opts?: {
|
|
69
|
+
enter?: boolean;
|
|
70
|
+
}): string;
|
|
64
71
|
/**
|
|
65
72
|
* AppleScript for Terminal.app: select the tab whose `tty` matches, WITHOUT
|
|
66
73
|
* activating the app. Keys are then posted straight to Terminal's pid
|
|
@@ -84,7 +91,7 @@ export declare function buildTerminalAppSelectTabScript(tty: string): string;
|
|
|
84
91
|
export declare function buildPostKeysScript(match: {
|
|
85
92
|
bundleIds?: string[];
|
|
86
93
|
names?: string[];
|
|
87
|
-
}, downs: number): string;
|
|
94
|
+
}, downs: number, submits?: number): string;
|
|
88
95
|
/**
|
|
89
96
|
* AppleScript for an app-hosted session: press the button whose title matches
|
|
90
97
|
* the option label inside the app's front window. Matching is
|
|
@@ -99,13 +106,22 @@ export declare function buildAppButtonPressScript(appName: string, label: string
|
|
|
99
106
|
* `CGEventPostToPid` route reports the app is not running or the app ignores
|
|
100
107
|
* posted events.
|
|
101
108
|
*/
|
|
102
|
-
export declare function buildAppKeysScript(appName: string, downs: number): string;
|
|
109
|
+
export declare function buildAppKeysScript(appName: string, downs: number, submits?: number): string;
|
|
103
110
|
/**
|
|
104
111
|
* Answer the session's on-screen prompt by driving its host UI.
|
|
105
112
|
* `index` is the zero-based option position (Claude's pickers start with the
|
|
106
113
|
* cursor on the first option, so index == the number of Down presses).
|
|
114
|
+
*
|
|
115
|
+
* `confirmSubmit` covers the extra step a GROUPED AskUserQuestion adds: after
|
|
116
|
+
* the last question is answered its picker does not close but shows a "Review
|
|
117
|
+
* your answers → Submit answers / Cancel" confirmation, already sitting on
|
|
118
|
+
* Submit. Without a second Enter the agent waits forever on a form the user
|
|
119
|
+
* cannot see. Single-question calls have no such step, so this stays off for
|
|
120
|
+
* them — an extra Enter there would land in the prompt box.
|
|
107
121
|
*/
|
|
108
|
-
export declare function injectObservedSelection(target: InjectTarget, index: number
|
|
122
|
+
export declare function injectObservedSelection(target: InjectTarget, index: number, opts?: {
|
|
123
|
+
confirmSubmit?: boolean;
|
|
124
|
+
}): Promise<InjectResult>;
|
|
109
125
|
/**
|
|
110
126
|
* Type a whole line of text into the session's terminal and submit it — the
|
|
111
127
|
* delivery path for a dictated prompt. Same host ladder as
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observed-inject.d.ts","sourceRoot":"","sources":["../src/observed-inject.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAQH,MAAM,WAAW,YAAY;IAC3B,gFAAgF;IAChF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;yEACqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAWD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,cAAc,GAAG,YAAY,GAAG,UAAU,GAAG,iBAAiB,CAAC;IACzF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;wEACwE;AACxE,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAQlE;
|
|
1
|
+
{"version":3,"file":"observed-inject.d.ts","sourceRoot":"","sources":["../src/observed-inject.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAQH,MAAM,WAAW,YAAY;IAC3B,gFAAgF;IAChF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;yEACqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAWD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,cAAc,GAAG,YAAY,GAAG,UAAU,GAAG,iBAAiB,CAAC;IACzF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;wEACwE;AACxE,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAQlE;AAwDD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAoB,GAC1C,MAAM,CAuBR;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAsBnE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,EACjD,KAAK,EAAE,MAAM,EACb,OAAO,SAAI,GACV,MAAM,CAuCR;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CA4BhF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,MAAM,CAyBtF;AAwBD;;;;;;;;;;;GAWG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GACrC,OAAO,CAAC,YAAY,CAAC,CAgDvB;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,YAAY,CAAC,CA6EvB"}
|
package/dist/observed-inject.js
CHANGED
|
@@ -68,29 +68,65 @@ export function parseTmuxPanes(output) {
|
|
|
68
68
|
}
|
|
69
69
|
return map;
|
|
70
70
|
}
|
|
71
|
-
|
|
71
|
+
/** Gap between an arrow key and the Enter that acts on it. Measured, not
|
|
72
|
+
* guessed: sending `Down Enter` in one `tmux send-keys` makes the picker
|
|
73
|
+
* answer with the option the cursor was on BEFORE the arrow — every device
|
|
74
|
+
* answer silently became option 0. Splitting the calls with this pause
|
|
75
|
+
* selects the intended option. Same lesson `injectText` already carries for
|
|
76
|
+
* text-then-CR; the selection path never got it. */
|
|
77
|
+
const KEY_PACE_MS = 120;
|
|
78
|
+
/** Longer settle before the Enter, which is the irreversible key. */
|
|
79
|
+
const SUBMIT_PACE_MS = 300;
|
|
80
|
+
const pause = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
81
|
+
async function tmuxPaneFor(tty) {
|
|
82
|
+
const { stdout } = await execFileAsync('tmux', ['list-panes', '-a', '-F', '#{pane_tty}\t#{pane_id}'], { encoding: 'utf8', timeout: 2_000 });
|
|
83
|
+
return parseTmuxPanes(stdout).get(tty);
|
|
84
|
+
}
|
|
85
|
+
async function injectViaTmux(tty, downs, submits = 1) {
|
|
86
|
+
let paneId;
|
|
72
87
|
try {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
88
|
+
paneId = await tmuxPaneFor(tty);
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return false; // no tmux server — this rung isn't the host
|
|
92
|
+
}
|
|
93
|
+
if (!paneId)
|
|
94
|
+
return false;
|
|
95
|
+
let sent = 0;
|
|
96
|
+
try {
|
|
97
|
+
// One key per call, paced: the TUI reads a burst as a single input frame
|
|
98
|
+
// and resolves Enter against the pre-arrow cursor.
|
|
99
|
+
for (let i = 0; i < downs; i++) {
|
|
100
|
+
await execFileAsync('tmux', ['send-keys', '-t', paneId, 'Down'], { timeout: 2_000 });
|
|
101
|
+
sent++;
|
|
102
|
+
await pause(KEY_PACE_MS);
|
|
103
|
+
}
|
|
104
|
+
for (let i = 0; i < submits; i++) {
|
|
105
|
+
await pause(SUBMIT_PACE_MS);
|
|
106
|
+
await execFileAsync('tmux', ['send-keys', '-t', paneId, 'Enter'], { timeout: 2_000 });
|
|
107
|
+
sent++;
|
|
108
|
+
}
|
|
79
109
|
return true;
|
|
80
110
|
}
|
|
81
111
|
catch {
|
|
82
|
-
return
|
|
112
|
+
return sent > 0 ? 'partial' : false;
|
|
83
113
|
}
|
|
84
114
|
}
|
|
85
|
-
/**
|
|
86
|
-
|
|
115
|
+
/**
|
|
116
|
+
* AppleScript that types part of a selection into the iTerm2 session owning
|
|
117
|
+
* `tty`. Arrows and the Enter that acts on them are emitted by SEPARATE calls
|
|
118
|
+
* with a pause between (see `KEY_PACE_MS`): delivered as one burst the picker
|
|
119
|
+
* resolves Enter against the pre-arrow cursor and answers option 0.
|
|
120
|
+
*/
|
|
121
|
+
export function buildItermSelectScript(tty, downs, opts = { enter: true }) {
|
|
87
122
|
// ESC [ B per Down, then a bare `write text ""` for Enter (write text
|
|
88
123
|
// appends CR by default; the arrow writes suppress it with `newline NO`).
|
|
89
124
|
const writes = [];
|
|
90
125
|
for (let i = 0; i < downs; i++) {
|
|
91
126
|
writes.push('write s text ((character id 27) & "[B") newline NO');
|
|
92
127
|
}
|
|
93
|
-
|
|
128
|
+
if (opts.enter !== false)
|
|
129
|
+
writes.push('write s text ""');
|
|
94
130
|
return [
|
|
95
131
|
'tell application "iTerm2"',
|
|
96
132
|
' repeat with w in windows',
|
|
@@ -149,7 +185,7 @@ export function buildTerminalAppSelectTabScript(tty) {
|
|
|
149
185
|
* Requires Accessibility permission for whatever process runs the daemon
|
|
150
186
|
* (the terminal that launched it, or the LaunchAgent itself).
|
|
151
187
|
*/
|
|
152
|
-
export function buildPostKeysScript(match, downs) {
|
|
188
|
+
export function buildPostKeysScript(match, downs, submits = 1) {
|
|
153
189
|
const bundles = JSON.stringify(match.bundleIds ?? []);
|
|
154
190
|
const names = JSON.stringify(match.names ?? []);
|
|
155
191
|
return [
|
|
@@ -182,7 +218,9 @@ export function buildPostKeysScript(match, downs) {
|
|
|
182
218
|
// only the Return landed (which would silently pick the WRONG option).
|
|
183
219
|
' delay(0.30);',
|
|
184
220
|
` for (let i = 0; i < ${downs}; i++) key(125);`,
|
|
185
|
-
|
|
221
|
+
// A grouped AskUserQuestion answers its last question into a "Submit
|
|
222
|
+
// answers" confirmation rather than closing, so it needs a second Return.
|
|
223
|
+
` delay(0.30); for (let i = 0; i < ${submits}; i++) { key(36); delay(0.30); }`,
|
|
186
224
|
' "ok"',
|
|
187
225
|
'}',
|
|
188
226
|
].join('\n');
|
|
@@ -229,12 +267,19 @@ export function buildAppButtonPressScript(appName, label) {
|
|
|
229
267
|
* `CGEventPostToPid` route reports the app is not running or the app ignores
|
|
230
268
|
* posted events.
|
|
231
269
|
*/
|
|
232
|
-
export function buildAppKeysScript(appName, downs) {
|
|
270
|
+
export function buildAppKeysScript(appName, downs, submits = 1) {
|
|
233
271
|
const app = escapeAppleScript(appName);
|
|
234
272
|
const keyLines = [];
|
|
235
|
-
for (let i = 0; i < downs; i++)
|
|
273
|
+
for (let i = 0; i < downs; i++) {
|
|
236
274
|
keyLines.push('key code 125');
|
|
237
|
-
|
|
275
|
+
keyLines.push('delay 0.12');
|
|
276
|
+
}
|
|
277
|
+
keyLines.push('delay 0.30');
|
|
278
|
+
// Grouped questions end on a "Submit answers" confirmation, not on close.
|
|
279
|
+
for (let i = 0; i < submits; i++) {
|
|
280
|
+
keyLines.push('key code 36');
|
|
281
|
+
keyLines.push('delay 0.30');
|
|
282
|
+
}
|
|
238
283
|
return [
|
|
239
284
|
'set prevApp to ""',
|
|
240
285
|
'try',
|
|
@@ -278,23 +323,41 @@ async function runOsa(script, timeoutMs = 8_000) {
|
|
|
278
323
|
* Answer the session's on-screen prompt by driving its host UI.
|
|
279
324
|
* `index` is the zero-based option position (Claude's pickers start with the
|
|
280
325
|
* cursor on the first option, so index == the number of Down presses).
|
|
326
|
+
*
|
|
327
|
+
* `confirmSubmit` covers the extra step a GROUPED AskUserQuestion adds: after
|
|
328
|
+
* the last question is answered its picker does not close but shows a "Review
|
|
329
|
+
* your answers → Submit answers / Cancel" confirmation, already sitting on
|
|
330
|
+
* Submit. Without a second Enter the agent waits forever on a form the user
|
|
331
|
+
* cannot see. Single-question calls have no such step, so this stays off for
|
|
332
|
+
* them — an extra Enter there would land in the prompt box.
|
|
281
333
|
*/
|
|
282
|
-
export async function injectObservedSelection(target, index) {
|
|
334
|
+
export async function injectObservedSelection(target, index, opts = {}) {
|
|
283
335
|
if (index < 0 || index > 16)
|
|
284
336
|
return { ok: false, reason: 'index out of range' };
|
|
285
337
|
const { tty, appName, label } = target;
|
|
286
338
|
if (!tty && !appName)
|
|
287
339
|
return { ok: false, reason: 'no tty or app host for session' };
|
|
340
|
+
const submits = opts.confirmSubmit ? 2 : 1;
|
|
288
341
|
if (tty) {
|
|
289
|
-
|
|
342
|
+
const viaTmux = await injectViaTmux(tty, index, submits);
|
|
343
|
+
if (viaTmux === true)
|
|
290
344
|
return { ok: true, via: 'tmux' };
|
|
291
|
-
|
|
345
|
+
// Some keys landed before it broke: the cursor has already moved, so
|
|
346
|
+
// falling through would send a second set of arrows on top of them.
|
|
347
|
+
if (viaTmux === 'partial') {
|
|
348
|
+
return { ok: false, reason: `tmux injection broke partway for ${tty}` };
|
|
349
|
+
}
|
|
350
|
+
if (await runOsa(buildItermSelectScript(tty, index, { enter: false }), 5_000) === 'ok') {
|
|
351
|
+
for (let i = 0; i < submits; i++) {
|
|
352
|
+
await pause(SUBMIT_PACE_MS);
|
|
353
|
+
await runOsa(buildItermSelectScript(tty, 0), 5_000);
|
|
354
|
+
}
|
|
292
355
|
return { ok: true, via: 'iterm2' };
|
|
293
356
|
}
|
|
294
357
|
// Terminal.app: select the owning tab (no activation), then post keys to
|
|
295
358
|
// its pid — focus-free.
|
|
296
359
|
if (await runOsa(buildTerminalAppSelectTabScript(tty), 5_000) === 'ok') {
|
|
297
|
-
const posted = await runJxa(buildPostKeysScript({ bundleIds: ['com.apple.Terminal'], names: ['Terminal', '터미널'] }, index));
|
|
360
|
+
const posted = await runJxa(buildPostKeysScript({ bundleIds: ['com.apple.Terminal'], names: ['Terminal', '터미널'] }, index, submits));
|
|
298
361
|
if (posted === 'ok')
|
|
299
362
|
return { ok: true, via: 'terminal-app' };
|
|
300
363
|
debug('inject', `Terminal.app tab selected but key post failed: ${posted ?? 'error'}`);
|
|
@@ -309,10 +372,10 @@ export async function injectObservedSelection(target, index) {
|
|
|
309
372
|
return { ok: true, via: 'app-button' };
|
|
310
373
|
debug('inject', `app-button press on ${appName}: ${r ?? 'error'}`);
|
|
311
374
|
}
|
|
312
|
-
const posted = await runJxa(buildPostKeysScript({ bundleIds: APP_BUNDLE_IDS[appName] ?? [], names: [appName] }, index));
|
|
375
|
+
const posted = await runJxa(buildPostKeysScript({ bundleIds: APP_BUNDLE_IDS[appName] ?? [], names: [appName] }, index, submits));
|
|
313
376
|
if (posted === 'ok')
|
|
314
377
|
return { ok: true, via: 'app-keys' };
|
|
315
|
-
if (await runOsa(buildAppKeysScript(appName, index)) === 'ok') {
|
|
378
|
+
if (await runOsa(buildAppKeysScript(appName, index, submits)) === 'ok') {
|
|
316
379
|
return { ok: true, via: 'app-keys-raised' };
|
|
317
380
|
}
|
|
318
381
|
return { ok: false, reason: `no reachable UI in ${appName}` };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observed-inject.js","sourceRoot":"","sources":["../src/observed-inject.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"observed-inject.js","sourceRoot":"","sources":["../src/observed-inject.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,6 +36,22 @@ export declare function isStopRequested(sid: string): boolean;
|
|
|
36
36
|
/** One-shot consume by the PreToolUse deny path. */
|
|
37
37
|
export declare function consumeStop(sid: string): boolean;
|
|
38
38
|
export declare const STOP_DENY_REASON: string;
|
|
39
|
+
/**
|
|
40
|
+
* Deliver a device-answered AskUserQuestion back to Claude.
|
|
41
|
+
*
|
|
42
|
+
* The hook contract has no field for supplying a chosen option — a PreToolUse
|
|
43
|
+
* hook may only allow, deny or defer. But a denial's reason text IS handed to
|
|
44
|
+
* the model as the tool call's feedback, which is the same reason-as-message
|
|
45
|
+
* channel `STOP_DENY_REASON` and the Stop-hook directive queue already ride.
|
|
46
|
+
* So the daemon denies the question and states the answer the user gave on
|
|
47
|
+
* their device. The wording has to be unambiguous that these ARE the user's
|
|
48
|
+
* answers and that re-asking is wrong: read as a bare refusal, a model treats
|
|
49
|
+
* the denial as an obstacle and calls AskUserQuestion again.
|
|
50
|
+
*/
|
|
51
|
+
export declare function buildAskAnswerReason(answers: Array<{
|
|
52
|
+
question: string;
|
|
53
|
+
label: string;
|
|
54
|
+
}>): string;
|
|
39
55
|
export declare function queueDirective(sid: string, text: string): boolean;
|
|
40
56
|
/** Pop exactly one directive (Stop hook drains one per turn end). A pending
|
|
41
57
|
* STOP outranks directives: stopping wins, the queue is discarded. */
|
|
@@ -66,6 +82,28 @@ export interface HoldContext {
|
|
|
66
82
|
* uncertainty → pass through untouched (Claude's normal flow, zero latency).
|
|
67
83
|
*/
|
|
68
84
|
export declare function shouldHoldPreToolUse(ctx: HoldContext): HoldDecision;
|
|
85
|
+
/**
|
|
86
|
+
* Register a hold for an AskUserQuestion PreToolUse so a device can answer it.
|
|
87
|
+
*
|
|
88
|
+
* Shares only the one-gate-per-session invariant with `shouldHoldPreToolUse`
|
|
89
|
+
* and NONE of its precision guards — deliberately. Those guards exist because
|
|
90
|
+
* PreToolUse fires for tool calls Claude will auto-approve without ever asking
|
|
91
|
+
* the user, so holding one invents a decision nobody was asked for.
|
|
92
|
+
* AskUserQuestion is the opposite: its entire purpose is to prompt, it always
|
|
93
|
+
* does, and no allowlist entry suppresses it. There is no false-hold to guard
|
|
94
|
+
* against, so the permission-rule predictor is skipped — which is also what
|
|
95
|
+
* lets this rung work in the sandboxed App Store daemon, where the predictor
|
|
96
|
+
* can't read `~/.claude` and therefore disables the permission gate entirely.
|
|
97
|
+
*
|
|
98
|
+
* Release it through `gateReleased` with `undecided: false`: an unanswered ask
|
|
99
|
+
* says nothing about whether Claude auto-approves anything, so it must never
|
|
100
|
+
* feed the auto-approval learner.
|
|
101
|
+
*/
|
|
102
|
+
export declare function beginAskGate(ctx: {
|
|
103
|
+
sessionId: string;
|
|
104
|
+
clientCount: number;
|
|
105
|
+
enabled: boolean;
|
|
106
|
+
}): HoldDecision;
|
|
69
107
|
/** The held gate resolved (device decision, timeout, sweep). `undecided` marks
|
|
70
108
|
* a pass-through release, which arms the auto-approval learner below. */
|
|
71
109
|
export declare function gateReleased(sid: string, requestId: string, opts: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observed-steering.d.ts","sourceRoot":"","sources":["../src/observed-steering.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AA4CH;mFACmF;AACnF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,CAMlG;AAED;;oEAEoE;AACpE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAK3F;AAID,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAG7C;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAK9C;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQpD;AAED,oDAAoD;AACpD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAKhD;AAED,eAAO,MAAM,gBAAgB,QAGuC,CAAC;
|
|
1
|
+
{"version":3,"file":"observed-steering.d.ts","sourceRoot":"","sources":["../src/observed-steering.ts"],"names":[],"mappings":"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"}
|
|
@@ -95,6 +95,30 @@ export function consumeStop(sid) {
|
|
|
95
95
|
export const STOP_DENY_REASON = 'AgentDeck: the user pressed STOP on their AgentDeck controller. '
|
|
96
96
|
+ 'Halt the current work now, briefly summarize where you left off, and wait '
|
|
97
97
|
+ 'for the user\'s next instruction. Do not start new tool calls.';
|
|
98
|
+
/**
|
|
99
|
+
* Deliver a device-answered AskUserQuestion back to Claude.
|
|
100
|
+
*
|
|
101
|
+
* The hook contract has no field for supplying a chosen option — a PreToolUse
|
|
102
|
+
* hook may only allow, deny or defer. But a denial's reason text IS handed to
|
|
103
|
+
* the model as the tool call's feedback, which is the same reason-as-message
|
|
104
|
+
* channel `STOP_DENY_REASON` and the Stop-hook directive queue already ride.
|
|
105
|
+
* So the daemon denies the question and states the answer the user gave on
|
|
106
|
+
* their device. The wording has to be unambiguous that these ARE the user's
|
|
107
|
+
* answers and that re-asking is wrong: read as a bare refusal, a model treats
|
|
108
|
+
* the denial as an obstacle and calls AskUserQuestion again.
|
|
109
|
+
*/
|
|
110
|
+
export function buildAskAnswerReason(answers) {
|
|
111
|
+
const pairs = answers
|
|
112
|
+
.filter((a) => a.label)
|
|
113
|
+
.map((a) => `Q: ${a.question}\nA: ${a.label}`)
|
|
114
|
+
.join('\n');
|
|
115
|
+
return 'AgentDeck: the user already answered this question on their connected '
|
|
116
|
+
+ 'AgentDeck device, so the question picker was not shown in their terminal.\n'
|
|
117
|
+
+ `${pairs}\n`
|
|
118
|
+
+ 'These are the user\'s own answers. Treat them exactly as if the tool had '
|
|
119
|
+
+ 'returned them and continue — do not call AskUserQuestion again for these '
|
|
120
|
+
+ 'questions, and do not ask the user to repeat themselves.';
|
|
121
|
+
}
|
|
98
122
|
// ─── Turn-end directive queue ───
|
|
99
123
|
export function queueDirective(sid, text) {
|
|
100
124
|
const trimmed = text.trim();
|
|
@@ -183,6 +207,35 @@ export function shouldHoldPreToolUse(ctx) {
|
|
|
183
207
|
s.heldRequestId = requestId;
|
|
184
208
|
return { hold: true, requestId, reason: verdict === 'ask' ? 'ask rule matches' : 'prompt-prone, no rule match' };
|
|
185
209
|
}
|
|
210
|
+
/**
|
|
211
|
+
* Register a hold for an AskUserQuestion PreToolUse so a device can answer it.
|
|
212
|
+
*
|
|
213
|
+
* Shares only the one-gate-per-session invariant with `shouldHoldPreToolUse`
|
|
214
|
+
* and NONE of its precision guards — deliberately. Those guards exist because
|
|
215
|
+
* PreToolUse fires for tool calls Claude will auto-approve without ever asking
|
|
216
|
+
* the user, so holding one invents a decision nobody was asked for.
|
|
217
|
+
* AskUserQuestion is the opposite: its entire purpose is to prompt, it always
|
|
218
|
+
* does, and no allowlist entry suppresses it. There is no false-hold to guard
|
|
219
|
+
* against, so the permission-rule predictor is skipped — which is also what
|
|
220
|
+
* lets this rung work in the sandboxed App Store daemon, where the predictor
|
|
221
|
+
* can't read `~/.claude` and therefore disables the permission gate entirely.
|
|
222
|
+
*
|
|
223
|
+
* Release it through `gateReleased` with `undecided: false`: an unanswered ask
|
|
224
|
+
* says nothing about whether Claude auto-approves anything, so it must never
|
|
225
|
+
* feed the auto-approval learner.
|
|
226
|
+
*/
|
|
227
|
+
export function beginAskGate(ctx) {
|
|
228
|
+
if (!ctx.enabled)
|
|
229
|
+
return { hold: false, reason: 'disabled' };
|
|
230
|
+
if (ctx.clientCount < 1)
|
|
231
|
+
return { hold: false, reason: 'no clients' };
|
|
232
|
+
const s = ses(ctx.sessionId);
|
|
233
|
+
if (s.heldRequestId)
|
|
234
|
+
return { hold: false, reason: 'another gate already held' };
|
|
235
|
+
const requestId = randomUUID();
|
|
236
|
+
s.heldRequestId = requestId;
|
|
237
|
+
return { hold: true, requestId, reason: 'AskUserQuestion always prompts' };
|
|
238
|
+
}
|
|
186
239
|
/** The held gate resolved (device decision, timeout, sweep). `undecided` marks
|
|
187
240
|
* a pass-through release, which arms the auto-approval learner below. */
|
|
188
241
|
export function gateReleased(sid, requestId, opts) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observed-steering.js","sourceRoot":"","sources":["../src/observed-steering.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"observed-steering.js","sourceRoot":"","sources":["../src/observed-steering.ts"],"names":[],"mappings":"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"}
|
|
@@ -100,6 +100,15 @@ export declare class PassiveSessionObserver {
|
|
|
100
100
|
export declare function parseProcessTable(output: string): ProcInfo[];
|
|
101
101
|
export declare function parseClaudeTranscript(raw: string): TranscriptSummary;
|
|
102
102
|
export declare function parseCodexRollout(raw: string): CodexRolloutSummary;
|
|
103
|
+
/**
|
|
104
|
+
* Parse `Win32_Process | ConvertTo-Json` output into the shared ProcInfo shape.
|
|
105
|
+
* ConvertTo-Json emits a bare object when a single row matches and an array
|
|
106
|
+
* otherwise; CommandLine is null for protected/system processes (those rows
|
|
107
|
+
* carry nothing observable and are dropped); WorkingSetSize is bytes where ps
|
|
108
|
+
* reports KB. Windows has no controlling tty, so every row is tty-less — which
|
|
109
|
+
* host app owns a tty-less Codex there is still unmeasured (#143).
|
|
110
|
+
*/
|
|
111
|
+
export declare function parseCimProcessTable(json: string): ProcInfo[];
|
|
103
112
|
/** Extract the enclosing macOS app name from an executable path, e.g.
|
|
104
113
|
* "/Applications/ChatGPT.app/Contents/Resources/codex …" → "ChatGPT". */
|
|
105
114
|
export declare function appNameFromCommand(command: string): string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passive-observer.d.ts","sourceRoot":"","sources":["../src/passive-observer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"passive-observer.d.ts","sourceRoot":"","sources":["../src/passive-observer.ts"],"names":[],"mappings":"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"}
|
package/dist/passive-observer.js
CHANGED
|
@@ -405,12 +405,13 @@ export function parseCodexRollout(raw) {
|
|
|
405
405
|
};
|
|
406
406
|
}
|
|
407
407
|
async function collectProcessInfo() {
|
|
408
|
+
if (process.platform === 'win32')
|
|
409
|
+
return collectProcessInfoWin32();
|
|
408
410
|
try {
|
|
409
411
|
const { stdout } = await execFileAsync('ps', ['-ww', '-eo', 'pid=,ppid=,rss=,tty=,command='], {
|
|
410
412
|
encoding: 'utf8',
|
|
411
413
|
timeout: 2_000,
|
|
412
414
|
maxBuffer: 2 * 1024 * 1024,
|
|
413
|
-
windowsHide: true, // git-bash ps.exe pops a console window every 5s scan on Windows without this
|
|
414
415
|
});
|
|
415
416
|
return parseProcessTable(stdout);
|
|
416
417
|
}
|
|
@@ -418,6 +419,69 @@ async function collectProcessInfo() {
|
|
|
418
419
|
return [];
|
|
419
420
|
}
|
|
420
421
|
}
|
|
422
|
+
/**
|
|
423
|
+
* Windows scan backend. `ps` there only exists under git-bash and reports MSYS
|
|
424
|
+
* processes, not native Win32 command lines — so the previous "run ps anyway"
|
|
425
|
+
* path saw nothing worth observing. Win32_Process has the real command lines.
|
|
426
|
+
* A PowerShell spawn per poll is real overhead; if it matters on hardware the
|
|
427
|
+
* fix is a persistent coprocess like the plugin's volume path (#143).
|
|
428
|
+
*/
|
|
429
|
+
async function collectProcessInfoWin32() {
|
|
430
|
+
try {
|
|
431
|
+
const { stdout } = await execFileAsync('powershell.exe', [
|
|
432
|
+
'-NoProfile', '-NonInteractive', '-Command',
|
|
433
|
+
// Windows PowerShell pipes default to the OEM codepage, which mangles
|
|
434
|
+
// non-ASCII command lines (C:\Users\罗宾\… is a normal path here) —
|
|
435
|
+
// pin the pipe to UTF-8 before emitting anything.
|
|
436
|
+
'[Console]::OutputEncoding=[System.Text.Encoding]::UTF8; ' +
|
|
437
|
+
'Get-CimInstance Win32_Process | Select-Object ProcessId,ParentProcessId,WorkingSetSize,CommandLine | ConvertTo-Json -Compress',
|
|
438
|
+
], {
|
|
439
|
+
encoding: 'utf8',
|
|
440
|
+
timeout: 10_000,
|
|
441
|
+
maxBuffer: 8 * 1024 * 1024,
|
|
442
|
+
windowsHide: true,
|
|
443
|
+
});
|
|
444
|
+
return parseCimProcessTable(stdout);
|
|
445
|
+
}
|
|
446
|
+
catch {
|
|
447
|
+
return [];
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
/**
|
|
451
|
+
* Parse `Win32_Process | ConvertTo-Json` output into the shared ProcInfo shape.
|
|
452
|
+
* ConvertTo-Json emits a bare object when a single row matches and an array
|
|
453
|
+
* otherwise; CommandLine is null for protected/system processes (those rows
|
|
454
|
+
* carry nothing observable and are dropped); WorkingSetSize is bytes where ps
|
|
455
|
+
* reports KB. Windows has no controlling tty, so every row is tty-less — which
|
|
456
|
+
* host app owns a tty-less Codex there is still unmeasured (#143).
|
|
457
|
+
*/
|
|
458
|
+
export function parseCimProcessTable(json) {
|
|
459
|
+
let parsed;
|
|
460
|
+
try {
|
|
461
|
+
parsed = JSON.parse(json);
|
|
462
|
+
}
|
|
463
|
+
catch {
|
|
464
|
+
return [];
|
|
465
|
+
}
|
|
466
|
+
const rows = Array.isArray(parsed) ? parsed : [parsed];
|
|
467
|
+
const result = [];
|
|
468
|
+
for (const row of rows) {
|
|
469
|
+
if (!isRecord(row))
|
|
470
|
+
continue;
|
|
471
|
+
const pid = numberAt(row, 'ProcessId');
|
|
472
|
+
const command = stringAt(row, 'CommandLine')?.trim();
|
|
473
|
+
if (pid <= 0 || !command)
|
|
474
|
+
continue;
|
|
475
|
+
result.push({
|
|
476
|
+
pid,
|
|
477
|
+
ppid: numberAt(row, 'ParentProcessId'),
|
|
478
|
+
rssKb: Math.round(numberAt(row, 'WorkingSetSize') / 1024),
|
|
479
|
+
tty: undefined,
|
|
480
|
+
command,
|
|
481
|
+
});
|
|
482
|
+
}
|
|
483
|
+
return result;
|
|
484
|
+
}
|
|
421
485
|
/** Extract the enclosing macOS app name from an executable path, e.g.
|
|
422
486
|
* "/Applications/ChatGPT.app/Contents/Resources/codex …" → "ChatGPT". */
|
|
423
487
|
export function appNameFromCommand(command) {
|
|
@@ -753,6 +817,12 @@ function findClaudeTranscript(configDirs, cwd, sessionId) {
|
|
|
753
817
|
async function mapCodexPidsToRollouts(pids) {
|
|
754
818
|
if (pids.length === 0)
|
|
755
819
|
return new Map();
|
|
820
|
+
// Windows ships no lsof/procfs equivalent, so this is an explicit platform
|
|
821
|
+
// gap (#143) rather than a silent lsof spawn failure: Codex processes found
|
|
822
|
+
// by the scan are dropped here until an identity source is measured — the
|
|
823
|
+
// codex_* hooks are the likely one, as on macOS.
|
|
824
|
+
if (process.platform === 'win32')
|
|
825
|
+
return new Map();
|
|
756
826
|
if (process.platform === 'linux') {
|
|
757
827
|
const map = new Map();
|
|
758
828
|
for (const pid of pids) {
|
|
@@ -986,11 +1056,26 @@ function isCodexRolloutPath(path) {
|
|
|
986
1056
|
const name = basename(path);
|
|
987
1057
|
return name.startsWith('rollout-') && name.endsWith('.jsonl');
|
|
988
1058
|
}
|
|
1059
|
+
/** First two argv-ish tokens of a command line. Win32 CommandLine quotes an
|
|
1060
|
+
* argv[0] whose path contains spaces — that whole quoted span is one token,
|
|
1061
|
+
* where a plain whitespace split would shear it mid-path. */
|
|
1062
|
+
function leadingCommandTokens(command) {
|
|
1063
|
+
const quoted = command.match(/^"([^"]*)"\s*(.*)$/);
|
|
1064
|
+
if (!quoted)
|
|
1065
|
+
return command.split(/\s+/).slice(0, 2);
|
|
1066
|
+
return [quoted[1], quoted[2].split(/\s+/)[0] ?? ''];
|
|
1067
|
+
}
|
|
989
1068
|
function cmdHasBinary(command, name) {
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
1069
|
+
// Split paths on both separators by hand: path.basename() is
|
|
1070
|
+
// platform-flavored at runtime, and a Win32 CommandLine must parse the same
|
|
1071
|
+
// way in macOS-run tests as on a Windows daemon. The exact-case compare
|
|
1072
|
+
// stays — it is what excludes the Electron helper basenames (capital
|
|
1073
|
+
// "Codex (Renderer)"); only the .exe form is case-insensitive, since the
|
|
1074
|
+
// filesystem that names it is.
|
|
1075
|
+
return leadingCommandTokens(command).some((token) => {
|
|
1076
|
+
const bare = token.replace(/^"+|"+$/g, '').split(/[\\/]/).pop() ?? '';
|
|
1077
|
+
return bare === name || bare.toLowerCase() === `${name}.exe`;
|
|
1078
|
+
});
|
|
994
1079
|
}
|
|
995
1080
|
function isDescendantOf(pid, ancestorPid, byPid) {
|
|
996
1081
|
let current = byPid.get(pid);
|