Public record
Software health reportschema 0.27.0 · metrics 1.13.0 · 2026-07-27 18:12 UTC

particle-iot / device-os

Device OS (Firmware) for Particle Devices

C++ · CLGPL-3.0★ 1,074 stars⑂ 528 forkssince Mar 2013View on GitHub ↗

particle-iot/device-os holds a health index of 70 out of 100, placing it in the Good band. It scores highest on Vitality (89/100) and lowest on Security (41/100). It was last updated 3 days ago. 3 contributors account for most of its recent work.

70
overall / 100
Good

Software health index

Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At risk ceiling of 49. AI Readiness sits outside the overall score.

70
Excellent85-100Exemplary; meets essentially all checked criteria
Good70-84Healthy; minor gaps
Moderate50-69Acceptable with notable gaps; review recommended
At risk30-49Significant weaknesses; adoption warrants caution
Critical1-29Severe problems (abandoned, single-maintainer, no hygiene)
VitalityCommunity &AdoptionSustainability &GovernanceEngineeringQualitySecurityAI Readiness

Score profile

Each axis is a category. The shape matters more than the average — a healthy subject fills the whole shape, while a spike-and-crater profile means strength in one dimension is masking risk in another.

Ownership

ParticleOrganization
188 followers379 public repossince Sep 2012

This repository is backed by an organization — shared, accountable stewardship that can outlive any single maintainer.

Metrics by category

Vitality

Is the project alive — is code being written and are releases shipping?

89Excellent · 22% of overall
How it's scored
36/36Push recency — last push 3 days ago
29.1/36Commit cadence — 42/52 weeks with commits
18/18Commit volume — 458 commits in the last year
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Inputs used
commits_last_year458
human_commit_share1
days_since_last_push3
active_weeks_last_year42
How it's scored
27/27Ships releases — 100 releases published
36/36Release recency — latest release 10 days ago
19.8/27Release cadence — a release every ~71.1 days
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Inputs used
releases_count100
latest_release_tagv6.5.0
releases_from_tagsno
days_since_latest_release10
mean_days_between_releases71.1

Community & Adoption

Does the project have users, downloads, attention, and a welcoming setup for contributors?

84Good · 18% of overall
How it's scored
49.2/60Stars — 1,074 stars
22.7/25Forks — 528 forks
11.8/15Watchers — 131 watchers
Inputs used
forks528
stars1,074
watchers131
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

Community health

85Excellent
How it's scored
22.5/22.5README
22.5/22.5License — recognized license (LGPL-3.0)
18/18CONTRIBUTING guide
0/13.5Code of conduct
7.2/7.2Issue template
6.3/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
has_contributingyes
has_issue_templateyes
has_code_of_conductno
has_pull_request_templateyes

Sustainability & Governance

Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?

71Good · 24% of overall
How it's scored
36/54Bus factor — 3 contributor(s) cover half of all commits
16.7/22.5Commit distribution — top contributor authored 26% of commits
13.5/13.5Contributor breadth — 74 contributors
10/10OpenSSF Scorecard: Contributors — project has 27 contributing companies or organizations
Inputs used
bus_factor3
contributors_sampled74
top_contributor_share0.256
How it's scored
0/46.8Issue resolution — no issues or no data
32.9/38.3PR acceptance — 1,643/1,908 decided PRs merged
1.5/15OpenSSF Scorecard: Code-Review — Found 2/15 approved changesets -- score normalized to 1
Inputs used
merged_prs1,643
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs265
Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.
How it's scored
30/30Ownership backing — organization-owned
0/20Verified domain
16.4/25Owner reach — 188 followers of particle-iot
25/25Track record — 379 public repos, account ~13 yr old
Inputs used
followers188
owner_typeOrganization
is_verified
owner_loginparticle-iot
public_repos379
account_age_days5,063

Engineering Quality

Are baseline engineering and documentation practices in place?

56Moderate · 20% of overall
How it's scored
0/24CI workflows
24/24Tests present
0/16Linter config
0/9.6Pre-commit hooks
0/6.4.editorconfig
10/20OpenSSF Scorecard: CI-Tests — 1 out of 2 merged PRs checked by a CI test -- score normalized to 5
Inputs used
has_cino
has_testsyes
has_editorconfigno
has_linter_configno
has_precommit_configno

Documentation

90Excellent
How it's scored
30/30README
25/25Documentation directory
15/15Documentation / homepage site — https://www.particle.io/
10/10Repository description
10/10Topics — 12 topics
0/10Wiki
Inputs used
topicsparticle, photon, electron, core, arduino, c, c-plus-plus, iot, p1, argon, boron, xenon
has_wikino
homepagehttps://www.particle.io/
has_readmeyes
has_docs_diryes
has_descriptionyes

Security

Are visible security and supply-chain practices strong, without unresolved high-risk jurisdiction exposure?

41At risk · 16% of overall
How it's scored
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 — no data
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5License — 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 — no data
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 — no data
0/7.5Vulnerabilities — 50 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate2.6
Excluded from scoring (no data or not applicable): dangerous_workflow, packaging, token_permissions. Remaining weights renormalized.
How it's scored
35/35Direct dependencies free of known advisories — no direct dependency carries a known advisory
0/25Indirect dependencies free of known advisories — transitive set not separable from development and test dependencies in this scope
0/40No advisories left outstanding — no advisory carries a publication date
Inputs used
sourceosv
advisories82
affected_packages37
assessed_packages600
unassessed_packages15
affected_by_severitycritical 3, high 21, moderate 12, low 1
direct_affected_packages0
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.

