Registro público
Informe de salud del softwareesquema 0.23.0 · métricas 1.13.0 · 2026-07-21 17:03 UTC

southleft / figma-console-mcp

Your design system as an API. Connect AI to Figma for extraction, creation, and debugging.

TypeScript · JavaScriptMIT★ 2024 estrellas⑂ 224 forksdesde oct 2025Ver en GitHub ↗

southleft/figma-console-mcp tiene un índice de salud de 65 sobre 100, lo que lo sitúa en la banda Moderado. Su puntuación más alta es Vitality (92/100) y la más baja, Security (39/100). Se actualizó por última vez hace 4 días. Una sola persona concentra la mayor parte del trabajo reciente.

65
global / 100
Moderado

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

65
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

Titularidad

Southleft, LLCOrganización
117 seguidores30 repositorios públicosdesde ene 2020

Este repositorio está respaldado por una organización: una custodia compartida y responsable que puede sobrevivir a cualquier mantenedor individual.

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicaciónEtiquetas
npmfigma-console-mcp1.36.099.70981hace 4 díasmcpfigmaplugindesign-tokensdesign-systemsvariablesfigjamslidesaccessibilityaianthropicclaudecloudflare

Métricas por categoría

Vitalidad

¿Está vivo el proyecto: se escribe código y se publican versiones?

92Excelente · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 4 días
22.8/36Cadencia de commits — 33/52 semanas con commits
18/18Volumen de commits — 553 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year553
human_commit_share1
days_since_last_push4
active_weeks_last_year33
Cómo se puntúa
27/27Publica versiones — 66 versiones publicadas
36/36Recencia de las versiones — última versión hace 4 días
27/27Cadencia de publicación — una versión cada ~4,9 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count66
latest_release_tagv1.36.0
releases_from_tagsno
days_since_latest_release4
mean_days_between_releases4,9
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Signed-Releases. Los pesos restantes se han renormalizado.

Comunidad y Adopción

¿Tiene el proyecto usuarios, descargas, atención y unas condiciones acogedoras para quienes contribuyen?

71Bueno · 18% del índice global
Cómo se puntúa
53.6/60Estrellas — 2024 estrellas
19.6/25Forks — 224 forks
8/15Observadores — 28 observadores
Datos de entrada utilizados
forks224
stars2024
watchers28
growth_stateorganic
growth_factor_pct100
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (MIT)
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno
Cómo se puntúa
66.6/80Descargas mensuales — 99.709 descargas/mes en npm
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packagesfigma-console-mcp
dependents
ecosystemsnpm
total_downloads
monthly_downloads99.709
Excluidos de la puntuación (sin datos o no aplicable): Dependientes en el registro. Los pesos restantes se han renormalizado.

Sostenibilidad y Gobernanza

¿Sobrevivirá el proyecto a sus personas: factor bus, capacidad de respuesta, quién lo respalda y mantenimiento del paquete?

55Moderado · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
0.7/22.5Distribución de commits — el principal contribuyente firma el 97% de los commits
13.5/13.5Amplitud de contribuyentes — 11 contribuyentes
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Datos de entrada utilizados
bus_factor1
contributors_sampled11
top_contributor_share0,967
Cómo se puntúa
22.9/46.8Resolución de issues — 49% de issues cerradas
19.1/38.3Aceptación de PR — 17/34 PR decididos fusionados
0/15OpenSSF Scorecard: Code-Review — Found 0/22 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs17
open_issues24
closed_issues23
issue_closed_ratio0,489
closed_unmerged_prs17
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
14.9/25Alcance del propietario — 117 seguidores de southleft
22.9/25Trayectoria — 30 repos públicos, cuenta de ~6 años
Datos de entrada utilizados
followers117
owner_typeOrganization
is_verified
owner_loginsouthleft
public_repos30
account_age_days2363
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en npm
35/35Recencia de publicación — última publicación hace 4 días
20/20Historial de versiones — 81 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesfigma-console-mcp
ecosystemsnpm
any_deprecatedno
min_days_since_publish4

Calidad de Ingeniería

¿Existen unas prácticas mínimas de ingeniería y documentación?

64Moderado · 20% del índice global
Cómo se puntúa
0/24Flujos de trabajo de CI
24/24Pruebas presentes
16/16Configuración de linter — .eslintrc.json, biome.json
0/9.6Hooks de pre-commit
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — 0 out of 1 merged PRs checked by a CI test -- score normalized to 0
Datos de entrada utilizados
has_cino
has_tests
has_editorconfigno
has_linter_config
has_precommit_configno

Documentación

100Excelente
Cómo se puntúa
30/30README
25/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://southleft.com
10/10Descripción del repositorio
10/10Topics — 6 topics
10/10Wiki
Datos de entrada utilizados
topicsai, design-systems, figma, figma-api, figma-plugins, mcp
has_wiki
homepagehttps://southleft.com
has_readme
has_docs_dir
has_description

Seguridad

¿Son sólidas las prácticas visibles de seguridad y de cadena de suministro, sin exposición jurisdiccional de alto riesgo sin resolver?

39En riesgo · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — 0 out of 1 merged PRs checked by a CI test -- score normalized to 0
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/22 approved changesets -- score normalized to 0
0.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
0/10Dangerous-Workflow — sin datos
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Licencia — license file detected
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — sin datos
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — sin datos
0/7.5Token-Permissions — sin datos
0/7.5Vulnerabilities — 16 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated14
scorecard_versionv5.5.0
checks_inconclusive4
scorecard_aggregate3,1
Excluidos de la puntuación (sin datos o no aplicable): dangerous_workflow, packaging, signed_releases, token_permissions. Los pesos restantes se han renormalizado.
Cómo se puntúa
14/35Dependencias directas libres de avisos conocidos — 1 afectados: ws 8.18.0 (high 7.5)
0/25Dependencias indirectas libres de avisos conocidos — el conjunto transitivo no es separable de las dependencias de desarrollo y prueba en este alcance
40/40Sin avisos pendientes — ningún aviso lleva público más de 90 días
Datos de entrada utilizados
sourceosv
advisories16
affected_packages5
assessed_packages690
unassessed_packages0
affected_by_severityhigh 3, low 2
direct_affected_packages1
Excluidos de la puntuación (sin datos o no aplicable): Dependencias indirectas libres de avisos conocidos. Los pesos restantes se han renormalizado. Se cotejaron 690 dependencias resueltas con OSV. Este repositorio no publica ningún paquete que el índice resuelva, por lo que se evaluó en su lugar el grafo de dependencias del repositorio. Ese grafo mezcla fijaciones de desarrollo y prueba con las dependencias distribuidas, de modo que solo se puntúan las dependencias declaradas en tiempo de ejecución; los hallazgos transitivos se informan como contexto y quedan excluidos de la puntuación. No se analiza la alcanzabilidad.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

65Moderado · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — CLAUDE.md
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 87 de 100 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,87
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes1324
Cómo se puntúa
0/18Arranque con un solo comando
22/22Pruebas automatizadas
11/11Configuración de lint / formato — .eslintrc.json, biome.json
11/11Verificación estática de tipos — tsconfig.json
10/10Entorno reproducible — lockfile
2/10Práctica demostrada con agentes — 1 de los últimos 100 commits con autoría o crédito de agente
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_tests
lockfilespackage-lock.json
has_dockerfileno
typed_language
bootstrap_files
has_devcontainerno
has_linter_config
typecheck_configstsconfig.json
agent_commit_share0,01
toolchain_manifests
dependency_bot_commit_share0
Cómo se puntúa
45/45Código verificable por tipos — TypeScript (tipado estático)
51.1/55Tamaños de archivo manejables — 10/142 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageTypeScript
largest_source_bytes295.107
source_files_sampled142
oversized_source_files10
Cómo se puntúa
0/40Esquema de API (OpenAPI/GraphQL/proto)
20/20Servidor MCP
0/40Ejemplos ejecutables
Datos de entrada utilizados
example_dirs
has_mcp_signal
api_schema_files

Datos clave

2024estrellas de GitHub
11contribuidores
553commits en los últimos 12 meses
4días desde el último push
66versiones publicadas
1factor bus
24issues abiertas
npmecosistemas de paquetes

Advertencias de recopilación de datos

  • deps.dev does not index npm:figma-console-mcp@1.36.0; advisories assessed against the repository dependency graph instead

Más detalle

Historial de estrellas y forks 2024 ★ / 224 ⇿
2024Estrellas
224Forks
65Versiones

Cuándo se añadió cada estrella y fork, recopilado de GitHub y agrupado por día. El crecimiento acumulado se sitúa justo encima de las adiciones diarias que lo componen, de modo que ambos se leen en conjunto: la acumulación orgánica sostenida no se parece en nada a un pico abrupto y efímero. Cuando esa diferencia es medible, se informa como autenticidad del crecimiento.

Solo se muestra el historial más reciente: este repositorio supera la ventana de recopilación, por lo que no se captura el historial más antiguo.

040080012001600200024002024224392026-012026-042026-07
Mayor 0Menor 33Parche 32
OpenSSF Scorecard 3.1 / 10
3.1agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).Scorecard v5.5.0 · 2026-07-21 17:02 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
0CI-Tests0 out of 1 merged PRs checked by a CI test -- score normalized to 0
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/22 approved changesets -- score normalized to 0
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
n/dDangerous-Workflowno workflows found
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
n/dPackagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
10Security-Policysecurity policy file detected
n/dSigned-Releasesno releases found
n/dToken-PermissionsNo tokens found
0Vulnerabilities16 existing vulnerabilities detected
Dependencias directas 11
RegistroPaqueteRestricción de versiónManifiesto
npm@cloudflare/puppeteer^1.0.4package.json
npm@modelcontextprotocol/ext-apps^1.0.1package.json
npm@modelcontextprotocol/sdk^1.26.0package.json
npmagents^0.7.1package.json
npmaxe-core^4.11.2package.json
npmjsdom^29.0.1package.json
npmpino^9.5.0package.json
npmpino-pretty^13.0.0package.json
npmuuid^11.0.3package.json
npmws^8.19.0package.json
npmzod^3.25.76package.json
Todas las dependencias 690

Conjunto completo de dependencias resueltas según el grafo de dependencias de GitHub: 12 paquetes directos y 678 indirectos (transitivos). El cierre transitivo es completo cuando el repositorio incluye un lockfile.

