Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 1.13.0 · 2026-07-27 18:12 UTC

particle-iot / device-os

Device OS (Firmware) for Particle Devices

C++ · CLGPL-3.0★ 1074 estrellas⑂ 528 forksdesde mar 2013Ver en GitHub ↗

particle-iot/device-os tiene un índice de salud de 70 sobre 100, lo que lo sitúa en la banda Bueno. Su puntuación más alta es Vitality (89/100) y la más baja, Security (41/100). Se actualizó por última vez hace 3 días. 3 personas concentran la mayor parte del trabajo reciente.

70
global / 100
Bueno

Í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.

70
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

ParticleOrganización
188 seguidores379 repositorios públicosdesde sept 2012

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

Métricas por categoría

Vitalidad

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

89Excelente · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 3 días
29.1/36Cadencia de commits — 42/52 semanas con commits
18/18Volumen de commits — 458 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_year458
human_commit_share1
days_since_last_push3
active_weeks_last_year42
Cómo se puntúa
27/27Publica versiones — 100 versiones publicadas
36/36Recencia de las versiones — última versión hace 10 días
19.8/27Cadencia de publicación — una versión cada ~71,1 días
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Datos de entrada utilizados
releases_count100
latest_release_tagv6.5.0
releases_from_tagsno
days_since_latest_release10
mean_days_between_releases71,1

Comunidad y Adopción

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

84Bueno · 18% del índice global
Cómo se puntúa
49.2/60Estrellas — 1074 estrellas
22.7/25Forks — 528 forks
11.8/15Observadores — 131 observadores
Datos de entrada utilizados
forks528
stars1074
watchers131
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (LGPL-3.0)
18/18Guía CONTRIBUTING
0/13.5Código de conducta
7.2/7.2Plantilla de issues
6.3/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributing
has_issue_template
has_code_of_conductno
has_pull_request_template

Sostenibilidad y Gobernanza

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

71Bueno · 24% del índice global
Cómo se puntúa
36/54Factor bus — la mitad de los commits recae en 3 contribuyente(s)
16.7/22.5Distribución de commits — el principal contribuyente firma el 26% de los commits
13.5/13.5Amplitud de contribuyentes — 74 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 27 contributing companies or organizations
Datos de entrada utilizados
bus_factor3
contributors_sampled74
top_contributor_share0,256
Cómo se puntúa
0/46.8Resolución de issues — sin issues o sin datos
32.9/38.3Aceptación de PR — 1643/1908 PR decididos fusionados
1.5/15OpenSSF Scorecard: Code-Review — Found 2/15 approved changesets -- score normalized to 1
Datos de entrada utilizados
merged_prs1643
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs265
Excluidos de la puntuación (sin datos o no aplicable): Resolución de issues. Los pesos restantes se han renormalizado.
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
16.4/25Alcance del propietario — 188 seguidores de particle-iot
25/25Trayectoria — 379 repos públicos, cuenta de ~13 años
Datos de entrada utilizados
followers188
owner_typeOrganization
is_verified
owner_loginparticle-iot
public_repos379
account_age_days5063

Calidad de Ingeniería

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

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

Documentación

90Excelente
Cómo se puntúa
30/30README
25/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://www.particle.io/
10/10Descripción del repositorio
10/10Topics — 12 topics
0/10Wiki
Datos de entrada utilizados
topicsparticle, photon, electron, core, arduino, c, c-plus-plus, iot, p1, argon, boron, xenon
has_wikino
homepagehttps://www.particle.io/
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?

41En riesgo · 16% del índice global
Cómo se puntúa
6.8/7.5Binary-Artifacts — binaries present in source code
0/7.5Branch-Protection — branch protection not enabled on development/release branches
1.2/2.5CI-Tests — 1 out of 2 merged PRs checked by a CI test -- score normalized to 5
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0.8/7.5Code-Review — Found 2/15 approved changesets -- score normalized to 1
2.5/2.5Contributors — project has 27 contributing companies or organizations
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
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — sin datos
0/7.5Vulnerabilities — 50 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate2,6
Excluidos de la puntuación (sin datos o no aplicable): dangerous_workflow, packaging, token_permissions. Los pesos restantes se han renormalizado.
Cómo se puntúa
35/35Dependencias directas libres de avisos conocidos — ninguna dependencia directa tiene un aviso conocido
0/25Dependencias indirectas libres de avisos conocidos — el conjunto transitivo no es separable de las dependencias de desarrollo y prueba en este alcance
0/40Sin avisos pendientes — ningún aviso tiene fecha de publicación
Datos de entrada utilizados
sourceosv
advisories82
affected_packages37
assessed_packages600
unassessed_packages15
affected_by_severitycritical 3, high 21, moderate 12, low 1
direct_affected_packages0
Excluidos de la puntuación (sin datos o no aplicable): Dependencias indirectas libres de avisos conocidos, Sin avisos pendientes. Los pesos restantes se han renormalizado. Se cotejaron 600 dependencias resueltas con OSV. 15 no pudieron evaluarse: sin versión resuelta, ecosistema no admitido o fuera de la lista de paquetes informada. 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.

54Moderado · 0% del índice global
Cómo se puntúa
0/45Instrucciones para agentes — sin CLAUDE.md / AGENTS.md / reglas de editor
0/15Documentación legible por máquinas (llms.txt)
7.5/40Historial de commits legible — 14 de 100 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,14
agent_instruction_files
agent_instruction_max_bytes
Cómo se puntúa
18/18Arranque con un solo comando — bootloader/makefile, bootloader/prebootloader/makefile, bootloader/prebootloader/src/rtl872x/mbr/makefile, bootloader/prebootloader/src/rtl872x/part1/makefile, communication-dynalib/makefile, communication/makefile, communication/tests/UnitTest++/Makefile, crypto-dynalib/makefile, crypto/makefile, dynalib/makefile, gsm0710muxer/makefile, hal-dynalib/makefile, hal/makefile, main/makefile, makefile, modules/argon/makefile, modules/argon/system-part1/makefile, modules/argon/user-part/makefile, modules/b5som/makefile, modules/b5som/system-part1/makefile, modules/b5som/user-part/makefile, modules/boron/makefile, modules/boron/system-part1/makefile, modules/boron/user-part/makefile, modules/electron2/makefile, modules/electron2/system-part1/makefile, modules/electron2/user-part/makefile, modules/makefile, modules/msom/makefile, modules/msom/system-part1/makefile, modules/msom/user-part/makefile, modules/tracker/makefile, modules/tracker/system-part1/makefile, modules/tracker/user-part/makefile, modules/trackerm/makefile, modules/trackerm/system-part1/makefile, modules/trackerm/user-part/makefile, modules/tron/makefile, modules/tron/system-part1/makefile, modules/tron/user-part/makefile, newlib_nano/makefile, platform/makefile, proto_defs/makefile, rt-dynalib/makefile, services-dynalib/makefile, services/makefile, system-dynalib/makefile, system/makefile, third_party/ambd_sdk/makefile, third_party/coremark/Makefile, third_party/freertos/makefile, third_party/libiperf/Makefile, third_party/littlefs/makefile, third_party/lwip/makefile, third_party/mbedtls/makefile, third_party/miniz/Makefile, third_party/nanopb/makefile, third_party/nrf5_sdk/makefile, third_party/wiznet_driver/makefile, user/makefile, user/tests/reflection/makefile, wiring/makefile, wiring_globals/makefile
22/22Pruebas automatizadas
0/11Configuración de lint / formato
11/11Verificación estática de tipos — C++ (tipado estático)
10/10Entorno reproducible — lockfile
0/10Práctica demostrada con agentes — ningún commit con autoría de agente entre los últimos 100
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_filesbootloader/makefile, bootloader/prebootloader/makefile, bootloader/prebootloader/src/rtl872x/mbr/makefile, bootloader/prebootloader/src/rtl872x/part1/makefile, communication-dynalib/makefile, communication/makefile, communication/tests/UnitTest++/Makefile, crypto-dynalib/makefile, crypto/makefile, dynalib/makefile, gsm0710muxer/makefile, hal-dynalib/makefile, hal/makefile, main/makefile, makefile, modules/argon/makefile, modules/argon/system-part1/makefile, modules/argon/user-part/makefile, modules/b5som/makefile, modules/b5som/system-part1/makefile, modules/b5som/user-part/makefile, modules/boron/makefile, modules/boron/system-part1/makefile, modules/boron/user-part/makefile, modules/electron2/makefile, modules/electron2/system-part1/makefile, modules/electron2/user-part/makefile, modules/makefile, modules/msom/makefile, modules/msom/system-part1/makefile, modules/msom/user-part/makefile, modules/tracker/makefile, modules/tracker/system-part1/makefile, modules/tracker/user-part/makefile, modules/trackerm/makefile, modules/trackerm/system-part1/makefile, modules/trackerm/user-part/makefile, modules/tron/makefile, modules/tron/system-part1/makefile, modules/tron/user-part/makefile, newlib_nano/makefile, platform/makefile, proto_defs/makefile, rt-dynalib/makefile, services-dynalib/makefile, services/makefile, system-dynalib/makefile, system/makefile, third_party/ambd_sdk/makefile, third_party/coremark/Makefile, third_party/freertos/makefile, third_party/libiperf/Makefile, third_party/littlefs/makefile, third_party/lwip/makefile, third_party/mbedtls/makefile, third_party/miniz/Makefile, third_party/nanopb/makefile, third_party/nrf5_sdk/makefile, third_party/wiznet_driver/makefile, user/makefile, user/tests/reflection/makefile, wiring/makefile, wiring_globals/makefile
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
Cómo se puntúa
45/45Código verificable por tipos — C++ (tipado estático)
54.4/55Tamaños de archivo manejables — 22/2009 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageC++
largest_source_bytes204.872
source_files_sampled2009
oversized_source_files22
Cómo se puntúa
40/40Esquema de API (OpenAPI/GraphQL/proto) — proto_defs/internal/ledger.proto, proto_defs/internal/network_config.proto
0/20Servidor MCP
40/40Ejemplos ejecutables — examples
Datos de entrada utilizados
example_dirsexamples
has_mcp_signalno
api_schema_filesproto_defs/internal/ledger.proto, proto_defs/internal/network_config.proto

Datos clave

1074estrellas de GitHub
74contribuidores
458commits en los últimos 12 meses
3días desde el último push
100versiones publicadas
3factor bus
0issues abiertas
ecosistemas de paquetes

Advertencias de recopilación de datos

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token

Más detalle

Historial de estrellas y forks 0 ★ / 528 ⇿
0Estrellas
528Forks
99Versiones

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.

010020030040050048492013-122020-022026-05
Mayor 5Menor 25Parche 28

Cada punto abarca 12 días.

OpenSSF Scorecard 2.6 / 10
2.6agregado

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-27 18:12 UTC

9Binary-Artifactsbinaries present in source code
0Branch-Protectionbranch protection not enabled on development/release branches
5CI-Tests1 out of 2 merged PRs checked by a CI test -- score normalized to 5
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
1Code-ReviewFound 2/15 approved changesets -- score normalized to 1
10Contributorsproject has 27 contributing companies or organizations
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
0Security-Policysecurity policy file not detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
n/dToken-PermissionsNo tokens found
0Vulnerabilities50 existing vulnerabilities detected
Todas las dependencias 615

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

