claude-in-mobile 2.1.2 → 2.2.0
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/desktop-companion/build/install/desktop-companion/bin/desktop-companion +248 -0
- package/desktop-companion/build/install/desktop-companion/bin/desktop-companion.bat +92 -0
- package/desktop-companion/build/install/desktop-companion/lib/annotations-23.0.0.jar +0 -0
- package/desktop-companion/build/install/desktop-companion/lib/desktop-companion-1.0.0.jar +0 -0
- package/desktop-companion/build/install/desktop-companion/lib/jna-5.14.0.jar +0 -0
- package/desktop-companion/build/install/desktop-companion/lib/jna-platform-5.14.0.jar +0 -0
- package/desktop-companion/build/install/desktop-companion/lib/kotlin-stdlib-1.9.22.jar +0 -0
- package/desktop-companion/build/install/desktop-companion/lib/kotlin-stdlib-jdk7-1.8.20.jar +0 -0
- package/desktop-companion/build/install/desktop-companion/lib/kotlin-stdlib-jdk8-1.8.20.jar +0 -0
- package/desktop-companion/build/install/desktop-companion/lib/kotlinx-coroutines-core-jvm-1.7.3.jar +0 -0
- package/desktop-companion/build/install/desktop-companion/lib/kotlinx-serialization-core-jvm-1.6.2.jar +0 -0
- package/desktop-companion/build/install/desktop-companion/lib/kotlinx-serialization-json-jvm-1.6.2.jar +0 -0
- package/dist/desktop/client.d.ts +162 -0
- package/dist/desktop/client.d.ts.map +1 -0
- package/dist/desktop/client.js +485 -0
- package/dist/desktop/client.js.map +1 -0
- package/dist/desktop/gradle.d.ts +45 -0
- package/dist/desktop/gradle.d.ts.map +1 -0
- package/dist/desktop/gradle.js +228 -0
- package/dist/desktop/gradle.js.map +1 -0
- package/dist/desktop/index.d.ts +7 -0
- package/dist/desktop/index.d.ts.map +1 -0
- package/dist/desktop/index.js +7 -0
- package/dist/desktop/index.js.map +1 -0
- package/dist/desktop/types.d.ts +131 -0
- package/dist/desktop/types.d.ts.map +1 -0
- package/dist/desktop/types.js +5 -0
- package/dist/desktop/types.js.map +1 -0
- package/dist/device-manager.d.ts +41 -10
- package/dist/device-manager.d.ts.map +1 -1
- package/dist/device-manager.js +226 -39
- package/dist/device-manager.js.map +1 -1
- package/dist/index.js +237 -18
- package/dist/index.js.map +1 -1
- package/dist/utils/image.d.ts +2 -0
- package/dist/utils/image.d.ts.map +1 -1
- package/dist/utils/image.js +25 -2
- package/dist/utils/image.js.map +1 -1
- package/package.json +7 -2
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gradle task detection and launcher for Compose Desktop projects
|
|
3
|
+
*/
|
|
4
|
+
import { execSync, spawn } from "child_process";
|
|
5
|
+
import * as path from "path";
|
|
6
|
+
import * as fs from "fs";
|
|
7
|
+
// Known desktop run task patterns
|
|
8
|
+
const DESKTOP_TASK_PATTERNS = [
|
|
9
|
+
":desktopApp:run",
|
|
10
|
+
":composeApp:desktopRun",
|
|
11
|
+
":desktop:run",
|
|
12
|
+
":app:desktopRun",
|
|
13
|
+
"desktopRun",
|
|
14
|
+
"runDesktop",
|
|
15
|
+
];
|
|
16
|
+
export class GradleLauncher {
|
|
17
|
+
/**
|
|
18
|
+
* Check if Gradle wrapper exists in project
|
|
19
|
+
*/
|
|
20
|
+
hasGradleWrapper(projectPath) {
|
|
21
|
+
const wrapperScript = process.platform === "win32" ? "gradlew.bat" : "gradlew";
|
|
22
|
+
const wrapperPath = path.join(projectPath, wrapperScript);
|
|
23
|
+
return fs.existsSync(wrapperPath);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Get Gradle executable (wrapper or system gradle)
|
|
27
|
+
*/
|
|
28
|
+
getGradleExecutable(projectPath) {
|
|
29
|
+
if (this.hasGradleWrapper(projectPath)) {
|
|
30
|
+
return process.platform === "win32"
|
|
31
|
+
? path.join(projectPath, "gradlew.bat")
|
|
32
|
+
: path.join(projectPath, "gradlew");
|
|
33
|
+
}
|
|
34
|
+
return "gradle";
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Detect available desktop run tasks in the project
|
|
38
|
+
*/
|
|
39
|
+
async detectDesktopTasks(projectPath) {
|
|
40
|
+
const gradle = this.getGradleExecutable(projectPath);
|
|
41
|
+
try {
|
|
42
|
+
// Run gradle tasks and parse output
|
|
43
|
+
const output = execSync(`"${gradle}" tasks --all`, {
|
|
44
|
+
cwd: projectPath,
|
|
45
|
+
encoding: "utf-8",
|
|
46
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
47
|
+
timeout: 60000,
|
|
48
|
+
});
|
|
49
|
+
const tasks = [];
|
|
50
|
+
const lines = output.split("\n");
|
|
51
|
+
for (const line of lines) {
|
|
52
|
+
const trimmed = line.trim();
|
|
53
|
+
// Look for task lines (format: "taskName - description" or just "taskName")
|
|
54
|
+
const taskMatch = trimmed.match(/^(:\S+|[a-zA-Z]\S*)\s*(-|$)/);
|
|
55
|
+
if (taskMatch) {
|
|
56
|
+
const taskName = taskMatch[1];
|
|
57
|
+
// Check if it matches known desktop patterns
|
|
58
|
+
for (const pattern of DESKTOP_TASK_PATTERNS) {
|
|
59
|
+
if (taskName.includes(pattern) ||
|
|
60
|
+
taskName.toLowerCase().includes("desktop") && taskName.toLowerCase().includes("run")) {
|
|
61
|
+
tasks.push(taskName);
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// Deduplicate and sort
|
|
68
|
+
return [...new Set(tasks)].sort();
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
// Fallback: check common task names directly
|
|
72
|
+
const commonTasks = [];
|
|
73
|
+
for (const pattern of DESKTOP_TASK_PATTERNS) {
|
|
74
|
+
try {
|
|
75
|
+
execSync(`"${gradle}" ${pattern} --dry-run`, {
|
|
76
|
+
cwd: projectPath,
|
|
77
|
+
encoding: "utf-8",
|
|
78
|
+
timeout: 30000,
|
|
79
|
+
stdio: "pipe",
|
|
80
|
+
});
|
|
81
|
+
commonTasks.push(pattern);
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
// Task doesn't exist
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return commonTasks;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Analyze Gradle project and return info
|
|
92
|
+
*/
|
|
93
|
+
async analyzeProject(projectPath) {
|
|
94
|
+
if (!fs.existsSync(projectPath)) {
|
|
95
|
+
throw new Error(`Project path does not exist: ${projectPath}`);
|
|
96
|
+
}
|
|
97
|
+
// Check for build.gradle or build.gradle.kts
|
|
98
|
+
const hasBuildGradle = fs.existsSync(path.join(projectPath, "build.gradle")) ||
|
|
99
|
+
fs.existsSync(path.join(projectPath, "build.gradle.kts"));
|
|
100
|
+
if (!hasBuildGradle) {
|
|
101
|
+
throw new Error(`No build.gradle or build.gradle.kts found in: ${projectPath}`);
|
|
102
|
+
}
|
|
103
|
+
const desktopTasks = await this.detectDesktopTasks(projectPath);
|
|
104
|
+
return {
|
|
105
|
+
path: projectPath,
|
|
106
|
+
desktopTasks,
|
|
107
|
+
selectedTask: desktopTasks[0], // Default to first detected task
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Launch desktop app via Gradle
|
|
112
|
+
* Returns the spawned process
|
|
113
|
+
*/
|
|
114
|
+
launch(options) {
|
|
115
|
+
const { projectPath, task, jvmArgs = [], env = {} } = options;
|
|
116
|
+
if (!projectPath) {
|
|
117
|
+
throw new Error("projectPath is required to launch via Gradle");
|
|
118
|
+
}
|
|
119
|
+
if (!fs.existsSync(projectPath)) {
|
|
120
|
+
throw new Error(`Project path does not exist: ${projectPath}`);
|
|
121
|
+
}
|
|
122
|
+
const gradle = this.getGradleExecutable(projectPath);
|
|
123
|
+
// Determine task to run
|
|
124
|
+
let targetTask = task;
|
|
125
|
+
if (!targetTask) {
|
|
126
|
+
// Auto-detect
|
|
127
|
+
const detected = this.detectDesktopTasksSync(projectPath);
|
|
128
|
+
if (detected.length === 0) {
|
|
129
|
+
throw new Error(`No desktop run task found in project. ` +
|
|
130
|
+
`Please specify task explicitly or ensure project has Compose Desktop configured.`);
|
|
131
|
+
}
|
|
132
|
+
targetTask = detected[0];
|
|
133
|
+
}
|
|
134
|
+
// Build command args
|
|
135
|
+
const args = [targetTask];
|
|
136
|
+
// Add JVM args
|
|
137
|
+
if (jvmArgs.length > 0) {
|
|
138
|
+
args.push(`-Dorg.gradle.jvmargs=${jvmArgs.join(" ")}`);
|
|
139
|
+
}
|
|
140
|
+
// Add --console=plain for cleaner output
|
|
141
|
+
args.push("--console=plain");
|
|
142
|
+
// Merge environment
|
|
143
|
+
const processEnv = {
|
|
144
|
+
...process.env,
|
|
145
|
+
...env,
|
|
146
|
+
};
|
|
147
|
+
// Spawn Gradle process
|
|
148
|
+
const child = spawn(gradle, args, {
|
|
149
|
+
cwd: projectPath,
|
|
150
|
+
env: processEnv,
|
|
151
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
152
|
+
shell: process.platform === "win32",
|
|
153
|
+
});
|
|
154
|
+
return child;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Synchronous version of detectDesktopTasks (for launch)
|
|
158
|
+
*/
|
|
159
|
+
detectDesktopTasksSync(projectPath) {
|
|
160
|
+
const gradle = this.getGradleExecutable(projectPath);
|
|
161
|
+
const tasks = [];
|
|
162
|
+
// Quick check for common patterns
|
|
163
|
+
for (const pattern of DESKTOP_TASK_PATTERNS) {
|
|
164
|
+
try {
|
|
165
|
+
execSync(`"${gradle}" ${pattern} --dry-run`, {
|
|
166
|
+
cwd: projectPath,
|
|
167
|
+
encoding: "utf-8",
|
|
168
|
+
timeout: 30000,
|
|
169
|
+
stdio: "pipe",
|
|
170
|
+
});
|
|
171
|
+
tasks.push(pattern);
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
// Task doesn't exist
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return tasks;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Stop a running Gradle process
|
|
181
|
+
*/
|
|
182
|
+
stop(process) {
|
|
183
|
+
if (process && !process.killed) {
|
|
184
|
+
// Try graceful shutdown first
|
|
185
|
+
process.kill("SIGTERM");
|
|
186
|
+
// Force kill after timeout
|
|
187
|
+
setTimeout(() => {
|
|
188
|
+
if (!process.killed) {
|
|
189
|
+
process.kill("SIGKILL");
|
|
190
|
+
}
|
|
191
|
+
}, 5000);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Check if Gradle daemon is running
|
|
196
|
+
*/
|
|
197
|
+
isGradleDaemonRunning(projectPath) {
|
|
198
|
+
const gradle = this.getGradleExecutable(projectPath);
|
|
199
|
+
try {
|
|
200
|
+
const output = execSync(`"${gradle}" --status`, {
|
|
201
|
+
cwd: projectPath,
|
|
202
|
+
encoding: "utf-8",
|
|
203
|
+
timeout: 10000,
|
|
204
|
+
});
|
|
205
|
+
return output.includes("IDLE") || output.includes("BUSY");
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Stop Gradle daemon
|
|
213
|
+
*/
|
|
214
|
+
stopGradleDaemon(projectPath) {
|
|
215
|
+
const gradle = this.getGradleExecutable(projectPath);
|
|
216
|
+
try {
|
|
217
|
+
execSync(`"${gradle}" --stop`, {
|
|
218
|
+
cwd: projectPath,
|
|
219
|
+
encoding: "utf-8",
|
|
220
|
+
timeout: 30000,
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
// Ignore errors
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=gradle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gradle.js","sourceRoot":"","sources":["../../src/desktop/gradle.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAgB,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAGzB,kCAAkC;AAClC,MAAM,qBAAqB,GAAG;IAC5B,iBAAiB;IACjB,wBAAwB;IACxB,cAAc;IACd,iBAAiB;IACjB,YAAY;IACZ,YAAY;CACb,CAAC;AAEF,MAAM,OAAO,cAAc;IACzB;;OAEG;IACH,gBAAgB,CAAC,WAAmB;QAClC,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/E,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAC1D,OAAO,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,WAAmB;QAC7C,IAAI,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC;YACvC,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO;gBACjC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC;gBACvC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,WAAmB;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAErD,IAAI,CAAC;YACH,oCAAoC;YACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,MAAM,eAAe,EAAE;gBACjD,GAAG,EAAE,WAAW;gBAChB,QAAQ,EAAE,OAAO;gBACjB,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;gBAC3B,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YAEH,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAEjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC5B,4EAA4E;gBAC5E,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBAC/D,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;oBAC9B,6CAA6C;oBAC7C,KAAK,MAAM,OAAO,IAAI,qBAAqB,EAAE,CAAC;wBAC5C,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;4BAC1B,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;4BACzF,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;4BACrB,MAAM;wBACR,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,uBAAuB;YACvB,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACpC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,6CAA6C;YAC7C,MAAM,WAAW,GAAa,EAAE,CAAC;YAEjC,KAAK,MAAM,OAAO,IAAI,qBAAqB,EAAE,CAAC;gBAC5C,IAAI,CAAC;oBACH,QAAQ,CAAC,IAAI,MAAM,KAAK,OAAO,YAAY,EAAE;wBAC3C,GAAG,EAAE,WAAW;wBAChB,QAAQ,EAAE,OAAO;wBACjB,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,MAAM;qBACd,CAAC,CAAC;oBACH,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC5B,CAAC;gBAAC,MAAM,CAAC;oBACP,qBAAqB;gBACvB,CAAC;YACH,CAAC;YAED,OAAO,WAAW,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,WAAmB;QACtC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,gCAAgC,WAAW,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,6CAA6C;QAC7C,MAAM,cAAc,GAClB,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;YACrD,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC;QAE5D,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,iDAAiD,WAAW,EAAE,CAAC,CAAC;QAClF,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAEhE,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,YAAY;YACZ,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,iCAAiC;SACjE,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,OAAsB;QAC3B,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;QAE9D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,gCAAgC,WAAW,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAErD,wBAAwB;QACxB,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,cAAc;YACd,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;YAC1D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CACb,wCAAwC;oBACxC,kFAAkF,CACnF,CAAC;YACJ,CAAC;YACD,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;QAED,qBAAqB;QACrB,MAAM,IAAI,GAAa,CAAC,UAAU,CAAC,CAAC;QAEpC,eAAe;QACf,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,wBAAwB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,yCAAyC;QACzC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE7B,oBAAoB;QACpB,MAAM,UAAU,GAAG;YACjB,GAAG,OAAO,CAAC,GAAG;YACd,GAAG,GAAG;SACP,CAAC;QAEF,uBAAuB;QACvB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE;YAChC,GAAG,EAAE,WAAW;YAChB,GAAG,EAAE,UAAU;YACf,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YAC/B,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;SACpC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,WAAmB;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACrD,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,kCAAkC;QAClC,KAAK,MAAM,OAAO,IAAI,qBAAqB,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACH,QAAQ,CAAC,IAAI,MAAM,KAAK,OAAO,YAAY,EAAE;oBAC3C,GAAG,EAAE,WAAW;oBAChB,QAAQ,EAAE,OAAO;oBACjB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,MAAM;iBACd,CAAC,CAAC;gBACH,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtB,CAAC;YAAC,MAAM,CAAC;gBACP,qBAAqB;YACvB,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAqB;QACxB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC/B,8BAA8B;YAC9B,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAExB,2BAA2B;YAC3B,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;oBACpB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,WAAmB;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,MAAM,YAAY,EAAE;gBAC9C,GAAG,EAAE,WAAW;gBAChB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,WAAmB;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,CAAC;YACH,QAAQ,CAAC,IAAI,MAAM,UAAU,EAAE;gBAC7B,GAAG,EAAE,WAAW;gBAChB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,gBAAgB;QAClB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/desktop/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/desktop/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Desktop platform types for claude-in-mobile
|
|
3
|
+
*/
|
|
4
|
+
export interface JsonRpcRequest {
|
|
5
|
+
jsonrpc: "2.0";
|
|
6
|
+
id: number;
|
|
7
|
+
method: string;
|
|
8
|
+
params?: Record<string, unknown>;
|
|
9
|
+
}
|
|
10
|
+
export interface JsonRpcResponse {
|
|
11
|
+
jsonrpc: "2.0";
|
|
12
|
+
id: number;
|
|
13
|
+
result?: unknown;
|
|
14
|
+
error?: JsonRpcError;
|
|
15
|
+
}
|
|
16
|
+
export interface JsonRpcError {
|
|
17
|
+
code: number;
|
|
18
|
+
message: string;
|
|
19
|
+
data?: unknown;
|
|
20
|
+
}
|
|
21
|
+
export interface Bounds {
|
|
22
|
+
x: number;
|
|
23
|
+
y: number;
|
|
24
|
+
width: number;
|
|
25
|
+
height: number;
|
|
26
|
+
}
|
|
27
|
+
export interface DesktopWindow {
|
|
28
|
+
id: string;
|
|
29
|
+
title: string;
|
|
30
|
+
bounds: Bounds;
|
|
31
|
+
focused: boolean;
|
|
32
|
+
minimized: boolean;
|
|
33
|
+
fullscreen: boolean;
|
|
34
|
+
processId?: number;
|
|
35
|
+
ownerName?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface WindowInfo {
|
|
38
|
+
windows: DesktopWindow[];
|
|
39
|
+
activeWindowId: string | null;
|
|
40
|
+
}
|
|
41
|
+
export interface DesktopUiElement {
|
|
42
|
+
index: number;
|
|
43
|
+
id?: string;
|
|
44
|
+
text?: string;
|
|
45
|
+
contentDescription?: string;
|
|
46
|
+
className: string;
|
|
47
|
+
role?: string;
|
|
48
|
+
bounds: Bounds;
|
|
49
|
+
clickable: boolean;
|
|
50
|
+
enabled: boolean;
|
|
51
|
+
focused: boolean;
|
|
52
|
+
focusable: boolean;
|
|
53
|
+
children: DesktopUiElement[];
|
|
54
|
+
centerX: number;
|
|
55
|
+
centerY: number;
|
|
56
|
+
}
|
|
57
|
+
export interface UiHierarchy {
|
|
58
|
+
windows: DesktopWindow[];
|
|
59
|
+
elements: DesktopUiElement[];
|
|
60
|
+
scaleFactor: number;
|
|
61
|
+
}
|
|
62
|
+
export interface ScreenshotOptions {
|
|
63
|
+
windowId?: string;
|
|
64
|
+
quality?: number;
|
|
65
|
+
}
|
|
66
|
+
export interface ScreenshotResult {
|
|
67
|
+
base64: string;
|
|
68
|
+
width: number;
|
|
69
|
+
height: number;
|
|
70
|
+
scaleFactor: number;
|
|
71
|
+
mimeType: "image/jpeg";
|
|
72
|
+
}
|
|
73
|
+
export interface TapOptions {
|
|
74
|
+
x: number;
|
|
75
|
+
y: number;
|
|
76
|
+
}
|
|
77
|
+
export interface SwipeOptions {
|
|
78
|
+
x1: number;
|
|
79
|
+
y1: number;
|
|
80
|
+
x2: number;
|
|
81
|
+
y2: number;
|
|
82
|
+
durationMs?: number;
|
|
83
|
+
}
|
|
84
|
+
export interface KeyEventOptions {
|
|
85
|
+
key: string;
|
|
86
|
+
modifiers?: string[];
|
|
87
|
+
}
|
|
88
|
+
export interface LaunchOptions {
|
|
89
|
+
projectPath?: string;
|
|
90
|
+
task?: string;
|
|
91
|
+
jvmArgs?: string[];
|
|
92
|
+
env?: Record<string, string>;
|
|
93
|
+
}
|
|
94
|
+
export interface GradleProject {
|
|
95
|
+
path: string;
|
|
96
|
+
desktopTasks: string[];
|
|
97
|
+
selectedTask?: string;
|
|
98
|
+
}
|
|
99
|
+
export type LogType = "stdout" | "stderr" | "compose" | "crash";
|
|
100
|
+
export interface LogEntry {
|
|
101
|
+
timestamp: number;
|
|
102
|
+
type: LogType;
|
|
103
|
+
message: string;
|
|
104
|
+
}
|
|
105
|
+
export interface LogOptions {
|
|
106
|
+
type?: LogType;
|
|
107
|
+
since?: number;
|
|
108
|
+
limit?: number;
|
|
109
|
+
}
|
|
110
|
+
export interface PerformanceMetrics {
|
|
111
|
+
fps?: number;
|
|
112
|
+
memoryUsageMb: number;
|
|
113
|
+
cpuPercent?: number;
|
|
114
|
+
}
|
|
115
|
+
export interface PermissionStatus {
|
|
116
|
+
granted: boolean;
|
|
117
|
+
instructions?: string[];
|
|
118
|
+
}
|
|
119
|
+
export type DesktopStatus = "stopped" | "starting" | "running" | "crashed";
|
|
120
|
+
export interface DesktopState {
|
|
121
|
+
status: DesktopStatus;
|
|
122
|
+
pid?: number;
|
|
123
|
+
projectPath?: string;
|
|
124
|
+
crashCount: number;
|
|
125
|
+
lastError?: string;
|
|
126
|
+
}
|
|
127
|
+
export interface ClipboardContent {
|
|
128
|
+
text?: string;
|
|
129
|
+
hasImage?: boolean;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/desktop/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/desktop/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/dist/device-manager.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { AdbClient } from "./adb/client.js";
|
|
2
2
|
import { IosClient } from "./ios/client.js";
|
|
3
|
+
import { DesktopClient } from "./desktop/client.js";
|
|
3
4
|
import { type CompressOptions } from "./utils/image.js";
|
|
4
|
-
|
|
5
|
+
import type { LaunchOptions } from "./desktop/types.js";
|
|
6
|
+
export type Platform = "android" | "ios" | "desktop";
|
|
5
7
|
export interface Device {
|
|
6
8
|
id: string;
|
|
7
9
|
name: string;
|
|
@@ -12,8 +14,37 @@ export interface Device {
|
|
|
12
14
|
export declare class DeviceManager {
|
|
13
15
|
private androidClient;
|
|
14
16
|
private iosClient;
|
|
17
|
+
private desktopClient;
|
|
15
18
|
private activeDevice?;
|
|
19
|
+
private activeTarget;
|
|
16
20
|
constructor();
|
|
21
|
+
/**
|
|
22
|
+
* Set active target platform
|
|
23
|
+
*/
|
|
24
|
+
setTarget(target: Platform): void;
|
|
25
|
+
/**
|
|
26
|
+
* Get active target and its status
|
|
27
|
+
*/
|
|
28
|
+
getTarget(): {
|
|
29
|
+
target: Platform;
|
|
30
|
+
status: string;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Launch desktop automation (and optionally a user's app via Gradle)
|
|
34
|
+
*/
|
|
35
|
+
launchDesktopApp(options: LaunchOptions): Promise<string>;
|
|
36
|
+
/**
|
|
37
|
+
* Stop desktop app
|
|
38
|
+
*/
|
|
39
|
+
stopDesktopApp(): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Get desktop client directly
|
|
42
|
+
*/
|
|
43
|
+
getDesktopClient(): DesktopClient;
|
|
44
|
+
/**
|
|
45
|
+
* Check if desktop app is running
|
|
46
|
+
*/
|
|
47
|
+
isDesktopRunning(): boolean;
|
|
17
48
|
/**
|
|
18
49
|
* Get all connected devices (Android + iOS)
|
|
19
50
|
*/
|
|
@@ -37,7 +68,7 @@ export declare class DeviceManager {
|
|
|
37
68
|
/**
|
|
38
69
|
* Get current platform
|
|
39
70
|
*/
|
|
40
|
-
getCurrentPlatform(): Platform
|
|
71
|
+
getCurrentPlatform(): Platform;
|
|
41
72
|
/**
|
|
42
73
|
* Take screenshot with optional compression
|
|
43
74
|
*/
|
|
@@ -52,27 +83,27 @@ export declare class DeviceManager {
|
|
|
52
83
|
/**
|
|
53
84
|
* Tap at coordinates
|
|
54
85
|
*/
|
|
55
|
-
tap(x: number, y: number, platform?: Platform): void
|
|
86
|
+
tap(x: number, y: number, platform?: Platform): Promise<void>;
|
|
56
87
|
/**
|
|
57
88
|
* Long press
|
|
58
89
|
*/
|
|
59
|
-
longPress(x: number, y: number, durationMs?: number, platform?: Platform): void
|
|
90
|
+
longPress(x: number, y: number, durationMs?: number, platform?: Platform): Promise<void>;
|
|
60
91
|
/**
|
|
61
92
|
* Swipe
|
|
62
93
|
*/
|
|
63
|
-
swipe(x1: number, y1: number, x2: number, y2: number, durationMs?: number, platform?: Platform): void
|
|
94
|
+
swipe(x1: number, y1: number, x2: number, y2: number, durationMs?: number, platform?: Platform): Promise<void>;
|
|
64
95
|
/**
|
|
65
96
|
* Swipe direction
|
|
66
97
|
*/
|
|
67
|
-
swipeDirection(direction: "up" | "down" | "left" | "right", platform?: Platform): void
|
|
98
|
+
swipeDirection(direction: "up" | "down" | "left" | "right", platform?: Platform): Promise<void>;
|
|
68
99
|
/**
|
|
69
100
|
* Input text
|
|
70
101
|
*/
|
|
71
|
-
inputText(text: string, platform?: Platform): void
|
|
102
|
+
inputText(text: string, platform?: Platform): Promise<void>;
|
|
72
103
|
/**
|
|
73
104
|
* Press key
|
|
74
105
|
*/
|
|
75
|
-
pressKey(key: string, platform?: Platform): void
|
|
106
|
+
pressKey(key: string, platform?: Platform): Promise<void>;
|
|
76
107
|
/**
|
|
77
108
|
* Launch app
|
|
78
109
|
*/
|
|
@@ -88,7 +119,7 @@ export declare class DeviceManager {
|
|
|
88
119
|
/**
|
|
89
120
|
* Get UI hierarchy
|
|
90
121
|
*/
|
|
91
|
-
getUiHierarchy(platform?: Platform): string
|
|
122
|
+
getUiHierarchy(platform?: Platform): Promise<string>;
|
|
92
123
|
/**
|
|
93
124
|
* Execute shell command
|
|
94
125
|
*/
|
|
@@ -118,6 +149,6 @@ export declare class DeviceManager {
|
|
|
118
149
|
/**
|
|
119
150
|
* Get system info (battery, memory, etc.)
|
|
120
151
|
*/
|
|
121
|
-
getSystemInfo(platform?: Platform): string
|
|
152
|
+
getSystemInfo(platform?: Platform): Promise<string>;
|
|
122
153
|
}
|
|
123
154
|
//# sourceMappingURL=device-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-manager.d.ts","sourceRoot":"","sources":["../src/device-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"device-manager.d.ts","sourceRoot":"","sources":["../src/device-manager.ts"],"names":[],"mappings":"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"}
|