codeloop-mcp-server 0.1.49 → 0.1.50
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 +4 -0
- package/dist/auth/critical_floors.js.map +1 -1
- package/dist/index.js +125 -44
- package/dist/index.js.map +1 -1
- package/dist/runners/resolve_project_dir.d.ts +67 -0
- package/dist/runners/resolve_project_dir.d.ts.map +1 -0
- package/dist/runners/resolve_project_dir.js +82 -0
- package/dist/runners/resolve_project_dir.js.map +1 -0
- package/dist/runners/screenshot.d.ts.map +1 -1
- package/dist/runners/screenshot.js +17 -2
- package/dist/runners/screenshot.js.map +1 -1
- package/dist/runners/uia_resolver.d.ts +70 -0
- package/dist/runners/uia_resolver.d.ts.map +1 -0
- package/dist/runners/uia_resolver.js +210 -0
- package/dist/runners/uia_resolver.js.map +1 -0
- package/dist/runners/window_manager.d.ts +28 -0
- package/dist/runners/window_manager.d.ts.map +1 -1
- package/dist/runners/window_manager.js +119 -4
- package/dist/runners/window_manager.js.map +1 -1
- package/dist/tools/design_compare.d.ts.map +1 -1
- package/dist/tools/design_compare.js +71 -33
- package/dist/tools/design_compare.js.map +1 -1
- package/dist/tools/diagnose.d.ts.map +1 -1
- package/dist/tools/diagnose.js +32 -1
- package/dist/tools/diagnose.js.map +1 -1
- package/dist/tools/discover_screens.d.ts.map +1 -1
- package/dist/tools/discover_screens.js +94 -2
- package/dist/tools/discover_screens.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 0.1.50 H4 — single source of truth for the `project_dir` precedence
|
|
3
|
+
* ladder used across every CodeLoop tool handler.
|
|
4
|
+
*
|
|
5
|
+
* Photometry-DB E2E logs 2 / 7 surfaced the recurrence path:
|
|
6
|
+
* codeloop_capture_screenshot was called WITHOUT project_dir on a
|
|
7
|
+
* Cursor-launched MCP server whose cwd was C:\Users\<user>. The
|
|
8
|
+
* handler defaulted to `params.project_dir || params.workspace_root || projectDir`,
|
|
9
|
+
* `projectDir` resolved to the home folder, and screenshots ended
|
|
10
|
+
* up under C:\Users\<user>\artifacts\... — invisible to every
|
|
11
|
+
* subsequent gate_check / design_compare run that looked under
|
|
12
|
+
* the actual workspace.
|
|
13
|
+
*
|
|
14
|
+
* The fix: every capture / interact / record / replay handler runs
|
|
15
|
+
* the same ladder:
|
|
16
|
+
* 1. Explicit `params.project_dir`
|
|
17
|
+
* 2. Explicit `params.workspace_root` (alias)
|
|
18
|
+
* 3. Active recording session's project_dir (when one is in flight)
|
|
19
|
+
* 4. `process.env.CODELOOP_PROJECT_DIR` (the workspace pin)
|
|
20
|
+
* 5. Walked-up `.codeloop/config.json` ancestor of `defaultDir`
|
|
21
|
+
* (catches the case where the agent's cwd is a sub-folder)
|
|
22
|
+
* 6. `defaultDir` (the discovery-time projectDir from index.ts)
|
|
23
|
+
*
|
|
24
|
+
* Step 5 is the new bit — it walks UP from the supplied default to
|
|
25
|
+
* find the nearest ancestor with `.codeloop/config.json`. That way,
|
|
26
|
+
* even if the MCP server boots with a stale projectDir (e.g. the
|
|
27
|
+
* pin became invalid because the workspace was renamed), as long
|
|
28
|
+
* as the cwd lives under a real project root we still land on it.
|
|
29
|
+
*
|
|
30
|
+
* Step 6 is the existing behaviour — preserved so callers that
|
|
31
|
+
* pre-flight their inputs aren't surprised.
|
|
32
|
+
*/
|
|
33
|
+
export interface ResolveProjectDirInput {
|
|
34
|
+
/** Explicit param from the tool call. */
|
|
35
|
+
project_dir?: string;
|
|
36
|
+
/** Alias for project_dir. */
|
|
37
|
+
workspace_root?: string;
|
|
38
|
+
/** Active recording project_dir, if known. */
|
|
39
|
+
recording_project_dir?: string;
|
|
40
|
+
/** The discovery-time projectDir to fall back to. */
|
|
41
|
+
default_dir: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Result of `resolveProjectDir` — includes the chosen path AND
|
|
45
|
+
* the source so callers can log it for diagnostic purposes.
|
|
46
|
+
*/
|
|
47
|
+
export interface ResolvedProjectDir {
|
|
48
|
+
path: string;
|
|
49
|
+
source: "explicit" | "workspace_root" | "recording" | "env" | "walked_up" | "default";
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Resolve the effective project_dir for a tool call using the H4
|
|
53
|
+
* precedence ladder. ALWAYS returns a non-empty path.
|
|
54
|
+
*/
|
|
55
|
+
export declare function resolveProjectDir(input: ResolveProjectDirInput): ResolvedProjectDir;
|
|
56
|
+
/**
|
|
57
|
+
* Cheaper variant that returns just the path. Use when you don't
|
|
58
|
+
* care about the source (most callers).
|
|
59
|
+
*/
|
|
60
|
+
export declare function resolveProjectDirPath(input: ResolveProjectDirInput): string;
|
|
61
|
+
/**
|
|
62
|
+
* Defensive guard — refuse paths that look like the user's home
|
|
63
|
+
* folder when we're about to scaffold side-effects (artifacts/,
|
|
64
|
+
* .codeloop/). Used by handlers that write to disk.
|
|
65
|
+
*/
|
|
66
|
+
export declare function isLikelyHomeDir(p: string): boolean;
|
|
67
|
+
//# sourceMappingURL=resolve_project_dir.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve_project_dir.d.ts","sourceRoot":"","sources":["../../src/runners/resolve_project_dir.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,WAAW,sBAAsB;IACrC,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8CAA8C;IAC9C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,GAAG,gBAAgB,GAAG,WAAW,GAAG,KAAK,GAAG,WAAW,GAAG,SAAS,CAAC;CACvF;AA4BD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,kBAAkB,CAwBnF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAE3E;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAMlD"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { existsSync, statSync } from "fs";
|
|
2
|
+
import { dirname, join, resolve } from "path";
|
|
3
|
+
import { homedir } from "os";
|
|
4
|
+
function looksLikeProjectRoot(p) {
|
|
5
|
+
if (!existsSync(p))
|
|
6
|
+
return false;
|
|
7
|
+
try {
|
|
8
|
+
return statSync(join(p, ".codeloop", "config.json")).isFile();
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function walkUpForConfig(start, maxDepth = 8) {
|
|
15
|
+
// Walk up from `start` to find the nearest ancestor with
|
|
16
|
+
// .codeloop/config.json. Returns the ancestor path on hit, null
|
|
17
|
+
// otherwise. Bounded depth avoids ever walking past the home dir.
|
|
18
|
+
if (!start)
|
|
19
|
+
return null;
|
|
20
|
+
let cur = resolve(start);
|
|
21
|
+
let depth = 0;
|
|
22
|
+
while (depth < maxDepth) {
|
|
23
|
+
if (looksLikeProjectRoot(cur))
|
|
24
|
+
return cur;
|
|
25
|
+
const parent = dirname(cur);
|
|
26
|
+
if (!parent || parent === cur)
|
|
27
|
+
break;
|
|
28
|
+
cur = parent;
|
|
29
|
+
depth += 1;
|
|
30
|
+
}
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Resolve the effective project_dir for a tool call using the H4
|
|
35
|
+
* precedence ladder. ALWAYS returns a non-empty path.
|
|
36
|
+
*/
|
|
37
|
+
export function resolveProjectDir(input) {
|
|
38
|
+
if (input.project_dir && input.project_dir.length > 0) {
|
|
39
|
+
return { path: input.project_dir, source: "explicit" };
|
|
40
|
+
}
|
|
41
|
+
if (input.workspace_root && input.workspace_root.length > 0) {
|
|
42
|
+
return { path: input.workspace_root, source: "workspace_root" };
|
|
43
|
+
}
|
|
44
|
+
if (input.recording_project_dir && input.recording_project_dir.length > 0) {
|
|
45
|
+
return { path: input.recording_project_dir, source: "recording" };
|
|
46
|
+
}
|
|
47
|
+
const env = process.env.CODELOOP_PROJECT_DIR;
|
|
48
|
+
if (env && env.length > 0 && existsSync(env)) {
|
|
49
|
+
return { path: env, source: "env" };
|
|
50
|
+
}
|
|
51
|
+
const walked = walkUpForConfig(input.default_dir);
|
|
52
|
+
if (walked) {
|
|
53
|
+
// Only treat the walk-up result as authoritative if it differs
|
|
54
|
+
// from the default — otherwise we'd noisily relabel the default
|
|
55
|
+
// path as "walked_up".
|
|
56
|
+
if (resolve(walked) !== resolve(input.default_dir)) {
|
|
57
|
+
return { path: walked, source: "walked_up" };
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return { path: input.default_dir, source: "default" };
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Cheaper variant that returns just the path. Use when you don't
|
|
64
|
+
* care about the source (most callers).
|
|
65
|
+
*/
|
|
66
|
+
export function resolveProjectDirPath(input) {
|
|
67
|
+
return resolveProjectDir(input).path;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Defensive guard — refuse paths that look like the user's home
|
|
71
|
+
* folder when we're about to scaffold side-effects (artifacts/,
|
|
72
|
+
* .codeloop/). Used by handlers that write to disk.
|
|
73
|
+
*/
|
|
74
|
+
export function isLikelyHomeDir(p) {
|
|
75
|
+
try {
|
|
76
|
+
return resolve(p) === resolve(homedir());
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=resolve_project_dir.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve_project_dir.js","sourceRoot":"","sources":["../../src/runners/resolve_project_dir.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../src/runners/screenshot.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,MAAiB,EACxB,OAAO,CAAC,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CAsC3B;
|
|
1
|
+
{"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../src/runners/screenshot.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,MAAiB,EACxB,OAAO,CAAC,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CAsC3B;AA8VD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAMrD"}
|
|
@@ -116,12 +116,21 @@ async function captureMacOS(outputPath, appName, options = {}) {
|
|
|
116
116
|
// captures the entire screen, so what we just saved is almost
|
|
117
117
|
// certainly the IDE / browser, not the app under test.
|
|
118
118
|
if (!windowId && options.desktopAppMode) {
|
|
119
|
+
// 0.1.50 H8 — pull the structured diagnostic so the agent
|
|
120
|
+
// sees the candidate window titles and a concrete next_step
|
|
121
|
+
// instead of the bare "No window found" string.
|
|
122
|
+
const { findWindowIdDetailed } = await import("./window_manager.js");
|
|
123
|
+
const diagnostic = await findWindowIdDetailed(appName);
|
|
124
|
+
const tail = !diagnostic.found
|
|
125
|
+
? ` Diagnostic: ${diagnostic.next_step}`
|
|
126
|
+
: "";
|
|
119
127
|
return {
|
|
120
128
|
captured: false,
|
|
121
129
|
paths: [],
|
|
122
130
|
method: "refused",
|
|
123
131
|
error: `No window found for app "${appName}" — screencapture would have fallen back to a full-screen capture, ` +
|
|
124
|
-
`which is not valid evidence for a desktop-app project. Launch the app first (or grant Screen Recording permission if the window exists but can't be enumerated), then retry
|
|
132
|
+
`which is not valid evidence for a desktop-app project. Launch the app first (or grant Screen Recording permission if the window exists but can't be enumerated), then retry.` +
|
|
133
|
+
tail,
|
|
125
134
|
};
|
|
126
135
|
}
|
|
127
136
|
return { captured: true, paths: [outputPath], method: `screencapture (app "${appName}" brought to front, then restored)${hint}` };
|
|
@@ -240,6 +249,12 @@ $graphics.Dispose(); $bitmap.Dispose()
|
|
|
240
249
|
const tail = options.desktopAppMode
|
|
241
250
|
? " (Desktop-app verify mode is enabled via evidence.target_app — this is treated as a verify-blocker, not a soft warning.)"
|
|
242
251
|
: "";
|
|
252
|
+
// 0.1.50 H8 — surface the structured diagnostic so the agent
|
|
253
|
+
// sees process-name + window-title candidates rather than
|
|
254
|
+
// having to guess what to set evidence.target_app to.
|
|
255
|
+
const { findWindowIdDetailed } = await import("./window_manager.js");
|
|
256
|
+
const diagnostic = await findWindowIdDetailed(appName);
|
|
257
|
+
const diagTail = !diagnostic.found ? ` Diagnostic: ${diagnostic.next_step}` : "";
|
|
243
258
|
return {
|
|
244
259
|
captured: false,
|
|
245
260
|
paths: [],
|
|
@@ -248,7 +263,7 @@ $graphics.Dispose(); $bitmap.Dispose()
|
|
|
248
263
|
`(e.g. \`Start-Process "<path-to-${appName}.exe>"\`), wait for the ` +
|
|
249
264
|
`main window to appear, then retry. Do NOT continue with the ` +
|
|
250
265
|
`verification loop — a screenshot of the IDE / browser is not ` +
|
|
251
|
-
`valid evidence of the app under test.` + tail,
|
|
266
|
+
`valid evidence of the app under test.` + tail + diagTail,
|
|
252
267
|
};
|
|
253
268
|
}
|
|
254
269
|
if (result.exit_code === 0 && existsSync(outputPath)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../src/runners/screenshot.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../src/runners/screenshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 0.1.50 H1 — convert text / role / automation_id selectors to (x, y)
|
|
3
|
+
* coordinates by walking the UIA tree from the named app's main window.
|
|
4
|
+
*
|
|
5
|
+
* Photometry-DB E2E 8 surfaced the recurrence path:
|
|
6
|
+
* codeloop_interact { action: "click", text: "Luminaire Photometric Data" }
|
|
7
|
+
* → click at (undefined, undefined)
|
|
8
|
+
* because the desktop click branch only resolved coords from raw x/y or
|
|
9
|
+
* through `automateElement` (Invoke/Toggle/Value patterns). Many WPF
|
|
10
|
+
* controls — notably tab headers, list-box items, and content elements
|
|
11
|
+
* inside a custom DataTemplate — don't expose Invoke; the agent has to
|
|
12
|
+
* land an actual mouse-click on the rendered region.
|
|
13
|
+
*
|
|
14
|
+
* This module bridges the gap: take a logical selector (AutomationId,
|
|
15
|
+
* Name, or ControlType.ProgrammaticName) and return the centre of the
|
|
16
|
+
* matching element's BoundingRectangle. The caller then routes through
|
|
17
|
+
* the existing `clickAtPosition` / `translateXY` plumbing so DPI scaling
|
|
18
|
+
* and window-origin offsets work unchanged.
|
|
19
|
+
*/
|
|
20
|
+
export interface UIAResolveOptions {
|
|
21
|
+
appName: string;
|
|
22
|
+
/** AutomationId (highest priority — most stable identifier). */
|
|
23
|
+
automationId?: string;
|
|
24
|
+
/** Name property — the visible text or accessibility name. */
|
|
25
|
+
text?: string;
|
|
26
|
+
/**
|
|
27
|
+
* ControlType.ProgrammaticName (e.g. `ControlType.Button`,
|
|
28
|
+
* `ControlType.TabItem`). Use as a last resort when neither
|
|
29
|
+
* AutomationId nor Name is specific enough.
|
|
30
|
+
*/
|
|
31
|
+
role?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface UIAResolveResult {
|
|
34
|
+
found: boolean;
|
|
35
|
+
x?: number;
|
|
36
|
+
y?: number;
|
|
37
|
+
/** Which property actually matched. Useful for debugging. */
|
|
38
|
+
foundBy?: "AutomationId" | "Name-exact" | "Name-contains" | "ControlType";
|
|
39
|
+
/** Bounding rect in screen pixels (helpful for diagnostics). */
|
|
40
|
+
bounds?: {
|
|
41
|
+
x: number;
|
|
42
|
+
y: number;
|
|
43
|
+
width: number;
|
|
44
|
+
height: number;
|
|
45
|
+
};
|
|
46
|
+
reason?: string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Walks the UIA tree under the named app window and returns the
|
|
50
|
+
* centre of the FIRST element matching (in priority order):
|
|
51
|
+
* 1. AutomationId exact (the most stable identifier)
|
|
52
|
+
* 2. Name property exact
|
|
53
|
+
* 3. Name property substring (helps when the agent passes a
|
|
54
|
+
* readable label like "Luminaire Photometric Data" that is
|
|
55
|
+
* actually the visible text of a wider control whose Name
|
|
56
|
+
* includes additional context)
|
|
57
|
+
* 4. ControlType.ProgrammaticName
|
|
58
|
+
*
|
|
59
|
+
* Returns `{ found: false, reason }` on any failure path so the
|
|
60
|
+
* caller can log a structured error and fall through to other
|
|
61
|
+
* strategies (e.g. raw coord click).
|
|
62
|
+
*/
|
|
63
|
+
export declare function resolveSelectorToXY(opts: UIAResolveOptions): Promise<UIAResolveResult>;
|
|
64
|
+
/**
|
|
65
|
+
* Test-only helper exporting the script body so unit tests can pin
|
|
66
|
+
* the priority ordering (AutomationId > Name-exact > Name-contains >
|
|
67
|
+
* ControlType) without needing a live Windows host.
|
|
68
|
+
*/
|
|
69
|
+
export declare function buildResolveScriptForTest(opts: UIAResolveOptions): string;
|
|
70
|
+
//# sourceMappingURL=uia_resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uia_resolver.d.ts","sourceRoot":"","sources":["../../src/runners/uia_resolver.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,6DAA6D;IAC7D,OAAO,CAAC,EAAE,cAAc,GAAG,YAAY,GAAG,eAAe,GAAG,aAAa,CAAC;IAC1E,gEAAgE;IAChE,MAAM,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAmL5F;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAQzE"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import { platform } from "os";
|
|
2
|
+
import { runCommand, checkToolAvailable } from "./base.js";
|
|
3
|
+
/**
|
|
4
|
+
* Walks the UIA tree under the named app window and returns the
|
|
5
|
+
* centre of the FIRST element matching (in priority order):
|
|
6
|
+
* 1. AutomationId exact (the most stable identifier)
|
|
7
|
+
* 2. Name property exact
|
|
8
|
+
* 3. Name property substring (helps when the agent passes a
|
|
9
|
+
* readable label like "Luminaire Photometric Data" that is
|
|
10
|
+
* actually the visible text of a wider control whose Name
|
|
11
|
+
* includes additional context)
|
|
12
|
+
* 4. ControlType.ProgrammaticName
|
|
13
|
+
*
|
|
14
|
+
* Returns `{ found: false, reason }` on any failure path so the
|
|
15
|
+
* caller can log a structured error and fall through to other
|
|
16
|
+
* strategies (e.g. raw coord click).
|
|
17
|
+
*/
|
|
18
|
+
export async function resolveSelectorToXY(opts) {
|
|
19
|
+
if (platform() !== "win32") {
|
|
20
|
+
return { found: false, reason: "win-only" };
|
|
21
|
+
}
|
|
22
|
+
if (!(await checkToolAvailable("powershell"))) {
|
|
23
|
+
return { found: false, reason: "powershell-not-found" };
|
|
24
|
+
}
|
|
25
|
+
const { appName, automationId, text, role } = opts;
|
|
26
|
+
if (!appName)
|
|
27
|
+
return { found: false, reason: "no-appName" };
|
|
28
|
+
if (!automationId && !text && !role) {
|
|
29
|
+
return { found: false, reason: "no-selector" };
|
|
30
|
+
}
|
|
31
|
+
// Single-quote-escape every string we interpolate. PowerShell
|
|
32
|
+
// single-quoted literals only need '' to escape '.
|
|
33
|
+
const psEscape = (s) => s.replace(/'/g, "''");
|
|
34
|
+
const psApp = psEscape(appName);
|
|
35
|
+
const psAuto = automationId ? psEscape(automationId) : "";
|
|
36
|
+
const psText = text ? psEscape(text) : "";
|
|
37
|
+
const psRole = role ? psEscape(role) : "";
|
|
38
|
+
const script = `
|
|
39
|
+
$ErrorActionPreference = 'Stop'
|
|
40
|
+
Add-Type -AssemblyName UIAutomationClient
|
|
41
|
+
Add-Type -AssemblyName UIAutomationTypes
|
|
42
|
+
|
|
43
|
+
$root = [System.Windows.Automation.AutomationElement]::RootElement
|
|
44
|
+
$appCondition = New-Object System.Windows.Automation.PropertyCondition([System.Windows.Automation.AutomationElement]::NameProperty, '${psApp}')
|
|
45
|
+
$app = $root.FindFirst([System.Windows.Automation.TreeScope]::Children, $appCondition)
|
|
46
|
+
if (-not $app) {
|
|
47
|
+
Write-Output (ConvertTo-Json @{ found = $false; reason = 'app-not-found' } -Compress)
|
|
48
|
+
exit 1
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
$target = $null
|
|
52
|
+
$foundBy = ''
|
|
53
|
+
|
|
54
|
+
# 1. AutomationId exact
|
|
55
|
+
if ('${psAuto}' -ne '') {
|
|
56
|
+
$cond = New-Object System.Windows.Automation.PropertyCondition([System.Windows.Automation.AutomationElement]::AutomationIdProperty, '${psAuto}')
|
|
57
|
+
$target = $app.FindFirst([System.Windows.Automation.TreeScope]::Descendants, $cond)
|
|
58
|
+
if ($target) { $foundBy = 'AutomationId' }
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
# 2. Name property exact
|
|
62
|
+
if (-not $target -and '${psText}' -ne '') {
|
|
63
|
+
$cond = New-Object System.Windows.Automation.PropertyCondition([System.Windows.Automation.AutomationElement]::NameProperty, '${psText}')
|
|
64
|
+
$target = $app.FindFirst([System.Windows.Automation.TreeScope]::Descendants, $cond)
|
|
65
|
+
if ($target) { $foundBy = 'Name-exact' }
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
# 3. Name property substring — walk the tree and pick the first
|
|
69
|
+
# descendant whose Name *contains* the requested text.
|
|
70
|
+
if (-not $target -and '${psText}' -ne '') {
|
|
71
|
+
$walker = [System.Windows.Automation.TreeWalker]::ControlViewWalker
|
|
72
|
+
$stack = New-Object System.Collections.Generic.Stack[System.Windows.Automation.AutomationElement]
|
|
73
|
+
$stack.Push($app)
|
|
74
|
+
$needle = '${psText}'
|
|
75
|
+
while ($stack.Count -gt 0 -and -not $target) {
|
|
76
|
+
$cur = $stack.Pop()
|
|
77
|
+
try {
|
|
78
|
+
$name = $cur.Current.Name
|
|
79
|
+
if ($name -and $name.IndexOf($needle, [StringComparison]::OrdinalIgnoreCase) -ge 0) {
|
|
80
|
+
$target = $cur
|
|
81
|
+
$foundBy = 'Name-contains'
|
|
82
|
+
break
|
|
83
|
+
}
|
|
84
|
+
} catch {}
|
|
85
|
+
try {
|
|
86
|
+
$child = $walker.GetFirstChild($cur)
|
|
87
|
+
while ($child -ne $null) {
|
|
88
|
+
$stack.Push($child)
|
|
89
|
+
$child = $walker.GetNextSibling($child)
|
|
90
|
+
}
|
|
91
|
+
} catch {}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
# 4. ControlType.ProgrammaticName
|
|
96
|
+
if (-not $target -and '${psRole}' -ne '') {
|
|
97
|
+
$walker = [System.Windows.Automation.TreeWalker]::ControlViewWalker
|
|
98
|
+
$stack = New-Object System.Collections.Generic.Stack[System.Windows.Automation.AutomationElement]
|
|
99
|
+
$stack.Push($app)
|
|
100
|
+
$roleNeedle = '${psRole}'
|
|
101
|
+
while ($stack.Count -gt 0 -and -not $target) {
|
|
102
|
+
$cur = $stack.Pop()
|
|
103
|
+
try {
|
|
104
|
+
$ct = $cur.Current.ControlType.ProgrammaticName
|
|
105
|
+
if ($ct -and ($ct -eq $roleNeedle -or $ct.EndsWith('.' + $roleNeedle))) {
|
|
106
|
+
$target = $cur
|
|
107
|
+
$foundBy = 'ControlType'
|
|
108
|
+
break
|
|
109
|
+
}
|
|
110
|
+
} catch {}
|
|
111
|
+
try {
|
|
112
|
+
$child = $walker.GetFirstChild($cur)
|
|
113
|
+
while ($child -ne $null) {
|
|
114
|
+
$stack.Push($child)
|
|
115
|
+
$child = $walker.GetNextSibling($child)
|
|
116
|
+
}
|
|
117
|
+
} catch {}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (-not $target) {
|
|
122
|
+
Write-Output (ConvertTo-Json @{ found = $false; reason = 'no-match' } -Compress)
|
|
123
|
+
exit 1
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
# Resolve to a screen-absolute (x, y). UIA's GetClickablePoint() is
|
|
127
|
+
# the most robust path; it accounts for the element's hit-test region
|
|
128
|
+
# (e.g. clicking a button's centre rather than its outer bounds).
|
|
129
|
+
# When unavailable (some controls throw NoClickablePointException),
|
|
130
|
+
# fall back to the BoundingRectangle centre.
|
|
131
|
+
$cx = $null
|
|
132
|
+
$cy = $null
|
|
133
|
+
$rect = $null
|
|
134
|
+
try {
|
|
135
|
+
$rect = $target.Current.BoundingRectangle
|
|
136
|
+
} catch {}
|
|
137
|
+
try {
|
|
138
|
+
$cp = $target.GetClickablePoint()
|
|
139
|
+
$cx = [int]$cp.X
|
|
140
|
+
$cy = [int]$cp.Y
|
|
141
|
+
} catch {
|
|
142
|
+
if ($rect -ne $null -and $rect.Width -gt 0 -and $rect.Height -gt 0) {
|
|
143
|
+
$cx = [int]($rect.X + $rect.Width / 2)
|
|
144
|
+
$cy = [int]($rect.Y + $rect.Height / 2)
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
if ($cx -eq $null -or $cy -eq $null) {
|
|
149
|
+
Write-Output (ConvertTo-Json @{ found = $false; reason = 'no-clickable-point-no-bounds'; foundBy = $foundBy } -Compress)
|
|
150
|
+
exit 1
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
$payload = @{
|
|
154
|
+
found = $true
|
|
155
|
+
x = $cx
|
|
156
|
+
y = $cy
|
|
157
|
+
foundBy = $foundBy
|
|
158
|
+
}
|
|
159
|
+
if ($rect -ne $null) {
|
|
160
|
+
$payload.bounds = @{
|
|
161
|
+
x = [int]$rect.X
|
|
162
|
+
y = [int]$rect.Y
|
|
163
|
+
width = [int]$rect.Width
|
|
164
|
+
height = [int]$rect.Height
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
Write-Output (ConvertTo-Json $payload -Compress -Depth 6)
|
|
168
|
+
exit 0
|
|
169
|
+
`;
|
|
170
|
+
const result = await runCommand("powershell", ["-NoProfile", "-Command", script], process.cwd());
|
|
171
|
+
const lastJsonLine = result.stdout
|
|
172
|
+
.split(/\r?\n/)
|
|
173
|
+
.map((l) => l.trim())
|
|
174
|
+
.filter((l) => l.startsWith("{"))
|
|
175
|
+
.pop();
|
|
176
|
+
if (!lastJsonLine) {
|
|
177
|
+
return { found: false, reason: result.stderr || "no-output" };
|
|
178
|
+
}
|
|
179
|
+
try {
|
|
180
|
+
const parsed = JSON.parse(lastJsonLine);
|
|
181
|
+
if (!parsed.found) {
|
|
182
|
+
return { found: false, reason: parsed.reason || "no-match" };
|
|
183
|
+
}
|
|
184
|
+
return {
|
|
185
|
+
found: true,
|
|
186
|
+
x: parsed.x,
|
|
187
|
+
y: parsed.y,
|
|
188
|
+
foundBy: parsed.foundBy,
|
|
189
|
+
bounds: parsed.bounds,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
catch {
|
|
193
|
+
return { found: false, reason: "parse-error" };
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Test-only helper exporting the script body so unit tests can pin
|
|
198
|
+
* the priority ordering (AutomationId > Name-exact > Name-contains >
|
|
199
|
+
* ControlType) without needing a live Windows host.
|
|
200
|
+
*/
|
|
201
|
+
export function buildResolveScriptForTest(opts) {
|
|
202
|
+
const psEscape = (s) => s.replace(/'/g, "''");
|
|
203
|
+
return [
|
|
204
|
+
`app='${psEscape(opts.appName)}'`,
|
|
205
|
+
`automationId='${opts.automationId ? psEscape(opts.automationId) : ""}'`,
|
|
206
|
+
`text='${opts.text ? psEscape(opts.text) : ""}'`,
|
|
207
|
+
`role='${opts.role ? psEscape(opts.role) : ""}'`,
|
|
208
|
+
].join(";");
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=uia_resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uia_resolver.js","sourceRoot":"","sources":["../../src/runners/uia_resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AA8C3D;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAuB;IAC/D,IAAI,QAAQ,EAAE,KAAK,OAAO,EAAE,CAAC;QAC3B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAC9C,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,kBAAkB,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QAC9C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;IAC1D,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACnD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IAC5D,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACjD,CAAC;IAED,8DAA8D;IAC9D,mDAAmD;IACnD,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE1C,MAAM,MAAM,GAAG;;;;;;uIAMsH,KAAK;;;;;;;;;;;OAWrI,MAAM;yIAC4H,MAAM;;;;;;yBAMtH,MAAM;iIACkG,MAAM;;;;;;;yBAO9G,MAAM;;;;eAIhB,MAAM;;;;;;;;;;;;;;;;;;;;;;yBAsBI,MAAM;;;;mBAIZ,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqExB,CAAC;IAEA,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,YAAY,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACjG,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM;SAC/B,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SAChC,GAAG,EAAE,CAAC;IACT,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,WAAW,EAAE,CAAC;IAChE,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;QAC/D,CAAC;QACD,OAAO;YACL,KAAK,EAAE,IAAI;YACX,CAAC,EAAE,MAAM,CAAC,CAAC;YACX,CAAC,EAAE,MAAM,CAAC,CAAC;YACX,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACjD,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAuB;IAC/D,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9D,OAAO;QACL,QAAQ,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG;QACjC,iBAAiB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG;QACxE,SAAS,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG;QAChD,SAAS,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG;KACjD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC"}
|
|
@@ -5,6 +5,34 @@
|
|
|
5
5
|
* Windows: not needed (uses process handle)
|
|
6
6
|
*/
|
|
7
7
|
export declare function findWindowId(appName: string): Promise<string | null>;
|
|
8
|
+
/**
|
|
9
|
+
* 0.1.50 H8 — structured "window not found" diagnostic.
|
|
10
|
+
*
|
|
11
|
+
* Photometry-DB E2E logs surfaced "App window not found" with NO
|
|
12
|
+
* context — the agent had no idea whether `evidence.target_app` was
|
|
13
|
+
* set, what process names were running, or what the actual window
|
|
14
|
+
* titles looked like. Without that, the agent retried the same
|
|
15
|
+
* lookup or fell back to silent IDE capture (the very regression
|
|
16
|
+
* desktopAppMode existed to prevent).
|
|
17
|
+
*
|
|
18
|
+
* The detailed variant returns:
|
|
19
|
+
* - `candidates`: the process names + main-window titles we saw
|
|
20
|
+
* - `target_app`: the literal value the caller passed (mirrors
|
|
21
|
+
* `evidence.target_app` from .codeloop/config.json)
|
|
22
|
+
* - `next_step`: a one-line directive the agent can act on
|
|
23
|
+
*/
|
|
24
|
+
export interface WindowNotFoundError {
|
|
25
|
+
found: false;
|
|
26
|
+
candidates: string[];
|
|
27
|
+
target_app: string | null;
|
|
28
|
+
next_step: string;
|
|
29
|
+
}
|
|
30
|
+
export interface WindowFound {
|
|
31
|
+
found: true;
|
|
32
|
+
id: string;
|
|
33
|
+
}
|
|
34
|
+
export type WindowLookupResult = WindowFound | WindowNotFoundError;
|
|
35
|
+
export declare function findWindowIdDetailed(appName: string): Promise<WindowLookupResult>;
|
|
8
36
|
/**
|
|
9
37
|
* PowerShell snippet that picks ONE Get-Process row matching $appName with a
|
|
10
38
|
* priority ladder. The previous single `-match '<appName>'` substring/regex
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"window_manager.d.ts","sourceRoot":"","sources":["../../src/runners/window_manager.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"window_manager.d.ts","sourceRoot":"","sources":["../../src/runners/window_manager.ts"],"names":[],"mappings":"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"}
|