RegistroPaqueteVersiónRelación
npm@babel/code-frame7.27.1indirecta
npm@babel/compat-data7.28.4indirecta
npm@babel/core7.28.4indirecta
npm@babel/generator7.28.3indirecta
npm@babel/helper-compilation-targets7.27.2indirecta
npm@babel/helper-globals7.28.0indirecta
npm@babel/helper-module-imports7.27.1indirecta
npm@babel/helper-module-transforms7.28.3indirecta
npm@babel/helper-string-parser7.27.1indirecta
npm@babel/helper-validator-identifier7.27.1indirecta
npm@babel/helper-validator-option7.27.1indirecta
npm@babel/helpers7.28.4indirecta
npm@babel/parser7.28.4indirecta
npm@babel/template7.27.2indirecta
npm@babel/traverse7.28.4indirecta
npm@babel/types7.28.4indirecta
npm@es-joy/jsdoccomment0.71.0indirecta
npm@eslint-community/eslint-utils4.9.0indirecta
npm@eslint-community/regexpp4.12.1indirecta
npm@eslint/compat1.4.0indirecta
npm@eslint/config-array0.21.0indirecta
npm@eslint/config-helpers0.4.0indirecta
npm@eslint/core0.16.0indirecta
npm@eslint/eslintrc3.3.1indirecta
npm@eslint/js9.37.0indirecta
npm@eslint/object-schema2.1.6indirecta
npm@eslint/plugin-kit0.4.0indirecta
npm@humanfs/core0.19.1indirecta
npm@humanfs/node0.16.7indirecta
npm@humanwhocodes/module-importer1.0.1indirecta
npm@humanwhocodes/retry0.4.3indirecta
npm@istanbuljs/load-nyc-config1.1.0indirecta
npm@istanbuljs/schema0.1.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@nodelib/fs.scandir2.1.5indirecta
npm@nodelib/fs.stat2.0.5indirecta
npm@nodelib/fs.walk1.2.8indirecta
npm@octokit/auth-token2.5.0indirecta
npm@octokit/core3.6.0indirecta
npm@octokit/endpoint6.0.12indirecta
npm@octokit/graphql4.8.0indirecta
npm@octokit/openapi-types12.11.0indirecta
npm@octokit/plugin-paginate-rest2.21.3indirecta
npm@octokit/plugin-request-log1.0.4indirecta
npm@octokit/plugin-rest-endpoint-methods5.16.2indirecta
npm@octokit/request5.6.3indirecta
npm@octokit/request-error2.1.0indirecta
npm@octokit/rest18.12.0indirecta
npm@octokit/types6.41.0indirecta
npm@particle/device-constants4.1.0indirecta
npm@particle/device-os-flash-util0.15.2indirecta
npm@particle/device-os-protobuf2.10.1indirecta
npm@particle/device-os-protobuf2.6.3indirecta
npm@protobufjs/aspromise1.1.2indirecta
npm@protobufjs/base641.1.2indirecta
npm@protobufjs/codegen2.0.4indirecta
npm@protobufjs/eventemitter1.1.0indirecta
npm@protobufjs/fetch1.1.0indirecta
npm@protobufjs/float1.0.2indirecta
npm@protobufjs/inquire1.1.0indirecta
npm@protobufjs/path1.1.2indirecta
npm@protobufjs/pool1.1.0indirecta
npm@protobufjs/utf81.1.0indirecta
npm@sindresorhus/is0.7.0indirecta
npm@types/estree1.0.8indirecta
npm@types/json-schema7.0.15indirecta
npm@types/long4.0.2indirecta
npm@types/node24.7.2indirecta
npm@types/node25.0.9indirecta
npm@types/w3c-web-usb1.0.13indirecta
npm@types/w3c-web-usb1.0.14indirecta
npm@typescript-eslint/eslint-plugin8.46.1indirecta
npm@typescript-eslint/parser8.46.1indirecta
npm@typescript-eslint/project-service8.46.1indirecta
npm@typescript-eslint/scope-manager8.46.1indirecta
npm@typescript-eslint/tsconfig-utils8.46.1indirecta
npm@typescript-eslint/type-utils8.46.1indirecta
npm@typescript-eslint/types8.46.1indirecta
npm@typescript-eslint/typescript-estree8.46.1indirecta
npm@typescript-eslint/utils8.46.1indirecta
npm@typescript-eslint/visitor-keys8.46.1indirecta
npm@ungap/promise-all-settled1.1.2indirecta
npmacorn8.15.0indirecta
npmacorn-jsx5.3.2indirecta
npmaggregate-error3.1.0indirecta
npmajv6.12.6indirecta
npmansi-colors4.1.1indirecta
npmansi-regex5.0.1indirecta
npmansi-styles4.3.0indirecta
npmanymatch3.1.3indirecta
npmappend-transform2.0.0indirecta
npmarchive-type4.0.0indirecta
npmarchiver5.3.1indirecta
npmarchiver5.3.2indirecta
npmarchiver-utils2.1.0indirecta
npmarchiver-utils3.0.4indirecta
npmarchy1.0.0indirecta
npmare-docs-informative0.0.2indirecta
npmargparse1.0.10indirecta
npmargparse2.0.1indirecta
npmarray-events0.2.0indirecta
npmarray-union2.1.0indirecta
npmassertion-error1.1.0indirecta
npmasync3.2.4indirecta
npmasync3.2.6indirecta
npmasync-arrays2.0.0indirecta
npmasynckit0.4.0indirecta
npmavailable-typed-arrays1.0.7indirecta
npmbabel-preset-env^1.6.0indirecta
npmbabel-register^6.26.0indirecta
npmbalanced-match1.0.2indirecta
npmbase64-js1.5.1indirecta
npmbaseline-browser-mapping2.8.16indirecta
npmbefore-after-hook2.2.3indirecta
npmbig-integer1.6.51indirecta
npmbig-integer1.6.52indirecta
npmbinary0.3.0indirecta
npmbinary-extensions2.3.0indirecta
npmbinary-version-reader3.0.2indirecta
npmbinary-version-reader4.0.2indirecta
npmbit-mask1.0.2indirecta
npmbl1.2.3indirecta
npmbl4.1.0indirecta
npmbluebird3.4.7indirecta
npmbluebird3.7.2indirecta
npmbluebird^3.5.0indirecta
npmbrace-expansion1.1.11indirecta
npmbrace-expansion1.1.12indirecta
npmbrace-expansion2.0.1indirecta
npmbrace-expansion2.0.2indirecta
npmbraces3.0.2indirecta
npmbraces3.0.3indirecta
npmbrowser-stdout1.3.1indirecta
npmbrowserslist4.26.3indirecta
npmbuffer5.7.1indirecta
npmbuffer-alloc1.2.0indirecta
npmbuffer-alloc-unsafe1.1.0indirecta
npmbuffer-crc320.2.13indirecta
npmbuffer-fill1.0.0indirecta
npmbuffer-indexof-polyfill1.0.2indirecta
npmbuffers0.1.1indirecta
npmbuiltin-status-codes3.0.0indirecta
npmcacheable-request2.1.4indirecta
npmcaching-transform4.0.0indirecta
npmcall-bind1.0.5indirecta
npmcall-bind1.0.8indirecta
npmcall-bind-apply-helpers1.0.2indirecta
npmcall-bound1.0.4indirecta
npmcall-me-maybe1.0.2indirecta
npmcallsites3.1.0indirecta
npmcamelcase5.3.1indirecta
npmcamelcase6.3.0indirecta
npmcaniuse-lite1.0.30001750indirecta
npmcbor^9.0.1indirecta
npmchai4.4.0indirecta
npmchai4.5.0indirecta
npmchai^4.1.2indirecta
npmchai-as-promised^7.1.1indirecta
npmchai-exclude2.1.0indirecta
npmchai-exclude2.1.1indirecta
npmchai-fs2.0.0indirecta
npmchainsaw0.1.0indirecta
npmchalk4.1.2indirecta
npmchalk5.6.2indirecta
npmcheck-error1.0.3indirecta
npmchokidar3.5.3indirecta
npmclean-stack2.2.0indirecta
npmcliui6.0.0indirecta
npmcliui7.0.4indirecta
npmclone-response1.0.2indirecta
npmcolor-convert2.0.1indirecta
npmcolor-name1.1.4indirecta
npmcombined-stream1.0.8indirecta
npmcommander2.20.3indirecta
npmcomment-parser1.4.1indirecta
npmcommondir1.0.1indirecta
npmcompress-commons4.1.1indirecta
npmcompress-commons4.1.2indirecta
npmconcat-map0.0.1indirecta
npmcontent-disposition0.5.4indirecta
npmconvert-source-map1.9.0indirecta
npmconvert-source-map2.0.0indirecta
npmcore-util-is1.0.3indirecta
npmcrc-321.2.2indirecta
npmcrc32-stream4.0.2indirecta
npmcrc32-stream4.0.3indirecta
npmcross-spawn7.0.6indirecta
npmcrypto-random-string2.0.0indirecta
npmdebug4.3.3indirecta
npmdebug4.4.3indirecta
npmdecamelize1.2.0indirecta
npmdecamelize4.0.0indirecta
npmdecode-uri-component0.2.2indirecta
npmdecompress4.2.1indirecta
npmdecompress-response3.3.0indirecta
npmdecompress-tar4.1.1indirecta
npmdecompress-tarbz24.1.1indirecta
npmdecompress-targz4.1.1indirecta
npmdecompress-unzip4.0.1indirecta
npmdeep-eql4.1.3indirecta
npmdeep-eql4.1.4indirecta
npmdeep-is0.1.4indirecta
npmdefault-require-extensions3.0.1indirecta
npmdefine-data-property1.1.1indirecta
npmdefine-data-property1.1.4indirecta
npmdel6.1.1indirecta
npmdelayed-stream1.0.0indirecta
npmdeprecation2.3.1indirecta
npmdiff5.0.0indirecta
npmdir-glob3.0.1indirecta
npmdownload8.0.0indirecta
npmdunder-proto1.0.1indirecta
npmduplexer20.1.4indirecta
npmduplexer30.1.5indirecta
npmelectron-to-chromium1.5.237indirecta
npmemitter-component1.1.2indirecta
npmemoji-regex8.0.0indirecta
npmend-of-stream1.4.4indirecta
npmend-of-stream1.4.5indirecta
npmes-define-property1.0.1indirecta
npmes-errors1.3.0indirecta
npmes-object-atoms1.1.1indirecta
npmes-set-tostringtag2.1.0indirecta
npmes6-error4.1.1indirecta
npmes6-promise4.2.8indirecta
npmescalade3.2.0indirecta
npmescape-string-regexp1.0.5indirecta
npmescape-string-regexp4.0.0indirecta
npmeslint9.37.0indirecta
npmeslint-config-particle3.0.2indirecta
npmeslint-plugin-jsdoc60.8.3indirecta
npmeslint-scope8.4.0indirecta
npmeslint-visitor-keys3.4.3indirecta
npmeslint-visitor-keys4.2.1indirecta
npmespree10.4.0indirecta
npmesprima4.0.1indirecta
npmesquery1.6.0indirecta
npmesrecurse4.3.0indirecta
npmestraverse5.3.0indirecta
npmesutils2.0.3indirecta
npmext-list2.2.2indirecta
npmext-name5.0.0indirecta
npmextended-emitter1.6.0indirecta
npmfast-deep-equal3.1.3indirecta
npmfast-glob3.3.1indirecta
npmfast-glob3.3.3indirecta
npmfast-json-stable-stringify2.1.0indirecta
npmfast-levenshtein2.0.6indirecta
npmfastq1.15.0indirecta
npmfastq1.19.1indirecta
npmfclone1.0.11indirecta
npmfd-slicer1.1.0indirecta
npmfile-entry-cache8.0.0indirecta
npmfile-type11.1.0indirecta
npmfile-type3.9.0indirecta
npmfile-type4.4.0indirecta
npmfile-type5.2.0indirecta
npmfile-type6.2.0indirecta
npmfilename-reserved-regex2.0.0indirecta
npmfilenamify3.0.0indirecta
npmfill-range7.0.1indirecta
npmfill-range7.1.1indirecta
npmfind-cache-dir3.3.2indirecta
npmfind-up4.1.0indirecta
npmfind-up5.0.0indirecta
npmflat5.0.2indirecta
npmflat-cache4.0.1indirecta
npmflatted3.3.3indirecta
npmfor-each0.3.5indirecta
npmforeground-child2.0.0indirecta
npmform-data4.0.4indirecta
npmfrom22.3.0indirecta
npmfromentries1.3.2indirecta
npmfs-constants1.0.0indirecta
npmfs.realpath1.0.0indirecta
npmfsevents2.3.3indirecta
npmfstream1.0.12indirecta
npmfunction-bind1.1.2indirecta
npmgensync1.0.0-beta.2indirecta
npmget-caller-file2.0.5indirecta
npmget-func-name2.0.2indirecta
npmget-intrinsic1.3.0indirecta
npmget-package-type0.1.0indirecta
npmget-proto1.0.1indirecta
npmget-stream2.3.1indirecta
npmget-stream3.0.0indirecta
npmget-stream4.1.0indirecta
npmglob7.2.0indirecta
npmglob7.2.3indirecta
npmglob-parent5.1.2indirecta
npmglob-parent6.0.2indirecta
npmglob-to-regexp0.3.0indirecta
npmglobals14.0.0indirecta
npmglobals16.4.0indirecta
npmglobby11.1.0indirecta
npmgopd1.2.0indirecta
npmgot8.3.2indirecta
npmgraceful-fs4.2.11indirecta
npmgraphemer1.4.0indirecta
npmgrowl1.10.5indirecta
npmhas-flag4.0.0indirecta
npmhas-property-descriptors1.0.1indirecta
npmhas-property-descriptors1.0.2indirecta
npmhas-symbol-support-x1.4.2indirecta
npmhas-symbols1.1.0indirecta
npmhas-to-string-tag-x1.4.1indirecta
npmhas-tostringtag1.0.2indirecta
npmhasha5.2.2indirecta
npmhasown2.0.2indirecta
npmhe1.2.0indirecta
npmhtml-entities2.6.0indirecta
npmhtml-escaper2.0.2indirecta
npmhttp-cache-semantics3.8.1indirecta
npmieee7541.2.1indirecta
npmignore5.2.4indirecta
npmignore5.3.2indirecta
npmignore7.0.5indirecta
npmimport-fresh3.3.1indirecta
npmimurmurhash0.1.4indirecta
npmindent-string4.0.0indirecta
npminflight1.0.6indirecta
npminherits2.0.4indirecta
npminto-stream3.1.0indirecta
npmip-address9.0.5indirecta
npmis-binary-path2.1.0indirecta
npmis-callable1.2.7indirecta
npmis-extglob2.1.1indirecta
npmis-fullwidth-code-point3.0.0indirecta
npmis-glob4.0.3indirecta
npmis-natural-number4.0.1indirecta
npmis-number7.0.0indirecta
npmis-object1.0.2indirecta
npmis-path-cwd2.2.0indirecta
npmis-path-inside3.0.3indirecta
npmis-plain-obj1.1.0indirecta
npmis-plain-obj2.1.0indirecta
npmis-plain-object5.0.0indirecta
npmis-retry-allowed1.2.0indirecta
npmis-stream1.1.0indirecta
npmis-stream2.0.1indirecta
npmis-typed-array1.1.15indirecta
npmis-typedarray1.0.0indirecta
npmis-unicode-supported0.1.0indirecta
npmis-windows1.0.2indirecta
npmisarray1.0.0indirecta
npmisarray2.0.5indirecta
npmisexe2.0.0indirecta
npmistanbul-lib-coverage3.2.2indirecta
npmistanbul-lib-hook3.0.0indirecta
npmistanbul-lib-instrument4.0.3indirecta
npmistanbul-lib-processinfo2.0.3indirecta
npmistanbul-lib-report3.0.1indirecta
npmistanbul-lib-source-maps4.0.1indirecta
npmistanbul-reports3.2.0indirecta
npmisurl1.0.0indirecta
npmjs-tokens4.0.0indirecta
npmjs-yaml3.14.1indirecta
npmjs-yaml4.1.0indirecta
npmjsbn1.1.0indirecta
npmjsdoc-type-pratt-parser6.6.0indirecta
npmjsesc3.1.0indirecta
npmjson-buffer3.0.0indirecta
npmjson-buffer3.0.1indirecta
npmjson-schema-traverse0.4.1indirecta
npmjson-stable-stringify-without-jsonify1.0.1indirecta
npmjson52.2.3indirecta
npmjsonc-parser3.3.1indirecta
npmkeyv3.0.0indirecta
npmkeyv4.5.4indirecta
npmlazystream1.0.1indirecta
npmlevn0.4.1indirecta
npmlistenercount1.0.1indirecta
npmlocate-path5.0.0indirecta
npmlocate-path6.0.0indirecta
npmlodash4.17.21indirecta
npmlodash4.17.23indirecta
npmlodash^4.17.21indirecta
npmlodash^4.17.4indirecta
npmlodash.defaults4.2.0indirecta
npmlodash.difference4.5.0indirecta
npmlodash.flatten4.4.0indirecta
npmlodash.flattendeep4.4.0indirecta
npmlodash.isplainobject4.0.6indirecta
npmlodash.merge4.6.2indirecta
npmlodash.union4.6.0indirecta
npmlog-symbols4.1.0indirecta
npmlong4.0.0indirecta
npmloupe2.3.7indirecta
npmlowercase-keys1.0.0indirecta
npmlowercase-keys1.0.1indirecta
npmlru-cache5.1.1indirecta
npmmake-dir1.3.0indirecta
npmmake-dir2.1.0indirecta
npmmake-dir3.1.0indirecta
npmmake-dir4.0.0indirecta
npmmath-intrinsics1.1.0indirecta
npmmerge21.4.1indirecta
npmmicromatch4.0.5indirecta
npmmicromatch4.0.8indirecta
npmmime-db1.52.0indirecta
npmmime-db1.54.0indirecta
npmmime-types2.1.35indirecta
npmmimic-response1.0.1indirecta
npmminimatch3.1.2indirecta
npmminimatch4.2.1indirecta
npmminimatch5.1.6indirecta
npmminimatch9.0.5indirecta
npmminimist1.2.8indirecta
npmminimist^1.2.8indirecta
npmmkdirp0.5.6indirecta
npmmkdirp1.0.4indirecta
npmmocha9.2.2indirecta
npmmocha^3.5.0indirecta
npmms2.1.2indirecta
npmms2.1.3indirecta
npmnanoid3.3.1indirecta
npmnatural-compare1.4.0indirecta
npmnet1.0.2indirecta
npmnode-addon-api8.5.0indirecta
npmnode-addon-api8.7.0indirecta
npmnode-fetch2.7.0indirecta
npmnode-gyp-build4.8.4indirecta
npmnode-preload0.2.1indirecta
npmnode-releases2.0.23indirecta
npmnormalize-path3.0.0indirecta
npmnormalize-url2.0.1indirecta
npmnyc15.1.0indirecta
npmobject-assign4.1.1indirecta
npmobject-deep-merge1.0.5indirecta
npmobject-inspect1.13.1indirecta
npmobject-inspect1.13.4indirecta
npmonce1.4.0indirecta
npmoptionator0.9.4indirecta
npmp-cancelable0.4.1indirecta
npmp-event2.3.1indirecta
npmp-finally1.0.0indirecta
npmp-is-promise1.1.0indirecta
npmp-limit2.3.0indirecta
npmp-limit3.1.0indirecta
npmp-locate4.1.0indirecta
npmp-locate5.0.0indirecta
npmp-map3.0.0indirecta
npmp-map4.0.0indirecta
npmp-timeout2.0.1indirecta
npmp-try2.2.0indirecta
npmpackage-hash4.0.0indirecta
npmparent-module1.0.1indirecta
npmparse-imports-exports0.2.4indirecta
npmparse-statements1.0.11indirecta
npmparticle-api-js11.1.4indirecta
npmparticle-api-js11.1.7indirecta
npmparticle-usb4.0.2indirecta
npmparticle-usb4.2.0indirecta
npmparticle-usb^2.4.1indirecta
npmpath-exists4.0.0indirecta
npmpath-is-absolute1.0.1indirecta
npmpath-key3.1.1indirecta
npmpath-type4.0.0indirecta
npmpathval1.1.1indirecta
npmpend1.2.0indirecta
npmpicocolors1.1.1indirecta
npmpicomatch2.3.1indirecta
npmpify2.3.0indirecta
npmpify3.0.0indirecta
npmpify4.0.1indirecta
npmpinkie2.0.4indirecta
npmpinkie-promise2.0.1indirecta
npmpkg-dir4.2.0indirecta
npmpossible-typed-array-names1.1.0indirecta
npmprelude-ls1.2.1indirecta
npmprepend-http2.0.0indirecta
npmprocess-nextick-args2.0.1indirecta
npmprocess-on-spawn1.1.0indirecta
npmprotobufjs6.11.4indirecta
npmpump3.0.3indirecta
npmpunycode2.3.1indirecta
npmqs6.11.2indirecta
npmqs6.14.0indirecta
npmquery-string5.1.1indirecta
npmqueue-microtask1.2.3indirecta
npmrandombytes2.1.0indirecta
npmrandomstring^1.1.5indirecta
npmreadable-stream2.3.8indirecta
npmreadable-stream3.6.2indirecta
npmreaddir-enhanced1.5.2indirecta
npmreaddir-glob1.1.3indirecta
npmreaddirp3.6.0indirecta
npmrelease-zalgo1.0.0indirecta
npmrequire-directory2.1.1indirecta
npmrequire-main-filename2.0.0indirecta
npmresolve-from4.0.0indirecta
npmresolve-from5.0.0indirecta
npmresponselike1.0.2indirecta
npmreusify1.0.4indirecta
npmreusify1.1.0indirecta
npmrimraf2.7.1indirecta
npmrimraf3.0.2indirecta
npmrun-parallel1.2.0indirecta
npmsafe-buffer5.1.2indirecta
npmsafe-buffer5.2.1indirecta
npmseek-bzip1.0.6indirecta
npmsemver5.7.2indirecta
npmsemver6.3.1indirecta
npmsemver7.7.3indirecta
npmsemver^5.4.1indirecta
npmserialize-javascript6.0.0indirecta
npmset-blocking2.0.0indirecta
npmset-function-length1.1.1indirecta
npmset-function-length1.2.2indirecta
npmsetimmediate1.0.5indirecta
npmshebang-command2.0.0indirecta
npmshebang-regex3.0.0indirecta
npmside-channel1.0.4indirecta
npmside-channel1.1.0indirecta
npmside-channel-list1.0.0indirecta
npmside-channel-map1.0.1indirecta
npmside-channel-weakmap1.0.2indirecta
npmsift17.1.3indirecta
npmsignal-exit3.0.7indirecta
npmslash3.0.0indirecta
npmsort-keys1.1.2indirecta
npmsort-keys2.0.0indirecta
npmsort-keys-length1.0.1indirecta
npmsource-map0.6.1indirecta
npmspawn-wrap2.0.0indirecta
npmspdx-exceptions2.5.0indirecta
npmspdx-expression-parse4.0.0indirecta
npmspdx-license-ids3.0.22indirecta
npmsprintf-js1.0.3indirecta
npmsprintf-js1.1.3indirecta
npmstream0.0.2indirecta
npmstream-http3.2.0indirecta
npmstrict-uri-encode1.1.0indirecta
npmstring-width4.2.3indirecta
npmstring_decoder1.1.1indirecta
npmstring_decoder1.3.0indirecta
npmstrip-ansi6.0.1indirecta
npmstrip-bom4.0.0indirecta
npmstrip-dirs2.1.0indirecta
npmstrip-json-comments3.1.1indirecta
npmstrip-outer1.0.1indirecta
npmsupports-color7.2.0indirecta
npmsupports-color8.1.1indirecta
npmtar-stream1.6.2indirecta
npmtar-stream2.2.0indirecta
npmtelnet-client1.4.11indirecta
npmtemp-dir2.0.0indirecta
npmtempy1.0.1indirecta
npmtest-exclude6.0.0indirecta
npmthrough2.3.8indirecta
npmtimed-out4.0.1indirecta
npmtmp0.1.0indirecta
npmtmp0.2.1indirecta
npmtmp0.2.5indirecta
npmtmp-promise3.0.3indirecta
npmto-buffer1.2.2indirecta
npmto-regex-range5.0.1indirecta
npmtr460.0.3indirecta
npmtraverse0.3.9indirecta
npmtrim-repeated1.0.0indirecta
npmts-api-utils2.1.0indirecta
npmtype-check0.4.0indirecta
npmtype-detect4.0.8indirecta
npmtype-detect4.1.0indirecta
npmtype-fest0.16.0indirecta
npmtype-fest0.8.1indirecta
npmtype-fest4.2.0indirecta
npmtyped-array-buffer1.0.3indirecta
npmtypedarray-to-buffer3.1.5indirecta
npmtypescript5.9.3indirecta
npmtypescript-eslint8.46.1indirecta
npmunbzip2-stream1.4.3indirecta
npmundici-types7.14.0indirecta
npmundici-types7.16.0indirecta
npmunique-string2.0.0indirecta
npmuniversal-user-agent6.0.1indirecta
npmunzipper0.10.14indirecta
npmupdate-browserslist-db1.1.3indirecta
npmuri-js4.4.1indirecta
npmurl-parse-lax3.0.0indirecta
npmurl-to-options1.0.1indirecta
npmusb2.16.0indirecta
npmusb2.17.0indirecta
npmusb^1.2.0indirecta
npmutil-deprecate1.0.2indirecta
npmuuid8.3.2indirecta
npmverror^1.10.0indirecta
npmwebidl-conversions3.0.1indirecta
npmwhatwg-url5.0.0indirecta
npmwhich2.0.2indirecta
npmwhich-module2.0.1indirecta
npmwhich-typed-array1.1.19indirecta
npmword-wrap1.2.5indirecta
npmworkerpool6.2.0indirecta
npmwrap-ansi6.2.0indirecta
npmwrap-ansi7.0.0indirecta
npmwrappy1.0.2indirecta
npmwrite-file-atomic3.0.3indirecta
npmxtend4.0.2indirecta
npmy18n4.0.3indirecta
npmy18n5.0.8indirecta
npmyallist3.1.1indirecta
npmyargs15.4.1indirecta
npmyargs16.2.0indirecta
npmyargs-parser18.1.3indirecta
npmyargs-parser20.2.4indirecta
npmyargs-unparser2.0.0indirecta
npmyauzl2.10.0indirecta
npmyocto-queue0.1.0indirecta
npmzip-stream4.1.0indirecta
npmzip-stream4.1.1indirecta
Avisos de dependencias 37

Este repositorio no publica ningún paquete que el índice resuelva, así que se evaluó su propio grafo de dependencias — 600 paquetes, que incluyen también fijaciones de desarrollo y prueba que nunca se distribuyen: 37 tienen avisos conocidos, de los cuales 0 son directas. 15 no pudieron evaluarse: sin versión resuelta, ecosistema no admitido, o fuera de la lista de paquetes informada.