RegistroPaqueteVersiónRelación
npm@cloudflare/puppeteer1.0.4directa
npm@modelcontextprotocol/ext-apps1.0.1directa
npm@modelcontextprotocol/sdk1.26.0directa
npmagents0.7.1directa
npmaxe-core4.11.2directa
npmjsdom29.0.1directa
npmpino9.13.1directa
npmpino-pretty13.1.1directa
npmuuid11.1.1directa
npmws8.18.0directa
npmws8.21.0directa
npmzod3.25.76directa
npm@ai-sdk/gateway3.0.60indirecta
npm@ai-sdk/provider3.0.8indirecta
npm@ai-sdk/provider-utils4.0.16indirecta
npm@apidevtools/json-schema-ref-parser11.9.3indirecta
npm@asamuzakjp/css-color5.1.5indirecta
npm@asamuzakjp/dom-selector7.0.6indirecta
npm@asamuzakjp/nwsapi2.3.9indirecta
npm@babel/code-frame7.29.7indirecta
npm@babel/compat-data7.29.7indirecta
npm@babel/core7.29.7indirecta
npm@babel/generator7.29.7indirecta
npm@babel/helper-compilation-targets7.29.7indirecta
npm@babel/helper-globals7.29.7indirecta
npm@babel/helper-module-imports7.29.7indirecta
npm@babel/helper-module-transforms7.29.7indirecta
npm@babel/helper-plugin-utils7.27.1indirecta
npm@babel/helper-string-parser7.29.7indirecta
npm@babel/helper-validator-identifier7.29.7indirecta
npm@babel/helper-validator-option7.29.7indirecta
npm@babel/helpers7.29.7indirecta
npm@babel/parser7.29.7indirecta
npm@babel/plugin-syntax-async-generators7.8.4indirecta
npm@babel/plugin-syntax-bigint7.8.3indirecta
npm@babel/plugin-syntax-class-properties7.12.13indirecta
npm@babel/plugin-syntax-class-static-block7.14.5indirecta
npm@babel/plugin-syntax-import-attributes7.27.1indirecta
npm@babel/plugin-syntax-import-meta7.10.4indirecta
npm@babel/plugin-syntax-json-strings7.8.3indirecta
npm@babel/plugin-syntax-jsx7.27.1indirecta
npm@babel/plugin-syntax-logical-assignment-operators7.10.4indirecta
npm@babel/plugin-syntax-nullish-coalescing-operator7.8.3indirecta
npm@babel/plugin-syntax-numeric-separator7.10.4indirecta
npm@babel/plugin-syntax-object-rest-spread7.8.3indirecta
npm@babel/plugin-syntax-optional-catch-binding7.8.3indirecta
npm@babel/plugin-syntax-optional-chaining7.8.3indirecta
npm@babel/plugin-syntax-private-property-in-object7.14.5indirecta
npm@babel/plugin-syntax-top-level-await7.14.5indirecta
npm@babel/plugin-syntax-typescript7.27.1indirecta
npm@babel/runtime7.28.6indirecta
npm@babel/runtime-corejs37.29.0indirecta
npm@babel/template7.29.7indirecta
npm@babel/traverse7.29.7indirecta
npm@babel/types7.29.7indirecta
npm@bcoe/v8-coverage0.2.3indirecta
npm@biomejs/biome2.2.5indirecta
npm@biomejs/cli-darwin-arm642.2.5indirecta
npm@biomejs/cli-darwin-x642.2.5indirecta
npm@biomejs/cli-linux-arm642.2.5indirecta
npm@biomejs/cli-linux-arm64-musl2.2.5indirecta
npm@biomejs/cli-linux-x642.2.5indirecta
npm@biomejs/cli-linux-x64-musl2.2.5indirecta
npm@biomejs/cli-win32-arm642.2.5indirecta
npm@biomejs/cli-win32-x642.2.5indirecta
npm@bramus/specificity2.4.2indirecta
npm@cfworker/json-schema4.1.1indirecta
npm@cloudflare/kv-asset-handler0.4.2indirecta
npm@cloudflare/unenv-preset2.15.0indirecta
npm@cloudflare/workerd-darwin-641.20260310.1indirecta
npm@cloudflare/workerd-darwin-arm641.20260310.1indirecta
npm@cloudflare/workerd-linux-641.20260310.1indirecta
npm@cloudflare/workerd-linux-arm641.20260310.1indirecta
npm@cloudflare/workerd-windows-641.20260310.1indirecta
npm@cloudflare/workers-types4.20260702.1indirecta
npm@cspotcode/source-map-support0.8.1indirecta
npm@csstools/color-helpers6.0.2indirecta
npm@csstools/css-calc3.1.1indirecta
npm@csstools/css-color-parser4.0.2indirecta
npm@csstools/css-parser-algorithms4.0.0indirecta
npm@csstools/css-syntax-patches-for-csstree1.1.2indirecta
npm@csstools/css-tokenizer4.0.0indirecta
npm@emnapi/runtime1.11.2indirecta
npm@esbuild/aix-ppc640.25.4indirecta
npm@esbuild/aix-ppc640.27.3indirecta
npm@esbuild/android-arm0.25.4indirecta
npm@esbuild/android-arm0.27.3indirecta
npm@esbuild/android-arm640.25.4indirecta
npm@esbuild/android-arm640.27.3indirecta
npm@esbuild/android-x640.25.4indirecta
npm@esbuild/android-x640.27.3indirecta
npm@esbuild/darwin-arm640.25.4indirecta
npm@esbuild/darwin-arm640.27.3indirecta
npm@esbuild/darwin-x640.25.4indirecta
npm@esbuild/darwin-x640.27.3indirecta
npm@esbuild/freebsd-arm640.25.4indirecta
npm@esbuild/freebsd-arm640.27.3indirecta
npm@esbuild/freebsd-x640.25.4indirecta
npm@esbuild/freebsd-x640.27.3indirecta
npm@esbuild/linux-arm0.25.4indirecta
npm@esbuild/linux-arm0.27.3indirecta
npm@esbuild/linux-arm640.25.4indirecta
npm@esbuild/linux-arm640.27.3indirecta
npm@esbuild/linux-ia320.25.4indirecta
npm@esbuild/linux-ia320.27.3indirecta
npm@esbuild/linux-loong640.25.4indirecta
npm@esbuild/linux-loong640.27.3indirecta
npm@esbuild/linux-mips64el0.25.4indirecta
npm@esbuild/linux-mips64el0.27.3indirecta
npm@esbuild/linux-ppc640.25.4indirecta
npm@esbuild/linux-ppc640.27.3indirecta
npm@esbuild/linux-riscv640.25.4indirecta
npm@esbuild/linux-riscv640.27.3indirecta
npm@esbuild/linux-s390x0.25.4indirecta
npm@esbuild/linux-s390x0.27.3indirecta
npm@esbuild/linux-x640.25.4indirecta
npm@esbuild/linux-x640.27.3indirecta
npm@esbuild/netbsd-arm640.25.4indirecta
npm@esbuild/netbsd-arm640.27.3indirecta
npm@esbuild/netbsd-x640.25.4indirecta
npm@esbuild/netbsd-x640.27.3indirecta
npm@esbuild/openbsd-arm640.25.4indirecta
npm@esbuild/openbsd-arm640.27.3indirecta
npm@esbuild/openbsd-x640.25.4indirecta
npm@esbuild/openbsd-x640.27.3indirecta
npm@esbuild/openharmony-arm640.27.3indirecta
npm@esbuild/sunos-x640.25.4indirecta
npm@esbuild/sunos-x640.27.3indirecta
npm@esbuild/win32-arm640.25.4indirecta
npm@esbuild/win32-arm640.27.3indirecta
npm@esbuild/win32-ia320.25.4indirecta
npm@esbuild/win32-ia320.27.3indirecta
npm@esbuild/win32-x640.25.4indirecta
npm@esbuild/win32-x640.27.3indirecta
npm@exodus/bytes1.15.0indirecta
npm@hono/node-server1.19.14indirecta
npm@img/colour1.1.0indirecta
npm@img/sharp-darwin-arm640.34.5indirecta
npm@img/sharp-darwin-x640.34.5indirecta
npm@img/sharp-libvips-darwin-arm641.2.4indirecta
npm@img/sharp-libvips-darwin-x641.2.4indirecta
npm@img/sharp-libvips-linux-arm1.2.4indirecta
npm@img/sharp-libvips-linux-arm641.2.4indirecta
npm@img/sharp-libvips-linux-ppc641.2.4indirecta
npm@img/sharp-libvips-linux-riscv641.2.4indirecta
npm@img/sharp-libvips-linux-s390x1.2.4indirecta
npm@img/sharp-libvips-linux-x641.2.4indirecta
npm@img/sharp-libvips-linuxmusl-arm641.2.4indirecta
npm@img/sharp-libvips-linuxmusl-x641.2.4indirecta
npm@img/sharp-linux-arm0.34.5indirecta
npm@img/sharp-linux-arm640.34.5indirecta
npm@img/sharp-linux-ppc640.34.5indirecta
npm@img/sharp-linux-riscv640.34.5indirecta
npm@img/sharp-linux-s390x0.34.5indirecta
npm@img/sharp-linux-x640.34.5indirecta
npm@img/sharp-linuxmusl-arm640.34.5indirecta
npm@img/sharp-linuxmusl-x640.34.5indirecta
npm@img/sharp-wasm320.34.5indirecta
npm@img/sharp-win32-arm640.34.5indirecta
npm@img/sharp-win32-ia320.34.5indirecta
npm@img/sharp-win32-x640.34.5indirecta
npm@istanbuljs/load-nyc-config1.1.0indirecta
npm@istanbuljs/schema0.1.3indirecta
npm@jest/console29.7.0indirecta
npm@jest/core29.7.0indirecta
npm@jest/environment29.7.0indirecta
npm@jest/expect29.7.0indirecta
npm@jest/expect-utils29.7.0indirecta
npm@jest/fake-timers29.7.0indirecta
npm@jest/globals29.7.0indirecta
npm@jest/reporters29.7.0indirecta
npm@jest/schemas29.6.3indirecta
npm@jest/source-map29.6.3indirecta
npm@jest/test-result29.7.0indirecta
npm@jest/test-sequencer29.7.0indirecta
npm@jest/transform29.7.0indirecta
npm@jest/types29.6.3indirecta
npm@jridgewell/gen-mapping0.3.13indirecta
npm@jridgewell/remapping2.3.5indirecta
npm@jridgewell/resolve-uri3.1.2indirecta
npm@jridgewell/sourcemap-codec1.5.5indirecta
npm@jridgewell/trace-mapping0.3.31indirecta
npm@jridgewell/trace-mapping0.3.9indirecta
npm@jsdevtools/ono7.1.3indirecta
npm@opentelemetry/api1.9.0indirecta
npm@oven/bun-darwin-aarch641.3.6indirecta
npm@oven/bun-darwin-x641.3.6indirecta
npm@oven/bun-darwin-x64-baseline1.3.6indirecta
npm@oven/bun-linux-aarch641.3.6indirecta
npm@oven/bun-linux-aarch64-musl1.3.6indirecta
npm@oven/bun-linux-x641.3.6indirecta
npm@oven/bun-linux-x64-baseline1.3.6indirecta
npm@oven/bun-linux-x64-musl1.3.6indirecta
npm@oven/bun-linux-x64-musl-baseline1.3.6indirecta
npm@oven/bun-windows-x641.3.6indirecta
npm@oven/bun-windows-x64-baseline1.3.6indirecta
npm@poppinss/colors4.1.6indirecta
npm@poppinss/dumper0.6.5indirecta
npm@poppinss/exception1.2.3indirecta
npm@puppeteer/browsers2.2.4indirecta
npm@rollup/rollup-android-arm-eabi4.59.0indirecta
npm@rollup/rollup-android-arm644.59.0indirecta
npm@rollup/rollup-darwin-arm644.59.0indirecta
npm@rollup/rollup-darwin-x644.59.0indirecta
npm@rollup/rollup-freebsd-arm644.59.0indirecta
npm@rollup/rollup-freebsd-x644.59.0indirecta
npm@rollup/rollup-linux-arm-gnueabihf4.59.0indirecta
npm@rollup/rollup-linux-arm-musleabihf4.59.0indirecta
npm@rollup/rollup-linux-arm64-gnu4.59.0indirecta
npm@rollup/rollup-linux-arm64-musl4.59.0indirecta
npm@rollup/rollup-linux-loong64-gnu4.59.0indirecta
npm@rollup/rollup-linux-loong64-musl4.59.0indirecta
npm@rollup/rollup-linux-ppc64-gnu4.59.0indirecta
npm@rollup/rollup-linux-ppc64-musl4.59.0indirecta
npm@rollup/rollup-linux-riscv64-gnu4.59.0indirecta
npm@rollup/rollup-linux-riscv64-musl4.59.0indirecta
npm@rollup/rollup-linux-s390x-gnu4.59.0indirecta
npm@rollup/rollup-linux-x64-gnu4.59.0indirecta
npm@rollup/rollup-linux-x64-musl4.59.0indirecta
npm@rollup/rollup-openbsd-x644.59.0indirecta
npm@rollup/rollup-openharmony-arm644.59.0indirecta
npm@rollup/rollup-win32-arm64-msvc4.59.0indirecta
npm@rollup/rollup-win32-ia32-msvc4.59.0indirecta
npm@rollup/rollup-win32-x64-gnu4.59.0indirecta
npm@rollup/rollup-win32-x64-msvc4.59.0indirecta
npm@sinclair/typebox0.27.8indirecta
npm@sindresorhus/is7.2.0indirecta
npm@sinonjs/commons3.0.1indirecta
npm@sinonjs/fake-timers10.3.0indirecta
npm@speed-highlight/core1.2.17indirecta
npm@standard-schema/spec1.1.0indirecta
npm@tootallnate/quickjs-emscripten0.23.0indirecta
npm@types/babel__core7.20.5indirecta
npm@types/babel__generator7.27.0indirecta
npm@types/babel__template7.4.4indirecta
npm@types/babel__traverse7.28.0indirecta
npm@types/estree1.0.8indirecta
npm@types/graceful-fs4.1.9indirecta
npm@types/istanbul-lib-coverage2.0.6indirecta
npm@types/istanbul-lib-report3.0.3indirecta
npm@types/istanbul-reports3.0.4indirecta
npm@types/jest29.5.14indirecta
npm@types/jsdom28.0.1indirecta
npm@types/json-schema7.0.15indirecta
npm@types/lodash4.17.20indirecta
npm@types/node22.18.8indirecta
npm@types/stack-utils2.0.3indirecta
npm@types/tough-cookie4.0.5indirecta
npm@types/uuid10.0.0indirecta
npm@types/ws8.18.1indirecta
npm@types/yargs17.0.33indirecta
npm@types/yargs-parser21.0.3indirecta
npm@types/yauzl2.10.3indirecta
npm@vercel/oidc3.1.0indirecta
npmaccepts2.0.0indirecta
npmagent-base7.1.4indirecta
npmai6.0.106indirecta
npmajv8.18.0indirecta
npmajv-formats3.0.1indirecta
npmansi-escapes4.3.2indirecta
npmansi-regex5.0.1indirecta
npmansi-regex6.2.2indirecta
npmansi-styles4.3.0indirecta
npmansi-styles5.2.0indirecta
npmansi-styles6.2.3indirecta
npmanymatch3.1.3indirecta
npmargparse1.0.10indirecta
npmargparse2.0.1indirecta
npmast-types0.13.4indirecta
npmatomic-sleep1.0.0indirecta
npmb4a1.7.3indirecta
npmbabel-jest29.7.0indirecta
npmbabel-plugin-istanbul6.1.1indirecta
npmbabel-plugin-jest-hoist29.6.3indirecta
npmbabel-preset-current-node-syntax1.2.0indirecta
npmbabel-preset-jest29.6.3indirecta
npmbalanced-match1.0.2indirecta
npmbare-events2.7.0indirecta
npmbare-fs4.4.5indirecta
npmbare-os3.6.2indirecta
npmbare-path3.0.0indirecta
npmbare-stream2.7.0indirecta
npmbare-url2.2.2indirecta
npmbase64-js1.5.1indirecta
npmbaseline-browser-mapping2.10.41indirecta
npmbasic-ftp5.3.1indirecta
npmbidi-js1.0.3indirecta
npmblake3-wasm2.1.5indirecta
npmbody-parser2.2.2indirecta
npmbrace-expansion1.1.15indirecta
npmbraces3.0.3indirecta
npmbrowserslist4.28.4indirecta
npmbs-logger0.2.6indirecta
npmbser2.1.1indirecta
npmbuffer5.7.1indirecta
npmbuffer-crc320.2.13indirecta
npmbuffer-from1.1.2indirecta
npmbytes3.1.2indirecta
npmcall-bind-apply-helpers1.0.2indirecta
npmcall-bound1.0.4indirecta
npmcallsites3.1.0indirecta
npmcamelcase5.3.1indirecta
npmcamelcase6.3.0indirecta
npmcaniuse-lite1.0.30001800indirecta
npmchalk4.1.2indirecta
npmchar-regex1.0.2indirecta
npmci-info3.9.0indirecta
npmcjs-module-lexer1.4.3indirecta
npmcliui8.0.1indirecta
npmcliui9.0.1indirecta
npmco4.6.0indirecta
npmcollect-v8-coverage1.0.2indirecta
npmcolor-convert2.0.1indirecta
npmcolor-name1.1.4indirecta
npmcolorette2.0.20indirecta
npmconcat-map0.0.1indirecta
npmcontent-disposition1.0.1indirecta
npmcontent-type1.0.5indirecta
npmconvert-source-map2.0.0indirecta
npmcookie0.7.2indirecta
npmcookie1.1.1indirecta
npmcookie-signature1.2.2indirecta
npmcore-js-pure3.48.0indirecta
npmcors2.8.5indirecta
npmcreate-jest29.7.0indirecta
npmcron-schedule6.0.0indirecta
npmcross-env7.0.3indirecta
npmcross-spawn7.0.6indirecta
npmcss-tree3.2.1indirecta
npmdata-uri-to-buffer6.0.2indirecta
npmdata-urls7.0.0indirecta
npmdateformat4.6.3indirecta
npmdebug4.4.3indirecta
npmdecimal.js10.6.0indirecta
npmdedent1.7.0indirecta
npmdeepmerge4.3.1indirecta
npmdegenerator5.0.1indirecta
npmdepd2.0.0indirecta
npmdetect-libc2.1.2indirecta
npmdetect-newline3.1.0indirecta
npmdevtools-protocol0.0.1299070indirecta
npmdiff-sequences29.6.3indirecta
npmdunder-proto1.0.1indirecta
npmee-first1.1.1indirecta
npmelectron-to-chromium1.5.385indirecta
npmemittery0.13.1indirecta
npmemoji-regex10.6.0indirecta
npmemoji-regex8.0.0indirecta
npmencodeurl2.0.0indirecta
npmend-of-stream1.4.5indirecta
npmentities6.0.1indirecta
npmerror-ex1.3.4indirecta
npmerror-stack-parser-es1.0.5indirecta
npmes-define-property1.0.1indirecta
npmes-errors1.3.0indirecta
npmes-object-atoms1.1.2indirecta
npmesbuild0.25.4indirecta
npmesbuild0.27.3indirecta
npmescalade3.2.0indirecta
npmescape-html1.0.3indirecta
npmescape-string-regexp2.0.0indirecta
npmescodegen2.1.0indirecta
npmesprima4.0.1indirecta
npmestraverse5.3.0indirecta
npmesutils2.0.3indirecta
npmetag1.8.1indirecta
npmevent-target-polyfill0.0.4indirecta
npmevents-universal1.0.1indirecta
npmeventsource3.0.7indirecta
npmeventsource-parser3.0.6indirecta
npmexeca5.1.1indirecta
npmexit0.1.2indirecta
npmexpect29.7.0indirecta
npmexpress5.2.1indirecta
npmexpress-rate-limit8.5.2indirecta
npmextract-zip2.0.1indirecta
npmfast-copy3.0.2indirecta
npmfast-deep-equal3.1.3indirecta
npmfast-fifo1.3.2indirecta
npmfast-json-stable-stringify2.1.0indirecta
npmfast-safe-stringify2.1.1indirecta
npmfast-uri3.1.3indirecta
npmfb-watchman2.0.2indirecta
npmfd-slicer1.1.0indirecta
npmfdir6.5.0indirecta
npmfill-range7.1.1indirecta
npmfinalhandler2.1.1indirecta
npmfind-up4.1.0indirecta
npmforwarded0.2.0indirecta
npmfresh2.0.0indirecta
npmfs.realpath1.0.0indirecta
npmfsevents2.3.3indirecta
npmfunction-bind1.1.2indirecta
npmgensync1.0.0-beta.2indirecta
npmget-caller-file2.0.5indirecta
npmget-east-asian-width1.5.0indirecta
npmget-intrinsic1.3.0indirecta
npmget-package-type0.1.0indirecta
npmget-proto1.0.1indirecta
npmget-stream5.2.0indirecta
npmget-stream6.0.1indirecta
npmget-tsconfig4.10.1indirecta
npmget-uri6.0.5indirecta
npmglob7.2.3indirecta
npmgopd1.2.0indirecta
npmgraceful-fs4.2.11indirecta
npmhandlebars4.7.9indirecta
npmhas-flag4.0.0indirecta
npmhas-symbols1.1.0indirecta
npmhasown2.0.2indirecta
npmhelp-me5.0.0indirecta
npmhono4.12.27indirecta
npmhtml-encoding-sniffer6.0.0indirecta
npmhtml-escaper2.0.2indirecta
npmhttp-errors2.0.1indirecta
npmhttp-proxy-agent7.0.2indirecta
npmhttps-proxy-agent7.0.6indirecta
npmhuman-signals2.1.0indirecta
npmiconv-lite0.7.2indirecta
npmieee7541.2.1indirecta
npmimport-local3.2.0indirecta
npmimurmurhash0.1.4indirecta
npminflight1.0.6indirecta
npminherits2.0.4indirecta
npmip-address10.2.0indirecta
npmipaddr.js1.9.1indirecta
npmis-arrayish0.2.1indirecta
npmis-core-module2.16.1indirecta
npmis-extglob2.1.1indirecta
npmis-fullwidth-code-point3.0.0indirecta
npmis-generator-fn2.1.0indirecta
npmis-glob4.0.3indirecta
npmis-number7.0.0indirecta
npmis-potential-custom-element-name1.0.1indirecta
npmis-promise4.0.0indirecta
npmis-stream2.0.1indirecta
npmisexe2.0.0indirecta
npmistanbul-lib-coverage3.2.2indirecta
npmistanbul-lib-instrument5.2.1indirecta
npmistanbul-lib-instrument6.0.3indirecta
npmistanbul-lib-report3.0.1indirecta
npmistanbul-lib-source-maps4.0.1indirecta
npmistanbul-reports3.2.0indirecta
npmjest29.7.0indirecta
npmjest-changed-files29.7.0indirecta
npmjest-circus29.7.0indirecta
npmjest-cli29.7.0indirecta
npmjest-config29.7.0indirecta
npmjest-diff29.7.0indirecta
npmjest-docblock29.7.0indirecta
npmjest-each29.7.0indirecta
npmjest-environment-node29.7.0indirecta
npmjest-get-type29.6.3indirecta
npmjest-haste-map29.7.0indirecta
npmjest-leak-detector29.7.0indirecta
npmjest-matcher-utils29.7.0indirecta
npmjest-message-util29.7.0indirecta
npmjest-mock29.7.0indirecta
npmjest-pnp-resolver1.2.3indirecta
npmjest-regex-util29.6.3indirecta
npmjest-resolve29.7.0indirecta
npmjest-resolve-dependencies29.7.0indirecta
npmjest-runner29.7.0indirecta
npmjest-runtime29.7.0indirecta
npmjest-snapshot29.7.0indirecta
npmjest-util29.7.0indirecta
npmjest-validate29.7.0indirecta
npmjest-watcher29.7.0indirecta
npmjest-worker29.7.0indirecta
npmjose6.1.3indirecta
npmjoycon3.1.1indirecta
npmjs-base643.7.8indirecta
npmjs-tokens4.0.0indirecta
npmjs-yaml3.15.0indirecta
npmjs-yaml4.3.0indirecta
npmjsesc3.1.0indirecta
npmjson-parse-even-better-errors2.3.1indirecta
npmjson-schema0.4.0indirecta
npmjson-schema-to-typescript15.0.4indirecta
npmjson-schema-traverse1.0.0indirecta
npmjson-schema-typed8.0.2indirecta
npmjson52.2.3indirecta
npmkleur3.0.3indirecta
npmkleur4.1.5indirecta
npmleven3.1.0indirecta
npmlines-and-columns1.2.4indirecta
npmlocate-path5.0.0indirecta
npmlodash4.18.1indirecta
npmlodash.memoize4.1.2indirecta
npmlru-cache11.2.7indirecta
npmlru-cache5.1.1indirecta
npmlru-cache7.18.3indirecta
npmmake-dir4.0.0indirecta
npmmake-error1.3.6indirecta
npmmakeerror1.0.12indirecta
npmmath-intrinsics1.1.0indirecta
npmmdn-data2.27.1indirecta
npmmedia-typer1.1.0indirecta
npmmerge-descriptors2.0.0indirecta
npmmerge-stream2.0.0indirecta
npmmicromatch4.0.8indirecta
npmmime-db1.52.0indirecta
npmmime-db1.54.0indirecta
npmmime-types2.1.35indirecta
npmmime-types3.0.2indirecta
npmmimetext3.0.28indirecta
npmmimic-fn2.1.0indirecta
npmminiflare4.20260310.0indirecta
npmminimatch3.1.5indirecta
npmminimist1.2.8indirecta
npmms2.1.3indirecta
npmnanoid3.3.15indirecta
npmnanoid5.1.6indirecta
npmnatural-compare1.4.0indirecta
npmnegotiator1.0.0indirecta
npmneo-async2.6.2indirecta
npmnetmask2.0.2indirecta
npmnode-int640.4.0indirecta
npmnode-releases2.0.50indirecta
npmnormalize-path3.0.0indirecta
npmnpm-run-path4.0.1indirecta
npmobject-assign4.1.1indirecta
npmobject-inspect1.13.4indirecta
npmon-exit-leak-free2.1.2indirecta
npmon-finished2.4.1indirecta
npmonce1.4.0indirecta
npmonetime5.1.2indirecta
npmp-limit2.3.0indirecta
npmp-limit3.1.0indirecta
npmp-locate4.1.0indirecta
npmp-try2.2.0indirecta
npmpac-proxy-agent7.2.0indirecta
npmpac-resolver7.0.1indirecta
npmparse-json5.2.0indirecta
npmparse57.3.0indirecta
npmparse58.0.0indirecta
npmparseurl1.3.3indirecta
npmpartyserver0.3.2indirecta
npmpartysocket1.1.16indirecta
npmpath-exists4.0.0indirecta
npmpath-is-absolute1.0.1indirecta
npmpath-key3.1.1indirecta
npmpath-parse1.0.7indirecta
npmpath-to-regexp6.3.0indirecta
npmpath-to-regexp8.4.2indirecta
npmpathe2.0.3indirecta
npmpend1.2.0indirecta
npmpicocolors1.1.1indirecta
npmpicomatch2.3.2indirecta
npmpicomatch4.0.5indirecta
npmpino-abstract-transport2.0.0indirecta
npmpino-std-serializers7.0.0indirecta
npmpirates4.0.7indirecta
npmpkce-challenge5.0.0indirecta
npmpkg-dir4.2.0indirecta
npmpostcss8.5.16indirecta
npmprettier3.6.2indirecta
npmpretty-format29.7.0indirecta
npmprocess-warning5.0.0indirecta
npmprogress2.0.3indirecta
npmprompts2.4.2indirecta
npmproxy-addr2.0.7indirecta
npmproxy-agent6.5.0indirecta
npmproxy-from-env1.1.0indirecta
npmpump3.0.3indirecta
npmpunycode2.3.1indirecta
npmpure-rand6.1.0indirecta
npmqs6.15.3indirecta
npmquick-format-unescaped4.0.4indirecta
npmrange-parser1.2.1indirecta
npmraw-body3.0.2indirecta
npmreact19.2.0indirecta
npmreact-is18.3.1indirecta
npmreal-require0.2.0indirecta
npmrequire-directory2.1.1indirecta
npmrequire-from-string2.0.2indirecta
npmresolve1.22.10indirecta
npmresolve-cwd3.0.0indirecta
npmresolve-from5.0.0indirecta
npmresolve-pkg-maps1.0.0indirecta
npmresolve.exports2.0.3indirecta
npmrollup4.59.0indirecta
npmrouter2.2.0indirecta
npmsafe-stable-stringify2.5.0indirecta
npmsafer-buffer2.1.2indirecta
npmsaxes6.0.0indirecta
npmsecure-json-parse4.1.0indirecta
npmsemver6.3.1indirecta
npmsemver7.7.4indirecta
npmsend1.2.1indirecta
npmserve-static2.2.1indirecta
npmsetprototypeof1.2.0indirecta
npmsharp0.34.5indirecta
npmshebang-command2.0.0indirecta
npmshebang-regex3.0.0indirecta
npmside-channel1.1.1indirecta
npmside-channel-list1.0.1indirecta
npmside-channel-map1.0.1indirecta
npmside-channel-weakmap1.0.2indirecta
npmsignal-exit3.0.7indirecta
npmsisteransi1.0.5indirecta
npmslash3.0.0indirecta
npmslow-redact0.3.1indirecta
npmsmart-buffer4.2.0indirecta
npmsocks2.8.7indirecta
npmsocks-proxy-agent8.0.5indirecta
npmsonic-boom4.2.0indirecta
npmsource-map0.6.1indirecta
npmsource-map-js1.2.1indirecta
npmsource-map-support0.5.13indirecta
npmsplit24.2.0indirecta
npmsprintf-js1.0.3indirecta
npmstack-utils2.0.6indirecta
npmstatuses2.0.2indirecta
npmstreamx2.23.0indirecta
npmstring-length4.0.2indirecta
npmstring-width4.2.3indirecta
npmstring-width7.2.0indirecta
npmstrip-ansi6.0.1indirecta
npmstrip-ansi7.2.0indirecta
npmstrip-bom4.0.0indirecta
npmstrip-final-newline2.0.0indirecta
npmstrip-json-comments3.1.1indirecta
npmstrip-json-comments5.0.3indirecta
npmsupports-color10.2.2indirecta
npmsupports-color7.2.0indirecta
npmsupports-color8.1.1indirecta
npmsupports-preserve-symlinks-flag1.0.0indirecta
npmsymbol-tree3.2.4indirecta
npmtar-fs3.1.1indirecta
npmtar-stream3.1.7indirecta
npmtest-exclude6.0.0indirecta
npmtext-decoder1.2.3indirecta
npmthread-stream3.1.0indirecta
npmthrough2.3.8indirecta
npmtinyglobby0.2.15indirecta
npmtldts7.0.27indirecta
npmtldts-core7.0.27indirecta
npmtmpl1.0.5indirecta
npmto-regex-range5.0.1indirecta
npmtoidentifier1.0.1indirecta
npmtough-cookie6.0.1indirecta
npmtr466.0.0indirecta
npmts-jest29.4.4indirecta
npmtslib2.8.1indirecta
npmtsx4.20.6indirecta
npmtype-detect4.0.8indirecta
npmtype-fest0.21.3indirecta
npmtype-fest4.41.0indirecta
npmtype-is2.0.1indirecta
npmtypescript5.9.3indirecta
npmuglify-js3.19.3indirecta
npmunbzip2-stream1.4.3indirecta
npmundici7.18.2indirecta
npmundici7.28.0indirecta
npmundici-types6.21.0indirecta
npmundici-types7.24.7indirecta
npmunenv2.0.0-rc.24indirecta
npmunpipe1.0.0indirecta
npmupdate-browserslist-db1.2.3indirecta
npmv8-to-istanbul9.3.0indirecta
npmvary1.1.2indirecta
npmvite6.4.3indirecta
npmvite-plugin-singlefile2.3.0indirecta
npmw3c-xmlserializer5.0.0indirecta
npmwalker1.0.8indirecta
npmwebidl-conversions8.0.1indirecta
npmwhatwg-mimetype5.0.0indirecta
npmwhatwg-url16.0.1indirecta
npmwhich2.0.2indirecta
npmwordwrap1.0.0indirecta
npmworkerd1.20260310.1indirecta
npmwrangler4.72.0indirecta
npmwrap-ansi7.0.0indirecta
npmwrap-ansi9.0.2indirecta
npmwrappy1.0.2indirecta
npmwrite-file-atomic4.0.2indirecta
npmxml-name-validator5.0.0indirecta
npmxmlchars2.2.0indirecta
npmy18n5.0.8indirecta
npmyallist3.1.1indirecta
npmyargs17.7.2indirecta
npmyargs18.0.0indirecta
npmyargs-parser21.1.1indirecta
npmyargs-parser22.0.0indirecta
npmyauzl2.10.0indirecta
npmyocto-queue0.1.0indirecta
npmyouch4.1.0-beta.10indirecta
npmyouch-core0.3.3indirecta
npmzod-to-json-schema3.25.1indirecta
Avisos de dependencias 5

