Mini Shai-Hulud está de vuelta.
La campaña de la cadena de suministro de npm que hemos estado rastreando desde abril ha lanzado otra oleada, esta vez comprometiendo paquetes importantes en la suite de Alibaba. @antv suite junto con echarts-for-react y timeago.js. Nuestro equipo de malware detectó un gran clúster de versiones de paquetes comprometidas en cientos de nombres de paquetes npm.
Una vez instalado, el payload extrae secretos en texto plano de la memoria del runner de CI/CD, roba credenciales locales de cloud y SSH, e implanta puertas traseras en las configuraciones de VS Code y Claude Code. Más de 2.700 repositorios GitHub maliciosos ya se han creado utilizando tokens robados.
La carga útil se ejecuta en el momento de la instalación. Para cuando cualquier escáner marca el paquete, el código malicioso ya se ha ejecutado en todas las máquinas que lo instalaron. Entraremos en más detalles sobre la importancia de esto en la sección de detección a continuación.
Si ha estado siguiendo nuestra cobertura anterior de la ola de SAP y la ola de TanStack, esta es la misma campaña que sigue expandiéndose.
Qué ocurrió
Nuestro equipo de malware detectó una ráfaga de publicaciones maliciosas el 19 de mayo. Cuando terminamos de clasificar el primer lote, seguían llegando más.
El grueso de la actividad se dirigió a @antv paquetes, un conjunto ampliamente utilizado de librerías JavaScript para visualización de datos, gráficos, mapeo y creación de diagramas. Si ha construido paneles de control, gráficos o interfaces de usuario con gran cantidad de datos en un proyecto JavaScript, es muy probable que algo de esta lista se encuentre en su árbol de dependencias. El conjunto afectado incluye @antv/g2, @antv/g6, @antv/x6, @antv/l7, @antv/s2, @antv/f2, @antv/g, @antv/g2plot, @antv/graphin, y @antv/data-set, junto con paquetes fuera del espacio de nombres como echarts-for-react, timeago.j, size-sensor, y canvas-nest.js.
Más allá @antv, la oleada también afectó a paquetes bajo @lint-md, @openclaw-cn, y @starmind, además de varios paquetes npm sin ámbito.
echarts-for-react solo tiene aproximadamente 1.1 millones de descargas semanales. Una única versión comprometida de un paquete a esa escala puede alcanzar rápidamente muchos entornos.
Esto sigue el mismo patrón que hemos observado en oleadas anteriores. El atacante no necesita comprometer cientos de cuentas individuales. Obtiene acceso a una cuenta de mantenedor con amplios derechos de publicación y distribuye versiones maliciosas a todo lo que esa cuenta puede alcanzar.
Cómo funciona el payload
El enfoque técnico es consistente con variantes anteriores de Mini Shai-Hulud, con algunas diferencias en la nomenclatura de archivos y la infraestructura.
Se inyecta un payload index.js de nivel raíz en el tarball del paquete. El package.json se modifica para ejecutarlo durante la instalación:
"preinstall": "bun run index.js"El archivo index.js está fuertemente ofuscado, utilizando tablas de búsqueda de arrays de cadenas, decodificación en tiempo de ejecución y un desencriptador personalizado para ocultar cadenas sensibles del análisis estático.
El payload también añade una dependencia opcional que replica la técnica que documentamos en la ola de TanStack:
{
"optionalDependencies": {
"@antv/setup": "github:antvis/G2#7cb42f57561c321ecb09b4552802ae0ac55b3a7a"
}
}Esto a veces se denomina una dependencia exótica, una github: referencia prefijada que apunta directamente a un repositorio y commit de GitHub en lugar de a un paquete publicado en npm. Esto proporciona al atacante una segunda ruta de ejecución durante la instalación sin enviar el payload completo en el tarball de npm. npm ejecuta scripts de ciclo de vida para las dependencias de Git durante la instalación, por lo que un paquete que parece una dependencia normal puede ejecutar silenciosamente el payload desde un repositorio completamente separado.
Qué roba el payload
El payload se dirige a máquinas de desarrolladores y entornos CI/CD. Busca:
- Tokens de GitHub
- Tokens de npm
- Tokens OIDC de GitHub Actions
- Credenciales de AWS y metadatos de instancia
- Archivos de cuenta de servicio de Kubernetes
- tokens de HashiCorp Vault
- Claves SSH y claves privadas
- Archivos de autenticación de Docker
- Cadenas de conexión a bases de datos
- Variables de entorno y secretos del sistema de archivos local
Los datos robados se cifran antes de la exfiltración, lo que dificulta la recuperación del texto plano sustraído de las capturas de red. El endpoint de exfiltración se disfraza como una URL de telemetría, lo que puede ser fácil de pasar por alto en los registros del sistema de compilación.
El payload también incluye un mecanismo de fallback basado en GitHub. Si obtiene un token de GitHub utilizable, puede crear un repositorio bajo la cuenta de la víctima y subir allí los datos robados. A lo largo de toda la campaña Mini Shai-Hulud, se han creado más de 2.700 repositorios GitHub maliciosos utilizando tokens robados, empleando la misma nomenclatura temática de Dune y marcadores de campaña invertidos que documentamos en oleadas anteriores.
Persistencia
Esta es la parte que dificulta la limpieza más que en oleadas anteriores.
El payload escribe en .vscode/tasks.json y .claude/settings.json, insertando backdoors en las configuraciones de VS Code y Claude Code. Esto significa que eliminar el paquete malicioso de su lockfile no es suficiente. Si estos archivos no se revisan y limpian, el atacante mantiene un punto de apoyo en la máquina del desarrollador incluso después de que la dependencia haya sido revertida.
Propagación
La carga útil todavía contiene la lógica de propagación de npm que convierte a Mini Shai-Hulud en un gusano, y vale la pena repetir cómo funciona esto porque explica la velocidad de estas oleadas.
Después de robar tokens de npm, los valida contra el registro de npm, enumera los paquetes que el propietario del token puede publicar, descarga los tarballs de los paquetes, inyecta la carga útil maliciosa, añade un preinstall hook, incrementa la versión y republica. El malware no solo está robando secretos de la víctima actual. Está utilizando el acceso de publicación de la víctima para comprometer el siguiente conjunto de paquetes.
Así es como la campaña sigue creciendo. Cada cuenta comprometida se convierte en el punto de entrada para la siguiente oleada, y los mantenedores con amplio acceso de publicación dan al gusano mucho espacio para propagarse.
¿Qué cambió de la oleada de TanStack?
El modelo central es el mismo: ejecución en tiempo de instalación, cargas útiles basadas en Bun, JavaScript ofuscado, recolección de credenciales, abuso de GitHub y republicación de npm. Si ha leído nuestros análisis anteriores, la arquitectura le resultará familiar.
El @antv las muestras utilizan un nivel raíz index.js en lugar de la router_init.js que vimos en los paquetes de TanStack. La infraestructura C2 ha cambiado. La carga útil es algo más pequeña. La persistencia a través de las configuraciones de herramientas IDE y AI es nueva, y vale la pena prestarle atención, porque significa que el atacante está pensando en lo que sucede después de que se limpia el compromiso inicial.
Esta es la tercera oleada importante que hemos rastreado. Pasó de un puñado de paquetes de SAP en abril, a 169 paquetes en la oleada de TanStack, a un conjunto de paquetes mucho mayor ahora. Cada oleada ha sido más rápida y amplia que la anterior.
Por qué la detección rápida no es suficiente
Se ha puesto mucho énfasis en la rapidez con la que se pueden marcar los paquetes maliciosos después de su publicación. Minutos, en algunos casos. Eso suena tranquilizador, pero pasa por alto el problema.
Estos paquetes ejecutan código en el momento de la instalación. Un preinstall hook se ejecuta durante npm install, antes de que el paquete esté completamente desempaquetado. Si un desarrollador o un runner de CI instala una versión comprometida en el lapso entre la publicación y la detección, la carga útil ya se ha ejecutado y las credenciales ya han abandonado la máquina. El daño está hecho antes de que cualquier escáner pueda marcar el paquete.
La detección rápida ayuda en la respuesta a incidentes. Indica qué versiones evitar en el futuro. Pero no protege a los desarrolladores y sistemas de compilación que instalaron el paquete durante esos primeros minutos.
La defensa más efectiva es no instalar nunca una versión de paquete que no haya tenido tiempo de ser verificada. Bloquear paquetes por antigüedad, negándose a instalar cualquier versión publicada hace menos de un cierto número de horas o días, cierra la ventana que dejan abierta los enfoques basados en la detección. Es una política simple y es la que realmente evita que la carga útil se ejecute.
Detección y mitigación
Si no estaba bloqueando paquetes nuevos por antigüedad y una versión comprometida llegó a su entorno, comience con los lockfiles y las cachés de paquetes.
Busque espacios de nombres y paquetes afectados:
@antv/@lint-md/@openclaw-cn/@starmind/echarts-for-reacttimeago.jssize-sensorcanvas-nest.js
Busque archivos de carga útil y marcadores de dependencia:
preinstallhook que contienebun run index.js@antv/setupgithub:antvis/G2#7cb42f57561c321ecb09b4552802ae0ac55b3a7a
Comprobar artefactos de persistencia en máquinas de desarrolladores:
- .
vscode/tasks.jsonpara definiciones de tareas inesperadas .claude/settings.jsonpara cambios de configuración inesperados
Bloquear tráfico de red saliente a:
t.m-kosche.com
Busque en los logs de CI:
- Ejecución inesperada de Bun durante
npm install - Fallos de dependencias opcionales relacionados con
@antv/setup - Conexiones salientes durante la instalación de dependencias
- actividad de publicación de npm desde flujos de trabajo que no deberían haber publicado
- solicitudes de tokens OIDC de GitHub Actions durante pasos inesperados
Si una versión de paquete comprometida se ejecutó en una máquina de desarrollador o un runner de CI, rote los secretos de ese entorno. No se limite a los tokens de npm.
Rote o revise:
- tokens de npm y acceso de publicación de paquetes
- PATs de GitHub y secretos de GitHub Actions
- Credenciales de AWS
- Tokens de cuentas de servicio de Kubernetes
- tokens de Vault
- Claves SSH
- Credenciales de Docker
- Secretos de despliegue
También audite las publicaciones recientes de npm y las ejecuciones de GitHub Actions. Como señalamos en nuestro informe de TanStack: un registro de procedencia válido no prueba que la compilación fuera segura.
Indicadores de compromiso
Indicadores de red:
t[.]m-kosche[.]com
Marcadores de paquete:
@antv/setupgithub:antvis/G2#7cb42f57561c321ecb09b4552802ae0ac55b3a7apreinstallejecución de scriptbun run index.js- Archivo de payload a nivel de raíz incluido fuera del contenido normal del paquete
Artefactos de persistencia:
.vscode/tasks.json.claude/settings.json
Marcadores de campaña:
- Nombres de repositorios con temática de Dune en GitHub (más de 2.700 observados)
- Invertido
Shai-Huludcadenas de texto en descripciones de repositorios resultados/directorios en repositorios creados por atacantes
Los indicadores previamente documentados de las oleadas de SAP y TanStack siguen siendo aplicables. Consulte nuestro informe de TanStack para ver la lista completa de IOC de oleadas anteriores.
Conclusión
Mini Shai-Hulud sigue extendiéndose por el ecosistema npm. Cada oleada ha sido mayor que la anterior, y la @antv Los paquetes introducen herramientas de visualización de datos en el conjunto afectado, junto con los paquetes de enrutamiento, empresariales y de IA de oleadas anteriores. La adición de persistencia de herramientas IDE y de IA significa que eliminar la dependencia maliciosa ya no es suficiente para la limpieza.
Si alguno de los paquetes afectados se ejecutó en su entorno, trate la máquina o el runner como expuestos hasta que se roten los secretos, se eliminen los artefactos de persistencia y se revise la actividad de publicación reciente.
Cómo Aikido protege contra esto
Si eres usuario de Aikido, comprueba tu feed central y filtra los problemas relacionados con malware. Esto aparecerá como un problema crítico de 100/100. Aikido realiza un nuevo análisis cada noche, pero te recomendamos que inicies un nuevo análisis manual ahora mismo. Hemos implementado una regla de detección para buscar los indicadores de compromiso relacionados específicamente con esta campaña. También hemos entrenado nuestra IA de malware para que reconozca los paquetes afectados. La regla rastrea específicamente dependencias exóticas, ganchos de ciclo de vida y técnicas de ejecución de bun relacionadas con esta campaña.
Para una prevención real, no solo detección a posteriori, Aikido ofrece dos capas que abordan directamente el problema en tiempo de instalación.
Aikido Safe Chain (código abierto) intercepta los comandos npm, pnpm y yarn y verifica los paquetes con Aikido Intel antes de la instalación. Bloquea los paquetes comprometidos antes de que puedan ejecutar los hooks de instalación. Si un paquete es marcado o es demasiado nuevo para ser de confianza, no se instala.
La Protección de Dispositivos de Aikido proporciona a los equipos de seguridad visibilidad en tiempo real de las dependencias y extensiones que se ejecutan en las máquinas de los desarrolladores de toda la organización. Aplica políticas como el bloqueo de paquetes por antigüedad, para que una versión publicada hace minutos nunca llegue a una máquina de desarrollador. Cuando algo logra pasar, permite contener el radio de impacto al instante.
Si aún no es usuario de Aikido, puede crear una cuenta y conectar sus repositorios. Nuestra cobertura de malware está incluida en el plan gratuito, no se requiere tarjeta de crédito.
Apéndice: Paquetes y versiones afectados
Lista actual de paquetes y versiones que nuestro equipo ha identificado en todas las oleadas de Mini Shai-Hulud. Esta lista incluye paquetes de las oleadas de SAP, TanStack y @antv.
@antv/a8: 0.1.1, 0.2.1@antv/adjust: 0.3.5, 0.4.5@antv/algorithm: 0.2.26, 0.3.26@antv/async-hook: 2.3.9, 2.4.9@antv/attr: 0.4.5, 0.5.5@antv/ava: 3.5.1, 3.6.1@antv/ava-react: 3.4.2, 3.5.2@antv/awards: 0.1.9, 0.2.9@antv/calendar-heatmap: 1.2.2, 1.3.2@antv/chart-linter: 1.2.6, 1.3.6@antv/chart-node-g6: 0.1.4, 0.2.4@antv/chart-visualization-skills: 0.2.3, 0.3.3@antv/ckb: 2.1.4, 2.2.4@antv/color-schema: 0.3.3, 0.4.3@antv/color-util: 2.1.6, 2.2.6@antv/component: 2.2.11, 2.3.11@antv/coord: 0.5.7, 0.6.7@antv/d3-color: 1.1.0, 1.2.0@antv/d3-interpolate: 1.1.3, 1.2.3@antv/data-samples: 1.1.1, 1.2.1@antv/data-set: 0.12.8, 0.13.8@antv/data-wizard: 2.1.4, 2.2.4@antv/dipper-component: 0.1.4, 0.2.4@antv/dipper-hooks: 0.3.1, 0.4.1@antv/dipper-map: 1.1.10, 1.2.10@antv/dom-util: 2.1.4, 2.2.4@antv/dumi-theme-antv: 0.10.4, 0.9.4@antv/dw-analyzer: 1.2.5, 1.3.5@antv/dw-random: 1.2.7, 1.3.7@antv/dw-transform: 1.2.7, 1.3.7@antv/dw-util: 1.2.4, 1.3.4@antv/event-emitter: 0.2.3, 0.3.3@antv/expr: 1.1.2, 1.2.2@antv/f-charts: 0.1.0, 0.2.0@antv/f-engine: 1.11.0, 1.12.0@antv/f-lottie: 1.11.0, 1.12.0@antv/f-my: 1.11.0, 1.12.0@antv/f-react: 1.11.0, 1.12.0@antv/f-test-utils: 1.1.9, 1.2.9@antv/f-vue: 1.11.0, 1.12.0@antv/f-wx: 1.11.0, 1.12.0@antv/f2: 5.15.0, 5.16.0@antv/f2-algorithm: 5.8.0, 5.9.0@antv/f2-canvas: 1.1.5, 1.2.5@antv/f2-context: 0.1.1, 0.2.1@antv/f2-graphic: 0.1.16, 0.2.16@antv/f2-my: 4.1.52, 4.2.52@antv/f2-react: 5.15.0, 5.16.0@antv/f2-site: 4.1.42, 4.2.42@antv/f2-vue: 4.1.33, 4.2.33@antv/f2-wordcloud: 5.15.0, 5.16.0@antv/f2-wx: 4.1.51, 4.2.51@antv/f6: 0.1.19, 0.2.19@antv/f6-alipay: 0.1.7, 0.2.7@antv/f6-core: 0.1.2, 0.2.2@antv/f6-element: 0.1.1, 0.2.1@antv/f6-hammerjs: 0.1.2, 0.2.2@antv/f6-plugin: 1.1.6, 1.2.6@antv/f6-ui: 1.1.3, 1.2.3@antv/f6-wx: 0.1.7, 0.2.7@antv/g: 6.4.1, 6.5.1@antv/g-base: 0.6.16, 0.7.16@antv/g-camera-api: 2.1.45, 2.2.45@antv/g-canvas: 2.3.0, 2.4.0@antv/g-canvaskit: 1.2.1, 1.3.1@antv/g-compat: 1.1.11, 1.2.11@antv/g-components: 2.1.42, 2.2.42@antv/g-css-layout-api: 1.1.38, 1.2.38@antv/g-css-typed-om-api: 1.1.38, 1.2.38@antv/g-device-api: 1.7.13, 1.8.13@antv/g-dom-mutation-observer-api: 2.1.42, 2.2.42@antv/g-gesture: 3.1.42, 3.2.42@antv/g-image-exporter: 1.1.42, 1.2.42@antv/g-layout-blocklike: 1.8.49, 1.9.49@antv/g-lite: 2.8.0, 2.9.0@antv/g-lottie-player: 1.2.1, 1.3.1@antv/g-math: 3.2.0, 3.3.0@antv/g-mobile: 1.2.5, 1.3.5@antv/g-mobile-canvas: 1.2.1, 1.3.1@antv/g-mobile-canvas-element: 1.1.42, 1.2.42@antv/g-mobile-svg: 1.2.1, 1.3.1@antv/g-mobile-webgl: 1.2.1, 1.3.1@antv/g-pattern: 2.1.42, 2.2.42@antv/g-perf: 1.1.0, 1.2.0@antv/g-plugin-3d: 2.2.1, 2.3.1@antv/g-plugin-a11y: 1.5.1, 1.6.1@antv/g-plugin-annotation: 1.3.0, 1.4.0@antv/g-plugin-box2d: 2.2.1, 2.3.1@antv/g-plugin-canvas-path-generator: 2.2.26, 2.3.26@antv/g-plugin-canvas-picker: 2.4.1, 2.5.1@antv/g-plugin-canvas-renderer: 2.6.1, 2.7.1@antv/g-plugin-canvaskit-renderer: 2.4.1, 2.5.1@antv/g-plugin-control: 2.2.1, 2.3.1@antv/g-plugin-css-select: 2.2.1, 2.3.1@antv/g-plugin-device-renderer: 2.7.1, 2.8.1@antv/g-plugin-dom-interaction: 2.2.31, 2.3.31@antv/g-plugin-dragndrop: 2.2.1, 2.3.1@antv/g-plugin-gesture: 2.2.1, 2.3.1@antv/g-plugin-gpgpu: 1.10.20, 1.11.20@antv/g-plugin-html-renderer: 2.4.1, 2.5.1@antv/g-plugin-image-loader: 2.4.1, 2.5.1@antv/g-plugin-matterjs: 2.2.1, 2.3.1@antv/g-plugin-mobile-interaction: 1.1.42, 1.2.42@antv/g-plugin-physx: 2.2.1, 2.3.1@antv/g-plugin-rough-canvas-renderer: 2.2.1, 2.3.1@antv/g-plugin-rough-svg-renderer: 2.2.1, 2.3.1@antv/g-plugin-svg-picker: 2.1.46, 2.2.46@antv/g-plugin-svg-renderer: 2.5.1, 2.6.1@antv/g-plugin-webgl-device: 1.10.17, 1.11.17@antv/g-plugin-webgl-renderer: 1.1.26, 1.2.26@antv/g-plugin-webgpu-device: 1.10.17, 1.11.17@antv/g-plugin-yoga: 2.4.1, 2.5.1@antv/g-plugin-zdog-canvas-renderer: 2.2.1, 2.3.1@antv/g-plugin-zdog-svg-renderer: 2.2.1, 2.3.1@antv/g-shader-components: 2.1.0, 2.2.0@antv/g-svg: 2.2.1, 2.3.1@antv/g-web-animations-api: 2.2.32, 2.3.32@antv/g-web-components: 2.2.1, 2.3.1@antv/g-webgl: 2.2.1, 2.3.1@antv/g-webgl-compute: 0.1.1, 0.2.1@antv/g-webgpu: 2.2.1, 2.3.1@antv/g-webgpu-compiler: 0.8.2, 0.9.2@antv/g-webgpu-core: 0.8.2, 0.9.2@antv/g-webgpu-engine: 0.8.2, 0.9.2@antv/g-webgpu-raytracer: 0.6.1, 0.7.1@antv/g-webgpu-unitchart: 0.6.1, 0.7.1@antv/g2: 5.5.8, 5.6.8@antv/g2-brush: 0.1.2, 0.2.2@antv/g2-extension-3d: 0.3.0, 0.4.0@antv/g2-extension-ava: 0.3.0, 0.4.0@antv/g2-extension-plot: 0.3.2, 0.4.2@antv/g2-plugin-slider: 2.2.1, 2.3.1@antv/g2-ssr: 0.3.0, 0.4.0@antv/g2plot: 2.5.35, 2.6.35@antv/g2plot-schemas: 1.3.2, 1.4.2@antv/g6: 5.2.1, 5.3.1@antv/g6-alipay: 0.1.1, 0.2.1@antv/g6-cli: 0.1.4, 0.2.4@antv/g6-core: 0.10.24, 0.9.24@antv/g6-editor: 1.3.0, 1.4.0@antv/g6-element: 0.10.25, 0.9.25@antv/g6-extension-3d: 0.2.23, 0.3.23@antv/g6-extension-react: 0.3.7, 0.4.7@antv/g6-mobile: 0.2.2, 0.3.2@antv/g6-pc: 0.10.25, 0.9.25@antv/g6-plugin: 0.10.25, 0.9.25@antv/g6-plugin-map-view: 0.1.4, 0.2.4@antv/g6-plugins: 1.1.9, 1.2.9@antv/g6-react-node: 1.5.8, 1.6.8@antv/g6-ssr: 0.2.1, 0.3.1@antv/g6-wx: 0.1.1, 0.2.1@antv/gatsby-theme: 0.2.0, 0.3.0@antv/geo-coord: 1.1.8, 1.2.8@antv/gi-assets-advance: 2.6.22, 2.7.22@antv/gi-assets-algorithm: 2.4.19, 2.5.19@antv/gi-assets-basic: 2.5.40, 2.6.40@antv/gi-assets-galaxybase: 1.3.15, 1.4.15@antv/gi-assets-graphscope: 2.2.15, 2.3.15@antv/gi-assets-hugegraph: 1.2.15, 1.3.15@antv/gi-assets-janusgraph: 1.2.15, 1.3.15@antv/gi-assets-neo4j: 2.2.15, 2.3.15@antv/gi-assets-scene: 2.3.21, 2.4.21@antv/gi-assets-tugraph: 2.2.15, 2.3.15@antv/gi-assets-tugraph-analytics: 0.3.15, 0.4.15@antv/gi-assets-xlab: 0.2.30, 0.3.30@antv/gi-cli: 1.3.11, 1.4.11@antv/gi-common-components: 1.4.16, 1.5.16@antv/gi-mock-data: 1.1.5, 1.2.5@antv/gi-public-data: 1.1.1, 1.2.1@antv/gi-sdk: 3.1.0, 3.2.0@antv/gi-sdk-app: 1.3.10, 1.4.10@antv/gi-theme-antd: 0.7.11, 0.8.11@antv/github-config-cli: 0.2.0, 0.3.0@antv/gl-matrix: 2.8.1, 2.9.1@antv/gpt-vis: 1.1.0, 1.2.0@antv/gpt-vis-ssr: 0.4.7, 0.5.7@antv/graphin: 3.1.5, 3.2.5@antv/graphin-components: 2.5.1, 2.6.1@antv/graphin-graphscope: 1.1.5, 1.2.5@antv/graphin-icons: 1.1.0, 1.2.0@antv/graphlib: 2.1.4, 2.2.4@antv/hierarchy: 0.8.1, 0.9.1@antv/infographic: 0.3.19, 0.4.19@antv/insight-component: 1.1.0, 1.2.0@antv/interaction: 0.2.5, 0.3.5@antv/istanbul: 0.1.0, 0.2.0@antv/knowledge: 1.2.4, 1.3.4@antv/l7: 2.26.10, 2.27.10@antv/l7-component: 2.26.10, 2.27.10@antv/l7-composite-layers: 0.18.1, 0.19.1@antv/l7-core: 2.26.10, 2.27.10@antv/l7-district: 2.4.12, 2.5.12@antv/l7-draw: 3.2.5, 3.3.5@antv/l7-editor: 1.2.13, 1.3.13@antv/l7-extension-g-layer: 1.1.0, 1.2.0@antv/l7-layers: 2.26.10, 2.27.10@antv/l7-leaflet: 1.1.2, 1.2.2@antv/l7-map: 2.26.10, 2.27.10@antv/l7-mapkit: 0.6.0, 0.7.0@antv/l7-maps: 2.26.10, 2.27.10@antv/l7-mini: 2.21.8, 2.22.8@antv/l7-pass: 1.1.0, 1.2.0@antv/l7-react: 2.5.3, 2.6.3@antv/l7-renderer: 2.26.10, 2.27.10@antv/l7-scene: 2.26.10, 2.27.10@antv/l7-source: 2.26.10, 2.27.10@antv/l7-three: 2.26.10, 2.27.10@antv/l7-utils: 2.26.10, 2.27.10@antv/l7plot: 0.6.11, 0.7.11@antv/l7plot-component: 0.1.11, 0.2.11@antv/larkmap: 1.6.1, 1.7.1@antv/layout-gpu: 1.2.7, 1.3.7@antv/layout-wasm: 1.5.2, 1.6.2@antv/li-aiearth-assets: 0.5.7, 0.6.7@antv/li-analysis-assets: 1.10.1, 1.11.1@antv/li-core-assets: 1.4.7, 1.5.7@antv/li-editor: 1.7.1, 1.8.1@antv/li-p2: 1.10.2, 1.9.2@antv/li-sam-assets: 0.2.4, 0.3.4@antv/li-sdk: 1.6.1, 1.7.1@antv/lite-insight: 2.2.1, 2.3.1@antv/matrix-util: 3.1.4, 3.2.4@antv/mcp-server-antv: 0.2.8, 0.3.8@antv/mcp-server-chart: 0.10.10, 0.11.10@antv/my-f2: 2.2.7, 2.3.7@antv/my-f2-pc: 0.2.1, 0.3.1@antv/narrative-text-editor: 0.3.20, 0.4.20@antv/narrative-text-schema: 0.4.7, 0.5.7@antv/narrative-text-vis: 0.4.16, 0.5.16@antv/path-util: 3.1.1, 3.2.1@antv/react-g: 2.2.1, 2.3.1@antv/s2: 2.8.1, 2.9.1@antv/s2-react: 2.4.1, 2.5.1@antv/s2-react-components: 2.2.2, 2.3.2@antv/s2-ssr: 0.2.1, 0.3.1@antv/s2-vue: 2.3.0, 2.4.0@antv/sam: 0.3.0, 0.4.0@antv/scale: 0.6.2, 0.7.2@antv/semantic-release-pnpm: 1.1.4, 1.2.4@antv/smart-color: 0.3.1, 0.4.1@antv/stat: 0.1.2, 0.2.2@antv/t8: 0.4.0, 0.5.0@antv/thumbnails: 2.1.0, 2.2.0@antv/thumbnails-component: 2.1.0, 2.2.0@antv/torch: 1.1.6, 1.2.6@antv/translator: 1.1.1, 1.2.1@antv/util: 3.4.11, 3.5.11@antv/vendor: 1.1.11, 1.2.11@antv/vis-predict-engine: 0.2.1, 0.3.1@antv/webgpu-graph: 1.1.0, 1.2.0@antv/word-scale-chart: 0.4.4, 0.5.4@antv/wx-f2: 2.2.1, 2.3.1@antv/x6: 3.2.7, 3.3.7@antv/x6-angular-shape: 3.1.1, 3.2.1@antv/x6-common: 2.1.17, 2.2.17@antv/x6-components: 0.11.7, 0.12.7@antv/x6-geometry: 2.1.5, 2.2.5@antv/x6-plugin-clipboard: 2.2.6, 2.3.6@antv/x6-plugin-dnd: 2.2.1, 2.3.1@antv/x6-plugin-export: 2.2.6, 2.3.6@antv/x6-plugin-history: 2.3.4, 2.4.4@antv/x6-plugin-keyboard: 2.3.3, 2.4.3@antv/x6-plugin-minimap: 2.1.7, 2.2.7@antv/x6-plugin-scroller: 2.1.10, 2.2.10@antv/x6-plugin-selection: 2.3.2, 2.4.2@antv/x6-plugin-snapline: 2.2.7, 2.3.7@antv/x6-plugin-stencil: 2.2.5, 2.3.5@antv/x6-plugin-transform: 2.2.8, 2.3.8@antv/x6-react: 0.2.26, 0.3.26@antv/x6-react-components: 2.1.9, 2.2.9@antv/x6-react-shape: 3.1.1, 3.2.1@antv/x6-vector: 1.5.2, 1.6.2@antv/x6-vue-shape: 3.1.2, 3.2.2@antv/x6-vue3-shape: 1.1.0, 1.2.0@antv/xflow: 2.2.13, 2.3.13@antv/xflow-core: 1.1.55, 1.2.55@antv/xflow-diff: 1.1.0, 1.2.0@antv/xflow-extension: 1.1.55, 1.2.55@antv/xflow-hook: 1.1.55, 1.2.55@beproduct/nestjs-auth: 0.1.10, 0.1.11, 0.1.12, 0.1.13, 0.1.14, 0.1.15, 0.1.16, 0.1.17, 0.1.18, 0.1.19, 0.1.2, 0.1.3, 0.1.4, 0.1.5, 0.1.6, 0.1.7, 0.1.8, 0.1.9@cap-js/db-service: 2.10.1@cap-js/postgres: 2.2.2@cap-js/sqlite: 2.2.2@dirigible-ai/sdk: 0.6.2, 0.6.3@draftauth/client: 0.2.1, 0.2.2@draftauth/core: 0.13.1, 0.13.2@draftlab/auth: 0.24.1, 0.24.2@draftlab/auth-router: 0.5.1, 0.5.2@draftlab/db: 0.16.1, 0.16.2@intercom/intercom-php: 5.0.2@lint-md/cli: 2.1.0, 2.2.0@lint-md/core: 2.1.0, 2.2.0@lint-md/parser: 0.1.14, 0.2.14@mesadev/rest: 0.28.3@mesadev/saguaro: 0.4.22@mesadev/sdk: 0.28.3@mistralai/mistralai: 2.2.2, 2.2.3, 2.2.4@mistralai/mistralai-azure: 1.7.1, 1.7.2, 1.7.3@mistralai/mistralai-gcp: 1.7.1, 1.7.2, 1.7.3@ml-toolkit-ts/preprocessing: 1.0.2, 1.0.3@ml-toolkit-ts/xgboost: 1.0.3, 1.0.4@openclaw-cn/cli: 1.4.1@openclaw-cn/feishu: 0.2.11@openclaw-cn/libsignal: 2.1.1@openclaw-cn/toutiao-ops: 1.2.4@opensearch-project/opensearch: 3.5.3, 3.6.2, 3.7.0, 3.8.0@squawk/airport-data: 0.7.4, 0.7.5, 0.7.6, 0.7.7, 0.7.8@squawk/airports: 0.6.2, 0.6.3, 0.6.4, 0.6.5, 0.6.6@squawk/airspace: 0.8.1, 0.8.2, 0.8.3, 0.8.4, 0.8.5@squawk/airspace-data: 0.5.3, 0.5.4, 0.5.5, 0.5.6, 0.5.7@squawk/airway-data: 0.5.4, 0.5.5, 0.5.6, 0.5.7, 0.5.8@squawk/airways: 0.4.2, 0.4.3, 0.4.4, 0.4.5, 0.4.6@squawk/fix-data: 0.6.4, 0.6.5, 0.6.6, 0.6.7, 0.6.8@squawk/fixes: 0.3.2, 0.3.3, 0.3.4, 0.3.5, 0.3.6@squawk/flight-math: 0.5.4, 0.5.5, 0.5.6, 0.5.7, 0.5.8@squawk/flightplan: 0.5.2, 0.5.3, 0.5.4, 0.5.5, 0.5.6@squawk/geo: 0.4.4, 0.4.5, 0.4.6, 0.4.7, 0.4.8@squawk/icao-registry: 0.5.2, 0.5.3, 0.5.4, 0.5.5, 0.5.6@squawk/icao-registry-data: 0.8.4, 0.8.5, 0.8.6, 0.8.7, 0.8.8@squawk/mcp: 0.9.1, 0.9.2, 0.9.3, 0.9.4, 0.9.5@squawk/navaid-data: 0.6.4, 0.6.5, 0.6.6, 0.6.7, 0.6.8@squawk/navaids: 0.4.2, 0.4.3, 0.4.4, 0.4.5, 0.4.6@squawk/notams: 0.3.10, 0.3.6, 0.3.7, 0.3.8, 0.3.9@squawk/procedure-data: 0.7.3, 0.7.4, 0.7.5, 0.7.6, 0.7.7@squawk/procedures: 0.5.2, 0.5.3, 0.5.4, 0.5.5, 0.5.6@squawk/types: 0.8.1, 0.8.2, 0.8.3, 0.8.4, 0.8.5@squawk/units: 0.4.3, 0.4.4, 0.4.5, 0.4.6, 0.4.7@squawk/weather: 0.5.10, 0.5.6, 0.5.7, 0.5.8, 0.5.9@starmind/collector-cli: 0.3.10@supersurkhet/cli: 0.0.2, 0.0.3, 0.0.4, 0.0.5, 0.0.6, 0.0.7@supersurkhet/sdk: 0.0.2, 0.0.3, 0.0.4, 0.0.5, 0.0.6, 0.0.7@tallyui/components: 1.0.1, 1.0.2, 1.0.3@tallyui/connector-medusa: 1.0.1, 1.0.2, 1.0.3@tallyui/connector-shopify: 1.0.1, 1.0.2, 1.0.3@tallyui/connector-vendure: 1.0.1, 1.0.2, 1.0.3@tallyui/connector-woocommerce: 1.0.1, 1.0.2, 1.0.3@tallyui/core: 0.2.1, 0.2.2, 0.2.3@tallyui/database: 1.0.1, 1.0.2, 1.0.3@tallyui/pos: 0.1.1, 0.1.2, 0.1.3@tallyui/storage-sqlite: 0.2.1, 0.2.2, 0.2.3@tallyui/theme: 0.2.1, 0.2.2, 0.2.3@tanstack/arktype-adapter: 1.166.12, 1.166.15@tanstack/eslint-plugin-router: 1.161.12, 1.161.9@tanstack/eslint-plugin-start: 0.0.4, 0.0.7@tanstack/history: 1.161.12, 1.161.9@tanstack/nitro-v2-vite-plugin: 1.154.12, 1.154.15@tanstack/react-router: 1.169.5, 1.169.8@tanstack/react-router-devtools: 1.166.16, 1.166.19@tanstack/react-router-ssr-query: 1.166.15, 1.166.18@tanstack/react-start: 1.167.68, 1.167.71@tanstack/react-start-client: 1.166.51, 1.166.54@tanstack/react-start-rsc: 0.0.47, 0.0.50@tanstack/react-start-server: 1.166.55, 1.166.58@tanstack/router-cli: 1.166.46, 1.166.49@tanstack/router-core: 1.169.5, 1.169.8@tanstack/router-devtools: 1.166.16, 1.166.19@tanstack/router-devtools-core: 1.167.6, 1.167.9@tanstack/router-generator: 1.166.45, 1.166.48@tanstack/router-plugin: 1.167.38, 1.167.41@tanstack/router-ssr-query-core: 1.168.3, 1.168.6@tanstack/router-utils: 1.161.11, 1.161.14@tanstack/router-vite-plugin: 1.166.53, 1.166.56@tanstack/solid-router: 1.169.5, 1.169.8@tanstack/solid-router-devtools: 1.166.16, 1.166.19@tanstack/solid-router-ssr-query: 1.166.15, 1.166.18@tanstack/solid-start: 1.167.65, 1.167.68@tanstack/solid-start-client: 1.166.50, 1.166.53@tanstack/solid-start-server: 1.166.54, 1.166.57@tanstack/start-client-core: 1.168.5, 1.168.8@tanstack/start-fn-stubs: 1.161.12, 1.161.9@tanstack/start-plugin-core: 1.169.23, 1.169.26@tanstack/start-server-core: 1.167.33, 1.167.36@tanstack/start-static-server-functions: 1.166.44, 1.166.47@tanstack/start-storage-context: 1.166.38, 1.166.41@tanstack/valibot-adapter: 1.166.12, 1.166.15@tanstack/virtual-file-routes: 1.161.10, 1.161.13@tanstack/vue-router: 1.169.5, 1.169.8@tanstack/vue-router-devtools: 1.166.16, 1.166.19@tanstack/vue-router-ssr-query: 1.166.15, 1.166.18@tanstack/vue-start: 1.167.61, 1.167.64@tanstack/vue-start-client: 1.166.46, 1.166.49@tanstack/vue-start-server: 1.166.50, 1.166.53@tanstack/zod-adapter: 1.166.12, 1.166.15@taskflow-corp/cli: 0.1.24, 0.1.25, 0.1.26, 0.1.27, 0.1.28, 0.1.29@tolka/cli: 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6@uipath/access-policy-sdk: 0.3.1@uipath/access-policy-tool: 0.3.1@uipath/admin-tool: 0.1.1@uipath/agent-sdk: 1.0.2@uipath/agent-tool: 1.0.1@uipath/agent.sdk: 0.0.18@uipath/aops-policy-tool: 0.3.1@uipath/ap-chat: 1.5.7@uipath/api-workflow-tool: 1.0.1@uipath/apollo-core: 5.9.2@uipath/apollo-react: 4.24.5@uipath/apollo-wind: 2.16.2@uipath/auth: 1.0.1@uipath/case-tool: 1.0.1@uipath/cli: 1.0.1@uipath/codedagent-tool: 1.0.1@uipath/codedagents-tool: 0.1.12@uipath/codedapp-tool: 1.0.1@uipath/common: 1.0.1@uipath/context-grounding-tool: 0.1.1@uipath/data-fabric-tool: 1.0.2@uipath/docsai-tool: 1.0.1@uipath/filesystem: 1.0.1@uipath/flow-tool: 1.0.2@uipath/functions-tool: 1.0.1@uipath/gov-tool: 0.3.1@uipath/identity-tool: 0.1.1@uipath/insights-sdk: 1.0.1@uipath/insights-tool: 1.0.1@uipath/integrationservice-sdk: 1.0.2@uipath/integrationservice-tool: 1.0.2@uipath/llmgw-tool: 1.0.1@uipath/maestro-sdk: 1.0.1@uipath/maestro-tool: 1.0.1@uipath/orchestrator-tool: 1.0.1@uipath/packager-tool-apiworkflow: 0.0.19@uipath/packager-tool-bpmn: 0.0.9@uipath/packager-tool-case: 0.0.9@uipath/packager-tool-connector: 0.0.19@uipath/packager-tool-flow: 0.0.19@uipath/packager-tool-functions: 0.1.1@uipath/packager-tool-webapp: 1.0.6@uipath/packager-tool-workflowcompiler: 0.0.16@uipath/packager-tool-workflowcompiler-browser: 0.0.34@uipath/platform-tool: 1.0.1@uipath/project-packager: 1.1.16@uipath/resource-tool: 1.0.1@uipath/resourcecatalog-tool: 0.1.1@uipath/resources-tool: 0.1.11@uipath/robot: 1.3.4@uipath/rpa-legacy-tool: 1.0.1@uipath/rpa-tool: 0.9.5@uipath/solution-packager: 0.0.35@uipath/solution-tool: 1.0.1@uipath/solutionpackager-sdk: 1.0.11@uipath/solutionpackager-tool-core: 0.0.34@uipath/tasks-tool: 1.0.1@uipath/telemetry: 0.0.7@uipath/test-manager-tool: 1.0.2@uipath/tool-workflowcompiler: 0.0.12@uipath/traces-tool: 1.0.1@uipath/ui-widgets-multi-file-upload: 1.0.1@uipath/uipath-python-bridge: 1.0.1@uipath/vertical-solutions-tool: 1.0.1@uipath/vss: 0.1.6@uipath/widget.sdk: 1.2.3agentwork-cli: 0.1.4, 0.1.5ai-figure: 0.5.0, 0.6.0amapcn: 0.2.2, 0.3.2ast-plugin: 0.1.7, 0.2.7babel-plugin-version: 0.3.3, 0.4.3boring-avatars-vanilla: 1.1.2, 1.2.2byte-parser: 1.1.0, 1.2.0canvas-nest.js: 2.1.4, 2.2.4cmux-agent-mcp: 0.1.3, 0.1.4, 0.1.5, 0.1.6, 0.1.7, 0.1.8cross-stitch: 1.1.3, 1.1.4, 1.1.5, 1.1.6, 1.1.7echarts-for-react: 3.1.7, 3.2.7filesize.js: 2.1.0, 2.2.0fixed-round: 1.1.2, 1.2.2gantt-for-react: 0.3.0, 0.4.0git-branch-selector: 1.3.3, 1.3.4, 1.3.5, 1.3.6, 1.3.7git-git-git: 1.0.10, 1.0.11, 1.0.12, 1.0.8, 1.0.9guardrails-ai: 0.10.1intercom-client: 7.0.4jest-canvas-mock: 2.6.3, 2.7.3jest-date-mock: 1.1.11, 1.2.11jest-electron: 0.2.12, 0.3.12jest-expect: 0.1.1, 0.2.1jest-less-loader: 0.3.0, 0.4.0jest-random-mock: 1.1.0, 1.2.0jest-url-loader: 0.2.0, 0.3.0lightning: 2.6.2, 2.6.3limit-size: 0.2.4, 0.3.4lint-md: 0.3.0, 0.4.0lint-md-cli: 0.2.2, 0.3.2mbt: 1.2.48mcp-echarts: 0.8.1, 0.9.1mcp-mermaid: 0.5.1, 0.6.1mistralai: 2.4.6miz: 1.1.1, 1.2.1ml-toolkit-ts: 1.0.4, 1.0.5nextmove-mcp: 0.1.3, 0.1.4, 0.1.5, 0.1.6, 0.1.7onfire.js: 2.1.1, 2.2.1openclaw-cn: 0.3.0react-adsense: 0.2.0, 0.3.0relationship.js: 1.3.9, 1.4.9ribbon.js: 1.1.2safe-action: 0.8.3, 0.8.4size-sensor: 1.1.4, 1.2.4slice.js: 1.2.1, 1.3.1timeago-react: 3.1.7, 3.2.7timeago.js: 4.1.2, 4.2.2ts-dna: 3.0.1, 3.0.2, 3.0.3, 3.0.4, 3.0.5uri-parse: 1.1.0, 1.2.0word-width: 1.1.1, 1.2.1wot-api: 0.8.1, 0.8.2, 0.8.3, 0.8.4xmorse: 1.1.0, 1.2.0