AI Readiness

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.

54Moderate · 0% of overall
How it's scored
0/45Agent instructions — no CLAUDE.md / AGENTS.md / editor rules
0/15Machine-readable docs (llms.txt)
7.5/40Legible commit history — 14 of 100 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share0.14
agent_instruction_files
agent_instruction_max_bytes
How it's scored
18/18One-command bootstrap — 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/22Automated tests
0/11Lint / format config
11/11Static type checking — C++ (statically typed)
10/10Reproducible environment — lockfile
0/10Demonstrated agent practice — no agent-authored commits among the last 100
0/8Automated maintenance — no automated dependency updates observed
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Inputs used
has_nixno
has_testsyes
lockfilespackage-lock.json
has_dockerfileno
typed_languageyes
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
How it's scored
45/45Type-checkable code — C++ (statically typed)
54.4/55Manageable file sizes — 22/2,009 source files over 60KB
Inputs used
primary_languageC++
largest_source_bytes204,872
source_files_sampled2,009
oversized_source_files22
How it's scored
40/40API schema (OpenAPI/GraphQL/proto) — proto_defs/internal/ledger.proto, proto_defs/internal/network_config.proto
0/20MCP server
40/40Runnable examples — examples
Inputs used
example_dirsexamples
has_mcp_signalno
api_schema_filesproto_defs/internal/ledger.proto, proto_defs/internal/network_config.proto

Key facts

1,074GitHub stars
74contributors
458commits, last 12 months
3days since last push
100releases
3bus factor
0open issues
package ecosystems

Data collection warnings

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

More detail

Star and fork history 0 ★ / 528 ⇿
0Stars
528Forks
99Releases

When each star and fork was added, collected from GitHub and bucketed by day. Cumulative growth sits directly above the daily additions it is made of, so the two read against each other: steady organic accretion looks nothing like an abrupt, short-lived burst. Where that difference is measurable, it is reported as growth authenticity.

010020030040050048492013-122020-022026-05
Major 5Minor 25Patch 28

Each point covers 12 days.

OpenSSF Scorecard 2.6 / 10
2.6aggregate

Independent, tool-agnostic security assessment from the open-source OpenSSF Scorecard. Each check rewards a security practice, not a specific vendor's tool. Checks Scorecard could not determine are marked n/a and excluded from the security score (never counted as zero).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/aDangerous-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/aPackagingpackaging 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/aToken-PermissionsNo tokens found
0Vulnerabilities50 existing vulnerabilities detected
All dependencies 615

Full resolved dependency set from the GitHub dependency graph: 0 direct and 615 indirect (transitive) packages. The transitive closure is complete when the repository commits a lockfile.

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

This repository publishes no package the index resolves, so its own dependency graph was assessed — 600 packages, which also include development and test pins that never ship: 37 carry known advisories, of which 0 are direct. 15 could not be assessed — no resolved version, an unsupported ecosystem, or beyond the reported package list.

PackageVersionRelationSeverityAdvisoriesFixed in
decompress4.2.1indirectcritical111.1.3
flatted3.3.3indirectcritical23.4.2
protobufjs6.11.4indirectcritical118.6.0
brace-expansion1.1.11indirecthigh45.0.8
brace-expansion1.1.12indirecthigh35.0.8
brace-expansion2.0.1indirecthigh45.0.8
brace-expansion2.0.2indirecthigh35.0.8
braces3.0.2indirecthigh13.0.3
form-data4.0.4indirecthigh14.0.6
http-cache-semantics3.8.1indirecthigh14.1.1
js-yaml3.14.1indirecthigh34.3.0
js-yaml4.1.0indirecthigh34.3.0
lodash4.17.21indirecthigh34.18.0
lodash4.17.23indirecthigh24.18.0
minimatch3.1.2indirecthigh310.2.3
minimatch4.2.1indirecthigh310.2.3
minimatch5.1.6indirecthigh310.2.3
minimatch9.0.5indirecthigh310.2.3
picomatch2.3.1indirecthigh24.0.4
serialize-javascript6.0.0indirecthigh37.0.5
tmp0.1.0indirecthigh20.2.6
tmp0.2.1indirecthigh20.2.6
tmp0.2.5indirecthigh10.2.6
uuid8.3.2indirecthigh113.0.1
@octokit/plugin-paginate-rest2.21.3indirectmoderate111.4.1
@octokit/request5.6.3indirectmoderate19.2.1
@octokit/request-error2.1.0indirectmoderate16.1.7
@protobufjs/utf81.1.0indirectmoderate18.0.2
ajv6.12.6indirectmoderate18.18.0
diff5.0.0indirectmoderate18.0.3
got8.3.2indirectmoderate112.1.0
ip-address9.0.5indirectmoderate110.1.1
micromatch4.0.5indirectmoderate14.0.8
nanoid3.3.1indirectmoderate15.0.9
qs6.11.2indirectmoderate36.15.2
qs6.14.0indirectmoderate36.15.2
@babel/core7.28.4indirectlow18.0.0-rc.6

An advisory means the version recorded in the dependency graph falls inside an advisory’s affected range. Reachability is not analysed, and the graph includes development and test pins — a finding may concern tooling rather than shipped software.

Raw JSON report machine-readable
{
  "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"
}

Scores are signals, not warranties. They reflect publicly visible practices on GitHub — not a code audit, and not a security guarantee.

Missing data is excluded and weights renormalized, never scored as zero. Methodology is versioned and open: metrics v1.13.0, schema v0.27.0 — full methodology · metrics wiki.

How one result sits in the wider record: aggregate statistics.