# Vendored upstream — provenance and integrity

This directory is a **verbatim copy** of the official ZCode `android-emulator`
plugin. It is not hand-edited. Regenerate with:

```bash
node tools/vendor-upstream.mjs --from "<path to android-emulator-plugin>"
```

## Origin

| Field | Value |
| --- | --- |
| Upstream plugin id | `android-emulator` |
| Upstream package | `@zcode/android-emulator-plugin` |
| Upstream version | `0.1.0` |
| Upstream author | Z.ai |
| Upstream declared license | `MIT` |
| Copied from | `<USERPROFILE>\AppData\Local\Programs\ZCode\resources\glm\packages\android-emulator-plugin` |
| Copied at | 2026-09-26T03:56:14.494Z |
| Files | 42 |
| Total bytes | 1488998 |

## Why the compiled artifact is vendored

The upstream plugin is distributed as a **compiled, self-contained stdio MCP
server** (`dist/mcp/server.js`, bundled with esbuild, importing only `node:*`
builtins). Its TypeScript sources live in `apps/zcode-cli/packages/android-emulator-plugin`
inside the ZCode monorepo but are **not included in the open-source snapshot**
(the package is declared in `pnpm-lock.yaml` yet absent from the published tree),
and no public Z.ai repository publishes them. The distributed artifact is
therefore the only faithful source of truth.

`dist/providers/*.js` and `dist/lib/*.js` are kept alongside the bundle because
they are unminified, readable esbuild output and document the exact behavior the
bundle implements. `dist/mcp/server.js` does **not** import them — it is fully
self-contained.

## License

The upstream package declares `MIT` in both its `package.json` and
`.zcode-plugin/plugin.json`, and no separate `LICENSE` file is shipped inside the
plugin directory. The containing ZCode repository is licensed
Apache-2.0 (`LICENSE`) with attribution notices in `NOTICE.md` and
`THIRD-PARTY-NOTICES.md`. The bundled MCP server embeds
`@modelcontextprotocol/server` and `zod`; upstream built it with
`legalComments: "none"`, so no third-party notices survive inside the bundle.

Attribution for this port is recorded in the package `README.md` and in
`src/index.js`.

## File manifest

