capacitor-mobile-claw 1.0.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/LICENSE +21 -0
- package/README.md +231 -0
- package/dist/esm/definitions.d.ts +226 -0
- package/dist/esm/definitions.d.ts.map +1 -0
- package/dist/esm/definitions.js +16 -0
- package/dist/esm/definitions.js.map +1 -0
- package/dist/esm/engine.d.ts +93 -0
- package/dist/esm/engine.d.ts.map +1 -0
- package/dist/esm/engine.js +332 -0
- package/dist/esm/engine.js.map +1 -0
- package/dist/esm/index.d.ts +24 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +25 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/mcp/mcp-server-manager.d.ts +33 -0
- package/dist/esm/mcp/mcp-server-manager.d.ts.map +1 -0
- package/dist/esm/mcp/mcp-server-manager.js +99 -0
- package/dist/esm/mcp/mcp-server-manager.js.map +1 -0
- package/dist/esm/mcp/server/device-mcp-server.d.ts +43 -0
- package/dist/esm/mcp/server/device-mcp-server.d.ts.map +1 -0
- package/dist/esm/mcp/server/device-mcp-server.js +52 -0
- package/dist/esm/mcp/server/device-mcp-server.js.map +1 -0
- package/dist/esm/mcp/tools/app-state.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/app-state.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/app-state.tools.js +22 -0
- package/dist/esm/mcp/tools/app-state.tools.js.map +1 -0
- package/dist/esm/mcp/tools/barcode.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/barcode.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/barcode.tools.js +29 -0
- package/dist/esm/mcp/tools/barcode.tools.js.map +1 -0
- package/dist/esm/mcp/tools/biometric.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/biometric.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/biometric.tools.js +33 -0
- package/dist/esm/mcp/tools/biometric.tools.js.map +1 -0
- package/dist/esm/mcp/tools/bluetooth.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/bluetooth.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/bluetooth.tools.js +95 -0
- package/dist/esm/mcp/tools/bluetooth.tools.js.map +1 -0
- package/dist/esm/mcp/tools/camera.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/camera.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/camera.tools.js +36 -0
- package/dist/esm/mcp/tools/camera.tools.js.map +1 -0
- package/dist/esm/mcp/tools/categories.d.ts +22 -0
- package/dist/esm/mcp/tools/categories.d.ts.map +1 -0
- package/dist/esm/mcp/tools/categories.js +242 -0
- package/dist/esm/mcp/tools/categories.js.map +1 -0
- package/dist/esm/mcp/tools/clipboard.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/clipboard.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/clipboard.tools.js +22 -0
- package/dist/esm/mcp/tools/clipboard.tools.js.map +1 -0
- package/dist/esm/mcp/tools/contacts.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/contacts.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/contacts.tools.js +58 -0
- package/dist/esm/mcp/tools/contacts.tools.js.map +1 -0
- package/dist/esm/mcp/tools/device-info.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/device-info.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/device-info.tools.js +39 -0
- package/dist/esm/mcp/tools/device-info.tools.js.map +1 -0
- package/dist/esm/mcp/tools/discovery.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/discovery.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/discovery.tools.js +41 -0
- package/dist/esm/mcp/tools/discovery.tools.js.map +1 -0
- package/dist/esm/mcp/tools/geolocation.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/geolocation.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/geolocation.tools.js +25 -0
- package/dist/esm/mcp/tools/geolocation.tools.js.map +1 -0
- package/dist/esm/mcp/tools/haptics.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/haptics.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/haptics.tools.js +41 -0
- package/dist/esm/mcp/tools/haptics.tools.js.map +1 -0
- package/dist/esm/mcp/tools/health.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/health.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/health.tools.js +38 -0
- package/dist/esm/mcp/tools/health.tools.js.map +1 -0
- package/dist/esm/mcp/tools/http.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/http.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/http.tools.js +24 -0
- package/dist/esm/mcp/tools/http.tools.js.map +1 -0
- package/dist/esm/mcp/tools/index.d.ts +10 -0
- package/dist/esm/mcp/tools/index.d.ts.map +1 -0
- package/dist/esm/mcp/tools/index.js +70 -0
- package/dist/esm/mcp/tools/index.js.map +1 -0
- package/dist/esm/mcp/tools/keep-awake.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/keep-awake.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/keep-awake.tools.js +23 -0
- package/dist/esm/mcp/tools/keep-awake.tools.js.map +1 -0
- package/dist/esm/mcp/tools/motion-sensors.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/motion-sensors.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/motion-sensors.tools.js +60 -0
- package/dist/esm/mcp/tools/motion-sensors.tools.js.map +1 -0
- package/dist/esm/mcp/tools/network-status.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/network-status.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/network-status.tools.js +16 -0
- package/dist/esm/mcp/tools/network-status.tools.js.map +1 -0
- package/dist/esm/mcp/tools/nfc.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/nfc.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/nfc.tools.js +52 -0
- package/dist/esm/mcp/tools/nfc.tools.js.map +1 -0
- package/dist/esm/mcp/tools/notifications.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/notifications.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/notifications.tools.js +30 -0
- package/dist/esm/mcp/tools/notifications.tools.js.map +1 -0
- package/dist/esm/mcp/tools/push-notifications.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/push-notifications.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/push-notifications.tools.js +43 -0
- package/dist/esm/mcp/tools/push-notifications.tools.js.map +1 -0
- package/dist/esm/mcp/tools/secure-storage.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/secure-storage.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/secure-storage.tools.js +31 -0
- package/dist/esm/mcp/tools/secure-storage.tools.js.map +1 -0
- package/dist/esm/mcp/tools/sftp.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/sftp.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/sftp.tools.js +41 -0
- package/dist/esm/mcp/tools/sftp.tools.js.map +1 -0
- package/dist/esm/mcp/tools/share.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/share.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/share.tools.js +18 -0
- package/dist/esm/mcp/tools/share.tools.js.map +1 -0
- package/dist/esm/mcp/tools/speech.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/speech.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/speech.tools.js +38 -0
- package/dist/esm/mcp/tools/speech.tools.js.map +1 -0
- package/dist/esm/mcp/tools/ssh.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/ssh.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/ssh.tools.js +41 -0
- package/dist/esm/mcp/tools/ssh.tools.js.map +1 -0
- package/dist/esm/mcp/tools/tcp.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/tcp.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/tcp.tools.js +47 -0
- package/dist/esm/mcp/tools/tcp.tools.js.map +1 -0
- package/dist/esm/mcp/tools/tts.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/tts.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/tts.tools.js +29 -0
- package/dist/esm/mcp/tools/tts.tools.js.map +1 -0
- package/dist/esm/mcp/tools/types.d.ts +18 -0
- package/dist/esm/mcp/tools/types.d.ts.map +1 -0
- package/dist/esm/mcp/tools/types.js +2 -0
- package/dist/esm/mcp/tools/types.js.map +1 -0
- package/dist/esm/mcp/tools/udp.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/udp.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/udp.tools.js +22 -0
- package/dist/esm/mcp/tools/udp.tools.js.map +1 -0
- package/dist/esm/mcp/tools/wol.tools.d.ts +3 -0
- package/dist/esm/mcp/tools/wol.tools.d.ts.map +1 -0
- package/dist/esm/mcp/tools/wol.tools.js +16 -0
- package/dist/esm/mcp/tools/wol.tools.js.map +1 -0
- package/dist/esm/mcp/transport/bridge-server-transport.d.ts +27 -0
- package/dist/esm/mcp/transport/bridge-server-transport.d.ts.map +1 -0
- package/dist/esm/mcp/transport/bridge-server-transport.js +72 -0
- package/dist/esm/mcp/transport/bridge-server-transport.js.map +1 -0
- package/dist/esm/mcp/transport/stomp-server-transport.d.ts +43 -0
- package/dist/esm/mcp/transport/stomp-server-transport.d.ts.map +1 -0
- package/dist/esm/mcp/transport/stomp-server-transport.js +128 -0
- package/dist/esm/mcp/transport/stomp-server-transport.js.map +1 -0
- package/dist/esm/mcp/transport/transport-manager.d.ts +38 -0
- package/dist/esm/mcp/transport/transport-manager.d.ts.map +1 -0
- package/dist/esm/mcp/transport/transport-manager.js +70 -0
- package/dist/esm/mcp/transport/transport-manager.js.map +1 -0
- package/dist/esm/plugin.d.ts +79 -0
- package/dist/esm/plugin.d.ts.map +1 -0
- package/dist/esm/plugin.js +81 -0
- package/dist/esm/plugin.js.map +1 -0
- package/dist/esm/services/bridge-protocol.d.ts +107 -0
- package/dist/esm/services/bridge-protocol.d.ts.map +1 -0
- package/dist/esm/services/bridge-protocol.js +6 -0
- package/dist/esm/services/bridge-protocol.js.map +1 -0
- package/nodejs-assets/nodejs-project/main.js +1971 -0
- package/nodejs-assets/nodejs-project/mcp-agent-tools.js +57 -0
- package/nodejs-assets/nodejs-project/mcp-bridge-client.js +98 -0
- package/nodejs-assets/nodejs-project/package-lock.json +3639 -0
- package/nodejs-assets/nodejs-project/package.json +18 -0
- package/package.json +80 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nfc.tools.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/nfc.tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,eAAO,MAAM,QAAQ,EAAE,UAAU,EAqDhC,CAAA"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export const nfcTools = [
|
|
2
|
+
{
|
|
3
|
+
name: 'nfc_read',
|
|
4
|
+
description: 'Read an NFC tag. Starts scanning and returns when a tag is detected. Returns NDEF records from the tag.',
|
|
5
|
+
inputSchema: { "type": "object", "properties": { "timeout": { "description": "Timeout in milliseconds (default 30000)", "type": "number" } }, "additionalProperties": false },
|
|
6
|
+
execute: async (args) => {
|
|
7
|
+
const { CapacitorNfc } = await import('@capgo/capacitor-nfc');
|
|
8
|
+
const timeoutMs = args.timeout ?? 30000;
|
|
9
|
+
return new Promise((resolve, reject) => {
|
|
10
|
+
const timeout = setTimeout(async () => {
|
|
11
|
+
await CapacitorNfc.stopScanning();
|
|
12
|
+
listener?.remove();
|
|
13
|
+
reject(new Error('NFC read timed out'));
|
|
14
|
+
}, timeoutMs);
|
|
15
|
+
let listener;
|
|
16
|
+
CapacitorNfc.addListener('nfcEvent', (event) => {
|
|
17
|
+
clearTimeout(timeout);
|
|
18
|
+
CapacitorNfc.stopScanning();
|
|
19
|
+
listener?.remove();
|
|
20
|
+
resolve({
|
|
21
|
+
tag: event,
|
|
22
|
+
});
|
|
23
|
+
}).then(h => { listener = h; });
|
|
24
|
+
CapacitorNfc.startScanning();
|
|
25
|
+
});
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'nfc_write',
|
|
30
|
+
description: 'Write an NDEF text record to an NFC tag. Place the tag near the device after calling.',
|
|
31
|
+
inputSchema: { "type": "object", "properties": { "text": { "type": "string", "description": "Text to write to the NFC tag" } }, "required": ["text"], "additionalProperties": false },
|
|
32
|
+
execute: async (args) => {
|
|
33
|
+
const { CapacitorNfc } = await import('@capgo/capacitor-nfc');
|
|
34
|
+
await CapacitorNfc.write({
|
|
35
|
+
records: [{ type: 'text', value: args.text }],
|
|
36
|
+
});
|
|
37
|
+
return { success: true };
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: 'nfc_is_supported',
|
|
42
|
+
description: 'Check if NFC is supported and enabled on this device.',
|
|
43
|
+
inputSchema: { "type": "object", "properties": {}, "additionalProperties": false },
|
|
44
|
+
execute: async () => {
|
|
45
|
+
const { CapacitorNfc } = await import('@capgo/capacitor-nfc');
|
|
46
|
+
const supported = await CapacitorNfc.isSupported();
|
|
47
|
+
const status = await CapacitorNfc.getStatus();
|
|
48
|
+
return { supported: supported.supported, status: status.status };
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
];
|
|
52
|
+
//# sourceMappingURL=nfc.tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nfc.tools.js","sourceRoot":"","sources":["../../../../src/mcp/tools/nfc.tools.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAiB;IACpC;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,yGAAyG;QACtH,WAAW,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,YAAY,EAAC,EAAC,SAAS,EAAC,EAAC,aAAa,EAAC,yCAAyC,EAAC,MAAM,EAAC,QAAQ,EAAC,EAAC,EAAC,sBAAsB,EAAC,KAAK,EAAC;QAC9J,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAA;YAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,IAAI,KAAK,CAAA;YAEvC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;oBACpC,MAAM,YAAY,CAAC,YAAY,EAAE,CAAA;oBACjC,QAAQ,EAAE,MAAM,EAAE,CAAA;oBAClB,MAAM,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAA;gBACzC,CAAC,EAAE,SAAS,CAAC,CAAA;gBAEb,IAAI,QAAa,CAAA;gBACjB,YAAY,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;oBAC7C,YAAY,CAAC,OAAO,CAAC,CAAA;oBACrB,YAAY,CAAC,YAAY,EAAE,CAAA;oBAC3B,QAAQ,EAAE,MAAM,EAAE,CAAA;oBAClB,OAAO,CAAC;wBACN,GAAG,EAAE,KAAK;qBACX,CAAC,CAAA;gBACJ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,GAAG,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;gBAE9B,YAAY,CAAC,aAAa,EAAE,CAAA;YAC9B,CAAC,CAAC,CAAA;QACJ,CAAC;KACF;IACD;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,uFAAuF;QACpG,WAAW,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,YAAY,EAAC,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,8BAA8B,EAAC,EAAC,EAAC,UAAU,EAAC,CAAC,MAAM,CAAC,EAAC,sBAAsB,EAAC,KAAK,EAAC;QACpK,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAA;YAC7D,MAAM,YAAY,CAAC,KAAK,CAAC;gBACvB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;aACvC,CAAC,CAAA;YACT,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QAC1B,CAAC;KACF;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,uDAAuD;QACpE,WAAW,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,YAAY,EAAC,EAAE,EAAC,sBAAsB,EAAC,KAAK,EAAC;QAC3E,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAA;YAC7D,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE,CAAA;YAClD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,CAAA;YAC7C,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAA;QAClE,CAAC;KACF;CACF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notifications.tools.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/notifications.tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,eAAO,MAAM,kBAAkB,EAAE,UAAU,EA2B1C,CAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { LocalNotifications } from '@capacitor/local-notifications';
|
|
2
|
+
export const notificationsTools = [
|
|
3
|
+
{
|
|
4
|
+
name: 'notification_schedule',
|
|
5
|
+
description: 'Schedule a local notification on the device. Appears in the notification tray after the specified delay.',
|
|
6
|
+
inputSchema: { "type": "object", "properties": { "title": { "type": "string", "description": "Notification title" }, "body": { "type": "string", "description": "Notification body text" }, "delay_seconds": { "description": "Delay in seconds before showing (default: 1)", "type": "number" }, "id": { "description": "Unique notification ID (default: random)", "type": "number" } }, "required": ["title", "body"], "additionalProperties": false },
|
|
7
|
+
execute: async (args) => {
|
|
8
|
+
const id = args.id || Math.floor(Math.random() * 100000);
|
|
9
|
+
await LocalNotifications.schedule({
|
|
10
|
+
notifications: [{
|
|
11
|
+
id,
|
|
12
|
+
title: args.title,
|
|
13
|
+
body: args.body,
|
|
14
|
+
schedule: { at: new Date(Date.now() + (args.delay_seconds || 1) * 1000) },
|
|
15
|
+
}],
|
|
16
|
+
});
|
|
17
|
+
return { success: true, id };
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: 'notification_cancel',
|
|
22
|
+
description: 'Cancel a previously scheduled local notification by its ID.',
|
|
23
|
+
inputSchema: { "type": "object", "properties": { "id": { "type": "number", "description": "Notification ID to cancel" } }, "required": ["id"], "additionalProperties": false },
|
|
24
|
+
execute: async (args) => {
|
|
25
|
+
await LocalNotifications.cancel({ notifications: [{ id: args.id }] });
|
|
26
|
+
return { success: true };
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
];
|
|
30
|
+
//# sourceMappingURL=notifications.tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notifications.tools.js","sourceRoot":"","sources":["../../../../src/mcp/tools/notifications.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAGnE,MAAM,CAAC,MAAM,kBAAkB,GAAiB;IAC9C;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,0GAA0G;QACvH,WAAW,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,YAAY,EAAC,EAAC,OAAO,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,oBAAoB,EAAC,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,wBAAwB,EAAC,EAAC,eAAe,EAAC,EAAC,aAAa,EAAC,8CAA8C,EAAC,MAAM,EAAC,QAAQ,EAAC,EAAC,IAAI,EAAC,EAAC,aAAa,EAAC,0CAA0C,EAAC,MAAM,EAAC,QAAQ,EAAC,EAAC,EAAC,UAAU,EAAC,CAAC,OAAO,EAAC,MAAM,CAAC,EAAC,sBAAsB,EAAC,KAAK,EAAC;QAClZ,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAA;YACxD,MAAM,kBAAkB,CAAC,QAAQ,CAAC;gBAChC,aAAa,EAAE,CAAC;wBACd,EAAE;wBACF,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE;qBAC1E,CAAC;aACH,CAAC,CAAA;YACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;QAC9B,CAAC;KACF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,6DAA6D;QAC1E,WAAW,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,YAAY,EAAC,EAAC,IAAI,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,2BAA2B,EAAC,EAAC,EAAC,UAAU,EAAC,CAAC,IAAI,CAAC,EAAC,sBAAsB,EAAC,KAAK,EAAC;QAC7J,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,kBAAkB,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;YACrE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QAC1B,CAAC;KACF;CACF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push-notifications.tools.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/push-notifications.tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,eAAO,MAAM,sBAAsB,EAAE,UAAU,EAyC9C,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export const pushNotificationsTools = [
|
|
2
|
+
{
|
|
3
|
+
name: 'push_get_token',
|
|
4
|
+
description: 'Register for push notifications and get the device push token (FCM on Android, APNs on iOS).',
|
|
5
|
+
inputSchema: { "type": "object", "properties": {}, "additionalProperties": false },
|
|
6
|
+
execute: async () => {
|
|
7
|
+
const { PushNotifications } = await import('@capacitor/push-notifications');
|
|
8
|
+
await PushNotifications.requestPermissions();
|
|
9
|
+
return new Promise((resolve, reject) => {
|
|
10
|
+
const timeout = setTimeout(() => {
|
|
11
|
+
reject(new Error('Push registration timed out'));
|
|
12
|
+
}, 10000);
|
|
13
|
+
PushNotifications.addListener('registration', (token) => {
|
|
14
|
+
clearTimeout(timeout);
|
|
15
|
+
resolve({ token: token.value });
|
|
16
|
+
});
|
|
17
|
+
PushNotifications.addListener('registrationError', (error) => {
|
|
18
|
+
clearTimeout(timeout);
|
|
19
|
+
reject(new Error(error.error));
|
|
20
|
+
});
|
|
21
|
+
PushNotifications.register();
|
|
22
|
+
});
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: 'push_get_delivered',
|
|
27
|
+
description: 'Get the list of push notifications delivered to the device notification tray.',
|
|
28
|
+
inputSchema: { "type": "object", "properties": {}, "additionalProperties": false },
|
|
29
|
+
execute: async () => {
|
|
30
|
+
const { PushNotifications } = await import('@capacitor/push-notifications');
|
|
31
|
+
const result = await PushNotifications.getDeliveredNotifications();
|
|
32
|
+
return {
|
|
33
|
+
notifications: result.notifications.map(n => ({
|
|
34
|
+
id: n.id,
|
|
35
|
+
title: n.title,
|
|
36
|
+
body: n.body,
|
|
37
|
+
data: n.data,
|
|
38
|
+
})),
|
|
39
|
+
};
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
];
|
|
43
|
+
//# sourceMappingURL=push-notifications.tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push-notifications.tools.js","sourceRoot":"","sources":["../../../../src/mcp/tools/push-notifications.tools.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,sBAAsB,GAAiB;IAClD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,8FAA8F;QAC3G,WAAW,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,YAAY,EAAC,EAAE,EAAC,sBAAsB,EAAC,KAAK,EAAC;QAC3E,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAA;YAC3E,MAAM,iBAAiB,CAAC,kBAAkB,EAAE,CAAA;YAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC9B,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAA;gBAClD,CAAC,EAAE,KAAK,CAAC,CAAA;gBACT,iBAAiB,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE;oBACtD,YAAY,CAAC,OAAO,CAAC,CAAA;oBACrB,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;gBACjC,CAAC,CAAC,CAAA;gBACF,iBAAiB,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;oBAC3D,YAAY,CAAC,OAAO,CAAC,CAAA;oBACrB,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;gBAChC,CAAC,CAAC,CAAA;gBACF,iBAAiB,CAAC,QAAQ,EAAE,CAAA;YAC9B,CAAC,CAAC,CAAA;QACJ,CAAC;KACF;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,+EAA+E;QAC5F,WAAW,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,YAAY,EAAC,EAAE,EAAC,sBAAsB,EAAC,KAAK,EAAC;QAC3E,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAA;YAC3E,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,yBAAyB,EAAE,CAAA;YAClE,OAAO;gBACL,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC5C,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;iBACb,CAAC,CAAC;aACJ,CAAA;QACH,CAAC;KACF;CACF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secure-storage.tools.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/secure-storage.tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,eAAO,MAAM,kBAAkB,EAAE,UAAU,EA4B1C,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { SecureStorage } from '@aparajita/capacitor-secure-storage';
|
|
2
|
+
export const secureStorageTools = [
|
|
3
|
+
{
|
|
4
|
+
name: 'secure_storage_get',
|
|
5
|
+
description: 'Read an encrypted value from device secure storage by key. Returns null if key does not exist.',
|
|
6
|
+
inputSchema: { "type": "object", "properties": { "key": { "type": "string", "description": "Storage key to read" } }, "required": ["key"], "additionalProperties": false },
|
|
7
|
+
execute: async (args) => {
|
|
8
|
+
const value = await SecureStorage.get(args.key);
|
|
9
|
+
return { key: args.key, value };
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
name: 'secure_storage_set',
|
|
14
|
+
description: 'Store an encrypted key-value pair in device secure storage (iOS Keychain / Android Keystore).',
|
|
15
|
+
inputSchema: { "type": "object", "properties": { "key": { "type": "string", "description": "Storage key" }, "value": { "type": "string", "description": "Value to store (encrypted at rest)" } }, "required": ["key", "value"], "additionalProperties": false },
|
|
16
|
+
execute: async (args) => {
|
|
17
|
+
await SecureStorage.set(args.key, args.value);
|
|
18
|
+
return { success: true };
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'secure_storage_remove',
|
|
23
|
+
description: 'Delete an encrypted key-value pair from device secure storage.',
|
|
24
|
+
inputSchema: { "type": "object", "properties": { "key": { "type": "string", "description": "Storage key to delete" } }, "required": ["key"], "additionalProperties": false },
|
|
25
|
+
execute: async (args) => {
|
|
26
|
+
const removed = await SecureStorage.remove(args.key);
|
|
27
|
+
return { success: removed };
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
//# sourceMappingURL=secure-storage.tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secure-storage.tools.js","sourceRoot":"","sources":["../../../../src/mcp/tools/secure-storage.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAA;AAGnE,MAAM,CAAC,MAAM,kBAAkB,GAAiB;IAC9C;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,gGAAgG;QAC7G,WAAW,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,YAAY,EAAC,EAAC,KAAK,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,qBAAqB,EAAC,EAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,sBAAsB,EAAC,KAAK,EAAC;QACzJ,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC/C,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAA;QACjC,CAAC;KACF;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,+FAA+F;QAC5G,WAAW,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,YAAY,EAAC,EAAC,KAAK,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,aAAa,EAAC,EAAC,OAAO,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,oCAAoC,EAAC,EAAC,EAAC,UAAU,EAAC,CAAC,KAAK,EAAC,OAAO,CAAC,EAAC,sBAAsB,EAAC,KAAK,EAAC;QACtO,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;YAC7C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QAC1B,CAAC;KACF;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,gEAAgE;QAC7E,WAAW,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,YAAY,EAAC,EAAC,KAAK,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,uBAAuB,EAAC,EAAC,EAAC,UAAU,EAAC,CAAC,KAAK,CAAC,EAAC,sBAAsB,EAAC,KAAK,EAAC;QAC3J,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACpD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;QAC7B,CAAC;KACF;CACF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sftp.tools.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/sftp.tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAGzC,eAAO,MAAM,SAAS,EAAE,UAAU,EAsCjC,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { NetworkTools } from 'capacitor-network-tools';
|
|
2
|
+
export const sftpTools = [
|
|
3
|
+
{
|
|
4
|
+
name: 'sftp_list',
|
|
5
|
+
description: 'List files and directories at a remote path over SFTP. Requires an active SSH session (use ssh_connect first).',
|
|
6
|
+
inputSchema: { "type": "object", "properties": { "sessionId": { "type": "string", "description": "SSH session ID from ssh_connect" }, "path": { "type": "string", "description": "Remote directory path to list (e.g. \"/var/log\", \"/home/admin\")" } }, "required": ["sessionId", "path"], "additionalProperties": false },
|
|
7
|
+
execute: async (args) => {
|
|
8
|
+
const result = await NetworkTools.sftpList({
|
|
9
|
+
sessionId: args.sessionId,
|
|
10
|
+
path: args.path,
|
|
11
|
+
});
|
|
12
|
+
return { files: result.files };
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
name: 'sftp_download',
|
|
17
|
+
description: 'Download a file from a remote device over SFTP. Returns base64-encoded file content. For large files, consider using ssh_exec with cat/head instead.',
|
|
18
|
+
inputSchema: { "type": "object", "properties": { "sessionId": { "type": "string", "description": "SSH session ID from ssh_connect" }, "remotePath": { "type": "string", "description": "Full remote file path (e.g. \"/etc/cups/cupsd.conf\")" } }, "required": ["sessionId", "remotePath"], "additionalProperties": false },
|
|
19
|
+
execute: async (args) => {
|
|
20
|
+
const result = await NetworkTools.sftpDownload({
|
|
21
|
+
sessionId: args.sessionId,
|
|
22
|
+
remotePath: args.remotePath,
|
|
23
|
+
});
|
|
24
|
+
return { data: result.data, encoding: 'base64' };
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: 'sftp_upload',
|
|
29
|
+
description: 'Upload a file to a remote device over SFTP. Provide file content as base64-encoded string.',
|
|
30
|
+
inputSchema: { "type": "object", "properties": { "sessionId": { "type": "string", "description": "SSH session ID from ssh_connect" }, "remotePath": { "type": "string", "description": "Full remote destination path" }, "data": { "type": "string", "description": "Base64-encoded file content" } }, "required": ["sessionId", "remotePath", "data"], "additionalProperties": false },
|
|
31
|
+
execute: async (args) => {
|
|
32
|
+
await NetworkTools.sftpUpload({
|
|
33
|
+
sessionId: args.sessionId,
|
|
34
|
+
remotePath: args.remotePath,
|
|
35
|
+
data: args.data,
|
|
36
|
+
});
|
|
37
|
+
return { success: true };
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
//# sourceMappingURL=sftp.tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sftp.tools.js","sourceRoot":"","sources":["../../../../src/mcp/tools/sftp.tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEtD,MAAM,CAAC,MAAM,SAAS,GAAiB;IACrC;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,gHAAgH;QAC7H,WAAW,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,YAAY,EAAC,EAAC,WAAW,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,iCAAiC,EAAC,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,oEAAoE,EAAC,EAAC,EAAC,UAAU,EAAC,CAAC,WAAW,EAAC,MAAM,CAAC,EAAC,sBAAsB,EAAC,KAAK,EAAC;QACpS,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC;gBACzC,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,CAAC,CAAA;YACF,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAA;QAChC,CAAC;KACF;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,sJAAsJ;QACnK,WAAW,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,YAAY,EAAC,EAAC,WAAW,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,iCAAiC,EAAC,EAAC,YAAY,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,uDAAuD,EAAC,EAAC,EAAC,UAAU,EAAC,CAAC,WAAW,EAAC,YAAY,CAAC,EAAC,sBAAsB,EAAC,KAAK,EAAC;QACnS,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC;gBAC7C,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC,CAAA;YACF,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;QAClD,CAAC;KACF;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,4FAA4F;QACzG,WAAW,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,YAAY,EAAC,EAAC,WAAW,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,iCAAiC,EAAC,EAAC,YAAY,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,8BAA8B,EAAC,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,6BAA6B,EAAC,EAAC,EAAC,UAAU,EAAC,CAAC,WAAW,EAAC,YAAY,EAAC,MAAM,CAAC,EAAC,sBAAsB,EAAC,KAAK,EAAC;QACtV,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,YAAY,CAAC,UAAU,CAAC;gBAC5B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,CAAC,CAAA;YACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QAC1B,CAAC;KACF;CACF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"share.tools.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/share.tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,eAAO,MAAM,UAAU,EAAE,UAAU,EAelC,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Share } from '@capacitor/share';
|
|
2
|
+
export const shareTools = [
|
|
3
|
+
{
|
|
4
|
+
name: 'share_content',
|
|
5
|
+
description: 'Open the native share sheet to share text and/or a URL with other apps on the device.',
|
|
6
|
+
inputSchema: { "type": "object", "properties": { "title": { "description": "Share dialog title", "type": "string" }, "text": { "description": "Text content to share", "type": "string" }, "url": { "description": "URL to share", "type": "string" } }, "additionalProperties": false },
|
|
7
|
+
execute: async (args) => {
|
|
8
|
+
const result = await Share.share({
|
|
9
|
+
title: args.title,
|
|
10
|
+
text: args.text,
|
|
11
|
+
url: args.url,
|
|
12
|
+
dialogTitle: args.title,
|
|
13
|
+
});
|
|
14
|
+
return { activityType: result.activityType || null };
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
];
|
|
18
|
+
//# sourceMappingURL=share.tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"share.tools.js","sourceRoot":"","sources":["../../../../src/mcp/tools/share.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAGxC,MAAM,CAAC,MAAM,UAAU,GAAiB;IACtC;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,uFAAuF;QACpG,WAAW,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,YAAY,EAAC,EAAC,OAAO,EAAC,EAAC,aAAa,EAAC,oBAAoB,EAAC,MAAM,EAAC,QAAQ,EAAC,EAAC,MAAM,EAAC,EAAC,aAAa,EAAC,uBAAuB,EAAC,MAAM,EAAC,QAAQ,EAAC,EAAC,KAAK,EAAC,EAAC,aAAa,EAAC,cAAc,EAAC,MAAM,EAAC,QAAQ,EAAC,EAAC,EAAC,sBAAsB,EAAC,KAAK,EAAC;QAC3P,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC;gBAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,WAAW,EAAE,IAAI,CAAC,KAAK;aACxB,CAAC,CAAA;YACF,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI,EAAE,CAAA;QACtD,CAAC;KACF;CACF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"speech.tools.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/speech.tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,eAAO,MAAM,WAAW,EAAE,UAAU,EAoCnC,CAAA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export const speechTools = [
|
|
2
|
+
{
|
|
3
|
+
name: 'speech_listen',
|
|
4
|
+
description: 'Listen for speech using the device microphone and convert to text. Returns matched text strings.',
|
|
5
|
+
inputSchema: { "type": "object", "properties": { "language": { "description": "BCP-47 language code (e.g. \"en-US\", \"es-ES\"). Default is device language.", "type": "string" }, "maxResults": { "description": "Maximum number of result alternatives (default 5)", "type": "number" }, "popup": { "description": "Show a native listening popup (default true, Android only)", "type": "boolean" } }, "additionalProperties": false },
|
|
6
|
+
execute: async (args) => {
|
|
7
|
+
const { SpeechRecognition } = await import('@capacitor-community/speech-recognition');
|
|
8
|
+
await SpeechRecognition.requestPermissions();
|
|
9
|
+
const result = await SpeechRecognition.start({
|
|
10
|
+
language: args.language,
|
|
11
|
+
maxResults: args.maxResults ?? 5,
|
|
12
|
+
popup: args.popup ?? true,
|
|
13
|
+
});
|
|
14
|
+
return { matches: result.matches ?? [] };
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: 'speech_is_available',
|
|
19
|
+
description: 'Check if speech recognition is available on this device.',
|
|
20
|
+
inputSchema: { "type": "object", "properties": {}, "additionalProperties": false },
|
|
21
|
+
execute: async () => {
|
|
22
|
+
const { SpeechRecognition } = await import('@capacitor-community/speech-recognition');
|
|
23
|
+
const result = await SpeechRecognition.available();
|
|
24
|
+
return { available: result.available };
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: 'speech_get_languages',
|
|
29
|
+
description: 'Get the list of supported languages for speech recognition.',
|
|
30
|
+
inputSchema: { "type": "object", "properties": {}, "additionalProperties": false },
|
|
31
|
+
execute: async () => {
|
|
32
|
+
const { SpeechRecognition } = await import('@capacitor-community/speech-recognition');
|
|
33
|
+
const result = await SpeechRecognition.getSupportedLanguages();
|
|
34
|
+
return { languages: result.languages };
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
//# sourceMappingURL=speech.tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"speech.tools.js","sourceRoot":"","sources":["../../../../src/mcp/tools/speech.tools.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAiB;IACvC;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,kGAAkG;QAC/G,WAAW,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,YAAY,EAAC,EAAC,UAAU,EAAC,EAAC,aAAa,EAAC,+EAA+E,EAAC,MAAM,EAAC,QAAQ,EAAC,EAAC,YAAY,EAAC,EAAC,aAAa,EAAC,mDAAmD,EAAC,MAAM,EAAC,QAAQ,EAAC,EAAC,OAAO,EAAC,EAAC,aAAa,EAAC,4DAA4D,EAAC,MAAM,EAAC,SAAS,EAAC,EAAC,EAAC,sBAAsB,EAAC,KAAK,EAAC;QAC5Y,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,yCAAyC,CAAC,CAAA;YACrF,MAAM,iBAAiB,CAAC,kBAAkB,EAAE,CAAA;YAC5C,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC;gBAC3C,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,CAAC;gBAChC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;aAC1B,CAAC,CAAA;YACF,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,CAAA;QAC1C,CAAC;KACF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,0DAA0D;QACvE,WAAW,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,YAAY,EAAC,EAAE,EAAC,sBAAsB,EAAC,KAAK,EAAC;QAC3E,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,yCAAyC,CAAC,CAAA;YACrF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,SAAS,EAAE,CAAA;YAClD,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAA;QACxC,CAAC;KACF;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,6DAA6D;QAC1E,WAAW,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,YAAY,EAAC,EAAE,EAAC,sBAAsB,EAAC,KAAK,EAAC;QAC3E,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,yCAAyC,CAAC,CAAA;YACrF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,qBAAqB,EAAE,CAAA;YAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAA;QACxC,CAAC;KACF;CACF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssh.tools.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/ssh.tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAGzC,eAAO,MAAM,QAAQ,EAAE,UAAU,EAsChC,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { NetworkTools } from 'capacitor-network-tools';
|
|
2
|
+
export const sshTools = [
|
|
3
|
+
{
|
|
4
|
+
name: 'ssh_connect',
|
|
5
|
+
description: 'Open an SSH connection to a device on the local network. Returns a session ID for subsequent ssh_exec and ssh_disconnect calls. Supports password and private key authentication.',
|
|
6
|
+
inputSchema: { "type": "object", "properties": { "host": { "type": "string", "description": "Hostname or IP address (e.g. \"192.168.1.50\" or \"printer.local\")" }, "port": { "description": "SSH port (default: 22)", "type": "number" }, "username": { "type": "string", "description": "SSH username" }, "password": { "description": "SSH password (use this OR privateKey)", "type": "string" }, "privateKey": { "description": "PEM-encoded private key string (use this OR password)", "type": "string" } }, "required": ["host", "username"], "additionalProperties": false },
|
|
7
|
+
execute: async (args) => {
|
|
8
|
+
const result = await NetworkTools.sshConnect({
|
|
9
|
+
host: args.host,
|
|
10
|
+
port: args.port,
|
|
11
|
+
username: args.username,
|
|
12
|
+
password: args.password,
|
|
13
|
+
privateKey: args.privateKey,
|
|
14
|
+
});
|
|
15
|
+
return { sessionId: result.sessionId };
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: 'ssh_exec',
|
|
20
|
+
description: 'Execute a command on a connected SSH session. Returns stdout, stderr, and exit code. Use ssh_connect first to establish a session.',
|
|
21
|
+
inputSchema: { "type": "object", "properties": { "sessionId": { "type": "string", "description": "SSH session ID from ssh_connect" }, "command": { "type": "string", "description": "Shell command to execute (e.g. \"systemctl restart cups\", \"uname -a\")" }, "timeout": { "description": "Command timeout in milliseconds (default: 30000)", "type": "number" } }, "required": ["sessionId", "command"], "additionalProperties": false },
|
|
22
|
+
execute: async (args) => {
|
|
23
|
+
const result = await NetworkTools.sshExec({
|
|
24
|
+
sessionId: args.sessionId,
|
|
25
|
+
command: args.command,
|
|
26
|
+
timeout: args.timeout,
|
|
27
|
+
});
|
|
28
|
+
return { stdout: result.stdout, stderr: result.stderr, exitCode: result.exitCode };
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: 'ssh_disconnect',
|
|
33
|
+
description: 'Close an SSH session and free resources.',
|
|
34
|
+
inputSchema: { "type": "object", "properties": { "sessionId": { "type": "string", "description": "SSH session ID to disconnect" } }, "required": ["sessionId"], "additionalProperties": false },
|
|
35
|
+
execute: async (args) => {
|
|
36
|
+
await NetworkTools.sshDisconnect({ sessionId: args.sessionId });
|
|
37
|
+
return { success: true };
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
//# sourceMappingURL=ssh.tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssh.tools.js","sourceRoot":"","sources":["../../../../src/mcp/tools/ssh.tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEtD,MAAM,CAAC,MAAM,QAAQ,GAAiB;IACpC;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,mLAAmL;QAChM,WAAW,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,YAAY,EAAC,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,qEAAqE,EAAC,EAAC,MAAM,EAAC,EAAC,aAAa,EAAC,wBAAwB,EAAC,MAAM,EAAC,QAAQ,EAAC,EAAC,UAAU,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,cAAc,EAAC,EAAC,UAAU,EAAC,EAAC,aAAa,EAAC,uCAAuC,EAAC,MAAM,EAAC,QAAQ,EAAC,EAAC,YAAY,EAAC,EAAC,aAAa,EAAC,uDAAuD,EAAC,MAAM,EAAC,QAAQ,EAAC,EAAC,EAAC,UAAU,EAAC,CAAC,MAAM,EAAC,UAAU,CAAC,EAAC,sBAAsB,EAAC,KAAK,EAAC;QACxgB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC;gBAC3C,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC,CAAA;YACF,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAA;QACxC,CAAC;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,oIAAoI;QACjJ,WAAW,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,YAAY,EAAC,EAAC,WAAW,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,iCAAiC,EAAC,EAAC,SAAS,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,0EAA0E,EAAC,EAAC,SAAS,EAAC,EAAC,aAAa,EAAC,kDAAkD,EAAC,MAAM,EAAC,QAAQ,EAAC,EAAC,EAAC,UAAU,EAAC,CAAC,WAAW,EAAC,SAAS,CAAC,EAAC,sBAAsB,EAAC,KAAK,EAAC;QAC7Y,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC;gBACxC,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAA;YACF,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAA;QACpF,CAAC;KACF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,0CAA0C;QACvD,WAAW,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,YAAY,EAAC,EAAC,WAAW,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,8BAA8B,EAAC,EAAC,EAAC,UAAU,EAAC,CAAC,WAAW,CAAC,EAAC,sBAAsB,EAAC,KAAK,EAAC;QAC9K,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,YAAY,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;YAC/D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QAC1B,CAAC;KACF;CACF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tcp.tools.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/tcp.tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAGzC,eAAO,MAAM,QAAQ,EAAE,UAAU,EA4ChC,CAAA"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { NetworkTools } from 'capacitor-network-tools';
|
|
2
|
+
export const tcpTools = [
|
|
3
|
+
{
|
|
4
|
+
name: 'tcp_connect',
|
|
5
|
+
description: 'Open a raw TCP socket connection to a host and port. Use for custom protocols (modbus, proprietary IoT protocols, etc). Returns a socket ID for subsequent send/read/disconnect calls.',
|
|
6
|
+
inputSchema: { "type": "object", "properties": { "host": { "type": "string", "description": "Hostname or IP address" }, "port": { "type": "number", "description": "TCP port number" }, "timeout": { "description": "Connection timeout in milliseconds (default: 10000)", "type": "number" } }, "required": ["host", "port"], "additionalProperties": false },
|
|
7
|
+
execute: async (args) => {
|
|
8
|
+
const result = await NetworkTools.tcpConnect({
|
|
9
|
+
host: args.host,
|
|
10
|
+
port: args.port,
|
|
11
|
+
timeout: args.timeout,
|
|
12
|
+
});
|
|
13
|
+
return { socketId: result.socketId };
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: 'tcp_send',
|
|
18
|
+
description: 'Send data over an established TCP socket connection. Data should be base64-encoded.',
|
|
19
|
+
inputSchema: { "type": "object", "properties": { "socketId": { "type": "string", "description": "Socket ID from tcp_connect" }, "data": { "type": "string", "description": "Base64-encoded data to send" } }, "required": ["socketId", "data"], "additionalProperties": false },
|
|
20
|
+
execute: async (args) => {
|
|
21
|
+
await NetworkTools.tcpSend({ socketId: args.socketId, data: args.data });
|
|
22
|
+
return { success: true };
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: 'tcp_read',
|
|
27
|
+
description: 'Read data from an established TCP socket. Returns base64-encoded response data.',
|
|
28
|
+
inputSchema: { "type": "object", "properties": { "socketId": { "type": "string", "description": "Socket ID from tcp_connect" }, "timeout": { "description": "Read timeout in milliseconds (default: 10000)", "type": "number" } }, "required": ["socketId"], "additionalProperties": false },
|
|
29
|
+
execute: async (args) => {
|
|
30
|
+
const result = await NetworkTools.tcpRead({
|
|
31
|
+
socketId: args.socketId,
|
|
32
|
+
timeout: args.timeout,
|
|
33
|
+
});
|
|
34
|
+
return { data: result.data, encoding: 'base64' };
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'tcp_disconnect',
|
|
39
|
+
description: 'Close a TCP socket connection and free resources.',
|
|
40
|
+
inputSchema: { "type": "object", "properties": { "socketId": { "type": "string", "description": "Socket ID to disconnect" } }, "required": ["socketId"], "additionalProperties": false },
|
|
41
|
+
execute: async (args) => {
|
|
42
|
+
await NetworkTools.tcpDisconnect({ socketId: args.socketId });
|
|
43
|
+
return { success: true };
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
];
|
|
47
|
+
//# sourceMappingURL=tcp.tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tcp.tools.js","sourceRoot":"","sources":["../../../../src/mcp/tools/tcp.tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEtD,MAAM,CAAC,MAAM,QAAQ,GAAiB;IACpC;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,wLAAwL;QACrM,WAAW,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,YAAY,EAAC,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,wBAAwB,EAAC,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,iBAAiB,EAAC,EAAC,SAAS,EAAC,EAAC,aAAa,EAAC,qDAAqD,EAAC,MAAM,EAAC,QAAQ,EAAC,EAAC,EAAC,UAAU,EAAC,CAAC,MAAM,EAAC,MAAM,CAAC,EAAC,sBAAsB,EAAC,KAAK,EAAC;QAC9T,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC;gBAC3C,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAA;YACF,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAA;QACtC,CAAC;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,qFAAqF;QAClG,WAAW,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,YAAY,EAAC,EAAC,UAAU,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,4BAA4B,EAAC,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,6BAA6B,EAAC,EAAC,EAAC,UAAU,EAAC,CAAC,UAAU,EAAC,MAAM,CAAC,EAAC,sBAAsB,EAAC,KAAK,EAAC;QACtP,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,YAAY,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;YACxE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QAC1B,CAAC;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,iFAAiF;QAC9F,WAAW,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,YAAY,EAAC,EAAC,UAAU,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,4BAA4B,EAAC,EAAC,SAAS,EAAC,EAAC,aAAa,EAAC,+CAA+C,EAAC,MAAM,EAAC,QAAQ,EAAC,EAAC,EAAC,UAAU,EAAC,CAAC,UAAU,CAAC,EAAC,sBAAsB,EAAC,KAAK,EAAC;QACpQ,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC;gBACxC,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAA;YACF,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;QAClD,CAAC;KACF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,mDAAmD;QAChE,WAAW,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,YAAY,EAAC,EAAC,UAAU,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,yBAAyB,EAAC,EAAC,EAAC,UAAU,EAAC,CAAC,UAAU,CAAC,EAAC,sBAAsB,EAAC,KAAK,EAAC;QACvK,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,YAAY,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC7D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QAC1B,CAAC;KACF;CACF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tts.tools.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/tts.tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,eAAO,MAAM,QAAQ,EAAE,UAAU,EA2BhC,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export const ttsTools = [
|
|
2
|
+
{
|
|
3
|
+
name: 'tts_speak',
|
|
4
|
+
description: 'Speak text aloud using the device text-to-speech engine.',
|
|
5
|
+
inputSchema: { "type": "object", "properties": { "text": { "type": "string", "description": "The text to speak aloud" }, "lang": { "description": "BCP-47 language code (e.g. \"en-US\")", "type": "string" }, "rate": { "description": "Speech rate 0.1-4.0 (default 1.0)", "type": "number", "minimum": 0.1, "maximum": 4 }, "pitch": { "description": "Voice pitch 0.1-2.0 (default 1.0)", "type": "number", "minimum": 0.1, "maximum": 2 }, "volume": { "description": "Volume 0-1 (default 1.0)", "type": "number", "minimum": 0, "maximum": 1 } }, "required": ["text"], "additionalProperties": false },
|
|
6
|
+
execute: async (args) => {
|
|
7
|
+
const { TextToSpeech } = await import('@capacitor-community/text-to-speech');
|
|
8
|
+
await TextToSpeech.speak({
|
|
9
|
+
text: args.text,
|
|
10
|
+
lang: args.lang,
|
|
11
|
+
rate: args.rate ?? 1.0,
|
|
12
|
+
pitch: args.pitch ?? 1.0,
|
|
13
|
+
volume: args.volume ?? 1.0,
|
|
14
|
+
});
|
|
15
|
+
return { success: true };
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: 'tts_get_languages',
|
|
20
|
+
description: 'Get the list of supported languages for text-to-speech.',
|
|
21
|
+
inputSchema: { "type": "object", "properties": {}, "additionalProperties": false },
|
|
22
|
+
execute: async () => {
|
|
23
|
+
const { TextToSpeech } = await import('@capacitor-community/text-to-speech');
|
|
24
|
+
const result = await TextToSpeech.getSupportedLanguages();
|
|
25
|
+
return { languages: result.languages };
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
];
|
|
29
|
+
//# sourceMappingURL=tts.tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tts.tools.js","sourceRoot":"","sources":["../../../../src/mcp/tools/tts.tools.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAiB;IACpC;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,0DAA0D;QACvE,WAAW,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,YAAY,EAAC,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,QAAQ,EAAC,aAAa,EAAC,yBAAyB,EAAC,EAAC,MAAM,EAAC,EAAC,aAAa,EAAC,uCAAuC,EAAC,MAAM,EAAC,QAAQ,EAAC,EAAC,MAAM,EAAC,EAAC,aAAa,EAAC,mCAAmC,EAAC,MAAM,EAAC,QAAQ,EAAC,SAAS,EAAC,GAAG,EAAC,SAAS,EAAC,CAAC,EAAC,EAAC,OAAO,EAAC,EAAC,aAAa,EAAC,mCAAmC,EAAC,MAAM,EAAC,QAAQ,EAAC,SAAS,EAAC,GAAG,EAAC,SAAS,EAAC,CAAC,EAAC,EAAC,QAAQ,EAAC,EAAC,aAAa,EAAC,0BAA0B,EAAC,MAAM,EAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,EAAC,SAAS,EAAC,CAAC,EAAC,EAAC,EAAC,UAAU,EAAC,CAAC,MAAM,CAAC,EAAC,sBAAsB,EAAC,KAAK,EAAC;QACrhB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,qCAAqC,CAAC,CAAA;YAC5E,MAAM,YAAY,CAAC,KAAK,CAAC;gBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,GAAG;gBACtB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,GAAG;gBACxB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,GAAG;aAC3B,CAAC,CAAA;YACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QAC1B,CAAC;KACF;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,yDAAyD;QACtE,WAAW,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,YAAY,EAAC,EAAE,EAAC,sBAAsB,EAAC,KAAK,EAAC;QAC3E,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,qCAAqC,CAAC,CAAA;YAC5E,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,qBAAqB,EAAE,CAAA;YACzD,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAA;QACxC,CAAC;KACF;CACF,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Device MCP Tool interface
|
|
3
|
+
*
|
|
4
|
+
* Each tool exposes a device hardware capability or network operation
|
|
5
|
+
* as a callable MCP tool. Tools are registered with the MCP server and
|
|
6
|
+
* can be invoked by AI agents over AMQP.
|
|
7
|
+
*/
|
|
8
|
+
export interface DeviceTool {
|
|
9
|
+
/** Unique tool name, e.g. 'ssh_exec', 'camera_take_photo' */
|
|
10
|
+
name: string;
|
|
11
|
+
/** Human-readable description for AI agent tool discovery */
|
|
12
|
+
description: string;
|
|
13
|
+
/** JSON Schema for tool parameters (generated from Zod via z.toJSONSchema) */
|
|
14
|
+
inputSchema: Record<string, any>;
|
|
15
|
+
/** Execute the tool with validated arguments, return result object */
|
|
16
|
+
execute: (args: Record<string, any>) => Promise<any>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAA;IACZ,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAA;IACnB,8EAA8E;IAC9E,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAChC,sEAAsE;IACtE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;CACrD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/mcp/tools/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"udp.tools.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/udp.tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAGzC,eAAO,MAAM,QAAQ,EAAE,UAAU,EAmBhC,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { NetworkTools } from 'capacitor-network-tools';
|
|
2
|
+
export const udpTools = [
|
|
3
|
+
{
|
|
4
|
+
name: 'udp_send',
|
|
5
|
+
description: 'Send a UDP datagram to a specific host and port. Use for stateless protocols, SNMP, syslog, custom IoT messaging.',
|
|
6
|
+
inputSchema: { "type": "object", "properties": { "host": { "type": "string", "description": "Destination hostname or IP address" }, "port": { "type": "number", "description": "Destination UDP port" }, "data": { "type": "string", "description": "Base64-encoded data to send" } }, "required": ["host", "port", "data"], "additionalProperties": false },
|
|
7
|
+
execute: async (args) => {
|
|
8
|
+
await NetworkTools.udpSend({ host: args.host, port: args.port, data: args.data });
|
|
9
|
+
return { success: true };
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
name: 'udp_broadcast',
|
|
14
|
+
description: 'Send a UDP broadcast packet to all devices on the local network segment. Useful for device discovery and Wake-on-LAN.',
|
|
15
|
+
inputSchema: { "type": "object", "properties": { "port": { "type": "number", "description": "Destination UDP port" }, "data": { "type": "string", "description": "Base64-encoded data to broadcast" } }, "required": ["port", "data"], "additionalProperties": false },
|
|
16
|
+
execute: async (args) => {
|
|
17
|
+
await NetworkTools.udpBroadcast({ port: args.port, data: args.data });
|
|
18
|
+
return { success: true };
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
//# sourceMappingURL=udp.tools.js.map
|