PaqueteVersiónRelaciónGravedadAvisosCorregido en
decompress4.2.1indirectacrítica111.1.3
flatted3.3.3indirectacrítica23.4.2
protobufjs6.11.4indirectacrítica118.6.0
brace-expansion1.1.11indirectaalta45.0.8
brace-expansion1.1.12indirectaalta35.0.8
brace-expansion2.0.1indirectaalta45.0.8
brace-expansion2.0.2indirectaalta35.0.8
braces3.0.2indirectaalta13.0.3
form-data4.0.4indirectaalta14.0.6
http-cache-semantics3.8.1indirectaalta14.1.1
js-yaml3.14.1indirectaalta34.3.0
js-yaml4.1.0indirectaalta34.3.0
lodash4.17.21indirectaalta34.18.0
lodash4.17.23indirectaalta24.18.0
minimatch3.1.2indirectaalta310.2.3
minimatch4.2.1indirectaalta310.2.3
minimatch5.1.6indirectaalta310.2.3
minimatch9.0.5indirectaalta310.2.3
picomatch2.3.1indirectaalta24.0.4
serialize-javascript6.0.0indirectaalta37.0.5
tmp0.1.0indirectaalta20.2.6
tmp0.2.1indirectaalta20.2.6
tmp0.2.5indirectaalta10.2.6
uuid8.3.2indirectaalta113.0.1
@octokit/plugin-paginate-rest2.21.3indirectamoderada111.4.1
@octokit/request5.6.3indirectamoderada19.2.1
@octokit/request-error2.1.0indirectamoderada16.1.7
@protobufjs/utf81.1.0indirectamoderada18.0.2
ajv6.12.6indirectamoderada18.18.0
diff5.0.0indirectamoderada18.0.3
got8.3.2indirectamoderada112.1.0
ip-address9.0.5indirectamoderada110.1.1
micromatch4.0.5indirectamoderada14.0.8
nanoid3.3.1indirectamoderada15.0.9
qs6.11.2indirectamoderada36.15.2
qs6.14.0indirectamoderada36.15.2
@babel/core7.28.4indirectabaja18.0.0-rc.6

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": [
        "particle",
        "photon",
        "electron",
        "core",
        "arduino",
        "c",
        "c-plus-plus",
        "iot",
        "p1",
        "argon",
        "boron",
        "xenon"
      ],
      "is_fork": false,
      "size_kb": 137929,
      "has_wiki": false,
      "homepage": "https://www.particle.io/",
      "languages": {
        "C": 3312476,
        "C++": 9297993,
        "GDB": 1363,
        "Tcl": 288792,
        "NASL": 5577,
        "CMake": 19429,
        "Shell": 66720,
        "Python": 40989,
        "Assembly": 20573,
        "Makefile": 203886,
        "JavaScript": 267147,
        "PowerShell": 1817,
        "Linker Script": 223259
      },
      "pushed_at": "2026-07-24T13:36:18Z",
      "created_at": "2013-03-12T04:42:33Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-17T17:04:08Z",
      "description": "Device OS (Firmware) for Particle Devices",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "LGPL-3.0",
      "default_branch": "develop",
      "license_spdx_raw": "LGPL-3.0",
      "primary_language": "C++",
      "significant_languages": [
        "C++",
        "C"
      ]
    },
    "owner": {
      "blog": "https://www.particle.io",
      "name": "Particle",
      "type": "Organization",
      "login": "particle-iot",
      "company": null,
      "location": "San Francisco, CA",
      "followers": 188,
      "avatar_url": "https://avatars.githubusercontent.com/u/2348966?v=4",
      "created_at": "2012-09-14T19:38:21Z",
      "is_verified": null,
      "public_repos": 379,
      "account_age_days": 5063
    },
    "license": {
      "state": "standard",
      "spdx_id": "LGPL-3.0",
      "raw_spdx": "LGPL-3.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v6.5.0",
          "kind": "minor",
          "published_at": "2026-07-17T17:02:51Z"
        },
        {
          "tag": "v6.4.1",
          "kind": "patch",
          "published_at": "2026-05-04T17:46:58Z"
        },
        {
          "tag": "v6.4.0",
          "kind": "minor",
          "published_at": "2026-03-19T07:50:48Z"
        },
        {
          "tag": "v6.3.5",
          "kind": "patch",
          "published_at": "2026-01-15T21:33:42Z"
        },
        {
          "tag": "v6.3.4",
          "kind": "patch",
          "published_at": "2025-10-01T16:59:41Z"
        },
        {
          "tag": "v6.3.3",
          "kind": "patch",
          "published_at": "2025-06-11T20:13:34Z"
        },
        {
          "tag": "v6.3.2",
          "kind": "patch",
          "published_at": "2025-05-05T17:45:25Z"
        },
        {
          "tag": "v6.3.0",
          "kind": "minor",
          "published_at": "2025-02-06T21:44:51Z"
        },
        {
          "tag": "v6.2.1",
          "kind": "patch",
          "published_at": "2024-12-16T16:34:33Z"
        },
        {
          "tag": "v6.2.0",
          "kind": "minor",
          "published_at": "2024-10-15T17:07:50Z"
        },
        {
          "tag": "v5.9.0",
          "kind": "minor",
          "published_at": "2024-09-11T17:07:07Z"
        },
        {
          "tag": "v5.8.2",
          "kind": "patch",
          "published_at": "2024-07-02T18:18:29Z"
        },
        {
          "tag": "v6.1.1",
          "kind": "patch",
          "published_at": "2024-06-21T16:41:37Z"
        },
        {
          "tag": "v6.1.0",
          "kind": "minor",
          "published_at": "2024-05-03T15:52:42Z"
        },
        {
          "tag": "v5.8.0",
          "kind": "minor",
          "published_at": "2024-03-15T22:39:55Z"
        },
        {
          "tag": "v6.0.0",
          "kind": "major",
          "published_at": "2024-03-28T13:13:42Z"
        },
        {
          "tag": "v5.7.0",
          "kind": "minor",
          "published_at": "2024-01-24T12:39:36Z"
        },
        {
          "tag": "v5.6.0",
          "kind": "minor",
          "published_at": "2023-12-07T22:46:10Z"
        },
        {
          "tag": "v4.2.0",
          "kind": "minor",
          "published_at": "2023-09-26T14:53:15Z"
        },
        {
          "tag": "v5.5.0",
          "kind": "minor",
          "published_at": "2023-08-31T14:58:01Z"
        },
        {
          "tag": "v5.5.0-rc.1",
          "kind": "prerelease",
          "published_at": "2023-08-16T22:11:18Z"
        },
        {
          "tag": "v5.4.1",
          "kind": "patch",
          "published_at": "2023-07-20T23:36:44Z"
        },
        {
          "tag": "v5.4.0",
          "kind": "minor",
          "published_at": "2023-06-16T15:39:09Z"
        },
        {
          "tag": "v4.1.0",
          "kind": "minor",
          "published_at": "2023-06-01T00:34:01Z"
        },
        {
          "tag": "v5.3.2",
          "kind": "patch",
          "published_at": "2023-05-18T20:15:26Z"
        },
        {
          "tag": "v5.3.1",
          "kind": "patch",
          "published_at": "2023-04-13T17:03:42Z"
        },
        {
          "tag": "v5.3.0",
          "kind": "minor",
          "published_at": "2023-02-22T05:19:02Z"
        },
        {
          "tag": "v5.2.0",
          "kind": "minor",
          "published_at": "2022-12-19T18:23:27Z"
        },
        {
          "tag": "v4.0.2",
          "kind": "patch",
          "published_at": "2022-12-15T23:36:00Z"
        },
        {
          "tag": "v3.3.1",
          "kind": "patch",
          "published_at": "2022-11-14T20:10:20Z"
        },
        {
          "tag": "v2.3.1",
          "kind": "patch",
          "published_at": "2022-11-14T19:42:28Z"
        },
        {
          "tag": "v4.0.1",
          "kind": "patch",
          "published_at": "2022-11-14T21:21:24Z"
        },
        {
          "tag": "v4.0.1-rc.1",
          "kind": "prerelease",
          "published_at": "2022-10-26T17:05:02Z"
        },
        {
          "tag": "v5.1.0",
          "kind": "minor",
          "published_at": "2022-10-01T00:01:40Z"
        },
        {
          "tag": "v5.0.1",
          "kind": "patch",
          "published_at": "2022-09-03T14:50:20Z"
        },
        {
          "tag": "v4.0.0",
          "kind": "major",
          "published_at": "2022-08-30T17:34:52Z"
        },
        {
          "tag": "v5.0.0",
          "kind": "major",
          "published_at": "2022-08-19T21:07:41Z"
        },
        {
          "tag": "v4.0.0-beta.1",
          "kind": "prerelease",
          "published_at": "2022-07-28T18:59:05Z"
        },
        {
          "tag": "v5.0.0-alpha.2",
          "kind": "prerelease",
          "published_at": "2022-07-22T22:09:44Z"
        },
        {
          "tag": "v5.0.0-alpha.1",
          "kind": "prerelease",
          "published_at": "2022-07-16T01:29:24Z"
        },
        {
          "tag": "v4.0.0-alpha.2",
          "kind": "prerelease",
          "published_at": "2022-06-23T18:25:33Z"
        },
        {
          "tag": "v2.0.0-rc.3",
          "kind": "prerelease",
          "published_at": "2020-10-21T22:07:08Z"
        },
        {
          "tag": "v4.0.0-alpha.1",
          "kind": "prerelease",
          "published_at": "2022-05-21T16:58:18Z"
        },
        {
          "tag": "v3.3.0",
          "kind": "minor",
          "published_at": "2022-04-04T14:03:09Z"
        },
        {
          "tag": "v3.3.0-rc.1",
          "kind": "prerelease",
          "published_at": "2022-03-18T16:33:27Z"
        },
        {
          "tag": "v2.3.0",
          "kind": "minor",
          "published_at": "2022-01-25T21:16:12Z"
        },
        {
          "tag": "v3.2.0",
          "kind": "minor",
          "published_at": "2022-01-18T16:57:56Z"
        },
        {
          "tag": "v3.2.0-rc.1",
          "kind": "prerelease",
          "published_at": "2021-11-12T16:40:40Z"
        },
        {
          "tag": "v2.3.0-rc.1",
          "kind": "prerelease",
          "published_at": "2021-10-07T02:08:34Z"
        },
        {
          "tag": "v2.0.2",
          "kind": "patch",
          "published_at": "2021-09-24T18:25:53Z"
        },
        {
          "tag": "v2.2.0",
          "kind": "minor",
          "published_at": "2021-09-16T03:58:32Z"
        },
        {
          "tag": "v2.0.2-rc.1",
          "kind": "prerelease",
          "published_at": "2021-09-22T16:51:36Z"
        },
        {
          "tag": "v2.2.0-rc.2",
          "kind": "prerelease",
          "published_at": "2021-08-27T21:24:39Z"
        },
        {
          "tag": "v3.1.0",
          "kind": "minor",
          "published_at": "2021-07-13T16:33:33Z"
        },
        {
          "tag": "v2.2.0-rc.1",
          "kind": "prerelease",
          "published_at": "2021-06-24T19:58:15Z"
        },
        {
          "tag": "v3.1.0-rc.1",
          "kind": "prerelease",
          "published_at": "2021-06-22T16:45:03Z"
        },
        {
          "tag": "v2.1.0",
          "kind": "minor",
          "published_at": "2021-04-29T23:37:10Z"
        },
        {
          "tag": "v2.1.0-rc.1",
          "kind": "prerelease",
          "published_at": "2021-04-16T01:30:36Z"
        },
        {
          "tag": "v3.0.0",
          "kind": "major",
          "published_at": "2021-04-08T21:11:58Z"
        },
        {
          "tag": "v3.0.0-rc.2",
          "kind": "prerelease",
          "published_at": "2021-03-16T21:53:15Z"
        },
        {
          "tag": "v3.0.0-rc.1",
          "kind": "prerelease",
          "published_at": "2021-01-22T18:21:02Z"
        },
        {
          "tag": "v3.0.0-beta.1",
          "kind": "prerelease",
          "published_at": "2020-12-24T19:04:52Z"
        },
        {
          "tag": "v2.0.1",
          "kind": "patch",
          "published_at": "2020-12-17T03:00:29Z"
        },
        {
          "tag": "v2.0.0",
          "kind": "major",
          "published_at": "2020-12-03T18:11:19Z"
        },
        {
          "tag": "v2.0.0-rc.4",
          "kind": "prerelease",
          "published_at": "2020-10-30T16:27:34Z"
        },
        {
          "tag": "v1.5.4-rc.2",
          "kind": "prerelease",
          "published_at": "2020-10-15T21:09:57Z"
        },
        {
          "tag": "v2.0.0-rc.2",
          "kind": "prerelease",
          "published_at": "2020-09-22T21:24:10Z"
        },
        {
          "tag": "v2.0.0-rc.1",
          "kind": "prerelease",
          "published_at": "2020-07-30T19:51:44Z"
        },
        {
          "tag": "v1.5.4-rc.1",
          "kind": "prerelease",
          "published_at": "2020-06-29T16:41:00Z"
        },
        {
          "tag": "v1.5.3-tracker.1",
          "kind": "prerelease",
          "published_at": "2020-05-22T19:19:52Z"
        },
        {
          "tag": "v1.5.2",
          "kind": "patch",
          "published_at": "2020-05-19T23:17:21Z"
        },
        {
          "tag": "v1.5.1",
          "kind": "patch",
          "published_at": "2020-05-06T19:32:39Z"
        },
        {
          "tag": "v1.5.1-rc.1",
          "kind": "prerelease",
          "published_at": "2020-04-30T00:29:47Z"
        },
        {
          "tag": "v1.5.0",
          "kind": "minor",
          "published_at": "2020-03-31T02:07:17Z"
        },
        {
          "tag": "v1.5.0-rc.2",
          "kind": "prerelease",
          "published_at": "2020-03-06T23:18:52Z"
        },
        {
          "tag": "v1.5.0-rc.1",
          "kind": "prerelease",
          "published_at": "2020-02-06T22:11:31Z"
        },
        {
          "tag": "v1.4.4",
          "kind": "patch",
          "published_at": "2019-12-04T22:51:15Z"
        },
        {
          "tag": "v1.4.3",
          "kind": "patch",
          "published_at": "2019-11-25T21:33:50Z"
        },
        {
          "tag": "v1.4.2",
          "kind": "patch",
          "published_at": "2019-10-18T16:30:03Z"
        },
        {
          "tag": "v1.4.1",
          "kind": "patch",
          "published_at": "2019-10-17T00:49:59Z"
        },
        {
          "tag": "v1.4.1-rc.1",
          "kind": "prerelease",
          "published_at": "2019-10-01T16:49:44Z"
        },
        {
          "tag": "v1.4.0",
          "kind": "minor",
          "published_at": "2019-09-11T02:03:28Z"
        },
        {
          "tag": "v1.3.1",
          "kind": "patch",
          "published_at": "2019-09-06T02:07:40Z"
        },
        {
          "tag": "v1.4.0-rc.1",
          "kind": "prerelease",
          "published_at": "2019-08-30T20:21:51Z"
        },
        {
          "tag": "v1.3.1-rc.1",
          "kind": "prerelease",
          "published_at": "2019-08-21T23:27:49Z"
        },
        {
          "tag": "v1.2.1",
          "kind": "patch",
          "published_at": "2019-07-12T02:21:41Z"
        },
        {
          "tag": "v1.1.1",
          "kind": "patch",
          "published_at": "2019-06-28T17:54:54Z"
        },
        {
          "tag": "v1.1.1-rc.1",
          "kind": "prerelease",
          "published_at": "2019-06-15T04:22:01Z"
        },
        {
          "tag": "v1.2.1-rc.3",
          "kind": "prerelease",
          "published_at": "2019-06-15T00:50:09Z"
        },
        {
          "tag": "v1.3.0-rc.1",
          "kind": "prerelease",
          "published_at": "2019-06-14T18:38:53Z"
        },
        {
          "tag": "v1.3.0-alpha.1",
          "kind": "prerelease",
          "published_at": "2019-05-31T15:47:22Z"
        },
        {
          "tag": "v1.2.1-rc.2",
          "kind": "prerelease",
          "published_at": "2019-05-30T22:24:56Z"
        },
        {
          "tag": "v1.2.1-rc.1",
          "kind": "prerelease",
          "published_at": "2019-05-22T22:34:47Z"
        },
        {
          "tag": "v1.2.0-rc.1",
          "kind": "prerelease",
          "published_at": "2019-05-21T04:27:33Z"
        },
        {
          "tag": "v1.1.0",
          "kind": "minor",
          "published_at": "2019-05-14T21:38:13Z"
        },
        {
          "tag": "v1.1.0-rc.2",
          "kind": "prerelease",
          "published_at": "2019-04-30T21:55:32Z"
        },
        {
          "tag": "v1.2.0-beta.1",
          "kind": "prerelease",
          "published_at": "2019-04-18T22:09:37Z"
        },
        {
          "tag": "v1.1.0-rc.1",
          "kind": "prerelease",
          "published_at": "2019-04-12T03:43:46Z"
        },
        {
          "tag": "v0.9.0",
          "kind": "minor",
          "published_at": "2019-02-19T15:57:05Z"
        },
        {
          "tag": "v1.0.1",
          "kind": "patch",
          "published_at": "2019-02-19T23:00:36Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "d16adc1d93389f79d3ed7ca3e80244e2466bfae1",
          "body": null,
          "is_bot": false,
          "headline": "bump module version to 6.5.0 (6500)",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-16T06:24:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "db4f8a4a8ba90dc17c81e3d234debe78b1c1064f",
          "body": null,
          "is_bot": false,
          "headline": "[rtl872x] usart: fix",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-16T06:24:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8a959cffea84776ab15a6d81ba6eab5e25f7b929",
          "body": null,
          "is_bot": false,
          "headline": "[rtl872x] usart: fix",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-16T02:43:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "22e8d3494e047e6d4684abe4fc5cd0fba72a5f54",
          "body": null,
          "is_bot": false,
          "headline": "[rtl872x] usart: minor",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-16T01:35:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "afa0fb9585feefeea50cacdead3cfb5663807bab",
          "body": null,
          "is_bot": false,
          "headline": "[rtl872x] usart: minor",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-16T00:28:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a76a5f4b4f1828e5ebef1a317f76b5362fb9c7c",
          "body": null,
          "is_bot": false,
          "headline": "[test] tethering_usb/serial1: relax bandwidth threshold for cat m1",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-16T00:28:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c621662610d97fb1a27bf06ecb13c09a3f136c38",
          "body": null,
          "is_bot": false,
          "headline": "[rtl872x] usart: fix",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-16T00:28:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "847057590a70e89e3e854aba8834e4d6b457802c",
          "body": null,
          "is_bot": false,
          "headline": "[gen3] sleep: prevent UART RXDRDY from being lost while entering sleep",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-15T22:53:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9ef736c195a5ab02240369004c9aa1de14e40c17",
          "body": null,
          "is_bot": false,
          "headline": "[test] wiring/sleep20: make uart wake-up tests a bit more solid",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-15T22:53:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2d5a5d7d65a5f54715517c07abd1bb05aa37ca6b",
          "body": null,
          "is_bot": false,
          "headline": "[rtl872x] usart: fix flow control with interrupt-mode uarts",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-15T22:53:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "31e1f6f5ec5898bd8efe86b674d5e9786b030e24",
          "body": null,
          "is_bot": false,
          "headline": "[test] tethering: some fixes to avoid killing host session",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-15T22:53:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "538a25c6d585125e5332b12c6ea50ca2b510a739",
          "body": "…rial1/2/3 use",
          "is_bot": false,
          "headline": "[test] serial_loopback/serial_loopback2: update tests, prepare for Se…",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-14T14:12:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e31660588b86db05b76e920553fd8764ad625d63",
          "body": null,
          "is_bot": false,
          "headline": "[hal] usart: bugfixes",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-14T14:12:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a879453729d6ef107f6c6688b621088cc4ee901c",
          "body": "…te-read-write-peek\n\nUSB Serial/UART serial buffer read/write/peek + wait event",
          "is_bot": false,
          "headline": "Merge pull request #2935 from particle-iot/feature/supersede-multi-by…",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-09T19:20:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "054d18c1122a953d657546df2a4cba39702e72e0",
          "body": null,
          "is_bot": false,
          "headline": "fix tinker builds on gcc platform",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-09T19:20:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "15a823a06b2db559a2fd16a2869bf92e10de880d",
          "body": null,
          "is_bot": false,
          "headline": "uart/usb multi byte stuff fixes",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-09T19:20:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f2a0a989941124485e9d2522491d3e5345f963f1",
          "body": "…rough poll",
          "is_bot": false,
          "headline": "[gcc] fix multi byte stuff for gcc platform, add proper wait event th…",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-09T19:20:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e10b3d750432c3e56b02a2e1427d0395ffd2dfa5",
          "body": null,
          "is_bot": false,
          "headline": "minor",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-09T19:20:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "935f9233d2d42486d5313c58f54ff4fb8a4b23a6",
          "body": null,
          "is_bot": false,
          "headline": "[hal][wiring] usart: usb: add multi byte write/read/peek",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-09T19:20:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e38eca780cc5b25ec473fba86626234a5df0b762",
          "body": "…hering-and-cellular-fixes\n\nAdds iperf and improves PPP (cellular / tethering performance), related bugfixes",
          "is_bot": false,
          "headline": "Merge pull request #2932 from particle-iot/feature/iperf-plus-ppp-tet…",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-09T19:19:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "56bcb46fbbb3b02a274b04cc4ed0dd03ab6c40d7",
          "body": null,
          "is_bot": false,
          "headline": "[test] fix require path for tethering.js",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-09T19:10:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b314c1dad7e209680dd5b0b960e9918a63f81650",
          "body": "…urse /dev/tty* are not accessible",
          "is_bot": false,
          "headline": "[test] tethering: mount real devtmpfs into /dev otherwise under conco…",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-09T19:08:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "633a5eef03874c082e5ece349504e64b26e9bf75",
          "body": null,
          "is_bot": false,
          "headline": "address review comments",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-07T18:06:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9bf22664b89ec81cf4bb3338062f71d596fa0420",
          "body": null,
          "is_bot": false,
          "headline": "[build] fix electron2",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T23:09:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0d68862fa0e0dc96bee0c8432e1afe9a2d88c4fd",
          "body": null,
          "is_bot": false,
          "headline": "[test] tethering: do not kill other containers",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T22:09:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d186a8acc2d09c2b87bdf346ea92cc52c9819c5a",
          "body": null,
          "is_bot": false,
          "headline": "[third_party] libiperf: update submodule reference",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "93ce3ee8532d012405ad26bcb5d20267c218eaa3",
          "body": null,
          "is_bot": false,
          "headline": "[test] wiring/tethering_serial1|tethering_usb: update to use iperf3 etc",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "96e0299b9c57477d5cfb390bf2f74afa424a8ad1",
          "body": "…ts length to avoid LwIP from generatin ERR_IF errors, some additional logging",
          "is_bot": false,
          "headline": "[network] ppp: enable adaptive LCP echo, when dropping frame report i…",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d763dc87dce2dfde3ea1dcc9c81571bdf04059e7",
          "body": "…et rid of notifyInput()",
          "is_bot": false,
          "headline": "[network] pppservernetif: reduce blocking wait for output to 100ms, g…",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6baa18ad86c4469e8209093707aa92da1a21fce0",
          "body": "…ssing thread CPU time under heavy cellular traffic",
          "is_bot": false,
          "headline": "[rtl872x] muxer: enable GSM0710_COOP_YIELD_MS - to give USB ISR proce…",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "92ddf628b0b373f0cab66d78db8f3bc24065c970",
          "body": null,
          "is_bot": false,
          "headline": "[test] integration: add jsonc-parser",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "be3e89cea8355f04631bac790d171c81a3bb8488",
          "body": "… of ram",
          "is_bot": false,
          "headline": "[rtl872x] hal: increase HAL_PLATFORM_PPP_TX_QUEUE_SIZE we have plenty…",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9fcd6f47b7028d40f7d9b84facb28dd48a506700",
          "body": "…PriorityThreadPreemption",
          "is_bot": false,
          "headline": "[test] no_fixture/long_running: add UART_01_TxRingConsistentUnderHigh…",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e15274c6e28f0c621dd369abaa607cd56112ddb7",
          "body": "…oming data - we don't need LCP echo. Also enables printpkt ppp negotiation logs for Gen 4",
          "is_bot": false,
          "headline": "[network] enable PPP_LCP_ADAPTIVE - adaptive LCP echo - if we see inc…",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e8fc14b8566414754b970b8d95f6c1e05c732bf7",
          "body": null,
          "is_bot": false,
          "headline": "[rtl872x] lwip: sync logging impl with gen3",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5cb580311c3df4311b6b183bb82d02f896e59577",
          "body": "…re RAM (we have plenty), enable SO_LINGER to allow faster TCP pcb/pbuf cleanup",
          "is_bot": false,
          "headline": "[rtl872x] lwip: improve TCP performance a bit at the cost of a bit mo…",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e65828d53be4bee8a2d9c9e5276c00e8875e8b88",
          "body": null,
          "is_bot": false,
          "headline": "[nrf52840] lwip: enable SO_LINGER for faster TCP pcb/pbuf cleanup",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0945390aad7d7d02382efca48f3a3f43a3bd33e0",
          "body": "…ng from us and just a slow host",
          "is_bot": false,
          "headline": "[rtl872x] usb: distinguish between a real issue when host stops readi…",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6af0ac584d7a5bdf2ca45a3dfe0849d7c4084667",
          "body": null,
          "is_bot": false,
          "headline": "[rtl872x] usb: allow USB CDC to be reinitialized with larger buffers",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9475578dc6c040a6344be83f594abb49a35ce7fe",
          "body": null,
          "is_bot": false,
          "headline": "[test] libraries: common IperfServer and IperfClient implementations",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ee59581550e63838e499b2041225c4d44f07d2d5",
          "body": null,
          "is_bot": false,
          "headline": "[rtl872x] usart: fix FIFO overflow behavior",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f040c64defa60efd0a9dc52a7b0aba996f47cc3a",
          "body": null,
          "is_bot": false,
          "headline": "[third_party] libiperf: update Device OS port",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "25f205b1766e20583eb9de363cacee4234677c97",
          "body": null,
          "is_bot": false,
          "headline": "[third_party] libiperf: update submodule reference",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5647f2e3c31592be38448bfa2ac626a0d2b71057",
          "body": "…transmissions to not be started",
          "is_bot": false,
          "headline": "[gen3] usart: fix interrupt/normal context race condition causing TX …",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "557d644077da98e779b3c888f30a318728d8171b",
          "body": "… are tasks pending termination - check uxTaskGetNumberOfTasksWaitingTermination() instead of having the bump only for 1 cycle potentially keeping thread data not freed until given CPU cycles at the lowest priority",
          "is_bot": false,
          "headline": "[hal] concurrent: fix vApplicationIdleHook() priority bump when there…",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9f5c53829c09851f46d17b7f1e8f4d6666f6504a",
          "body": "…reed task TCB pointer by using uxTaskGetSystemStateParticle()",
          "is_bot": false,
          "headline": "[hal] concurrent: fix/workaround os_thread_join() accessing a stale/f…",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e920781cc2f295d417b34fea8e2453875d22974f",
          "body": null,
          "is_bot": false,
          "headline": "[network] nat: clamp TCP MSS in both directions, fix checksums",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "823676f843730b14b7d60b8d6fbf373e9b7a941f",
          "body": null,
          "is_bot": false,
          "headline": "[network] revert notifyInput()",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "78fcaf71aa21b56db5421a521baf15e5f144665c",
          "body": null,
          "is_bot": false,
          "headline": "[gsm0710muxer] fix/busy-loop",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "54a659faf0ea9bb2db736162f7be8c55188e42ad",
          "body": null,
          "is_bot": false,
          "headline": "[third_party] lwip: feature/tethering-fixes",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e2173f6735b0996fb676600c98594e9c7dbb2f4f",
          "body": null,
          "is_bot": false,
          "headline": "[third_party] freertos: a8e43091f8488914bea38042a7075227fc055a45",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "706185b31722683cb2229217c3d642115cef23e7",
          "body": "…f TX queued packets",
          "is_bot": false,
          "headline": "[network] ppp: limit direct fallback to cellular only, limit number o…",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bf3b6f2744508859c8b60ac854b2843c1c041300",
          "body": null,
          "is_bot": false,
          "headline": "[rtl872x] uart: fix slow clock domain read-modify-write access",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "90f1928992e105266a0ac2fc20c4efe44cb8941b",
          "body": "…r interfaces that can be used for cloud connection",
          "is_bot": false,
          "headline": "[system] network: force cloud ping on interface state changes only fo…",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "60276df7ff9beda178cec3d0c067c09469a8b377",
          "body": "…hardware address",
          "is_bot": false,
          "headline": "[wiring] network: fix null pointer dereference for intefaces without …",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7c037489b610585a847fa4a2c372e80b335459df",
          "body": null,
          "is_bot": false,
          "headline": "[test] update tethering apps to include libiperf and support lib",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "502f798466c3a1e090b5a8b3ef2b959b447721d3",
          "body": "…k using a queue, fallback to direct output in case of low memory",
          "is_bot": false,
          "headline": "[network] ppp: output TX packets outside of the LwIP output() callbac…",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fc2cc47f616cffb10913c9491ec39af9a3bb120d",
          "body": null,
          "is_bot": false,
          "headline": "[network] notifyInput() mechanism / pppservernetif flow control support",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "27779036d9bde46ded4d3ae165433256c499fcb3",
          "body": null,
          "is_bot": false,
          "headline": "[hal] shared: fix SerialUSBStream blocking behavior on writes",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "559830cffe1575f302710bf2775d38757d7995b8",
          "body": "…SIZE==64 for both IN and OUT transactions",
          "is_bot": false,
          "headline": "[rtl872x] usb: it's possible to queue more than cdc::MAX_DATA_PACKET_…",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe261f8ed8c6f6f5cf5b63bd9e2c106613e034e0",
          "body": null,
          "is_bot": false,
          "headline": "[hal] coalesce serial_stream implementation into a shared one",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ac5de11652dfb05d9f11f26d6cd8cc37f59baf6e",
          "body": null,
          "is_bot": false,
          "headline": "[test] app/iperf test app",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "13cd291dc3908a39ff8d62197dbfdf29adee497c",
          "body": null,
          "is_bot": false,
          "headline": "libiperf port",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "76b895e864a6a7ed38dfe8a4da641ebb2b9f324b",
          "body": null,
          "is_bot": false,
          "headline": "[third_party] libiperf: add",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T21:56:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a2c20e9f53541ca502ae82124876b12c722a4b48",
          "body": "Workaround for large APDU responses",
          "is_bot": false,
          "headline": "Merge pull request #2934 from particle-iot/fix/apdu-response-size",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-07-06T20:47:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f9a185c1384d659cef0c63f13803714113e37cdb",
          "body": null,
          "is_bot": false,
          "headline": "Work around for EG916Q returning too large APDU responses",
          "author_name": "Sergey Polyakov",
          "author_login": "sergeuz",
          "committed_at": "2026-07-06T19:48:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a33c8ea3ededaaa10c0a238586708b42cf85b128",
          "body": "…5-enable-2g-support\n\n[m635] enable 2G fallback support",
          "is_bot": false,
          "headline": "Merge pull request #2933 from particle-iot/feature/sc-140313/msom-m63…",
          "author_name": "Brett Walach",
          "author_login": "technobly",
          "committed_at": "2026-06-29T17:54:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f3a2ddcd2ff5e01ed620da168e9762a163edb09a",
          "body": null,
          "is_bot": false,
          "headline": "[m635] enable 2G support",
          "author_name": "Technobly",
          "author_login": "technobly",
          "committed_at": "2026-06-26T13:20:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a6422755fabe2d2a043f9d6fe0fec7d6a1d5db10",
          "body": "…-reset\n\n[test] Add OTA flash to ensure device service OTA attempts are reset",
          "is_bot": false,
          "headline": "Merge pull request #2931 from particle-iot/fix/testrunner-ota-attempt…",
          "author_name": "scott-brust",
          "author_login": "scott-brust",
          "committed_at": "2026-06-17T17:34:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "08715fedf808450da091b62b8e1a010844744538",
          "body": null,
          "is_bot": false,
          "headline": "[test] Add OTA flash to ensure device service OTA attempts are reset",
          "author_name": "Scott Brust",
          "author_login": "scott-brust",
          "committed_at": "2026-06-17T16:13:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7c8191db38a1104cf4bb680990c0d8a9131e79b3",
          "body": "Do not test network connections if no networks are ready",
          "is_bot": false,
          "headline": "Merge pull request #2930 from particle-iot/fix/connection-test-errors",
          "author_name": "scott-brust",
          "author_login": "scott-brust",
          "committed_at": "2026-06-15T19:06:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e158d525a5f9ffc9d521772ba3c01773d364fa64",
          "body": null,
          "is_bot": false,
          "headline": "Do not test network connections if no networks are ready",
          "author_name": "Scott Brust",
          "author_login": "scott-brust",
          "committed_at": "2026-06-15T18:01:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "22db4c966e9d1da31bedc4c646731e5583fe3444",
          "body": "minor renaming of env vars",
          "is_bot": false,
          "headline": "Merge pull request #2929 from particle-iot/feature/pmic-env-vars",
          "author_name": "Brett Walach",
          "author_login": "technobly",
          "committed_at": "2026-06-11T18:26:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e3d7231f494987db3e87fb8b2b1e4c242c8806cf",
          "body": null,
          "is_bot": false,
          "headline": "minor renaming of env vars",
          "author_name": "Brett Walach",
          "author_login": "technobly",
          "committed_at": "2026-06-10T17:05:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "06c2d0e1e0df0b0b6ab2066984c9e03b95e3cfbc",
          "body": "Improve I2C driver reliability",
          "is_bot": false,
          "headline": "Merge pull request #2913 from particle-iot/fix/i2c_acquire_buffer",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-06-10T13:49:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4c0d9de6824491590228aedc4fd4787040980405",
          "body": null,
          "is_bot": false,
          "headline": "dummy",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-06-09T16:52:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "85e2bd73c91e5477d4bf63b7aba5854d2604a720",
          "body": "…ssing pmic/fuelgauge and making sure that i2c is enabled",
          "is_bot": false,
          "headline": "[system] power: refactor to make sure we are always locking when acce…",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-06-09T15:49:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0a3d12f24dbd3fc5cad74facf3583958c6e1ed72",
          "body": null,
          "is_bot": false,
          "headline": "I2C hal: Unify the I2C state",
          "author_name": "XuGuohui",
          "author_login": "XuGuohui",
          "committed_at": "2026-06-09T15:49:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "85ac0bafe1a568be3f51e73523b4d49098fa3f0e",
          "body": null,
          "is_bot": false,
          "headline": "Guard PMIC and FuelGauge I2C operations in power manager",
          "author_name": "XuGuohui",
          "author_login": "XuGuohui",
          "committed_at": "2026-06-09T15:49:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e9e8eb0378d2277d7af4b34c4e45caf58d5c85b7",
          "body": "…e I2C interface on demand.",
          "is_bot": false,
          "headline": "I2C hal: revert the introduction of acquire/release APIs and re-enabl…",
          "author_name": "XuGuohui",
          "author_login": "XuGuohui",
          "committed_at": "2026-06-09T15:49:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5eed0c2526afc9ff59841d9e48f16b2857c3fc4b",
          "body": null,
          "is_bot": false,
          "headline": "I2C hal: minor improve",
          "author_name": "XuGuohui",
          "author_login": "XuGuohui",
          "committed_at": "2026-06-09T15:49:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a9fe023384541fb5e0858b8fdedbf78986117dfd",
          "body": null,
          "is_bot": false,
          "headline": "Fix I2C communication may be corrupted",
          "author_name": "XuGuohui",
          "author_login": "XuGuohui",
          "committed_at": "2026-06-09T15:49:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "403b4377db110080f542222adc0829e4ae36e772",
          "body": "Implements power manager env vars, [gen 3] reclaim >3KB flash w/`-flto-partition=one` [sc-139793]",
          "is_bot": false,
          "headline": "Merge pull request #2928 from particle-iot/feature/power-env-vars",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-06-09T15:47:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b3b081de3901a5577442346bbcdf2aa6cb4f6607",
          "body": null,
          "is_bot": false,
          "headline": "[test] minor",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-06-09T15:00:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "51731f5c2179d746bf8337260f828716240305e4",
          "body": "…5som, boron, bsom, esomx, tracker",
          "is_bot": false,
          "headline": "[build] add -flto-partition=one, enable LTO_EXTRA_OPTIMIZATIONS for b…",
          "author_name": "Andrey Tolstoy",
          "author_login": "avtolstoy",
          "committed_at": "2026-06-08T17:22:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "44e608044560f7df6ddf4956786b4ec190f14fff",
          "body": null,
          "is_bot": false,
          "headline": "increase pushMailbox timeouts before reset to 20s",
          "author_name": "Brett Walach",
          "author_login": "technobly",
          "committed_at": "2026-06-06T20:49:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f891844890f2c3023852077a28efdbbf603b3f11",
          "body": null,
          "is_bot": false,
          "headline": "[tests] add POWER ENV vars test to system/env",
          "author_name": "Brett Walach",
          "author_login": "technobly",
          "committed_at": "2026-06-06T20:49:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cd8ea67de80383d7d1d5c59f5bc6e501e635f7ee",
          "body": null,
          "is_bot": false,
          "headline": "implements power env vars for current",
          "author_name": "Brett Walach",
          "author_login": "technobly",
          "committed_at": "2026-06-06T20:49:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8d9b1dcfe6fd15ba81f17c65ca49478bb13f01c7",
          "body": "[tests] Fix default cloud keep alives",
          "is_bot": false,
          "headline": "Merge pull request #2926 from particle-iot/fix/cellular-keepalive-tests",
          "author_name": "Brett Walach",
          "author_login": "technobly",
          "committed_at": "2026-06-06T20:48:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "20697b86c57808448ed609de3c2d36993ba91845",
          "body": "…ar asset OTA when we do connect.",
          "is_bot": false,
          "headline": "Only Particle.connect() if necessary, guard for resets on empty env v…",
          "author_name": "Scott Brust",
          "author_login": "scott-brust",
          "committed_at": "2026-06-06T19:43:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "65597e6fb0befe394d03adbc82365992029cc38f",
          "body": null,
          "is_bot": false,
          "headline": "naming",
          "author_name": "Scott Brust",
          "author_login": "scott-brust",
          "committed_at": "2026-06-06T19:43:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "adbbed45fa1b60c121f0a71c63477696cfb65e30",
          "body": "ensure default cloud keep alive env var is respected\nrename for clarify",
          "is_bot": false,
          "headline": "Skip cellular tests if only wifi is available (ie msom wifi)",
          "author_name": "Scott Brust",
          "author_login": "scott-brust",
          "committed_at": "2026-06-06T19:43:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c786888e926e046421776fe6699453e159f9be85",
          "body": null,
          "is_bot": false,
          "headline": "fixup",
          "author_name": "Scott Brust",
          "author_login": "scott-brust",
          "committed_at": "2026-06-06T19:43:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6a9248a64916c6a6da80cfc69037e915182a5e5d",
          "body": null,
          "is_bot": false,
          "headline": "fixup",
          "author_name": "Scott Brust",
          "author_login": "scott-brust",
          "committed_at": "2026-06-06T19:43:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9edb2e753a83bf507e0f7f73b56675bca6c157a5",
          "body": null,
          "is_bot": false,
          "headline": "[test] Test default wifi and cellular keep alives are correct",
          "author_name": "Scott Brust",
          "author_login": "scott-brust",
          "committed_at": "2026-06-06T19:43:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c30ba813bd8cf32b006e7c659d27066f2825953c",
          "body": null,
          "is_bot": false,
          "headline": "Fix default cloud keep alive",
          "author_name": "Scott Brust",
          "author_login": "scott-brust",
          "committed_at": "2026-06-06T19:43:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0b176a154619945972137a06bbc0acab4efb3d60",
          "body": "…ition\n\nFixes race condition on entering power off mode",
          "is_bot": false,
          "headline": "Merge pull request #2927 from particle-iot/fix/am18x5_sleep_race_cond…",
          "author_name": "XuGuohui",
          "author_login": "XuGuohui",
          "committed_at": "2026-06-05T03:47:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "808357942e30572cfee0501a4d41ada339c8c5e5",
          "body": null,
          "is_bot": false,
          "headline": "Fixes race condition on entering power off mode.",
          "author_name": "XuGuohui",
          "author_login": "XuGuohui",
          "committed_at": "2026-06-04T01:25:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2d608c76ebecd479cdfe80e9a58a7543323a9cbe",
          "body": "Add netif specific cloud connection keepalives",
          "is_bot": false,
          "headline": "Merge pull request #2916 from particle-iot/fix/netif-cloud-keepalives",
          "author_name": "scott-brust",
          "author_login": "scott-brust",
          "committed_at": "2026-05-28T17:43:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2941c1f1fc62ef3413b5cd9ab9b7d1412e095db2",
          "body": null,
          "is_bot": false,
          "headline": "Review feedback",
          "author_name": "Scott Brust",
          "author_login": "scott-brust",
          "committed_at": "2026-05-28T16:50:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 100,
      "commits_last_year": 458,
      "latest_release_at": "2026-07-17T17:02:51Z",
      "latest_release_tag": "v6.5.0",
      "releases_from_tags": false,
      "days_since_last_push": 3,
      "active_weeks_last_year": 42,
      "days_since_latest_release": 10,
      "mean_days_between_releases": 71.1
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 62,
      "has_issue_template": true,
      "has_code_of_conduct": false,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": []
    },
    "popularity": {
      "forks": 528,
      "stars": 1074,
      "watchers": 131,
      "fork_history": {
        "days": [
          {
            "date": "2013-12-13",
            "count": 1
          },
          {
            "date": "2013-12-19",
            "count": 1
          },
          {
            "date": "2014-01-01",
            "count": 1
          },
          {
            "date": "2014-01-05",
            "count": 2
          },
          {
            "date": "2014-01-10",
            "count": 1
          },
          {
            "date": "2014-01-16",
            "count": 2
          },
          {
            "date": "2014-01-17",
            "count": 1
          },
          {
            "date": "2014-01-20",
            "count": 1
          },
          {
            "date": "2014-01-22",
            "count": 1
          },
          {
            "date": "2014-01-23",
            "count": 1
          },
          {
            "date": "2014-01-24",
            "count": 1
          },
          {
            "date": "2014-01-26",
            "count": 2
          },
          {
            "date": "2014-01-28",
            "count": 2
          },
          {
            "date": "2014-01-29",
            "count": 1
          },
          {
            "date": "2014-01-31",
            "count": 1
          },
          {
            "date": "2014-02-02",
            "count": 1
          },
          {
            "date": "2014-02-03",
            "count": 3
          },
          {
            "date": "2014-02-12",
            "count": 1
          },
          {
            "date": "2014-02-14",
            "count": 1
          },
          {
            "date": "2014-02-23",
            "count": 1
          },
          {
            "date": "2014-02-26",
            "count": 1
          },
          {
            "date": "2014-03-02",
            "count": 1
          },
          {
            "date": "2014-03-04",
            "count": 1
          },
          {
            "date": "2014-03-14",
            "count": 1
          },
          {
            "date": "2014-03-15",
            "count": 1
          },
          {
            "date": "2014-03-17",
            "count": 2
          },
          {
            "date": "2014-03-22",
            "count": 1
          },
          {
            "date": "2014-04-06",
            "count": 1
          },
          {
            "date": "2014-04-08",
            "count": 1
          },
          {
            "date": "2014-04-09",
            "count": 1
          },
          {
            "date": "2014-04-11",
            "count": 1
          },
          {
            "date": "2014-04-14",
            "count": 1
          },
          {
            "date": "2014-04-18",
            "count": 1
          },
          {
            "date": "2014-04-30",
            "count": 1
          },
          {
            "date": "2014-05-17",
            "count": 1
          },
          {
            "date": "2014-05-20",
            "count": 1
          },
          {
            "date": "2014-05-22",
            "count": 1
          },
          {
            "date": "2014-05-26",
            "count": 1
          },
          {
            "date": "2014-05-30",
            "count": 1
          },
          {
            "date": "2014-06-01",
            "count": 1
          },
          {
            "date": "2014-06-15",
            "count": 1
          },
          {
            "date": "2014-07-02",
            "count": 1
          },
          {
            "date": "2014-07-04",
            "count": 1
          },
          {
            "date": "2014-07-07",
            "count": 1
          },
          {
            "date": "2014-07-10",
            "count": 1
          },
          {
            "date": "2014-07-14",
            "count": 1
          },
          {
            "date": "2014-07-21",
            "count": 1
          },
          {
            "date": "2014-07-26",
            "count": 1
          },
          {
            "date": "2014-07-29",
            "count": 1
          },
          {
            "date": "2014-07-30",
            "count": 1
          },
          {
            "date": "2014-08-01",
            "count": 1
          },
          {
            "date": "2014-08-05",
            "count": 1
          },
          {
            "date": "2014-08-06",
            "count": 1
          },
          {
            "date": "2014-08-07",
            "count": 1
          },
          {
            "date": "2014-08-13",
            "count": 1
          },
          {
            "date": "2014-08-14",
            "count": 1
          },
          {
            "date": "2014-08-19",
            "count": 1
          },
          {
            "date": "2014-08-22",
            "count": 1
          },
          {
            "date": "2014-09-05",
            "count": 1
          },
          {
            "date": "2014-09-18",
            "count": 1
          },
          {
            "date": "2014-09-22",
            "count": 1
          },
          {
            "date": "2014-10-04",
            "count": 1
          },
          {
            "date": "2014-10-13",
            "count": 1
          },
          {
            "date": "2014-10-31",
            "count": 1
          },
          {
            "date": "2014-11-02",
            "count": 1
          },
          {
            "date": "2014-11-04",
            "count": 1
          },
          {
            "date": "2014-11-12",
            "count": 1
          },
          {
            "date": "2014-11-23",
            "count": 1
          },
          {
            "date": "2014-11-26",
            "count": 1
          },
          {
            "date": "2014-12-01",
            "count": 1
          },
          {
            "date": "2014-12-07",
            "count": 1
          },
          {
            "date": "2014-12-09",
            "count": 1
          },
          {
            "date": "2014-12-18",
            "count": 1
          },
          {
            "date": "2014-12-30",
            "count": 1
          },
          {
            "date": "2015-01-06",
            "count": 1
          },
          {
            "date": "2015-01-08",
            "count": 2
          },
          {
            "date": "2015-01-15",
            "count": 1
          },
          {
            "date": "2015-01-24",
            "count": 1
          },
          {
            "date": "2015-01-26",
            "count": 1
          },
          {
            "date": "2015-01-29",
            "count": 1
          },
          {
            "date": "2015-02-01",
            "count": 1
          },
          {
            "date": "2015-02-02",
            "count": 1
          },
          {
            "date": "2015-02-09",
            "count": 1
          },
          {
            "date": "2015-02-12",
            "count": 1
          },
          {
            "date": "2015-03-06",
            "count": 1
          },
          {
            "date": "2015-03-09",
            "count": 1
          },
          {
            "date": "2015-03-13",
            "count": 1
          },
          {
            "date": "2015-03-15",
            "count": 1
          },
          {
            "date": "2015-03-17",
            "count": 1
          },
          {
            "date": "2015-03-20",
            "count": 1
          },
          {
            "date": "2015-03-21",
            "count": 1
          },
          {
            "date": "2015-03-25",
            "count": 1
          },
          {
            "date": "2015-03-26",
            "count": 1
          },
          {
            "date": "2015-03-30",
            "count": 1
          },
          {
            "date": "2015-04-07",
            "count": 1
          },
          {
            "date": "2015-04-17",
            "count": 1
          },
          {
            "date": "2015-04-20",
            "count": 1
          },
          {
            "date": "2015-05-07",
            "count": 1
          },
          {
            "date": "2015-05-15",
            "count": 1
          },
          {
            "date": "2015-05-16",
            "count": 2
          },
          {
            "date": "2015-05-22",
            "count": 1
          },
          {
            "date": "2015-06-02",
            "count": 1
          },
          {
            "date": "2015-06-03",
            "count": 1
          },
          {
            "date": "2015-06-09",
            "count": 1
          },
          {
            "date": "2015-06-14",
            "count": 1
          },
          {
            "date": "2015-06-16",
            "count": 1
          },
          {
            "date": "2015-06-26",
            "count": 1
          },
          {
            "date": "2015-06-27",
            "count": 1
          },
          {
            "date": "2015-07-03",
            "count": 1
          },
          {
            "date": "2015-07-07",
            "count": 1
          },
          {
            "date": "2015-07-15",
            "count": 1
          },
          {
            "date": "2015-07-16",
            "count": 1
          },
          {
            "date": "2015-07-19",
            "count": 3
          },
          {
            "date": "2015-07-22",
            "count": 1
          },
          {
            "date": "2015-07-29",
            "count": 1
          },
          {
            "date": "2015-07-31",
            "count": 1
          },
          {
            "date": "2015-08-01",
            "count": 1
          },
          {
            "date": "2015-08-04",
            "count": 1
          },
          {
            "date": "2015-08-05",
            "count": 1
          },
          {
            "date": "2015-08-10",
            "count": 1
          },
          {
            "date": "2015-08-12",
            "count": 1
          },
          {
            "date": "2015-08-17",
            "count": 1
          },
          {
            "date": "2015-08-20",
            "count": 1
          },
          {
            "date": "2015-08-21",
            "count": 1
          },
          {
            "date": "2015-08-22",
            "count": 1
          },
          {
            "date": "2015-08-25",
            "count": 2
          },
          {
            "date": "2015-08-26",
            "count": 1
          },
          {
            "date": "2015-08-30",
            "count": 1
          },
          {
            "date": "2015-09-01",
            "count": 1
          },
          {
            "date": "2015-09-09",
            "count": 1
          },
          {
            "date": "2015-09-11",
            "count": 2
          },
          {
            "date": "2015-09-18",
            "count": 2
          },
          {
            "date": "2015-09-20",
            "count": 1
          },
          {
            "date": "2015-09-21",
            "count": 1
          },
          {
            "date": "2015-09-22",
            "count": 1
          },
          {
            "date": "2015-09-26",
            "count": 1
          },
          {
            "date": "2015-10-02",
            "count": 1
          },
          {
            "date": "2015-10-05",
            "count": 1
          },
          {
            "date": "2015-10-07",
            "count": 2
          },
          {
            "date": "2015-10-08",
            "count": 1
          },
          {
            "date": "2015-10-11",
            "count": 1
          },
          {
            "date": "2015-10-12",
            "count": 1
          },
          {
            "date": "2015-10-16",
            "count": 1
          },
          {
            "date": "2015-10-18",
            "count": 1
          },
          {
            "date": "2015-10-20",
            "count": 1
          },
          {
            "date": "2015-10-23",
            "count": 1
          },
          {
            "date": "2015-10-25",
            "count": 1
          },
          {
            "date": "2015-10-26",
            "count": 1
          },
          {
            "date": "2015-10-29",
            "count": 2
          },
          {
            "date": "2015-10-30",
            "count": 1
          },
          {
            "date": "2015-11-03",
            "count": 2
          },
          {
            "date": "2015-11-04",
            "count": 1
          },
          {
            "date": "2015-11-12",
            "count": 1
          },
          {
            "date": "2015-11-17",
            "count": 1
          },
          {
            "date": "2015-11-25",
            "count": 1
          },
          {
            "date": "2015-11-30",
            "count": 1
          },
          {
            "date": "2015-12-01",
            "count": 1
          },
          {
            "date": "2015-12-05",
            "count": 2
          },
          {
            "date": "2015-12-07",
            "count": 1
          },
          {
            "date": "2015-12-09",
            "count": 1
          },
          {
            "date": "2015-12-18",
            "count": 1
          },
          {
            "date": "2015-12-21",
            "count": 1
          },
          {
            "date": "2015-12-28",
            "count": 1
          },
          {
            "date": "2016-01-05",
            "count": 1
          },
          {
            "date": "2016-01-10",
            "count": 1
          },
          {
            "date": "2016-01-11",
            "count": 1
          },
          {
            "date": "2016-01-12",
            "count": 1
          },
          {
            "date": "2016-01-13",
            "count": 1
          },
          {
            "date": "2016-01-14",
            "count": 1
          },
          {
            "date": "2016-01-15",
            "count": 2
          },
          {
            "date": "2016-01-20",
            "count": 1
          },
          {
            "date": "2016-01-25",
            "count": 1
          },
          {
            "date": "2016-01-27",
            "count": 1
          },
          {
            "date": "2016-01-29",
            "count": 1
          },
          {
            "date": "2016-02-02",
            "count": 1
          },
          {
            "date": "2016-02-06",
            "count": 1
          },
          {
            "date": "2016-02-07",
            "count": 1
          },
          {
            "date": "2016-03-03",
            "count": 2
          },
          {
            "date": "2016-03-04",
            "count": 1
          },
          {
            "date": "2016-03-05",
            "count": 1
          },
          {
            "date": "2016-03-09",
            "count": 1
          },
          {
            "date": "2016-03-11",
            "count": 1
          },
          {
            "date": "2016-03-12",
            "count": 1
          },
          {
            "date": "2016-03-16",
            "count": 1
          },
          {
            "date": "2016-03-18",
            "count": 1
          },
          {
            "date": "2016-03-22",
            "count": 1
          },
          {
            "date": "2016-03-28",
            "count": 1
          },
          {
            "date": "2016-03-29",
            "count": 1
          },
          {
            "date": "2016-04-01",
            "count": 1
          },
          {
            "date": "2016-04-04",
            "count": 2
          },
          {
            "date": "2016-04-06",
            "count": 1
          },
          {
            "date": "2016-04-13",
            "count": 1
          },
          {
            "date": "2016-04-14",
            "count": 1
          },
          {
            "date": "2016-04-16",
            "count": 1
          },
          {
            "date": "2016-04-18",
            "count": 1
          },
          {
            "date": "2016-04-20",
            "count": 1
          },
          {
            "date": "2016-04-21",
            "count": 1
          },
          {
            "date": "2016-04-26",
            "count": 1
          },
          {
            "date": "2016-04-28",
            "count": 1
          },
          {
            "date": "2016-04-30",
            "count": 1
          },
          {
            "date": "2016-05-01",
            "count": 1
          },
          {
            "date": "2016-05-03",
            "count": 1
          },
          {
            "date": "2016-05-13",
            "count": 1
          },
          {
            "date": "2016-05-15",
            "count": 1
          },
          {
            "date": "2016-05-17",
            "count": 1
          },
          {
            "date": "2016-05-19",
            "count": 1
          },
          {
            "date": "2016-05-20",
            "count": 2
          },
          {
            "date": "2016-05-22",
            "count": 1
          },
          {
            "date": "2016-05-25",
            "count": 1
          },
          {
            "date": "2016-06-07",
            "count": 1
          },
          {
            "date": "2016-06-08",
            "count": 1
          },
          {
            "date": "2016-06-12",
            "count": 1
          },
          {
            "date": "2016-06-15",
            "count": 1
          },
          {
            "date": "2016-07-15",
            "count": 1
          },
          {
            "date": "2016-07-16",
            "count": 1
          },
          {
            "date": "2016-07-20",
            "count": 1
          },
          {
            "date": "2016-07-25",
            "count": 1
          },
          {
            "date": "2016-07-28",
            "count": 1
          },
          {
            "date": "2016-08-06",
            "count": 1
          },
          {
            "date": "2016-08-09",
            "count": 1
          },
          {
            "date": "2016-08-11",
            "count": 1
          },
          {
            "date": "2016-08-20",
            "count": 1
          },
          {
            "date": "2016-08-26",
            "count": 1
          },
          {
            "date": "2016-09-01",
            "count": 1
          },
          {
            "date": "2016-09-10",
            "count": 1
          },
          {
            "date": "2016-09-19",
            "count": 1
          },
          {
            "date": "2016-09-25",
            "count": 1
          },
          {
            "date": "2016-09-30",
            "count": 1
          },
          {
            "date": "2016-10-05",
            "count": 1
          },
          {
            "date": "2016-10-08",
            "count": 2
          },
          {
            "date": "2016-10-18",
            "count": 1
          },
          {
            "date": "2016-10-24",
            "count": 1
          },
          {
            "date": "2016-10-27",
            "count": 1
          },
          {
            "date": "2016-10-31",
            "count": 1
          },
          {
            "date": "2016-11-08",
            "count": 1
          },
          {
            "date": "2016-11-11",
            "count": 1
          },
          {
            "date": "2016-11-18",
            "count": 1
          },
          {
            "date": "2016-11-23",
            "count": 2
          },
          {
            "date": "2016-12-12",
            "count": 1
          },
          {
            "date": "2016-12-26",
            "count": 1
          },
          {
            "date": "2016-12-28",
            "count": 1
          },
          {
            "date": "2017-01-03",
            "count": 1
          },
          {
            "date": "2017-01-08",
            "count": 1
          },
          {
            "date": "2017-01-20",
            "count": 1
          },
          {
            "date": "2017-01-30",
            "count": 1
          },
          {
            "date": "2017-01-31",
            "count": 1
          },
          {
            "date": "2017-02-05",
            "count": 1
          },
          {
            "date": "2017-02-15",
            "count": 1
          },
          {
            "date": "2017-03-02",
            "count": 1
          },
          {
            "date": "2017-03-07",
            "count": 1
          },
          {
            "date": "2017-03-08",
            "count": 1
          },
          {
            "date": "2017-03-18",
            "count": 1
          },
          {
            "date": "2017-03-21",
            "count": 1
          },
          {
            "date": "2017-03-29",
            "count": 1
          },
          {
            "date": "2017-04-15",
            "count": 1
          },
          {
            "date": "2017-04-16",
            "count": 1
          },
          {
            "date": "2017-04-18",
            "count": 1
          },
          {
            "date": "2017-04-20",
            "count": 1
          },
          {
            "date": "2017-04-22",
            "count": 1
          },
          {
            "date": "2017-04-27",
            "count": 1
          },
          {
            "date": "2017-05-01",
            "count": 1
          },
          {
            "date": "2017-05-19",
            "count": 1
          },
          {
            "date": "2017-06-02",
            "count": 1
          },
          {
            "date": "2017-06-08",
            "count": 1
          },
          {
            "date": "2017-06-22",
            "count": 1
          },
          {
            "date": "2017-06-26",
            "count": 1
          },
          {
            "date": "2017-06-27",
            "count": 1
          },
          {
            "date": "2017-07-04",
            "count": 2
          },
          {
            "date": "2017-07-08",
            "count": 1
          },
          {
            "date": "2017-07-13",
            "count": 1
          },
          {
            "date": "2017-07-15",
            "count": 1
          },
          {
            "date": "2017-07-18",
            "count": 1
          },
          {
            "date": "2017-08-05",
            "count": 1
          },
          {
            "date": "2017-08-15",
            "count": 1
          },
          {
            "date": "2017-08-16",
            "count": 1
          },
          {
            "date": "2017-08-23",
            "count": 1
          },
          {
            "date": "2017-08-29",
            "count": 1
          },
          {
            "date": "2017-08-30",
            "count": 1
          },
          {
            "date": "2017-09-06",
            "count": 1
          },
          {
            "date": "2017-09-29",
            "count": 1
          },
          {
            "date": "2017-10-05",
            "count": 1
          },
          {
            "date": "2017-10-15",
            "count": 1
          },
          {
            "date": "2017-10-16",
            "count": 1
          },
          {
            "date": "2017-10-24",
            "count": 1
          },
          {
            "date": "2017-11-22",
            "count": 3
          },
          {
            "date": "2017-11-24",
            "count": 2
          },
          {
            "date": "2017-11-27",
            "count": 1
          },
          {
            "date": "2017-11-30",
            "count": 1
          },
          {
            "date": "2017-12-02",
            "count": 1
          },
          {
            "date": "2017-12-05",
            "count": 1
          },
          {
            "date": "2017-12-07",
            "count": 1
          },
          {
            "date": "2018-01-02",
            "count": 1
          },
          {
            "date": "2018-01-11",
            "count": 1
          },
          {
            "date": "2018-02-14",
            "count": 1
          },
          {
            "date": "2018-02-16",
            "count": 1
          },
          {
            "date": "2018-03-22",
            "count": 2
          },
          {
            "date": "2018-03-23",
            "count": 1
          },
          {
            "date": "2018-03-24",
            "count": 1
          },
          {
            "date": "2018-04-16",
            "count": 1
          },
          {
            "date": "2018-04-18",
            "count": 1
          },
          {
            "date": "2018-05-18",
            "count": 1
          },
          {
            "date": "2018-05-22",
            "count": 1
          },
          {
            "date": "2018-06-05",
            "count": 1
          },
          {
            "date": "2018-06-06",
            "count": 1
          },
          {
            "date": "2018-06-10",
            "count": 1
          },
          {
            "date": "2018-06-11",
            "count": 1
          },
          {
            "date": "2018-06-18",
            "count": 1
          },
          {
            "date": "2018-07-16",
            "count": 2
          },
          {
            "date": "2018-07-18",
            "count": 1
          },
          {
            "date": "2018-08-07",
            "count": 1
          },
          {
            "date": "2018-08-11",
            "count": 1
          },
          {
            "date": "2018-09-06",
            "count": 1
          },
          {
            "date": "2018-09-11",
            "count": 1
          },
          {
            "date": "2018-09-14",
            "count": 1
          },
          {
            "date": "2018-09-27",
            "count": 1
          },
          {
            "date": "2018-10-03",
            "count": 1
          },
          {
            "date": "2018-10-09",
            "count": 1
          },
          {
            "date": "2018-10-10",
            "count": 1
          },
          {
            "date": "2018-10-17",
            "count": 1
          },
          {
            "date": "2018-10-26",
            "count": 1
          },
          {
            "date": "2018-11-07",
            "count": 1
          },
          {
            "date": "2018-12-08",
            "count": 1
          },
          {
            "date": "2018-12-13",
            "count": 1
          },
          {
            "date": "2018-12-26",
            "count": 1
          },
          {
            "date": "2019-01-02",
            "count": 1
          },
          {
            "date": "2019-01-04",
            "count": 1
          },
          {
            "date": "2019-01-06",
            "count": 1
          },
          {
            "date": "2019-01-08",
            "count": 1
          },
          {
            "date": "2019-02-03",
            "count": 1
          },
          {
            "date": "2019-02-19",
            "count": 3
          },
          {
            "date": "2019-03-02",
            "count": 2
          },
          {
            "date": "2019-03-15",
            "count": 1
          },
          {
            "date": "2019-03-24",
            "count": 1
          },
          {
            "date": "2019-04-02",
            "count": 2
          },
          {
            "date": "2019-04-11",
            "count": 1
          },
          {
            "date": "2019-04-12",
            "count": 1
          },
          {
            "date": "2019-05-14",
            "count": 1
          },
          {
            "date": "2019-05-15",
            "count": 1
          },
          {
            "date": "2019-05-20",
            "count": 1
          },
          {
            "date": "2019-05-28",
            "count": 1
          },
          {
            "date": "2019-06-10",
            "count": 1
          },
          {
            "date": "2019-06-13",
            "count": 1
          },
          {
            "date": "2019-07-20",
            "count": 1
          },
          {
            "date": "2019-07-26",
            "count": 1
          },
          {
            "date": "2019-07-30",
            "count": 2
          },
          {
            "date": "2019-08-01",
            "count": 1
          },
          {
            "date": "2019-08-09",
            "count": 1
          },
          {
            "date": "2019-08-12",
            "count": 1
          },
          {
            "date": "2019-08-14",
            "count": 1
          },
          {
            "date": "2019-08-18",
            "count": 1
          },
          {
            "date": "2019-09-09",
            "count": 2
          },
          {
            "date": "2019-09-19",
            "count": 1
          },
          {
            "date": "2019-09-23",
            "count": 1
          },
          {
            "date": "2019-10-08",
            "count": 1
          },
          {
            "date": "2019-10-15",
            "count": 2
          },
          {
            "date": "2019-10-17",
            "count": 1
          },
          {
            "date": "2019-10-29",
            "count": 1
          },
          {
            "date": "2019-10-30",
            "count": 2
          },
          {
            "date": "2019-11-03",
            "count": 1
          },
          {
            "date": "2019-11-13",
            "count": 1
          },
          {
            "date": "2019-11-25",
            "count": 1
          },
          {
            "date": "2019-12-07",
            "count": 1
          },
          {
            "date": "2019-12-20",
            "count": 1
          },
          {
            "date": "2019-12-22",
            "count": 1
          },
          {
            "date": "2019-12-29",
            "count": 1
          },
          {
            "date": "2020-01-01",
            "count": 1
          },
          {
            "date": "2020-01-25",
            "count": 1
          },
          {
            "date": "2020-01-27",
            "count": 1
          },
          {
            "date": "2020-02-05",
            "count": 1
          },
          {
            "date": "2020-02-16",
            "count": 1
          },
          {
            "date": "2020-03-30",
            "count": 1
          },
          {
            "date": "2020-04-08",
            "count": 1
          },
          {
            "date": "2020-04-23",
            "count": 1
          },
          {
            "date": "2020-05-09",
            "count": 1
          },
          {
            "date": "2020-05-14",
            "count": 1
          },
          {
            "date": "2020-06-27",
            "count": 1
          },
          {
            "date": "2020-07-04",
            "count": 1
          },
          {
            "date": "2020-07-08",
            "count": 1
          },
          {
            "date": "2020-07-20",
            "count": 1
          },
          {
            "date": "2020-08-11",
            "count": 1
          },
          {
            "date": "2020-08-13",
            "count": 1
          },
          {
            "date": "2020-09-04",
            "count": 1
          },
          {
            "date": "2020-09-20",
            "count": 1
          },
          {
            "date": "2020-09-24",
            "count": 1
          },
          {
            "date": "2020-09-28",
            "count": 1
          },
          {
            "date": "2020-10-03",
            "count": 1
          },
          {
            "date": "2020-10-14",
            "count": 1
          },
          {
            "date": "2020-11-25",
            "count": 1
          },
          {
            "date": "2020-11-26",
            "count": 1
          },
          {
            "date": "2020-12-01",
            "count": 1
          },
          {
            "date": "2020-12-09",
            "count": 2
          },
          {
            "date": "2020-12-18",
            "count": 1
          },
          {
            "date": "2021-01-15",
            "count": 1
          },
          {
            "date": "2021-01-22",
            "count": 1
          },
          {
            "date": "2021-01-24",
            "count": 1
          },
          {
            "date": "2021-02-03",
            "count": 1
          },
          {
            "date": "2021-02-17",
            "count": 1
          },
          {
            "date": "2021-02-18",
            "count": 1
          },
          {
            "date": "2021-02-19",
            "count": 1
          },
          {
            "date": "2021-03-03",
            "count": 1
          },
          {
            "date": "2021-03-08",
            "count": 1
          },
          {
            "date": "2021-04-18",
            "count": 1
          },
          {
            "date": "2021-06-08",
            "count": 1
          },
          {
            "date": "2021-06-21",
            "count": 1
          },
          {
            "date": "2021-06-23",
            "count": 1
          },
          {
            "date": "2021-07-12",
            "count": 1
          },
          {
            "date": "2021-09-03",
            "count": 1
          },
          {
            "date": "2021-09-08",
            "count": 1
          },
          {
            "date": "2021-10-28",
            "count": 1
          },
          {
            "date": "2021-11-01",
            "count": 1
          },
          {
            "date": "2021-12-21",
            "count": 1
          },
          {
            "date": "2022-01-31",
            "count": 1
          },
          {
            "date": "2022-03-21",
            "count": 1
          },
          {
            "date": "2022-05-17",
            "count": 1
          },
          {
            "date": "2022-06-13",
            "count": 1
          },
          {
            "date": "2022-11-04",
            "count": 1
          },
          {
            "date": "2023-01-09",
            "count": 1
          },
          {
            "date": "2023-02-17",
            "count": 1
          },
          {
            "date": "2023-03-18",
            "count": 1
          },
          {
            "date": "2023-04-30",
            "count": 1
          },
          {
            "date": "2023-05-25",
            "count": 1
          },
          {
            "date": "2024-06-08",
            "count": 1
          },
          {
            "date": "2024-09-10",
            "count": 1
          },
          {
            "date": "2024-10-10",
            "count": 1
          },
          {
            "date": "2024-10-16",
            "count": 1
          },
          {
            "date": "2024-11-02",
            "count": 1
          },
          {
            "date": "2024-12-11",
            "count": 1
          },
          {
            "date": "2025-01-06",
            "count": 1
          },
          {
            "date": "2025-01-23",
            "count": 1
          },
          {
            "date": "2025-02-03",
            "count": 1
          },
          {
            "date": "2025-02-21",
            "count": 1
          },
          {
            "date": "2025-05-24",
            "count": 1
          },
          {
            "date": "2025-06-06",
            "count": 1
          },
          {
            "date": "2025-07-07",
            "count": 1
          },
          {
            "date": "2025-08-21",
            "count": 1
          },
          {
            "date": "2025-10-08",
            "count": 1
          },
          {
            "date": "2025-10-19",
            "count": 1
          },
          {
            "date": "2025-11-30",
            "count": 1
          },
          {
            "date": "2025-12-03",
            "count": 1
          },
          {
            "date": "2025-12-23",
            "count": 1
          },
          {
            "date": "2025-12-24",
            "count": 1
          },
          {
            "date": "2025-12-27",
            "count": 1
          },
          {
            "date": "2026-01-29",
            "count": 1
          },
          {
            "date": "2026-02-13",
            "count": 1
          },
          {
            "date": "2026-05-24",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 484,
        "total_forks": 528
      },
      "star_history": null,
      "open_issues_and_prs": 28
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [
        "bootloader/makefile",
        "bootloader/prebootloader/makefile",
        "bootloader/prebootloader/src/rtl872x/mbr/makefile",
        "bootloader/prebootloader/src/rtl872x/part1/makefile",
        "communication-dynalib/makefile",
        "communication/makefile",
        "communication/tests/UnitTest++/Makefile",
        "crypto-dynalib/makefile",
        "crypto/makefile",
        "dynalib/makefile",
        "gsm0710muxer/makefile",
        "hal-dynalib/makefile",
        "hal/makefile",
        "main/makefile",
        "makefile",
        "modules/argon/makefile",
        "modules/argon/system-part1/makefile",
        "modules/argon/user-part/makefile",
        "modules/b5som/makefile",
        "modules/b5som/system-part1/makefile",
        "modules/b5som/user-part/makefile",
        "modules/boron/makefile",
        "modules/boron/system-part1/makefile",
        "modules/boron/user-part/makefile",
        "modules/electron2/makefile",
        "modules/electron2/system-part1/makefile",
        "modules/electron2/user-part/makefile",
        "modules/makefile",
        "modules/msom/makefile",
        "modules/msom/system-part1/makefile",
        "modules/msom/user-part/makefile",
        "modules/tracker/makefile",
        "modules/tracker/system-part1/makefile",
        "modules/tracker/user-part/makefile",
        "modules/trackerm/makefile",
        "modules/trackerm/system-part1/makefile",
        "modules/trackerm/user-part/makefile",
        "modules/tron/makefile",
        "modules/tron/system-part1/makefile",
        "modules/tron/user-part/makefile",
        "newlib_nano/makefile",
        "platform/makefile",
        "proto_defs/makefile",
        "rt-dynalib/makefile",
        "services-dynalib/makefile",
        "services/makefile",
        "system-dynalib/makefile",
        "system/makefile",
        "third_party/ambd_sdk/makefile",
        "third_party/coremark/Makefile",
        "third_party/freertos/makefile",
        "third_party/libiperf/Makefile",
        "third_party/littlefs/makefile",
        "third_party/lwip/makefile",
        "third_party/mbedtls/makefile",
        "third_party/miniz/Makefile",
        "third_party/nanopb/makefile",
        "third_party/nrf5_sdk/makefile",
        "third_party/wiznet_driver/makefile",
        "user/makefile",
        "user/tests/reflection/makefile",
        "wiring/makefile",
        "wiring_globals/makefile"
      ],
      "api_schema_files": [
        "proto_defs/internal/ledger.proto",
        "proto_defs/internal/network_config.proto"
      ],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 204872,
      "source_files_sampled": 2009,
      "oversized_source_files": 22,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "decompress",
            "direct": false,
            "version": "4.2.1",
            "severity": "critical",
            "ecosystem": "npm",
            "cvss_score": 9.1,
            "advisory_ids": [
              "GHSA-mp2f-45pm-3cg9"
            ],
            "fixed_version": "11.1.3",
            "advisory_count": 1,
            "oldest_advisory_days": 20
          },
          {
            "name": "flatted",
            "direct": false,
            "version": "3.3.3",
            "severity": "critical",
            "ecosystem": "npm",
            "cvss_score": 9.8,
            "advisory_ids": [
              "GHSA-25h7-pfq9-p65f",
              "GHSA-rf6f-7fwh-wjgh"
            ],
            "fixed_version": "3.4.2",
            "advisory_count": 2,
            "oldest_advisory_days": 136
          },
          {
            "name": "protobufjs",
            "direct": false,
            "version": "6.11.4",
            "severity": "critical",
            "ecosystem": "npm",
            "cvss_score": 9.8,
            "advisory_ids": [
              "GHSA-2pr8-phx7-x9h3",
              "GHSA-66ff-xgx4-vchm",
              "GHSA-685m-2w69-288q",
              "GHSA-75px-5xx7-5xc7",
              "GHSA-f38q-mgvj-vph7",
              "GHSA-fx83-v9x8-x52w",
              "GHSA-jggg-4jg4-v7c6",
              "GHSA-jvwf-75h9-cwgg",
              "GHSA-q6x5-8v7m-xcrf",
              "GHSA-wcpc-wj8m-hjx6"
            ],
            "fixed_version": "8.6.0",
            "advisory_count": 11,
            "oldest_advisory_days": 101
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.11",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp",
              "GHSA-f886-m6hf-6m8v",
              "GHSA-mh99-v99m-4gvg",
              "GHSA-v6h2-p8h4-qcjw"
            ],
            "fixed_version": "5.0.8",
            "advisory_count": 4,
            "oldest_advisory_days": 412
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.12",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp",
              "GHSA-f886-m6hf-6m8v",
              "GHSA-mh99-v99m-4gvg"
            ],
            "fixed_version": "5.0.8",
            "advisory_count": 3,
            "oldest_advisory_days": 122
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "2.0.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp",
              "GHSA-f886-m6hf-6m8v",
              "GHSA-mh99-v99m-4gvg",
              "GHSA-v6h2-p8h4-qcjw"
            ],
            "fixed_version": "5.0.8",
            "advisory_count": 4,
            "oldest_advisory_days": 412
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "2.0.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp",
              "GHSA-f886-m6hf-6m8v",
              "GHSA-mh99-v99m-4gvg"
            ],
            "fixed_version": "5.0.8",
            "advisory_count": 3,
            "oldest_advisory_days": 122
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-grv7-fg5c-xmjg"
            ],
            "fixed_version": "3.0.3",
            "advisory_count": 1,
            "oldest_advisory_days": 803
          },
          {
            "name": "form-data",
            "direct": false,
            "version": "4.0.4",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-hmw2-7cc7-3qxx"
            ],
            "fixed_version": "4.0.6",
            "advisory_count": 1,
            "oldest_advisory_days": 42
          },
          {
            "name": "http-cache-semantics",
            "direct": false,
            "version": "3.8.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-rc47-6667-2j5j"
            ],
            "fixed_version": "4.1.1",
            "advisory_count": 1,
            "oldest_advisory_days": 1273
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "3.14.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-52cp-r559-cp3m",
              "GHSA-h67p-54hq-rp68",
              "GHSA-mh29-5h37-fv8m"
            ],
            "fixed_version": "4.3.0",
            "advisory_count": 3,
            "oldest_advisory_days": 255
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.1.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-52cp-r559-cp3m",
              "GHSA-h67p-54hq-rp68",
              "GHSA-mh29-5h37-fv8m"
            ],
            "fixed_version": "4.3.0",
            "advisory_count": 3,
            "oldest_advisory_days": 255
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "4.17.21",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 8.1,
            "advisory_ids": [
              "GHSA-f23m-r3pf-42rh",
              "GHSA-r5fr-rjxr-66jc",
              "GHSA-xxjr-mmjv-4gpg"
            ],
            "fixed_version": "4.18.0",
            "advisory_count": 3,
            "oldest_advisory_days": 186
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "4.17.23",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 8.1,
            "advisory_ids": [
              "GHSA-f23m-r3pf-42rh",
              "GHSA-r5fr-rjxr-66jc"
            ],
            "fixed_version": "4.18.0",
            "advisory_count": 2,
            "oldest_advisory_days": 116
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-23c5-xmqv-rm74",
              "GHSA-3ppc-4f35-3m26",
              "GHSA-7r86-cg39-jmmj"
            ],
            "fixed_version": "10.2.3",
            "advisory_count": 3,
            "oldest_advisory_days": 158
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "4.2.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-23c5-xmqv-rm74",
              "GHSA-3ppc-4f35-3m26",
              "GHSA-7r86-cg39-jmmj"
            ],
            "fixed_version": "10.2.3",
            "advisory_count": 3,
            "oldest_advisory_days": 158
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "5.1.6",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-23c5-xmqv-rm74",
              "GHSA-3ppc-4f35-3m26",
              "GHSA-7r86-cg39-jmmj"
            ],
            "fixed_version": "10.2.3",
            "advisory_count": 3,
            "oldest_advisory_days": 158
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "9.0.5",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-23c5-xmqv-rm74",
              "GHSA-3ppc-4f35-3m26",
              "GHSA-7r86-cg39-jmmj"
            ],
            "fixed_version": "10.2.3",
            "advisory_count": 3,
            "oldest_advisory_days": 158
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3v7f-55p6-f55p",
              "GHSA-c2c7-rcm5-vvqj"
            ],
            "fixed_version": "4.0.4",
            "advisory_count": 2,
            "oldest_advisory_days": 123
          },
          {
            "name": "serialize-javascript",
            "direct": false,
            "version": "6.0.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 8.1,
            "advisory_ids": [
              "GHSA-5c6j-r48x-rmvq",
              "GHSA-76p7-773f-r4q5",
              "GHSA-qj8w-gfj5-8c6v"
            ],
            "fixed_version": "7.0.5",
            "advisory_count": 3,
            "oldest_advisory_days": 531
          },
          {
            "name": "tmp",
            "direct": false,
            "version": "0.1.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-52f5-9888-hmc6",
              "GHSA-ph9p-34f9-6g65"
            ],
            "fixed_version": "0.2.6",
            "advisory_count": 2,
            "oldest_advisory_days": 355
          },
          {
            "name": "tmp",
            "direct": false,
            "version": "0.2.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-52f5-9888-hmc6",
              "GHSA-ph9p-34f9-6g65"
            ],
            "fixed_version": "0.2.6",
            "advisory_count": 2,
            "oldest_advisory_days": 355
          },
          {
            "name": "tmp",
            "direct": false,
            "version": "0.2.5",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-ph9p-34f9-6g65"
            ],
            "fixed_version": "0.2.6",
            "advisory_count": 1,
            "oldest_advisory_days": 61
          },
          {
            "name": "uuid",
            "direct": false,
            "version": "8.3.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-w5hq-g745-h8pq"
            ],
            "fixed_version": "13.0.1",
            "advisory_count": 1,
            "oldest_advisory_days": 95
          },
          {
            "name": "@octokit/plugin-paginate-rest",
            "direct": false,
            "version": "2.21.3",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-h5c3-5r3r-rr8q"
            ],
            "fixed_version": "11.4.1",
            "advisory_count": 1,
            "oldest_advisory_days": 528
          },
          {
            "name": "@octokit/request",
            "direct": false,
            "version": "5.6.3",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-rmvr-2pp2-xj38"
            ],
            "fixed_version": "9.2.1",
            "advisory_count": 1,
            "oldest_advisory_days": 528
          },
          {
            "name": "@octokit/request-error",
            "direct": false,
            "version": "2.1.0",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-xx4v-prfh-6cgc"
            ],
            "fixed_version": "6.1.7",
            "advisory_count": 1,
            "oldest_advisory_days": 528
          },
          {
            "name": "@protobufjs/utf8",
            "direct": false,
            "version": "1.1.0",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-q6x5-8v7m-xcrf"
            ],
            "fixed_version": "8.0.2",
            "advisory_count": 1,
            "oldest_advisory_days": 76
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "6.12.6",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-2g4f-4pwh-qvx6"
            ],
            "fixed_version": "8.18.0",
            "advisory_count": 1,
            "oldest_advisory_days": 165
          },
          {
            "name": "diff",
            "direct": false,
            "version": "5.0.0",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-73rr-hh4g-fpgx"
            ],
            "fixed_version": "8.0.3",
            "advisory_count": 1,
            "oldest_advisory_days": 193
          },
          {
            "name": "got",
            "direct": false,
            "version": "8.3.2",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-pfrx-2q88-qq97"
            ],
            "fixed_version": "12.1.0",
            "advisory_count": 1,
            "oldest_advisory_days": 1499
          },
          {
            "name": "ip-address",
            "direct": false,
            "version": "9.0.5",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": null,
            "advisory_ids": [
              "GHSA-v2v4-37r5-5v8g"
            ],
            "fixed_version": "10.1.1",
            "advisory_count": 1,
            "oldest_advisory_days": 82
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.5",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-952p-6rrq-rcjv"
            ],
            "fixed_version": "4.0.8",
            "advisory_count": 1,
            "oldest_advisory_days": 803
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.1",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 4.3,
            "advisory_ids": [
              "GHSA-mwcw-c2x4-8c55"
            ],
            "fixed_version": "5.0.9",
            "advisory_count": 1,
            "oldest_advisory_days": 595
          },
          {
            "name": "qs",
            "direct": false,
            "version": "6.11.2",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-6rw7-vpxm-498p",
              "GHSA-q8mj-m7cp-5q26",
              "GHSA-w7fw-mjwx-w883"
            ],
            "fixed_version": "6.15.2",
            "advisory_count": 3,
            "oldest_advisory_days": 208
          },
          {
            "name": "qs",
            "direct": false,
            "version": "6.14.0",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-6rw7-vpxm-498p",
              "GHSA-q8mj-m7cp-5q26",
              "GHSA-w7fw-mjwx-w883"
            ],
            "fixed_version": "6.15.2",
            "advisory_count": 3,
            "oldest_advisory_days": 208
          },
          {
            "name": "@babel/core",
            "direct": false,
            "version": "7.28.4",
            "severity": "low",
            "ecosystem": "npm",
            "cvss_score": 3.2,
            "advisory_ids": [
              "GHSA-4x5r-pxfx-6jf8"
            ],
            "fixed_version": "8.0.0-rc.6",
            "advisory_count": 1,
            "oldest_advisory_days": 42
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "low": 1,
          "high": 21,
          "critical": 3,
          "moderate": 12
        },
        "advisory_count": 82,
        "affected_count": 37,
        "assessed_count": 600,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 15,
        "direct_affected_count": 0
      },
      "ecosystems": [],
      "dependencies": [],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/compat-data",
            "direct": false,
            "version": "7.28.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/core",
            "direct": false,
            "version": "7.28.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/generator",
            "direct": false,
            "version": "7.28.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-compilation-targets",
            "direct": false,
            "version": "7.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-globals",
            "direct": false,
            "version": "7.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-imports",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-transforms",
            "direct": false,
            "version": "7.28.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-option",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helpers",
            "direct": false,
            "version": "7.28.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "7.28.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/template",
            "direct": false,
            "version": "7.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/traverse",
            "direct": false,
            "version": "7.28.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "7.28.4",
            "ecosystem": "npm"
          },
          {
            "name": "@es-joy/jsdoccomment",
            "direct": false,
            "version": "0.71.0",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/eslint-utils",
            "direct": false,
            "version": "4.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/regexpp",
            "direct": false,
            "version": "4.12.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/compat",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/config-array",
            "direct": false,
            "version": "0.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/config-helpers",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/core",
            "direct": false,
            "version": "0.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/eslintrc",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/js",
            "direct": false,
            "version": "9.37.0",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/object-schema",
            "direct": false,
            "version": "2.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/plugin-kit",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/core",
            "direct": false,
            "version": "0.19.1",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/node",
            "direct": false,
            "version": "0.16.7",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/module-importer",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/retry",
            "direct": false,
            "version": "0.4.3",
            "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": "@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": "@nodelib/fs.scandir",
            "direct": false,
            "version": "2.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.stat",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.walk",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "@octokit/auth-token",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "@octokit/core",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "@octokit/endpoint",
            "direct": false,
            "version": "6.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "@octokit/graphql",
            "direct": false,
            "version": "4.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "@octokit/openapi-types",
            "direct": false,
            "version": "12.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "@octokit/plugin-paginate-rest",
            "direct": false,
            "version": "2.21.3",
            "ecosystem": "npm"
          },
          {
            "name": "@octokit/plugin-request-log",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@octokit/plugin-rest-endpoint-methods",
            "direct": false,
            "version": "5.16.2",
            "ecosystem": "npm"
          },
          {
            "name": "@octokit/request",
            "direct": false,
            "version": "5.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "@octokit/request-error",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@octokit/rest",
            "direct": false,
            "version": "18.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "@octokit/types",
            "direct": false,
            "version": "6.41.0",
            "ecosystem": "npm"
          },
          {
            "name": "@particle/device-constants",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@particle/device-os-flash-util",
            "direct": false,
            "version": "0.15.2",
            "ecosystem": "npm"
          },
          {
            "name": "@particle/device-os-protobuf",
            "direct": false,
            "version": "2.10.1",
            "ecosystem": "npm"
          },
          {
            "name": "@particle/device-os-protobuf",
            "direct": false,
            "version": "2.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/aspromise",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/base64",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/codegen",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/eventemitter",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/fetch",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/float",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/inquire",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/path",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/pool",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@protobufjs/utf8",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sindresorhus/is",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/json-schema",
            "direct": false,
            "version": "7.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "@types/long",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "24.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "25.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/w3c-web-usb",
            "direct": false,
            "version": "1.0.13",
            "ecosystem": "npm"
          },
          {
            "name": "@types/w3c-web-usb",
            "direct": false,
            "version": "1.0.14",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/eslint-plugin",
            "direct": false,
            "version": "8.46.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/parser",
            "direct": false,
            "version": "8.46.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/project-service",
            "direct": false,
            "version": "8.46.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/scope-manager",
            "direct": false,
            "version": "8.46.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/tsconfig-utils",
            "direct": false,
            "version": "8.46.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/type-utils",
            "direct": false,
            "version": "8.46.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/types",
            "direct": false,
            "version": "8.46.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/typescript-estree",
            "direct": false,
            "version": "8.46.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/utils",
            "direct": false,
            "version": "8.46.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/visitor-keys",
            "direct": false,
            "version": "8.46.1",
            "ecosystem": "npm"
          },
          {
            "name": "@ungap/promise-all-settled",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-jsx",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "aggregate-error",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "6.12.6",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-colors",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "anymatch",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "append-transform",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "archive-type",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "archiver",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "archiver",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "archiver-utils",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "archiver-utils",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "archy",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "are-docs-informative",
            "direct": false,
            "version": "0.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "1.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "array-events",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "array-union",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "assertion-error",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "async",
            "direct": false,
            "version": "3.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "async",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "async-arrays",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "asynckit",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "available-typed-arrays",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "babel-preset-env",
            "direct": false,
            "version": "^1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "babel-register",
            "direct": false,
            "version": "^6.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "base64-js",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "baseline-browser-mapping",
            "direct": false,
            "version": "2.8.16",
            "ecosystem": "npm"
          },
          {
            "name": "before-after-hook",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "big-integer",
            "direct": false,
            "version": "1.6.51",
            "ecosystem": "npm"
          },
          {
            "name": "big-integer",
            "direct": false,
            "version": "1.6.52",
            "ecosystem": "npm"
          },
          {
            "name": "binary",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "binary-extensions",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "binary-version-reader",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "binary-version-reader",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "bit-mask",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "bl",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "bl",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "bluebird",
            "direct": false,
            "version": "3.4.7",
            "ecosystem": "npm"
          },
          {
            "name": "bluebird",
            "direct": false,
            "version": "3.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "bluebird",
            "direct": false,
            "version": "^3.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.11",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.12",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "browser-stdout",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "4.26.3",
            "ecosystem": "npm"
          },
          {
            "name": "buffer",
            "direct": false,
            "version": "5.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-alloc",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-alloc-unsafe",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-crc32",
            "direct": false,
            "version": "0.2.13",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-fill",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-indexof-polyfill",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "buffers",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "builtin-status-codes",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cacheable-request",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "caching-transform",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "call-bind",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "call-bind",
            "direct": false,
            "version": "1.0.8",
            "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": "call-me-maybe",
            "direct": false,
            "version": "1.0.2",
            "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.30001750",
            "ecosystem": "npm"
          },
          {
            "name": "cbor",
            "direct": false,
            "version": "^9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "chai",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "chai",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "chai",
            "direct": false,
            "version": "^4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "chai-as-promised",
            "direct": false,
            "version": "^7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "chai-exclude",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "chai-exclude",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "chai-fs",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "chainsaw",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "5.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "check-error",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "3.5.3",
            "ecosystem": "npm"
          },
          {
            "name": "clean-stack",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "7.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "clone-response",
            "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": "combined-stream",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "2.20.3",
            "ecosystem": "npm"
          },
          {
            "name": "comment-parser",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "commondir",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "compress-commons",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "compress-commons",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "content-disposition",
            "direct": false,
            "version": "0.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "core-util-is",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "crc-32",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "crc32-stream",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "crc32-stream",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "crypto-random-string",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "decamelize",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "decamelize",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "decode-uri-component",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "decompress",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "decompress-response",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "decompress-tar",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "decompress-tarbz2",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "decompress-targz",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "decompress-unzip",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "deep-eql",
            "direct": false,
            "version": "4.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "deep-eql",
            "direct": false,
            "version": "4.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "deep-is",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "default-require-extensions",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "define-data-property",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "define-data-property",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "del",
            "direct": false,
            "version": "6.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "delayed-stream",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "deprecation",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "diff",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "dir-glob",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "download",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "dunder-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "duplexer2",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "duplexer3",
            "direct": false,
            "version": "0.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "electron-to-chromium",
            "direct": false,
            "version": "1.5.237",
            "ecosystem": "npm"
          },
          {
            "name": "emitter-component",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "end-of-stream",
            "direct": false,
            "version": "1.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "end-of-stream",
            "direct": false,
            "version": "1.4.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.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-set-tostringtag",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "es6-error",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "es6-promise",
            "direct": false,
            "version": "4.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint",
            "direct": false,
            "version": "9.37.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-config-particle",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-plugin-jsdoc",
            "direct": false,
            "version": "60.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-scope",
            "direct": false,
            "version": "8.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "3.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "espree",
            "direct": false,
            "version": "10.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "esprima",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "esquery",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "esrecurse",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "esutils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "ext-list",
            "direct": false,
            "version": "2.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "ext-name",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "extended-emitter",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-glob",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "fast-glob",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-json-stable-stringify",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-levenshtein",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "fastq",
            "direct": false,
            "version": "1.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "fastq",
            "direct": false,
            "version": "1.19.1",
            "ecosystem": "npm"
          },
          {
            "name": "fclone",
            "direct": false,
            "version": "1.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "fd-slicer",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "file-entry-cache",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "file-type",
            "direct": false,
            "version": "11.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "file-type",
            "direct": false,
            "version": "3.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "file-type",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "file-type",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "file-type",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "filename-reserved-regex",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "filenamify",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "find-cache-dir",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "flat",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "flat-cache",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "flatted",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "for-each",
            "direct": false,
            "version": "0.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "foreground-child",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "form-data",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "from2",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "fromentries",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "fs-constants",
            "direct": false,
            "version": "1.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": "fstream",
            "direct": false,
            "version": "1.0.12",
            "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-func-name",
            "direct": false,
            "version": "2.0.2",
            "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": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "7.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "glob-to-regexp",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "globals",
            "direct": false,
            "version": "14.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "globals",
            "direct": false,
            "version": "16.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "globby",
            "direct": false,
            "version": "11.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "gopd",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "got",
            "direct": false,
            "version": "8.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "graphemer",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "growl",
            "direct": false,
            "version": "1.10.5",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-property-descriptors",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "has-property-descriptors",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "has-symbol-support-x",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "has-symbols",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-to-string-tag-x",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "has-tostringtag",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "hasha",
            "direct": false,
            "version": "5.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "he",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "html-entities",
            "direct": false,
            "version": "2.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "html-escaper",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "http-cache-semantics",
            "direct": false,
            "version": "3.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "ieee754",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "5.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "7.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "import-fresh",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "imurmurhash",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "indent-string",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "inflight",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "into-stream",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ip-address",
            "direct": false,
            "version": "9.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "is-binary-path",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-callable",
            "direct": false,
            "version": "1.2.7",
            "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-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-natural-number",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-object",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-path-cwd",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-path-inside",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-obj",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-obj",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-object",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-retry-allowed",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-stream",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-stream",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-typed-array",
            "direct": false,
            "version": "1.1.15",
            "ecosystem": "npm"
          },
          {
            "name": "is-typedarray",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-unicode-supported",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-windows",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "isarray",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isarray",
            "direct": false,
            "version": "2.0.5",
            "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-hook",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-instrument",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-processinfo",
            "direct": false,
            "version": "2.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": "isurl",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "3.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsbn",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsdoc-type-pratt-parser",
            "direct": false,
            "version": "6.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsesc",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-buffer",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-buffer",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-stable-stringify-without-jsonify",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "jsonc-parser",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "keyv",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "keyv",
            "direct": false,
            "version": "4.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "lazystream",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "levn",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "listenercount",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "4.17.21",
            "ecosystem": "npm"
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "4.17.23",
            "ecosystem": "npm"
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "^4.17.21",
            "ecosystem": "npm"
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "^4.17.4",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.defaults",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.difference",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.flatten",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.flattendeep",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.isplainobject",
            "direct": false,
            "version": "4.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.merge",
            "direct": false,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.union",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "log-symbols",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "long",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "loupe",
            "direct": false,
            "version": "2.3.7",
            "ecosystem": "npm"
          },
          {
            "name": "lowercase-keys",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lowercase-keys",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "make-dir",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "make-dir",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "make-dir",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "make-dir",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "math-intrinsics",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge2",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.5",
            "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": "mimic-response",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "5.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "9.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "^1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "mkdirp",
            "direct": false,
            "version": "0.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "mkdirp",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "mocha",
            "direct": false,
            "version": "9.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "mocha",
            "direct": false,
            "version": "^3.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "natural-compare",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "net",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "node-addon-api",
            "direct": false,
            "version": "8.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-addon-api",
            "direct": false,
            "version": "8.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-fetch",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-gyp-build",
            "direct": false,
            "version": "4.8.4",
            "ecosystem": "npm"
          },
          {
            "name": "node-preload",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "node-releases",
            "direct": false,
            "version": "2.0.23",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-path",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-url",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "nyc",
            "direct": false,
            "version": "15.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "object-assign",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-deep-merge",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "object-inspect",
            "direct": false,
            "version": "1.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-inspect",
            "direct": false,
            "version": "1.13.4",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "optionator",
            "direct": false,
            "version": "0.9.4",
            "ecosystem": "npm"
          },
          {
            "name": "p-cancelable",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "p-event",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "p-finally",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-is-promise",
            "direct": false,
            "version": "1.1.0",
            "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-locate",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-map",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-map",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-timeout",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "p-try",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "package-hash",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "parent-module",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parse-imports-exports",
            "direct": false,
            "version": "0.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "parse-statements",
            "direct": false,
            "version": "1.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "particle-api-js",
            "direct": false,
            "version": "11.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "particle-api-js",
            "direct": false,
            "version": "11.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "particle-usb",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "particle-usb",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "particle-usb",
            "direct": false,
            "version": "^2.4.1",
            "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-type",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "pathval",
            "direct": false,
            "version": "1.1.1",
            "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.1",
            "ecosystem": "npm"
          },
          {
            "name": "pify",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "pify",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "pify",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "pinkie",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "pinkie-promise",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "pkg-dir",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "possible-typed-array-names",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "prelude-ls",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "prepend-http",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "process-nextick-args",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "process-on-spawn",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "protobufjs",
            "direct": false,
            "version": "6.11.4",
            "ecosystem": "npm"
          },
          {
            "name": "pump",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "qs",
            "direct": false,
            "version": "6.11.2",
            "ecosystem": "npm"
          },
          {
            "name": "qs",
            "direct": false,
            "version": "6.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "query-string",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "queue-microtask",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "randombytes",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "randomstring",
            "direct": false,
            "version": "^1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "2.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "3.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "readdir-enhanced",
            "direct": false,
            "version": "1.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "readdir-glob",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "release-zalgo",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "require-directory",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-main-filename",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "responselike",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "reusify",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "reusify",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "rimraf",
            "direct": false,
            "version": "2.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "rimraf",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "run-parallel",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "seek-bzip",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "5.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "6.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "^5.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "serialize-javascript",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "set-blocking",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "set-function-length",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "set-function-length",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "setimmediate",
            "direct": false,
            "version": "1.0.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.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-list",
            "direct": false,
            "version": "1.0.0",
            "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": "sift",
            "direct": false,
            "version": "17.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "slash",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "sort-keys",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "sort-keys",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "sort-keys-length",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "spawn-wrap",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-exceptions",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-expression-parse",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-license-ids",
            "direct": false,
            "version": "3.0.22",
            "ecosystem": "npm"
          },
          {
            "name": "sprintf-js",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "sprintf-js",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "stream",
            "direct": false,
            "version": "0.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "stream-http",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "strict-uri-encode",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "string_decoder",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "string_decoder",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-dirs",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-outer",
            "direct": false,
            "version": "1.0.1",
            "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": "tar-stream",
            "direct": false,
            "version": "1.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "tar-stream",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "telnet-client",
            "direct": false,
            "version": "1.4.11",
            "ecosystem": "npm"
          },
          {
            "name": "temp-dir",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "tempy",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "test-exclude",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "through",
            "direct": false,
            "version": "2.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "timed-out",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "tmp",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "tmp",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "tmp",
            "direct": false,
            "version": "0.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "tmp-promise",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "to-buffer",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "tr46",
            "direct": false,
            "version": "0.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "traverse",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "trim-repeated",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ts-api-utils",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-check",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-detect",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "type-detect",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "typed-array-buffer",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "typedarray-to-buffer",
            "direct": false,
            "version": "3.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "5.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "typescript-eslint",
            "direct": false,
            "version": "8.46.1",
            "ecosystem": "npm"
          },
          {
            "name": "unbzip2-stream",
            "direct": false,
            "version": "1.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "7.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "7.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "unique-string",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "universal-user-agent",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "unzipper",
            "direct": false,
            "version": "0.10.14",
            "ecosystem": "npm"
          },
          {
            "name": "update-browserslist-db",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "uri-js",
            "direct": false,
            "version": "4.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "url-parse-lax",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "url-to-options",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "usb",
            "direct": false,
            "version": "2.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "usb",
            "direct": false,
            "version": "2.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "usb",
            "direct": false,
            "version": "^1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "util-deprecate",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "uuid",
            "direct": false,
            "version": "8.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "verror",
            "direct": false,
            "version": "^1.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "webidl-conversions",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-url",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "which-module",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "which-typed-array",
            "direct": false,
            "version": "1.1.19",
            "ecosystem": "npm"
          },
          {
            "name": "word-wrap",
            "direct": false,
            "version": "1.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "workerpool",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "write-file-atomic",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "xtend",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "4.0.3",
            "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": "15.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "16.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "18.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "20.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-unparser",
            "direct": false,
            "version": "2.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": "zip-stream",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "zip-stream",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 615,
        "direct_count": 0,
        "indirect_count": 615
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 28,
        "merged_prs": 1643,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 265
      },
      "bus_factor": 3,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "avtolstoy",
          "commits": 3533,
          "avatar_url": "https://avatars.githubusercontent.com/u/388478?v=4"
        },
        {
          "type": "User",
          "login": "m-mcgowan",
          "commits": 2584,
          "avatar_url": "https://avatars.githubusercontent.com/u/2465470?v=4"
        },
        {
          "type": "User",
          "login": "sergeuz",
          "commits": 1776,
          "avatar_url": "https://avatars.githubusercontent.com/u/770094?v=4"
        },
        {
          "type": "User",
          "login": "technobly",
          "commits": 1204,
          "avatar_url": "https://avatars.githubusercontent.com/u/2249224?v=4"
        },
        {
          "type": "User",
          "login": "satishgn",
          "commits": 1181,
          "avatar_url": "https://avatars.githubusercontent.com/u/3815573?v=4"
        },
        {
          "type": "User",
          "login": "XuGuohui",
          "commits": 1180,
          "avatar_url": "https://avatars.githubusercontent.com/u/8130559?v=4"
        },
        {
          "type": "User",
          "login": "YutingYou",
          "commits": 469,
          "avatar_url": "https://avatars.githubusercontent.com/u/7424522?v=4"
        },
        {
          "type": "User",
          "login": "scott-brust",
          "commits": 461,
          "avatar_url": "https://avatars.githubusercontent.com/u/86268380?v=4"
        },
        {
          "type": "User",
          "login": "keeramis",
          "commits": 334,
          "avatar_url": "https://avatars.githubusercontent.com/u/48732259?v=4"
        },
        {
          "type": "User",
          "login": "towynlin",
          "commits": 293,
          "avatar_url": "https://avatars.githubusercontent.com/u/3389?v=4"
        }
      ],
      "contributors_sampled": 74,
      "top_contributor_share": 0.256
    },
    "quality_signals": {
      "has_ci": false,
      "has_tests": true,
      "ci_workflows": [],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 9,
            "reason": "binaries present in source code",
            "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": 5,
            "reason": "1 out of 2 merged PRs checked by a CI test -- score normalized to 5",
            "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": 1,
            "reason": "Found 2/15 approved changesets -- score normalized to 1",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 27 contributing companies or organizations",
            "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": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "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": "50 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "d16adc1d93389f79d3ed7ca3e80244e2466bfae1",
        "ran_at": "2026-07-27T18:12:17Z",
        "aggregate_score": 2.6,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-16T07:12:56Z",
      "oldest_open_prs": [
        {
          "number": 1385,
          "created_at": "2017-09-08T10:57:42Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1401,
          "created_at": "2017-10-04T22:12:01Z",
          "last_comment_at": "2020-02-21T14:21:40Z",
          "last_comment_author": "monkbroc"
        },
        {
          "number": 1451,
          "created_at": "2017-12-19T17:54:38Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1468,
          "created_at": "2018-01-18T21:45:50Z",
          "last_comment_at": "2020-02-07T16:28:48Z",
          "last_comment_author": "antoniovazquezblanco"
        },
        {
          "number": 1580,
          "created_at": "2018-10-09T09:05:50Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1665,
          "created_at": "2019-01-03T21:24:16Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1730,
          "created_at": "2019-03-16T16:02:15Z",
          "last_comment_at": "2019-12-12T07:09:03Z",
          "last_comment_author": "YutingYou"
        },
        {
          "number": 1748,
          "created_at": "2019-04-12T14:33:44Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1775,
          "created_at": "2019-05-14T09:14:16Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1833,
          "created_at": "2019-06-21T11:31:03Z",
          "last_comment_at": "2019-08-01T15:09:54Z",
          "last_comment_author": "m-mcgowan"
        },
        {
          "number": 1908,
          "created_at": "2019-09-06T15:22:31Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1952,
          "created_at": "2019-10-22T21:27:35Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2025,
          "created_at": "2020-02-13T19:32:06Z",
          "last_comment_at": "2020-02-14T07:28:40Z",
          "last_comment_author": "avtolstoy"
        },
        {
          "number": 2252,
          "created_at": "2020-12-09T18:02:50Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2292,
          "created_at": "2021-03-03T09:45:05Z",
          "last_comment_at": "2021-03-03T18:30:12Z",
          "last_comment_author": "avtolstoy"
        },
        {
          "number": 2310,
          "created_at": "2021-04-26T06:06:56Z",
          "last_comment_at": "2021-04-27T23:59:10Z",
          "last_comment_author": "eberseth"
        },
        {
          "number": 2351,
          "created_at": "2021-09-07T16:46:47Z",
          "last_comment_at": "2024-01-17T21:39:13Z",
          "last_comment_author": "laughlinbarker"
        },
        {
          "number": 2352,
          "created_at": "2021-09-07T18:30:44Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2353,
          "created_at": "2021-09-07T18:36:08Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 2356,
          "created_at": "2021-09-14T16:16:56Z",
          "last_comment_at": "2021-11-19T22:43:58Z",
          "last_comment_author": "metcalf"
        }
      ],
      "last_merged_pr_at": "2026-07-09T19:20:59Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/particle-iot/device-os",
    "host": "github.com",
    "name": "device-os",
    "owner": "particle-iot"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 70,
      "inputs": {
        "security": 41,
        "vitality": 89,
        "community": 84,
        "governance": 71,
        "engineering": 56
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 89,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 93,
            "inputs": {
              "commits_last_year": 458,
              "human_commit_share": 1,
              "days_since_last_push": 3,
              "active_weeks_last_year": 42
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 3 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 3
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "42/52 weeks with commits",
                "points": 29.1,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 42
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "458 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 458
                    }
                  }
                ],
                "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": "good",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 83,
            "inputs": {
              "releases_count": 100,
              "latest_release_tag": "v6.5.0",
              "releases_from_tags": false,
              "days_since_latest_release": 10,
              "mean_days_between_releases": 71.1
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "100 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 100
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 10 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 10
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~71.1 days",
                "points": 19.8,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 71.1
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "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": 11,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 11 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 11
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "good",
        "name": "Community & Adoption",
        "value": 84,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "good",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 84,
            "inputs": {
              "forks": 528,
              "stars": 1074,
              "watchers": 131,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "1,074 stars",
                "points": 49.2,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 1074
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "528 forks",
                "points": 22.7,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 528
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "131 watchers",
                "points": 11.8,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 131
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "excellent",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": true,
              "has_code_of_conduct": false,
              "has_pull_request_template": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (LGPL-3.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "LGPL-3.0"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "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": 7.2,
                "status": "met",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "good",
        "name": "Sustainability & Governance",
        "value": 71,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "good",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 76,
            "inputs": {
              "bus_factor": 3,
              "contributors_sampled": 74,
              "top_contributor_share": 0.256
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "3 contributor(s) cover half of all commits",
                "points": 36,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 26% of commits",
                "points": 16.7,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 26
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "74 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 74
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 27 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 65,
            "inputs": {
              "merged_prs": 1643,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 265
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "1643/1908 decided PRs merged",
                "points": 32.9,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 1643,
                      "decided": 1908
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 2/15 approved changesets -- score normalized to 1",
                "points": 1.5,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "good",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 71,
            "inputs": {
              "followers": 188,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "particle-iot",
              "public_repos": 379,
              "account_age_days": 5063
            },
            "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": "188 followers of particle-iot",
                "points": 16.4,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 188,
                      "login": "particle-iot"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "379 public repos, account ~13 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 379
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 13
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 56,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "at_risk",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 34,
            "inputs": {
              "has_ci": false,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "1 out of 2 merged PRs checked by a CI test -- score normalized to 5",
                "points": 10,
                "status": "partial",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "topics": [
                "particle",
                "photon",
                "electron",
                "core",
                "arduino",
                "c",
                "c-plus-plus",
                "iot",
                "p1",
                "argon",
                "boron",
                "xenon"
              ],
              "has_wiki": false,
              "homepage": "https://www.particle.io/",
              "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://www.particle.io/",
                "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": "12 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 12
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 41,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "critical",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Dangerous-Workflow, Packaging, Token-Permissions. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "dangerous_workflow",
                    "packaging",
                    "token_permissions"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 26,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 15,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 3,
              "scorecard_aggregate": 2.6
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "binaries present in source code",
                "points": 6.8,
                "status": "partial",
                "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": "1 out of 2 merged PRs checked by a CI test -- score normalized to 5",
                "points": 1.2,
                "status": "partial",
                "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 2/15 approved changesets -- score normalized to 1",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 27 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "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 not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "50 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 600 resolved dependencies against OSV; 15 could not be assessed (no resolved version, an unsupported ecosystem, or beyond the reported package list). 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",
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 600
                }
              },
              {
                "code": "advisories_unassessed",
                "params": {
                  "count": 15
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 82,
              "affected_packages": 37,
              "assessed_packages": 600,
              "unassessed_packages": 15,
              "affected_by_severity": "critical 3, high 21, moderate 12, low 1",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "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 carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "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": 600,
              "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": 13
            },
            "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": 54,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "critical",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 8,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.14,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "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": "14 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 7.5,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 14,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 61,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [
                "bootloader/makefile",
                "bootloader/prebootloader/makefile",
                "bootloader/prebootloader/src/rtl872x/mbr/makefile",
                "bootloader/prebootloader/src/rtl872x/part1/makefile",
                "communication-dynalib/makefile",
                "communication/makefile",
                "communication/tests/UnitTest++/Makefile",
                "crypto-dynalib/makefile",
                "crypto/makefile",
                "dynalib/makefile",
                "gsm0710muxer/makefile",
                "hal-dynalib/makefile",
                "hal/makefile",
                "main/makefile",
                "makefile",
                "modules/argon/makefile",
                "modules/argon/system-part1/makefile",
                "modules/argon/user-part/makefile",
                "modules/b5som/makefile",
                "modules/b5som/system-part1/makefile",
                "modules/b5som/user-part/makefile",
                "modules/boron/makefile",
                "modules/boron/system-part1/makefile",
                "modules/boron/user-part/makefile",
                "modules/electron2/makefile",
                "modules/electron2/system-part1/makefile",
                "modules/electron2/user-part/makefile",
                "modules/makefile",
                "modules/msom/makefile",
                "modules/msom/system-part1/makefile",
                "modules/msom/user-part/makefile",
                "modules/tracker/makefile",
                "modules/tracker/system-part1/makefile",
                "modules/tracker/user-part/makefile",
                "modules/trackerm/makefile",
                "modules/trackerm/system-part1/makefile",
                "modules/trackerm/user-part/makefile",
                "modules/tron/makefile",
                "modules/tron/system-part1/makefile",
                "modules/tron/user-part/makefile",
                "newlib_nano/makefile",
                "platform/makefile",
                "proto_defs/makefile",
                "rt-dynalib/makefile",
                "services-dynalib/makefile",
                "services/makefile",
                "system-dynalib/makefile",
                "system/makefile",
                "third_party/ambd_sdk/makefile",
                "third_party/coremark/Makefile",
                "third_party/freertos/makefile",
                "third_party/libiperf/Makefile",
                "third_party/littlefs/makefile",
                "third_party/lwip/makefile",
                "third_party/mbedtls/makefile",
                "third_party/miniz/Makefile",
                "third_party/nanopb/makefile",
                "third_party/nrf5_sdk/makefile",
                "third_party/wiznet_driver/makefile",
                "user/makefile",
                "user/tests/reflection/makefile",
                "wiring/makefile",
                "wiring_globals/makefile"
              ],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "bootloader/makefile, bootloader/prebootloader/makefile, bootloader/prebootloader/src/rtl872x/mbr/makefile, bootloader/prebootloader/src/rtl872x/part1/makefile, communication-dynalib/makefile, communication/makefile, communication/tests/UnitTest++/Makefile, crypto-dynalib/makefile, crypto/makefile, dynalib/makefile, gsm0710muxer/makefile, hal-dynalib/makefile, hal/makefile, main/makefile, makefile, modules/argon/makefile, modules/argon/system-part1/makefile, modules/argon/user-part/makefile, modules/b5som/makefile, modules/b5som/system-part1/makefile, modules/b5som/user-part/makefile, modules/boron/makefile, modules/boron/system-part1/makefile, modules/boron/user-part/makefile, modules/electron2/makefile, modules/electron2/system-part1/makefile, modules/electron2/user-part/makefile, modules/makefile, modules/msom/makefile, modules/msom/system-part1/makefile, modules/msom/user-part/makefile, modules/tracker/makefile, modules/tracker/system-part1/makefile, modules/tracker/user-part/makefile, modules/trackerm/makefile, modules/trackerm/system-part1/makefile, modules/trackerm/user-part/makefile, modules/tron/makefile, modules/tron/system-part1/makefile, modules/tron/user-part/makefile, newlib_nano/makefile, platform/makefile, proto_defs/makefile, rt-dynalib/makefile, services-dynalib/makefile, services/makefile, system-dynalib/makefile, system/makefile, third_party/ambd_sdk/makefile, third_party/coremark/Makefile, third_party/freertos/makefile, third_party/libiperf/Makefile, third_party/littlefs/makefile, third_party/lwip/makefile, third_party/mbedtls/makefile, third_party/miniz/Makefile, third_party/nanopb/makefile, third_party/nrf5_sdk/makefile, third_party/wiznet_driver/makefile, user/makefile, user/tests/reflection/makefile, wiring/makefile, wiring_globals/makefile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "bootloader/makefile, bootloader/prebootloader/makefile, bootloader/prebootloader/src/rtl872x/mbr/makefile, bootloader/prebootloader/src/rtl872x/part1/makefile, communication-dynalib/makefile, communication/makefile, communication/tests/UnitTest++/Makefile, crypto-dynalib/makefile, crypto/makefile, dynalib/makefile, gsm0710muxer/makefile, hal-dynalib/makefile, hal/makefile, main/makefile, makefile, modules/argon/makefile, modules/argon/system-part1/makefile, modules/argon/user-part/makefile, modules/b5som/makefile, modules/b5som/system-part1/makefile, modules/b5som/user-part/makefile, modules/boron/makefile, modules/boron/system-part1/makefile, modules/boron/user-part/makefile, modules/electron2/makefile, modules/electron2/system-part1/makefile, modules/electron2/user-part/makefile, modules/makefile, modules/msom/makefile, modules/msom/system-part1/makefile, modules/msom/user-part/makefile, modules/tracker/makefile, modules/tracker/system-part1/makefile, modules/tracker/user-part/makefile, modules/trackerm/makefile, modules/trackerm/system-part1/makefile, modules/trackerm/user-part/makefile, modules/tron/makefile, modules/tron/system-part1/makefile, modules/tron/user-part/makefile, newlib_nano/makefile, platform/makefile, proto_defs/makefile, rt-dynalib/makefile, services-dynalib/makefile, services/makefile, system-dynalib/makefile, system/makefile, third_party/ambd_sdk/makefile, third_party/coremark/Makefile, third_party/freertos/makefile, third_party/libiperf/Makefile, third_party/littlefs/makefile, third_party/lwip/makefile, third_party/mbedtls/makefile, third_party/miniz/Makefile, third_party/nanopb/makefile, third_party/nrf5_sdk/makefile, third_party/wiznet_driver/makefile, user/makefile, user/tests/reflection/makefile, wiring/makefile, wiring_globals/makefile"
                    }
                  }
                ],
                "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "C++ (statically typed)",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "C++"
                    }
                  }
                ],
                "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": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "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": 99,
            "inputs": {
              "primary_language": "C++",
              "largest_source_bytes": 204872,
              "source_files_sampled": 2009,
              "oversized_source_files": 22
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "C++ (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "C++"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "22/2009 source files over 60KB",
                "points": 54.4,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 2009,
                      "oversized": 22
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "good",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": [
                "proto_defs/internal/ledger.proto",
                "proto_defs/internal/network_config.proto"
              ]
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": "proto_defs/internal/ledger.proto, proto_defs/internal/network_config.proto",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "proto_defs/internal/ledger.proto, proto_defs/internal/network_config.proto"
                    }
                  }
                ],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "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": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-27T18:12:51.078667Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/p/particle-iot/device-os.svg",
  "full_name": "particle-iot/device-os",
  "license_state": "standard",
  "license_spdx": "LGPL-3.0"
}

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.27.0 — metodología completa · wiki de métricas.

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