| File | Bytes | SHA-256 |
| --- | ---: | --- |
| `.mcp.json` | 784 | `c9fce0d79872cd8529c65dff83eecdf5031676f0e100a2f7eb24981f2d120b0a` |
| `.zcode-plugin/plugin.json` | 2408 | `edcf078be1ac388f0ea6381955ffa12b82a7248aaf57eea1010dee7d39111986` |
| `README.md` | 4973 | `4b5f2776a56677784a56604ba303f21b084bd6f14282a29226d0a977f83ccc01` |
| `commands/android-dev.md` | 451 | `a1bc029c6072d5d797e26eef9ecbccd49dde410bf1371214a2863ad1c976ebfa` |
| `dist/lib/path.d.ts` | 218 | `47ddbe5c073519181b02125bb0489051bad2e363df73520e410d7e72fa437948` |
| `dist/lib/path.js` | 617 | `f023cbe895a34831d3b6c5657fbf8d0d17d81c95ddbf6fb1001d4d814950c78d` |
| `dist/lib/result.d.ts` | 324 | `c6e5aa4a300e4f0de88929a1e80255df5b68a24e108e5be1db4da76b1531c567` |
| `dist/lib/result.js` | 600 | `a84b9ebcf224544a41225ae1b8d66589b868ff8846ae5ec09b18747bd0d24bb1` |
| `dist/lib/run.d.ts` | 478 | `29497b6f012f781a13ffe216a98f6fadb6cebd6d402ce31f5d180dad2f91fbdd` |
| `dist/lib/run.js` | 3108 | `6933b9b35e63cd547790222463cf075edcd8fa542355ae5b81edb5fb6f1d9086` |
| `dist/mcp/server.d.ts` | 103 | `e5e5db7f25c4bf6c983e1086693d111d7bf5c4d12f91c956ac86b5cc10e99f8e` |
| `dist/mcp/server.js` | 1389606 | `ea7741076c6cbd818aed6eac93c85ec525201daee952bfd3a10cad96efdfe281` |
| `dist/providers/app.d.ts` | 879 | `d6e8c4aff6b19306d18b87ab0deb9ea5906c9713a75b3485bc37c493f193ce56` |
| `dist/providers/app.js` | 2306 | `039260fd4edc3181671deac5b791329badfffe069bc2827321c30887328a5b64` |
| `dist/providers/avd.d.ts` | 1005 | `b8200cccfd13ef557f105c5c8f9340039356a00b253aa28af161d53c1f0eb07b` |
| `dist/providers/avd.js` | 7070 | `f6e0a5399e1adafda5398e89439f9a3f71d6d468b41ee3f608ed84a6edb36c39` |
| `dist/providers/build.d.ts` | 1552 | `acb5d058ff566ac19810ceed14dae773719d33127a388afe286e146232c7dc4c` |
| `dist/providers/build.js` | 4603 | `c7bf7392b6931be091715d334b3529288ee836928305ceb3a6c9132ceaeadd1b` |
| `dist/providers/config.d.ts` | 378 | `b927b8f6806e9c7500a5d770c52754e1a50f219387efe77aae196b07092f8ee7` |
| `dist/providers/config.js` | 1077 | `d5729606ca12849596417039a21e9863c1b4f33b43213dfb32f7328df5449257` |
| `dist/providers/device.d.ts` | 774 | `d54edf24e3303a970ef610bc06606c4598e4a899a11e80e6d359be116b4d1d48` |
| `dist/providers/device.js` | 3370 | `9fb5bb541da01912b168cf8c37ccc36c2492267f98dd18a8507c292881048181` |
| `dist/providers/logs.d.ts` | 347 | `9b929e04f91f520d328c13be2ba3a3b769f8f2ab4cc6eab6ad699b6883be2abb` |
| `dist/providers/logs.js` | 1159 | `bde13c3add17c804e7ef34576674661a63dd11b12470f43e726fea84889faa48` |
| `dist/providers/preflight.d.ts` | 351 | `572e66411742cf3c44cc61b88a31343292c674198759ee1e27c190009e23638f` |
| `dist/providers/preflight.js` | 4973 | `42bec54f52c0f3377ff4222e6a36f4352550b4f021bea0b9a455f65d0a239196` |
| `dist/providers/project-template.d.ts` | 345 | `dde2bba5e89ee867ce33114a09b04ad40780089a2b822736c4fce7d1b2c10d41` |
| `dist/providers/project-template.js` | 7040 | `e7d7a8d7022dce6f75b863d4a23c072293cbe7385d03dca92b33aecf2aead082` |
| `dist/providers/project.d.ts` | 840 | `283283f10cefd448a2ae72599770547704d165b2f7ea7e0b5931402cccf6ae47` |
| `dist/providers/project.js` | 7774 | `8e7f2bf31f93dfab098c3adc2dc620dc0b62db0d1cf418f2c35f0f2c94daa8d4` |
| `dist/providers/screenshot.d.ts` | 305 | `22a97a2c55a6d259e6fc329390d9c00e614d1a22691706daedd3c0d6a68bb91a` |
| `dist/providers/screenshot.js` | 2702 | `ef5ae1cdfcdadfbf454dd187069d48124eceff6c75e0a8a837242f9090b67c81` |
| `dist/providers/sdk.d.ts` | 590 | `b336323bab16879c7037057cac777b437ff7ba15d7b4e5764891b2daa42171dd` |
| `dist/providers/sdk.js` | 6319 | `8126f8e09a9c6170bcc78d4b2139de8e6ac57ae3df526b759257c4538a3a3d60` |
| `dist/providers/ui.d.ts` | 2182 | `de3f32195d99556fbe94ddbaf5063d7b10fd70bf902489e4cbdc7e34bb26882b` |
| `dist/providers/ui.js` | 5089 | `7f256f9835c3e9a7947142745e121de0c6a5dc743479a3241c51dccdae66b7d3` |
| `hooks/hooks.json` | 21 | `b56c9265773cc456d686833a5102f34eae5da1dba76a822276974d1c5f7fa4d9` |
| `package.json` | 887 | `cb12650e8ee88bca90d6a068fbe627407b77943064806d57fd8c9c4ded175788` |
| `scripts/build-mcp.mjs` | 495 | `84b4b6b29aad8f80c58da0b5bcf8d241307b1a3edd7f62a9ccf05b6cd7a411e0` |
| `skills/android-dev/INSTALL_ENVIRONMENT.md` | 13659 | `dc953832c1f204f51902752ff2a6156c7cf46dbe6685f1a4d8c596f903cf2547` |
| `skills/android-dev/SKILL.md` | 6965 | `40e3754f5c8ea6a060cda3d51828bebf28ad44886420ec5dcad0bd3102f7920e` |
| `templates/compose-app/README.md` | 271 | `2a8e90277f6885f5e23905bf6b63940ecb08475dcdc0b4ba79b4d0603c8334db` |
