codeloop-mcp-server 0.1.63 → 0.1.65
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/auth/critical_floors.d.ts.map +1 -1
- package/dist/auth/critical_floors.js +8 -0
- package/dist/auth/critical_floors.js.map +1 -1
- package/dist/auth/key_resolver.d.ts +55 -0
- package/dist/auth/key_resolver.d.ts.map +1 -0
- package/dist/auth/key_resolver.js +41 -0
- package/dist/auth/key_resolver.js.map +1 -0
- package/dist/auth/key_source.d.ts +60 -4
- package/dist/auth/key_source.d.ts.map +1 -1
- package/dist/auth/key_source.js +281 -48
- package/dist/auth/key_source.js.map +1 -1
- package/dist/evidence/observability.d.ts +67 -0
- package/dist/evidence/observability.d.ts.map +1 -0
- package/dist/evidence/observability.js +57 -0
- package/dist/evidence/observability.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +58 -5
- package/dist/index.js.map +1 -1
- package/dist/runners/app_logger.d.ts.map +1 -1
- package/dist/runners/app_logger.js +31 -3
- package/dist/runners/app_logger.js.map +1 -1
- package/dist/runners/logging_readiness.d.ts +72 -0
- package/dist/runners/logging_readiness.d.ts.map +1 -0
- package/dist/runners/logging_readiness.js +419 -0
- package/dist/runners/logging_readiness.js.map +1 -0
- package/dist/runners/modal_detector.d.ts +27 -7
- package/dist/runners/modal_detector.d.ts.map +1 -1
- package/dist/runners/modal_detector.js +124 -31
- package/dist/runners/modal_detector.js.map +1 -1
- package/dist/runners/remote_logs.d.ts +105 -0
- package/dist/runners/remote_logs.d.ts.map +1 -0
- package/dist/runners/remote_logs.js +336 -0
- package/dist/runners/remote_logs.js.map +1 -0
- package/dist/tools/gate_check.d.ts.map +1 -1
- package/dist/tools/gate_check.js +25 -0
- package/dist/tools/gate_check.js.map +1 -1
- package/dist/tools/interaction_replay.d.ts +18 -0
- package/dist/tools/interaction_replay.d.ts.map +1 -1
- package/dist/tools/interaction_replay.js +102 -1
- package/dist/tools/interaction_replay.js.map +1 -1
- package/dist/tools/verify.d.ts.map +1 -1
- package/dist/tools/verify.js +61 -5
- package/dist/tools/verify.js.map +1 -1
- package/package.json +2 -2
|
@@ -12,10 +12,12 @@ import type { CodeLoopConfig } from "@codelooptech/shared";
|
|
|
12
12
|
* - Browser: query Playwright's page for alert/confirm dialogs
|
|
13
13
|
* and visible overlay elements (role=dialog, aria-modal=true,
|
|
14
14
|
* CSS classes that match common modal libraries).
|
|
15
|
-
* - Windows desktop: PowerShell +
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
15
|
+
* - Windows desktop: PowerShell + Win32 `EnumWindows` (0.1.65 H13;
|
|
16
|
+
* replaced the UIA control-view walk that could not see owned
|
|
17
|
+
* `MessageBox` dialogs). Reads each top-level window's owner
|
|
18
|
+
* (GW_OWNER), enabled state, pid, class and title, plus the
|
|
19
|
+
* foreground window, and flags an app-owned dialog via the
|
|
20
|
+
* owner-chain / owner-disabled / foreground signals.
|
|
19
21
|
* - macOS desktop: AppleScript — `every window of process whose
|
|
20
22
|
* subrole is "AXDialog" or "AXSystemDialog"`.
|
|
21
23
|
* - Linux desktop: xdotool / xprop walk for windows whose WM_NAME
|
|
@@ -71,7 +73,7 @@ export declare function detectModal(opts: {
|
|
|
71
73
|
cwd: string;
|
|
72
74
|
config?: CodeLoopConfig;
|
|
73
75
|
}): Promise<ModalDetectionResult>;
|
|
74
|
-
/** 0.1.63 H12 — one top-level window row from the
|
|
76
|
+
/** 0.1.63 H12 / 0.1.65 H13 — one top-level window row from the probe. */
|
|
75
77
|
export interface RawModalWindow {
|
|
76
78
|
name?: string;
|
|
77
79
|
class_name?: string;
|
|
@@ -79,13 +81,31 @@ export interface RawModalWindow {
|
|
|
79
81
|
is_modal?: boolean;
|
|
80
82
|
/** Win32 ProcessId of the owning process (0.1.63 H12). */
|
|
81
83
|
process_id?: number;
|
|
84
|
+
/**
|
|
85
|
+
* 0.1.65 H13 — Win32 GW_OWNER handle. A `MessageBox(hwndOwner, …)` /
|
|
86
|
+
* modal dialog is an OWNED top-level window whose owner is the app's
|
|
87
|
+
* main window. This is the single most reliable, title-independent
|
|
88
|
+
* signal that a dialog belongs to the app — and the one UIA's
|
|
89
|
+
* control-view enumeration never exposed (the recurring miss).
|
|
90
|
+
*/
|
|
91
|
+
owner_hwnd?: number | string;
|
|
92
|
+
/** 0.1.65 H13 — IsWindowVisible. */
|
|
93
|
+
is_visible?: boolean;
|
|
94
|
+
/** 0.1.65 H13 — IsWindowEnabled. A visible-but-DISABLED main window
|
|
95
|
+
* means a modal is blocking it (Windows disables a modal's owner). */
|
|
96
|
+
is_enabled?: boolean;
|
|
82
97
|
}
|
|
83
|
-
/** 0.1.63 H12 — full
|
|
84
|
-
* resolved app process identity (pid(s) + main-window handle(s))
|
|
98
|
+
/** 0.1.63 H12 / 0.1.65 H13 — full probe payload: every top-level window
|
|
99
|
+
* plus the resolved app process identity (pid(s) + main-window handle(s))
|
|
100
|
+
* and the current foreground window. */
|
|
85
101
|
export interface RawModalProbe {
|
|
86
102
|
windows: RawModalWindow[];
|
|
87
103
|
app_pids: number[];
|
|
88
104
|
app_main_hwnds: Array<number | string>;
|
|
105
|
+
/** 0.1.65 H13 — GetForegroundWindow() HWND. After a click that raises a
|
|
106
|
+
* dialog, the dialog IS the foreground window — a robust anchor even
|
|
107
|
+
* when app-title resolution fails. */
|
|
108
|
+
foreground_hwnd?: number | string;
|
|
89
109
|
}
|
|
90
110
|
/**
|
|
91
111
|
* 0.1.63 H12 — pure modal selection (no I/O), unit-testable.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modal_detector.d.ts","sourceRoot":"","sources":["../../src/runners/modal_detector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D
|
|
1
|
+
{"version":3,"file":"modal_detector.d.ts","sourceRoot":"","sources":["../../src/runners/modal_detector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEvE,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,sEAAsE;IACtE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uFAAuF;IACvF,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+FAA+F;IAC/F,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4CAA4C;IAC5C,WAAW,EAAE,SAAS,GAAG,SAAS,GAAG,kBAAkB,GAAG,eAAe,GAAG,SAAS,CAAC;CACvF;AAqDD,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB,QACkF,CAAC;AACpH,eAAO,MAAM,kBAAkB,QACuD,CAAC;AAKvF,kFAAkF;AAClF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAgB7E;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACtC,WAAW,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,kBAAkB,GAAG,eAAe,CAAC;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAiBhC;AA4BD,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,oCAAoC;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;0EACsE;IACtE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;wCAEwC;AACxC,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACvC;;0CAEsC;IACtC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACnC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,oBAAoB,CA0K/F;AAgKD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAiB5D"}
|
|
@@ -138,6 +138,7 @@ export function selectWindowsModal(probe, appName) {
|
|
|
138
138
|
const appNorm = appLower.replace(/\s+/g, "");
|
|
139
139
|
const appPids = new Set((probe.app_pids ?? []).map((p) => Number(p)));
|
|
140
140
|
const mainHwnds = new Set((probe.app_main_hwnds ?? []).map((h) => String(h)));
|
|
141
|
+
const fgHwnd = probe.foreground_hwnd != null ? String(probe.foreground_hwnd) : null;
|
|
141
142
|
const wins = probe.windows ?? [];
|
|
142
143
|
const nm = (w) => w.name ?? "";
|
|
143
144
|
const cls = (w) => (w.class_name ?? "").trim();
|
|
@@ -149,10 +150,21 @@ export function selectWindowsModal(probe, appName) {
|
|
|
149
150
|
};
|
|
150
151
|
const isOwned = (w) => w.process_id != null && appPids.has(Number(w.process_id));
|
|
151
152
|
const isMainWindow = (w) => w.hwnd != null && mainHwnds.has(String(w.hwnd));
|
|
153
|
+
// 0.1.65 H13 — owner-chain: the window's GW_OWNER is one of the app's
|
|
154
|
+
// main windows. This is THE reliable MessageBox signal.
|
|
155
|
+
const isOwnedByApp = (w) => w.owner_hwnd != null && mainHwnds.has(String(w.owner_hwnd));
|
|
156
|
+
// Visibility defaults to true when the probe didn't report it (older
|
|
157
|
+
// probes / unit fixtures) so we never regress on missing data.
|
|
158
|
+
const isVisible = (w) => w.is_visible !== false;
|
|
159
|
+
const isForeground = (w) => fgHwnd != null && w.hwnd != null && String(w.hwnd) === fgHwnd;
|
|
152
160
|
const hasDialogClass = (w) => GENERIC_DIALOG_CLASS_NAMES.has(cls(w)) || FILE_DIALOG_CLASS_NAMES.includes(cls(w));
|
|
153
161
|
const hasModalNamePattern = (w) => FILE_DIALOG_NAME_PATTERNS.some((re) => re.test(nm(w))) ||
|
|
154
162
|
CONFIRM_NAME_PATTERN.test(nm(w)) ||
|
|
155
163
|
ALERT_NAME_PATTERN.test(nm(w));
|
|
164
|
+
// 0.1.65 H13 — is the app's own main window visible-but-DISABLED? Windows
|
|
165
|
+
// disables a modal dialog's owner, so a disabled owner is near-proof a
|
|
166
|
+
// modal is blocking the app, even if we can't pin which window it is.
|
|
167
|
+
const appMainDisabled = wins.some((w) => isMainWindow(w) && isVisible(w) && w.is_enabled === false);
|
|
156
168
|
const build = (w, confidence, descPrefix) => {
|
|
157
169
|
const name = nm(w) || "(unnamed)";
|
|
158
170
|
const kind = classifyModalKind(name, cls(w) || undefined);
|
|
@@ -169,24 +181,70 @@ export function selectWindowsModal(probe, appName) {
|
|
|
169
181
|
};
|
|
170
182
|
// Pass 1 — UIA explicitly flagged the window modal AND it's owned by /
|
|
171
183
|
// titled for our app (and is not the main window itself).
|
|
172
|
-
const explicit = wins.find((w) => w.is_modal && !isMainWindow(w) && (isOwned(w) || matchesAppFilter(nm(w))));
|
|
184
|
+
const explicit = wins.find((w) => w.is_modal && !isMainWindow(w) && (isOwned(w) || isOwnedByApp(w) || matchesAppFilter(nm(w))));
|
|
173
185
|
if (explicit)
|
|
174
|
-
return build(explicit, 0.
|
|
175
|
-
// Pass
|
|
176
|
-
//
|
|
177
|
-
//
|
|
186
|
+
return build(explicit, 0.92, "Windows modal");
|
|
187
|
+
// Pass A — 0.1.65 H13: OWNER-CHAIN. A visible, non-main window whose
|
|
188
|
+
// GW_OWNER is the app's main window is an owned dialog (the Win32 /
|
|
189
|
+
// WPF MessageBox the recurring bug kept missing). Title-, class-, and
|
|
190
|
+
// IsModal-INDEPENDENT — this is the strongest signal we have.
|
|
191
|
+
const ownerChain = wins.find((w) => isOwnedByApp(w) && !isMainWindow(w) && isVisible(w));
|
|
192
|
+
if (ownerChain) {
|
|
193
|
+
const kind = classifyModalKind(nm(ownerChain) || "(unnamed)", cls(ownerChain) || undefined);
|
|
194
|
+
return build(ownerChain, kind === "file_dialog" ? 0.85 : 0.92, "Windows owned dialog");
|
|
195
|
+
}
|
|
196
|
+
// Pass 2 — 0.1.63 H12: app-owned (same-PROCESS) SECONDARY top-level
|
|
197
|
+
// window. We require a dialog signal (modal flag, dialog class, or
|
|
198
|
+
// modal-ish title) so a legitimate second document window of a
|
|
178
199
|
// multi-window app is NOT mistaken for a modal.
|
|
179
200
|
const owned = wins.find((w) => isOwned(w) &&
|
|
180
201
|
!isMainWindow(w) &&
|
|
202
|
+
isVisible(w) &&
|
|
181
203
|
(w.is_modal || hasDialogClass(w) || hasModalNamePattern(w)));
|
|
182
204
|
if (owned) {
|
|
183
205
|
const kind = classifyModalKind(nm(owned) || "(unnamed)", cls(owned) || undefined);
|
|
184
206
|
return build(owned, kind === "file_dialog" ? 0.8 : 0.85, "Windows dialog");
|
|
185
207
|
}
|
|
208
|
+
// Pass B — 0.1.65 H13: the FOREGROUND window is a secondary window that
|
|
209
|
+
// belongs to the app (owner-chain or same process). After a click that
|
|
210
|
+
// pops a dialog, the dialog becomes foreground.
|
|
211
|
+
const fgOwned = wins.find((w) => isForeground(w) && !isMainWindow(w) && isVisible(w) && (isOwnedByApp(w) || isOwned(w)));
|
|
212
|
+
if (fgOwned) {
|
|
213
|
+
const kind = classifyModalKind(nm(fgOwned) || "(unnamed)", cls(fgOwned) || undefined);
|
|
214
|
+
return build(fgOwned, kind === "file_dialog" ? 0.82 : 0.85, "Windows foreground dialog");
|
|
215
|
+
}
|
|
216
|
+
// Pass C — 0.1.65 H13: the app's main window is visible-but-DISABLED.
|
|
217
|
+
// Some app-owned secondary window is blocking it; pick the best
|
|
218
|
+
// candidate (foreground → owner-chain → same-process), else report the
|
|
219
|
+
// block generically so the agent still handles it.
|
|
220
|
+
if (appMainDisabled) {
|
|
221
|
+
const blocker = wins.find((w) => isForeground(w) && !isMainWindow(w) && isVisible(w)) ??
|
|
222
|
+
wins.find((w) => isOwnedByApp(w) && !isMainWindow(w) && isVisible(w)) ??
|
|
223
|
+
wins.find((w) => isOwned(w) && !isMainWindow(w) && isVisible(w));
|
|
224
|
+
if (blocker) {
|
|
225
|
+
const kind = classifyModalKind(nm(blocker) || "(unnamed)", cls(blocker) || undefined);
|
|
226
|
+
return build(blocker, kind === "file_dialog" ? 0.8 : 0.85, "Windows modal (owner disabled)");
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
// Pass D — 0.1.65 H13: the FOREGROUND window is itself a dialog (generic
|
|
230
|
+
// Win32 dialog class OR a confirm/alert/file title) even when we could
|
|
231
|
+
// not resolve the app's process (the Photometry-DB title-mismatch case).
|
|
232
|
+
// Ownership-independent but low-false-positive: a foreground #32770 /
|
|
233
|
+
// confirm-titled window is overwhelmingly an active modal.
|
|
234
|
+
const fgDialog = wins.find((w) => isForeground(w) &&
|
|
235
|
+
!isMainWindow(w) &&
|
|
236
|
+
isVisible(w) &&
|
|
237
|
+
(hasDialogClass(w) || hasModalNamePattern(w)));
|
|
238
|
+
if (fgDialog) {
|
|
239
|
+
const kind = classifyModalKind(nm(fgDialog) || "(unnamed)", cls(fgDialog) || undefined);
|
|
240
|
+
return build(fgDialog, kind === "file_dialog" ? 0.78 : 0.82, "Windows foreground dialog");
|
|
241
|
+
}
|
|
186
242
|
// Pass 3 — file-dialog heuristic (unowned / app process unresolved).
|
|
187
243
|
// (a) a strong file NAME pattern fires app-filter-free; (b) a file CLASS
|
|
188
244
|
// match still needs the app filter so we don't grab unrelated OS chrome.
|
|
189
245
|
const fileDialog = wins.find((w) => {
|
|
246
|
+
if (!isVisible(w))
|
|
247
|
+
return false;
|
|
190
248
|
const byName = FILE_DIALOG_NAME_PATTERNS.some((re) => re.test(nm(w)));
|
|
191
249
|
if (byName)
|
|
192
250
|
return true;
|
|
@@ -208,7 +266,8 @@ export function selectWindowsModal(probe, appName) {
|
|
|
208
266
|
// Pass 4 — safety net: a generic Win32 dialog (#32770 / DirectUIHWND)
|
|
209
267
|
// titled like a confirm / alert is unambiguously a dialog even when we
|
|
210
268
|
// could not resolve the owning process (e.g. app lookup failed).
|
|
211
|
-
const confirmByName = wins.find((w) =>
|
|
269
|
+
const confirmByName = wins.find((w) => isVisible(w) &&
|
|
270
|
+
GENERIC_DIALOG_CLASS_NAMES.has(cls(w)) &&
|
|
212
271
|
(CONFIRM_NAME_PATTERN.test(nm(w)) || ALERT_NAME_PATTERN.test(nm(w))));
|
|
213
272
|
if (confirmByName)
|
|
214
273
|
return build(confirmByName, 0.7, "Windows dialog");
|
|
@@ -217,31 +276,63 @@ export function selectWindowsModal(probe, appName) {
|
|
|
217
276
|
async function detectWindowsModal(opts) {
|
|
218
277
|
const app = opts.app_name ?? "";
|
|
219
278
|
const psLiteral = app.replace(/'/g, "''");
|
|
220
|
-
//
|
|
221
|
-
//
|
|
222
|
-
//
|
|
223
|
-
//
|
|
224
|
-
//
|
|
225
|
-
//
|
|
226
|
-
//
|
|
279
|
+
// 0.1.65 H13 — Win32 `EnumWindows` probe (replaces the UIA control-view
|
|
280
|
+
// walk). The recurring out-of-app confirm regressed because a Win32 /
|
|
281
|
+
// WPF `MessageBox(hwndOwner, …)` is an OWNED top-level window that UIA's
|
|
282
|
+
// control view does NOT expose as a direct child of the root element —
|
|
283
|
+
// so `RootElement.FindAll(Children, ControlType::Window)` returned ONLY
|
|
284
|
+
// the main window ("only the main window exists") and every downstream
|
|
285
|
+
// pass was starved of the dialog row. `EnumWindows` enumerates EVERY
|
|
286
|
+
// top-level window and, crucially, lets us read each window's owner
|
|
287
|
+
// (GW_OWNER), enabled state, pid, class and title — plus the foreground
|
|
288
|
+
// window — which are the title- and IsModal-independent signals the
|
|
289
|
+
// selector now keys off (owner-chain / owner-disabled / foreground).
|
|
290
|
+
//
|
|
291
|
+
// Fields per window are tab-joined inside C# (delimiter stripped from
|
|
292
|
+
// class/title) to dodge anonymous-type JSON quirks; PowerShell parses
|
|
293
|
+
// them back into the {hwnd,pid,owner_hwnd,is_enabled,class_name,name}
|
|
294
|
+
// shape selectWindowsModal expects.
|
|
227
295
|
const script = [
|
|
228
|
-
|
|
229
|
-
"
|
|
230
|
-
"
|
|
231
|
-
"
|
|
296
|
+
'Add-Type @"',
|
|
297
|
+
"using System;",
|
|
298
|
+
"using System.Text;",
|
|
299
|
+
"using System.Collections.Generic;",
|
|
300
|
+
"using System.Runtime.InteropServices;",
|
|
301
|
+
"public class ClModalEnum {",
|
|
302
|
+
" public delegate bool EnumProc(IntPtr h, IntPtr l);",
|
|
303
|
+
' [DllImport("user32.dll")] public static extern bool EnumWindows(EnumProc cb, IntPtr l);',
|
|
304
|
+
' [DllImport("user32.dll")] public static extern bool IsWindowVisible(IntPtr h);',
|
|
305
|
+
' [DllImport("user32.dll")] public static extern bool IsWindowEnabled(IntPtr h);',
|
|
306
|
+
' [DllImport("user32.dll", CharSet=CharSet.Auto)] public static extern int GetWindowText(IntPtr h, StringBuilder s, int n);',
|
|
307
|
+
' [DllImport("user32.dll", CharSet=CharSet.Auto)] public static extern int GetClassName(IntPtr h, StringBuilder s, int n);',
|
|
308
|
+
' [DllImport("user32.dll")] public static extern uint GetWindowThreadProcessId(IntPtr h, out uint pid);',
|
|
309
|
+
' [DllImport("user32.dll")] public static extern IntPtr GetWindow(IntPtr h, uint cmd);',
|
|
310
|
+
' [DllImport("user32.dll")] public static extern IntPtr GetForegroundWindow();',
|
|
311
|
+
" public static List<string> Rows() {",
|
|
312
|
+
" var rows = new List<string>();",
|
|
313
|
+
" EnumWindows((h, l) => {",
|
|
314
|
+
" if (!IsWindowVisible(h)) return true;",
|
|
315
|
+
" var t = new StringBuilder(512); GetWindowText(h, t, 512);",
|
|
316
|
+
" var c = new StringBuilder(256); GetClassName(h, c, 256);",
|
|
317
|
+
" uint pid = 0; GetWindowThreadProcessId(h, out pid);",
|
|
318
|
+
" IntPtr owner = GetWindow(h, (uint)4);",
|
|
319
|
+
' string cls = c.ToString().Replace("\\t"," ");',
|
|
320
|
+
' string title = t.ToString().Replace("\\t"," ").Replace("\\r"," ").Replace("\\n"," ");',
|
|
321
|
+
' rows.Add(h.ToInt64() + "\\t" + pid + "\\t" + owner.ToInt64() + "\\t" + (IsWindowEnabled(h) ? "1" : "0") + "\\t" + cls + "\\t" + title);',
|
|
322
|
+
" return true;",
|
|
323
|
+
" }, IntPtr.Zero);",
|
|
324
|
+
" return rows;",
|
|
325
|
+
" }",
|
|
326
|
+
" public static long Foreground() { return GetForegroundWindow().ToInt64(); }",
|
|
327
|
+
"}",
|
|
328
|
+
'"@',
|
|
329
|
+
"$rows = [ClModalEnum]::Rows()",
|
|
330
|
+
"$fg = [ClModalEnum]::Foreground()",
|
|
232
331
|
"$result = @()",
|
|
233
|
-
"foreach ($
|
|
234
|
-
|
|
235
|
-
" $
|
|
236
|
-
" $hwnd = $
|
|
237
|
-
" $procId = 0",
|
|
238
|
-
" try { $procId = $w.Current.ProcessId } catch { }",
|
|
239
|
-
" $isModal = $false",
|
|
240
|
-
" try {",
|
|
241
|
-
" $pattern = $w.GetCurrentPattern([System.Windows.Automation.WindowPattern]::Pattern)",
|
|
242
|
-
" $isModal = $pattern.Current.IsModal",
|
|
243
|
-
" } catch { }",
|
|
244
|
-
" $result += @{ name = $name; class_name = $cls; hwnd = $hwnd; is_modal = $isModal; process_id = $procId }",
|
|
332
|
+
"foreach ($r in $rows) {",
|
|
333
|
+
' $f = $r -split "`t", 6',
|
|
334
|
+
" if ($f.Length -lt 6) { continue }",
|
|
335
|
+
" $result += @{ hwnd = [int64]$f[0]; process_id = [int]$f[1]; owner_hwnd = [int64]$f[2]; is_enabled = ($f[3] -eq '1'); class_name = $f[4]; name = $f[5]; is_visible = $true }",
|
|
245
336
|
"}",
|
|
246
337
|
`$appTarget = '${psLiteral}'`,
|
|
247
338
|
"$appNorm = ($appTarget -replace '\\s','').ToLowerInvariant()",
|
|
@@ -252,10 +343,10 @@ async function detectWindowsModal(opts) {
|
|
|
252
343
|
" $appPids = @($apps | Select-Object -ExpandProperty Id)",
|
|
253
344
|
" $appMain = @($apps | ForEach-Object { [int64]$_.MainWindowHandle })",
|
|
254
345
|
"}",
|
|
255
|
-
"$out = @{ windows = @($result); app_pids = @($appPids); app_main_hwnds = @($appMain) }",
|
|
346
|
+
"$out = @{ windows = @($result); app_pids = @($appPids); app_main_hwnds = @($appMain); foreground_hwnd = $fg }",
|
|
256
347
|
"$out | ConvertTo-Json -Compress -Depth 5",
|
|
257
348
|
].join("\n");
|
|
258
|
-
const r = await runCommand("powershell", ["-NoProfile", "-Command", script], opts.cwd, undefined, undefined,
|
|
349
|
+
const r = await runCommand("powershell", ["-NoProfile", "-Command", script], opts.cwd, undefined, undefined, 12000);
|
|
259
350
|
if (r.exit_code !== 0) {
|
|
260
351
|
return {
|
|
261
352
|
is_modal_present: false,
|
|
@@ -272,6 +363,8 @@ async function detectWindowsModal(opts) {
|
|
|
272
363
|
probe.windows = asArr(p.windows);
|
|
273
364
|
probe.app_pids = asArr(p.app_pids).map((x) => Number(x));
|
|
274
365
|
probe.app_main_hwnds = asArr(p.app_main_hwnds);
|
|
366
|
+
if (p.foreground_hwnd != null)
|
|
367
|
+
probe.foreground_hwnd = p.foreground_hwnd;
|
|
275
368
|
}
|
|
276
369
|
}
|
|
277
370
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modal_detector.js","sourceRoot":"","sources":["../../src/runners/modal_detector.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"modal_detector.js","sourceRoot":"","sources":["../../src/runners/modal_detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 0.1.64 — Remote / hosting / third-party log collection via provider CLIs.
|
|
3
|
+
*
|
|
4
|
+
* Auto-detects the deploy targets + SaaS providers a project uses from its
|
|
5
|
+
* markers (config files, dependencies), and when the provider CLI is
|
|
6
|
+
* installed pulls the latest read-only logs into the run's logs/ dir. Those
|
|
7
|
+
* captured logs are then folded into runtime_log_scan so production / 3rd
|
|
8
|
+
* party errors flow through the same `runtime_log_clean_evidence` blocker as
|
|
9
|
+
* local logs. When a detected provider's CLI is missing, we surface a
|
|
10
|
+
* push-to-install directive.
|
|
11
|
+
*
|
|
12
|
+
* Safety: every command is a READ-ONLY `logs`-style subcommand run with a
|
|
13
|
+
* hard timeout. Streaming commands (wrangler tail, stripe logs tail, fly
|
|
14
|
+
* logs) are killed by the timeout and their partial output is captured.
|
|
15
|
+
*/
|
|
16
|
+
export interface RemoteLogProvider {
|
|
17
|
+
id: string;
|
|
18
|
+
displayName: string;
|
|
19
|
+
/** Default CLI binary to probe. */
|
|
20
|
+
cli: string;
|
|
21
|
+
/** Project markers that indicate this provider is in use. */
|
|
22
|
+
detect: (cwd: string) => boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Build the read-only logs command args. Return null when the command
|
|
25
|
+
* cannot be built without extra config (e.g. an AWS log-group name or a
|
|
26
|
+
* Vercel deployment URL) — the caller then asks the agent to configure it.
|
|
27
|
+
*/
|
|
28
|
+
logsArgs: (tail: number) => string[] | null;
|
|
29
|
+
/** Shown when the CLI is not installed. */
|
|
30
|
+
installHint: string;
|
|
31
|
+
}
|
|
32
|
+
export interface CapturedRemoteLog {
|
|
33
|
+
id: string;
|
|
34
|
+
displayName: string;
|
|
35
|
+
path: string;
|
|
36
|
+
command: string;
|
|
37
|
+
}
|
|
38
|
+
export interface MissingRemoteCli {
|
|
39
|
+
id: string;
|
|
40
|
+
displayName: string;
|
|
41
|
+
cli: string;
|
|
42
|
+
install_hint: string;
|
|
43
|
+
}
|
|
44
|
+
export interface RemoteLogsEvidence {
|
|
45
|
+
generated_at: string;
|
|
46
|
+
enabled: boolean;
|
|
47
|
+
mode: "auto" | "configured" | "off";
|
|
48
|
+
/** Providers detected as in-use for this project. */
|
|
49
|
+
detected: string[];
|
|
50
|
+
captured: CapturedRemoteLog[];
|
|
51
|
+
/** Detected providers whose CLI is not installed — push the agent to install. */
|
|
52
|
+
missing_clis: MissingRemoteCli[];
|
|
53
|
+
/** Providers whose CLI is installed but reported an auth/login error. */
|
|
54
|
+
auth_needed: string[];
|
|
55
|
+
/** Providers detected but needing a logs_command override (target unknown). */
|
|
56
|
+
needs_config: string[];
|
|
57
|
+
reason?: string;
|
|
58
|
+
}
|
|
59
|
+
export interface RemoteLogsConfig {
|
|
60
|
+
enabled?: boolean;
|
|
61
|
+
mode?: "auto" | "configured" | "off";
|
|
62
|
+
tail_lines?: number;
|
|
63
|
+
timeout_seconds?: number;
|
|
64
|
+
providers?: Array<{
|
|
65
|
+
id: string;
|
|
66
|
+
enabled?: boolean;
|
|
67
|
+
cli?: string;
|
|
68
|
+
logs_command?: string;
|
|
69
|
+
install_hint?: string;
|
|
70
|
+
}>;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Built-in provider registry. Covers the common deploy + SaaS targets; the
|
|
74
|
+
* long tail is handled via config.remote_logs.providers overrides.
|
|
75
|
+
*/
|
|
76
|
+
export declare const PROVIDER_REGISTRY: RemoteLogProvider[];
|
|
77
|
+
export interface ResolvedCandidate {
|
|
78
|
+
provider: RemoteLogProvider;
|
|
79
|
+
/** Effective CLI (config override wins). */
|
|
80
|
+
cli: string;
|
|
81
|
+
/** Full command override from config, if any (string form). */
|
|
82
|
+
commandOverride?: string;
|
|
83
|
+
installHint: string;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Pure: pick the candidate providers given the project, config, and registry.
|
|
87
|
+
* - mode "off" / enabled:false -> []
|
|
88
|
+
* - mode "configured" -> only providers explicitly listed in config (enabled).
|
|
89
|
+
* - mode "auto" (default) -> registry providers whose detect() matches, PLUS
|
|
90
|
+
* any explicitly-configured providers; config can disable a provider.
|
|
91
|
+
*/
|
|
92
|
+
export declare function selectRemoteLogCandidates(cwd: string, config: RemoteLogsConfig, registry?: RemoteLogProvider[]): ResolvedCandidate[];
|
|
93
|
+
/**
|
|
94
|
+
* Collect remote logs. Best-effort: never throws. Writes remote_logs.json
|
|
95
|
+
* into runDir and the per-provider logs into logDir.
|
|
96
|
+
*/
|
|
97
|
+
export declare function collectRemoteLogs(cwd: string, config: RemoteLogsConfig, logDir: string): Promise<RemoteLogsEvidence>;
|
|
98
|
+
export declare function writeRemoteLogsEvidence(runDir: string, ev: RemoteLogsEvidence): void;
|
|
99
|
+
export declare function loadRemoteLogsEvidence(runDir: string): RemoteLogsEvidence | null;
|
|
100
|
+
/** Captured remote log files in a run's logs dir, for runtime_log_scan. */
|
|
101
|
+
export declare function listCapturedRemoteLogs(logDir: string): Array<{
|
|
102
|
+
source: string;
|
|
103
|
+
path: string;
|
|
104
|
+
}>;
|
|
105
|
+
//# sourceMappingURL=remote_logs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote_logs.d.ts","sourceRoot":"","sources":["../../src/runners/remote_logs.ts"],"names":[],"mappings":"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"}
|