@xiuchang-midscene/shared 2.0.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/README.md +9 -0
- package/dist/es/baseDB.mjs +109 -0
- package/dist/es/baseDB.mjs.bak +109 -0
- package/dist/es/build/copy-static.mjs +31 -0
- package/dist/es/build/copy-static.mjs.bak +31 -0
- package/dist/es/build/rspack-config.mjs +4 -0
- package/dist/es/build/rspack-config.mjs.bak +4 -0
- package/dist/es/cli/cli-runner.mjs +140 -0
- package/dist/es/cli/cli-runner.mjs.bak +140 -0
- package/dist/es/cli/index.mjs +2 -0
- package/dist/es/cli/index.mjs.bak +2 -0
- package/dist/es/common.mjs +37 -0
- package/dist/es/common.mjs.bak +37 -0
- package/dist/es/constants/example-code.mjs +223 -0
- package/dist/es/constants/example-code.mjs.bak +223 -0
- package/dist/es/constants/index.mjs +23 -0
- package/dist/es/constants/index.mjs.bak +23 -0
- package/dist/es/env/basic.mjs +6 -0
- package/dist/es/env/basic.mjs.bak +6 -0
- package/dist/es/env/constants.mjs +70 -0
- package/dist/es/env/constants.mjs.bak +70 -0
- package/dist/es/env/global-config-manager.mjs +94 -0
- package/dist/es/env/global-config-manager.mjs.bak +94 -0
- package/dist/es/env/helper.mjs +43 -0
- package/dist/es/env/helper.mjs.bak +43 -0
- package/dist/es/env/index.mjs +5 -0
- package/dist/es/env/index.mjs.bak +5 -0
- package/dist/es/env/init-debug.mjs +18 -0
- package/dist/es/env/init-debug.mjs.bak +18 -0
- package/dist/es/env/model-config-manager.mjs +79 -0
- package/dist/es/env/model-config-manager.mjs.bak +79 -0
- package/dist/es/env/parse-model-config.mjs +132 -0
- package/dist/es/env/parse-model-config.mjs.bak +132 -0
- package/dist/es/env/types.mjs +220 -0
- package/dist/es/env/types.mjs.bak +220 -0
- package/dist/es/env/utils.mjs +26 -0
- package/dist/es/env/utils.mjs.bak +26 -0
- package/dist/es/extractor/constants.mjs +2 -0
- package/dist/es/extractor/constants.mjs.bak +2 -0
- package/dist/es/extractor/debug.mjs +6 -0
- package/dist/es/extractor/debug.mjs.bak +6 -0
- package/dist/es/extractor/dom-util.mjs +92 -0
- package/dist/es/extractor/dom-util.mjs.bak +92 -0
- package/dist/es/extractor/index.mjs +5 -0
- package/dist/es/extractor/index.mjs.bak +5 -0
- package/dist/es/extractor/locator.mjs +250 -0
- package/dist/es/extractor/locator.mjs.bak +250 -0
- package/dist/es/extractor/tree.mjs +78 -0
- package/dist/es/extractor/tree.mjs.bak +78 -0
- package/dist/es/extractor/util.mjs +245 -0
- package/dist/es/extractor/util.mjs.bak +245 -0
- package/dist/es/extractor/web-extractor.mjs +303 -0
- package/dist/es/extractor/web-extractor.mjs.bak +303 -0
- package/dist/es/img/box-select.mjs +824 -0
- package/dist/es/img/box-select.mjs.bak +824 -0
- package/dist/es/img/canvas-fallback.mjs +238 -0
- package/dist/es/img/canvas-fallback.mjs.bak +238 -0
- package/dist/es/img/get-photon.mjs +45 -0
- package/dist/es/img/get-photon.mjs.bak +45 -0
- package/dist/es/img/get-sharp.mjs +11 -0
- package/dist/es/img/get-sharp.mjs.bak +11 -0
- package/dist/es/img/index.mjs +4 -0
- package/dist/es/img/index.mjs.bak +4 -0
- package/dist/es/img/info.mjs +29 -0
- package/dist/es/img/info.mjs.bak +29 -0
- package/dist/es/img/transform.mjs +295 -0
- package/dist/es/img/transform.mjs.bak +295 -0
- package/dist/es/index.mjs +4 -0
- package/dist/es/index.mjs.bak +4 -0
- package/dist/es/logger.mjs +64 -0
- package/dist/es/logger.mjs.bak +64 -0
- package/dist/es/mcp/base-server.mjs +281 -0
- package/dist/es/mcp/base-server.mjs.bak +281 -0
- package/dist/es/mcp/base-tools.mjs +91 -0
- package/dist/es/mcp/base-tools.mjs.bak +91 -0
- package/dist/es/mcp/chrome-path.mjs +35 -0
- package/dist/es/mcp/chrome-path.mjs.bak +35 -0
- package/dist/es/mcp/index.mjs +7 -0
- package/dist/es/mcp/index.mjs.bak +7 -0
- package/dist/es/mcp/inject-report-html-plugin.mjs +53 -0
- package/dist/es/mcp/inject-report-html-plugin.mjs.bak +53 -0
- package/dist/es/mcp/launcher-helper.mjs +52 -0
- package/dist/es/mcp/launcher-helper.mjs.bak +52 -0
- package/dist/es/mcp/tool-generator.mjs +297 -0
- package/dist/es/mcp/tool-generator.mjs.bak +297 -0
- package/dist/es/mcp/types.mjs +3 -0
- package/dist/es/mcp/types.mjs.bak +3 -0
- package/dist/es/node/fs.mjs +44 -0
- package/dist/es/node/fs.mjs.bak +44 -0
- package/dist/es/node/index.mjs +2 -0
- package/dist/es/node/index.mjs.bak +2 -0
- package/dist/es/node/port.mjs +24 -0
- package/dist/es/node/port.mjs.bak +24 -0
- package/dist/es/oss/demo.mjs +30 -0
- package/dist/es/oss/demo.mjs.bak +30 -0
- package/dist/es/oss/index.mjs +90 -0
- package/dist/es/oss/index.mjs.bak +90 -0
- package/dist/es/polyfills/async-hooks.mjs +2 -0
- package/dist/es/polyfills/async-hooks.mjs.bak +2 -0
- package/dist/es/polyfills/index.mjs +1 -0
- package/dist/es/polyfills/index.mjs.bak +1 -0
- package/dist/es/types/index.mjs +3 -0
- package/dist/es/types/index.mjs.bak +3 -0
- package/dist/es/us-keyboard-layout.mjs +1414 -0
- package/dist/es/us-keyboard-layout.mjs.LICENSE.txt +5 -0
- package/dist/es/us-keyboard-layout.mjs.bak +1414 -0
- package/dist/es/utils.mjs +72 -0
- package/dist/es/utils.mjs.bak +72 -0
- package/dist/es/zod-schema-utils.mjs +54 -0
- package/dist/es/zod-schema-utils.mjs.bak +54 -0
- package/dist/lib/baseDB.js +149 -0
- package/dist/lib/baseDB.js.bak +149 -0
- package/dist/lib/build/copy-static.js +79 -0
- package/dist/lib/build/copy-static.js.bak +79 -0
- package/dist/lib/build/rspack-config.js +38 -0
- package/dist/lib/build/rspack-config.js.bak +38 -0
- package/dist/lib/cli/cli-runner.js +196 -0
- package/dist/lib/cli/cli-runner.js.bak +196 -0
- package/dist/lib/cli/index.js +48 -0
- package/dist/lib/cli/index.js.bak +48 -0
- package/dist/lib/common.js +93 -0
- package/dist/lib/common.js.bak +93 -0
- package/dist/lib/constants/example-code.js +260 -0
- package/dist/lib/constants/example-code.js.bak +260 -0
- package/dist/lib/constants/index.js +96 -0
- package/dist/lib/constants/index.js.bak +96 -0
- package/dist/lib/env/basic.js +40 -0
- package/dist/lib/env/basic.js.bak +40 -0
- package/dist/lib/env/constants.js +113 -0
- package/dist/lib/env/constants.js.bak +113 -0
- package/dist/lib/env/global-config-manager.js +128 -0
- package/dist/lib/env/global-config-manager.js.bak +128 -0
- package/dist/lib/env/helper.js +80 -0
- package/dist/lib/env/helper.js.bak +80 -0
- package/dist/lib/env/index.js +90 -0
- package/dist/lib/env/index.js.bak +90 -0
- package/dist/lib/env/init-debug.js +52 -0
- package/dist/lib/env/init-debug.js.bak +52 -0
- package/dist/lib/env/model-config-manager.js +113 -0
- package/dist/lib/env/model-config-manager.js.bak +113 -0
- package/dist/lib/env/parse-model-config.js +178 -0
- package/dist/lib/env/parse-model-config.js.bak +178 -0
- package/dist/lib/env/types.js +554 -0
- package/dist/lib/env/types.js.bak +554 -0
- package/dist/lib/env/utils.js +72 -0
- package/dist/lib/env/utils.js.bak +72 -0
- package/dist/lib/extractor/constants.js +42 -0
- package/dist/lib/extractor/constants.js.bak +42 -0
- package/dist/lib/extractor/debug.js +12 -0
- package/dist/lib/extractor/debug.js.bak +12 -0
- package/dist/lib/extractor/dom-util.js +153 -0
- package/dist/lib/extractor/dom-util.js.bak +153 -0
- package/dist/lib/extractor/index.js +81 -0
- package/dist/lib/extractor/index.js.bak +81 -0
- package/dist/lib/extractor/locator.js +296 -0
- package/dist/lib/extractor/locator.js.bak +296 -0
- package/dist/lib/extractor/tree.js +124 -0
- package/dist/lib/extractor/tree.js.bak +124 -0
- package/dist/lib/extractor/util.js +336 -0
- package/dist/lib/extractor/util.js.bak +336 -0
- package/dist/lib/extractor/web-extractor.js +349 -0
- package/dist/lib/extractor/web-extractor.js.bak +349 -0
- package/dist/lib/img/box-select.js +875 -0
- package/dist/lib/img/box-select.js.bak +875 -0
- package/dist/lib/img/canvas-fallback.js +305 -0
- package/dist/lib/img/canvas-fallback.js.bak +305 -0
- package/dist/lib/img/get-photon.js +82 -0
- package/dist/lib/img/get-photon.js.bak +82 -0
- package/dist/lib/img/get-sharp.js +45 -0
- package/dist/lib/img/get-sharp.js.bak +45 -0
- package/dist/lib/img/index.js +95 -0
- package/dist/lib/img/index.js.bak +95 -0
- package/dist/lib/img/info.js +83 -0
- package/dist/lib/img/info.js.bak +83 -0
- package/dist/lib/img/transform.js +387 -0
- package/dist/lib/img/transform.js.bak +387 -0
- package/dist/lib/index.js +47 -0
- package/dist/lib/index.js.bak +47 -0
- package/dist/lib/logger.js +114 -0
- package/dist/lib/logger.js.bak +114 -0
- package/dist/lib/mcp/base-server.js +331 -0
- package/dist/lib/mcp/base-server.js.bak +331 -0
- package/dist/lib/mcp/base-tools.js +125 -0
- package/dist/lib/mcp/base-tools.js.bak +125 -0
- package/dist/lib/mcp/chrome-path.js +72 -0
- package/dist/lib/mcp/chrome-path.js.bak +72 -0
- package/dist/lib/mcp/index.js +100 -0
- package/dist/lib/mcp/index.js.bak +100 -0
- package/dist/lib/mcp/inject-report-html-plugin.js +98 -0
- package/dist/lib/mcp/inject-report-html-plugin.js.bak +98 -0
- package/dist/lib/mcp/launcher-helper.js +86 -0
- package/dist/lib/mcp/launcher-helper.js.bak +86 -0
- package/dist/lib/mcp/tool-generator.js +334 -0
- package/dist/lib/mcp/tool-generator.js.bak +334 -0
- package/dist/lib/mcp/types.js +40 -0
- package/dist/lib/mcp/types.js.bak +40 -0
- package/dist/lib/node/fs.js +97 -0
- package/dist/lib/node/fs.js.bak +97 -0
- package/dist/lib/node/index.js +65 -0
- package/dist/lib/node/index.js.bak +65 -0
- package/dist/lib/node/port.js +61 -0
- package/dist/lib/node/port.js.bak +61 -0
- package/dist/lib/oss/demo.js +36 -0
- package/dist/lib/oss/demo.js.bak +36 -0
- package/dist/lib/oss/index.js +138 -0
- package/dist/lib/oss/index.js.bak +138 -0
- package/dist/lib/polyfills/async-hooks.js +36 -0
- package/dist/lib/polyfills/async-hooks.js.bak +36 -0
- package/dist/lib/polyfills/index.js +58 -0
- package/dist/lib/polyfills/index.js.bak +58 -0
- package/dist/lib/types/index.js +37 -0
- package/dist/lib/types/index.js.bak +37 -0
- package/dist/lib/us-keyboard-layout.js +1457 -0
- package/dist/lib/us-keyboard-layout.js.LICENSE.txt +5 -0
- package/dist/lib/us-keyboard-layout.js.bak +1457 -0
- package/dist/lib/utils.js +148 -0
- package/dist/lib/utils.js.bak +148 -0
- package/dist/lib/zod-schema-utils.js +97 -0
- package/dist/lib/zod-schema-utils.js.bak +97 -0
- package/dist/types/baseDB.d.ts +25 -0
- package/dist/types/baseDB.d.ts.bak +25 -0
- package/dist/types/build/copy-static.d.ts +31 -0
- package/dist/types/build/copy-static.d.ts.bak +31 -0
- package/dist/types/build/rspack-config.d.ts +8 -0
- package/dist/types/build/rspack-config.d.ts.bak +8 -0
- package/dist/types/cli/cli-runner.d.ts +14 -0
- package/dist/types/cli/cli-runner.d.ts.bak +14 -0
- package/dist/types/cli/index.d.ts +2 -0
- package/dist/types/cli/index.d.ts.bak +2 -0
- package/dist/types/common.d.ts +12 -0
- package/dist/types/common.d.ts.bak +12 -0
- package/dist/types/constants/example-code.d.ts +2 -0
- package/dist/types/constants/example-code.d.ts.bak +2 -0
- package/dist/types/constants/index.d.ts +21 -0
- package/dist/types/constants/index.d.ts.bak +21 -0
- package/dist/types/env/basic.d.ts +6 -0
- package/dist/types/env/basic.d.ts.bak +6 -0
- package/dist/types/env/constants.d.ts +40 -0
- package/dist/types/env/constants.d.ts.bak +40 -0
- package/dist/types/env/global-config-manager.d.ts +32 -0
- package/dist/types/env/global-config-manager.d.ts.bak +32 -0
- package/dist/types/env/helper.d.ts +4 -0
- package/dist/types/env/helper.d.ts.bak +4 -0
- package/dist/types/env/index.d.ts +4 -0
- package/dist/types/env/index.d.ts.bak +4 -0
- package/dist/types/env/init-debug.d.ts +1 -0
- package/dist/types/env/init-debug.d.ts.bak +1 -0
- package/dist/types/env/model-config-manager.d.ts +25 -0
- package/dist/types/env/model-config-manager.d.ts.bak +25 -0
- package/dist/types/env/parse-model-config.d.ts +31 -0
- package/dist/types/env/parse-model-config.d.ts.bak +31 -0
- package/dist/types/env/types.d.ts +318 -0
- package/dist/types/env/types.d.ts.bak +318 -0
- package/dist/types/env/utils.d.ts +38 -0
- package/dist/types/env/utils.d.ts.bak +38 -0
- package/dist/types/extractor/constants.d.ts +1 -0
- package/dist/types/extractor/constants.d.ts.bak +1 -0
- package/dist/types/extractor/debug.d.ts +1 -0
- package/dist/types/extractor/debug.d.ts.bak +1 -0
- package/dist/types/extractor/dom-util.d.ts +56 -0
- package/dist/types/extractor/dom-util.d.ts.bak +56 -0
- package/dist/types/extractor/index.d.ts +32 -0
- package/dist/types/extractor/index.d.ts.bak +32 -0
- package/dist/types/extractor/locator.d.ts +9 -0
- package/dist/types/extractor/locator.d.ts.bak +9 -0
- package/dist/types/extractor/tree.d.ts +6 -0
- package/dist/types/extractor/tree.d.ts.bak +6 -0
- package/dist/types/extractor/util.d.ts +47 -0
- package/dist/types/extractor/util.d.ts.bak +47 -0
- package/dist/types/extractor/web-extractor.d.ts +19 -0
- package/dist/types/extractor/web-extractor.d.ts.bak +19 -0
- package/dist/types/img/box-select.d.ts +26 -0
- package/dist/types/img/box-select.d.ts.bak +26 -0
- package/dist/types/img/canvas-fallback.d.ts +105 -0
- package/dist/types/img/canvas-fallback.d.ts.bak +105 -0
- package/dist/types/img/get-photon.d.ts +19 -0
- package/dist/types/img/get-photon.d.ts.bak +19 -0
- package/dist/types/img/get-sharp.d.ts +3 -0
- package/dist/types/img/get-sharp.d.ts.bak +3 -0
- package/dist/types/img/index.d.ts +3 -0
- package/dist/types/img/index.d.ts.bak +3 -0
- package/dist/types/img/info.d.ts +29 -0
- package/dist/types/img/info.d.ts.bak +29 -0
- package/dist/types/img/transform.d.ts +107 -0
- package/dist/types/img/transform.d.ts.bak +107 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.bak +4 -0
- package/dist/types/logger.d.ts +5 -0
- package/dist/types/logger.d.ts.bak +5 -0
- package/dist/types/mcp/base-server.d.ts +93 -0
- package/dist/types/mcp/base-server.d.ts.bak +93 -0
- package/dist/types/mcp/base-tools.d.ts +79 -0
- package/dist/types/mcp/base-tools.d.ts.bak +79 -0
- package/dist/types/mcp/chrome-path.d.ts +2 -0
- package/dist/types/mcp/chrome-path.d.ts.bak +2 -0
- package/dist/types/mcp/index.d.ts +7 -0
- package/dist/types/mcp/index.d.ts.bak +7 -0
- package/dist/types/mcp/inject-report-html-plugin.d.ts +18 -0
- package/dist/types/mcp/inject-report-html-plugin.d.ts.bak +18 -0
- package/dist/types/mcp/launcher-helper.d.ts +94 -0
- package/dist/types/mcp/launcher-helper.d.ts.bak +94 -0
- package/dist/types/mcp/tool-generator.d.ts +10 -0
- package/dist/types/mcp/tool-generator.d.ts.bak +10 -0
- package/dist/types/mcp/types.d.ts +103 -0
- package/dist/types/mcp/types.d.ts.bak +103 -0
- package/dist/types/node/fs.d.ts +15 -0
- package/dist/types/node/fs.d.ts.bak +15 -0
- package/dist/types/node/index.d.ts +2 -0
- package/dist/types/node/index.d.ts.bak +2 -0
- package/dist/types/node/port.d.ts +8 -0
- package/dist/types/node/port.d.ts.bak +8 -0
- package/dist/types/oss/demo.d.ts +1 -0
- package/dist/types/oss/demo.d.ts.bak +1 -0
- package/dist/types/oss/index.d.ts +34 -0
- package/dist/types/oss/index.d.ts.bak +34 -0
- package/dist/types/polyfills/async-hooks.d.ts +6 -0
- package/dist/types/polyfills/async-hooks.d.ts.bak +6 -0
- package/dist/types/polyfills/index.d.ts +4 -0
- package/dist/types/polyfills/index.d.ts.bak +4 -0
- package/dist/types/types/index.d.ts +34 -0
- package/dist/types/types/index.d.ts.bak +34 -0
- package/dist/types/us-keyboard-layout.d.ts +32 -0
- package/dist/types/us-keyboard-layout.d.ts.bak +32 -0
- package/dist/types/utils.d.ts +34 -0
- package/dist/types/utils.d.ts.bak +34 -0
- package/dist/types/zod-schema-utils.d.ts +23 -0
- package/dist/types/zod-schema-utils.d.ts.bak +23 -0
- package/package.json +132 -0
- package/src/baseDB.ts +158 -0
- package/src/build/copy-static.ts +68 -0
- package/src/build/rspack-config.ts +12 -0
- package/src/cli/cli-runner.ts +224 -0
- package/src/cli/index.ts +8 -0
- package/src/common.ts +67 -0
- package/src/constants/example-code.ts +223 -0
- package/src/constants/index.ts +29 -0
- package/src/env/basic.ts +12 -0
- package/src/env/constants.ts +234 -0
- package/src/env/global-config-manager.ts +191 -0
- package/src/env/helper.ts +58 -0
- package/src/env/index.ts +4 -0
- package/src/env/init-debug.ts +34 -0
- package/src/env/model-config-manager.ts +149 -0
- package/src/env/parse-model-config.ts +294 -0
- package/src/env/types.ts +547 -0
- package/src/env/utils.ts +89 -0
- package/src/extractor/constants.ts +5 -0
- package/src/extractor/debug.ts +10 -0
- package/src/extractor/dom-util.ts +226 -0
- package/src/extractor/index.ts +48 -0
- package/src/extractor/locator.ts +469 -0
- package/src/extractor/tree.ts +179 -0
- package/src/extractor/util.ts +482 -0
- package/src/extractor/web-extractor.ts +481 -0
- package/src/img/box-select.ts +588 -0
- package/src/img/canvas-fallback.ts +393 -0
- package/src/img/get-photon.ts +108 -0
- package/src/img/get-sharp.ts +18 -0
- package/src/img/index.ts +26 -0
- package/src/img/info.ts +75 -0
- package/src/img/transform.ts +594 -0
- package/src/index.ts +8 -0
- package/src/logger.ts +96 -0
- package/src/mcp/base-server.ts +502 -0
- package/src/mcp/base-tools.ts +185 -0
- package/src/mcp/chrome-path.ts +48 -0
- package/src/mcp/index.ts +7 -0
- package/src/mcp/inject-report-html-plugin.ts +119 -0
- package/src/mcp/launcher-helper.ts +200 -0
- package/src/mcp/tool-generator.ts +429 -0
- package/src/mcp/types.ts +112 -0
- package/src/node/fs.ts +84 -0
- package/src/node/index.ts +2 -0
- package/src/node/port.ts +37 -0
- package/src/oss/demo.ts +61 -0
- package/src/oss/index.ts +187 -0
- package/src/polyfills/async-hooks.ts +6 -0
- package/src/polyfills/index.ts +4 -0
- package/src/types/index.ts +52 -0
- package/src/us-keyboard-layout.ts +723 -0
- package/src/utils.ts +149 -0
- package/src/zod-schema-utils.ts +133 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import type { BaseAgent, BaseDevice, IMidsceneTools, ToolDefinition } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Base class for platform-specific MCP tools
|
|
5
|
+
* Generic type TAgent allows subclasses to use their specific agent types
|
|
6
|
+
*/
|
|
7
|
+
export declare abstract class BaseMidsceneTools<TAgent extends BaseAgent = BaseAgent> implements IMidsceneTools {
|
|
8
|
+
protected mcpServer?: McpServer;
|
|
9
|
+
protected agent?: TAgent;
|
|
10
|
+
protected toolDefinitions: ToolDefinition[];
|
|
11
|
+
/**
|
|
12
|
+
* Ensure agent is initialized and ready for use.
|
|
13
|
+
* Must be implemented by subclasses to create platform-specific agent.
|
|
14
|
+
* @param initParam Optional initialization parameter (platform-specific, e.g., URL, device ID)
|
|
15
|
+
* @returns Promise resolving to initialized agent instance
|
|
16
|
+
* @throws Error if agent initialization fails
|
|
17
|
+
*/
|
|
18
|
+
protected abstract ensureAgent(initParam?: string): Promise<TAgent>;
|
|
19
|
+
/**
|
|
20
|
+
* Optional: prepare platform-specific tools (e.g., device connection)
|
|
21
|
+
*/
|
|
22
|
+
protected preparePlatformTools(): ToolDefinition[];
|
|
23
|
+
/**
|
|
24
|
+
* Must be implemented by subclasses to create a temporary device instance
|
|
25
|
+
* This allows getting real actionSpace without connecting to device
|
|
26
|
+
*/
|
|
27
|
+
protected abstract createTemporaryDevice(): BaseDevice;
|
|
28
|
+
/**
|
|
29
|
+
* Initialize all tools by querying actionSpace
|
|
30
|
+
* Uses two-layer fallback strategy:
|
|
31
|
+
* 1. Try to get actionSpace from connected agent (if available)
|
|
32
|
+
* 2. Create temporary device instance to read actionSpace (always succeeds)
|
|
33
|
+
*/
|
|
34
|
+
initTools(): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Attach to MCP server and register all tools
|
|
37
|
+
*/
|
|
38
|
+
attachToServer(server: McpServer): void;
|
|
39
|
+
/**
|
|
40
|
+
* Cleanup method - destroy agent and release resources
|
|
41
|
+
*/
|
|
42
|
+
destroy(): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Get tool definitions
|
|
45
|
+
*/
|
|
46
|
+
getToolDefinitions(): ToolDefinition[];
|
|
47
|
+
/**
|
|
48
|
+
* Set agent for the tools manager
|
|
49
|
+
*/
|
|
50
|
+
setAgent(agent: TAgent): void;
|
|
51
|
+
/**
|
|
52
|
+
* Helper: Convert base64 screenshot to image content array
|
|
53
|
+
*/
|
|
54
|
+
protected buildScreenshotContent(screenshot: string): {
|
|
55
|
+
type: "image";
|
|
56
|
+
data: string;
|
|
57
|
+
mimeType: string;
|
|
58
|
+
}[];
|
|
59
|
+
/**
|
|
60
|
+
* Helper: Build a simple text result for tool responses
|
|
61
|
+
*/
|
|
62
|
+
protected buildTextResult(text: string): {
|
|
63
|
+
content: {
|
|
64
|
+
type: "text";
|
|
65
|
+
text: string;
|
|
66
|
+
}[];
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Create a disconnect handler for releasing platform resources
|
|
70
|
+
* @param platformName Human-readable platform name for the response message
|
|
71
|
+
* @returns Handler function that destroys the agent and returns appropriate response
|
|
72
|
+
*/
|
|
73
|
+
protected createDisconnectHandler(platformName: string): () => Promise<{
|
|
74
|
+
content: {
|
|
75
|
+
type: "text";
|
|
76
|
+
text: string;
|
|
77
|
+
}[];
|
|
78
|
+
}>;
|
|
79
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import type { BaseAgent, BaseDevice, IMidsceneTools, ToolDefinition } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Base class for platform-specific MCP tools
|
|
5
|
+
* Generic type TAgent allows subclasses to use their specific agent types
|
|
6
|
+
*/
|
|
7
|
+
export declare abstract class BaseMidsceneTools<TAgent extends BaseAgent = BaseAgent> implements IMidsceneTools {
|
|
8
|
+
protected mcpServer?: McpServer;
|
|
9
|
+
protected agent?: TAgent;
|
|
10
|
+
protected toolDefinitions: ToolDefinition[];
|
|
11
|
+
/**
|
|
12
|
+
* Ensure agent is initialized and ready for use.
|
|
13
|
+
* Must be implemented by subclasses to create platform-specific agent.
|
|
14
|
+
* @param initParam Optional initialization parameter (platform-specific, e.g., URL, device ID)
|
|
15
|
+
* @returns Promise resolving to initialized agent instance
|
|
16
|
+
* @throws Error if agent initialization fails
|
|
17
|
+
*/
|
|
18
|
+
protected abstract ensureAgent(initParam?: string): Promise<TAgent>;
|
|
19
|
+
/**
|
|
20
|
+
* Optional: prepare platform-specific tools (e.g., device connection)
|
|
21
|
+
*/
|
|
22
|
+
protected preparePlatformTools(): ToolDefinition[];
|
|
23
|
+
/**
|
|
24
|
+
* Must be implemented by subclasses to create a temporary device instance
|
|
25
|
+
* This allows getting real actionSpace without connecting to device
|
|
26
|
+
*/
|
|
27
|
+
protected abstract createTemporaryDevice(): BaseDevice;
|
|
28
|
+
/**
|
|
29
|
+
* Initialize all tools by querying actionSpace
|
|
30
|
+
* Uses two-layer fallback strategy:
|
|
31
|
+
* 1. Try to get actionSpace from connected agent (if available)
|
|
32
|
+
* 2. Create temporary device instance to read actionSpace (always succeeds)
|
|
33
|
+
*/
|
|
34
|
+
initTools(): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Attach to MCP server and register all tools
|
|
37
|
+
*/
|
|
38
|
+
attachToServer(server: McpServer): void;
|
|
39
|
+
/**
|
|
40
|
+
* Cleanup method - destroy agent and release resources
|
|
41
|
+
*/
|
|
42
|
+
destroy(): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Get tool definitions
|
|
45
|
+
*/
|
|
46
|
+
getToolDefinitions(): ToolDefinition[];
|
|
47
|
+
/**
|
|
48
|
+
* Set agent for the tools manager
|
|
49
|
+
*/
|
|
50
|
+
setAgent(agent: TAgent): void;
|
|
51
|
+
/**
|
|
52
|
+
* Helper: Convert base64 screenshot to image content array
|
|
53
|
+
*/
|
|
54
|
+
protected buildScreenshotContent(screenshot: string): {
|
|
55
|
+
type: "image";
|
|
56
|
+
data: string;
|
|
57
|
+
mimeType: string;
|
|
58
|
+
}[];
|
|
59
|
+
/**
|
|
60
|
+
* Helper: Build a simple text result for tool responses
|
|
61
|
+
*/
|
|
62
|
+
protected buildTextResult(text: string): {
|
|
63
|
+
content: {
|
|
64
|
+
type: "text";
|
|
65
|
+
text: string;
|
|
66
|
+
}[];
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Create a disconnect handler for releasing platform resources
|
|
70
|
+
* @param platformName Human-readable platform name for the response message
|
|
71
|
+
* @returns Handler function that destroys the agent and returns appropriate response
|
|
72
|
+
*/
|
|
73
|
+
protected createDisconnectHandler(platformName: string): () => Promise<{
|
|
74
|
+
content: {
|
|
75
|
+
type: "text";
|
|
76
|
+
text: string;
|
|
77
|
+
}[];
|
|
78
|
+
}>;
|
|
79
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
interface RslibPluginApi {
|
|
2
|
+
onAfterBuild: (callback: () => void) => void;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Rslib plugin to inject report HTML from @xiuchang-midscene/core dist into MCP bundle.
|
|
6
|
+
* This runs after build and reads the already-injected HTML from core.
|
|
7
|
+
*
|
|
8
|
+
* Prerequisites:
|
|
9
|
+
* - @midscene/report must be in devDependencies to ensure correct build order
|
|
10
|
+
* - @xiuchang-midscene/core dist must exist with injected HTML
|
|
11
|
+
*
|
|
12
|
+
* @param packageDir - The directory of the MCP package (use __dirname)
|
|
13
|
+
*/
|
|
14
|
+
export declare function injectReportHtmlFromCore(packageDir: string): {
|
|
15
|
+
name: string;
|
|
16
|
+
setup(api: RslibPluginApi): void;
|
|
17
|
+
};
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
interface RslibPluginApi {
|
|
2
|
+
onAfterBuild: (callback: () => void) => void;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Rslib plugin to inject report HTML from @midscene/core dist into MCP bundle.
|
|
6
|
+
* This runs after build and reads the already-injected HTML from core.
|
|
7
|
+
*
|
|
8
|
+
* Prerequisites:
|
|
9
|
+
* - @midscene/report must be in devDependencies to ensure correct build order
|
|
10
|
+
* - @midscene/core dist must exist with injected HTML
|
|
11
|
+
*
|
|
12
|
+
* @param packageDir - The directory of the MCP package (use __dirname)
|
|
13
|
+
*/
|
|
14
|
+
export declare function injectReportHtmlFromCore(packageDir: string): {
|
|
15
|
+
name: string;
|
|
16
|
+
setup(api: RslibPluginApi): void;
|
|
17
|
+
};
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import type { BaseMCPServer } from './base-server';
|
|
2
|
+
import type { HttpLaunchOptions, LaunchMCPServerResult } from './base-server';
|
|
3
|
+
import type { IMidsceneTools } from './types';
|
|
4
|
+
export interface LaunchMCPServerOptions extends HttpLaunchOptions {
|
|
5
|
+
/**
|
|
6
|
+
* Whether to show server logs
|
|
7
|
+
* @default true
|
|
8
|
+
*/
|
|
9
|
+
verbose?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Generic agent type (avoid importing from @xiuchang-midscene/core to prevent circular deps)
|
|
13
|
+
*/
|
|
14
|
+
export interface GenericAgent<TDevice = any> {
|
|
15
|
+
interface: TDevice;
|
|
16
|
+
constructor: {
|
|
17
|
+
name: string;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Additional information for logging server startup
|
|
22
|
+
*/
|
|
23
|
+
export interface StartupInfo {
|
|
24
|
+
port?: number;
|
|
25
|
+
host?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface MCPServerLauncherConfig<AgentType extends GenericAgent = GenericAgent, ToolsManagerType extends IMidsceneTools = IMidsceneTools> {
|
|
28
|
+
agent: AgentType;
|
|
29
|
+
platformName: string;
|
|
30
|
+
ToolsManagerClass: new (...args: any[]) => ToolsManagerType;
|
|
31
|
+
MCPServerClass: new (toolsManager?: ToolsManagerType) => BaseMCPServer;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Create a generic MCP server launcher for a given agent, tools manager, and MCP server.
|
|
35
|
+
*
|
|
36
|
+
* This helper centralizes the common wiring logic used by platform-specific launchers:
|
|
37
|
+
* it constructs a tools manager, attaches the provided `agent` to it, then instantiates
|
|
38
|
+
* the `MCPServerClass` and exposes convenience methods to start the server over stdio
|
|
39
|
+
* (`launch`) or HTTP (`launchHttp`).
|
|
40
|
+
*
|
|
41
|
+
* Use this helper when adding a new platform-specific launcher or when you want to
|
|
42
|
+
* avoid duplicating boilerplate code for starting an MCP server. Typically, callers
|
|
43
|
+
* provide:
|
|
44
|
+
* - an `agent` instance that contains the underlying device on its `interface` property
|
|
45
|
+
* - a `ToolsManagerClass` that knows how to expose tools for that agent
|
|
46
|
+
* - an `MCPServerClass` that implements the MCP protocol and supports `launch` and
|
|
47
|
+
* `launchHttp` methods.
|
|
48
|
+
*
|
|
49
|
+
* The returned object has two methods:
|
|
50
|
+
* - `launch(options?)` to start the server using stdio transport
|
|
51
|
+
* - `launchHttp(options)` to start the server using HTTP transport
|
|
52
|
+
* Both methods accept a `verbose` flag to control console logging.
|
|
53
|
+
*
|
|
54
|
+
* @param config Configuration describing the agent, platform name (for logging),
|
|
55
|
+
* tools manager implementation, and MCP server implementation.
|
|
56
|
+
*
|
|
57
|
+
* @returns An object with `launch` and `launchHttp` methods to start the MCP server.
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* import { createMCPServerLauncher } from '@xiuchang-midscene/shared/mcp';
|
|
62
|
+
* import { Agent } from '@xiuchang-midscene/core/agent';
|
|
63
|
+
* import { WebMidsceneTools } from './web-tools';
|
|
64
|
+
* import { WebMCPServer } from './server';
|
|
65
|
+
*
|
|
66
|
+
* const agent = new Agent();
|
|
67
|
+
* const launcher = createMCPServerLauncher({
|
|
68
|
+
* agent,
|
|
69
|
+
* platformName: 'Web',
|
|
70
|
+
* ToolsManagerClass: WebMidsceneTools,
|
|
71
|
+
* MCPServerClass: WebMCPServer,
|
|
72
|
+
* });
|
|
73
|
+
*
|
|
74
|
+
* // Start with stdio
|
|
75
|
+
* await launcher.launch({ verbose: true });
|
|
76
|
+
*
|
|
77
|
+
* // Or start with HTTP
|
|
78
|
+
* await launcher.launchHttp({ port: 3000, host: 'localhost' });
|
|
79
|
+
* ```
|
|
80
|
+
*
|
|
81
|
+
* @internal
|
|
82
|
+
*/
|
|
83
|
+
export declare function createMCPServerLauncher<AgentType extends GenericAgent, ToolsManagerType extends IMidsceneTools>(config: MCPServerLauncherConfig<AgentType, ToolsManagerType>): {
|
|
84
|
+
/**
|
|
85
|
+
* Launch the MCP server with stdio transport
|
|
86
|
+
*/
|
|
87
|
+
launch(options?: {
|
|
88
|
+
verbose?: boolean;
|
|
89
|
+
}): Promise<LaunchMCPServerResult>;
|
|
90
|
+
/**
|
|
91
|
+
* Launch the MCP server with HTTP transport
|
|
92
|
+
*/
|
|
93
|
+
launchHttp(options: LaunchMCPServerOptions): Promise<LaunchMCPServerResult>;
|
|
94
|
+
};
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import type { BaseMCPServer } from './base-server';
|
|
2
|
+
import type { HttpLaunchOptions, LaunchMCPServerResult } from './base-server';
|
|
3
|
+
import type { IMidsceneTools } from './types';
|
|
4
|
+
export interface LaunchMCPServerOptions extends HttpLaunchOptions {
|
|
5
|
+
/**
|
|
6
|
+
* Whether to show server logs
|
|
7
|
+
* @default true
|
|
8
|
+
*/
|
|
9
|
+
verbose?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Generic agent type (avoid importing from @midscene/core to prevent circular deps)
|
|
13
|
+
*/
|
|
14
|
+
export interface GenericAgent<TDevice = any> {
|
|
15
|
+
interface: TDevice;
|
|
16
|
+
constructor: {
|
|
17
|
+
name: string;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Additional information for logging server startup
|
|
22
|
+
*/
|
|
23
|
+
export interface StartupInfo {
|
|
24
|
+
port?: number;
|
|
25
|
+
host?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface MCPServerLauncherConfig<AgentType extends GenericAgent = GenericAgent, ToolsManagerType extends IMidsceneTools = IMidsceneTools> {
|
|
28
|
+
agent: AgentType;
|
|
29
|
+
platformName: string;
|
|
30
|
+
ToolsManagerClass: new (...args: any[]) => ToolsManagerType;
|
|
31
|
+
MCPServerClass: new (toolsManager?: ToolsManagerType) => BaseMCPServer;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Create a generic MCP server launcher for a given agent, tools manager, and MCP server.
|
|
35
|
+
*
|
|
36
|
+
* This helper centralizes the common wiring logic used by platform-specific launchers:
|
|
37
|
+
* it constructs a tools manager, attaches the provided `agent` to it, then instantiates
|
|
38
|
+
* the `MCPServerClass` and exposes convenience methods to start the server over stdio
|
|
39
|
+
* (`launch`) or HTTP (`launchHttp`).
|
|
40
|
+
*
|
|
41
|
+
* Use this helper when adding a new platform-specific launcher or when you want to
|
|
42
|
+
* avoid duplicating boilerplate code for starting an MCP server. Typically, callers
|
|
43
|
+
* provide:
|
|
44
|
+
* - an `agent` instance that contains the underlying device on its `interface` property
|
|
45
|
+
* - a `ToolsManagerClass` that knows how to expose tools for that agent
|
|
46
|
+
* - an `MCPServerClass` that implements the MCP protocol and supports `launch` and
|
|
47
|
+
* `launchHttp` methods.
|
|
48
|
+
*
|
|
49
|
+
* The returned object has two methods:
|
|
50
|
+
* - `launch(options?)` to start the server using stdio transport
|
|
51
|
+
* - `launchHttp(options)` to start the server using HTTP transport
|
|
52
|
+
* Both methods accept a `verbose` flag to control console logging.
|
|
53
|
+
*
|
|
54
|
+
* @param config Configuration describing the agent, platform name (for logging),
|
|
55
|
+
* tools manager implementation, and MCP server implementation.
|
|
56
|
+
*
|
|
57
|
+
* @returns An object with `launch` and `launchHttp` methods to start the MCP server.
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* import { createMCPServerLauncher } from '@midscene/shared/mcp';
|
|
62
|
+
* import { Agent } from '@midscene/core/agent';
|
|
63
|
+
* import { WebMidsceneTools } from './web-tools';
|
|
64
|
+
* import { WebMCPServer } from './server';
|
|
65
|
+
*
|
|
66
|
+
* const agent = new Agent();
|
|
67
|
+
* const launcher = createMCPServerLauncher({
|
|
68
|
+
* agent,
|
|
69
|
+
* platformName: 'Web',
|
|
70
|
+
* ToolsManagerClass: WebMidsceneTools,
|
|
71
|
+
* MCPServerClass: WebMCPServer,
|
|
72
|
+
* });
|
|
73
|
+
*
|
|
74
|
+
* // Start with stdio
|
|
75
|
+
* await launcher.launch({ verbose: true });
|
|
76
|
+
*
|
|
77
|
+
* // Or start with HTTP
|
|
78
|
+
* await launcher.launchHttp({ port: 3000, host: 'localhost' });
|
|
79
|
+
* ```
|
|
80
|
+
*
|
|
81
|
+
* @internal
|
|
82
|
+
*/
|
|
83
|
+
export declare function createMCPServerLauncher<AgentType extends GenericAgent, ToolsManagerType extends IMidsceneTools>(config: MCPServerLauncherConfig<AgentType, ToolsManagerType>): {
|
|
84
|
+
/**
|
|
85
|
+
* Launch the MCP server with stdio transport
|
|
86
|
+
*/
|
|
87
|
+
launch(options?: {
|
|
88
|
+
verbose?: boolean;
|
|
89
|
+
}): Promise<LaunchMCPServerResult>;
|
|
90
|
+
/**
|
|
91
|
+
* Launch the MCP server with HTTP transport
|
|
92
|
+
*/
|
|
93
|
+
launchHttp(options: LaunchMCPServerOptions): Promise<LaunchMCPServerResult>;
|
|
94
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ActionSpaceItem, BaseAgent, ToolDefinition } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Converts DeviceAction from actionSpace into MCP ToolDefinition
|
|
4
|
+
* This is the core logic that removes need for hardcoded tool definitions
|
|
5
|
+
*/
|
|
6
|
+
export declare function generateToolsFromActionSpace(actionSpace: ActionSpaceItem[], getAgent: () => Promise<BaseAgent>): ToolDefinition[];
|
|
7
|
+
/**
|
|
8
|
+
* Generate common tools (screenshot, act)
|
|
9
|
+
*/
|
|
10
|
+
export declare function generateCommonTools(getAgent: () => Promise<BaseAgent>): ToolDefinition[];
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ActionSpaceItem, BaseAgent, ToolDefinition } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Converts DeviceAction from actionSpace into MCP ToolDefinition
|
|
4
|
+
* This is the core logic that removes need for hardcoded tool definitions
|
|
5
|
+
*/
|
|
6
|
+
export declare function generateToolsFromActionSpace(actionSpace: ActionSpaceItem[], getAgent: () => Promise<BaseAgent>): ToolDefinition[];
|
|
7
|
+
/**
|
|
8
|
+
* Generate common tools (screenshot, act)
|
|
9
|
+
*/
|
|
10
|
+
export declare function generateCommonTools(getAgent: () => Promise<BaseAgent>): ToolDefinition[];
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import type { z } from 'zod';
|
|
3
|
+
/**
|
|
4
|
+
* Default timeout constants for app loading verification
|
|
5
|
+
*/
|
|
6
|
+
export declare const defaultAppLoadingTimeoutMs = 10000;
|
|
7
|
+
export declare const defaultAppLoadingCheckIntervalMs = 2000;
|
|
8
|
+
/**
|
|
9
|
+
* Content item types for tool results (MCP compatible)
|
|
10
|
+
*/
|
|
11
|
+
export type ToolResultContent = {
|
|
12
|
+
type: 'text';
|
|
13
|
+
text: string;
|
|
14
|
+
} | {
|
|
15
|
+
type: 'image';
|
|
16
|
+
data: string;
|
|
17
|
+
mimeType: string;
|
|
18
|
+
} | {
|
|
19
|
+
type: 'audio';
|
|
20
|
+
data: string;
|
|
21
|
+
mimeType: string;
|
|
22
|
+
} | {
|
|
23
|
+
type: 'resource';
|
|
24
|
+
resource: {
|
|
25
|
+
text: string;
|
|
26
|
+
uri: string;
|
|
27
|
+
mimeType?: string;
|
|
28
|
+
} | {
|
|
29
|
+
uri: string;
|
|
30
|
+
blob: string;
|
|
31
|
+
mimeType?: string;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Result type for tool execution (MCP compatible)
|
|
36
|
+
*/
|
|
37
|
+
export interface ToolResult {
|
|
38
|
+
[x: string]: unknown;
|
|
39
|
+
content: ToolResultContent[];
|
|
40
|
+
isError?: boolean;
|
|
41
|
+
_meta?: Record<string, unknown>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Tool handler function type
|
|
45
|
+
* Takes parsed arguments and returns a tool result
|
|
46
|
+
*/
|
|
47
|
+
export type ToolHandler<T = Record<string, unknown>> = (args: T) => Promise<ToolResult>;
|
|
48
|
+
/**
|
|
49
|
+
* Tool schema type using Zod
|
|
50
|
+
*/
|
|
51
|
+
export type ToolSchema = Record<string, z.ZodTypeAny>;
|
|
52
|
+
/**
|
|
53
|
+
* Tool definition for MCP server
|
|
54
|
+
*/
|
|
55
|
+
export interface ToolDefinition<T = Record<string, unknown>> {
|
|
56
|
+
name: string;
|
|
57
|
+
description: string;
|
|
58
|
+
schema: ToolSchema;
|
|
59
|
+
handler: ToolHandler<T>;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Tool type for mcpKitForAgent return value
|
|
63
|
+
*/
|
|
64
|
+
export type Tool = ToolDefinition;
|
|
65
|
+
/**
|
|
66
|
+
* Action space item definition
|
|
67
|
+
* Note: Intentionally no index signature to maintain compatibility with DeviceAction
|
|
68
|
+
*/
|
|
69
|
+
export interface ActionSpaceItem {
|
|
70
|
+
name: string;
|
|
71
|
+
description?: string;
|
|
72
|
+
args?: Record<string, unknown>;
|
|
73
|
+
paramSchema?: z.ZodTypeAny;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Base agent interface
|
|
77
|
+
* Represents a platform-specific agent (Android, iOS, Web)
|
|
78
|
+
* Note: Return types use `unknown` for compatibility with platform-specific implementations
|
|
79
|
+
*/
|
|
80
|
+
export interface BaseAgent {
|
|
81
|
+
getActionSpace(): Promise<ActionSpaceItem[]>;
|
|
82
|
+
destroy?(): Promise<void>;
|
|
83
|
+
page?: {
|
|
84
|
+
screenshotBase64(): Promise<string>;
|
|
85
|
+
};
|
|
86
|
+
aiAction?: (description: string, params?: Record<string, unknown>) => Promise<unknown>;
|
|
87
|
+
aiWaitFor?: (assertion: string, options: Record<string, unknown>) => Promise<unknown>;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Base device interface for temporary device instances
|
|
91
|
+
*/
|
|
92
|
+
export interface BaseDevice {
|
|
93
|
+
actionSpace(): ActionSpaceItem[];
|
|
94
|
+
destroy?(): Promise<void>;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Interface for platform-specific MCP tools manager
|
|
98
|
+
*/
|
|
99
|
+
export interface IMidsceneTools {
|
|
100
|
+
attachToServer(server: McpServer): void;
|
|
101
|
+
initTools(): Promise<void>;
|
|
102
|
+
destroy?(): Promise<void>;
|
|
103
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import type { z } from 'zod';
|
|
3
|
+
/**
|
|
4
|
+
* Default timeout constants for app loading verification
|
|
5
|
+
*/
|
|
6
|
+
export declare const defaultAppLoadingTimeoutMs = 10000;
|
|
7
|
+
export declare const defaultAppLoadingCheckIntervalMs = 2000;
|
|
8
|
+
/**
|
|
9
|
+
* Content item types for tool results (MCP compatible)
|
|
10
|
+
*/
|
|
11
|
+
export type ToolResultContent = {
|
|
12
|
+
type: 'text';
|
|
13
|
+
text: string;
|
|
14
|
+
} | {
|
|
15
|
+
type: 'image';
|
|
16
|
+
data: string;
|
|
17
|
+
mimeType: string;
|
|
18
|
+
} | {
|
|
19
|
+
type: 'audio';
|
|
20
|
+
data: string;
|
|
21
|
+
mimeType: string;
|
|
22
|
+
} | {
|
|
23
|
+
type: 'resource';
|
|
24
|
+
resource: {
|
|
25
|
+
text: string;
|
|
26
|
+
uri: string;
|
|
27
|
+
mimeType?: string;
|
|
28
|
+
} | {
|
|
29
|
+
uri: string;
|
|
30
|
+
blob: string;
|
|
31
|
+
mimeType?: string;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Result type for tool execution (MCP compatible)
|
|
36
|
+
*/
|
|
37
|
+
export interface ToolResult {
|
|
38
|
+
[x: string]: unknown;
|
|
39
|
+
content: ToolResultContent[];
|
|
40
|
+
isError?: boolean;
|
|
41
|
+
_meta?: Record<string, unknown>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Tool handler function type
|
|
45
|
+
* Takes parsed arguments and returns a tool result
|
|
46
|
+
*/
|
|
47
|
+
export type ToolHandler<T = Record<string, unknown>> = (args: T) => Promise<ToolResult>;
|
|
48
|
+
/**
|
|
49
|
+
* Tool schema type using Zod
|
|
50
|
+
*/
|
|
51
|
+
export type ToolSchema = Record<string, z.ZodTypeAny>;
|
|
52
|
+
/**
|
|
53
|
+
* Tool definition for MCP server
|
|
54
|
+
*/
|
|
55
|
+
export interface ToolDefinition<T = Record<string, unknown>> {
|
|
56
|
+
name: string;
|
|
57
|
+
description: string;
|
|
58
|
+
schema: ToolSchema;
|
|
59
|
+
handler: ToolHandler<T>;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Tool type for mcpKitForAgent return value
|
|
63
|
+
*/
|
|
64
|
+
export type Tool = ToolDefinition;
|
|
65
|
+
/**
|
|
66
|
+
* Action space item definition
|
|
67
|
+
* Note: Intentionally no index signature to maintain compatibility with DeviceAction
|
|
68
|
+
*/
|
|
69
|
+
export interface ActionSpaceItem {
|
|
70
|
+
name: string;
|
|
71
|
+
description?: string;
|
|
72
|
+
args?: Record<string, unknown>;
|
|
73
|
+
paramSchema?: z.ZodTypeAny;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Base agent interface
|
|
77
|
+
* Represents a platform-specific agent (Android, iOS, Web)
|
|
78
|
+
* Note: Return types use `unknown` for compatibility with platform-specific implementations
|
|
79
|
+
*/
|
|
80
|
+
export interface BaseAgent {
|
|
81
|
+
getActionSpace(): Promise<ActionSpaceItem[]>;
|
|
82
|
+
destroy?(): Promise<void>;
|
|
83
|
+
page?: {
|
|
84
|
+
screenshotBase64(): Promise<string>;
|
|
85
|
+
};
|
|
86
|
+
aiAction?: (description: string, params?: Record<string, unknown>) => Promise<unknown>;
|
|
87
|
+
aiWaitFor?: (assertion: string, options: Record<string, unknown>) => Promise<unknown>;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Base device interface for temporary device instances
|
|
91
|
+
*/
|
|
92
|
+
export interface BaseDevice {
|
|
93
|
+
actionSpace(): ActionSpaceItem[];
|
|
94
|
+
destroy?(): Promise<void>;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Interface for platform-specific MCP tools manager
|
|
98
|
+
*/
|
|
99
|
+
export interface IMidsceneTools {
|
|
100
|
+
attachToServer(server: McpServer): void;
|
|
101
|
+
initTools(): Promise<void>;
|
|
102
|
+
destroy?(): Promise<void>;
|
|
103
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface PkgInfo {
|
|
2
|
+
name: string;
|
|
3
|
+
version: string;
|
|
4
|
+
dir: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function getRunningPkgInfo(dir?: string): PkgInfo | null;
|
|
7
|
+
/**
|
|
8
|
+
* Find the nearest package.json file recursively
|
|
9
|
+
* @param {string} dir - Home directory
|
|
10
|
+
* @returns {string|null} - The most recent package.json file path or null
|
|
11
|
+
*/
|
|
12
|
+
export declare function findNearestPackageJson(dir: string): string | null;
|
|
13
|
+
export declare function getElementInfosScriptContent(): string;
|
|
14
|
+
export declare function getExtraReturnLogic(tree?: boolean): Promise<string | null>;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface PkgInfo {
|
|
2
|
+
name: string;
|
|
3
|
+
version: string;
|
|
4
|
+
dir: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function getRunningPkgInfo(dir?: string): PkgInfo | null;
|
|
7
|
+
/**
|
|
8
|
+
* Find the nearest package.json file recursively
|
|
9
|
+
* @param {string} dir - Home directory
|
|
10
|
+
* @returns {string|null} - The most recent package.json file path or null
|
|
11
|
+
*/
|
|
12
|
+
export declare function findNearestPackageJson(dir: string): string | null;
|
|
13
|
+
export declare function getElementInfosScriptContent(): string;
|
|
14
|
+
export declare function getExtraReturnLogic(tree?: boolean): Promise<string | null>;
|
|
15
|
+
export {};
|