Este repositorio no publica ningún paquete que el índice resuelva, así que se evaluó su propio grafo de dependencias — 690 paquetes, que incluyen también fijaciones de desarrollo y prueba que nunca se distribuyen: 5 tienen avisos conocidos, de los cuales 1 son directas.

PaqueteVersiónRelaciónGravedadAvisosCorregido en
ws8.18.0directaalta28.21.0
brace-expansion1.1.15indirectaalta15.0.7
undici7.18.2indirectaalta118.5.0
body-parser2.2.2indirectabaja12.3.0
esbuild0.27.3indirectabaja10.28.1

Un aviso significa que la versión registrada en el grafo de dependencias cae dentro del rango afectado de un aviso. No se analiza la alcanzabilidad, y el grafo incluye fijaciones de desarrollo y prueba: un hallazgo puede referirse al utillaje y no al software distribuido.

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [
        "ai",
        "design-systems",
        "figma",
        "figma-api",
        "figma-plugins",
        "mcp"
      ],
      "is_fork": false,
      "size_kb": 3174,
      "has_wiki": true,
      "homepage": "https://southleft.com",
      "languages": {
        "HTML": 130307,
        "Shell": 22160,
        "JavaScript": 547207,
        "TypeScript": 2154277
      },
      "pushed_at": "2026-07-17T00:31:58Z",
      "created_at": "2025-10-05T16:28:53Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-21T16:19:09Z",
      "description": "Your design system as an API. Connect AI to Figma for extraction, creation, and debugging.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript",
        "JavaScript"
      ]
    },
    "owner": {
      "blog": "https://southleft.com",
      "name": "Southleft, LLC",
      "type": "Organization",
      "login": "southleft",
      "company": null,
      "location": "New Orleans, LA",
      "followers": 117,
      "avatar_url": "https://avatars.githubusercontent.com/u/60514814?v=4",
      "created_at": "2020-01-31T15:10:43Z",
      "is_verified": null,
      "public_repos": 30,
      "account_age_days": 2363
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v1.36.0",
          "kind": "minor",
          "published_at": "2026-07-17T00:26:17Z"
        },
        {
          "tag": "v1.35.0",
          "kind": "minor",
          "published_at": "2026-07-09T12:12:16Z"
        },
        {
          "tag": "v1.34.0",
          "kind": "minor",
          "published_at": "2026-07-03T18:24:27Z"
        },
        {
          "tag": "v1.33.1",
          "kind": "patch",
          "published_at": "2026-07-03T03:14:14Z"
        },
        {
          "tag": "v1.33.0",
          "kind": "minor",
          "published_at": "2026-07-03T01:47:04Z"
        },
        {
          "tag": "v1.32.1",
          "kind": "patch",
          "published_at": "2026-07-01T02:55:33Z"
        },
        {
          "tag": "v1.32.0",
          "kind": "minor",
          "published_at": "2026-06-21T04:37:52Z"
        },
        {
          "tag": "v1.31.0",
          "kind": "minor",
          "published_at": "2026-06-05T13:48:28Z"
        },
        {
          "tag": "v1.30.0",
          "kind": "minor",
          "published_at": "2026-06-03T02:40:51Z"
        },
        {
          "tag": "v1.29.2",
          "kind": "patch",
          "published_at": "2026-06-03T01:12:00Z"
        },
        {
          "tag": "v1.29.0",
          "kind": "minor",
          "published_at": "2026-05-22T13:50:37Z"
        },
        {
          "tag": "v1.28.1",
          "kind": "patch",
          "published_at": "2026-05-18T20:01:07Z"
        },
        {
          "tag": "v1.28.0",
          "kind": "minor",
          "published_at": "2026-05-18T19:36:05Z"
        },
        {
          "tag": "v1.27.1",
          "kind": "patch",
          "published_at": "2026-05-17T01:19:22Z"
        },
        {
          "tag": "v1.27.0",
          "kind": "minor",
          "published_at": "2026-05-17T00:58:55Z"
        },
        {
          "tag": "v1.26.0",
          "kind": "minor",
          "published_at": "2026-05-16T19:10:24Z"
        },
        {
          "tag": "v1.25.0",
          "kind": "minor",
          "published_at": "2026-05-14T02:39:23Z"
        },
        {
          "tag": "v1.24.0",
          "kind": "minor",
          "published_at": "2026-05-14T02:02:49Z"
        },
        {
          "tag": "v1.23.0",
          "kind": "minor",
          "published_at": "2026-05-09T15:41:44Z"
        },
        {
          "tag": "v1.22.1",
          "kind": "patch",
          "published_at": "2026-04-07T02:12:12Z"
        },
        {
          "tag": "v1.21.0",
          "kind": "minor",
          "published_at": "2026-04-01T16:51:33Z"
        },
        {
          "tag": "v1.20.0",
          "kind": "minor",
          "published_at": "2026-03-29T20:49:49Z"
        },
        {
          "tag": "v1.19.2",
          "kind": "patch",
          "published_at": "2026-03-27T13:59:24Z"
        },
        {
          "tag": "v1.19.1",
          "kind": "patch",
          "published_at": "2026-03-27T13:13:20Z"
        },
        {
          "tag": "v1.19.0",
          "kind": "minor",
          "published_at": "2026-03-25T11:07:01Z"
        },
        {
          "tag": "v1.11.0",
          "kind": "minor",
          "published_at": "2026-03-25T00:21:55Z"
        },
        {
          "tag": "v1.18.0",
          "kind": "minor",
          "published_at": "2026-03-25T00:21:40Z"
        },
        {
          "tag": "v1.17.4",
          "kind": "patch",
          "published_at": "2026-03-25T00:21:29Z"
        },
        {
          "tag": "v1.17.3",
          "kind": "patch",
          "published_at": "2026-03-25T00:21:29Z"
        },
        {
          "tag": "v1.17.2",
          "kind": "patch",
          "published_at": "2026-03-25T00:21:28Z"
        },
        {
          "tag": "v1.17.1",
          "kind": "patch",
          "published_at": "2026-03-25T00:21:27Z"
        },
        {
          "tag": "v1.17.0",
          "kind": "minor",
          "published_at": "2026-03-25T00:21:26Z"
        },
        {
          "tag": "v1.16.0",
          "kind": "minor",
          "published_at": "2026-03-25T00:21:12Z"
        },
        {
          "tag": "v1.15.5",
          "kind": "patch",
          "published_at": "2026-03-25T00:20:57Z"
        },
        {
          "tag": "v1.15.4",
          "kind": "patch",
          "published_at": "2026-03-25T00:20:56Z"
        },
        {
          "tag": "v1.15.3",
          "kind": "patch",
          "published_at": "2026-03-25T00:20:55Z"
        },
        {
          "tag": "v1.15.2",
          "kind": "patch",
          "published_at": "2026-03-25T00:20:54Z"
        },
        {
          "tag": "v1.15.1",
          "kind": "patch",
          "published_at": "2026-03-25T00:20:53Z"
        },
        {
          "tag": "v1.15.0",
          "kind": "minor",
          "published_at": "2026-03-25T00:20:52Z"
        },
        {
          "tag": "v1.14.0",
          "kind": "minor",
          "published_at": "2026-03-25T00:20:36Z"
        },
        {
          "tag": "v1.13.1",
          "kind": "patch",
          "published_at": "2026-03-25T00:20:36Z"
        },
        {
          "tag": "v1.13.0",
          "kind": "minor",
          "published_at": "2026-03-25T00:20:35Z"
        },
        {
          "tag": "v1.12.2",
          "kind": "patch",
          "published_at": "2026-03-25T00:20:21Z"
        },
        {
          "tag": "v1.12.1",
          "kind": "patch",
          "published_at": "2026-03-25T00:20:20Z"
        },
        {
          "tag": "v1.12.0",
          "kind": "minor",
          "published_at": "2026-03-25T00:20:19Z"
        },
        {
          "tag": "v1.11.6",
          "kind": "patch",
          "published_at": "2026-03-25T00:20:04Z"
        },
        {
          "tag": "v1.11.5",
          "kind": "patch",
          "published_at": "2026-03-25T00:20:02Z"
        },
        {
          "tag": "v1.11.4",
          "kind": "patch",
          "published_at": "2026-03-25T00:20:01Z"
        },
        {
          "tag": "v1.11.2",
          "kind": "patch",
          "published_at": "2026-03-25T00:20:00Z"
        },
        {
          "tag": "v1.11.1",
          "kind": "patch",
          "published_at": "2026-03-25T00:19:49Z"
        },
        {
          "tag": "v1.10.1",
          "kind": "patch",
          "published_at": "2026-03-25T00:21:55Z"
        },
        {
          "tag": "v1.10.0",
          "kind": "minor",
          "published_at": "2026-02-13T05:42:44Z"
        },
        {
          "tag": "v1.9.1",
          "kind": "patch",
          "published_at": "2026-02-12T22:10:23Z"
        },
        {
          "tag": "v1.9.0",
          "kind": "minor",
          "published_at": "2026-02-11T03:39:47Z"
        },
        {
          "tag": "v1.8.0",
          "kind": "minor",
          "published_at": "2026-02-09T02:07:39Z"
        },
        {
          "tag": "v1.7.0",
          "kind": "minor",
          "published_at": "2026-02-06T04:42:31Z"
        },
        {
          "tag": "v1.5.0",
          "kind": "minor",
          "published_at": "2026-01-30T22:51:43Z"
        },
        {
          "tag": "v1.4.2",
          "kind": "patch",
          "published_at": "2026-01-28T03:00:49Z"
        },
        {
          "tag": "v1.4.1",
          "kind": "patch",
          "published_at": "2026-01-28T02:55:37Z"
        },
        {
          "tag": "v1.4.0",
          "kind": "minor",
          "published_at": "2026-01-27T15:23:47Z"
        },
        {
          "tag": "v1.3.0",
          "kind": "minor",
          "published_at": "2026-01-23T20:44:41Z"
        },
        {
          "tag": "v1.2.1",
          "kind": "patch",
          "published_at": "2026-01-19T14:53:49Z"
        },
        {
          "tag": "v1.1.2",
          "kind": "patch",
          "published_at": "2026-01-17T20:41:50Z"
        },
        {
          "tag": "v1.1.1",
          "kind": "patch",
          "published_at": "2026-01-15T21:26:07Z"
        },
        {
          "tag": "v1.1.0",
          "kind": "minor",
          "published_at": "2026-01-15T21:01:29Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2025-10-20T17:06:54Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "138975494458585123bf0d89840e46ddb7bd01ae",
          "body": null,
          "is_bot": false,
          "headline": "Merge feature/target-lock — v1.36.0",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-17T00:31:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "51d3188b5cf6db1c350b7f22e41a4f6618028ab8",
          "body": "figma_navigate gains lock:true to pin the active file; new connections,\nreconnects, and user selection/page changes in other files no longer move\nthe command target. Auto-releases on disconnect/navigate-away.\nfigma_list_open_files reports targetLocked.\n\nPost-review: simplified the connect gate to 'i\n[…]\nhe\n'|| !_activeFileKey' clause was dead per the lock invariant), and added\ncoverage for lock-release-on-disconnect and lock-preserved-on-reconnect.\n\nServer-only release — no plugin re-import required.",
          "is_bot": false,
          "headline": "chore: Release v1.36.0 — target lock for multi-file parallel work",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-17T00:31:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "922c0538203f51ba913e9f13472ca7f70c29aad4",
          "body": "figma_navigate gains a lock:true flag that pins the active file so new\nconnections, reconnects, and the user's own selection/page changes in\nother files no longer move the command target. Lets an agent work in one\nfile while the user works in another without writes routing to the wrong\nfile. Auto-re\n[…]\nvigates away;\nfigma_list_open_files now reports targetLocked.\n\nServer: _targetLocked gates the three active-file promotion sites;\nsetActiveFile(fileKey, lock?), lockTarget/unlockTarget/isTargetLocked.",
          "is_bot": false,
          "headline": "feat: add target lock for multi-file parallel work",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-17T00:25:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e15a7c979f9658e015c4490920bfe4f174ed072c",
          "body": "5 new tools (figma_create_slot, figma_get_slots, figma_append_to_slot,\nfigma_reset_slot, figma_add_slot_property) closing #29, based on PR #77\nby @simonesalvucci and updated to the GA slots Plugin API. Also fixes\nthe release script's cloud tool count (slot-tools.ts was missing from\nauto_count_cloud) and 25+ stale tool-count references.",
          "is_bot": false,
          "headline": "chore: Release v1.35.0 — Figma Slots write support",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-09T12:24:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6501b817f89265817e349edc517ea7115f5dbc9e",
          "body": "- APPEND_TO_SLOT: prepare/validate content BEFORE clearExisting (bad\n  sourceNodeId no longer empties the slot then errors); guard COMPONENT\n  before clone (no more orphaned main-component clones)\n- VARIANT defaultValue passthrough restored — live-validated that Figma\n  REQUIRES a non-empty default \n[…]\n- Width-only/height-only resizes honored; string/number coercion for\n  slot content properties; nested-slot name collisions prefer own slots\n- figma_get_slots response gains consistent success wrapper",
          "is_bot": false,
          "headline": "fix(slots): pre-merge review findings",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-09T12:16:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "47eb076d852a4cc14e5ca9f7b029b53b097bce36",
          "body": "Live E2E caught clones landing outside the slot's visible bounds because\nthey keep their original x/y. Auto-layout slots are unaffected (Figma\nmanages position).",
          "is_bot": false,
          "headline": "fix(slots): snap cloned nodes to slot origin in NONE-layout slots",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-09T12:04:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "30dbdc1f4ddc48f055f24eea5468928687352e4c",
          "body": "- createSlot() now works on variant components inside a COMPONENT_SET\n  (GA lifted the beta restriction the PR guarded against) — allow it\n- Document rename-after-create as the naming API: renaming the slot node\n  renames the linked SLOT property key live (createSlot name arg is ignored)\n- Forward '\n[…]\ni.html handleResult whitelist so\n  figma_append_to_slot returns its slot payload (relay drops unlisted fields)\n- Merge slot-aware ai_instruction with append-to-slot guidance in\n  ANALYZE_COMPONENT_SET",
          "is_bot": false,
          "headline": "fix(slots): update PR #77 to GA slots API — live-validated 2026-07-09",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-09T11:55:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "97db96a84b95e06ef2cfe413e36a9e341ee90e07",
          "body": "Implements slot creation, inspection, population, and reset tools now that SlotNode is available in Figma's open beta, closing the gap described in issue #29.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
          "is_bot": false,
          "headline": "Add Figma Slots API support via Desktop Bridge.",
          "author_name": "Simone Salvucci",
          "author_login": "simonesalvucci",
          "committed_at": "2026-07-09T11:49:27Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f139a1a25b9140f54c208dfe6723b22ba3c20721",
          "body": "figma_import_tokens applies the full diff plan (creates collections/\nvariables, ID-matched renames, VARIABLE_ALIAS writes, replace-gated\ndeletes); DTCG 2025.10 dialect opt-in on export + accepted on import;\nscopes/codeSyntax round-trip; alias values in figma_setup_design_tokens;\nnew figma_create_component_set tool.\n\nPLUGIN RE-IMPORT REQUIRED (code.js/ui.html changed).\n\nTests: 1336 passing.",
          "is_bot": false,
          "headline": "chore: Release v1.34.0 — Bidirectional Token Sync v2 + DTCG 2025.10",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T18:38:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "501091ec54688c41bcf30e010e121c92ff3a782c",
          "body": "…ut scaling\n\n- Import diff now matches by round-trip variable ID before path: a token\n  path rename routes to the update phase as a name change (toRename)\n  instead of create+delete — under strategy='replace' the old behavior\n  would have PERMANENTLY DELETED the original variable and detached all\n  \n[…]\nphaned collections when addMode fails;\n  alias-pass failures counted once\n\nFindings from the pre-release code review (RELEASING.md independent\nreview step). Tests: 183 across token/write-tools suites.",
          "is_bot": false,
          "headline": "fix: pre-release review findings — rename safety, color guards, timeo…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T18:23:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "87171bcc0ef6c2c02c38a545c0f1904a5287f4b2",
          "body": "…sign_tokens\n\nRound-trip: variable scopes (omitted when default/ALL_SCOPES) and\ncodeSyntax (WEB/ANDROID/iOS) stash into $extensions[figma-console-mcp]\non export and flow back through import — diff compares them\n(order-insensitive scopes; code-side absent = no opinion, never\nresets Figma metadata), a\n[…]\ng the batch. Semantic collections no\nlonger require raw figma_execute.\n\nTests: 161 across token/write-tools suites (19 new). Legacy + 2025\nexport byte-identity re-verified for tokens without metadata.",
          "is_bot": false,
          "headline": "feat(tokens): scopes/codeSyntax round-trip + alias values in setup_de…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T17:54:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fb6dfd3ef0fb43c6eee40419adabe0782336c491",
          "body": "…5-dialect",
          "is_bot": false,
          "headline": "Merge branch 'claude/compassionate-meitner-d3a779' into feat/dtcg-202…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T17:39:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d8565c176e87d556e031aef76710ac9b52c21389",
          "body": "Export: opt-in dtcgDialect='2025' emits object colors ({colorSpace,\ncomponents, alpha, hex} from full-precision Figma floats) and object\ndimensions ({value, unit:'px'}). Default 'legacy' output proven\nbyte-identical to previous releases — existing consumers unaffected.\n\nImport: accepts BOTH dialects\n[…]\n gated behind strategy='replace' with loud warnings;\n  merge stays reporting-only\n- Per-item error isolation preserved (applyResult.errors[])\n\nTests: 110 token tests (26 dialect + 14 apply-phase new).",
          "is_bot": false,
          "headline": "feat(tokens): DTCG 2025.10 dialect + full bidirectional import",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T17:39:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "82fd61b3748ce40a255525159fbf0c185dc1b102",
          "body": "One-call component set creation from a variant axes matrix (e.g.\n{State: [default, hover, disabled], Size: [sm, lg]}): builds all\ncombination variants, names them Prop=Value comma-joined, combines\nvia combineAsVariants, and arranges with the in-place grid logic.\nStructured-command pattern: code.js handler + ui.html relay\npassthrough + connector method on IFigmaConnector (WebSocket + Cloud).\nFonts preloaded before text writes; variant keys returned for\ninstantiation.",
          "is_bot": false,
          "headline": "feat: figma_create_component_set — declarative variant-set creation",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T17:34:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "26b87b426479f364a4d2cf990f4585ac7cff10aa",
          "body": "The plugin staleness check now compares against the PLUGIN_VERSION\nembedded in the bundled figma-desktop-bridge/code.js (what a re-import\ninstalls) instead of the npm package version, so server-only releases\nno longer flag up-to-date plugins as stale. PLUGIN_VERSION now means\n'last release in which plugin files changed' and release.sh bumps it\nconditionally. 1245 tests passing (9 new).",
          "is_bot": false,
          "headline": "chore: Release v1.33.2 — version-handshake false-positive fix",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T14:17:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "03be8d7689fd8ea1005b4f9816d787533084e645",
          "body": "…iles (kills v1.33.1 false stale banner)",
          "is_bot": false,
          "headline": "Merge fix: plugin version handshake compares against bundled plugin f…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T14:14:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8d346b0944175bea587e327495788b2103701ac5",
          "body": "… version\n\nServer-only releases (e.g. v1.33.1, deps only) bumped package.json without\ntouching figma-desktop-bridge/, but the FILE_INFO handshake compared the\nplugin's reported version against SERVER_VERSION with strict !== — falsely\nflagging up-to-date plugins as stale and nagging users to re-impor\n[…]\nPluginVersion;\n  figma_diagnose cites the bundled version\n- Regression tests: handshake e2e with injected bundled version + new\n  PLUGIN_VERSION invariants (may lag package.json, must never exceed it)",
          "is_bot": false,
          "headline": "fix: compare plugin version against bundled plugin files, not package…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T14:13:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "35840a72bfdc24abf8b9ff974e0b495c0aab9388",
          "body": "…ount-anchor fix\n\nClaude-Session: https://claude.ai/code/session_01SyvXc6tqa1PEi3uWiWTdzs",
          "is_bot": false,
          "headline": "chore: Release v1.33.1 — security dependency sweep + release-script c…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T03:18:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "10bd6707eb024bd4962e8343fe6e547eb4a0aef6",
          "body": "…e bumps\n\nnpm audit fix (no --force): ws 8.21.0, hono 4.12.27, undici 7.28.0,\nhandlebars 4.7.9 (the critical), lodash, path-to-regexp, basic-ftp,\nfast-uri, vite, and friends — all within existing semver ranges, so no\nAPI changes. wrangler deliberately pinned at 4.72.0: newer versions\nrequire Node >=\n[…]\nppens.\n\nSupersedes dependabot PRs #81 (hono), #82 (vite), #84 (undici; wrangler\npart deferred for the Node engine requirement).\n\nClaude-Session: https://claude.ai/code/session_01SyvXc6tqa1PEi3uWiWTdzs",
          "is_bot": false,
          "headline": "fix(deps): resolve all runtime + critical security alerts via in-rang…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T03:14:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9cb514912c33f04e60bed007d9ebaac6c5be9ffc",
          "body": "Claude-Session: https://claude.ai/code/session_01SyvXc6tqa1PEi3uWiWTdzs",
          "is_bot": false,
          "headline": "chore: Release v1.33.0 — connection UX overhaul + 33-fix codebase audit",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T01:52:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fbd078af72a0db2ea9bb84e9f006325cfbaa25a0",
          "body": "…rror signal\n\n- probeServerHealth: execFileSync (no shell) + integer port validation;\n  data.port comes from world-writable /tmp files and must not reach a\n  shell string. Error semantics mirror the async variant (ENOENT).\n- healthProbeArgs: os.devNull instead of literal /dev/null — Windows\n  ships \n[…]\nURLs.\n- screenshot fallback: prefer error.isAuthError over a bare \"403\"\n  substring, which also matches node IDs like \"403:12\".\n\nClaude-Session: https://claude.ai/code/session_01SyvXc6tqa1PEi3uWiWTdzs",
          "is_bot": false,
          "headline": "fix: address Copilot review — probe hardening, branch fileKey, auth-e…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T01:45:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b3b4cf5c2f963fae92222367793ff72a69259ca6",
          "body": "…ected'\n\nThe cloud status line was event-driven while the main pill derives from\nfacts, so a stale restored pairing code failing on load wrote a bare\n'Disconnected' under a green 'Connected' pill. Cloud states are now\nderived in one place (renderCloudStatus), every string is labeled\n'Cloud', routine\n[…]\nsed, and only\nactionable states (pairing lost) speak up uninvited. Pause renders as\n'Cloud: paused' rather than a lost pairing.\n\nClaude-Session: https://claude.ai/code/session_01SyvXc6tqa1PEi3uWiWTdzs",
          "is_bot": false,
          "headline": "fix(plugin): derive cloud pairing status — kill the orphaned 'Disconn…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T01:39:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e79b8ca5cff26c8bb98c7f31bd6549d352c81885",
          "body": "…aling\n\nBased on a three-track deep dive (forensic lifecycle trace, alternative-\narchitecture research, designer-persona UX audit) into why product\ndesigners struggle with the Desktop Bridge connection dance.\n\nPlugin UI (ui.html — requires manifest re-import; with auto-discovery\nshipped, this should\n[…]\n-probes before returning an honest error\n\nFull deep-dive with file:line evidence and the deferred broker/\nthin-shell roadmap: .notes/CONNECTION-ARCHITECTURE-DEEP-DIVE.md (local).\n\nTests: 1236 passing.",
          "is_bot": false,
          "headline": "feat: connection UX overhaul — honest status, auto-discovery, self-he…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-02T04:18:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1c8466c65a65bbbb9c2fd25054e6edab1b8a0737",
          "body": "# Conflicts:\n#\tsrc/core/figma-tools.ts",
          "is_bot": false,
          "headline": "Merge branch 'claude/goofy-burnell-f85648' into fix/audit-2026-07-01",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-02T04:01:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1c94dd20c08d6bca0cf33493c22f5735d98c17b0",
          "body": "figma_get_variables defaults to format='summary' (description already\nrecommended it; explicit format='full' unaffected). Design-system kit\ndelta-encodes variant visualSpecs against the set-level spec instead of\nrepeating near-identical specs per variant; removes never-attached\nchildSpecs dead compute.",
          "is_bot": false,
          "headline": "perf: trim default payloads in figma_get_variables and design-system kit",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-02T03:59:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d368bca8f48224004b3e8987376aadfe9cd099f6",
          "body": "# Conflicts:\n#\tsrc/core/write-tools.ts",
          "is_bot": false,
          "headline": "Merge branch 'claude/kind-meninsky-3e4132' into fix/audit-2026-07-01",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-02T03:59:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2144d4eb2e51027a22d089bb4c54188066574fad",
          "body": "Repositions variants via x/y on the EXISTING component set's children\n(layoutMode forced to NONE first) instead of clone/remove/combineAsVariants,\nso the set keeps its node ID and all placed instances survive. Also pulls\nthe set out of a previous run's container before cleanup and uses\nabsoluteTransform coords for container placement, fixing re-run breakage.",
          "is_bot": false,
          "headline": "feat(write-tools): arrange component set variants in place",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-02T03:58:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "726aedd758a5dccba3acda9f320f17a399308f6d",
          "body": "…, caching, REST, and plugin layers\n\nMulti-agent audit (5 auditors, 4 fixers) with every finding verified\nagainst live code paths; token-pipeline findings reproduced at runtime.\n\nToken pipeline (round-trip fidelity):\n- DTCG multi-mode export lost all non-primary modes on re-import\n  (writer/parser $\n[…]\nent_image accept dashed\nids, search results truncate multi-KB descriptions.\n\nTests: 1223 passing (20 new regression tests incl. multi-mode\nround-trip, TIMING/EASING mapping, cross-collection aliases).",
          "is_bot": false,
          "headline": "fix: full-codebase audit — 33 verified fixes across tokens, transport…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-02T03:02:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ec698302460e7bfbf8db2329cea5912850ad6dde",
          "body": "…(v1.32.1)\n\nComponent docs documented variable-bound colors as raw hex (Figma Variable\ncolumn showed —) while spacing tokens worked. Two root causes:\n\n1. The id→name lookup map read .id/.name off enrichment entries whose keys\n   are variableId/variableName, so every color lookup missed.\n2. Variable \n[…]\n.name/variableName mismatch in\ntoken-parity cross-referencing.\n\nVerified live: 100/100 colors on the Eventz Textarea resolve to token\nnames (was 0/100). Reported by Robin Di Capua. 1203 tests passing.",
          "is_bot": false,
          "headline": "fix(docs): resolve color token names in figma_generate_component_doc …",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-01T02:54:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e8a9dc1898610baacaaef40c5778c90e5203af73",
          "body": "Components could define slots since June 2026, but our traversal caught the\n'can only read componentPropertyDefinitions on a set/non-variant' error and\nskipped slot sublayers — so analysis, dev handoff, and component reads silently\nomitted a core part of the component's public API.\n\nAdds extractSlot\n[…]\njs changed). Note: slots are new enough that real\ndesign systems have not adopted them yet — this is correctness as the platform\nevolved, validated by fixture rather than against production slot data.",
          "is_bot": false,
          "headline": "feat(components): extract Figma slot contracts (SlotNode, GA June 2026)",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-06-28T03:31:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0700d35c55fc9e5aef4e3ef8e0a219fa1b157454",
          "body": "…iption\n\nExtends the existing tool with an optional 'description' param (and makes\nmodeId/value optional) so an existing variable's 'How to use this variable'\ntext can be edited — previously only settable at creation time. Reuses the\nexisting setVariableDescription connector method + SET_VARIABLE_DE\n[…]\nange, no plugin re-import.\nBackward-compatible (value-only callers unaffected). Exported as DTCG\n$description by figma_export_tokens.\n\nFollow-up to the variables-description capability TJ asked about.",
          "is_bot": false,
          "headline": "feat(variables): figma_update_variable can now set a variable's descr…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-06-28T02:47:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b111b9e37aa23492cce08a5ce8e0114a77ac258a",
          "body": "…eight 1.4.12 fix)\n\nfigma_lint_design no longer red-flags line height <1.5x as a WCAG failure.\n1.4.12 Text Spacing requires SUPPORTING user spacing overrides, not shipping\n1.5x. Line/paragraph-spacing scoped to multi-line text; readability hints\ndecoupled from the 'wcag' group into opt-in 'best-prac\n[…]\nessibility.\n\nNo new tools, no arg-shape changes. Plugin re-import required to pick up the\nnew audit behavior (bridge protocol unchanged). 1196 tests passing.\n\nReported by Isabella (a11y collaborator).",
          "is_bot": false,
          "headline": "chore: Release v1.32.0 — WCAG-accurate accessibility auditing (line-h…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-06-21T04:41:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "94a2e8235ad614b4bb858327539b485989e14384",
          "body": "…+ decouple best-practice\n\nWCAG 1.4.12 Text Spacing is a 'support user overrides' criterion, not a\nrequirement to ship 1.5x line height. The lint audit over-flagged every\ntext node <1.5 (incl. single-line labels) and grouped these readability\nhints under the 'wcag' conformance set.\n\n- code.js: line-\n[…]\nspacing-support' advisory\n  (fixed-px typography) — where 1.4.12/1.4.4 are actually verifiable.\n- tests: regrouping + multi-line guard coverage (1196 green).\n\nReported by Isabella (a11y collaborator).",
          "is_bot": false,
          "headline": "fix(a11y): line-height <1.5 is not a WCAG fail — scope to multi-line …",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-06-21T04:37:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7b6796ae911935933aa5a3f7516075f5730d505d",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'feature/desktop-bridge-ui-v0.2.1'",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-06-05T13:46:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9de4ecbfdc8023e5f3066875fc67c36105eb7b50",
          "body": "…ie reaper + auto-reconnect)\n\nFixes the most-reported reliability bug: the bridge dropping and staying\ndown until the user closed the plugin, restarted their MCP client, or\nkilled ports by hand. Root cause was zombie MCP server processes squatting\nthe WebSocket port range after a bad shutdown.\n\n- Re\n[…]\n 'Start Here' section, home banner, README banner/roadmap\n\nNo new tools. Plugin re-import required (ui.html + code.js changed).\n1190 tests passing, incl. SIGTERM-ignoring-orphan reap integration test.",
          "is_bot": false,
          "headline": "chore: Release v1.31.0 — self-healing Desktop Bridge connection (zomb…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-06-05T13:46:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "486a94afd6356ace85a5da1bcd5172d943553cc4",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into feature/desktop-bridge-ui-v0.2.1",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-06-05T13:39:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c89fb0bcb9db36710207ca9f8f2bb6bac3d39ea7",
          "body": "…ding + typography)",
          "is_bot": false,
          "headline": "Merge feature/console-skill-tool-fixes — v1.30.0 (native variable bin…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-06-03T02:44:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "037d0010cf12ca4558de17f6b787db2173b93459",
          "body": "…e tools",
          "is_bot": false,
          "headline": "chore: Release v1.30.0 — native variable binding + typography in writ…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-06-03T02:44:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c92317c339908b7a905fd32b709d3a8ce5b7af28",
          "body": "- figma_set_fills / figma_set_strokes: new optional per-paint variableId binds a\n  color variable to the fill/stroke via setBoundVariableForPaint (works on any plan\n  via the bridge); color is now optional when variableId is provided.\n- figma_set_text: new fontFamily/fontStyle params with space-inse\n[…]\nnnectors forward fontStyle.\n\nValidated live against the CollegeTown design system: fill/stroke variable binding,\nfont normalization + fallback, instantiate font preload, and override-failure warnings.",
          "is_bot": false,
          "headline": "fix(tools): close Figma Plugin API gaps that forced raw figma_execute",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-06-03T02:40:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e41629d98aa29d5f0582f005d04dba88dce2e4df",
          "body": "…vel auto-detection",
          "is_bot": false,
          "headline": "chore: Release v1.29.2 — faithful component-doc rendering + atomic-le…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-06-03T01:10:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d459187c7ec5b579bdabab2e248dd45e902a6f82",
          "body": "…tadata\n\nThe first auto-detect pass relied on the published `containing_frame.pageId`\n(from /components + /component_sets) to find a component's home page. Many real\nfiles — including ones whose components have publish keys — return an empty\n/component_sets list over REST, so that path resolved noth\n[…]\ningle page whose subtree still contains the\nnode is its home page; walk back from there to the nearest ATOMS/MOLECULES/\nORGANISMS/TEMPLATES divider. One REST call, no dependency on library publishing.",
          "is_bot": false,
          "headline": "fix(component-doc): resolve atomic level without published library me…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-06-02T15:51:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "01507dcab6e8c64478a843d5f3034de94ff8bfda",
          "body": "…ic level\n\n- Parse single '#' headings in Figma component descriptions, not just '##'/'###',\n  so sections (Usage Guidelines, Implementation Considerations, Accessibility\n  Requirements, Content Configuration) render as real sections instead of leaking\n  as '- # Heading' list items.\n- Frontmatter de\n[…]\n target node, fixing a doubled ?node-id=.\n- Auto-detect the component's atomic-design level (atom/molecule/organism/template)\n  from its Figma page section and emit it as 'level:' frontmatter + a tag.",
          "is_bot": false,
          "headline": "fix(component-doc): faithful description rendering + auto-detect atom…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-06-02T15:40:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "854481469028d1070dcce3cf7fe22ade93533be4",
          "body": "…ariable-resolver fix",
          "is_bot": false,
          "headline": "Merge main (v1.29.1) into desktop-bridge-ui — sync PLUGIN_VERSION + v…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-31T13:25:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2e18e224279435c5cc26ce173b8d5dc486f8c9b0",
          "body": "…olution)",
          "is_bot": false,
          "headline": "Merge fix/variables-bridge-first — v1.29.1 (bridge-first variable res…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-30T19:27:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a6e1ef4cd4beae42d38c7bb8f89276a67de5c7f2",
          "body": "…(no 403 for non-Enterprise)",
          "is_bot": false,
          "headline": "chore: Release v1.29.1 — bridge-first variables in design_system_kit …",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-30T19:27:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9127fccdeeede0e36c65a255e970cfad59e6bedc",
          "body": "…stem_kit description\n\nfigma_get_variables already states variables work on any plan; figma_get_design_system_kit\ndid not, so in cloud mode the model lacked the signal that the bridge/relay is the\nplan-independent route and would abandon variables on a 403. Adds: tokens/variables are\nread via the connected Desktop Bridge or cloud relay (any plan, no Enterprise), and a 403\nfrom the Variables REST API means \"connect the bridge and retry,\" not \"variables unavailable.\"",
          "is_bot": false,
          "headline": "docs(variables): signal plan-independent variable access in design_sy…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-30T19:09:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1a6571c963c4afd71f1dbf21ac0949f01ca80449",
          "body": "…e 403 for non-Enterprise)\n\nfigma_get_design_system_kit fetched variables via the Enterprise-only REST\nVariables API directly (design-system-tools.ts: api.getLocalVariables), with no\nDesktop Bridge fallback and no connector passed in. For the majority of users\n(Starter/Pro/Org) that returns 403 \"Lim\n[…]\n (figma_get_variables, figma_export_tokens,\nlocal token-browser path) are already bridge-first; design_system_kit was the sole\nREST-only offender.\n\nTests: +7 (variable-resolver). Full suite 1185 pass.",
          "is_bot": false,
          "headline": "fix(variables): bridge-first resolution for design system kit (no mor…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-30T18:36:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9418e68c7709d32ed46cd413126e4228a37f74ec",
          "body": "…d zombie reaper\n\nAdds a user-facing \"Plugin Interface\" section (status strip, Pause/Reconnect,\nN-server badge, Info/Log panels, log intelligence, theme-follows-Figma) and an\n\"Automatic cleanup of stale servers\" subsection explaining the zombie cause of\nthe \"not connected, restart the plugin\" sympto\n[…]\nion +\nshutdown-backstop fix. Updates troubleshooting to note auto-reconnect means a\nplugin restart is usually unnecessary. No stale screenshots imported (PR #56\nshots predate the mask/theme removals).",
          "is_bot": false,
          "headline": "docs(desktop-bridge): document plugin UI, auto-reconnect watchdog, an…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-30T17:49:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "548cc4c6857e6f2d22ac25f3a3979859b409f8ad",
          "body": "…ectly\n\nThe manual sun/moon toggle (and its OS-preference fallback) duplicated control\nthat Figma already owns via themeColors:true. Removed the button and toggleTheme;\napplyTheme now mirrors Figma's injected figma-light/figma-dark class onto\nbody[data-theme] (with a MutationObserver for live theme switches, OS fallback\nif the class is absent), so the status/log color tokens always match Figma.\nOne less control to manage; the plugin theme can no longer drift from Figma.",
          "is_bot": false,
          "headline": "refactor(desktop-bridge): remove theme toggle, follow Figma theme dir…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-30T17:46:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ab658f1c0b7a7f53667b153e471146dd8a5f5870",
          "body": "…acy)\n\nThe eye toggle masked the connected file/page name in the Info panel, but\nFigma already shows both in the tab/title bar and left sidebar — so masking\nthem inside the plugin provides no real privacy, just an extra control and\nstate to manage. Removed the toggle and always show the values; the Info panel\nitself stays (confirms which file the bridge is on, useful with multiple\nservers). Trims UI surface in line with the small-footprint goal.",
          "is_bot": false,
          "headline": "refactor(desktop-bridge): remove file/page mask toggle (illusory priv…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-30T17:43:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c2805760f5277471742e7000959c186b6325fee2",
          "body": "…ected until restart\" cause)\n\nDiagnosed live: 8 stale dist/local.js servers (3-9 days old) squatted ports\n9223-9231, forcing new servers onto fallback ports with no plugin attached, so\nthe client reports \"server running but no plugin connected, restart the plugin\".\nThe reaper that should prevent thi\n[…]\n  but have not advertised yet; parses portable ps etime (macOS rejects etimes).\n\nTests: +5 (SIGKILL-escalation integration proof, age-guard sparing, reaper\nlifecycle, constants). Full suite 1183 pass.",
          "is_bot": false,
          "headline": "fix(port-discovery): reliably reap zombie MCP servers (real \"not conn…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-30T15:56:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8393a5af5969b85bbfa1d1689e3ba86697d1874e",
          "body": "Fixes the long-standing \"plugin says not connected until I restart it\" bug.\n\nRoot cause: the plugin scanned for MCP servers once on load (3-retry burst,\nthen stopped). If the MCP client/server started AFTER that window, the plugin\nnever re-probed, so the server saw no plugin connection until a full \n[…]\nshows clickable \"Reconnect\" when disconnected\n  instead of a misleading \"Pause\". Pause sets userPaused so the watchdog\n  respects a deliberate pause.\n\nAll 1178 tests pass; ui.html script parses clean.",
          "is_bot": false,
          "headline": "feat(desktop-bridge): auto-reconnect watchdog + one-click Reconnect",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-30T15:35:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "54df2d3b3a615c54041b2f424ddbf1423cb20bae",
          "body": "… stale 1.28.1 from older fork base)",
          "is_bot": false,
          "headline": "fix(desktop-bridge): restore PLUGIN_VERSION to 1.29.0 (PR #56 carried…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-30T14:58:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9420778b3bc0ecd3840e52a8ed3945e84322415c",
          "body": "…e, server-count badge, Pause/Resume rescan)\n\nFrom PR #56 (Dave Gregurke), functional files only. Excludes fork-maintenance\nartifacts: ui-full.html duplicate, CLAUDE.md fork-ownership section, .gitattributes,\nscripts/sync-fork.sh.\n\n- code.js: collapsed window 180x50 -> 240x40\n- ui.html: human-readab\n[…]\nxport, theme toggle icon fix, live 'N server(s)' badge\n  (2s poll), Pause/Resume that re-scans ports without a full plugin restart.\nAll 69 bridge command handlers preserved (no functional regression).",
          "is_bot": false,
          "headline": "feat(desktop-bridge): cherry-pick v0.2.1 UI redesign (log intelligenc…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-30T14:57:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "77528d06ef307e3420c72a3c70214d1f3677b5d8",
          "body": "Two small follow-ups to v1.29.0 born from this release. The granular\naccess token in ~/.npmrc had expired mid-flight: by the time npm publish\nreturned 401 at Phase 5, the release script had already bumped versions,\nscaffolded the CHANGELOG, created the GitHub Release, and pushed the tag.\n\nChanges:\n\n\n[…]\nequired by per-package 2FA enforcement\n  - Why disabling account 2FA does not help (per-package rule takes\n    precedence)\n  - The 3-command renewal recipe\n\nNo version bump — this is docs/script-only.",
          "is_bot": false,
          "headline": "chore: release script — npm auth precheck + token rotation recipe",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-22T15:15:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4e61ad24e2b2fb0a5043da137bc42deede2282b8",
          "body": "…nt + library variables)\n\nThree new tools fill the gap between \"I have a component key from search results\"\nand \"I can actually use it\" — without requiring the library file URL or Enterprise plan.\n\n- figma_get_library_component_by_key (REST): resolves any 40-char component key to\n  full componentPro\n[…]\nloses the workflow loop: search_design_system → figma_get_library_component_by_key →\nfigma_instantiate_component → figma_get_library_variables → figma_import_library_variable\n→ existing binding tools.",
          "is_bot": false,
          "headline": "chore: Release v1.29.0 — shared library inspection (key-based compone…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-22T13:57:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f8c57b403b03a8183cf4be0eebea50cea0051701",
          "body": "…SON formatters + Tailwind v4 namespace dedup\n\nBug fix patch surfacing from live-fire testing of the v1.28.0 formatters against multi-tier semantic-token design systems (Altitude Design System, lib-NEF-v5). Four bugs that produced garbage output for alias-heavy semantic-token sets, now fixed and cov\n[…]\n-comparison.md (should be 9 / 95 / 103).\n- Stale \"Fully implemented: dtcg + css-vars\" error messages in formatters/stubs.ts + parsers/stubs.ts — now list the actual supported set.\n\n1151 tests passing.",
          "is_bot": false,
          "headline": "chore: Release v1.28.1 — fix alias resolution in Tailwind v3 / TS / J…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-18T20:00:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5390b0ec968cd772ccfde20bd82222d5d0dfd0c6",
          "body": null,
          "is_bot": false,
          "headline": "Merge feature/token-formatters-phase-2 into main — v1.28.0 release",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-18T19:39:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e5956e77085f38efcf23163616bad1e1d5dfa44c",
          "body": "Seven new output formats shipped (Tailwind v4, Tailwind v3, SCSS, TS\nmodule, JSON flat/nested, Style Dictionary v3, Tokens Studio). Combined\nwith DTCG + CSS variables, figma_export_tokens now ships 10 fully-\nimplemented output formats. No third-party build-tool install required\nfor any popular styli\n[…]\nse 3.5 audit caught two real issues that the release script regex\nmissed:\n- README banner still referenced v1.27.0/v1.27.1\n- '93 tools' Cloud Mode references in table cells\n\nBoth fixed before publish.",
          "is_bot": false,
          "headline": "chore: Release v1.28.0 — full formatter coverage for figma_export_tokens",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-18T19:39:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fbb10473be14664d033c73b5c0d9677626d1bc4f",
          "body": "…/Planned'\n\nCaught by the user reading docs/tools.md output-formats table after the\nv1.27.1 release shipped. The status column labeled rows as 'Phase 1' /\n'Phase 2' — internal-roadmap terminology with no public meaning. Users\nhad no way to interpret it (no published roadmap to cross-reference).\n\nFix\n[…]\nso this class of leak gets\ncaught next release. Logged in Anti-Patterns Caught section.\n\nNext: actually implementing the formatters now marked 'Planned' so the\nstatus column doesn't stay aspirational.",
          "is_bot": false,
          "headline": "docs: replace internal 'Phase 1/2' jargon with user-friendly 'Shipped…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-18T19:23:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7830c933958314d2930038de443f2d938ecf117c",
          "body": "Phase 3.5 stale-content audit (the one I just added to RELEASING.md)\ncaught two real issues on the v1.27.1 release that I'd already missed:\n\n1. README banner still said '(v1.27.0)' — should reference v1.27.1 per\n   the rule that banner version stamps must match package.json. Now\n   reads '(v1.27.0, \n[…]\nn of the new Phase 3.5 audit and it fired\ncorrectly. The .notes/RELEASING.md file was updated to clarify the\nbanner version-stamp rule (the (vX.Y.0, patched vX.Y.Z) form is\nexplicitly documented now).",
          "is_bot": false,
          "headline": "docs: banner + recent-releases entries refreshed for v1.27.1",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-17T03:12:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1570d5688212366402ad5a95659648c480cff9ab",
          "body": "No code behavior changes. Catches the stale-content surface that the\nv1.27.0 release missed:\n\n- README front-page banner was still announcing v1.23.0\n- 'Phase 1 ships with DTCG only' language across tool descriptions,\n  error messages, and internal comments — even though CSS variables\n  formatter sh\n[…]\nredeploys Cloud Mode so the AI-facing tool\ndescriptions reach users (without 1.27.1, those still serve the v1.27.0\nstale text in dist/local.js and the Cloudflare deployment).\n\nFull suite 1129 passing.",
          "is_bot": false,
          "headline": "chore: Release v1.27.1 — docs patch sweeping stale Phase 1/2 language",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-17T01:18:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6658ad0b9f451f3bd4529a3e6a7ff4932533739e",
          "body": "…urce\n\nUser flagged the GitHub README still showing the v1.23.0 banner as the\nfront-and-center \"What's New\" callout — three minor versions out of date\n(v1.24, v1.25, v1.26 all shipped without updating it; v1.27.0 release\nalso missed it). Triggered an exhaustive audit via three parallel\nsub-agents (R\n[…]\nions (the latter\nship to users on their next MCP reconnect — Local Mode picks up the\nnew dist after `npm update @latest`; Cloud Mode picks up immediately\non wrangler deploy).\n\nFull suite 1129 passing.",
          "is_bot": false,
          "headline": "docs(audit): exhaustive stale-content sweep across README + docs + so…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-17T01:16:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b71d2a180ae643234250963c461bf7d0faf5dbbf",
          "body": null,
          "is_bot": false,
          "headline": "Merge feature/figma-tokens-sync into main — v1.27.0 release",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-17T01:02:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "510128301a7bb3c13e3fe99e70724fd0bde062be",
          "body": null,
          "is_bot": false,
          "headline": "chore: Release v1.27.0 — bidirectional Figma↔code token sync",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-17T01:02:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "56671b7cb6810baf9883c2afdbf41a936af0a90e",
          "body": "…ersion\n\nThree pre-merge fixes from the code review of feature/figma-tokens-sync\nbefore v1.27.0 release.\n\n1. Cloud Mode fs landmine (BLOCKING per review). The new tools were\n   registered identically in src/index.ts (Cloud Mode) but called\n   readFileSync / readdirSync / writeFileSync / process.cwd(\n[…]\nript update so scripts/release.sh now bumps this\n   string alongside src/index.ts's three version literals and the\n   plugin's PLUGIN_VERSION.\n\n2 new tests added (29 tokens tests, 1129 total passing).",
          "is_bot": false,
          "headline": "fix(tokens): Cloud Mode fs guard + alias-skip warnings + dynamic mcpV…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-17T00:55:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cc3710cc161a8d6f8f9a87beeef859b272878747",
          "body": "…a now\n\nWired the diff plan into real Figma variable mutations via the plugin's\nexecuteCodeViaUI bridge. Updates flow:\n\n  1. Compute diff plan as before (toUpdate / toCreate / toDelete buckets).\n  2. For each toUpdate entry: look up the Figma variableId + collectionId\n     from the code-side token's\n[…]\nponse shape adds an applyResult { applied, failed, errors } block\nwhen not dry-run and there were toUpdate entries. The mode label in the\nresponse is now 'applied' instead of 'not-applied-in-phase-1'.",
          "is_bot": false,
          "headline": "feat(tokens): apply phase — figma_import_tokens actually mutates Figm…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T21:31:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d049aff745a6f1aaa19d8b6b97218bf12715deed",
          "body": "User-spotted accuracy issues from the third real-Figma round-trip\ntest against CollegeTown:\n\n1. 70 broken `var(--ds-unknown)` references in 3-mode.css.\n\n   The converter previously emitted `{ reference: \"{unknown}\" }` for any\n   alias whose target wasn't in the local variable set — i.e. variables\n  \n[…]\n resolve `{__library:...}` references to their literal\n   values instead of skipping them in CSS output. Not in this commit.\n\n2 regression tests added (27 tokens tests total, full suite 1127\npassing).",
          "is_bot": false,
          "headline": "fix(tokens): cross-library alias preservation + CSS string quoting",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T21:21:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "da87484126590992ac368da8b6a40ef6be78bb00",
          "body": "Real Figma variable names can contain spaces (CollegeTown has\n'tailwind colors/purple/50'). The previous css-vars formatter joined\npath segments with '-' without normalizing each segment, producing\ninvalid CSS identifiers like '--ds-tailwind colors-purple-50' with an\nunescaped space.\n\nFix: pathToCss\n[…]\ncolors-purple-50)'\nmatches the property name that's actually declared elsewhere).\n\nRegression test added with a 'tailwind colors' source name + an alias\npointing at it. Suite: 25 tokens tests passing.",
          "is_bot": false,
          "headline": "fix(tokens): slugify each path segment in css-vars output",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T20:45:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e969112133de70544b068320ab3b5b31cf535946",
          "body": "Two changes from the third round of real-Figma testing.\n\n1. Order-independent diff comparison. Final 60 false-positive toUpdates\n   on the CollegeTown test were tokens whose values matched exactly but\n   whose mode key insertion order differed:\n     Figma:   { Light, Dark, Vibrant }    (collection o\n[…]\nanonical to source/, CSS vars to generated/ with\n   ds- prefix and splitByCollection.\n\n4 new Jest tests covering primitives, aliases, dark-mode convention,\nprefix. Full suite: 1124 passing (was 1120).",
          "is_bot": false,
          "headline": "feat(tokens): order-independent diff + CSS variables formatter",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T20:39:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ed3874c14a7834d9dc3ef81d28cd54d610743971",
          "body": "…ensions\n\nCaught by the second real-Figma round-trip against CollegeTown. After the\nslug round-trip and merge dedup fixes, parsedTokenCount was correct (713\nmatching Figma exactly), set names matched perfectly, and 627 of 713 tokens\nshowed unchanged. But the 60 multi-mode tokens in the \"3. Mode\" col\n[…]\n(modulo cross-library aliases, which\nare a separate Phase 2 issue tracked separately).\n\nRegression test added: splitByMode + parse → modes recovered correctly.\nSuite: 20 tokens tests passing (was 19).",
          "is_bot": false,
          "headline": "fix(tokens): splitByMode round-trip — embed fileMode in document $ext…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T20:34:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "702c787c9b73aa0268fd9abf254dc120f95467e8",
          "body": "…sponse\n\nThree correctness fixes from the second round of real-Figma testing\nagainst CollegeTown Design System.\n\n1. Set names slugified for JSON keys lose their original form. A Figma\n   collection named \"1. TailwindCSS\" becomes JSON key \"1-tailwindcss\",\n   and the parser previously used that slug a\n[…]\n  the apply; full entries available via figma_get_variables for IDs.\n\nRegression test added for the set-name slug round-trip with\n\"1. TailwindCSS\" collection name. Full suite: 1119 passing (was 1118).",
          "is_bot": false,
          "headline": "fix(tokens): set-name slug round-trip, multi-mode dedup, slim diff re…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T20:29:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "da4d14112794b52811adc388cf3dcb99721e178a",
          "body": "Two bugs caught by the first real-Figma test against CollegeTown Design System:\n\n1. ESM require bug. collectInputFiles dynamically imported readdirSync via\n   require(\"node:fs\") inside the function body. The MCP runs as ESM (per\n   tsconfig.local.json's \"module\": \"Node16\"), so require is undefined a\n[…]\n+ derived outputs\" split.\n\nBoth validated by running figma_export_tokens against a real 4-collection\n713-token file and verifying the 7 split-by-mode/collection DTCG files land\nin the right directory.",
          "is_bot": false,
          "headline": "fix(tokens): ESM require + canonical output routing",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T20:22:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "db5f4350f8508f79a01a01d0db4ce63e1109e7d3",
          "body": "… DTCG round-trip\n\nPhase 1 of the bidirectional Figma <-> code token sync engine. Two new MCP\ntools that together replace Style Dictionary and Tokens Studio's export\npipeline for popular styling methods. DTCG (W3C Design Tokens Community\nGroup) is the canonical pivot format; other styling outputs co\n[…]\n-platform needs can still consume our DTCG output downstream.\n\nDesign doc: .notes/FIGMA-TOKENS-SYNC-DESIGN.md (gitignored per project\nconvention; included in this commit's working tree for reference).",
          "is_bot": false,
          "headline": "feat(tokens): scaffold figma_export_tokens + figma_import_tokens with…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T20:16:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "63fc35aafe5ec08200533ea63e3c1b5539ec27c4",
          "body": "…ire-compatible upgrades\n\nPrevious wording said \"re-import the manifest after a package update\" as a\nblanket instruction, which is misleading. In practice most upgrades stay\nwire-compatible with the previous plugin — every tool, every command, and\nevery WebSocket protocol message still works without\n[…]\n up (status-pill copy, pluginVersion reporting)\n  - Be explicit that release notes will call out required re-imports\n    explicitly when they apply\n\nNo code or test changes. Tests still 1100/36 green.",
          "is_bot": false,
          "headline": "docs: clarify that re-importing the plugin manifest is optional for w…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T19:20:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9ddf78a3ca0083582cbf915ffd85d3deaa36bd62",
          "body": null,
          "is_bot": false,
          "headline": "Merge feature/cleanup-and-clarity into main — v1.26.0 release",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T19:13:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b4f665e6c6fe00135dab648d643ab9b5f7203919",
          "body": "…tion",
          "is_bot": false,
          "headline": "chore: Release v1.26.0 — Local-mode CDP removal + identity disambigua…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T19:13:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ffe4bf017515fee136f03733a2ad00cefc21532f",
          "body": "- docs/setup.md L415: Cloud Mode \"What You Can Do (83 Tools)\" → (93 Tools)\n- docs/use-cases.md L412: Cloud pairing flow \"All write tools (43 total)\"\n  → \"All 93 Cloud Mode tools — including write/create tools\"\n\nBoth were missed by the earlier sweep because they used \"(N Tools)\"\nand \"(N total)\" patterns rather than the \"94 tools\" / \"**94**\" patterns\nthe bulk sed targeted. Caught by a follow-up subagent audit.",
          "is_bot": false,
          "headline": "chore(docs): fix two stale tool-count cells found in final verification",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T17:18:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b503371e5737ad84517030c76d4691bd29e5acf2",
          "body": "…ode boundaries\n\nWhat was wrong, what changed, and why each chunk got rewritten:\n\nTool counts (off across the board)\n  Old docs said \"94 tools\" in Local and \"83 tools\" in Cloud / \"61 tools\" in\n  Remote-paired / \"44 tools\" / \"15 tools\" in various tables. Grepping the\n  registered tool names in src/lo\n[…]\nppeteer-CDP path was removed.\n\ntools.md figma_navigate description\n  Was Always use this first to initialize the browser - no longer true in\n  Local mode. Split the description to show both behaviors.",
          "is_bot": false,
          "headline": "chore(docs): scrub Markdown docs — tool counts, bootloader removal, m…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T17:11:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5ecf200d3a30f27a0c5ed8d46e412d581e53a3c8",
          "body": "package.json:\n  - description: the previous npm description (\"MCP server for accessing\n    Figma plugin console logs and screenshots via Cloudflare Workers or\n    local mode\") only covered 2 tools out of 94 — console logs and\n    screenshots — and was the first thing prospective users saw on npm.\n  \n[…]\n documented in .env.mcp) and accepted as a Bearer\n    token in cloud mode. Now: \"Optional server-wide PAT for testing.\n    Cloud production uses per-user OAuth; local NPX mode reads this env\n    var.\"",
          "is_bot": false,
          "headline": "chore(docs): package.json, wrangler, delete orphan launcher scripts",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T16:53:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ae1ffe8a3ced07b9bfed676eae88f99f75228d29",
          "body": "Findings from the tool-description audit applied:\n\nfigma_get_variables (src/core/figma-tools.ts):\n  - JSDoc block (lines 1040–1052): replaced the \"TWO-CALL PATTERN\n    (console snippet)\" workflow description with the actual resolution\n    order — cache → Desktop Bridge plugin → REST API → Styles API\n[…]\n   description, one in the runtime resource_link header — both removed.\n\nVerification:\n  - tsc --noEmit -p tsconfig.local.json: clean\n  - jest: 1100 / 1100 passing\n  - Tool surface unchanged (94 → 94)",
          "is_bot": false,
          "headline": "chore(docs): scrub tool descriptions — accurate to current behavior",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T16:52:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1ff65d3964da99b18df24be145857bddf0a9f376",
          "body": "… runtime strings + plugin code comments\n\nUser-visible runtime strings:\n  - src/local.ts:1229 (LLM-facing ai_instruction in figma_get_status): no\n    longer claims \"the plugin's bootloader will automatically scan all\n    ports\" — the bootloader was deleted in Phase 2 (commit 03ffea1).\n    Now says t\n[…]\nthis file (or any test file — CDP path is gone). Header\n    now correctly summarizes what's actually tested.\n\nVerification:\n  - tsc --noEmit -p tsconfig.local.json: clean\n  - jest: 1100 / 1100 passing",
          "is_bot": false,
          "headline": "chore(docs): scrub stale CDP / bootloader / Puppeteer references from…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T16:49:51Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9081df2a528acea4fcde372f1490a2ed3a9c5254",
          "body": "Tail-end documentation cleanup so nothing in user-facing or AI-instruction\ndocs still implies a CDP fallback exists:\n\n  - docs/architecture.md: the IFigmaConnector connector table dropped\n    the \"Local Desktop / FigmaDesktopConnector / CDP fallback\" row.\n    Added a one-line note explaining the tra\n[…]\n tsconfig.local.json: clean\n  - tsc --noEmit -p tsconfig.cloudflare.json: only pre-existing Env errors\n  - npm run build:local: clean\n  - jest: 1100 / 1100 passing\n  - Tool surface unchanged (94 → 94)",
          "is_bot": false,
          "headline": "docs: scrub remaining CDP references (Phase 3 8 — final)",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T16:04:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "90fe164e29ed6b0c7277501c027e006643dbc259",
          "body": "Now that the CDP source files and config have been removed, the two\nlocal-mode-only browser-automation dependencies have no consumers:\n\n  - puppeteer-core (^23.11.1) — used by LocalBrowserManager and\n    FigmaDesktopConnector for the Figma Desktop --remote-debugging-port\n    connection. Both files d\n[…]\n tsconfig.local.json: clean\n  - tsc --noEmit -p tsconfig.cloudflare.json: only pre-existing Env errors\n  - npm run build:local: clean\n  - jest: 1100 / 1100 passing\n  - Tool surface unchanged (94 → 94)",
          "is_bot": false,
          "headline": "chore(deps): drop puppeteer-core + chrome-remote-interface (Phase 3 7)",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T16:03:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "26b79b80f362212265cb4aa5cbc80260a6a5d8bf",
          "body": "… (Phase 3 6)\n\nThe local-mode `debugHost` / `debugPort` config block was the CDP launch\nconfiguration — telling LocalBrowserManager which host/port to\n`puppeteer.connect()` to. With Phase 3 5 deleting LocalBrowserManager,\nnothing reads these fields anymore.\n\nChanges:\n  - src/core/config.ts: drop the\n[…]\nrification:\n  - tsc --noEmit -p tsconfig.local.json: clean\n  - tsc --noEmit -p tsconfig.cloudflare.json: only pre-existing Env errors\n  - jest: 1100 / 1100 passing\n  - Tool surface unchanged (94 → 94)",
          "is_bot": false,
          "headline": "chore: drop LocalModeConfig (debugHost / debugPort) from config types…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T16:01:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ffb8b39ad4aab97167ff700425dae8ff8f18c0a4",
          "body": "…pe to 'websocket' (Phase 3 5)\n\nAfter 4a–4e nothing reachable in either local or cloud mode references\nthe local Puppeteer/CDP layer. Dropping all of it:\n\n  - src/core/figma-desktop-connector.ts (~1,693 lines) — the CDP-side\n    IFigmaConnector implementation\n  - src/browser/local.ts — LocalBrowserM\n[…]\nBrowserManager |\n    IBrowserManager across src/ tests/: 0 hits\n\nCloud mode (src/browser-manager.ts, @cloudflare/puppeteer) is untouched\nand continues to work the same way — it never used these files.",
          "is_bot": false,
          "headline": "chore: delete CDP source files; narrow IFigmaConnector.getTransportTy…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T15:59:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bb641eec538be36e52ecf7bee404a2615fb2fda7",
          "body": "…sterFigmaAPITools params (Phase 3 4e)\n\nThe last surface that referenced the old CDP/Puppeteer machinery in\nlocal mode comes out:\n\n  src/local.ts\n    - Drop the `import { LocalBrowserManager }` and `import { ConsoleMonitor }`\n      and `import { FigmaDesktopConnector }` lines\n    - Drop `private bro\n[…]\nsportType to 'websocket'\n  6. drop LocalModeConfig + debugHost/debugPort from src/core/config.ts +\n     types\n  7. drop puppeteer-core + chrome-remote-interface from package.json\n  8. final docs scrub",
          "is_bot": false,
          "headline": "refactor: drop browserManager + consoleMonitor fields and unused regi…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T20:12:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "233d1706b91cef267baa57a94fabab015135f50c",
          "body": "…console to WS-only (Phase 3 4d)\n\nFinal pass over the dual-transport literals that were carried in alongside\nthe now-deleted CDP branches:\n\n  figma_watch_console: the entire handler was a 50-line `useCDP ? cdpPath\n  : wsPath` ternary tree. After 4a, ConsoleMonitor is never running so\n  useCDP is alw\n[…]\nc --noEmit -p tsconfig.cloudflare.json: only pre-existing Env errors\n  - jest: 1101/1101 passing\n  - Tool surface unchanged (94 → 94)\n  - grep useCDP|\"cdp\"|'cdp' in src/local.ts: 0 hits in active code",
          "is_bot": false,
          "headline": "refactor(local): drop useCDP / 'cdp' literals — collapse figma_watch_…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T20:02:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "43286ca5420bd8e2b854b90e8ab90d4797cb7287",
          "body": "…ndlers (Phase 3 4c)\n\nAfter 4a the LocalBrowserManager field is always null, so every\n`if (this.browserManager) { … }` / `?.isRunning()` branch in local.ts is\ndead code. This commit collapses them to the WebSocket-only path that was\nalready living next door in each affected handler.\n\nTouched handler\n[…]\nVerification:\n  - tsc --noEmit -p tsconfig.local.json: clean\n  - tsc --noEmit -p tsconfig.cloudflare.json: only pre-existing Env errors\n  - jest: 1101/1101 passing\n  - Tool surface unchanged (94 → 94)",
          "is_bot": false,
          "headline": "refactor(local): collapse browserManager dead branches across tool ha…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T19:59:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "92be3b4d347a7b566dc111a41d0dc0a0a5f3c76f",
          "body": "…figma_clear_console (Phase 3 4b)\n\nAfter 4a, ConsoleMonitor is never constructed. Three of the surviving dead\nbranches were independently reachable (i.e. not nested inside a\nbrowserManager guard) and worth removing now so the WS-only intent is\nobvious to anyone reading the code:\n\n  1. figma_get_cons\n[…]\nVerification:\n  - tsc --noEmit -p tsconfig.local.json: clean\n  - tsc --noEmit -p tsconfig.cloudflare.json: only pre-existing Env errors\n  - jest: 1101/1101 passing\n  - Tool surface unchanged (94 → 94)",
          "is_bot": false,
          "headline": "refactor(local): collapse the CDP branch in figma_get_console_logs + …",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T19:53:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b279eccee4476859142a7ca2ee87256fdaad6a1a",
          "body": "…or (Phase 3 4a)\n\nensureInitialized() previously did two things:\n  1. Constructed LocalBrowserManager (a Puppeteer client that connected to\n     Figma Desktop via --remote-debugging-port=9222 — CDP)\n  2. Constructed ConsoleMonitor bound to that Puppeteer Page\n\nBoth have been superseded by the WebSoc\n[…]\nVerification:\n  - tsc --noEmit -p tsconfig.local.json: clean\n  - tsc --noEmit -p tsconfig.cloudflare.json: only pre-existing Env errors\n  - jest: 1101/1101 passing\n  - Tool surface unchanged (94 → 94)",
          "is_bot": false,
          "headline": "refactor(local): stop constructing LocalBrowserManager + ConsoleMonit…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T19:50:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8db936118c46dec1e222a3247d972c9effd8fd23",
          "body": "…(Phase 3)\n\nThe CDP-fallback branches inside figma-tools.ts tool handlers are reachable\nonly if `getDesktopConnector` is undefined — but both call sites\n(`src/local.ts:5961` and `src/index.ts:1019`) always pass a non-null\n`getDesktopConnector`. The legacy else-branches that dynamically imported\nFigm\n[…]\n01/1101 passing\n  - Tool surface unchanged (94 → 94)\n  - grep -c \"\\bbrowserManager\\b\" src/core/figma-tools.ts: 0\n  - grep -c \"FigmaDesktopConnector\\|figma-desktop-connector\" src/core/figma-tools.ts: 0",
          "is_bot": false,
          "headline": "refactor: drop CDP fallback paths from figma-tools.ts handler bodies …",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T18:00:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4262bed84a5d16cee952f23695816d5b2a95d57a",
          "body": "…@cloudflare/puppeteer\n\nConsoleMonitor's Page and WebWorker types came from puppeteer-core for a\nhistorical reason: both local mode (LocalBrowserManager via puppeteer-core)\nand cloud mode (BrowserManager via @cloudflare/puppeteer) instantiated it\nagainst their respective Page implementations. The co\n[…]\n\n  - tsc --noEmit -p tsconfig.cloudflare.json: only the pre-existing Env\n    errors remain\n  - Tool surface unchanged (94 → 94)\n  - Jest from commit 1 exit 0 (commit 2 is type-only, no runtime change)",
          "is_bot": false,
          "headline": "refactor: migrate ConsoleMonitor type imports from puppeteer-core to …",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T17:55:21Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c8407d2c009bfb2513da98f6f9ff9b5b046caee0",
          "body": "Before deleting src/browser/{base,local,cloudflare}.ts in a later commit,\nsever the cloud BrowserManager's dependency on browser/base.ts.\n\nsrc/browser-manager.ts (cloud Cloudflare-Browser-Rendering manager) imported\nonly the NavigationResult type from browser/base.ts — no other symbols. Now\nthat typ\n[…]\n src/index.ts:101/938/982 remain (documented as pre-existing\n    on main in CLAUDE.md \"Known Issues\")\n  - Tool surface unchanged (94 → 94 unique figma_* tools)\n\nAtomic, type-only, zero runtime change.",
          "is_bot": false,
          "headline": "refactor: inline NavigationResult into browser-manager.ts (Phase 3 prep)",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T17:53:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0faf925b70237b40ed1f461c0ddbd5814c16db2e",
          "body": "…-tools dedupe\n\nThe Phase-2 write-tools dedupe (commit 69b02d3) excised lines 1957–5958 of\nlocal.ts on the assumption — based on the Phase-0 audit — that the entire\nrange was 30 inline copies of write-tools.ts. The audit was wrong about\nthe boundaries: five READ-SIDE tools had been interleaved betwe\n[…]\nt catch the regression because\n    tests target write-tools.ts and the registrar's outputs, not the\n    inline read-tool blocks — worth a follow-up test for tool-list parity)\n  - dist/local.js rebuilt",
          "is_bot": false,
          "headline": "fix: restore 5 read-side library/design-system tools dropped by write…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T03:29:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "69b02d3db204c1ada19a8bd1fc7a56cf85238372",
          "body": "…eTools (-3950 lines)\n\nFor ~9 months, local mode and cloud mode have each been carrying their own\ncopy of 30 write tools — local.ts lines 1957–5958 contained inline\ndefinitions that mirrored src/core/write-tools.ts byte-for-byte (modulo\nindentation and `this.getDesktopConnector()` vs the passed-in g\n[…]\ny\n\nBackup of the pre-dedupe local.ts saved at /tmp/local.ts.bak in case any\nbehavioral drift surfaces post-merge — diff against current to recover\nany tool-specific copy that wasn't in write-tools.ts.",
          "is_bot": false,
          "headline": "refactor: dedupe write tools — local.ts now delegates to registerWrit…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T03:14:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "03ffea10ff34e29e4dc334cbd63b8d5a9a9ffa98",
          "body": "…ead code)\n\nThe \"bootloader pattern\" was an experimental v1.14.0 design that loaded a\nthin ui.html and fetched the full UI HTML from the MCP server at runtime,\nthe goal being to avoid the Figma plugin re-import dance every time the UI\nchanged. It was superseded — the shipped manifest references ui.h\n[…]\nstead of the deleted file\n\nNet deletion: ~55 KB plugin file + ~120 lines of unreferenced server +\nplugin code.\n\nVerification:\n  - tsc --noEmit -p tsconfig.local.json: clean\n  - jest: 1101/1101 passing",
          "is_bot": false,
          "headline": "chore: delete ui-full.html + bootloader code paths (HIGH-confidence d…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T03:11:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "533cdf7e2ef31082ae6441d2732e92af9d454544",
          "body": "…, not the IIFE-scoped var\n\nThe mode label (\"Local\" / \"Cloud\" / \"Local + Cloud\") in the status pill\nnever appeared in practice because renderModeText() was defined at the\ntop of the script and tried to read `activeConnections` directly — but\nthat variable is declared with `var` inside the connection\n[…]\nn window\n  - Re-run from Plugins → Development → Figma Desktop Bridge\n  - Pill should now read \"Local ready\" while connected to a local\n    MCP server, or \"Local + Cloud ready\" if cloud is also paired",
          "is_bot": false,
          "headline": "fix: plugin mode banner reads activeConnections via the global getter…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T03:06:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0edf949ecf0e3b0a584bb56b599490ca3cb2bc78",
          "body": "Replaces the static \"MCP\" label in the Desktop Bridge plugin's status pill\nwith a live mode indicator — \"Local\", \"Cloud\", or \"Local + Cloud\" — so\nusers can see at a glance which transport is actually carrying their\nsession. Before this change the pill said only \"MCP ready\" regardless of\nwhich transp\n[…]\nill will read \"Local + Cloud ready\" or \"Cloud ready\" instead of just\n\"MCP ready\" — giving her an immediate signal that something switched.\n\nRequires plugin re-import to take effect for existing users.",
          "is_bot": false,
          "headline": "feat: plugin status pill shows Local / Cloud transport mode",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T02:54:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0ab9fb49ec37e8899d216a4eec2b53b8cb106dd2",
          "body": "…r with [figma-console-mcp]\n\nThe earlier identity work only covered tools that route through\nadaptiveResponse (about 5 call sites in figma-tools.ts) plus the new\nfigma_diagnose tool. The remaining ~90 tools in the codebase built their\nown response objects directly and shipped without an _mcp field —\n[…]\nFuture tools added to the server are covered automatically.\nThe full jest suite (36 suites / 1101 tests) passes without modification —\nthe wrap is invisible to handlers and to mock-server-based tests.",
          "is_bot": false,
          "headline": "feat: universal identity wrap — tag every tool response + thrown erro…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T02:49:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 66,
      "commits_last_year": 553,
      "latest_release_at": "2026-07-17T00:26:17Z",
      "latest_release_tag": "v1.36.0",
      "releases_from_tags": false,
      "days_since_last_push": 4,
      "active_weeks_last_year": 33,
      "days_since_latest_release": 4,
      "mean_days_between_releases": 4.9
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 50,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "figma-console-mcp",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "mcp",
            "figma",
            "plugin",
            "design-tokens",
            "design-systems",
            "variables",
            "figjam",
            "slides",
            "accessibility",
            "ai",
            "anthropic",
            "claude",
            "cloudflare"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/figma-console-mcp",
          "is_deprecated": false,
          "latest_version": "1.36.0",
          "repository_url": "https://github.com/southleft/figma-console-mcp",
          "versions_count": 81,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 99709,
          "first_published_at": "2025-11-08T11:48:16.636000Z",
          "latest_published_at": "2026-07-17T00:32:31.958000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 4
        }
      ]
    },
    "popularity": {
      "forks": 224,
      "stars": 2024,
      "watchers": 28,
      "fork_history": {
        "days": [
          {
            "date": "2026-01-15",
            "count": 2
          },
          {
            "date": "2026-01-16",
            "count": 2
          },
          {
            "date": "2026-01-17",
            "count": 2
          },
          {
            "date": "2026-01-18",
            "count": 1
          },
          {
            "date": "2026-01-20",
            "count": 2
          },
          {
            "date": "2026-01-22",
            "count": 1
          },
          {
            "date": "2026-01-24",
            "count": 2
          },
          {
            "date": "2026-01-27",
            "count": 2
          },
          {
            "date": "2026-01-28",
            "count": 1
          },
          {
            "date": "2026-01-29",
            "count": 1
          },
          {
            "date": "2026-02-02",
            "count": 4
          },
          {
            "date": "2026-02-04",
            "count": 1
          },
          {
            "date": "2026-02-08",
            "count": 1
          },
          {
            "date": "2026-02-09",
            "count": 4
          },
          {
            "date": "2026-02-10",
            "count": 3
          },
          {
            "date": "2026-02-11",
            "count": 1
          },
          {
            "date": "2026-02-13",
            "count": 1
          },
          {
            "date": "2026-02-14",
            "count": 1
          },
          {
            "date": "2026-02-15",
            "count": 4
          },
          {
            "date": "2026-02-16",
            "count": 3
          },
          {
            "date": "2026-02-17",
            "count": 2
          },
          {
            "date": "2026-02-18",
            "count": 2
          },
          {
            "date": "2026-02-19",
            "count": 4
          },
          {
            "date": "2026-02-21",
            "count": 3
          },
          {
            "date": "2026-02-22",
            "count": 1
          },
          {
            "date": "2026-02-23",
            "count": 4
          },
          {
            "date": "2026-02-24",
            "count": 2
          },
          {
            "date": "2026-02-26",
            "count": 2
          },
          {
            "date": "2026-02-27",
            "count": 2
          },
          {
            "date": "2026-03-01",
            "count": 4
          },
          {
            "date": "2026-03-02",
            "count": 2
          },
          {
            "date": "2026-03-03",
            "count": 1
          },
          {
            "date": "2026-03-04",
            "count": 5
          },
          {
            "date": "2026-03-05",
            "count": 1
          },
          {
            "date": "2026-03-06",
            "count": 3
          },
          {
            "date": "2026-03-08",
            "count": 1
          },
          {
            "date": "2026-03-09",
            "count": 3
          },
          {
            "date": "2026-03-10",
            "count": 4
          },
          {
            "date": "2026-03-11",
            "count": 4
          },
          {
            "date": "2026-03-12",
            "count": 5
          },
          {
            "date": "2026-03-13",
            "count": 5
          },
          {
            "date": "2026-03-15",
            "count": 2
          },
          {
            "date": "2026-03-16",
            "count": 4
          },
          {
            "date": "2026-03-17",
            "count": 2
          },
          {
            "date": "2026-03-18",
            "count": 5
          },
          {
            "date": "2026-03-19",
            "count": 8
          },
          {
            "date": "2026-03-20",
            "count": 5
          },
          {
            "date": "2026-03-21",
            "count": 4
          },
          {
            "date": "2026-03-22",
            "count": 1
          },
          {
            "date": "2026-03-23",
            "count": 3
          },
          {
            "date": "2026-03-24",
            "count": 3
          },
          {
            "date": "2026-03-25",
            "count": 3
          },
          {
            "date": "2026-03-26",
            "count": 2
          },
          {
            "date": "2026-03-27",
            "count": 1
          },
          {
            "date": "2026-03-28",
            "count": 5
          },
          {
            "date": "2026-03-29",
            "count": 1
          },
          {
            "date": "2026-03-30",
            "count": 1
          },
          {
            "date": "2026-04-01",
            "count": 2
          },
          {
            "date": "2026-04-02",
            "count": 1
          },
          {
            "date": "2026-04-03",
            "count": 2
          },
          {
            "date": "2026-04-04",
            "count": 1
          },
          {
            "date": "2026-04-05",
            "count": 1
          },
          {
            "date": "2026-04-06",
            "count": 3
          },
          {
            "date": "2026-04-07",
            "count": 3
          },
          {
            "date": "2026-04-09",
            "count": 2
          },
          {
            "date": "2026-04-10",
            "count": 3
          },
          {
            "date": "2026-04-12",
            "count": 1
          },
          {
            "date": "2026-04-14",
            "count": 3
          },
          {
            "date": "2026-04-15",
            "count": 3
          },
          {
            "date": "2026-04-16",
            "count": 2
          },
          {
            "date": "2026-04-17",
            "count": 1
          },
          {
            "date": "2026-04-18",
            "count": 1
          },
          {
            "date": "2026-04-19",
            "count": 1
          },
          {
            "date": "2026-04-22",
            "count": 1
          },
          {
            "date": "2026-04-24",
            "count": 1
          },
          {
            "date": "2026-04-27",
            "count": 1
          },
          {
            "date": "2026-04-28",
            "count": 2
          },
          {
            "date": "2026-04-29",
            "count": 1
          },
          {
            "date": "2026-05-01",
            "count": 1
          },
          {
            "date": "2026-05-05",
            "count": 1
          },
          {
            "date": "2026-05-10",
            "count": 1
          },
          {
            "date": "2026-05-19",
            "count": 1
          },
          {
            "date": "2026-05-20",
            "count": 1
          },
          {
            "date": "2026-05-23",
            "count": 1
          },
          {
            "date": "2026-05-25",
            "count": 1
          },
          {
            "date": "2026-05-26",
            "count": 1
          },
          {
            "date": "2026-05-27",
            "count": 1
          },
          {
            "date": "2026-05-29",
            "count": 1
          },
          {
            "date": "2026-06-03",
            "count": 1
          },
          {
            "date": "2026-06-04",
            "count": 1
          },
          {
            "date": "2026-06-10",
            "count": 2
          },
          {
            "date": "2026-06-17",
            "count": 1
          },
          {
            "date": "2026-06-18",
            "count": 1
          },
          {
            "date": "2026-06-21",
            "count": 1
          },
          {
            "date": "2026-06-22",
            "count": 2
          },
          {
            "date": "2026-06-23",
            "count": 1
          },
          {
            "date": "2026-06-26",
            "count": 1
          },
          {
            "date": "2026-06-29",
            "count": 1
          },
          {
            "date": "2026-07-02",
            "count": 1
          },
          {
            "date": "2026-07-05",
            "count": 3
          },
          {
            "date": "2026-07-06",
            "count": 1
          },
          {
            "date": "2026-07-08",
            "count": 2
          },
          {
            "date": "2026-07-09",
            "count": 2
          },
          {
            "date": "2026-07-10",
            "count": 2
          },
          {
            "date": "2026-07-14",
            "count": 1
          },
          {
            "date": "2026-07-15",
            "count": 4
          },
          {
            "date": "2026-07-17",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 224,
        "total_forks": 224
      },
      "star_history": {
        "days": [
          {
            "date": "2026-03-16",
            "count": 10
          },
          {
            "date": "2026-03-17",
            "count": 27
          },
          {
            "date": "2026-03-18",
            "count": 21
          },
          {
            "date": "2026-03-19",
            "count": 39
          },
          {
            "date": "2026-03-20",
            "count": 22
          },
          {
            "date": "2026-03-21",
            "count": 19
          },
          {
            "date": "2026-03-22",
            "count": 13
          },
          {
            "date": "2026-03-23",
            "count": 16
          },
          {
            "date": "2026-03-24",
            "count": 31
          },
          {
            "date": "2026-03-25",
            "count": 31
          },
          {
            "date": "2026-03-26",
            "count": 17
          },
          {
            "date": "2026-03-27",
            "count": 18
          },
          {
            "date": "2026-03-28",
            "count": 12
          },
          {
            "date": "2026-03-29",
            "count": 6
          },
          {
            "date": "2026-03-30",
            "count": 8
          },
          {
            "date": "2026-03-31",
            "count": 14
          },
          {
            "date": "2026-04-01",
            "count": 10
          },
          {
            "date": "2026-04-02",
            "count": 20
          },
          {
            "date": "2026-04-03",
            "count": 8
          },
          {
            "date": "2026-04-04",
            "count": 5
          },
          {
            "date": "2026-04-05",
            "count": 3
          },
          {
            "date": "2026-04-06",
            "count": 8
          },
          {
            "date": "2026-04-07",
            "count": 16
          },
          {
            "date": "2026-04-08",
            "count": 12
          },
          {
            "date": "2026-04-09",
            "count": 10
          },
          {
            "date": "2026-04-10",
            "count": 15
          },
          {
            "date": "2026-04-11",
            "count": 4
          },
          {
            "date": "2026-04-12",
            "count": 6
          },
          {
            "date": "2026-04-13",
            "count": 12
          },
          {
            "date": "2026-04-14",
            "count": 14
          },
          {
            "date": "2026-04-15",
            "count": 11
          },
          {
            "date": "2026-04-16",
            "count": 15
          },
          {
            "date": "2026-04-17",
            "count": 10
          },
          {
            "date": "2026-04-18",
            "count": 3
          },
          {
            "date": "2026-04-19",
            "count": 5
          },
          {
            "date": "2026-04-20",
            "count": 11
          },
          {
            "date": "2026-04-21",
            "count": 10
          },
          {
            "date": "2026-04-22",
            "count": 6
          },
          {
            "date": "2026-04-23",
            "count": 9
          },
          {
            "date": "2026-04-24",
            "count": 3
          },
          {
            "date": "2026-04-25",
            "count": 7
          },
          {
            "date": "2026-04-26",
            "count": 3
          },
          {
            "date": "2026-04-27",
            "count": 6
          },
          {
            "date": "2026-04-28",
            "count": 10
          },
          {
            "date": "2026-04-29",
            "count": 11
          },
          {
            "date": "2026-04-30",
            "count": 8
          },
          {
            "date": "2026-05-01",
            "count": 2
          },
          {
            "date": "2026-05-02",
            "count": 1
          },
          {
            "date": "2026-05-03",
            "count": 2
          },
          {
            "date": "2026-05-04",
            "count": 8
          },
          {
            "date": "2026-05-05",
            "count": 6
          },
          {
            "date": "2026-05-06",
            "count": 8
          },
          {
            "date": "2026-05-07",
            "count": 8
          },
          {
            "date": "2026-05-08",
            "count": 5
          },
          {
            "date": "2026-05-09",
            "count": 4
          },
          {
            "date": "2026-05-10",
            "count": 4
          },
          {
            "date": "2026-05-11",
            "count": 5
          },
          {
            "date": "2026-05-12",
            "count": 7
          },
          {
            "date": "2026-05-13",
            "count": 3
          },
          {
            "date": "2026-05-14",
            "count": 5
          },
          {
            "date": "2026-05-15",
            "count": 6
          },
          {
            "date": "2026-05-16",
            "count": 3
          },
          {
            "date": "2026-05-17",
            "count": 1
          },
          {
            "date": "2026-05-18",
            "count": 6
          },
          {
            "date": "2026-05-19",
            "count": 6
          },
          {
            "date": "2026-05-20",
            "count": 3
          },
          {
            "date": "2026-05-21",
            "count": 12
          },
          {
            "date": "2026-05-22",
            "count": 6
          },
          {
            "date": "2026-05-23",
            "count": 1
          },
          {
            "date": "2026-05-24",
            "count": 2
          },
          {
            "date": "2026-05-25",
            "count": 2
          },
          {
            "date": "2026-05-26",
            "count": 5
          },
          {
            "date": "2026-05-27",
            "count": 8
          },
          {
            "date": "2026-05-28",
            "count": 4
          },
          {
            "date": "2026-05-29",
            "count": 5
          },
          {
            "date": "2026-05-30",
            "count": 4
          },
          {
            "date": "2026-05-31",
            "count": 5
          },
          {
            "date": "2026-06-01",
            "count": 2
          },
          {
            "date": "2026-06-02",
            "count": 4
          },
          {
            "date": "2026-06-03",
            "count": 10
          },
          {
            "date": "2026-06-04",
            "count": 8
          },
          {
            "date": "2026-06-05",
            "count": 6
          },
          {
            "date": "2026-06-06",
            "count": 3
          },
          {
            "date": "2026-06-07",
            "count": 3
          },
          {
            "date": "2026-06-08",
            "count": 8
          },
          {
            "date": "2026-06-09",
            "count": 5
          },
          {
            "date": "2026-06-10",
            "count": 4
          },
          {
            "date": "2026-06-11",
            "count": 4
          },
          {
            "date": "2026-06-12",
            "count": 2
          },
          {
            "date": "2026-06-13",
            "count": 4
          },
          {
            "date": "2026-06-14",
            "count": 3
          },
          {
            "date": "2026-06-15",
            "count": 9
          },
          {
            "date": "2026-06-16",
            "count": 8
          },
          {
            "date": "2026-06-17",
            "count": 6
          },
          {
            "date": "2026-06-18",
            "count": 13
          },
          {
            "date": "2026-06-19",
            "count": 6
          },
          {
            "date": "2026-06-21",
            "count": 3
          },
          {
            "date": "2026-06-22",
            "count": 3
          },
          {
            "date": "2026-06-23",
            "count": 6
          },
          {
            "date": "2026-06-24",
            "count": 9
          },
          {
            "date": "2026-06-25",
            "count": 5
          },
          {
            "date": "2026-06-26",
            "count": 5
          },
          {
            "date": "2026-06-27",
            "count": 4
          },
          {
            "date": "2026-06-28",
            "count": 2
          },
          {
            "date": "2026-06-29",
            "count": 4
          },
          {
            "date": "2026-06-30",
            "count": 3
          },
          {
            "date": "2026-07-01",
            "count": 2
          },
          {
            "date": "2026-07-02",
            "count": 9
          },
          {
            "date": "2026-07-03",
            "count": 1
          },
          {
            "date": "2026-07-04",
            "count": 3
          },
          {
            "date": "2026-07-05",
            "count": 10
          },
          {
            "date": "2026-07-06",
            "count": 9
          },
          {
            "date": "2026-07-07",
            "count": 3
          },
          {
            "date": "2026-07-08",
            "count": 12
          },
          {
            "date": "2026-07-09",
            "count": 7
          },
          {
            "date": "2026-07-10",
            "count": 8
          },
          {
            "date": "2026-07-11",
            "count": 2
          },
          {
            "date": "2026-07-12",
            "count": 4
          },
          {
            "date": "2026-07-13",
            "count": 2
          },
          {
            "date": "2026-07-14",
            "count": 12
          },
          {
            "date": "2026-07-15",
            "count": 12
          },
          {
            "date": "2026-07-16",
            "count": 5
          },
          {
            "date": "2026-07-17",
            "count": 9
          },
          {
            "date": "2026-07-18",
            "count": 2
          },
          {
            "date": "2026-07-19",
            "count": 3
          },
          {
            "date": "2026-07-20",
            "count": 4
          },
          {
            "date": "2026-07-21",
            "count": 7
          }
        ],
        "complete": false,
        "collected": 1000,
        "total_stars": 2024
      },
      "open_issues_and_prs": 43
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": true,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 295107,
      "source_files_sampled": 142,
      "oversized_source_files": 10,
      "agent_instruction_files": [
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 1324
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "ws",
            "direct": true,
            "version": "8.18.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-58qx-3vcg-4xpx",
              "GHSA-96hv-2xvq-fx4p"
            ],
            "fixed_version": "8.21.0",
            "advisory_count": 2,
            "oldest_advisory_days": 63
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.15",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp"
            ],
            "fixed_version": "5.0.7",
            "advisory_count": 1,
            "oldest_advisory_days": 0
          },
          {
            "name": "undici",
            "direct": false,
            "version": "7.18.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-2mjp-6q6p-2qxm",
              "GHSA-35p6-xmwp-9g52",
              "GHSA-4992-7rv2-5pvq",
              "GHSA-f269-vfmq-vjvj",
              "GHSA-g8m3-5g58-fq7m",
              "GHSA-p88m-4jfj-68fv",
              "GHSA-phc3-fgpg-7m6h",
              "GHSA-pr7r-676h-xcf6",
              "GHSA-v9p9-hfj2-hcw8",
              "GHSA-vrm6-8vpv-qv8q"
            ],
            "fixed_version": "8.5.0",
            "advisory_count": 11,
            "oldest_advisory_days": 129
          },
          {
            "name": "body-parser",
            "direct": false,
            "version": "2.2.2",
            "severity": "low",
            "ecosystem": "npm",
            "cvss_score": 3.7,
            "advisory_ids": [
              "GHSA-v422-hmwv-36x6"
            ],
            "fixed_version": "2.3.0",
            "advisory_count": 1,
            "oldest_advisory_days": 0
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.27.3",
            "severity": "low",
            "ecosystem": "npm",
            "cvss_score": 2.5,
            "advisory_ids": [
              "GHSA-g7r4-m6w7-qqqr"
            ],
            "fixed_version": "0.28.1",
            "advisory_count": 1,
            "oldest_advisory_days": 38
          }
        ],
        "collected": true,
        "truncated": false,
        "by_severity": {
          "low": 2,
          "high": 3
        },
        "advisory_count": 16,
        "affected_count": 5,
        "assessed_count": 690,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 1
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "@cloudflare/puppeteer",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.0.4"
        },
        {
          "name": "@modelcontextprotocol/ext-apps",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.0.1"
        },
        {
          "name": "@modelcontextprotocol/sdk",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.26.0"
        },
        {
          "name": "agents",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.7.1"
        },
        {
          "name": "axe-core",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.11.2"
        },
        {
          "name": "jsdom",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^29.0.1"
        },
        {
          "name": "pino",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^9.5.0"
        },
        {
          "name": "pino-pretty",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^13.0.0"
        },
        {
          "name": "uuid",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^11.0.3"
        },
        {
          "name": "ws",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.19.0"
        },
        {
          "name": "zod",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.25.76"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "@cloudflare/puppeteer",
            "direct": true,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@modelcontextprotocol/ext-apps",
            "direct": true,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@modelcontextprotocol/sdk",
            "direct": true,
            "version": "1.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "agents",
            "direct": true,
            "version": "0.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "axe-core",
            "direct": true,
            "version": "4.11.2",
            "ecosystem": "npm"
          },
          {
            "name": "jsdom",
            "direct": true,
            "version": "29.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "pino",
            "direct": true,
            "version": "9.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "pino-pretty",
            "direct": true,
            "version": "13.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "uuid",
            "direct": true,
            "version": "11.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": true,
            "version": "8.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": true,
            "version": "8.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "zod",
            "direct": true,
            "version": "3.25.76",
            "ecosystem": "npm"
          },
          {
            "name": "@ai-sdk/gateway",
            "direct": false,
            "version": "3.0.60",
            "ecosystem": "npm"
          },
          {
            "name": "@ai-sdk/provider",
            "direct": false,
            "version": "3.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "@ai-sdk/provider-utils",
            "direct": false,
            "version": "4.0.16",
            "ecosystem": "npm"
          },
          {
            "name": "@apidevtools/json-schema-ref-parser",
            "direct": false,
            "version": "11.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "@asamuzakjp/css-color",
            "direct": false,
            "version": "5.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@asamuzakjp/dom-selector",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@asamuzakjp/nwsapi",
            "direct": false,
            "version": "2.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/compat-data",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/core",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/generator",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-compilation-targets",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-globals",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-imports",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-transforms",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-plugin-utils",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-option",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helpers",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-async-generators",
            "direct": false,
            "version": "7.8.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-bigint",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-class-properties",
            "direct": false,
            "version": "7.12.13",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-class-static-block",
            "direct": false,
            "version": "7.14.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-import-attributes",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-import-meta",
            "direct": false,
            "version": "7.10.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-json-strings",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-jsx",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-logical-assignment-operators",
            "direct": false,
            "version": "7.10.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-nullish-coalescing-operator",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-numeric-separator",
            "direct": false,
            "version": "7.10.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-object-rest-spread",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-optional-catch-binding",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-optional-chaining",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-private-property-in-object",
            "direct": false,
            "version": "7.14.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-top-level-await",
            "direct": false,
            "version": "7.14.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-typescript",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/runtime",
            "direct": false,
            "version": "7.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/runtime-corejs3",
            "direct": false,
            "version": "7.29.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/template",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/traverse",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@bcoe/v8-coverage",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/biome",
            "direct": false,
            "version": "2.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-darwin-arm64",
            "direct": false,
            "version": "2.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-darwin-x64",
            "direct": false,
            "version": "2.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-linux-arm64",
            "direct": false,
            "version": "2.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-linux-arm64-musl",
            "direct": false,
            "version": "2.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-linux-x64",
            "direct": false,
            "version": "2.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-linux-x64-musl",
            "direct": false,
            "version": "2.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-win32-arm64",
            "direct": false,
            "version": "2.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-win32-x64",
            "direct": false,
            "version": "2.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "@bramus/specificity",
            "direct": false,
            "version": "2.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@cfworker/json-schema",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/kv-asset-handler",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/unenv-preset",
            "direct": false,
            "version": "2.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/workerd-darwin-64",
            "direct": false,
            "version": "1.20260310.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/workerd-darwin-arm64",
            "direct": false,
            "version": "1.20260310.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/workerd-linux-64",
            "direct": false,
            "version": "1.20260310.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/workerd-linux-arm64",
            "direct": false,
            "version": "1.20260310.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/workerd-windows-64",
            "direct": false,
            "version": "1.20260310.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/workers-types",
            "direct": false,
            "version": "4.20260702.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cspotcode/source-map-support",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/color-helpers",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-calc",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-color-parser",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-parser-algorithms",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-syntax-patches-for-csstree",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-tokenizer",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/runtime",
            "direct": false,
            "version": "1.11.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/aix-ppc64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/aix-ppc64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-x64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-x64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-arm64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-arm64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-x64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-x64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-arm64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-arm64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-x64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-x64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ia32",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ia32",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-loong64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-loong64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-mips64el",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-mips64el",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ppc64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ppc64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-riscv64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-riscv64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-s390x",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-s390x",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-x64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-x64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-arm64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-arm64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-x64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-x64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-arm64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-arm64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-x64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-x64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openharmony-arm64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/sunos-x64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/sunos-x64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-arm64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-arm64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-ia32",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-ia32",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-x64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-x64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@exodus/bytes",
            "direct": false,
            "version": "1.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "@hono/node-server",
            "direct": false,
            "version": "1.19.14",
            "ecosystem": "npm"
          },
          {
            "name": "@img/colour",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-darwin-arm64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-darwin-x64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-darwin-arm64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-darwin-x64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-arm",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-arm64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-ppc64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-riscv64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-s390x",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-x64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linuxmusl-arm64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linuxmusl-x64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-arm",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-arm64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-ppc64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-riscv64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-s390x",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-x64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linuxmusl-arm64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linuxmusl-x64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-wasm32",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-win32-arm64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-win32-ia32",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-win32-x64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@istanbuljs/load-nyc-config",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@istanbuljs/schema",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/console",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/core",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/environment",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/expect",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/expect-utils",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/fake-timers",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/globals",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/reporters",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/schemas",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/source-map",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/test-result",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/test-sequencer",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/transform",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/types",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/gen-mapping",
            "direct": false,
            "version": "0.3.13",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/remapping",
            "direct": false,
            "version": "2.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/resolve-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.31",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "@jsdevtools/ono",
            "direct": false,
            "version": "7.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/api",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oven/bun-darwin-aarch64",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@oven/bun-darwin-x64",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@oven/bun-darwin-x64-baseline",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@oven/bun-linux-aarch64",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@oven/bun-linux-aarch64-musl",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@oven/bun-linux-x64",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@oven/bun-linux-x64-baseline",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@oven/bun-linux-x64-musl",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@oven/bun-linux-x64-musl-baseline",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@oven/bun-windows-x64",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@oven/bun-windows-x64-baseline",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@poppinss/colors",
            "direct": false,
            "version": "4.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "@poppinss/dumper",
            "direct": false,
            "version": "0.6.5",
            "ecosystem": "npm"
          },
          {
            "name": "@poppinss/exception",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@puppeteer/browsers",
            "direct": false,
            "version": "2.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-android-arm-eabi",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-android-arm64",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-darwin-arm64",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-darwin-x64",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-freebsd-arm64",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-freebsd-x64",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm-gnueabihf",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm-musleabihf",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm64-gnu",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm64-musl",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-loong64-gnu",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-loong64-musl",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-ppc64-gnu",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-ppc64-musl",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-riscv64-gnu",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-riscv64-musl",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-s390x-gnu",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-x64-gnu",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-x64-musl",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-openbsd-x64",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-openharmony-arm64",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-arm64-msvc",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-ia32-msvc",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-x64-gnu",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-x64-msvc",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sinclair/typebox",
            "direct": false,
            "version": "0.27.8",
            "ecosystem": "npm"
          },
          {
            "name": "@sindresorhus/is",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sinonjs/commons",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@sinonjs/fake-timers",
            "direct": false,
            "version": "10.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@speed-highlight/core",
            "direct": false,
            "version": "1.2.17",
            "ecosystem": "npm"
          },
          {
            "name": "@standard-schema/spec",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tootallnate/quickjs-emscripten",
            "direct": false,
            "version": "0.23.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__core",
            "direct": false,
            "version": "7.20.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__generator",
            "direct": false,
            "version": "7.27.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__template",
            "direct": false,
            "version": "7.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__traverse",
            "direct": false,
            "version": "7.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/graceful-fs",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/istanbul-lib-coverage",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/istanbul-lib-report",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/istanbul-reports",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/jest",
            "direct": false,
            "version": "29.5.14",
            "ecosystem": "npm"
          },
          {
            "name": "@types/jsdom",
            "direct": false,
            "version": "28.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/json-schema",
            "direct": false,
            "version": "7.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "@types/lodash",
            "direct": false,
            "version": "4.17.20",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "22.18.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/stack-utils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/tough-cookie",
            "direct": false,
            "version": "4.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/uuid",
            "direct": false,
            "version": "10.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/ws",
            "direct": false,
            "version": "8.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/yargs",
            "direct": false,
            "version": "17.0.33",
            "ecosystem": "npm"
          },
          {
            "name": "@types/yargs-parser",
            "direct": false,
            "version": "21.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/yauzl",
            "direct": false,
            "version": "2.10.3",
            "ecosystem": "npm"
          },
          {
            "name": "@vercel/oidc",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "accepts",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "agent-base",
            "direct": false,
            "version": "7.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "ai",
            "direct": false,
            "version": "6.0.106",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv-formats",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-escapes",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "6.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "anymatch",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "1.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ast-types",
            "direct": false,
            "version": "0.13.4",
            "ecosystem": "npm"
          },
          {
            "name": "atomic-sleep",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "b4a",
            "direct": false,
            "version": "1.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "babel-jest",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "babel-plugin-istanbul",
            "direct": false,
            "version": "6.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "babel-plugin-jest-hoist",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "babel-preset-current-node-syntax",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "babel-preset-jest",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "bare-events",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "bare-fs",
            "direct": false,
            "version": "4.4.5",
            "ecosystem": "npm"
          },
          {
            "name": "bare-os",
            "direct": false,
            "version": "3.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "bare-path",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "bare-stream",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "bare-url",
            "direct": false,
            "version": "2.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "base64-js",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "baseline-browser-mapping",
            "direct": false,
            "version": "2.10.41",
            "ecosystem": "npm"
          },
          {
            "name": "basic-ftp",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "bidi-js",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "blake3-wasm",
            "direct": false,
            "version": "2.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "body-parser",
            "direct": false,
            "version": "2.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.15",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "4.28.4",
            "ecosystem": "npm"
          },
          {
            "name": "bs-logger",
            "direct": false,
            "version": "0.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "bser",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "buffer",
            "direct": false,
            "version": "5.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-crc32",
            "direct": false,
            "version": "0.2.13",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-from",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "bytes",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "call-bind-apply-helpers",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "call-bound",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "callsites",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "6.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-lite",
            "direct": false,
            "version": "1.0.30001800",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "char-regex",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "ci-info",
            "direct": false,
            "version": "3.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "cjs-module-lexer",
            "direct": false,
            "version": "1.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "co",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "collect-v8-coverage",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "colorette",
            "direct": false,
            "version": "2.0.20",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "content-disposition",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "content-type",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cookie",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "cookie",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "cookie-signature",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "core-js-pure",
            "direct": false,
            "version": "3.48.0",
            "ecosystem": "npm"
          },
          {
            "name": "cors",
            "direct": false,
            "version": "2.8.5",
            "ecosystem": "npm"
          },
          {
            "name": "create-jest",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "cron-schedule",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cross-env",
            "direct": false,
            "version": "7.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "css-tree",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "data-uri-to-buffer",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "data-urls",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "dateformat",
            "direct": false,
            "version": "4.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "decimal.js",
            "direct": false,
            "version": "10.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "dedent",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "deepmerge",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "degenerator",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "depd",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "detect-libc",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "detect-newline",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "devtools-protocol",
            "direct": false,
            "version": "0.0.1299070",
            "ecosystem": "npm"
          },
          {
            "name": "diff-sequences",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "dunder-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ee-first",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "electron-to-chromium",
            "direct": false,
            "version": "1.5.385",
            "ecosystem": "npm"
          },
          {
            "name": "emittery",
            "direct": false,
            "version": "0.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "10.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "encodeurl",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "end-of-stream",
            "direct": false,
            "version": "1.4.5",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "error-ex",
            "direct": false,
            "version": "1.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "error-stack-parser-es",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "es-define-property",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-errors",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-object-atoms",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-html",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "escodegen",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "esprima",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "esutils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "etag",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "event-target-polyfill",
            "direct": false,
            "version": "0.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "events-universal",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "eventsource",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "eventsource-parser",
            "direct": false,
            "version": "3.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "execa",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "exit",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "expect",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "express",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "express-rate-limit",
            "direct": false,
            "version": "8.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "extract-zip",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "fast-copy",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-fifo",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-json-stable-stringify",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-safe-stringify",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "fast-uri",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fb-watchman",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "fd-slicer",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fdir",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "finalhandler",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "forwarded",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "fresh",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fs.realpath",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "function-bind",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "gensync",
            "direct": false,
            "version": "1.0.0-beta.2",
            "ecosystem": "npm"
          },
          {
            "name": "get-caller-file",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "get-east-asian-width",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-intrinsic",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-package-type",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-tsconfig",
            "direct": false,
            "version": "4.10.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-uri",
            "direct": false,
            "version": "6.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "7.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "gopd",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "handlebars",
            "direct": false,
            "version": "4.7.9",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-symbols",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "help-me",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hono",
            "direct": false,
            "version": "4.12.27",
            "ecosystem": "npm"
          },
          {
            "name": "html-encoding-sniffer",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "html-escaper",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "http-errors",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "http-proxy-agent",
            "direct": false,
            "version": "7.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "https-proxy-agent",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "human-signals",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "ieee754",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "import-local",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "imurmurhash",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "inflight",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "ip-address",
            "direct": false,
            "version": "10.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ipaddr.js",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-arrayish",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-core-module",
            "direct": false,
            "version": "2.16.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-generator-fn",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-potential-custom-element-name",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-promise",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-stream",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-coverage",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-instrument",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-instrument",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-report",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-source-maps",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-reports",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-changed-files",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-circus",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-cli",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-config",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-diff",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-docblock",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-each",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-environment-node",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-get-type",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "jest-haste-map",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-leak-detector",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-matcher-utils",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-message-util",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-mock",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-pnp-resolver",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "jest-regex-util",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "jest-resolve",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-resolve-dependencies",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-runner",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-runtime",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-snapshot",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-util",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-validate",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-watcher",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-worker",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jose",
            "direct": false,
            "version": "6.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "joycon",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "js-base64",
            "direct": false,
            "version": "3.7.8",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "3.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsesc",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-parse-even-better-errors",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-to-typescript",
            "direct": false,
            "version": "15.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-typed",
            "direct": false,
            "version": "8.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "kleur",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "kleur",
            "direct": false,
            "version": "4.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "leven",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "lines-and-columns",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "4.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.memoize",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "11.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "7.18.3",
            "ecosystem": "npm"
          },
          {
            "name": "make-dir",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "make-error",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "makeerror",
            "direct": false,
            "version": "1.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "math-intrinsics",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdn-data",
            "direct": false,
            "version": "2.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "media-typer",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge-descriptors",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge-stream",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.54.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "2.1.35",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "mimetext",
            "direct": false,
            "version": "3.0.28",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-fn",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "miniflare",
            "direct": false,
            "version": "4.20260310.0",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.15",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "5.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "natural-compare",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "negotiator",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "neo-async",
            "direct": false,
            "version": "2.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "netmask",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "node-int64",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-releases",
            "direct": false,
            "version": "2.0.50",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-path",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "npm-run-path",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-assign",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-inspect",
            "direct": false,
            "version": "1.13.4",
            "ecosystem": "npm"
          },
          {
            "name": "on-exit-leak-free",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "on-finished",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "onetime",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-try",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "pac-proxy-agent",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "pac-resolver",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parse-json",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "parseurl",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "partyserver",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "partysocket",
            "direct": false,
            "version": "1.1.16",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-is-absolute",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-key",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-parse",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "path-to-regexp",
            "direct": false,
            "version": "6.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-to-regexp",
            "direct": false,
            "version": "8.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "pathe",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "pend",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "4.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "pino-abstract-transport",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "pino-std-serializers",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "pirates",
            "direct": false,
            "version": "4.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "pkce-challenge",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "pkg-dir",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.5.16",
            "ecosystem": "npm"
          },
          {
            "name": "prettier",
            "direct": false,
            "version": "3.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "pretty-format",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "process-warning",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "progress",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "prompts",
            "direct": false,
            "version": "2.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "proxy-addr",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "proxy-agent",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "proxy-from-env",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "pump",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "pure-rand",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "qs",
            "direct": false,
            "version": "6.15.3",
            "ecosystem": "npm"
          },
          {
            "name": "quick-format-unescaped",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "range-parser",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "raw-body",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "react",
            "direct": false,
            "version": "19.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "react-is",
            "direct": false,
            "version": "18.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "real-require",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "require-directory",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-from-string",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "resolve",
            "direct": false,
            "version": "1.22.10",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-cwd",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-pkg-maps",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve.exports",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "rollup",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "router",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "safe-stable-stringify",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "safer-buffer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "saxes",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "secure-json-parse",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "6.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.7.4",
            "ecosystem": "npm"
          },
          {
            "name": "send",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "serve-static",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "setprototypeof",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "sharp",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-command",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-regex",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-list",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-map",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-weakmap",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "sisteransi",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "slash",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "slow-redact",
            "direct": false,
            "version": "0.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "smart-buffer",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "socks",
            "direct": false,
            "version": "2.8.7",
            "ecosystem": "npm"
          },
          {
            "name": "socks-proxy-agent",
            "direct": false,
            "version": "8.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "sonic-boom",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-js",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-support",
            "direct": false,
            "version": "0.5.13",
            "ecosystem": "npm"
          },
          {
            "name": "split2",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "sprintf-js",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "stack-utils",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "statuses",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "streamx",
            "direct": false,
            "version": "2.23.0",
            "ecosystem": "npm"
          },
          {
            "name": "string-length",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-final-newline",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "10.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "8.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "supports-preserve-symlinks-flag",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "symbol-tree",
            "direct": false,
            "version": "3.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "tar-fs",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "tar-stream",
            "direct": false,
            "version": "3.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "test-exclude",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "text-decoder",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "thread-stream",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "through",
            "direct": false,
            "version": "2.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "tinyglobby",
            "direct": false,
            "version": "0.2.15",
            "ecosystem": "npm"
          },
          {
            "name": "tldts",
            "direct": false,
            "version": "7.0.27",
            "ecosystem": "npm"
          },
          {
            "name": "tldts-core",
            "direct": false,
            "version": "7.0.27",
            "ecosystem": "npm"
          },
          {
            "name": "tmpl",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "toidentifier",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "tough-cookie",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "tr46",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ts-jest",
            "direct": false,
            "version": "29.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "tsx",
            "direct": false,
            "version": "4.20.6",
            "ecosystem": "npm"
          },
          {
            "name": "type-detect",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.21.3",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "4.41.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-is",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "5.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "uglify-js",
            "direct": false,
            "version": "3.19.3",
            "ecosystem": "npm"
          },
          {
            "name": "unbzip2-stream",
            "direct": false,
            "version": "1.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "undici",
            "direct": false,
            "version": "7.18.2",
            "ecosystem": "npm"
          },
          {
            "name": "undici",
            "direct": false,
            "version": "7.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "6.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "7.24.7",
            "ecosystem": "npm"
          },
          {
            "name": "unenv",
            "direct": false,
            "version": "2.0.0-rc.24",
            "ecosystem": "npm"
          },
          {
            "name": "unpipe",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "update-browserslist-db",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "v8-to-istanbul",
            "direct": false,
            "version": "9.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "vary",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "vite",
            "direct": false,
            "version": "6.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "vite-plugin-singlefile",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "w3c-xmlserializer",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "walker",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "webidl-conversions",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-mimetype",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-url",
            "direct": false,
            "version": "16.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "wordwrap",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "workerd",
            "direct": false,
            "version": "1.20260310.1",
            "ecosystem": "npm"
          },
          {
            "name": "wrangler",
            "direct": false,
            "version": "4.72.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "9.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "write-file-atomic",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "xml-name-validator",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "xmlchars",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "5.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "17.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "18.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "21.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "22.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "yauzl",
            "direct": false,
            "version": "2.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "youch",
            "direct": false,
            "version": "4.1.0-beta.10",
            "ecosystem": "npm"
          },
          {
            "name": "youch-core",
            "direct": false,
            "version": "0.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "zod-to-json-schema",
            "direct": false,
            "version": "3.25.1",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 690,
        "direct_count": 12,
        "indirect_count": 678
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 19,
        "merged_prs": 17,
        "open_issues": 24,
        "closed_ratio": 0.489,
        "closed_issues": 23,
        "closed_unmerged_prs": 17
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "tpitre",
          "commits": 534,
          "avatar_url": "https://avatars.githubusercontent.com/u/645765?v=4"
        },
        {
          "type": "User",
          "login": "klgral",
          "commits": 5,
          "avatar_url": "https://avatars.githubusercontent.com/u/22195254?v=4"
        },
        {
          "type": "User",
          "login": "lukemoderwell",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/2180358?v=4"
        },
        {
          "type": "User",
          "login": "ahmed-khaire",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/4311670?v=4"
        },
        {
          "type": "User",
          "login": "claude",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/81847?v=4"
        },
        {
          "type": "User",
          "login": "Gururagavendra",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/84856326?v=4"
        },
        {
          "type": "User",
          "login": "ionmesca",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/103584532?v=4"
        },
        {
          "type": "User",
          "login": "nick-inkeep",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/122398915?v=4"
        },
        {
          "type": "User",
          "login": "robinhumphreys",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/97599438?v=4"
        },
        {
          "type": "User",
          "login": "chaba11",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/39912868?v=4"
        }
      ],
      "contributors_sampled": 11,
      "top_contributor_share": 0.967
    },
    "quality_signals": {
      "has_ci": false,
      "has_tests": true,
      "ci_workflows": [],
      "has_docs_dir": true,
      "linter_configs": [
        ".eslintrc.json",
        "biome.json"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 0,
            "reason": "0 out of 1 merged PRs checked by a CI test -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/22 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 3,
            "reason": "project has 1 contributing companies or organizations -- score normalized to 3",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": null,
            "reason": "no workflows found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": null,
            "reason": "No tokens found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "16 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "138975494458585123bf0d89840e46ddb7bd01ae",
        "ran_at": "2026-07-21T17:02:52Z",
        "aggregate_score": 3.1,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": false
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/southleft/figma-console-mcp",
    "host": "github.com",
    "name": "figma-console-mcp",
    "owner": "southleft"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 65,
      "inputs": {
        "security": 39,
        "vitality": 92,
        "community": 71,
        "governance": 55,
        "engineering": 64
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 92,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 87,
            "inputs": {
              "commits_last_year": 553,
              "human_commit_share": 1,
              "days_since_last_push": 4,
              "active_weeks_last_year": 33
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 4 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 4
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "33/52 weeks with commits",
                "points": 22.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 33
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "553 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 553
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 66,
              "latest_release_tag": "v1.36.0",
              "releases_from_tags": false,
              "days_since_latest_release": 4,
              "mean_days_between_releases": 4.9
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "66 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 66
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 4 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 4
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~4.9 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 4.9
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 4,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 4 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 4
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "good",
        "name": "Community & Adoption",
        "value": 71,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "good",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 81,
            "inputs": {
              "forks": 224,
              "stars": 2024,
              "watchers": 28,
              "growth_state": "organic",
              "growth_factor_pct": 100
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "2,024 stars",
                "points": 53.6,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 2024
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "224 forks",
                "points": 19.6,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 224
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "28 watchers",
                "points": 8,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 28
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "good",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 83,
            "inputs": {
              "packages": [
                "figma-console-mcp"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 99709
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "99,709 downloads/month across npm",
                "points": 66.6,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 99709,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 55,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 26,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 11,
              "top_contributor_share": 0.967
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 97% of commits",
                "points": 0.7,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 97
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "11 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 11
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "at_risk",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 42,
            "inputs": {
              "merged_prs": 17,
              "open_issues": 24,
              "closed_issues": 23,
              "issue_closed_ratio": 0.489,
              "closed_unmerged_prs": 17
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "49% of issues closed",
                "points": 22.9,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 49
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "17/34 decided PRs merged",
                "points": 19.1,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 17,
                      "decided": 34
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/22 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "followers": 117,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "southleft",
              "public_repos": 30,
              "account_age_days": 2363
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "117 followers of southleft",
                "points": 14.9,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 117,
                      "login": "southleft"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "30 public repos, account ~6 yr old",
                "points": 22.9,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 30
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 6
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "figma-console-mcp"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 4
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 4 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 4
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "81 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 81
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 64,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "at_risk",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_ci": false,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": ".eslintrc.json, biome.json",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".eslintrc.json, biome.json"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "0 out of 1 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "topics": [
                "ai",
                "design-systems",
                "figma",
                "figma-api",
                "figma-plugins",
                "mcp"
              ],
              "has_wiki": true,
              "homepage": "https://southleft.com",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://southleft.com",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "6 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 39,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Dangerous-Workflow, Packaging, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "dangerous_workflow",
                    "packaging",
                    "signed_releases",
                    "token_permissions"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 31,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 14,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 4,
              "scorecard_aggregate": 3.1
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "0 out of 1 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/22 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no workflows found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "No tokens found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "16 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "good",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories. Remaining weights renormalized. Matched 690 resolved dependencies against OSV. This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "indirect_dependencies_free_of_known_advisories"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 690
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 72,
            "inputs": {
              "source": "osv",
              "advisories": 16,
              "affected_packages": 5,
              "assessed_packages": 690,
              "unassessed_packages": 0,
              "affected_by_severity": "high 3, low 2",
              "direct_affected_packages": 1
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "1 affected: ws 8.18.0 (high 7.5)",
                "points": 14,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 1,
                      "packages": "ws 8.18.0 (high 7.5)"
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "transitive set not separable from development and test dependencies in this scope",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_scope_not_separable",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory has been public longer than 90 days",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "advisories_none_stale",
                    "params": {
                      "days": 90
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 690,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 8
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "moderate",
        "name": "AI Readiness",
        "value": 65,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.87,
              "agent_instruction_files": [
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 1324
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "87 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 87,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 56,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "tsconfig.json"
              ],
              "agent_commit_share": 0.01,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": ".eslintrc.json, biome.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".eslintrc.json, biome.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "1 of the last 100 commits agent-authored or agent-credited",
                "points": 2,
                "status": "partial",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 1,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 96,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 295107,
              "source_files_sampled": 142,
              "oversized_source_files": 10
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "TypeScript (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "TypeScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "10/142 source files over 60KB",
                "points": 51.1,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 142,
                      "oversized": 10
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "critical",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 20,
            "inputs": {
              "example_dirs": [],
              "has_mcp_signal": true,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "deps.dev does not index npm:figma-console-mcp@1.36.0; advisories assessed against the repository dependency graph instead"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-21T17:03:06.162274Z",
  "schema_version": "0.23.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/southleft/figma-console-mcp.svg",
  "full_name": "southleft/figma-console-mcp",
  "license_state": "standard",
  "license_spdx": "MIT"
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v1.13.0, esquema v0.23.0 — metodología completa · wiki de métricas.

Cómo se sitúa un resultado dentro del registro general: estadísticas agregadasnpm.