appium-mcp 1.71.0 → 1.71.2
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/CHANGELOG.md +12 -0
- package/dist/command.d.ts.map +1 -1
- package/dist/command.js +14 -1
- package/dist/command.js.map +1 -1
- package/dist/devicemanager/adb-manager.d.ts +6 -6
- package/dist/devicemanager/adb-manager.d.ts.map +1 -1
- package/dist/devicemanager/adb-manager.js +15 -15
- package/dist/devicemanager/adb-manager.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/scripts/simple-index-documentation.js +1 -1
- package/dist/scripts/simple-index-documentation.js.map +1 -1
- package/dist/scripts/simple-query-documentation.js +1 -1
- package/dist/scripts/simple-query-documentation.js.map +1 -1
- package/dist/session-store.d.ts +16 -0
- package/dist/session-store.d.ts.map +1 -1
- package/dist/session-store.js +7 -3
- package/dist/session-store.js.map +1 -1
- package/dist/tests/session-store.test.js +0 -19
- package/dist/tests/session-store.test.js.map +1 -1
- package/dist/tests/test-setup-wda.js +1 -1
- package/dist/tests/test-setup-wda.js.map +1 -1
- package/dist/tools/documentation/reasoning-rag.d.ts +16 -16
- package/dist/tools/documentation/reasoning-rag.d.ts.map +1 -1
- package/dist/tools/documentation/reasoning-rag.js +100 -100
- package/dist/tools/documentation/reasoning-rag.js.map +1 -1
- package/dist/tools/documentation/sentence-transformers-embeddings.d.ts +8 -8
- package/dist/tools/documentation/sentence-transformers-embeddings.d.ts.map +1 -1
- package/dist/tools/documentation/sentence-transformers-embeddings.js +36 -36
- package/dist/tools/documentation/sentence-transformers-embeddings.js.map +1 -1
- package/dist/tools/interactions/keyboard.d.ts.map +1 -1
- package/dist/tools/interactions/keyboard.js +19 -19
- package/dist/tools/interactions/keyboard.js.map +1 -1
- package/dist/tools/session/attach-session.d.ts.map +1 -1
- package/dist/tools/session/attach-session.js +19 -19
- package/dist/tools/session/attach-session.js.map +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
- package/src/command.ts +30 -0
- package/src/devicemanager/adb-manager.ts +18 -18
- package/src/index.ts +1 -1
- package/src/resources/submodules.zip +0 -0
- package/src/scripts/simple-index-documentation.ts +1 -1
- package/src/scripts/simple-query-documentation.ts +1 -1
- package/src/session-store.ts +8 -4
- package/src/tools/documentation/reasoning-rag.ts +153 -153
- package/src/tools/documentation/sentence-transformers-embeddings.ts +50 -50
- package/src/tools/interactions/keyboard.ts +26 -26
- package/src/tools/session/attach-session.ts +23 -23
|
@@ -15,7 +15,106 @@ export class ReasoningRAG {
|
|
|
15
15
|
models = new Map();
|
|
16
16
|
isInitialized = false;
|
|
17
17
|
constructor() {
|
|
18
|
-
this.initializeTransformers();
|
|
18
|
+
void this.initializeTransformers();
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Enhanced RAG query with reasoning capabilities
|
|
22
|
+
*/
|
|
23
|
+
async queryWithReasoning(query, options = {}) {
|
|
24
|
+
const { topK = 50, reasoningTasks = ['summarization', 'question-answering'], customConfigs, } = options;
|
|
25
|
+
try {
|
|
26
|
+
log.info(`Starting reasoning-enhanced RAG query: "${query}"`);
|
|
27
|
+
// Step 1: Retrieve relevant chunks using existing RAG
|
|
28
|
+
log.info(`Retrieving top ${topK} relevant chunks...`);
|
|
29
|
+
const retrievedChunks = await queryVectorStore(query, topK);
|
|
30
|
+
if (!retrievedChunks || retrievedChunks.length === 0) {
|
|
31
|
+
return {
|
|
32
|
+
query,
|
|
33
|
+
retrievedChunks: [],
|
|
34
|
+
reasoningResults: [],
|
|
35
|
+
summary: 'No relevant information found in the documentation.',
|
|
36
|
+
answer: 'No relevant information found to answer your query.',
|
|
37
|
+
sources: [],
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
log.info(`Retrieved ${retrievedChunks.length} chunks for reasoning`);
|
|
41
|
+
// Step 2: Configure reasoning models
|
|
42
|
+
const configs = customConfigs || [
|
|
43
|
+
// Summarization using T5
|
|
44
|
+
{
|
|
45
|
+
task: 'summarization',
|
|
46
|
+
modelName: 'Xenova/t5-small',
|
|
47
|
+
maxLength: 150,
|
|
48
|
+
minLength: 30,
|
|
49
|
+
},
|
|
50
|
+
// Question answering using DistilBERT
|
|
51
|
+
{
|
|
52
|
+
task: 'question-answering',
|
|
53
|
+
modelName: 'Xenova/distilbert-base-cased-distilled-squad',
|
|
54
|
+
},
|
|
55
|
+
];
|
|
56
|
+
// Filter configs based on requested tasks
|
|
57
|
+
const filteredConfigs = configs.filter((config) => reasoningTasks.includes(config.task));
|
|
58
|
+
// Step 3: Perform reasoning on retrieved chunks
|
|
59
|
+
log.info(`Performing reasoning with ${filteredConfigs.length} different models...`);
|
|
60
|
+
const reasoningResults = await this.processChunksWithReasoning(retrievedChunks, filteredConfigs, query);
|
|
61
|
+
// Step 4: Generate comprehensive summary
|
|
62
|
+
log.info('Generating comprehensive summary...');
|
|
63
|
+
const summary = await this.generateComprehensiveSummary(reasoningResults, query);
|
|
64
|
+
// Step 5: Extract best answer from reasoning results
|
|
65
|
+
const qaResults = reasoningResults.filter((result) => result.metadata.task === 'question-answering' &&
|
|
66
|
+
!result.metadata.error);
|
|
67
|
+
const bestAnswer = qaResults.length > 0
|
|
68
|
+
? qaResults.sort((a, b) => (b.confidence || 0) - (a.confidence || 0))[0].reasoningOutput
|
|
69
|
+
: summary;
|
|
70
|
+
// Step 6: Extract sources
|
|
71
|
+
const sources = retrievedChunks
|
|
72
|
+
.map((doc) => doc.metadata?.relativePath ||
|
|
73
|
+
doc.metadata?.filename ||
|
|
74
|
+
doc.metadata?.source)
|
|
75
|
+
.filter((source, index, arr) => source && arr.indexOf(source) === index);
|
|
76
|
+
log.info(`Reasoning-enhanced RAG completed. Generated ${reasoningResults.length} reasoning results from ${sources.length} sources`);
|
|
77
|
+
return {
|
|
78
|
+
query,
|
|
79
|
+
retrievedChunks,
|
|
80
|
+
reasoningResults,
|
|
81
|
+
summary,
|
|
82
|
+
answer: bestAnswer,
|
|
83
|
+
sources,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
log.error('Error in reasoning-enhanced RAG:', error);
|
|
88
|
+
throw new Error(`Reasoning-enhanced RAG failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Get available reasoning models and their capabilities
|
|
93
|
+
*/
|
|
94
|
+
getAvailableModels() {
|
|
95
|
+
return {
|
|
96
|
+
summarization: [
|
|
97
|
+
'Xenova/t5-small',
|
|
98
|
+
'Xenova/t5-base',
|
|
99
|
+
'Xenova/bart-large-cnn',
|
|
100
|
+
],
|
|
101
|
+
'question-answering': [
|
|
102
|
+
'Xenova/distilbert-base-cased-distilled-squad',
|
|
103
|
+
'Xenova/roberta-base-squad2',
|
|
104
|
+
],
|
|
105
|
+
analysis: ['Xenova/gpt2', 'Xenova/distilgpt2'],
|
|
106
|
+
classification: [
|
|
107
|
+
'Xenova/distilbert-base-uncased-finetuned-sst-2-english',
|
|
108
|
+
'Xenova/bert-base-uncased',
|
|
109
|
+
],
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Clean up resources
|
|
114
|
+
*/
|
|
115
|
+
async cleanup() {
|
|
116
|
+
this.models.clear();
|
|
117
|
+
log.info('Reasoning RAG resources cleaned up');
|
|
19
118
|
}
|
|
20
119
|
/**
|
|
21
120
|
* Initialize the transformers library dynamically
|
|
@@ -177,105 +276,6 @@ export class ReasoningRAG {
|
|
|
177
276
|
}
|
|
178
277
|
return comprehensiveSummary;
|
|
179
278
|
}
|
|
180
|
-
/**
|
|
181
|
-
* Enhanced RAG query with reasoning capabilities
|
|
182
|
-
*/
|
|
183
|
-
async queryWithReasoning(query, options = {}) {
|
|
184
|
-
const { topK = 50, reasoningTasks = ['summarization', 'question-answering'], customConfigs, } = options;
|
|
185
|
-
try {
|
|
186
|
-
log.info(`Starting reasoning-enhanced RAG query: "${query}"`);
|
|
187
|
-
// Step 1: Retrieve relevant chunks using existing RAG
|
|
188
|
-
log.info(`Retrieving top ${topK} relevant chunks...`);
|
|
189
|
-
const retrievedChunks = await queryVectorStore(query, topK);
|
|
190
|
-
if (!retrievedChunks || retrievedChunks.length === 0) {
|
|
191
|
-
return {
|
|
192
|
-
query,
|
|
193
|
-
retrievedChunks: [],
|
|
194
|
-
reasoningResults: [],
|
|
195
|
-
summary: 'No relevant information found in the documentation.',
|
|
196
|
-
answer: 'No relevant information found to answer your query.',
|
|
197
|
-
sources: [],
|
|
198
|
-
};
|
|
199
|
-
}
|
|
200
|
-
log.info(`Retrieved ${retrievedChunks.length} chunks for reasoning`);
|
|
201
|
-
// Step 2: Configure reasoning models
|
|
202
|
-
const configs = customConfigs || [
|
|
203
|
-
// Summarization using T5
|
|
204
|
-
{
|
|
205
|
-
task: 'summarization',
|
|
206
|
-
modelName: 'Xenova/t5-small',
|
|
207
|
-
maxLength: 150,
|
|
208
|
-
minLength: 30,
|
|
209
|
-
},
|
|
210
|
-
// Question answering using DistilBERT
|
|
211
|
-
{
|
|
212
|
-
task: 'question-answering',
|
|
213
|
-
modelName: 'Xenova/distilbert-base-cased-distilled-squad',
|
|
214
|
-
},
|
|
215
|
-
];
|
|
216
|
-
// Filter configs based on requested tasks
|
|
217
|
-
const filteredConfigs = configs.filter((config) => reasoningTasks.includes(config.task));
|
|
218
|
-
// Step 3: Perform reasoning on retrieved chunks
|
|
219
|
-
log.info(`Performing reasoning with ${filteredConfigs.length} different models...`);
|
|
220
|
-
const reasoningResults = await this.processChunksWithReasoning(retrievedChunks, filteredConfigs, query);
|
|
221
|
-
// Step 4: Generate comprehensive summary
|
|
222
|
-
log.info('Generating comprehensive summary...');
|
|
223
|
-
const summary = await this.generateComprehensiveSummary(reasoningResults, query);
|
|
224
|
-
// Step 5: Extract best answer from reasoning results
|
|
225
|
-
const qaResults = reasoningResults.filter((result) => result.metadata.task === 'question-answering' &&
|
|
226
|
-
!result.metadata.error);
|
|
227
|
-
const bestAnswer = qaResults.length > 0
|
|
228
|
-
? qaResults.sort((a, b) => (b.confidence || 0) - (a.confidence || 0))[0].reasoningOutput
|
|
229
|
-
: summary;
|
|
230
|
-
// Step 6: Extract sources
|
|
231
|
-
const sources = retrievedChunks
|
|
232
|
-
.map((doc) => doc.metadata?.relativePath ||
|
|
233
|
-
doc.metadata?.filename ||
|
|
234
|
-
doc.metadata?.source)
|
|
235
|
-
.filter((source, index, arr) => source && arr.indexOf(source) === index);
|
|
236
|
-
log.info(`Reasoning-enhanced RAG completed. Generated ${reasoningResults.length} reasoning results from ${sources.length} sources`);
|
|
237
|
-
return {
|
|
238
|
-
query,
|
|
239
|
-
retrievedChunks,
|
|
240
|
-
reasoningResults,
|
|
241
|
-
summary,
|
|
242
|
-
answer: bestAnswer,
|
|
243
|
-
sources,
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
|
-
catch (error) {
|
|
247
|
-
log.error('Error in reasoning-enhanced RAG:', error);
|
|
248
|
-
throw new Error(`Reasoning-enhanced RAG failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
/**
|
|
252
|
-
* Get available reasoning models and their capabilities
|
|
253
|
-
*/
|
|
254
|
-
getAvailableModels() {
|
|
255
|
-
return {
|
|
256
|
-
summarization: [
|
|
257
|
-
'Xenova/t5-small',
|
|
258
|
-
'Xenova/t5-base',
|
|
259
|
-
'Xenova/bart-large-cnn',
|
|
260
|
-
],
|
|
261
|
-
'question-answering': [
|
|
262
|
-
'Xenova/distilbert-base-cased-distilled-squad',
|
|
263
|
-
'Xenova/roberta-base-squad2',
|
|
264
|
-
],
|
|
265
|
-
analysis: ['Xenova/gpt2', 'Xenova/distilgpt2'],
|
|
266
|
-
classification: [
|
|
267
|
-
'Xenova/distilbert-base-uncased-finetuned-sst-2-english',
|
|
268
|
-
'Xenova/bert-base-uncased',
|
|
269
|
-
],
|
|
270
|
-
};
|
|
271
|
-
}
|
|
272
|
-
/**
|
|
273
|
-
* Clean up resources
|
|
274
|
-
*/
|
|
275
|
-
async cleanup() {
|
|
276
|
-
this.models.clear();
|
|
277
|
-
log.info('Reasoning RAG resources cleaned up');
|
|
278
|
-
}
|
|
279
279
|
}
|
|
280
280
|
// Export a singleton instance
|
|
281
281
|
export const reasoningRAG = new ReasoningRAG();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reasoning-rag.js","sourceRoot":"","sources":["../../../src/tools/documentation/reasoning-rag.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,GAAG,MAAM,iBAAiB,CAAC;AA2ClC;;GAEG;AACH,MAAM,OAAO,YAAY;IACf,YAAY,GAAQ,IAAI,CAAC;IACzB,MAAM,GAAqB,IAAI,GAAG,EAAE,CAAC;IACrC,aAAa,GAAY,KAAK,CAAC;IAEvC;QACE,IAAI,CAAC,sBAAsB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"reasoning-rag.js","sourceRoot":"","sources":["../../../src/tools/documentation/reasoning-rag.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,14 +15,6 @@ export declare class SentenceTransformersEmbeddings {
|
|
|
15
15
|
constructor(options?: {
|
|
16
16
|
modelName?: string;
|
|
17
17
|
});
|
|
18
|
-
/**
|
|
19
|
-
* Initialize the transformers library dynamically
|
|
20
|
-
*/
|
|
21
|
-
private initializeTransformers;
|
|
22
|
-
/**
|
|
23
|
-
* Initialize the model lazily
|
|
24
|
-
*/
|
|
25
|
-
private initializeModel;
|
|
26
18
|
/**
|
|
27
19
|
* Generate embeddings for a single text (LangChain interface)
|
|
28
20
|
*/
|
|
@@ -31,5 +23,13 @@ export declare class SentenceTransformersEmbeddings {
|
|
|
31
23
|
* Generate embeddings for multiple texts (LangChain interface)
|
|
32
24
|
*/
|
|
33
25
|
embedDocuments(texts: string[]): Promise<number[][]>;
|
|
26
|
+
/**
|
|
27
|
+
* Initialize the transformers library dynamically
|
|
28
|
+
*/
|
|
29
|
+
private initializeTransformers;
|
|
30
|
+
/**
|
|
31
|
+
* Initialize the model lazily
|
|
32
|
+
*/
|
|
33
|
+
private initializeModel;
|
|
34
34
|
}
|
|
35
35
|
//# sourceMappingURL=sentence-transformers-embeddings.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sentence-transformers-embeddings.d.ts","sourceRoot":"","sources":["../../../src/tools/documentation/sentence-transformers-embeddings.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,qBAAa,8BAA8B;IACzC,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,YAAY,CAAa;gBAErB,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO;IAKhD;;OAEG;
|
|
1
|
+
{"version":3,"file":"sentence-transformers-embeddings.d.ts","sourceRoot":"","sources":["../../../src/tools/documentation/sentence-transformers-embeddings.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,qBAAa,8BAA8B;IACzC,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,YAAY,CAAa;gBAErB,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO;IAKhD;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAwBjD;;OAEG;IACG,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAyC1D;;OAEG;YACW,sBAAsB;IAmBpC;;OAEG;YACW,eAAe;CAwB9B"}
|
|
@@ -17,42 +17,6 @@ export class SentenceTransformersEmbeddings {
|
|
|
17
17
|
// Use a lightweight, fast model by default
|
|
18
18
|
this.modelName = options.modelName || 'Xenova/all-MiniLM-L6-v2';
|
|
19
19
|
}
|
|
20
|
-
/**
|
|
21
|
-
* Initialize the transformers library dynamically
|
|
22
|
-
*/
|
|
23
|
-
async initializeTransformers() {
|
|
24
|
-
if (this.transformers) {
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
try {
|
|
28
|
-
// Use eval to avoid CommonJS/ESM conflict during compilation
|
|
29
|
-
const importTransformers = new Function('return import("@xenova/transformers")');
|
|
30
|
-
this.transformers = await importTransformers();
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
33
|
-
log.error('Error importing @xenova/transformers:', error);
|
|
34
|
-
throw new Error(`Failed to import @xenova/transformers: ${error instanceof Error ? error.message : String(error)}`);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Initialize the model lazily
|
|
39
|
-
*/
|
|
40
|
-
async initializeModel() {
|
|
41
|
-
if (this.isInitialized && this.model) {
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
await this.initializeTransformers();
|
|
45
|
-
log.info(`Initializing sentence-transformers model: ${this.modelName}`);
|
|
46
|
-
try {
|
|
47
|
-
this.model = await this.transformers.pipeline('feature-extraction', this.modelName);
|
|
48
|
-
this.isInitialized = true;
|
|
49
|
-
log.info(`Successfully initialized sentence-transformers model: ${this.modelName}`);
|
|
50
|
-
}
|
|
51
|
-
catch (error) {
|
|
52
|
-
log.error('Error initializing sentence-transformers model:', error);
|
|
53
|
-
throw new Error(`Failed to initialize sentence-transformers model: ${error instanceof Error ? error.message : String(error)}`);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
20
|
/**
|
|
57
21
|
* Generate embeddings for a single text (LangChain interface)
|
|
58
22
|
*/
|
|
@@ -109,5 +73,41 @@ export class SentenceTransformersEmbeddings {
|
|
|
109
73
|
throw new Error(`Failed to generate document embeddings: ${error instanceof Error ? error.message : String(error)}`);
|
|
110
74
|
}
|
|
111
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Initialize the transformers library dynamically
|
|
78
|
+
*/
|
|
79
|
+
async initializeTransformers() {
|
|
80
|
+
if (this.transformers) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
try {
|
|
84
|
+
// Use eval to avoid CommonJS/ESM conflict during compilation
|
|
85
|
+
const importTransformers = new Function('return import("@xenova/transformers")');
|
|
86
|
+
this.transformers = await importTransformers();
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
log.error('Error importing @xenova/transformers:', error);
|
|
90
|
+
throw new Error(`Failed to import @xenova/transformers: ${error instanceof Error ? error.message : String(error)}`);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Initialize the model lazily
|
|
95
|
+
*/
|
|
96
|
+
async initializeModel() {
|
|
97
|
+
if (this.isInitialized && this.model) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
await this.initializeTransformers();
|
|
101
|
+
log.info(`Initializing sentence-transformers model: ${this.modelName}`);
|
|
102
|
+
try {
|
|
103
|
+
this.model = await this.transformers.pipeline('feature-extraction', this.modelName);
|
|
104
|
+
this.isInitialized = true;
|
|
105
|
+
log.info(`Successfully initialized sentence-transformers model: ${this.modelName}`);
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
log.error('Error initializing sentence-transformers model:', error);
|
|
109
|
+
throw new Error(`Failed to initialize sentence-transformers model: ${error instanceof Error ? error.message : String(error)}`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
112
|
}
|
|
113
113
|
//# sourceMappingURL=sentence-transformers-embeddings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sentence-transformers-embeddings.js","sourceRoot":"","sources":["../../../src/tools/documentation/sentence-transformers-embeddings.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,GAAG,MAAM,iBAAiB,CAAC;AAElC;;GAEG;AACH,MAAM,OAAO,8BAA8B;IACjC,KAAK,GAAQ,IAAI,CAAC;IAClB,SAAS,CAAS;IAClB,aAAa,GAAY,KAAK,CAAC;IAC/B,YAAY,GAAQ,IAAI,CAAC;IAEjC,YAAY,UAAkC,EAAE;QAC9C,2CAA2C;QAC3C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,yBAAyB,CAAC;IAClE,CAAC;IAED;;OAEG;
|
|
1
|
+
{"version":3,"file":"sentence-transformers-embeddings.js","sourceRoot":"","sources":["../../../src/tools/documentation/sentence-transformers-embeddings.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../../../src/tools/interactions/keyboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../../../src/tools/interactions/keyboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,OAAO,EAAE,MAAM,SAAS,CAAC;AAgCtD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAiCtD"}
|
|
@@ -16,25 +16,6 @@ const schema = z.object({
|
|
|
16
16
|
.optional()
|
|
17
17
|
.describe('Session ID to target. If omitted, uses the active session.'),
|
|
18
18
|
});
|
|
19
|
-
async function handleHide(sessionId, keys) {
|
|
20
|
-
const resolved = resolveDriver(sessionId);
|
|
21
|
-
if (!resolved.ok) {
|
|
22
|
-
return resolved.result;
|
|
23
|
-
}
|
|
24
|
-
const { driver } = resolved;
|
|
25
|
-
const params = keys && keys.length > 0 ? { keys } : {};
|
|
26
|
-
await execute(driver, 'mobile: hideKeyboard', params);
|
|
27
|
-
return textResult('Keyboard dismissed successfully.');
|
|
28
|
-
}
|
|
29
|
-
async function handleIsShown(sessionId) {
|
|
30
|
-
const resolved = resolveDriver(sessionId);
|
|
31
|
-
if (!resolved.ok) {
|
|
32
|
-
return resolved.result;
|
|
33
|
-
}
|
|
34
|
-
const { driver } = resolved;
|
|
35
|
-
const keyboardShown = await execute(driver, 'mobile: isKeyboardShown', {});
|
|
36
|
-
return textResult(JSON.stringify({ keyboardShown }, null, 2));
|
|
37
|
-
}
|
|
38
19
|
export default function keyboard(server) {
|
|
39
20
|
server.addTool({
|
|
40
21
|
name: 'appium_mobile_keyboard',
|
|
@@ -64,4 +45,23 @@ export default function keyboard(server) {
|
|
|
64
45
|
},
|
|
65
46
|
});
|
|
66
47
|
}
|
|
48
|
+
async function handleHide(sessionId, keys) {
|
|
49
|
+
const resolved = resolveDriver(sessionId);
|
|
50
|
+
if (!resolved.ok) {
|
|
51
|
+
return resolved.result;
|
|
52
|
+
}
|
|
53
|
+
const { driver } = resolved;
|
|
54
|
+
const params = keys && keys.length > 0 ? { keys } : {};
|
|
55
|
+
await execute(driver, 'mobile: hideKeyboard', params);
|
|
56
|
+
return textResult('Keyboard dismissed successfully.');
|
|
57
|
+
}
|
|
58
|
+
async function handleIsShown(sessionId) {
|
|
59
|
+
const resolved = resolveDriver(sessionId);
|
|
60
|
+
if (!resolved.ok) {
|
|
61
|
+
return resolved.result;
|
|
62
|
+
}
|
|
63
|
+
const { driver } = resolved;
|
|
64
|
+
const keyboardShown = await execute(driver, 'mobile: isKeyboardShown', {});
|
|
65
|
+
return textResult(JSON.stringify({ keyboardShown }, null, 2));
|
|
66
|
+
}
|
|
67
67
|
//# sourceMappingURL=keyboard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../../../src/tools/interactions/keyboard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EACL,aAAa,EACb,UAAU,EACV,WAAW,EACX,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;SAC1B,QAAQ,CACP,8DAA8D;QAC5D,sEAAsE,CACzE;IACH,IAAI,EAAE,CAAC;SACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CACP,uEAAuE;QACrE,yEAAyE,CAC5E;IACH,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,4DAA4D,CAAC;CAC1E,CAAC,CAAC;AAIH,
|
|
1
|
+
{"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../../../src/tools/interactions/keyboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attach-session.d.ts","sourceRoot":"","sources":["../../../src/tools/session/attach-session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"attach-session.d.ts","sourceRoot":"","sources":["../../../src/tools/session/attach-session.ts"],"names":[],"mappings":"AAwCA;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC9C,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACpC,GAAG,OAAO,CAAC,GAAG,CAAC,CAgFf"}
|
|
@@ -26,25 +26,6 @@ const METADATA_FIELDS = [
|
|
|
26
26
|
['automationName', 'appium:automationName', 'appium:automationName'],
|
|
27
27
|
['deviceName', 'appium:deviceName', 'appium:deviceName'],
|
|
28
28
|
];
|
|
29
|
-
/**
|
|
30
|
-
* Read capabilities from a WebdriverIO client method when available.
|
|
31
|
-
*
|
|
32
|
-
* @param client - Attached WebdriverIO client for the target Appium session.
|
|
33
|
-
* @param methodName - Capability reader to invoke on the client.
|
|
34
|
-
* @returns Parsed capabilities, or `undefined` when the method is missing or fails.
|
|
35
|
-
*/
|
|
36
|
-
async function readClientCapabilities(client, methodName) {
|
|
37
|
-
const method = client[methodName];
|
|
38
|
-
if (typeof method !== 'function') {
|
|
39
|
-
return undefined;
|
|
40
|
-
}
|
|
41
|
-
try {
|
|
42
|
-
return readCapabilities(await method.call(client));
|
|
43
|
-
}
|
|
44
|
-
catch {
|
|
45
|
-
return undefined;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
29
|
/**
|
|
49
30
|
* Attach MCP Appium to an existing remote Appium session without taking
|
|
50
31
|
* ownership of the underlying session lifecycle.
|
|
@@ -108,4 +89,23 @@ export async function attachSessionAction(args) {
|
|
|
108
89
|
return errorResult(`Failed to attach session ${args.sessionId}. ${toolErrorMessage(err)}`);
|
|
109
90
|
}
|
|
110
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Read capabilities from a WebdriverIO client method when available.
|
|
94
|
+
*
|
|
95
|
+
* @param client - Attached WebdriverIO client for the target Appium session.
|
|
96
|
+
* @param methodName - Capability reader to invoke on the client.
|
|
97
|
+
* @returns Parsed capabilities, or `undefined` when the method is missing or fails.
|
|
98
|
+
*/
|
|
99
|
+
async function readClientCapabilities(client, methodName) {
|
|
100
|
+
const method = client[methodName];
|
|
101
|
+
if (typeof method !== 'function') {
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
try {
|
|
105
|
+
return readCapabilities(await method.call(client));
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
111
|
//# sourceMappingURL=attach-session.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attach-session.js","sourceRoot":"","sources":["../../../src/tools/session/attach-session.ts"],"names":[],"mappings":"AAAA,OAAO,SAA0B,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,UAAU,GAEX,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9E;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC;IAElD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,OAAO,MAA6B,CAAC;IACvC,CAAC;IAED,OAAO,MAA6B,CAAC;AACvC,CAAC;AAED,MAAM,eAAe,GAAG;IACtB,CAAC,cAAc,EAAE,qBAAqB,EAAE,cAAc,CAAC;IACvD,CAAC,gBAAgB,EAAE,uBAAuB,EAAE,uBAAuB,CAAC;IACpE,CAAC,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,CAAC;CAChD,CAAC;AAEX
|
|
1
|
+
{"version":3,"file":"attach-session.js","sourceRoot":"","sources":["../../../src/tools/session/attach-session.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/server.json
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
"name": "io.github.appium/appium-mcp",
|
|
4
4
|
"title": "MCP Appium - Mobile Development and Automation Server",
|
|
5
5
|
"description": "MCP server for Appium mobile automation on iOS and Android devices with test creation tools.",
|
|
6
|
-
"version": "1.71.
|
|
6
|
+
"version": "1.71.2",
|
|
7
7
|
"packages": [
|
|
8
8
|
{
|
|
9
9
|
"registryType": "npm",
|
|
10
10
|
"identifier": "appium-mcp",
|
|
11
|
-
"version": "1.71.
|
|
11
|
+
"version": "1.71.2",
|
|
12
12
|
"transport": {
|
|
13
13
|
"type": "stdio"
|
|
14
14
|
}
|
package/src/command.ts
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import type { Client } from 'webdriver';
|
|
2
2
|
import {
|
|
3
|
+
getPlatformName,
|
|
3
4
|
isAndroidUiautomator2DriverSession,
|
|
4
5
|
isRemoteDriverSession,
|
|
5
6
|
isXCUITestDriverSession,
|
|
7
|
+
PLATFORM,
|
|
8
|
+
getCurrentContext as getStorecCurrentContext,
|
|
9
|
+
getSessionInfo,
|
|
6
10
|
} from './session-store.js';
|
|
7
11
|
import type { DriverInstance } from './session-store.js';
|
|
8
12
|
import type { StringRecord, Element as AppiumElement } from '@appium/types';
|
|
13
|
+
import { util } from '@appium/support';
|
|
9
14
|
import type {
|
|
10
15
|
IOSRecordingOptions,
|
|
11
16
|
AndroidRecordingOptions,
|
|
12
17
|
} from './tools/interactions/screen-recording.js';
|
|
18
|
+
import log from './logger.js';
|
|
13
19
|
|
|
14
20
|
/**
|
|
15
21
|
* Execute a driver command.
|
|
@@ -235,6 +241,30 @@ export async function elementClick(
|
|
|
235
241
|
driver: DriverInstance,
|
|
236
242
|
elementUUID: string
|
|
237
243
|
): Promise<void> {
|
|
244
|
+
if (
|
|
245
|
+
getPlatformName(driver.sessionId) === PLATFORM.ios &&
|
|
246
|
+
getStorecCurrentContext(driver.sessionId as string | undefined)?.startsWith(
|
|
247
|
+
'WEBVIEW_'
|
|
248
|
+
)
|
|
249
|
+
) {
|
|
250
|
+
const caps = getSessionInfo(driver.sessionId);
|
|
251
|
+
const settings = await getSessionDriverSettings(driver);
|
|
252
|
+
// nativeWebTap === true means we should use the native tap (elementClick) even in webview context
|
|
253
|
+
if (
|
|
254
|
+
caps?.metadata?.capabilities?.['appium:nativeWebTap'] !== true ||
|
|
255
|
+
settings.nativeWebTap !== true
|
|
256
|
+
) {
|
|
257
|
+
log.debug(
|
|
258
|
+
`Using arguments[0].click() to click element ${elementUUID} in webview context (nativeWebTap not enabled)`
|
|
259
|
+
);
|
|
260
|
+
return await execute(
|
|
261
|
+
driver,
|
|
262
|
+
'arguments[0].click();',
|
|
263
|
+
util.wrapElement(elementUUID)
|
|
264
|
+
);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
238
268
|
if (isAndroidUiautomator2DriverSession(driver)) {
|
|
239
269
|
return await driver.click(elementUUID);
|
|
240
270
|
} else if (isXCUITestDriverSession(driver)) {
|