Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-23 12:41 UTC

ForestAdmin / forest-rails

💎 Ruby on Rails agent for Forest Admin to integrate directly to your existing Ruby on Rails backend application.

RubyGPL-3.0★ 385 Sterne⑂ 83 Forksseit Aug. 2015Auf GitHub ansehen ↗

ForestAdmin/forest-rails erreicht einen Gesundheitsindex von 71 von 100 und liegt damit im Bereich Gut. Am stärksten schneidet es bei Vitality (84/100) ab, am schwächsten bei AI Readiness (44/100). Zuletzt heute aktualisiert. 2 Mitwirkende tragen den Großteil der jüngsten Arbeit.

71
gesamt / 100
Gut

Software-Gesundheitsindex

Metriken werden auf einer Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr Mittel; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze 49 (Gefährdet). AI Readiness liegt außerhalb.

71
Exzellent85-100Vorbildlich; erfüllt im Wesentlichen alle geprüften Kriterien
Gut70-84Gesund; geringfügige Lücken
Mittel50-69Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Gefährdet30-49Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-29Schwerwiegende Probleme (aufgegeben, nur ein Maintainer, keine Hygiene)
VitalitätCommunity &VerbreitungNachhaltigkeit &GovernanceEngineering-QualitätSicherheitAI Readiness

Bewertungsprofil

Jede Achse ist eine Kategorie. Die Form zählt mehr als der Durchschnitt — ein gesundes Projekt füllt die gesamte Fläche, während ein Profil aus Spitzen und Kratern bedeutet, dass Stärke in einer Dimension Risiken in einer anderen verdeckt.

Eigentümerschaft

ForestAdminOrganisation
85 Follower87 öffentliche Reposseit Aug. 2015

Dieses Repository wird von einer Organisation getragen — geteilte, rechenschaftspflichtige Trägerschaft, die jeden einzelnen Maintainer überdauern kann.

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlicht
RubyGemsforest_liana9.20.1-538vor 0 Tagen

Metriken nach Kategorie

Vitalität

Lebt das Projekt — wird Code geschrieben und werden Releases ausgeliefert?

84Gut · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 0 Tagen
11.8/36Commit-Rhythmus — 17/52 Wochen mit Commits
15.8/18Commit-Volumen — 57 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 25 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year57
human_commit_share1
days_since_last_push0
active_weeks_last_year17

Release-Disziplin

100Exzellent
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 100 Releases veröffentlicht
36/36Release-Aktualität — letztes Release vor 0 Tagen
27/27Release-Rhythmus — ein Release etwa alle 7 Tage
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count100
latest_release_tagv9.20.1
releases_from_tagsnein
days_since_latest_release0
mean_days_between_releases7
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Signed-Releases. Die verbleibenden Gewichte wurden renormalisiert.

Community & Verbreitung

Hat das Projekt Nutzer, Downloads, Aufmerksamkeit und ein einladendes Umfeld für Beitragende?

69Mittel · 18 % des Gesamtindex
Wie die Bewertung erfolgt
41.9/60Stars — 385 Stars
16/25Forks — 83 Forks
5.8/15Watcher — 12 Watcher
Verwendete Eingangsdaten
forks83
stars385
watchers12
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
22.5/22.5Lizenz — anerkannte Lizenz (GPL-3.0)
0/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
7.2/7.2Issue-Vorlage
6.3/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
has_contributingnein
has_issue_templateja
has_code_of_conductnein
has_pull_request_templateja
Wie die Bewertung erfolgt
67/80Downloads gesamt — 2.777.110 Downloads insgesamt über rubygems
0/20Abhängige in der Registry — von diesem Ökosystem nicht ausgewiesen
Verwendete Eingangsdaten
packagesforest_liana
dependents
ecosystemsrubygems
total_downloads2.777.110
monthly_downloads
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Abhängige in der Registry. Die verbleibenden Gewichte wurden renormalisiert.

Nachhaltigkeit & Governance

Überdauert das Projekt die Menschen, die es tragen — Bus-Faktor, Reaktionsfähigkeit, Trägerschaft und Paketpflege?

74Gut · 24 % des Gesamtindex
Wie die Bewertung erfolgt
25.2/54Bus-Faktor — 2 Beitragende decken die Hälfte aller Commits ab
14.3/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 36 % der Commits
13.5/13.5Breite der Beitragenden — 51 Beitragende
10/10OpenSSF Scorecard: Contributors — project has 8 contributing companies or organizations
Verwendete Eingangsdaten
bus_factor2
contributors_sampled51
top_contributor_share0,364
Wie die Bewertung erfolgt
31.6/46.8Issue-Lösungsquote — 68 % der Issues geschlossen
33.5/38.3PR-Annahme — 531/607 entschiedene PRs gemergt
7.5/15OpenSSF Scorecard: Code-Review — Found 14/27 approved changesets -- score normalized to 5
Verwendete Eingangsdaten
merged_prs531
open_issues49
closed_issues102
issue_closed_ratio0,675
closed_unmerged_prs76
Wie die Bewertung erfolgt
30/30Organisatorische Trägerschaft — im Besitz einer Organisation
0/20Verifizierte Domain
13.9/25Reichweite des Inhabers — 85 Follower von ForestAdmin
25/25Kontohistorie — 87 öffentliche Repos, Kontoalter ca. 10 Jahre
Verwendete Eingangsdaten
followers85
owner_typeOrganization
is_verified
owner_loginForestAdmin
public_repos87
account_age_days4.003

Paketpflege

100Exzellent
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 1 Paket(e) auf rubygems
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 0 Tagen
20/20Versionshistorie — 538 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packagesforest_liana
ecosystemsrubygems
any_deprecatednein
min_days_since_publish0

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

67Mittel · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 1 Workflow(s)
24/24Tests vorhanden
0/16Linter-Konfiguration
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 14 out of 14 merged PRs checked by a CI test -- score normalized to 10
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_confignein
has_precommit_confignein
Wie die Bewertung erfolgt
30/30README
0/25Dokumentationsverzeichnis
15/15Dokumentations-/Homepage-Site — https://www.forestadmin.com
10/10Repository-Beschreibung
10/10Topics — 9 Topics
0/10Wiki
Verwendete Eingangsdaten
topicsadmin, rails, gem, admin-panel, internal-tool, ruby, ruby-on-rails, backend, backend-api
has_wikinein
homepagehttps://www.forestadmin.com
has_readmeja
has_docs_dirnein
has_descriptionja

Sicherheit

Sind die sichtbaren Sicherheits- und Lieferkettenpraktiken belastbar, ohne ungeklärte Exposition gegenüber Hochrisikojurisdiktionen?

55Mittel · 16 % des Gesamtindex
Wie die Bewertung erfolgt
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — keine Daten
2.5/2.5CI-Tests — 14 out of 14 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
3.8/7.5Code-Review — Found 14/27 approved changesets -- score normalized to 5
2.5/2.5Contributors — project has 8 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Lizenz — license file detected
7.5/7.5Maintained — 25 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — keine Daten
0.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 1
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — keine Daten
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 99 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate5,8
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): branch_protection, packaging, signed_releases. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
6.9/35Direkte Abhängigkeiten ohne bekannte Advisories — 5 betroffen: concurrent-ruby 1.3.4 (high 7.5), httparty 0.21.0 (high 8.2), json 2.15.1 (high 8.2), +2 weitere
0/25Indirekte Abhängigkeiten ohne bekannte Advisories — transitive Menge in diesem Bereich nicht von Entwicklungs- und Test-Abhängigkeiten trennbar
25.4/40Keine offenen Advisories — 3 Paket(e) mit Advisory seit über 90 Tagen unbehandelt; ältestes vor 211 Tagen veröffentlicht
Verwendete Eingangsdaten
sourceosv
advisories110
affected_packages37
assessed_packages718
unassessed_packages14
affected_by_severitycritical 2, high 20, moderate 11, low 4
direct_affected_packages5
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Indirekte Abhängigkeiten ohne bekannte Advisories. Die verbleibenden Gewichte wurden renormalisiert. 718 aufgelöste Abhängigkeiten wurden mit OSV abgeglichen. 14 konnten nicht bewertet werden — keine aufgelöste Version, ein nicht unterstütztes Ökosystem oder außerhalb der ausgewiesenen Paketliste. Dieses Repository veröffentlicht kein Paket, das der Index auflöst; bewertet wurde daher der Abhängigkeitsgraph des Repositorys. Dieser Graph vermischt Entwicklungs- und Test-Pins mit ausgelieferten Abhängigkeiten, daher werden nur die deklarierten Laufzeit-Abhängigkeiten bewertet; transitive Befunde werden als Kontext ausgewiesen und fließen nicht in die Bewertung ein. Erreichbarkeit wird nicht analysiert.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Ein unabhängiges, experimentelles Badge — Gewicht 0,0, es wird eigenständig ausgewiesen und verändert den Gesamt-Gesundheitswert nicht.

44Gefährdet · 0 % des Gesamtindex
Wie die Bewertung erfolgt
0/45Agentenanweisungen — keine CLAUDE.md / AGENTS.md / Editor-Regeln
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 100 von 100 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share1
agent_instruction_files
agent_instruction_max_bytes
Wie die Bewertung erfolgt
0/18Bootstrap mit einem Befehl
22/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
0/11Statische Typprüfung
10/10Reproduzierbare Umgebung — lockfile
10/10Belegte Agentenpraxis — 10 der letzten 100 Commits von Agenten verfasst oder ihnen zugeschrieben
0/8Automatisierte Wartung — keine automatisierten Abhängigkeits-Updates beobachtet
1/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 1
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfilesGemfile.lock, yarn.lock
has_dockerfilenein
typed_languagenein
bootstrap_files
has_devcontainernein
has_linter_confignein
typecheck_configs
agent_commit_share0,1
toolchain_manifests
dependency_bot_commit_share0
Wie die Bewertung erfolgt
0/45Typprüfbarer Code — Ruby ohne Typprüfungs-Konfiguration
55/55Handhabbare Dateigrößen — 0/288 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageRuby
largest_source_bytes27.760
source_files_sampled288
oversized_source_files0

Eckdaten

385GitHub-Sterne
51Mitwirkende
57Commits, letzte 12 Monate
0Tage seit letztem Push
100Releases
2Bus-Faktor
49offene Issues
npm, RubyGemsPaket-Ökosysteme

Warnungen zur Datenerhebung

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch npm package 'forest-rails' from its registry

Weitere Details

Stern- und Fork-Verlauf 0 ★ / 83 ⇿
0Sterne
83Forks
88Releases

Wann jeder Stern und Fork hinzugefügt wurde, von GitHub erfasst und nach Tagen gruppiert. Das kumulierte Wachstum steht direkt über den täglichen Zugängen, aus denen es besteht, sodass beide gegeneinander lesbar sind: stetiger organischer Zuwachs sieht ganz anders aus als ein abrupter, kurzlebiger Ausschlag. Wo dieser Unterschied messbar ist, wird er als Wachstumsauthentizität ausgewiesen.

0204060801008332016-092021-052026-01
Major 0Minor 17Patch 71

Jeder Punkt umfasst 9 Tage.

OpenSSF Scorecard 5.8 / 10
5.8Gesamtwert

Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).Scorecard v5.5.0 · 2026-07-23 12:40 UTC

10Binary-Artifactsno binaries found in the repo
k. A.Branch-Protectioninternal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
10CI-Tests14 out of 14 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
5Code-ReviewFound 14/27 approved changesets -- score normalized to 5
10Contributorsproject has 8 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained25 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
k. A.Packagingpackaging workflow not detected
1Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 1
0SASTSAST tool is not run on all commits -- score normalized to 0
10Security-Policysecurity policy file detected
k. A.Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities99 existing vulnerabilities detected
Direkte Abhängigkeiten 15
RegistryPaketVersionsvorgabeManifest
RubyGemsrails6.1.7.9Gemfile
RubyGemsconcurrent-ruby1.3.4Gemfile
RubyGemsforestadmin-jsonapi-serializersGemfile
RubyGemsrack-corsGemfile
RubyGemsgroupdate5.2.2Gemfile
RubyGemsuseragentGemfile
RubyGemsjwtGemfile
RubyGemsbcryptGemfile
RubyGemshttparty0.21.0Gemfile
RubyGemsipaddress0.8.3Gemfile
RubyGemsopenid_connect1.4.2Gemfile
RubyGemsjsonGemfile
RubyGemsjson-jwt>= 1.16Gemfile
RubyGemsdeepsortGemfile
RubyGemsostructGemfile
Alle Abhängigkeiten 732

Vollständig aufgelöster Abhängigkeitssatz aus dem GitHub-Abhängigkeitsgraphen: 28 direkte und 704 indirekte (transitive) Pakete. Die transitive Hülle ist vollständig, wenn das Repository eine Lockfile eincheckt.

RegistryPaketVersionBeziehung
RubyGemsbcryptdirekt
RubyGemsbcrypt3.1.20direkt
RubyGemsconcurrent-ruby1.3.4direkt
RubyGemsdeepsortdirekt
RubyGemsdeepsort0.5.0direkt
RubyGemsforestadmin-jsonapi-serializersdirekt
RubyGemsforestadmin-jsonapi-serializers2.0.0.pre.beta.2direkt
RubyGemsgroupdatedirekt
RubyGemsgroupdate5.2.2direkt
RubyGemshttpartydirekt
RubyGemshttparty0.21.0direkt
RubyGemsipaddressdirekt
RubyGemsipaddress0.8.3direkt
RubyGemsjsondirekt
RubyGemsjson2.15.1direkt
RubyGemsjson-jwtdirekt
RubyGemsjson-jwt1.17.0direkt
RubyGemsjwtdirekt
RubyGemsjwt3.1.2direkt
RubyGemsopenid_connect1.4.2direkt
RubyGemsostructdirekt
RubyGemsostruct0.6.3direkt
RubyGemsrack-corsdirekt
RubyGemsrack-cors2.0.2direkt
RubyGemsrailsdirekt
RubyGemsrails6.1.7.9direkt
RubyGemsuseragentdirekt
RubyGemsuseragent0.16.11direkt
npm@babel/code-frame7.8.3indirekt
npm@babel/helper-validator-identifier7.9.5indirekt
npm@babel/highlight7.9.0indirekt
npm@colors/colors1.5.0indirekt
npm@commitlint/cli17.4.2indirekt
npm@commitlint/config-conventional17.4.2indirekt
npm@commitlint/config-validator17.8.1indirekt
npm@commitlint/ensure17.8.1indirekt
npm@commitlint/execute-rule17.8.1indirekt
npm@commitlint/format17.8.1indirekt
npm@commitlint/is-ignored17.8.1indirekt
npm@commitlint/lint17.8.1indirekt
npm@commitlint/load17.8.1indirekt
npm@commitlint/message17.8.1indirekt
npm@commitlint/parse17.8.1indirekt
npm@commitlint/read17.8.1indirekt
npm@commitlint/resolve-extends17.8.1indirekt
npm@commitlint/rules17.8.1indirekt
npm@commitlint/to-lines17.8.1indirekt
npm@commitlint/top-level17.8.1indirekt
npm@commitlint/types17.8.1indirekt
npm@cspotcode/source-map-support0.8.1indirekt
npm@gar/promisify1.1.3indirekt
npm@isaacs/string-locale-compare1.1.0indirekt
npm@jridgewell/resolve-uri3.1.2indirekt
npm@jridgewell/sourcemap-codec1.4.15indirekt
npm@jridgewell/trace-mapping0.3.9indirekt
npm@nodelib/fs.scandir2.1.5indirekt
npm@nodelib/fs.stat2.0.5indirekt
npm@nodelib/fs.walk1.2.8indirekt
npm@npmcli/arborist5.6.3indirekt
npm@npmcli/ci-detect2.0.0indirekt
npm@npmcli/config4.2.2indirekt
npm@npmcli/disparity-colors2.0.0indirekt
npm@npmcli/fs2.1.0indirekt
npm@npmcli/fs2.1.2indirekt
npm@npmcli/git3.0.1indirekt
npm@npmcli/installed-package-contents1.0.7indirekt
npm@npmcli/map-workspaces2.0.3indirekt
npm@npmcli/metavuln-calculator3.1.0indirekt
npm@npmcli/move-file2.0.0indirekt
npm@npmcli/name-from-folder1.0.1indirekt
npm@npmcli/node-gyp2.0.0indirekt
npm@npmcli/package-json2.0.0indirekt
npm@npmcli/promise-spawn3.0.0indirekt
npm@npmcli/query1.2.0indirekt
npm@npmcli/run-script3.0.2indirekt
npm@npmcli/run-script4.2.1indirekt
npm@octokit/auth-token2.5.0indirekt
npm@octokit/core3.6.0indirekt
npm@octokit/endpoint6.0.12indirekt
npm@octokit/graphql4.8.0indirekt
npm@octokit/openapi-types11.2.0indirekt
npm@octokit/plugin-paginate-rest2.17.0indirekt
npm@octokit/plugin-request-log1.0.4indirekt
npm@octokit/plugin-rest-endpoint-methods5.13.0indirekt
npm@octokit/request5.6.3indirekt
npm@octokit/request-error2.1.0indirekt
npm@octokit/rest18.12.0indirekt
npm@octokit/types6.34.0indirekt
npm@semantic-release/changelog6.0.1indirekt
npm@semantic-release/commit-analyzer9.0.2indirekt
npm@semantic-release/error2.2.0indirekt
npm@semantic-release/error3.0.0indirekt
npm@semantic-release/exec6.0.3indirekt
npm@semantic-release/git10.0.1indirekt
npm@semantic-release/github8.0.4indirekt
npm@semantic-release/npm9.0.1indirekt
npm@semantic-release/release-notes-generator10.0.3indirekt
npm@tootallnate/once2.0.0indirekt
npm@tsconfig/node101.0.9indirekt
npm@tsconfig/node121.0.11indirekt
npm@tsconfig/node141.0.3indirekt
npm@tsconfig/node161.0.4indirekt
npm@types/color-name1.1.1indirekt
npm@types/mdast3.0.10indirekt
npm@types/minimist1.2.2indirekt
npm@types/node20.5.1indirekt
npm@types/normalize-package-data2.4.1indirekt
npm@types/parse-json4.0.0indirekt
npm@types/retry0.12.0indirekt
npm@types/unist2.0.6indirekt
npmabbrev1.1.1indirekt
npmacorn8.11.3indirekt
npmacorn-walk8.3.2indirekt
npmagent-base6.0.2indirekt
npmagentkeepalive4.2.1indirekt
npmaggregate-error3.1.0indirekt
npmajv8.12.0indirekt
npmansi-escapes5.0.0indirekt
npmansi-regex5.0.1indirekt
npmansi-styles3.2.1indirekt
npmansi-styles4.2.1indirekt
npmansi-styles4.3.0indirekt
npmansicolors0.3.2indirekt
npmaproba2.0.0indirekt
npmarchy1.0.0indirekt
npmare-we-there-yet3.0.0indirekt
npmarg4.1.3indirekt
npmargparse2.0.1indirekt
npmargv-formatter1.0.0indirekt
npmarray-ify1.0.0indirekt
npmarray-union2.1.0indirekt
npmarrify1.0.1indirekt
npmasap2.0.6indirekt
npmat-least-node1.0.0indirekt
npmbail1.0.5indirekt
npmbalanced-match1.0.2indirekt
npmbefore-after-hook2.2.2indirekt
npmbin-links3.0.3indirekt
npmbinary-extensions2.2.0indirekt
npmbottleneck2.19.5indirekt
npmbrace-expansion1.1.11indirekt
npmbrace-expansion2.0.1indirekt
npmbraces3.0.3indirekt
npmbuiltins5.0.1indirekt
npmcacache16.0.7indirekt
npmcacache16.1.3indirekt
npmcallsites3.1.0indirekt
npmcamelcase5.3.1indirekt
npmcamelcase-keys6.2.2indirekt
npmcardinal2.1.1indirekt
npmccount1.1.0indirekt
npmchalk2.4.2indirekt
npmchalk4.0.0indirekt
npmchalk4.1.2indirekt
npmchalk5.0.1indirekt
npmcharacter-entities1.2.4indirekt
npmcharacter-entities-legacy1.1.4indirekt
npmcharacter-reference-invalid1.1.4indirekt
npmchownr2.0.0indirekt
npmcidr-regex3.1.1indirekt
npmclean-stack2.2.0indirekt
npmcli-columns4.0.0indirekt
npmcli-table30.6.2indirekt
npmcliui7.0.4indirekt
npmcliui8.0.1indirekt
npmclone1.0.4indirekt
npmcmd-shim5.0.0indirekt
npmcolor-convert1.9.3indirekt
npmcolor-convert2.0.1indirekt
npmcolor-name1.1.3indirekt
npmcolor-name1.1.4indirekt
npmcolor-support1.1.3indirekt
npmcolumnify1.6.0indirekt
npmcommon-ancestor-path1.0.1indirekt
npmcompare-func2.0.0indirekt
npmconcat-map0.0.1indirekt
npmconsole-control-strings1.1.0indirekt
npmconventional-changelog-angular5.0.12indirekt
npmconventional-changelog-angular6.0.0indirekt
npmconventional-changelog-conventionalcommits5.0.0indirekt
npmconventional-changelog-writer5.0.1indirekt
npmconventional-commits-filter2.0.7indirekt
npmconventional-commits-parser3.2.4indirekt
npmconventional-commits-parser4.0.0indirekt
npmcore-util-is1.0.2indirekt
npmcosmiconfig7.0.0indirekt
npmcosmiconfig8.3.6indirekt
npmcosmiconfig-typescript-loader4.4.0indirekt
npmcreate-require1.1.1indirekt
npmcross-spawn7.0.6indirekt
npmcrypto-random-string2.0.0indirekt
npmcssesc3.0.0indirekt
npmdargs7.0.0indirekt
npmdateformat3.0.3indirekt
npmdebug4.3.4indirekt
npmdebuglog1.0.1indirekt
npmdecamelize1.2.0indirekt
npmdecamelize-keys1.1.0indirekt
npmdeep-extend0.6.0indirekt
npmdefaults1.0.3indirekt
npmdel6.0.0indirekt
npmdelegates1.0.0indirekt
npmdepd1.1.2indirekt
npmdeprecation2.3.1indirekt
npmdezalgo1.0.4indirekt
npmdiff4.0.2indirekt
npmdiff5.2.0indirekt
npmdir-glob3.0.1indirekt
npmdot-prop5.3.0indirekt
npmduplexer20.1.4indirekt
npmemoji-regex8.0.0indirekt
npmencoding0.1.13indirekt
npmend-of-stream1.4.4indirekt
npmenv-ci5.5.0indirekt
npmenv-paths2.2.1indirekt
npmerr-code2.0.3indirekt
npmerror-ex1.3.2indirekt
npmescalade3.1.1indirekt
npmescape-string-regexp1.0.5indirekt
npmescape-string-regexp4.0.0indirekt
npmesprima4.0.1indirekt
npmexeca4.1.0indirekt
npmexeca5.1.1indirekt
npmexponential-backoff3.1.1indirekt
npmextend3.0.2indirekt
npmfast-deep-equal3.1.3indirekt
npmfast-glob3.2.11indirekt
npmfastest-levenshtein1.0.12indirekt
npmfastq1.13.0indirekt
npmfigures2.0.0indirekt
npmfigures3.2.0indirekt
npmfill-range7.1.1indirekt
npmfind-up2.1.0indirekt
npmfind-up4.1.0indirekt
npmfind-up5.0.0indirekt
npmfind-versions4.0.0indirekt
npmfrom22.3.0indirekt
npmfromentries1.3.2indirekt
npmfs-extra10.1.0indirekt
npmfs-extra11.2.0indirekt
npmfs-extra9.0.0indirekt
npmfs-extra9.1.0indirekt
npmfs-minipass2.1.0indirekt
npmfs.realpath1.0.0indirekt
npmfunction-bind1.1.1indirekt
npmgauge4.0.4indirekt
npmget-caller-file2.0.5indirekt
npmget-stream5.2.0indirekt
npmget-stream6.0.1indirekt
npmgit-log-parser1.2.0indirekt
npmgit-raw-commits2.0.11indirekt
npmglob7.2.0indirekt
npmglob8.0.1indirekt
npmglob-parent5.1.2indirekt
npmglobal-dirs0.1.1indirekt
npmglobby11.1.0indirekt
npmgraceful-fs4.2.10indirekt
npmgraceful-fs4.2.3indirekt
npmgraceful-fs4.2.4indirekt
npmhandlebars4.7.7indirekt
npmhard-rejection2.1.0indirekt
npmhas1.0.3indirekt
npmhas-flag3.0.0indirekt
npmhas-flag4.0.0indirekt
npmhas-unicode2.0.1indirekt
npmhook-std2.0.0indirekt
npmhosted-git-info2.8.9indirekt
npmhosted-git-info4.1.0indirekt
npmhosted-git-info5.0.0indirekt
npmhosted-git-info5.2.1indirekt
npmhttp-cache-semantics4.1.1indirekt
npmhttp-proxy-agent5.0.0indirekt
npmhttps-proxy-agent5.0.1indirekt
npmhuman-signals1.1.1indirekt
npmhuman-signals2.1.0indirekt
npmhumanize-ms1.2.1indirekt
npmhusky7.0.0indirekt
npmiconv-lite0.6.3indirekt
npmignore5.2.0indirekt
npmignore-walk5.0.1indirekt
npmimport-fresh3.2.1indirekt
npmimport-fresh3.2.2indirekt
npmimport-fresh3.3.0indirekt
npmimport-from4.0.0indirekt
npmimurmurhash0.1.4indirekt
npmindent-string4.0.0indirekt
npminfer-owner1.0.4indirekt
npminflight1.0.6indirekt
npminherits2.0.4indirekt
npmini1.3.8indirekt
npmini3.0.0indirekt
npmini3.0.1indirekt
npminit-package-json3.0.2indirekt
npminto-stream6.0.0indirekt
npmip1.1.9indirekt
npmip-regex4.3.0indirekt
npmis-alphabetical1.0.4indirekt
npmis-alphanumerical1.0.4indirekt
npmis-arrayish0.2.1indirekt
npmis-buffer2.0.5indirekt
npmis-cidr4.0.2indirekt
npmis-core-module2.9.0indirekt
npmis-decimal1.0.4indirekt
npmis-extglob2.1.1indirekt
npmis-fullwidth-code-point3.0.0indirekt
npmis-glob4.0.3indirekt
npmis-hexadecimal1.0.4indirekt
npmis-lambda1.0.1indirekt
npmis-number7.0.0indirekt
npmis-obj2.0.0indirekt
npmis-path-cwd2.2.0indirekt
npmis-path-inside3.0.3indirekt
npmis-plain-obj1.1.0indirekt
npmis-plain-obj2.1.0indirekt
npmis-plain-object5.0.0indirekt
npmis-stream2.0.1indirekt
npmis-text-path1.0.1indirekt
npmisarray1.0.0indirekt
npmisexe2.0.0indirekt
npmissue-parser6.0.0indirekt
npmjava-properties1.0.2indirekt
npmjs-tokens4.0.0indirekt
npmjs-yaml4.1.0indirekt
npmjson-parse-better-errors1.0.2indirekt
npmjson-parse-even-better-errors2.3.1indirekt
npmjson-schema-traverse1.0.0indirekt
npmjson-stringify-nice1.1.4indirekt
npmjson-stringify-safe5.0.1indirekt
npmjsonfile6.0.1indirekt
npmjsonparse1.3.1indirekt
npmJSONStream1.3.5indirekt
npmjust-diff5.0.2indirekt
npmjust-diff-apply5.2.0indirekt
npmkind-of6.0.3indirekt
npmlibnpmaccess6.0.4indirekt
npmlibnpmdiff4.0.5indirekt
npmlibnpmexec4.0.14indirekt
npmlibnpmfund3.0.5indirekt
npmlibnpmhook8.0.4indirekt
npmlibnpmorg4.0.4indirekt
npmlibnpmpack4.1.3indirekt
npmlibnpmpublish6.0.5indirekt
npmlibnpmsearch5.0.4indirekt
npmlibnpmteam4.0.4indirekt
npmlibnpmversion3.0.7indirekt
npmlines-and-columns1.1.6indirekt
npmload-json-file4.0.0indirekt
npmlocate-path2.0.0indirekt
npmlocate-path5.0.0indirekt
npmlocate-path6.0.0indirekt
npmlodash4.17.21indirekt
npmlodash.camelcase4.3.0indirekt
npmlodash.capitalize4.2.1indirekt
npmlodash.escaperegexp4.1.2indirekt
npmlodash.isfunction3.0.9indirekt
npmlodash.ismatch4.4.0indirekt
npmlodash.isplainobject4.0.6indirekt
npmlodash.isstring4.0.1indirekt
npmlodash.kebabcase4.1.1indirekt
npmlodash.merge4.6.2indirekt
npmlodash.mergewith4.6.2indirekt
npmlodash.snakecase4.1.1indirekt
npmlodash.startcase4.4.0indirekt
npmlodash.uniq4.5.0indirekt
npmlodash.uniqby4.7.0indirekt
npmlodash.upperfirst4.3.1indirekt
npmlongest-streak2.0.4indirekt
npmlru-cache6.0.0indirekt
npmlru-cache7.9.0indirekt
npmmake-error1.3.6indirekt
npmmake-fetch-happen10.1.3indirekt
npmmake-fetch-happen10.2.1indirekt
npmmap-obj1.0.1indirekt
npmmap-obj4.3.0indirekt
npmmarkdown-table2.0.0indirekt
npmmarked4.0.15indirekt
npmmarked-terminal5.1.1indirekt
npmmdast-util-find-and-replace1.1.1indirekt
npmmdast-util-from-markdown0.8.5indirekt
npmmdast-util-gfm0.1.2indirekt
npmmdast-util-gfm-autolink-literal0.1.3indirekt
npmmdast-util-gfm-strikethrough0.2.3indirekt
npmmdast-util-gfm-table0.1.6indirekt
npmmdast-util-gfm-task-list-item0.1.6indirekt
npmmdast-util-to-markdown0.6.5indirekt
npmmdast-util-to-string2.0.0indirekt
npmmeow8.1.2indirekt
npmmerge-stream2.0.0indirekt
npmmerge21.4.1indirekt
npmmicromark2.11.4indirekt
npmmicromark-extension-gfm0.3.3indirekt
npmmicromark-extension-gfm-autolink-literal0.5.7indirekt
npmmicromark-extension-gfm-strikethrough0.6.5indirekt
npmmicromark-extension-gfm-table0.4.3indirekt
npmmicromark-extension-gfm-tagfilter0.3.0indirekt
npmmicromark-extension-gfm-task-list-item0.3.3indirekt
npmmicromatch4.0.8indirekt
npmmime3.0.0indirekt
npmmimic-fn2.1.0indirekt
npmmin-indent1.0.1indirekt
npmminimatch3.1.2indirekt
npmminimatch5.0.1indirekt
npmminimatch5.1.6indirekt
npmminimist1.2.6indirekt
npmminimist1.2.8indirekt
npmminimist-options4.1.0indirekt
npmminipass3.1.6indirekt
npmminipass5.0.0indirekt
npmminipass-collect1.0.2indirekt
npmminipass-fetch2.1.0indirekt
npmminipass-flush1.0.5indirekt
npmminipass-json-stream1.0.1indirekt
npmminipass-pipeline1.2.4indirekt
npmminipass-sized1.0.3indirekt
npmminizlib2.1.2indirekt
npmmkdirp1.0.4indirekt
npmmkdirp-infer-owner2.0.0indirekt
npmmodify-values1.0.1indirekt
npmms2.1.2indirekt
npmms2.1.3indirekt
npmmute-stream0.0.8indirekt
npmnegotiator0.6.3indirekt
npmneo-async2.6.2indirekt
npmnerf-dart1.0.0indirekt
npmnode-emoji1.11.0indirekt
npmnode-fetch2.6.7indirekt
npmnode-gyp9.0.0indirekt
npmnode-gyp9.4.1indirekt
npmnopt5.0.0indirekt
npmnopt6.0.0indirekt
npmnormalize-package-data2.5.0indirekt
npmnormalize-package-data3.0.3indirekt
npmnormalize-package-data4.0.0indirekt
npmnormalize-url6.1.0indirekt
npmnpm8.19.4indirekt
npmnpm-audit-report3.0.0indirekt
npmnpm-bundled1.1.2indirekt
npmnpm-bundled2.0.1indirekt
npmnpm-install-checks5.0.0indirekt
npmnpm-normalize-package-bin1.0.1indirekt
npmnpm-normalize-package-bin2.0.0indirekt
npmnpm-package-arg9.0.2indirekt
npmnpm-package-arg9.1.2indirekt
npmnpm-packlist5.0.3indirekt
npmnpm-packlist5.1.3indirekt
npmnpm-pick-manifest7.0.1indirekt
npmnpm-pick-manifest7.0.2indirekt
npmnpm-profile6.2.1indirekt
npmnpm-registry-fetch13.1.1indirekt
npmnpm-registry-fetch13.3.1indirekt
npmnpm-run-path4.0.1indirekt
npmnpm-user-validate1.0.1indirekt
npmnpmlog6.0.2indirekt
npmonce1.4.0indirekt
npmonetime5.1.2indirekt
npmopener1.5.2indirekt
npmp-each-series2.2.0indirekt
npmp-filter2.1.0indirekt
npmp-is-promise3.0.0indirekt
npmp-limit1.3.0indirekt
npmp-limit2.3.0indirekt
npmp-limit3.1.0indirekt
npmp-locate2.0.0indirekt
npmp-locate4.1.0indirekt
npmp-locate5.0.0indirekt
npmp-map2.1.0indirekt
npmp-map4.0.0indirekt
npmp-reduce2.1.0indirekt
npmp-retry4.6.2indirekt
npmp-try1.0.0indirekt
npmp-try2.2.0indirekt
npmpacote13.3.0indirekt
npmpacote13.6.2indirekt
npmparent-module1.0.1indirekt
npmparse-conflict-json2.0.2indirekt
npmparse-entities2.0.0indirekt
npmparse-json4.0.0indirekt
npmparse-json5.0.0indirekt
npmparse-json5.2.0indirekt
npmpath-exists3.0.0indirekt
npmpath-exists4.0.0indirekt
npmpath-is-absolute1.0.1indirekt
npmpath-key3.1.1indirekt
npmpath-parse1.0.7indirekt
npmpath-type4.0.0indirekt
npmpicomatch2.3.1indirekt
npmpify3.0.0indirekt
npmpkg-conf2.1.0indirekt
npmpostcss-selector-parser6.0.15indirekt
npmproc-log2.0.1indirekt
npmprocess-nextick-args2.0.1indirekt
npmpromise-all-reject-late1.0.1indirekt
npmpromise-call-limit1.0.1indirekt
npmpromise-inflight1.0.1indirekt
npmpromise-retry2.0.1indirekt
npmpromzard0.3.0indirekt
npmpump3.0.0indirekt
npmpunycode2.3.1indirekt
npmq1.5.1indirekt
npmqrcode-terminal0.12.0indirekt
npmqueue-microtask1.2.3indirekt
npmquick-lru4.0.1indirekt
npmrc1.2.8indirekt
npmread1.0.7indirekt
npmread-cmd-shim3.0.0indirekt
npmread-package-json5.0.1indirekt
npmread-package-json5.0.2indirekt
npmread-package-json-fast2.0.3indirekt
npmread-pkg5.2.0indirekt
npmread-pkg-up7.0.1indirekt
npmreadable-stream2.3.7indirekt
npmreadable-stream3.6.0indirekt
npmreaddir-scoped-modules1.1.0indirekt
npmredent3.0.0indirekt
npmredeyed2.1.1indirekt
npmregistry-auth-token4.2.1indirekt
npmremark-gfm1.0.0indirekt
npmremark-parse9.0.0indirekt
npmremark-stringify9.0.1indirekt
npmrepeat-string1.6.1indirekt
npmrequire-directory2.1.1indirekt
npmrequire-from-string2.0.2indirekt
npmresolve1.15.1indirekt
npmresolve-from4.0.0indirekt
npmresolve-from5.0.0indirekt
npmresolve-global1.0.0indirekt
npmretry0.12.0indirekt
npmretry0.13.1indirekt
npmreusify1.0.4indirekt
npmrimraf3.0.2indirekt
npmrun-parallel1.2.0indirekt
npmsafe-buffer5.1.2indirekt
npmsafe-buffer5.2.0indirekt
npmsafer-buffer2.1.2indirekt
npmsemantic-release19.0.5indirekt
npmsemantic-release-rubygem1.2.0indirekt
npmsemantic-release-slack-bot3.5.2indirekt
npmsemver5.7.2indirekt
npmsemver6.3.1indirekt
npmsemver7.5.4indirekt
npmsemver7.6.0indirekt
npmsemver-diff3.1.1indirekt
npmsemver-regex3.1.4indirekt
npmset-blocking2.0.0indirekt
npmshebang-command2.0.0indirekt
npmshebang-regex3.0.0indirekt
npmsignal-exit3.0.7indirekt
npmsignale1.4.0indirekt
npmslackify-markdown4.3.1indirekt
npmslash3.0.0indirekt
npmsmart-buffer4.2.0indirekt
npmsocks2.6.2indirekt
npmsocks-proxy-agent6.2.0indirekt
npmsocks-proxy-agent7.0.0indirekt
npmsource-map0.6.1indirekt
npmspawn-error-forwarder1.0.0indirekt
npmspdx-correct3.1.0indirekt
npmspdx-exceptions2.2.0indirekt
npmspdx-expression-parse3.0.0indirekt
npmspdx-license-ids3.0.5indirekt
npmsplit1.0.1indirekt
npmsplit21.0.0indirekt
npmsplit23.2.2indirekt
npmssri9.0.0indirekt
npmssri9.0.1indirekt
npmstream-combiner21.1.1indirekt
npmstring-width4.2.0indirekt
npmstring-width4.2.3indirekt
npmstring_decoder1.1.1indirekt
npmstring_decoder1.3.0indirekt
npmstrip-ansi6.0.0indirekt
npmstrip-ansi6.0.1indirekt
npmstrip-bom3.0.0indirekt
npmstrip-final-newline2.0.0indirekt
npmstrip-indent3.0.0indirekt
npmstrip-json-comments2.0.1indirekt
npmsupports-color5.5.0indirekt
npmsupports-color7.1.0indirekt
npmsupports-color7.2.0indirekt
npmsupports-hyperlinks2.2.0indirekt
npmtar6.2.1indirekt
npmtemp-dir2.0.0indirekt
npmtempy0.5.0indirekt
npmtempy1.0.1indirekt
npmtext-extensions1.9.0indirekt
npmtext-table0.2.0indirekt
npmthrough2.3.8indirekt
npmthrough22.0.5indirekt
npmthrough24.0.2indirekt
npmtiny-relative-date1.3.0indirekt
npmto-regex-range5.0.1indirekt
npmtr460.0.3indirekt
npmtraverse0.6.6indirekt
npmtreeverse2.0.0indirekt
npmtrim-newlines3.0.1indirekt
npmtrough1.0.5indirekt
npmts-node10.9.2indirekt
npmtype-fest0.12.0indirekt
npmtype-fest0.16.0indirekt
npmtype-fest0.18.1indirekt
npmtype-fest0.6.0indirekt
npmtype-fest0.8.1indirekt
npmtype-fest1.4.0indirekt
npmtypescript5.3.3indirekt
npmuglify-js3.15.4indirekt
npmunified9.2.2indirekt
npmunique-filename1.1.1indirekt
npmunique-filename2.0.1indirekt
npmunique-slug2.0.2indirekt
npmunique-slug3.0.0indirekt
npmunique-string2.0.0indirekt
npmunist-util-is4.1.0indirekt
npmunist-util-remove2.1.0indirekt
npmunist-util-stringify-position2.0.3indirekt
npmunist-util-visit2.0.3indirekt
npmunist-util-visit-parents3.1.1indirekt
npmuniversal-user-agent6.0.0indirekt
npmuniversalify1.0.0indirekt
npmuniversalify2.0.0indirekt
npmuri-js4.4.1indirekt
npmurl-join4.0.1indirekt
npmutil-deprecate1.0.2indirekt
npmv8-compile-cache-lib3.0.1indirekt
npmvalidate-npm-package-license3.0.4indirekt
npmvalidate-npm-package-name4.0.0indirekt
npmvfile4.2.1indirekt
npmvfile-message2.0.4indirekt
npmwalk-up-path1.0.0indirekt
npmwcwidth1.0.1indirekt
npmwebidl-conversions3.0.1indirekt
npmwhatwg-url5.0.0indirekt
npmwhich2.0.2indirekt
npmwide-align1.1.5indirekt
npmwordwrap1.0.0indirekt
npmwrap-ansi7.0.0indirekt
npmwrappy1.0.2indirekt
npmwrite-file-atomic4.0.1indirekt
npmxtend4.0.2indirekt
npmy18n5.0.8indirekt
npmyallist4.0.0indirekt
npmyaml1.10.0indirekt
npmyargs16.2.0indirekt
npmyargs17.7.2indirekt
npmyargs-parser20.2.9indirekt
npmyargs-parser21.1.1indirekt
npmyn3.1.1indirekt
npmyocto-queue0.1.0indirekt
npmzwitch1.0.5indirekt
RubyGemsactioncable6.1.7.9indirekt
RubyGemsactionmailbox6.1.7.9indirekt
RubyGemsactionmailer6.1.7.9indirekt
RubyGemsactionpack6.1.7.9indirekt
RubyGemsactiontext6.1.7.9indirekt
RubyGemsactionview6.1.7.9indirekt
RubyGemsactivejob6.1.7.9indirekt
RubyGemsactivemodel6.1.7.9indirekt
RubyGemsactiverecord6.1.7.9indirekt
RubyGemsactivestorage6.1.7.9indirekt
RubyGemsactivesupport6.1.7.9indirekt
RubyGemsaes_key_wrap1.1.0indirekt
RubyGemsattr_required1.0.2indirekt
RubyGemsbase640.3.0indirekt
RubyGemsbigdecimal3.3.1indirekt
RubyGemsbindata2.5.1indirekt
RubyGemsbuilder3.3.0indirekt
RubyGemsbyebug12.0.0indirekt
RubyGemscrass1.0.6indirekt
RubyGemscsvindirekt
RubyGemscsv3.3.5indirekt
RubyGemsdate3.4.1indirekt
RubyGemsdiff-lcs1.6.2indirekt
RubyGemsdocile1.4.1indirekt
RubyGemserb6.0.1indirekt
RubyGemserubi1.13.1indirekt
RubyGemsfaraday2.14.0indirekt
RubyGemsfaraday-follow_redirects0.5.0indirekt
RubyGemsfaraday-net_http3.4.1indirekt
RubyGemsglobalid1.3.0indirekt
RubyGemshttpclient2.9.0indirekt
RubyGemsi18n1.14.7indirekt
RubyGemslogger1.7.0indirekt
RubyGemsloofah2.24.1indirekt
RubyGemsmail2.8.1indirekt
RubyGemsmarcel1.1.0indirekt
RubyGemsmethod_source1.1.0indirekt
RubyGemsmini_mime1.1.5indirekt
RubyGemsminitest5.27.0indirekt
RubyGemsmulti_xml0.7.2indirekt
RubyGemsmutex_m0.3.0indirekt
RubyGemsnet-http0.6.0indirekt
RubyGemsnet-imap0.5.12indirekt
RubyGemsnet-pop0.1.2indirekt
RubyGemsnet-protocol0.2.2indirekt
RubyGemsnet-smtp0.5.1indirekt
RubyGemsnio4r2.7.4indirekt
RubyGemsnokogiri1.18.10indirekt
RubyGemspsych5.3.1indirekt
RubyGemspublic_suffix6.0.2indirekt
RubyGemsracc1.8.1indirekt
RubyGemsrack2.2.20indirekt
RubyGemsrack-oauth21.21.3indirekt
RubyGemsrack-test2.2.0indirekt
RubyGemsrails-dom-testing2.3.0indirekt
RubyGemsrails-html-sanitizer1.6.2indirekt
RubyGemsrailties6.1.7.9indirekt
RubyGemsrake13.3.0indirekt
RubyGemsrdoc7.0.3indirekt
RubyGemsrspec-core3.13.5indirekt
RubyGemsrspec-expectations3.13.5indirekt
RubyGemsrspec-mocks3.13.5indirekt
RubyGemsrspec-rails6.1.5indirekt
RubyGemsrspec-support3.13.4indirekt
RubyGemssimplecov0.22.0indirekt
RubyGemssimplecov-html0.13.2indirekt
RubyGemssimplecov_json_formatter0.1.4indirekt
RubyGemssprockets4.2.2indirekt
RubyGemssprockets-rails3.5.2indirekt
RubyGemssqlite31.7.3indirekt
RubyGemsstringio3.2.0indirekt
RubyGemsswd1.3.0indirekt
RubyGemsthor1.4.0indirekt
RubyGemstimecop0.9.10indirekt
RubyGemstimeout0.4.3indirekt
RubyGemstsort0.2.0indirekt
RubyGemstzinfo2.0.6indirekt
RubyGemsuri1.0.4indirekt
RubyGemsvalidate_email0.1.6indirekt
RubyGemsvalidate_url1.0.15indirekt
RubyGemswebfinger1.2.0indirekt
RubyGemswebsocket-driver0.8.0indirekt
RubyGemswebsocket-extensions0.1.5indirekt
RubyGemszeitwerk2.7.3indirekt
Abhängigkeits-Advisories 37

Dieses Repository veröffentlicht kein vom Index auflösbares Paket, daher wurde sein eigener Abhängigkeitsgraph bewertet – 718 Pakete, darunter auch Entwicklungs- und Test-Pins, die nie ausgeliefert werden: 37 tragen bekannte Advisories, davon 5 direkte. 14 konnten nicht bewertet werden – keine aufgelöste Version, ein nicht unterstütztes Ökosystem, oder außerhalb der ausgewiesenen Paketliste.

PaketVersionBeziehungSchweregradAdvisoriesBehoben in
activestorage6.1.7.9indirektkritisch68.1.2.1
handlebars4.7.7indirektkritisch84.7.9
concurrent-ruby1.3.4direkthoch31.3.7
httparty0.21.0direkthoch10.24.0
json2.15.1direkthoch12.19.2
jwt3.1.2direkthoch13.2.0
activesupport6.1.7.9indirekthoch38.1.2.1
brace-expansion1.1.11indirekthoch35.0.7
brace-expansion2.0.1indirekthoch35.0.7
erb6.0.1indirekthoch16.0.4
faraday2.14.0indirekthoch32.14.3
ip1.1.9indirekthoch1
js-yaml4.1.0indirekthoch34.3.0
lodash4.17.21indirekthoch34.18.0
minimatch3.1.2indirekthoch310.2.3
minimatch5.0.1indirekthoch310.2.3
minimatch5.1.6indirekthoch310.2.3
nokogiri1.18.10indirekthoch111.19.4
picomatch2.3.1indirekthoch24.0.4
rack2.2.20indirekthoch113.2.6
tar6.2.1indirekthoch117.5.19
websocket-driver0.8.0indirekthoch40.8.2
bcrypt3.1.20direktmittel13.1.22
@octokit/plugin-paginate-rest2.17.0indirektmittel111.4.1
@octokit/request5.6.3indirektmittel19.2.1
@octokit/request-error2.1.0indirektmittel16.1.7
activerecord6.1.7.9indirektmittel18.0.2.1
ajv8.12.0indirektmittel18.18.0
diff4.0.2indirektmittel18.0.3
diff5.2.0indirektmittel18.0.3
loofah2.24.1indirektmittel12.25.2
net-imap0.5.12indirektmittel80.6.4.1
yaml1.10.0indirektmittel12.8.3
@tootallnate/once2.0.0indirektniedrig13.0.1
actionpack6.1.7.9indirektniedrig18.0.0.1
actionview6.1.7.9indirektniedrig18.1.2.1
rails-html-sanitizer1.6.2indirektniedrig11.7.1

Ein Advisory bedeutet, dass die im Abhängigkeitsgraphen erfasste Version in den betroffenen Bereich eines Advisories fällt. Erreichbarkeit wird nicht analysiert, und der Graph enthält Entwicklungs- und Test-Pins — ein Fund kann das Werkzeug betreffen und nicht die ausgelieferte Software.

JSON-Rohbericht maschinenlesbar
{
  "data": {
    "repo": {
      "topics": [
        "admin",
        "rails",
        "gem",
        "admin-panel",
        "internal-tool",
        "ruby",
        "ruby-on-rails",
        "backend",
        "backend-api"
      ],
      "is_fork": false,
      "size_kb": 2502,
      "has_wiki": false,
      "homepage": "https://www.forestadmin.com",
      "languages": {
        "CSS": 2974,
        "HTML": 5427,
        "Ruby": 665979,
        "Shell": 82,
        "JavaScript": 4649
      },
      "pushed_at": "2026-07-23T12:35:48Z",
      "created_at": "2015-08-03T12:03:02Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-23T12:36:24Z",
      "description": "💎 Ruby on Rails agent for Forest Admin to integrate directly to your existing Ruby on Rails backend application.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "GPL-3.0",
      "default_branch": "main",
      "license_spdx_raw": "GPL-3.0",
      "primary_language": "Ruby",
      "significant_languages": [
        "Ruby"
      ]
    },
    "owner": {
      "blog": "http://www.forestadmin.com",
      "name": "ForestAdmin",
      "type": "Organization",
      "login": "ForestAdmin",
      "company": null,
      "location": "France",
      "followers": 85,
      "avatar_url": "https://avatars.githubusercontent.com/u/13693804?v=4",
      "created_at": "2015-08-07T11:38:36Z",
      "is_verified": null,
      "public_repos": 87,
      "account_age_days": 4003
    },
    "license": {
      "state": "standard",
      "spdx_id": "GPL-3.0",
      "raw_spdx": "GPL-3.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v9.20.1",
          "kind": "patch",
          "published_at": "2026-07-23T12:35:48Z"
        },
        {
          "tag": "v9.20.0",
          "kind": "minor",
          "published_at": "2026-06-26T09:17:45Z"
        },
        {
          "tag": "v9.19.0",
          "kind": "minor",
          "published_at": "2026-06-10T14:08:25Z"
        },
        {
          "tag": "v9.18.2",
          "kind": "patch",
          "published_at": "2026-06-08T13:32:36Z"
        },
        {
          "tag": "v9.18.1",
          "kind": "patch",
          "published_at": "2026-06-08T10:06:06Z"
        },
        {
          "tag": "v9.18.0",
          "kind": "minor",
          "published_at": "2026-06-04T09:45:22Z"
        },
        {
          "tag": "v9.17.7",
          "kind": "patch",
          "published_at": "2026-06-04T08:09:03Z"
        },
        {
          "tag": "v9.17.6",
          "kind": "patch",
          "published_at": "2026-06-04T08:04:05Z"
        },
        {
          "tag": "v9.17.5",
          "kind": "patch",
          "published_at": "2026-05-29T14:20:49Z"
        },
        {
          "tag": "v9.17.4",
          "kind": "patch",
          "published_at": "2026-05-21T10:12:46Z"
        },
        {
          "tag": "v9.17.3",
          "kind": "patch",
          "published_at": "2026-01-27T09:03:30Z"
        },
        {
          "tag": "v9.17.2",
          "kind": "patch",
          "published_at": "2026-01-20T13:13:53Z"
        },
        {
          "tag": "v9.17.1",
          "kind": "patch",
          "published_at": "2026-01-13T14:41:40Z"
        },
        {
          "tag": "v9.17.0",
          "kind": "minor",
          "published_at": "2026-01-06T15:45:11Z"
        },
        {
          "tag": "v9.16.1",
          "kind": "patch",
          "published_at": "2025-12-05T09:36:19Z"
        },
        {
          "tag": "v9.16.0",
          "kind": "minor",
          "published_at": "2025-12-02T14:34:52Z"
        },
        {
          "tag": "v9.15.8",
          "kind": "patch",
          "published_at": "2025-09-03T12:29:01Z"
        },
        {
          "tag": "v9.15.7",
          "kind": "patch",
          "published_at": "2025-08-29T09:19:29Z"
        },
        {
          "tag": "v9.15.6",
          "kind": "patch",
          "published_at": "2025-08-27T14:11:33Z"
        },
        {
          "tag": "v9.15.5",
          "kind": "patch",
          "published_at": "2025-08-25T12:49:42Z"
        },
        {
          "tag": "v9.15.4",
          "kind": "patch",
          "published_at": "2025-08-12T13:47:51Z"
        },
        {
          "tag": "v9.15.3",
          "kind": "patch",
          "published_at": "2025-08-08T08:49:04Z"
        },
        {
          "tag": "v9.15.2",
          "kind": "patch",
          "published_at": "2025-07-24T15:26:40Z"
        },
        {
          "tag": "v9.15.1",
          "kind": "patch",
          "published_at": "2025-07-23T15:41:38Z"
        },
        {
          "tag": "v9.15.0",
          "kind": "minor",
          "published_at": "2025-07-17T08:41:56Z"
        },
        {
          "tag": "v9.14.7",
          "kind": "patch",
          "published_at": "2025-07-17T08:13:28Z"
        },
        {
          "tag": "v9.14.6",
          "kind": "patch",
          "published_at": "2025-07-17T08:03:51Z"
        },
        {
          "tag": "v9.14.5",
          "kind": "patch",
          "published_at": "2025-06-30T10:15:01Z"
        },
        {
          "tag": "v9.14.4",
          "kind": "patch",
          "published_at": "2025-06-20T08:12:49Z"
        },
        {
          "tag": "v9.14.3",
          "kind": "patch",
          "published_at": "2025-06-19T13:32:57Z"
        },
        {
          "tag": "v9.14.2",
          "kind": "patch",
          "published_at": "2025-06-10T08:49:06Z"
        },
        {
          "tag": "v9.14.1",
          "kind": "patch",
          "published_at": "2025-05-28T09:35:39Z"
        },
        {
          "tag": "v9.14.0",
          "kind": "minor",
          "published_at": "2025-05-26T13:35:45Z"
        },
        {
          "tag": "v9.13.0",
          "kind": "minor",
          "published_at": "2025-05-26T13:02:53Z"
        },
        {
          "tag": "v9.12.2",
          "kind": "patch",
          "published_at": "2025-05-15T09:17:19Z"
        },
        {
          "tag": "v9.12.1",
          "kind": "patch",
          "published_at": "2025-05-15T09:09:06Z"
        },
        {
          "tag": "v9.12.0",
          "kind": "minor",
          "published_at": "2025-05-05T09:28:12Z"
        },
        {
          "tag": "v9.11.3",
          "kind": "patch",
          "published_at": "2025-04-09T12:22:42Z"
        },
        {
          "tag": "v9.11.2",
          "kind": "patch",
          "published_at": "2025-04-07T14:34:22Z"
        },
        {
          "tag": "v9.11.1",
          "kind": "patch",
          "published_at": "2025-03-19T15:18:37Z"
        },
        {
          "tag": "v9.11.0",
          "kind": "minor",
          "published_at": "2025-03-19T08:37:12Z"
        },
        {
          "tag": "v9.10.6",
          "kind": "patch",
          "published_at": "2025-03-11T09:11:05Z"
        },
        {
          "tag": "v9.10.5",
          "kind": "patch",
          "published_at": "2025-03-07T14:00:58Z"
        },
        {
          "tag": "v9.10.4",
          "kind": "patch",
          "published_at": "2025-03-07T09:17:10Z"
        },
        {
          "tag": "v9.10.3",
          "kind": "patch",
          "published_at": "2025-03-05T16:09:50Z"
        },
        {
          "tag": "v9.10.2",
          "kind": "patch",
          "published_at": "2025-02-28T10:22:01Z"
        },
        {
          "tag": "v9.10.1",
          "kind": "patch",
          "published_at": "2025-02-26T10:14:34Z"
        },
        {
          "tag": "v9.10.0",
          "kind": "minor",
          "published_at": "2025-02-11T10:33:13Z"
        },
        {
          "tag": "v9.9.1",
          "kind": "patch",
          "published_at": "2025-02-10T16:12:44Z"
        },
        {
          "tag": "v9.9.0",
          "kind": "minor",
          "published_at": "2025-02-07T14:15:02Z"
        },
        {
          "tag": "v9.8.0",
          "kind": "minor",
          "published_at": "2025-02-04T08:43:50Z"
        },
        {
          "tag": "v9.7.0",
          "kind": "minor",
          "published_at": "2025-01-06T15:58:56Z"
        },
        {
          "tag": "v9.6.4",
          "kind": "patch",
          "published_at": "2024-12-27T16:55:25Z"
        },
        {
          "tag": "v9.6.3",
          "kind": "patch",
          "published_at": "2024-12-24T10:21:55Z"
        },
        {
          "tag": "v9.6.2",
          "kind": "patch",
          "published_at": "2024-12-19T15:20:56Z"
        },
        {
          "tag": "v9.6.1",
          "kind": "patch",
          "published_at": "2024-12-19T15:12:14Z"
        },
        {
          "tag": "v9.6.0",
          "kind": "minor",
          "published_at": "2024-12-10T08:59:53Z"
        },
        {
          "tag": "v9.5.7",
          "kind": "patch",
          "published_at": "2024-12-10T08:42:43Z"
        },
        {
          "tag": "v9.5.6",
          "kind": "patch",
          "published_at": "2024-12-10T08:15:54Z"
        },
        {
          "tag": "v9.5.5",
          "kind": "patch",
          "published_at": "2024-12-09T16:21:28Z"
        },
        {
          "tag": "v9.5.4",
          "kind": "patch",
          "published_at": "2024-12-04T09:55:37Z"
        },
        {
          "tag": "v9.5.3",
          "kind": "patch",
          "published_at": "2024-11-22T17:06:07Z"
        },
        {
          "tag": "v9.5.2",
          "kind": "patch",
          "published_at": "2024-11-18T10:48:10Z"
        },
        {
          "tag": "v9.5.1",
          "kind": "patch",
          "published_at": "2024-11-13T10:16:33Z"
        },
        {
          "tag": "v9.5.0",
          "kind": "minor",
          "published_at": "2024-11-12T09:02:00Z"
        },
        {
          "tag": "v9.4.3",
          "kind": "patch",
          "published_at": "2024-11-04T13:22:11Z"
        },
        {
          "tag": "v9.4.2",
          "kind": "patch",
          "published_at": "2024-10-30T14:09:52Z"
        },
        {
          "tag": "v9.4.1",
          "kind": "patch",
          "published_at": "2024-10-24T09:45:45Z"
        },
        {
          "tag": "v9.4.0",
          "kind": "minor",
          "published_at": "2024-10-17T07:53:40Z"
        },
        {
          "tag": "v8.3.3",
          "kind": "patch",
          "published_at": "2024-09-18T14:53:14Z"
        },
        {
          "tag": "v9.3.16",
          "kind": "patch",
          "published_at": "2024-09-18T14:48:38Z"
        },
        {
          "tag": "v9.3.15",
          "kind": "patch",
          "published_at": "2024-09-10T07:59:15Z"
        },
        {
          "tag": "v9.3.14",
          "kind": "patch",
          "published_at": "2024-08-30T10:46:24Z"
        },
        {
          "tag": "v9.3.13",
          "kind": "patch",
          "published_at": "2024-07-19T08:53:22Z"
        },
        {
          "tag": "v9.3.12",
          "kind": "patch",
          "published_at": "2024-07-02T12:29:26Z"
        },
        {
          "tag": "v9.3.11",
          "kind": "patch",
          "published_at": "2024-06-14T14:36:10Z"
        },
        {
          "tag": "v9.3.10",
          "kind": "patch",
          "published_at": "2024-06-14T13:20:58Z"
        },
        {
          "tag": "v9.3.9",
          "kind": "patch",
          "published_at": "2024-06-10T09:55:02Z"
        },
        {
          "tag": "v9.3.8",
          "kind": "patch",
          "published_at": "2024-06-10T07:48:06Z"
        },
        {
          "tag": "v9.3.7",
          "kind": "patch",
          "published_at": "2024-06-07T13:52:54Z"
        },
        {
          "tag": "v9.3.6",
          "kind": "patch",
          "published_at": "2024-06-06T13:16:59Z"
        },
        {
          "tag": "v9.3.5",
          "kind": "patch",
          "published_at": "2024-05-16T12:41:56Z"
        },
        {
          "tag": "v8.3.2",
          "kind": "patch",
          "published_at": "2024-05-16T12:38:09Z"
        },
        {
          "tag": "v9.3.4",
          "kind": "patch",
          "published_at": "2024-05-16T12:35:22Z"
        },
        {
          "tag": "v9.3.3",
          "kind": "patch",
          "published_at": "2024-04-17T12:21:18Z"
        },
        {
          "tag": "v9.3.2",
          "kind": "patch",
          "published_at": "2024-04-12T07:34:42Z"
        },
        {
          "tag": "v8.3.1",
          "kind": "patch",
          "published_at": "2024-03-26T15:08:03Z"
        },
        {
          "tag": "v9.3.1",
          "kind": "patch",
          "published_at": "2024-03-26T14:54:09Z"
        },
        {
          "tag": "v9.3.0",
          "kind": "minor",
          "published_at": "2024-03-14T16:39:49Z"
        },
        {
          "tag": "v8.3.0",
          "kind": "minor",
          "published_at": "2024-03-14T16:39:37Z"
        },
        {
          "tag": "v9.2.3",
          "kind": "patch",
          "published_at": "2024-03-11T08:27:53Z"
        },
        {
          "tag": "v9.2.2",
          "kind": "patch",
          "published_at": "2024-03-08T13:44:20Z"
        },
        {
          "tag": "v9.2.1",
          "kind": "patch",
          "published_at": "2024-03-06T10:34:24Z"
        },
        {
          "tag": "v9.2.0",
          "kind": "minor",
          "published_at": "2024-02-29T09:34:30Z"
        },
        {
          "tag": "v9.1.10",
          "kind": "patch",
          "published_at": "2024-02-28T14:01:04Z"
        },
        {
          "tag": "v9.1.9",
          "kind": "patch",
          "published_at": "2024-02-28T13:57:56Z"
        },
        {
          "tag": "v9.1.8",
          "kind": "patch",
          "published_at": "2024-02-28T13:55:40Z"
        },
        {
          "tag": "v9.1.7",
          "kind": "patch",
          "published_at": "2024-02-28T13:51:54Z"
        },
        {
          "tag": "v9.1.6",
          "kind": "patch",
          "published_at": "2024-02-28T13:47:45Z"
        },
        {
          "tag": "v9.1.5",
          "kind": "patch",
          "published_at": "2024-02-28T13:45:39Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "7d3e8df6bd3ed1780a3fe2e7bee36c3861b36c35",
          "body": "## [9.20.1](https://github.com/ForestAdmin/forest-rails/compare/v9.20.0...v9.20.1) (2026-07-23)\n\n### Bug Fixes\n\n* **actions:** always expose /hooks/load even without a load hook [PRD-801] ([#780](https://github.com/ForestAdmin/forest-rails/issues/780)) ([4b28797](https://github.com/ForestAdmin/forest-rails/commit/4b28797b2be7e9b0602e4d5dd973ae9140ac1e00))",
          "is_bot": false,
          "headline": "chore(release): 9.20.1 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-07-23T12:35:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4b28797b2be7e9b0602e4d5dd973ae9140ac1e00",
          "body": "…-801] (#780)",
          "is_bot": false,
          "headline": "fix(actions): always expose /hooks/load even without a load hook [PRD…",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2026-07-23T12:34:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "356e2714ddd0a121531eaf66d15dcc41e5716d58",
          "body": "…RD-567] (#779)\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(workflow): gzip passthrough regression for the executor proxy [P…",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2026-06-29T10:09:08Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "fe98ab4563dd0b2dbf4df3884114e914fd2ae8b6",
          "body": "# [9.20.0](https://github.com/ForestAdmin/forest-rails/compare/v9.19.0...v9.20.0) (2026-06-26)\n\n### Features\n\n* **workflow:** forward any executor route generically [PRD-567] ([#778](https://github.com/ForestAdmin/forest-rails/issues/778)) ([8b1edfb](https://github.com/ForestAdmin/forest-rails/commit/8b1edfb9528c80344d73b9ff244ffc66deaef471))",
          "is_bot": false,
          "headline": "chore(release): 9.20.0 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-06-26T09:17:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8b1edfb9528c80344d73b9ff244ffc66deaef471",
          "body": "Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(workflow): forward any executor route generically [PRD-567] (#778)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2026-06-26T09:16:24Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "691464e0d61850fd92427dc9cfb0404943341715",
          "body": "…-567] (#777)\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(workflow): forward workflow executor routes generically [PRD…",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2026-06-23T14:44:49Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a3ab2c17eb494ae373baf87b44f1f240599ac619",
          "body": "# [9.19.0](https://github.com/ForestAdmin/forest-rails/compare/v9.18.2...v9.19.0) (2026-06-10)\n\n### Features\n\n* **schema:** expose polymorphic discriminator column in schema ([5c67fa7](https://github.com/ForestAdmin/forest-rails/commit/5c67fa7f0d55f1d4c190859df76f555af882fb75))",
          "is_bot": false,
          "headline": "chore(release): 9.19.0 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-06-10T14:08:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fda504e038ea6258fffda93a5312273ec801baa3",
          "body": "…-type-field\n\nfeat(schema): expose polymorphic discriminator column (foreign_key_type_field)",
          "is_bot": false,
          "headline": "Merge pull request #776 from ForestAdmin/feat/polymorphic-foreign-key…",
          "author_name": "Christophe Brun",
          "author_login": "christophebrun-forest",
          "committed_at": "2026-06-10T14:06:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5c67fa7f0d55f1d4c190859df76f555af882fb75",
          "body": "Add a foreign_key_type_field key on polymorphic belongs_to fields,\nholding the discriminator column name (e.g. \"addressable_type\"), so\nconsumers can resolve which model a polymorphic record targets.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(schema): expose polymorphic discriminator column in schema",
          "author_name": "Brun Christophe",
          "author_login": "christophebrun-forest",
          "committed_at": "2026-06-10T09:04:44Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "bb13a4acf4467fa1ceb2d4fbc38a69c942eb9c89",
          "body": "## [9.18.2](https://github.com/ForestAdmin/forest-rails/compare/v9.18.1...v9.18.2) (2026-06-08)\n\n### Bug Fixes\n\n* **schema:** keep is_primary_key on FK columns composing a composite PK ([b8761e9](https://github.com/ForestAdmin/forest-rails/commit/b8761e97c7994c2a68f37effe13831a7e7425304)), closes [#772](https://github.com/ForestAdmin/forest-rails/issues/772)",
          "is_bot": false,
          "headline": "chore(release): 9.18.2 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-06-08T13:32:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8b67b1f5a6f1abc1d0648088b7d8e9b0788b9a9f",
          "body": "…primary_key-ecrase-a-false-sur-les-fk\n\nfix(schema): keep is_primary_key on FK columns composing a composite PK",
          "is_bot": false,
          "headline": "Merge pull request #775 from ForestAdmin/fix/prd-476-forest_liana-is_…",
          "author_name": "Christophe Brun",
          "author_login": "christophebrun-forest",
          "committed_at": "2026-06-08T13:31:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b8761e97c7994c2a68f37effe13831a7e7425304",
          "body": "PR #772 added an unconditional `field[:is_primary_key] = false` on the\nbelongsTo field-reuse path in add_associations. When a composite primary\nkey is made of foreign keys (e.g. a join table like BookStock with\nprimary_key [library_id, book_id]), those FK columns are turned into\nassociations and the\n[…]\n directly and does not\nexercise it); the global apimap is saved/restored to avoid pollution from\nthe second perform.\n\nRef: PRD-476\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(schema): keep is_primary_key on FK columns composing a composite PK",
          "author_name": "Brun Christophe",
          "author_login": "christophebrun-forest",
          "committed_at": "2026-06-08T13:03:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7df842c8b4fd709b4c11bf94205f59a6e0bfca70",
          "body": "## [9.18.1](https://github.com/ForestAdmin/forest-rails/compare/v9.18.0...v9.18.1) (2026-06-08)\n\n### Bug Fixes\n\n* **composite-pk:** accept pipe-joined composite ids [PRD-450] ([#774](https://github.com/ForestAdmin/forest-rails/issues/774)) ([3db6377](https://github.com/ForestAdmin/forest-rails/commit/3db6377de04d444d8206e4fbea04ffe028a42faf))",
          "is_bot": false,
          "headline": "chore(release): 9.18.1 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-06-08T10:06:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3db6377de04d444d8206e4fbea04ffe028a42faf",
          "body": "Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(composite-pk): accept pipe-joined composite ids [PRD-450] (#774)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2026-06-08T10:04:48Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "32c42c2e37edd94306db20be8591634529d0b227",
          "body": "# [9.18.0](https://github.com/ForestAdmin/forest-rails/compare/v9.17.7...v9.18.0) (2026-06-04)\n\n### Features\n\n* **agent:** add workflow executor proxy routes ([#769](https://github.com/ForestAdmin/forest-rails/issues/769)) ([d6e897d](https://github.com/ForestAdmin/forest-rails/commit/d6e897d6b09b81a41b7b9fe0df45d298b6d81815))",
          "is_bot": false,
          "headline": "chore(release): 9.18.0 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-06-04T09:45:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d6e897d6b09b81a41b7b9fe0df45d298b6d81815",
          "body": "Co-authored-by: Brun Christophe <christophe.brun@forestadmin.com>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(agent): add workflow executor proxy routes (#769)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2026-06-04T09:43:54Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ea1298e3160ff1f34c2d471ad3f406cbc3b67ebc",
          "body": "## [9.17.7](https://github.com/ForestAdmin/forest-rails/compare/v9.17.6...v9.17.7) (2026-06-04)\n\n### Bug Fixes\n\n* **engine:** prevent boot crash when Rake is partially loaded ([#773](https://github.com/ForestAdmin/forest-rails/issues/773)) ([a1854a0](https://github.com/ForestAdmin/forest-rails/commit/a1854a011a52a710999d8ead3f2825aafb267386))",
          "is_bot": false,
          "headline": "chore(release): 9.17.7 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-06-04T08:08:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a1854a011a52a710999d8ead3f2825aafb267386",
          "body": "Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(engine): prevent boot crash when Rake is partially loaded (#773)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2026-06-04T08:07:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c0de89ca28e82474ce750c2938db45fc57e077d2",
          "body": "## [9.17.6](https://github.com/ForestAdmin/forest-rails/compare/v9.17.5...v9.17.6) (2026-06-04)\n\n### Bug Fixes\n\n* **schema:** emit is_primary_key flag on collection fields ([025a424](https://github.com/ForestAdmin/forest-rails/commit/025a424d3a9465591163ebd9bf31372af86d190a))",
          "is_bot": false,
          "headline": "chore(release): 9.17.6 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-06-04T08:04:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "02f44df33d8d5087632ba4896cc5d75ca577e7a4",
          "body": "…t_liana-nemet-jamais-is_primary_key-dans-le\n\nfix(schema): emit is_primary_key flag on collection fields\n\nOrchestrator workflows failed with \"Collection has no primary key field\nin its rendering layout\" because the gem never emitted `is_primary_key`,\nwhich the SaaS uses to derive the addressable pri\n[…]\nue only for the actual PK,\ncomposite PKs included), defaulting to false elsewhere across the schema\nbuild, the file writer, and the apimap sent to the SaaS.\n\nRef: PRD-439\n\n🤖 Generated with Claude Code",
          "is_bot": false,
          "headline": "Merge pull request #772 from ForestAdmin/feature/prd-439-le-gem-fores…",
          "author_name": "Christophe Brun",
          "author_login": "christophebrun-forest",
          "committed_at": "2026-06-04T08:02:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "025a424d3a9465591163ebd9bf31372af86d190a",
          "body": "Orchestrator workflows fail with \"Collection has no primary key field in\nits rendering layout\" because the gem never emitted `is_primary_key`, which\nthe SaaS uses to derive the addressable primary key.\n\nEmit `is_primary_key` (boolean) on every column field, true only for the\ncolumn(s) composing the \n[…]\nwhitelist + default false for the schema file\n- model/collection: default false for the Collection.new(fields:) path\n\nRef: PRD-439\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(schema): emit is_primary_key flag on collection fields",
          "author_name": "Brun Christophe",
          "author_login": "christophebrun-forest",
          "committed_at": "2026-06-03T16:23:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "173186157a8b4b2e5c6a1b40ece0431b405306c4",
          "body": "## [9.17.5](https://github.com/ForestAdmin/forest-rails/compare/v9.17.4...v9.17.5) (2026-05-29)\n\n### Bug Fixes\n\n* skip bootstrapper during rails-invoked rake tasks ([#771](https://github.com/ForestAdmin/forest-rails/issues/771)) ([572f08f](https://github.com/ForestAdmin/forest-rails/commit/572f08f2c996a4da00eeb3b46f4d726b94eb82ff))",
          "is_bot": false,
          "headline": "chore(release): 9.17.5 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-05-29T14:20:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "572f08f2c996a4da00eeb3b46f4d726b94eb82ff",
          "body": null,
          "is_bot": false,
          "headline": "fix: skip bootstrapper during rails-invoked rake tasks (#771)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2026-05-29T14:19:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d0bdf91a30e89c87b97ae1874599ec9bcdea5ec9",
          "body": "## [9.17.4](https://github.com/ForestAdmin/forest-rails/compare/v9.17.3...v9.17.4) (2026-05-21)\n\n### Bug Fixes\n\n* search array uuid columns using ANY() operator ([#770](https://github.com/ForestAdmin/forest-rails/issues/770)) ([1066a2b](https://github.com/ForestAdmin/forest-rails/commit/1066a2b71803dcb43685bf3ba87bee8aa0891969))",
          "is_bot": false,
          "headline": "chore(release): 9.17.4 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-05-21T10:12:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1066a2b71803dcb43685bf3ba87bee8aa0891969",
          "body": "Full-text search over collections with uuid[] columns was generating\na plain = comparison, which PostgreSQL rejects with \"malformed array\nliteral\". Use ANY() for array-typed uuid columns so the search term\nis matched against each element in the array.\n\nCo-authored-by: Ramon Carvalho Maciel <ramon.maciel@qonto.com>",
          "is_bot": false,
          "headline": "fix: search array uuid columns using ANY() operator (#770)",
          "author_name": "Ramon Carvalho Maciel",
          "author_login": "ramongtx",
          "committed_at": "2026-05-21T10:10:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8114500dc9a2dd26d1a207e55dd4d60f235a991a",
          "body": "## [9.17.3](https://github.com/ForestAdmin/forest-rails/compare/v9.17.2...v9.17.3) (2026-01-27)\n\n### Bug Fixes\n\n* include all intermediate foreign keys for deep has_one through associations ([#768](https://github.com/ForestAdmin/forest-rails/issues/768)) ([0342d4d](https://github.com/ForestAdmin/forest-rails/commit/0342d4d007180aff7fd6ee47c7fff3ac39407bb4))",
          "is_bot": false,
          "headline": "chore(release): 9.17.3 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-01-27T09:03:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0342d4d007180aff7fd6ee47c7fff3ac39407bb4",
          "body": "…ssociations (#768)",
          "is_bot": false,
          "headline": "fix: include all intermediate foreign keys for deep has_one through a…",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2026-01-27T09:02:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "62c98a94a66d119159e3b792d95419cf57ec5391",
          "body": "## [9.17.2](https://github.com/ForestAdmin/forest-rails/compare/v9.17.1...v9.17.2) (2026-01-20)\n\n### Bug Fixes\n\n* **composite-pk:** support update and count operations ([#767](https://github.com/ForestAdmin/forest-rails/issues/767)) ([7731de1](https://github.com/ForestAdmin/forest-rails/commit/7731de1697fa6d27e7a5eb17c84c4d542bbbe882))",
          "is_bot": false,
          "headline": "chore(release): 9.17.2 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-01-20T13:13:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7731de1697fa6d27e7a5eb17c84c4d542bbbe882",
          "body": null,
          "is_bot": false,
          "headline": "fix(composite-pk): support update and count operations (#767)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2026-01-20T13:12:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dc63b364b176401ecbafc25a117437d30c3b14d7",
          "body": "## [9.17.1](https://github.com/ForestAdmin/forest-rails/compare/v9.17.0...v9.17.1) (2026-01-13)\n\n### Bug Fixes\n\n* normalize default values in schema for ruby 4.0 and rails 8 compatibility ([#765](https://github.com/ForestAdmin/forest-rails/issues/765)) ([581a743](https://github.com/ForestAdmin/forest-rails/commit/581a743b14a0c5f383752fa323fa89efcbcc0003))",
          "is_bot": false,
          "headline": "chore(release): 9.17.1 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-01-13T14:41:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "581a743b14a0c5f383752fa323fa89efcbcc0003",
          "body": "…atibility (#765)",
          "is_bot": false,
          "headline": "fix: normalize default values in schema for ruby 4.0 and rails 8 comp…",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2026-01-13T14:40:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "31bd2abb07e93ec9ec5296dae8e4bf7ab5668bd1",
          "body": "# [9.17.0](https://github.com/ForestAdmin/forest-rails/compare/v9.16.1...v9.17.0) (2026-01-06)\n\n### Features\n\n* add ruby 4.0.0 support ([#764](https://github.com/ForestAdmin/forest-rails/issues/764)) ([323f688](https://github.com/ForestAdmin/forest-rails/commit/323f688da4abd57f65f1f1455e5273a80136194a))",
          "is_bot": false,
          "headline": "chore(release): 9.17.0 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2026-01-06T15:45:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "323f688da4abd57f65f1f1455e5273a80136194a",
          "body": null,
          "is_bot": false,
          "headline": "feat: add ruby 4.0.0 support (#764)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2026-01-06T15:43:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "50f3792350d97945cb733e77ded36fa7dd911685",
          "body": "## [9.16.1](https://github.com/ForestAdmin/forest-rails/compare/v9.16.0...v9.16.1) (2025-12-05)\n\n### Bug Fixes\n\n* support composite primary keys in resource getters ([#760](https://github.com/ForestAdmin/forest-rails/issues/760)) ([010f8c5](https://github.com/ForestAdmin/forest-rails/commit/010f8c5f7cc4bcfb68a5af32c78287e39db16605)), closes [#763](https://github.com/ForestAdmin/forest-rails/issues/763)",
          "is_bot": false,
          "headline": "chore(release): 9.16.1 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-12-05T09:36:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "010f8c5f7cc4bcfb68a5af32c78287e39db16605",
          "body": "fix #763",
          "is_bot": false,
          "headline": "fix: support composite primary keys in resource getters (#760)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-12-05T09:34:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6627c9db2b7e11992c7313233a51553851a29896",
          "body": "# [9.16.0](https://github.com/ForestAdmin/forest-rails/compare/v9.15.8...v9.16.0) (2025-12-02)\n\n### Features\n\n* add skip_schema_update configuration flag ([#762](https://github.com/ForestAdmin/forest-rails/issues/762)) ([7bf25b6](https://github.com/ForestAdmin/forest-rails/commit/7bf25b6ed17f07123bd0dac104201bb4f6e65c6d))",
          "is_bot": false,
          "headline": "chore(release): 9.16.0 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-12-02T14:34:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7bf25b6ed17f07123bd0dac104201bb4f6e65c6d",
          "body": null,
          "is_bot": false,
          "headline": "feat: add skip_schema_update configuration flag (#762)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-12-02T14:33:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "423d11acc6aa60424b36522b5d77b70518b77911",
          "body": null,
          "is_bot": false,
          "headline": "chore: set ssl false when forest_url env is present (#761)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-11-18T10:31:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46e5b46b9c2f2f82212c17a5233a7fb0875ef822",
          "body": null,
          "is_bot": false,
          "headline": "ci(coverage): use qlty coverage (#756)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-09-05T13:43:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aa2db729232e0814591640c1f327085eb33bfb43",
          "body": "## [9.15.8](https://github.com/ForestAdmin/forest-rails/compare/v9.15.7...v9.15.8) (2025-09-03)\n\n### Bug Fixes\n\n* key conflicts in fields for same-collection smart relations ([#755](https://github.com/ForestAdmin/forest-rails/issues/755)) ([c38e224](https://github.com/ForestAdmin/forest-rails/commit/c38e2246fa2541cdca07dffb15471b785a50b917))",
          "is_bot": false,
          "headline": "chore(release): 9.15.8 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-09-03T12:28:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c38e2246fa2541cdca07dffb15471b785a50b917",
          "body": null,
          "is_bot": false,
          "headline": "fix: key conflicts in fields for same-collection smart relations (#755)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-09-03T12:27:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "67afc84a2e0d1073f4005e51c4a88b72cd0a4d79",
          "body": "## [9.15.7](https://github.com/ForestAdmin/forest-rails/compare/v9.15.6...v9.15.7) (2025-08-29)\n\n### Bug Fixes\n\n* remove unnecessary validation logic in serializer relationships ([#754](https://github.com/ForestAdmin/forest-rails/issues/754)) ([5e3dd03](https://github.com/ForestAdmin/forest-rails/commit/5e3dd034d1b3bfc7d4667ae5284c66872e3eb5d8))",
          "is_bot": false,
          "headline": "chore(release): 9.15.7 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-08-29T09:19:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5e3dd034d1b3bfc7d4667ae5284c66872e3eb5d8",
          "body": "…(#754)",
          "is_bot": false,
          "headline": "fix: remove unnecessary validation logic in serializer relationships …",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-08-29T09:17:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "60cfed3e0a5301bb6320d43a493bd254be6f4d81",
          "body": "## [9.15.6](https://github.com/ForestAdmin/forest-rails/compare/v9.15.5...v9.15.6) (2025-08-27)\n\n### Bug Fixes\n\n* enable unoptimized mode in serializer when searchToEdit flag is set ([#753](https://github.com/ForestAdmin/forest-rails/issues/753)) ([7c1f7d4](https://github.com/ForestAdmin/forest-rails/commit/7c1f7d4fb047519bbb763fa3d3ebd902ad9f8d19)), closes [#751](https://github.com/ForestAdmin/forest-rails/issues/751)",
          "is_bot": false,
          "headline": "chore(release): 9.15.6 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-08-27T14:11:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7c1f7d4fb047519bbb763fa3d3ebd902ad9f8d19",
          "body": "…set (#753)\n\nclose #751",
          "is_bot": false,
          "headline": "fix: enable unoptimized mode in serializer when searchToEdit flag is …",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-08-27T14:09:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "04d85a729e270b7a58529761cf0d79e472f9891e",
          "body": "## [9.15.5](https://github.com/ForestAdmin/forest-rails/compare/v9.15.4...v9.15.5) (2025-08-25)\n\n### Bug Fixes\n\n* **has_many_getter:** add has_one support ([#752](https://github.com/ForestAdmin/forest-rails/issues/752)) ([da14366](https://github.com/ForestAdmin/forest-rails/commit/da14366505c6e3dff947de10d8b4884b83769e3a))",
          "is_bot": false,
          "headline": "chore(release): 9.15.5 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-08-25T12:49:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "da14366505c6e3dff947de10d8b4884b83769e3a",
          "body": null,
          "is_bot": false,
          "headline": "fix(has_many_getter): add has_one support (#752)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-08-25T12:46:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d23ea0b458bebcfb1d8f43a971a8649d825afdda",
          "body": "## [9.15.4](https://github.com/ForestAdmin/forest-rails/compare/v9.15.3...v9.15.4) (2025-08-12)\n\n### Bug Fixes\n\n* **controller:** distinguish relation from self + unoptimized getOne ([8fbfdf2](https://github.com/ForestAdmin/forest-rails/commit/8fbfdf29f2009a8551fb96920ced1586a26b5966))\n* **controller:** distinguish relation from self + unoptimized getOne ([060c69b](https://github.com/ForestAdmin/forest-rails/commit/060c69b026a6ccd0273a92656d6e358691d0e603))",
          "is_bot": false,
          "headline": "chore(release): 9.15.4 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-08-12T13:47:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8fbfdf29f2009a8551fb96920ced1586a26b5966",
          "body": null,
          "is_bot": false,
          "headline": "fix(controller): distinguish relation from self + unoptimized getOne",
          "author_name": "dogan.ay",
          "author_login": "DayTF",
          "committed_at": "2025-08-12T13:45:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "060c69b026a6ccd0273a92656d6e358691d0e603",
          "body": null,
          "is_bot": false,
          "headline": "fix(controller): distinguish relation from self + unoptimized getOne",
          "author_name": "Dogan AY",
          "author_login": null,
          "committed_at": "2025-08-12T08:27:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cbd7c7f125dbea46c92734a16e4b7efa372349ff",
          "body": "## [9.15.3](https://github.com/ForestAdmin/forest-rails/compare/v9.15.2...v9.15.3) (2025-08-08)\n\n### Bug Fixes\n\n* improve performance by only serializing requested fields ([89db677](https://github.com/ForestAdmin/forest-rails/commit/89db6774c453d655b8d209ac6a320ea2e508953f))\n* test ([8766f25](https:\n[…]\ndbebf21f14f51a605855445c84b63416314c8))\n* **serializer:** override find_recursive_relationships ([a173f43](https://github.com/ForestAdmin/forest-rails/commit/a173f437dc29a26f359d6b062346b4970541203a))",
          "is_bot": false,
          "headline": "chore(release): 9.15.3 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-08-08T08:49:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "89db6774c453d655b8d209ac6a320ea2e508953f",
          "body": null,
          "is_bot": false,
          "headline": "fix: improve performance by only serializing requested fields",
          "author_name": "dogan.ay",
          "author_login": "DayTF",
          "committed_at": "2025-08-08T08:45:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8766f25cfd9a37f8303b6067777ac20b54db24c4",
          "body": null,
          "is_bot": false,
          "headline": "fix: test",
          "author_name": "Matt",
          "author_login": "matthv",
          "committed_at": "2025-07-30T14:04:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a173f437dc29a26f359d6b062346b4970541203a",
          "body": null,
          "is_bot": false,
          "headline": "fix(serializer): override find_recursive_relationships",
          "author_name": "Matt",
          "author_login": "matthv",
          "committed_at": "2025-07-30T13:23:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "672dbebf21f14f51a605855445c84b63416314c8",
          "body": null,
          "is_bot": false,
          "headline": "fix(serializer): load smart field & improve queries",
          "author_name": "Matt",
          "author_login": "matthv",
          "committed_at": "2025-07-30T12:32:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0d72103e0e36fb7464091f8c6e6635f048b6e5f8",
          "body": null,
          "is_bot": false,
          "headline": "fix(serializer): load smart field",
          "author_name": "Matt",
          "author_login": "matthv",
          "committed_at": "2025-07-30T12:30:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "afc2a659c61e6e2a4cb898d381c91c69f0148f4e",
          "body": null,
          "is_bot": false,
          "headline": "fix(serializer): load correctly cross db relationship",
          "author_name": "Matt",
          "author_login": "matthv",
          "committed_at": "2025-07-30T12:28:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3b48024392871e3a2a4a751ace78e033dc0aba4b",
          "body": "## [9.15.2](https://github.com/ForestAdmin/forest-rails/compare/v9.15.1...v9.15.2) (2025-07-24)\n\n### Bug Fixes\n\n* serializer on relationships ([#745](https://github.com/ForestAdmin/forest-rails/issues/745)) ([dc96641](https://github.com/ForestAdmin/forest-rails/commit/dc966414c645fe0f34764ad264e2fbe55226d4cc))",
          "is_bot": false,
          "headline": "chore(release): 9.15.2 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-07-24T15:26:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dc966414c645fe0f34764ad264e2fbe55226d4cc",
          "body": null,
          "is_bot": false,
          "headline": "fix: serializer on relationships (#745)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-07-24T15:24:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "be26b9c02004bd9b5a28942828cfbcab9c9358c6",
          "body": "## [9.15.1](https://github.com/ForestAdmin/forest-rails/compare/v9.15.0...v9.15.1) (2025-07-23)\n\n### Bug Fixes\n\n* **filters:** properly parse filters from request params ([#743](https://github.com/ForestAdmin/forest-rails/issues/743)) ([801f5d1](https://github.com/ForestAdmin/forest-rails/commit/801\n[…]\nmin/forest-rails/commit/7f57f25adddffc07ccb95d3d3d330358184f4a58)), closes [#746](https://github.com/ForestAdmin/forest-rails/issues/746) [#743](https://github.com/ForestAdmin/forest-rails/issues/743)",
          "is_bot": false,
          "headline": "chore(release): 9.15.1 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-07-23T15:41:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a1d011e5bb0cf1800e0af4c5a2e0aa2ee976a180",
          "body": null,
          "is_bot": false,
          "headline": "fix(filters): properly parse filters from request params (#747)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-07-23T15:39:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7f57f25adddffc07ccb95d3d3d330358184f4a58",
          "body": "Revert \"fix(filters): properly parse filters from request params (#743)\"\n\nThis reverts commit 801f5d1e898f76cc5c0edea06b3cb24bb0e37d2b.",
          "is_bot": false,
          "headline": "Revert \"fix(filters): properly parse filters from request params\" (#746)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-07-23T15:20:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "801f5d1e898f76cc5c0edea06b3cb24bb0e37d2b",
          "body": null,
          "is_bot": false,
          "headline": "fix(filters): properly parse filters from request params (#743)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-07-23T13:33:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6fa08a6302f0361c162330b7dd745d8fc5254b15",
          "body": "# [9.15.0](https://github.com/ForestAdmin/forest-rails/compare/v9.14.7...v9.15.0) (2025-07-17)\n\n### Features\n\n* **router:** make controller and action available to middleware ([#533](https://github.com/ForestAdmin/forest-rails/issues/533)) ([57804f6](https://github.com/ForestAdmin/forest-rails/commit/57804f6354e45341497589fdbee38b5f9788040a))",
          "is_bot": false,
          "headline": "chore(release): 9.15.0 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-07-17T08:41:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "57804f6354e45341497589fdbee38b5f9788040a",
          "body": "Co-authored-by: Ramon Maciel <ramon.maciel@qonto.com>",
          "is_bot": false,
          "headline": "feat(router): make controller and action available to middleware (#533)",
          "author_name": "Ramon Carvalho Maciel",
          "author_login": "ramongtx",
          "committed_at": "2025-07-17T08:40:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8ebba66e286934aa5e73ed88a84918e30cfae79f",
          "body": "## [9.14.7](https://github.com/ForestAdmin/forest-rails/compare/v9.14.6...v9.14.7) (2025-07-17)\n\n### Bug Fixes\n\n* skip where when computed search conditions are empty ([#544](https://github.com/ForestAdmin/forest-rails/issues/544)) ([5a9aa09](https://github.com/ForestAdmin/forest-rails/commit/5a9aa09f3cae48e38ec3907af721fc13c7eededd))",
          "is_bot": false,
          "headline": "chore(release): 9.14.7 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-07-17T08:13:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5a9aa09f3cae48e38ec3907af721fc13c7eededd",
          "body": "Co-authored-by: Mario Oprea <mario.oprea.ext@qonto.com>",
          "is_bot": false,
          "headline": "fix: skip where when computed search conditions are empty (#544)",
          "author_name": "Mario Oprea",
          "author_login": "madalinoprea",
          "committed_at": "2025-07-17T08:11:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "02f2644fdee196fa98d67f05d03db44d217eacd8",
          "body": "## [9.14.6](https://github.com/ForestAdmin/forest-rails/compare/v9.14.5...v9.14.6) (2025-07-17)\n\n### Bug Fixes\n\n* **schema:** ensure fields are properly sorted in SchemaFileUpdater ([#541](https://github.com/ForestAdmin/forest-rails/issues/541)) ([711f1a2](https://github.com/ForestAdmin/forest-rails/commit/711f1a2c7b4ce9253c06261117ae0549645e1ad1))",
          "is_bot": false,
          "headline": "chore(release): 9.14.6 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-07-17T08:03:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "711f1a2c7b4ce9253c06261117ae0549645e1ad1",
          "body": "…#541)\n\nCo-authored-by: Ramon Maciel <ramon.maciel@qonto.com>",
          "is_bot": false,
          "headline": "fix(schema): ensure fields are properly sorted in SchemaFileUpdater (…",
          "author_name": "Ramon Carvalho Maciel",
          "author_login": "ramongtx",
          "committed_at": "2025-07-17T08:00:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "83cc6c8d38e0e6aedcaad6bf5724c7186a69fb22",
          "body": "## [9.14.5](https://github.com/ForestAdmin/forest-rails/compare/v9.14.4...v9.14.5) (2025-06-30)\n\n### Bug Fixes\n\n* rails 8 compatibility for stat aggregators ([#741](https://github.com/ForestAdmin/forest-rails/issues/741)) ([370c852](https://github.com/ForestAdmin/forest-rails/commit/370c852bdaf9eb53e3699f57ab6b3b6bf0446db8))",
          "is_bot": false,
          "headline": "chore(release): 9.14.5 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-06-30T10:14:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "370c852bdaf9eb53e3699f57ab6b3b6bf0446db8",
          "body": null,
          "is_bot": false,
          "headline": "fix: rails 8 compatibility for stat aggregators (#741)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-06-30T10:13:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "628a3e017c091999e86dd04f59bdea444816e898",
          "body": "## [9.14.4](https://github.com/ForestAdmin/forest-rails/compare/v9.14.3...v9.14.4) (2025-06-20)\n\n### Bug Fixes\n\n* avoid creating invalid objects when foreign key is null in serializer ([#740](https://github.com/ForestAdmin/forest-rails/issues/740)) ([61432ef](https://github.com/ForestAdmin/forest-rails/commit/61432ef478b81683df4a68a646b3db21fad9810f))",
          "is_bot": false,
          "headline": "chore(release): 9.14.4 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-06-20T08:12:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "61432ef478b81683df4a68a646b3db21fad9810f",
          "body": "…lizer (#740)",
          "is_bot": false,
          "headline": "fix: avoid creating invalid objects when foreign key is null in seria…",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-06-20T08:11:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a273052c891a921daecf5612e906e65434e48d88",
          "body": "## [9.14.3](https://github.com/ForestAdmin/forest-rails/compare/v9.14.2...v9.14.3) (2025-06-19)\n\n### Bug Fixes\n\n* **search:** prevent nil error in field selection during search ([#739](https://github.com/ForestAdmin/forest-rails/issues/739)) ([069c647](https://github.com/ForestAdmin/forest-rails/commit/069c647554353450c255a36e47309dfd232143f2)), closes [#738](https://github.com/ForestAdmin/forest-rails/issues/738)",
          "is_bot": false,
          "headline": "chore(release): 9.14.3 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-06-19T13:32:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "069c647554353450c255a36e47309dfd232143f2",
          "body": "close #738",
          "is_bot": false,
          "headline": "fix(search): prevent nil error in field selection during search (#739)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-06-19T13:29:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "991d31455fc68dff901bb443c77c1bfc5e69cf21",
          "body": "## [9.14.2](https://github.com/ForestAdmin/forest-rails/compare/v9.14.1...v9.14.2) (2025-06-10)\n\n### Bug Fixes\n\n* correct column selection in cross-db associations and extended-search ([#737](https://github.com/ForestAdmin/forest-rails/issues/737)) ([f352809](https://github.com/ForestAdmin/forest-rails/commit/f352809ea4f8853001357a3dd04cf2ea90645728))",
          "is_bot": false,
          "headline": "chore(release): 9.14.2 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-06-10T08:49:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f352809ea4f8853001357a3dd04cf2ea90645728",
          "body": "…earch (#737)",
          "is_bot": false,
          "headline": "fix: correct column selection in cross-db associations and extended-s…",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-06-10T08:45:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "392c4ef2e87b72531f3ba98c5ae9aa6f8544c808",
          "body": "## [9.14.1](https://github.com/ForestAdmin/forest-rails/compare/v9.14.0...v9.14.1) (2025-05-28)\n\n### Bug Fixes\n\n* preload polymorphic associations to improve performance ([#731](https://github.com/ForestAdmin/forest-rails/issues/731)) ([00ceef7](https://github.com/ForestAdmin/forest-rails/commit/00ceef75b9c9beb3b01216c03f42e7e337ecd4bf))",
          "is_bot": false,
          "headline": "chore(release): 9.14.1 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-05-28T09:35:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "00ceef75b9c9beb3b01216c03f42e7e337ecd4bf",
          "body": null,
          "is_bot": false,
          "headline": "fix: preload polymorphic associations to improve performance (#731)",
          "author_name": "NicolasAlexandre",
          "author_login": "nicolasalexandre9",
          "committed_at": "2025-05-28T09:33:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a63b21bc267644e44e4895b69c933e35231e6d22",
          "body": "# [9.14.0](https://github.com/ForestAdmin/forest-rails/compare/v9.13.0...v9.14.0) (2025-05-26)\n\n### Features\n\n* improve performance by avoiding unnecessary jointure on belongsTo relations ([#735](https://github.com/ForestAdmin/forest-rails/issues/735)) ([a256135](https://github.com/ForestAdmin/forest-rails/commit/a256135fad5353db3743f837c5a5e0016c1f2ad8))",
          "is_bot": false,
          "headline": "chore(release): 9.14.0 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-05-26T13:35:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a256135fad5353db3743f837c5a5e0016c1f2ad8",
          "body": "…To relations (#735)",
          "is_bot": false,
          "headline": "feat: improve performance by avoiding unnecessary jointure on belongs…",
          "author_name": "NicolasAlexandre",
          "author_login": "nicolasalexandre9",
          "committed_at": "2025-05-26T13:33:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "32aee702d2d700f78a784e2debeb2213897fabfa",
          "body": "# [9.13.0](https://github.com/ForestAdmin/forest-rails/compare/v9.12.2...v9.13.0) (2025-05-26)\n\n### Features\n\n* reduce redundant queries on cross-db belongs_to ([#734](https://github.com/ForestAdmin/forest-rails/issues/734)) ([e040718](https://github.com/ForestAdmin/forest-rails/commit/e0407185cde95b9abc6f00b0d17f38c8dc5e5fdc))",
          "is_bot": false,
          "headline": "chore(release): 9.13.0 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-05-26T13:02:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e0407185cde95b9abc6f00b0d17f38c8dc5e5fdc",
          "body": null,
          "is_bot": false,
          "headline": "feat: reduce redundant queries on cross-db belongs_to (#734)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-05-26T13:01:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9d1fb09d305926e6318a220c7f9d807f031ca136",
          "body": "## [9.12.2](https://github.com/ForestAdmin/forest-rails/compare/v9.12.1...v9.12.2) (2025-05-15)\n\n### Bug Fixes\n\n* **serializer:** do not execute smart feature on object like a native attribute ([#733](https://github.com/ForestAdmin/forest-rails/issues/733)) ([09c9e5f](https://github.com/ForestAdmin/forest-rails/commit/09c9e5fb9a3155d00057cc517e0b6e9156c1b143))",
          "is_bot": false,
          "headline": "chore(release): 9.12.2 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-05-15T09:17:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "09c9e5fb9a3155d00057cc517e0b6e9156c1b143",
          "body": "… attribute (#733)",
          "is_bot": false,
          "headline": "fix(serializer): do not execute smart feature on object like a native…",
          "author_name": "NicolasAlexandre",
          "author_login": "nicolasalexandre9",
          "committed_at": "2025-05-15T09:15:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "699b1ef1865358c567650c8f83b6b976ad51c497",
          "body": "## [9.12.1](https://github.com/ForestAdmin/forest-rails/compare/v9.12.0...v9.12.1) (2025-05-15)\n\n### Bug Fixes\n\n* include has_one through associations in compute_select_fields in ResourcesGetter ([#732](https://github.com/ForestAdmin/forest-rails/issues/732)) ([6472522](https://github.com/ForestAdmin/forest-rails/commit/6472522e73156e2cc8909e17cb052947880f5137))",
          "is_bot": false,
          "headline": "chore(release): 9.12.1 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-05-15T09:09:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6472522e73156e2cc8909e17cb052947880f5137",
          "body": "… ResourcesGetter (#732)",
          "is_bot": false,
          "headline": "fix: include has_one through associations in compute_select_fields in…",
          "author_name": "Mateusz L.",
          "author_login": "Pacyfik",
          "committed_at": "2025-05-15T09:05:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "10904ed9ba0878c4db7daaac18cdc3f54227e1ea",
          "body": "# [9.12.0](https://github.com/ForestAdmin/forest-rails/compare/v9.11.3...v9.12.0) (2025-05-05)\n\n### Features\n\n* **active-record:** improve performance when a belongsTo relation is included ([#729](https://github.com/ForestAdmin/forest-rails/issues/729)) ([2491f66](https://github.com/ForestAdmin/forest-rails/commit/2491f668a36208a6c6b3ec4ddb55642fcea2da18))",
          "is_bot": false,
          "headline": "chore(release): 9.12.0 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-05-05T09:28:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2491f668a36208a6c6b3ec4ddb55642fcea2da18",
          "body": "… included (#729)",
          "is_bot": false,
          "headline": "feat(active-record): improve performance when a belongsTo relation is…",
          "author_name": "NicolasAlexandre",
          "author_login": "nicolasalexandre9",
          "committed_at": "2025-05-05T09:25:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c85bad3de93d5373035cbaba863f97f084d40f96",
          "body": "## [9.11.3](https://github.com/ForestAdmin/forest-rails/compare/v9.11.2...v9.11.3) (2025-04-09)\n\n### Bug Fixes\n\n* **filters:** get collection name with the right format ([#728](https://github.com/ForestAdmin/forest-rails/issues/728)) ([68455f8](https://github.com/ForestAdmin/forest-rails/commit/68455f8a3e60fac2fffdb866f041030fdd846f1e))",
          "is_bot": false,
          "headline": "chore(release): 9.11.3 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-04-09T12:22:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "68455f8a3e60fac2fffdb866f041030fdd846f1e",
          "body": null,
          "is_bot": false,
          "headline": "fix(filters): get collection name with the right format (#728)",
          "author_name": "NicolasAlexandre",
          "author_login": "nicolasalexandre9",
          "committed_at": "2025-04-09T12:20:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "09bfae1194263c184a0e4bdc94ec156f797659ab",
          "body": "## [9.11.2](https://github.com/ForestAdmin/forest-rails/compare/v9.11.1...v9.11.2) (2025-04-07)\n\n### Bug Fixes\n\n* **filters:** filtering on date only fields now format value properly ([#727](https://github.com/ForestAdmin/forest-rails/issues/727)) ([0e3b54a](https://github.com/ForestAdmin/forest-rails/commit/0e3b54a733b551dc2dfcce386a0c392934cb3f36))",
          "is_bot": false,
          "headline": "chore(release): 9.11.2 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-04-07T14:34:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0e3b54a733b551dc2dfcce386a0c392934cb3f36",
          "body": "… (#727)",
          "is_bot": false,
          "headline": "fix(filters): filtering on date only fields now format value properly…",
          "author_name": "NicolasAlexandre",
          "author_login": "nicolasalexandre9",
          "committed_at": "2025-04-07T14:31:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1ca652befa7eef91cb12766b1ea4541edf61833f",
          "body": "## [9.11.1](https://github.com/ForestAdmin/forest-rails/compare/v9.11.0...v9.11.1) (2025-03-19)\n\n### Bug Fixes\n\n* **charts:** properly format week of year ([#726](https://github.com/ForestAdmin/forest-rails/issues/726)) ([5cbfd3a](https://github.com/ForestAdmin/forest-rails/commit/5cbfd3a22bbe31e6c35aa3b74582c79599cf10de))",
          "is_bot": false,
          "headline": "chore(release): 9.11.1 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-03-19T15:18:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5cbfd3a22bbe31e6c35aa3b74582c79599cf10de",
          "body": null,
          "is_bot": false,
          "headline": "fix(charts): properly format week of year (#726)",
          "author_name": "Matthieu",
          "author_login": "matthv",
          "committed_at": "2025-03-19T15:16:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7440a9b7870c98cc8d80ed1b6d9f76c330e9b5be",
          "body": "# [9.11.0](https://github.com/ForestAdmin/forest-rails/compare/v9.10.6...v9.11.0) (2025-03-19)\n\n### Features\n\n* **operators:** add i_contains operator support ([#725](https://github.com/ForestAdmin/forest-rails/issues/725)) ([3ed9123](https://github.com/ForestAdmin/forest-rails/commit/3ed912383e3592191c55335d369ef3e98d31f0f0))",
          "is_bot": false,
          "headline": "chore(release): 9.11.0 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-03-19T08:37:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ed912383e3592191c55335d369ef3e98d31f0f0",
          "body": null,
          "is_bot": false,
          "headline": "feat(operators): add i_contains operator support (#725)",
          "author_name": "NicolasAlexandre",
          "author_login": "nicolasalexandre9",
          "committed_at": "2025-03-19T08:35:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "063992df456743fe4709c8dbcb90293239b499c8",
          "body": "## [9.10.6](https://github.com/ForestAdmin/forest-rails/compare/v9.10.5...v9.10.6) (2025-03-11)\n\n### Bug Fixes\n\n* **schema-updater:** fix regression introduced with [#720](https://github.com/ForestAdmin/forest-rails/issues/720) regex when writing schema ([c7da92c](https://github.com/ForestAdmin/forest-rails/commit/c7da92cf904f6fba80460de42aa4ffe742a7ebcd))",
          "is_bot": false,
          "headline": "chore(release): 9.10.6 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-03-11T09:11:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c7da92cf904f6fba80460de42aa4ffe742a7ebcd",
          "body": "…riting schema",
          "is_bot": false,
          "headline": "fix(schema-updater): fix regression introduced with #720 regex when w…",
          "author_name": "Valentin Lugand Lopez",
          "author_login": "valentinllpz",
          "committed_at": "2025-03-11T09:09:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b66766f2bff7af4ed6873bff6d431dafa1456f69",
          "body": "## [9.10.5](https://github.com/ForestAdmin/forest-rails/compare/v9.10.4...v9.10.5) (2025-03-07)\n\n### Bug Fixes\n\n* **startup:** display current env secret when ip whitelist fails to ease debugging ([#722](https://github.com/ForestAdmin/forest-rails/issues/722)) ([e23500b](https://github.com/ForestAdmin/forest-rails/commit/e23500b015d0bd26df34f261344ce1d046dff9dc))",
          "is_bot": false,
          "headline": "chore(release): 9.10.5 [skip ci]",
          "author_name": "Forest Bot",
          "author_login": "forest-bot",
          "committed_at": "2025-03-07T14:00:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 100,
      "commits_last_year": 57,
      "latest_release_at": "2026-07-23T12:35:48Z",
      "latest_release_tag": "v9.20.1",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 17,
      "days_since_latest_release": 0,
      "mean_days_between_releases": 7
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 62,
      "has_issue_template": true,
      "has_code_of_conduct": false,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "forest_liana",
          "exists": true,
          "license": "GPL-3.0",
          "keywords": [],
          "ecosystem": "rubygems",
          "matches_repo": true,
          "registry_url": "https://rubygems.org/gems/forest_liana",
          "is_deprecated": false,
          "latest_version": "9.20.1",
          "repository_url": "https://github.com/ForestAdmin/forest-rails",
          "versions_count": 538,
          "total_downloads": 2777110,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": "2015-08-06T20:31:44.830000Z",
          "latest_published_at": "2026-07-23T12:35:50.401000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 0
        }
      ]
    },
    "popularity": {
      "forks": 83,
      "stars": 385,
      "watchers": 12,
      "fork_history": {
        "days": [
          {
            "date": "2016-09-18",
            "count": 1
          },
          {
            "date": "2016-09-24",
            "count": 1
          },
          {
            "date": "2016-10-13",
            "count": 1
          },
          {
            "date": "2016-10-21",
            "count": 1
          },
          {
            "date": "2016-11-16",
            "count": 1
          },
          {
            "date": "2016-11-17",
            "count": 1
          },
          {
            "date": "2016-11-22",
            "count": 1
          },
          {
            "date": "2017-01-05",
            "count": 1
          },
          {
            "date": "2017-02-12",
            "count": 1
          },
          {
            "date": "2017-02-24",
            "count": 1
          },
          {
            "date": "2017-05-02",
            "count": 1
          },
          {
            "date": "2017-09-22",
            "count": 1
          },
          {
            "date": "2017-11-21",
            "count": 1
          },
          {
            "date": "2018-03-03",
            "count": 1
          },
          {
            "date": "2018-04-13",
            "count": 1
          },
          {
            "date": "2018-04-17",
            "count": 1
          },
          {
            "date": "2018-06-22",
            "count": 1
          },
          {
            "date": "2018-07-02",
            "count": 1
          },
          {
            "date": "2018-07-17",
            "count": 1
          },
          {
            "date": "2018-11-28",
            "count": 1
          },
          {
            "date": "2018-12-30",
            "count": 1
          },
          {
            "date": "2019-01-05",
            "count": 1
          },
          {
            "date": "2019-02-13",
            "count": 1
          },
          {
            "date": "2019-03-03",
            "count": 1
          },
          {
            "date": "2019-03-24",
            "count": 1
          },
          {
            "date": "2019-04-02",
            "count": 1
          },
          {
            "date": "2019-05-15",
            "count": 1
          },
          {
            "date": "2019-05-21",
            "count": 1
          },
          {
            "date": "2019-05-23",
            "count": 1
          },
          {
            "date": "2019-07-16",
            "count": 1
          },
          {
            "date": "2019-07-17",
            "count": 1
          },
          {
            "date": "2019-08-05",
            "count": 1
          },
          {
            "date": "2019-08-08",
            "count": 1
          },
          {
            "date": "2019-08-27",
            "count": 1
          },
          {
            "date": "2019-09-09",
            "count": 1
          },
          {
            "date": "2019-09-25",
            "count": 1
          },
          {
            "date": "2019-10-22",
            "count": 1
          },
          {
            "date": "2019-11-04",
            "count": 1
          },
          {
            "date": "2019-11-19",
            "count": 1
          },
          {
            "date": "2020-05-06",
            "count": 1
          },
          {
            "date": "2020-05-18",
            "count": 1
          },
          {
            "date": "2020-05-21",
            "count": 1
          },
          {
            "date": "2020-06-23",
            "count": 1
          },
          {
            "date": "2020-06-30",
            "count": 1
          },
          {
            "date": "2021-01-13",
            "count": 2
          },
          {
            "date": "2021-01-15",
            "count": 1
          },
          {
            "date": "2021-01-21",
            "count": 1
          },
          {
            "date": "2021-02-10",
            "count": 1
          },
          {
            "date": "2021-02-25",
            "count": 1
          },
          {
            "date": "2021-03-07",
            "count": 1
          },
          {
            "date": "2021-05-10",
            "count": 1
          },
          {
            "date": "2021-05-17",
            "count": 1
          },
          {
            "date": "2021-05-18",
            "count": 1
          },
          {
            "date": "2021-05-28",
            "count": 1
          },
          {
            "date": "2021-07-16",
            "count": 1
          },
          {
            "date": "2021-08-10",
            "count": 1
          },
          {
            "date": "2021-09-09",
            "count": 1
          },
          {
            "date": "2022-01-13",
            "count": 1
          },
          {
            "date": "2022-03-29",
            "count": 1
          },
          {
            "date": "2022-05-25",
            "count": 1
          },
          {
            "date": "2022-06-07",
            "count": 1
          },
          {
            "date": "2022-07-22",
            "count": 2
          },
          {
            "date": "2022-08-20",
            "count": 2
          },
          {
            "date": "2022-10-27",
            "count": 1
          },
          {
            "date": "2023-01-17",
            "count": 1
          },
          {
            "date": "2023-04-27",
            "count": 1
          },
          {
            "date": "2023-05-05",
            "count": 1
          },
          {
            "date": "2023-10-24",
            "count": 1
          },
          {
            "date": "2023-11-14",
            "count": 1
          },
          {
            "date": "2023-12-12",
            "count": 1
          },
          {
            "date": "2024-03-04",
            "count": 1
          },
          {
            "date": "2024-10-02",
            "count": 1
          },
          {
            "date": "2024-10-05",
            "count": 1
          },
          {
            "date": "2024-11-05",
            "count": 1
          },
          {
            "date": "2025-03-06",
            "count": 1
          },
          {
            "date": "2025-03-09",
            "count": 1
          },
          {
            "date": "2025-03-10",
            "count": 1
          },
          {
            "date": "2025-05-12",
            "count": 1
          },
          {
            "date": "2025-12-03",
            "count": 1
          },
          {
            "date": "2026-01-23",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 83,
        "total_forks": 83
      },
      "star_history": null,
      "open_issues_and_prs": 71
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 27760,
      "source_files_sampled": 288,
      "oversized_source_files": 0,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "Gemfile",
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "activestorage",
            "direct": false,
            "version": "6.1.7.9",
            "severity": "critical",
            "ecosystem": "rubygems",
            "cvss_score": 9.8,
            "advisory_ids": [
              "GHSA-73f9-jhhh-hr5m",
              "GHSA-9xrj-h377-fr87",
              "GHSA-p9fm-f462-ggrg",
              "GHSA-qcfx-2mfw-w4cg",
              "GHSA-r46p-8f7g-vvvg",
              "GHSA-r4mg-4433-c7g3"
            ],
            "fixed_version": "8.1.2.1",
            "advisory_count": 6,
            "oldest_advisory_days": 343
          },
          {
            "name": "handlebars",
            "direct": false,
            "version": "4.7.7",
            "severity": "critical",
            "ecosystem": "npm",
            "cvss_score": 9.8,
            "advisory_ids": [
              "GHSA-2qvq-rjwj-gvw9",
              "GHSA-2w6w-674q-4c4q",
              "GHSA-3mfm-83xf-c92r",
              "GHSA-442j-39wm-28r2",
              "GHSA-7rx3-28cr-v5wh",
              "GHSA-9cx6-37pm-9jff",
              "GHSA-xhpv-hc6g-r9c6",
              "GHSA-xjpj-3mr7-gcpf"
            ],
            "fixed_version": "4.7.9",
            "advisory_count": 8,
            "oldest_advisory_days": 118
          },
          {
            "name": "concurrent-ruby",
            "direct": true,
            "version": "1.3.4",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-6wx8-w4f5-wwcr",
              "GHSA-h8w8-99g7-qmvj",
              "GHSA-wv3x-4vxv-whpp"
            ],
            "fixed_version": "1.3.7",
            "advisory_count": 3,
            "oldest_advisory_days": 33
          },
          {
            "name": "httparty",
            "direct": true,
            "version": "0.21.0",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 8.2,
            "advisory_ids": [
              "GHSA-hm5p-x4rq-38w4"
            ],
            "fixed_version": "0.24.0",
            "advisory_count": 1,
            "oldest_advisory_days": 211
          },
          {
            "name": "json",
            "direct": true,
            "version": "2.15.1",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 8.2,
            "advisory_ids": [
              "GHSA-3m6g-2423-7cp3"
            ],
            "fixed_version": "2.19.2",
            "advisory_count": 1,
            "oldest_advisory_days": 125
          },
          {
            "name": "jwt",
            "direct": true,
            "version": "3.1.2",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 7.4,
            "advisory_ids": [
              "GHSA-c32j-vqhx-rx3x"
            ],
            "fixed_version": "3.2.0",
            "advisory_count": 1,
            "oldest_advisory_days": 65
          },
          {
            "name": "activesupport",
            "direct": false,
            "version": "6.1.7.9",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-2j26-frm8-cmj9",
              "GHSA-89vf-4333-qx8v",
              "GHSA-cg4j-q9v8-6v38"
            ],
            "fixed_version": "8.1.2.1",
            "advisory_count": 3,
            "oldest_advisory_days": 121
          },
          {
            "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-v6h2-p8h4-qcjw"
            ],
            "fixed_version": "5.0.7",
            "advisory_count": 3,
            "oldest_advisory_days": 408
          },
          {
            "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-v6h2-p8h4-qcjw"
            ],
            "fixed_version": "5.0.7",
            "advisory_count": 3,
            "oldest_advisory_days": 408
          },
          {
            "name": "erb",
            "direct": false,
            "version": "6.0.1",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 8.1,
            "advisory_ids": [
              "GHSA-q339-8rmv-2mhv"
            ],
            "fixed_version": "6.0.4",
            "advisory_count": 1,
            "oldest_advisory_days": 89
          },
          {
            "name": "faraday",
            "direct": false,
            "version": "2.14.0",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-33mh-2634-fwr2",
              "GHSA-5rv5-xj5j-3484",
              "GHSA-98m9-hrrm-r99r"
            ],
            "fixed_version": "2.14.3",
            "advisory_count": 3,
            "oldest_advisory_days": 163
          },
          {
            "name": "ip",
            "direct": false,
            "version": "1.1.9",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 8.1,
            "advisory_ids": [
              "GHSA-2p57-rm9w-gvfp"
            ],
            "fixed_version": null,
            "advisory_count": 1,
            "oldest_advisory_days": 780
          },
          {
            "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": 250
          },
          {
            "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": 182
          },
          {
            "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": 154
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "5.0.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": 154
          },
          {
            "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": 154
          },
          {
            "name": "nokogiri",
            "direct": false,
            "version": "1.18.10",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-5prr-v3j2-97mh",
              "GHSA-5v8h-3h3q-446p",
              "GHSA-8678-w3jw-xfc2",
              "GHSA-9cv2-cfxc-v4v2",
              "GHSA-c4rq-3m3g-8wgx",
              "GHSA-p67v-3w7g-wjg7",
              "GHSA-phwj-rprq-35pp",
              "GHSA-v2fc-qm4h-8hqv",
              "GHSA-wfpw-mmfh-qq69",
              "GHSA-wjv4-x9w8-wm3h"
            ],
            "fixed_version": "1.19.4",
            "advisory_count": 11,
            "oldest_advisory_days": 154
          },
          {
            "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": 119
          },
          {
            "name": "rack",
            "direct": false,
            "version": "2.2.20",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-7mqq-6cf9-v2qp",
              "GHSA-8vqr-qjwx-82mw",
              "GHSA-h2jq-g4cq-5ppq",
              "GHSA-mxw3-3hh2-x2mh",
              "GHSA-q2ww-5357-x388",
              "GHSA-q4qf-9j86-f5mh",
              "GHSA-qv7j-4883-hwh7",
              "GHSA-v569-hp3g-36wr",
              "GHSA-vgpv-f759-9wx3",
              "GHSA-whrj-4476-wvmp"
            ],
            "fixed_version": "3.2.6",
            "advisory_count": 11,
            "oldest_advisory_days": 155
          },
          {
            "name": "tar",
            "direct": false,
            "version": "6.2.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 8.8,
            "advisory_ids": [
              "GHSA-23hp-3jrh-7fpw",
              "GHSA-34x7-hfp2-rc4v",
              "GHSA-83g3-92jg-28cx",
              "GHSA-8qq5-rm4j-mr97",
              "GHSA-8x88-c5mf-7j5w",
              "GHSA-9ppj-qmqm-q256",
              "GHSA-gvwx-54wh-qm9j",
              "GHSA-qffp-2rhf-9h96",
              "GHSA-r6q2-hw4h-h46w",
              "GHSA-vmf3-w455-68vh"
            ],
            "fixed_version": "7.5.19",
            "advisory_count": 11,
            "oldest_advisory_days": 187
          },
          {
            "name": "websocket-driver",
            "direct": false,
            "version": "0.8.0",
            "severity": "high",
            "ecosystem": "rubygems",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-2x63-gw47-w4mm",
              "GHSA-33ph-fccm-39pj",
              "GHSA-8j3g-f24p-4mpw",
              "GHSA-ghhp-3qvg-889p"
            ],
            "fixed_version": "0.8.2",
            "advisory_count": 4,
            "oldest_advisory_days": 7
          },
          {
            "name": "bcrypt",
            "direct": true,
            "version": "3.1.20",
            "severity": "moderate",
            "ecosystem": "rubygems",
            "cvss_score": 6.7,
            "advisory_ids": [
              "GHSA-f27w-vcwj-c954"
            ],
            "fixed_version": "3.1.22",
            "advisory_count": 1,
            "oldest_advisory_days": 125
          },
          {
            "name": "@octokit/plugin-paginate-rest",
            "direct": false,
            "version": "2.17.0",
            "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": 523
          },
          {
            "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": 523
          },
          {
            "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": 523
          },
          {
            "name": "activerecord",
            "direct": false,
            "version": "6.1.7.9",
            "severity": "moderate",
            "ecosystem": "rubygems",
            "cvss_score": null,
            "advisory_ids": [
              "GHSA-76r7-hhxj-r776"
            ],
            "fixed_version": "8.0.2.1",
            "advisory_count": 1,
            "oldest_advisory_days": 343
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.12.0",
            "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": 161
          },
          {
            "name": "diff",
            "direct": false,
            "version": "4.0.2",
            "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": 189
          },
          {
            "name": "diff",
            "direct": false,
            "version": "5.2.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": 189
          },
          {
            "name": "loofah",
            "direct": false,
            "version": "2.24.1",
            "severity": "moderate",
            "ecosystem": "rubygems",
            "cvss_score": 4.7,
            "advisory_ids": [
              "GHSA-9wjq-cp2p-hrgf"
            ],
            "fixed_version": "2.25.2",
            "advisory_count": 1,
            "oldest_advisory_days": 1
          },
          {
            "name": "net-imap",
            "direct": false,
            "version": "0.5.12",
            "severity": "moderate",
            "ecosystem": "rubygems",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-46q3-7gv7-qmgg",
              "GHSA-75xq-5h9v-w6px",
              "GHSA-87pf-fpwv-p7m7",
              "GHSA-8p34-64r3-mwg8",
              "GHSA-c4fp-cxrr-mj66",
              "GHSA-hm49-wcqc-g2xg",
              "GHSA-q2mw-fvj9-vvcw",
              "GHSA-vcgp-9326-pqcp"
            ],
            "fixed_version": "0.6.4.1",
            "advisory_count": 8,
            "oldest_advisory_days": 79
          },
          {
            "name": "yaml",
            "direct": false,
            "version": "1.10.0",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 4.3,
            "advisory_ids": [
              "GHSA-48c2-rrv3-qjmp"
            ],
            "fixed_version": "2.8.3",
            "advisory_count": 1,
            "oldest_advisory_days": 119
          },
          {
            "name": "@tootallnate/once",
            "direct": false,
            "version": "2.0.0",
            "severity": "low",
            "ecosystem": "npm",
            "cvss_score": 3.3,
            "advisory_ids": [
              "GHSA-vpq2-c234-7xj6"
            ],
            "fixed_version": "3.0.1",
            "advisory_count": 1,
            "oldest_advisory_days": 142
          },
          {
            "name": "actionpack",
            "direct": false,
            "version": "6.1.7.9",
            "severity": "low",
            "ecosystem": "rubygems",
            "cvss_score": 0,
            "advisory_ids": [
              "GHSA-vfm5-rmrh-j26v"
            ],
            "fixed_version": "8.0.0.1",
            "advisory_count": 1,
            "oldest_advisory_days": 589
          },
          {
            "name": "actionview",
            "direct": false,
            "version": "6.1.7.9",
            "severity": "low",
            "ecosystem": "rubygems",
            "cvss_score": null,
            "advisory_ids": [
              "GHSA-v55j-83pf-r9cq"
            ],
            "fixed_version": "8.1.2.1",
            "advisory_count": 1,
            "oldest_advisory_days": 121
          },
          {
            "name": "rails-html-sanitizer",
            "direct": false,
            "version": "1.6.2",
            "severity": "low",
            "ecosystem": "rubygems",
            "cvss_score": 0,
            "advisory_ids": [
              "GHSA-cj75-f6xr-r4g7"
            ],
            "fixed_version": "1.7.1",
            "advisory_count": 1,
            "oldest_advisory_days": 1
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "low": 4,
          "high": 20,
          "critical": 2,
          "moderate": 11
        },
        "advisory_count": 110,
        "affected_count": 37,
        "assessed_count": 718,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 14,
        "direct_affected_count": 5
      },
      "ecosystems": [
        "npm",
        "rubygems"
      ],
      "dependencies": [
        {
          "name": "rails",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": "6.1.7.9"
        },
        {
          "name": "concurrent-ruby",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": "1.3.4"
        },
        {
          "name": "forestadmin-jsonapi-serializers",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "rack-cors",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "groupdate",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": "5.2.2"
        },
        {
          "name": "useragent",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "jwt",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "bcrypt",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "httparty",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": "0.21.0"
        },
        {
          "name": "ipaddress",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": "0.8.3"
        },
        {
          "name": "openid_connect",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": "1.4.2"
        },
        {
          "name": "json",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "json-jwt",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": ">= 1.16"
        },
        {
          "name": "deepsort",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        },
        {
          "name": "ostruct",
          "manifest": "Gemfile",
          "ecosystem": "rubygems",
          "version_constraint": null
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "bcrypt",
            "direct": true,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "bcrypt",
            "direct": true,
            "version": "3.1.20",
            "ecosystem": "rubygems"
          },
          {
            "name": "concurrent-ruby",
            "direct": true,
            "version": "1.3.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "deepsort",
            "direct": true,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "deepsort",
            "direct": true,
            "version": "0.5.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "forestadmin-jsonapi-serializers",
            "direct": true,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "forestadmin-jsonapi-serializers",
            "direct": true,
            "version": "2.0.0.pre.beta.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "groupdate",
            "direct": true,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "groupdate",
            "direct": true,
            "version": "5.2.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "httparty",
            "direct": true,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "httparty",
            "direct": true,
            "version": "0.21.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "ipaddress",
            "direct": true,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "ipaddress",
            "direct": true,
            "version": "0.8.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "json",
            "direct": true,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "json",
            "direct": true,
            "version": "2.15.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "json-jwt",
            "direct": true,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "json-jwt",
            "direct": true,
            "version": "1.17.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "jwt",
            "direct": true,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "jwt",
            "direct": true,
            "version": "3.1.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "openid_connect",
            "direct": true,
            "version": "1.4.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "ostruct",
            "direct": true,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "ostruct",
            "direct": true,
            "version": "0.6.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "rack-cors",
            "direct": true,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "rack-cors",
            "direct": true,
            "version": "2.0.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "rails",
            "direct": true,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "rails",
            "direct": true,
            "version": "6.1.7.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "useragent",
            "direct": true,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "useragent",
            "direct": true,
            "version": "0.16.11",
            "ecosystem": "rubygems"
          },
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.9.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/highlight",
            "direct": false,
            "version": "7.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "@colors/colors",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/cli",
            "direct": false,
            "version": "17.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/config-conventional",
            "direct": false,
            "version": "17.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/config-validator",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/ensure",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/execute-rule",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/format",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/is-ignored",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/lint",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/load",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/message",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/parse",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/read",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/resolve-extends",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/rules",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/to-lines",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/top-level",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@commitlint/types",
            "direct": false,
            "version": "17.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cspotcode/source-map-support",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@gar/promisify",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@isaacs/string-locale-compare",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/resolve-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.4.15",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.9",
            "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": "@npmcli/arborist",
            "direct": false,
            "version": "5.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/ci-detect",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/config",
            "direct": false,
            "version": "4.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/disparity-colors",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/fs",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/fs",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/git",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/installed-package-contents",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/map-workspaces",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/metavuln-calculator",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/move-file",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/name-from-folder",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/node-gyp",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/package-json",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/promise-spawn",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/query",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/run-script",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@npmcli/run-script",
            "direct": false,
            "version": "4.2.1",
            "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": "11.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@octokit/plugin-paginate-rest",
            "direct": false,
            "version": "2.17.0",
            "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.13.0",
            "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.34.0",
            "ecosystem": "npm"
          },
          {
            "name": "@semantic-release/changelog",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@semantic-release/commit-analyzer",
            "direct": false,
            "version": "9.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@semantic-release/error",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@semantic-release/error",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@semantic-release/exec",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@semantic-release/git",
            "direct": false,
            "version": "10.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@semantic-release/github",
            "direct": false,
            "version": "8.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@semantic-release/npm",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@semantic-release/release-notes-generator",
            "direct": false,
            "version": "10.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tootallnate/once",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tsconfig/node10",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@tsconfig/node12",
            "direct": false,
            "version": "1.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "@tsconfig/node14",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tsconfig/node16",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/color-name",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mdast",
            "direct": false,
            "version": "3.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "@types/minimist",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "20.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/normalize-package-data",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/parse-json",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/retry",
            "direct": false,
            "version": "0.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/unist",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "abbrev",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.11.3",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-walk",
            "direct": false,
            "version": "8.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "agent-base",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "agentkeepalive",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "aggregate-error",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-escapes",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansicolors",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "aproba",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "archy",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "are-we-there-yet",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "arg",
            "direct": false,
            "version": "4.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "argv-formatter",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "array-ify",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "array-union",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "arrify",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "asap",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "at-least-node",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "bail",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "before-after-hook",
            "direct": false,
            "version": "2.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "bin-links",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "binary-extensions",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "bottleneck",
            "direct": false,
            "version": "2.19.5",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.11",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "builtins",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "cacache",
            "direct": false,
            "version": "16.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "cacache",
            "direct": false,
            "version": "16.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "callsites",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase-keys",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "cardinal",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "ccount",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "2.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities-legacy",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "character-reference-invalid",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "chownr",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cidr-regex",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "clean-stack",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-columns",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-table3",
            "direct": false,
            "version": "0.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "7.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "clone",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "cmd-shim",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "1.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "color-support",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "columnify",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "common-ancestor-path",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "compare-func",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "console-control-strings",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-changelog-angular",
            "direct": false,
            "version": "5.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-changelog-angular",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-changelog-conventionalcommits",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-changelog-writer",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-commits-filter",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-commits-parser",
            "direct": false,
            "version": "3.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "conventional-commits-parser",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "core-util-is",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "cosmiconfig",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cosmiconfig",
            "direct": false,
            "version": "8.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "cosmiconfig-typescript-loader",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "create-require",
            "direct": false,
            "version": "1.1.1",
            "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": "cssesc",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "dargs",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "dateformat",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "debuglog",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "decamelize",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "decamelize-keys",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "deep-extend",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "defaults",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "del",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "delegates",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "depd",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "deprecation",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "dezalgo",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "diff",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "diff",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "dir-glob",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "dot-prop",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "duplexer2",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "encoding",
            "direct": false,
            "version": "0.1.13",
            "ecosystem": "npm"
          },
          {
            "name": "end-of-stream",
            "direct": false,
            "version": "1.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "env-ci",
            "direct": false,
            "version": "5.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "env-paths",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "err-code",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "error-ex",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.1.1",
            "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": "esprima",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "execa",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "execa",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "exponential-backoff",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "extend",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-glob",
            "direct": false,
            "version": "3.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "fastest-levenshtein",
            "direct": false,
            "version": "1.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "fastq",
            "direct": false,
            "version": "1.13.0",
            "ecosystem": "npm"
          },
          {
            "name": "figures",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "figures",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "2.1.0",
            "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": "find-versions",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "from2",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "fromentries",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "fs-extra",
            "direct": false,
            "version": "10.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fs-extra",
            "direct": false,
            "version": "11.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "fs-extra",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fs-extra",
            "direct": false,
            "version": "9.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fs-minipass",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fs.realpath",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "function-bind",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "gauge",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "get-caller-file",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "git-log-parser",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "git-raw-commits",
            "direct": false,
            "version": "2.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "global-dirs",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "globby",
            "direct": false,
            "version": "11.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.10",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "handlebars",
            "direct": false,
            "version": "4.7.7",
            "ecosystem": "npm"
          },
          {
            "name": "hard-rejection",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "has",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-unicode",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hook-std",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hosted-git-info",
            "direct": false,
            "version": "2.8.9",
            "ecosystem": "npm"
          },
          {
            "name": "hosted-git-info",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "hosted-git-info",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hosted-git-info",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "http-cache-semantics",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "http-proxy-agent",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "https-proxy-agent",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "human-signals",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "human-signals",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "humanize-ms",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "husky",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ignore-walk",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "import-fresh",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "import-fresh",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "import-fresh",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "import-from",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "imurmurhash",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "indent-string",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "infer-owner",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "inflight",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "ini",
            "direct": false,
            "version": "1.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "ini",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ini",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "init-package-json",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "into-stream",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ip",
            "direct": false,
            "version": "1.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "ip-regex",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-alphabetical",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-alphanumerical",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-arrayish",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-buffer",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "is-cidr",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-core-module",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-decimal",
            "direct": false,
            "version": "1.0.4",
            "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-hexadecimal",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-lambda",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-obj",
            "direct": false,
            "version": "2.0.0",
            "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-stream",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-text-path",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "isarray",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "issue-parser",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "java-properties",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-parse-better-errors",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "json-parse-even-better-errors",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-stringify-nice",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "json-stringify-safe",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "jsonfile",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "jsonparse",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "JSONStream",
            "direct": false,
            "version": "1.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "just-diff",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "just-diff-apply",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "kind-of",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "libnpmaccess",
            "direct": false,
            "version": "6.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "libnpmdiff",
            "direct": false,
            "version": "4.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "libnpmexec",
            "direct": false,
            "version": "4.0.14",
            "ecosystem": "npm"
          },
          {
            "name": "libnpmfund",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "libnpmhook",
            "direct": false,
            "version": "8.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "libnpmorg",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "libnpmpack",
            "direct": false,
            "version": "4.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "libnpmpublish",
            "direct": false,
            "version": "6.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "libnpmsearch",
            "direct": false,
            "version": "5.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "libnpmteam",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "libnpmversion",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "lines-and-columns",
            "direct": false,
            "version": "1.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "load-json-file",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "2.0.0",
            "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.camelcase",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.capitalize",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.escaperegexp",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.isfunction",
            "direct": false,
            "version": "3.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.ismatch",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.isplainobject",
            "direct": false,
            "version": "4.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.isstring",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.kebabcase",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.merge",
            "direct": false,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.mergewith",
            "direct": false,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.snakecase",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.startcase",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.uniq",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.uniqby",
            "direct": false,
            "version": "4.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.upperfirst",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "longest-streak",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "7.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "make-error",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "make-fetch-happen",
            "direct": false,
            "version": "10.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "make-fetch-happen",
            "direct": false,
            "version": "10.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "map-obj",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "map-obj",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "markdown-table",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "marked",
            "direct": false,
            "version": "4.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "marked-terminal",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-find-and-replace",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-from-markdown",
            "direct": false,
            "version": "0.8.5",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-autolink-literal",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-strikethrough",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-table",
            "direct": false,
            "version": "0.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-task-list-item",
            "direct": false,
            "version": "0.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-markdown",
            "direct": false,
            "version": "0.6.5",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-string",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "meow",
            "direct": false,
            "version": "8.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "merge-stream",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge2",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark",
            "direct": false,
            "version": "2.11.4",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm",
            "direct": false,
            "version": "0.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-autolink-literal",
            "direct": false,
            "version": "0.5.7",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-strikethrough",
            "direct": false,
            "version": "0.6.5",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-table",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-tagfilter",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-task-list-item",
            "direct": false,
            "version": "0.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "mime",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-fn",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "min-indent",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "5.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "minimist-options",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "minipass",
            "direct": false,
            "version": "3.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "minipass",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "minipass-collect",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "minipass-fetch",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "minipass-flush",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "minipass-json-stream",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "minipass-pipeline",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "minipass-sized",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "minizlib",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "mkdirp",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "mkdirp-infer-owner",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "modify-values",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "mute-stream",
            "direct": false,
            "version": "0.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "negotiator",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "neo-async",
            "direct": false,
            "version": "2.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "nerf-dart",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-emoji",
            "direct": false,
            "version": "1.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-fetch",
            "direct": false,
            "version": "2.6.7",
            "ecosystem": "npm"
          },
          {
            "name": "node-gyp",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-gyp",
            "direct": false,
            "version": "9.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "nopt",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "nopt",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-package-data",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-package-data",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-package-data",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-url",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "npm",
            "direct": false,
            "version": "8.19.4",
            "ecosystem": "npm"
          },
          {
            "name": "npm-audit-report",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "npm-bundled",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "npm-bundled",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "npm-install-checks",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "npm-normalize-package-bin",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "npm-normalize-package-bin",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "npm-package-arg",
            "direct": false,
            "version": "9.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "npm-package-arg",
            "direct": false,
            "version": "9.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "npm-packlist",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "npm-packlist",
            "direct": false,
            "version": "5.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "npm-pick-manifest",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "npm-pick-manifest",
            "direct": false,
            "version": "7.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "npm-profile",
            "direct": false,
            "version": "6.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "npm-registry-fetch",
            "direct": false,
            "version": "13.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "npm-registry-fetch",
            "direct": false,
            "version": "13.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "npm-run-path",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "npm-user-validate",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "npmlog",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "onetime",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "opener",
            "direct": false,
            "version": "1.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "p-each-series",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-filter",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-is-promise",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "1.3.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": "2.0.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": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-map",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-reduce",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-retry",
            "direct": false,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "p-try",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-try",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "pacote",
            "direct": false,
            "version": "13.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "pacote",
            "direct": false,
            "version": "13.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "parent-module",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parse-conflict-json",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "parse-entities",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse-json",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse-json",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse-json",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-is-absolute",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-key",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-parse",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "path-type",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "pify",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "pkg-conf",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-selector-parser",
            "direct": false,
            "version": "6.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "proc-log",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "process-nextick-args",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "promise-all-reject-late",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "promise-call-limit",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "promise-inflight",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "promise-retry",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "promzard",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "pump",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "q",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "qrcode-terminal",
            "direct": false,
            "version": "0.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "queue-microtask",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "quick-lru",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "rc",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "read",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "read-cmd-shim",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "read-package-json",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "read-package-json",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "read-package-json-fast",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "read-pkg",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "read-pkg-up",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "2.3.7",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "readdir-scoped-modules",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "redent",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "redeyed",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "registry-auth-token",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "remark-gfm",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "remark-parse",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "remark-stringify",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "repeat-string",
            "direct": false,
            "version": "1.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-directory",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-from-string",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "resolve",
            "direct": false,
            "version": "1.15.1",
            "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": "resolve-global",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "retry",
            "direct": false,
            "version": "0.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "retry",
            "direct": false,
            "version": "0.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "reusify",
            "direct": false,
            "version": "1.0.4",
            "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.0",
            "ecosystem": "npm"
          },
          {
            "name": "safer-buffer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "semantic-release",
            "direct": false,
            "version": "19.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "semantic-release-rubygem",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "semantic-release-slack-bot",
            "direct": false,
            "version": "3.5.2",
            "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.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "semver-diff",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "semver-regex",
            "direct": false,
            "version": "3.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "set-blocking",
            "direct": false,
            "version": "2.0.0",
            "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": "signal-exit",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "signale",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "slackify-markdown",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "slash",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "smart-buffer",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "socks",
            "direct": false,
            "version": "2.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "socks-proxy-agent",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "socks-proxy-agent",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "spawn-error-forwarder",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-correct",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-exceptions",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-expression-parse",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-license-ids",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "split",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "split2",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "split2",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "ssri",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ssri",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "stream-combiner2",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.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.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-final-newline",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-indent",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "5.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-hyperlinks",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "tar",
            "direct": false,
            "version": "6.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "temp-dir",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "tempy",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "tempy",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "text-extensions",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "text-table",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "through",
            "direct": false,
            "version": "2.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "through2",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "through2",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "tiny-relative-date",
            "direct": false,
            "version": "1.3.0",
            "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.6.6",
            "ecosystem": "npm"
          },
          {
            "name": "treeverse",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "trim-newlines",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "trough",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "ts-node",
            "direct": false,
            "version": "10.9.2",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "5.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "uglify-js",
            "direct": false,
            "version": "3.15.4",
            "ecosystem": "npm"
          },
          {
            "name": "unified",
            "direct": false,
            "version": "9.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "unique-filename",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "unique-filename",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "unique-slug",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "unique-slug",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unique-string",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-is",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-remove",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-stringify-position",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit-parents",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "universal-user-agent",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "universalify",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "universalify",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "uri-js",
            "direct": false,
            "version": "4.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "url-join",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "util-deprecate",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "v8-compile-cache-lib",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "validate-npm-package-license",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "validate-npm-package-name",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "vfile",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "vfile-message",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "walk-up-path",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wcwidth",
            "direct": false,
            "version": "1.0.1",
            "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": "wide-align",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "wordwrap",
            "direct": false,
            "version": "1.0.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": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "xtend",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "5.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "yaml",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "16.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "17.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "20.2.9",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "21.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yn",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "zwitch",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "actioncable",
            "direct": false,
            "version": "6.1.7.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "actionmailbox",
            "direct": false,
            "version": "6.1.7.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "actionmailer",
            "direct": false,
            "version": "6.1.7.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "actionpack",
            "direct": false,
            "version": "6.1.7.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "actiontext",
            "direct": false,
            "version": "6.1.7.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "actionview",
            "direct": false,
            "version": "6.1.7.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "activejob",
            "direct": false,
            "version": "6.1.7.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "activemodel",
            "direct": false,
            "version": "6.1.7.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "activerecord",
            "direct": false,
            "version": "6.1.7.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "activestorage",
            "direct": false,
            "version": "6.1.7.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "activesupport",
            "direct": false,
            "version": "6.1.7.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "aes_key_wrap",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "attr_required",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "base64",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "bigdecimal",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "bindata",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "builder",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "byebug",
            "direct": false,
            "version": "12.0.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "crass",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "rubygems"
          },
          {
            "name": "csv",
            "direct": false,
            "version": null,
            "ecosystem": "rubygems"
          },
          {
            "name": "csv",
            "direct": false,
            "version": "3.3.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "date",
            "direct": false,
            "version": "3.4.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "diff-lcs",
            "direct": false,
            "version": "1.6.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "docile",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "erb",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "erubi",
            "direct": false,
            "version": "1.13.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "faraday",
            "direct": false,
            "version": "2.14.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "faraday-follow_redirects",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "faraday-net_http",
            "direct": false,
            "version": "3.4.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "globalid",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "httpclient",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "i18n",
            "direct": false,
            "version": "1.14.7",
            "ecosystem": "rubygems"
          },
          {
            "name": "logger",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "loofah",
            "direct": false,
            "version": "2.24.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "mail",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "marcel",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "method_source",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "mini_mime",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "minitest",
            "direct": false,
            "version": "5.27.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "multi_xml",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "mutex_m",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "net-http",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "net-imap",
            "direct": false,
            "version": "0.5.12",
            "ecosystem": "rubygems"
          },
          {
            "name": "net-pop",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "net-protocol",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "net-smtp",
            "direct": false,
            "version": "0.5.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "nio4r",
            "direct": false,
            "version": "2.7.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "nokogiri",
            "direct": false,
            "version": "1.18.10",
            "ecosystem": "rubygems"
          },
          {
            "name": "psych",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "public_suffix",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "racc",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "rubygems"
          },
          {
            "name": "rack",
            "direct": false,
            "version": "2.2.20",
            "ecosystem": "rubygems"
          },
          {
            "name": "rack-oauth2",
            "direct": false,
            "version": "1.21.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "rack-test",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rails-dom-testing",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rails-html-sanitizer",
            "direct": false,
            "version": "1.6.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "railties",
            "direct": false,
            "version": "6.1.7.9",
            "ecosystem": "rubygems"
          },
          {
            "name": "rake",
            "direct": false,
            "version": "13.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "rdoc",
            "direct": false,
            "version": "7.0.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "rspec-core",
            "direct": false,
            "version": "3.13.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "rspec-expectations",
            "direct": false,
            "version": "3.13.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "rspec-mocks",
            "direct": false,
            "version": "3.13.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "rspec-rails",
            "direct": false,
            "version": "6.1.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "rspec-support",
            "direct": false,
            "version": "3.13.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "simplecov",
            "direct": false,
            "version": "0.22.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "simplecov-html",
            "direct": false,
            "version": "0.13.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "simplecov_json_formatter",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "sprockets",
            "direct": false,
            "version": "4.2.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "sprockets-rails",
            "direct": false,
            "version": "3.5.2",
            "ecosystem": "rubygems"
          },
          {
            "name": "sqlite3",
            "direct": false,
            "version": "1.7.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "stringio",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "swd",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "thor",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "timecop",
            "direct": false,
            "version": "0.9.10",
            "ecosystem": "rubygems"
          },
          {
            "name": "timeout",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "rubygems"
          },
          {
            "name": "tsort",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "tzinfo",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "rubygems"
          },
          {
            "name": "uri",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "rubygems"
          },
          {
            "name": "validate_email",
            "direct": false,
            "version": "0.1.6",
            "ecosystem": "rubygems"
          },
          {
            "name": "validate_url",
            "direct": false,
            "version": "1.0.15",
            "ecosystem": "rubygems"
          },
          {
            "name": "webfinger",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "websocket-driver",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "rubygems"
          },
          {
            "name": "websocket-extensions",
            "direct": false,
            "version": "0.1.5",
            "ecosystem": "rubygems"
          },
          {
            "name": "zeitwerk",
            "direct": false,
            "version": "2.7.3",
            "ecosystem": "rubygems"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 732,
        "direct_count": 28,
        "indirect_count": 704
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 22,
        "merged_prs": 531,
        "open_issues": 49,
        "closed_ratio": 0.675,
        "closed_issues": 102,
        "closed_unmerged_prs": 76
      },
      "bus_factor": 2,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "arnaudbesnier",
          "commits": 530,
          "avatar_url": "https://avatars.githubusercontent.com/u/664261?v=4"
        },
        {
          "type": "User",
          "login": "SeyZ",
          "commits": 396,
          "avatar_url": "https://avatars.githubusercontent.com/u/519129?v=4"
        },
        {
          "type": "User",
          "login": "forest-bot",
          "commits": 212,
          "avatar_url": "https://avatars.githubusercontent.com/u/60007188?v=4"
        },
        {
          "type": "User",
          "login": "matthv",
          "commits": 75,
          "avatar_url": "https://avatars.githubusercontent.com/u/10195400?v=4"
        },
        {
          "type": "User",
          "login": "nicolasalexandre9",
          "commits": 42,
          "avatar_url": "https://avatars.githubusercontent.com/u/17160712?v=4"
        },
        {
          "type": "User",
          "login": "ArnaudValensi",
          "commits": 25,
          "avatar_url": "https://avatars.githubusercontent.com/u/604486?v=4"
        },
        {
          "type": "User",
          "login": "DrRaider",
          "commits": 24,
          "avatar_url": "https://avatars.githubusercontent.com/u/26116140?v=4"
        },
        {
          "type": "User",
          "login": "jeffladiray",
          "commits": 23,
          "avatar_url": "https://avatars.githubusercontent.com/u/22832687?v=4"
        },
        {
          "type": "User",
          "login": "SteveBunlon",
          "commits": 22,
          "avatar_url": "https://avatars.githubusercontent.com/u/12433882?v=4"
        },
        {
          "type": "User",
          "login": "GuillaumeCisco",
          "commits": 12,
          "avatar_url": "https://avatars.githubusercontent.com/u/1155244?v=4"
        }
      ],
      "contributors_sampled": 51,
      "top_contributor_share": 0.364
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "build.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "Gemfile.lock",
        "yarn.lock"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": null,
            "reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "14 out of 14 merged PRs checked by a CI test -- score normalized to 10",
            "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": 5,
            "reason": "Found 14/27 approved changesets -- score normalized to 5",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 8 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "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": "25 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": 1,
            "reason": "dependency not pinned by hash detected -- score normalized to 1",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "99 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "7d3e8df6bd3ed1780a3fe2e7bee36c3861b36c35",
        "ran_at": "2026-07-23T12:40:56Z",
        "aggregate_score": 5.8,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-23T12:35:46Z",
      "oldest_open_prs": [
        {
          "number": 290,
          "created_at": "2018-10-15T09:01:05Z",
          "last_comment_at": "2018-10-23T14:42:13Z",
          "last_comment_author": "arnaudbesnier"
        },
        {
          "number": 316,
          "created_at": "2019-05-23T18:17:43Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 457,
          "created_at": "2021-05-07T12:24:52Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 483,
          "created_at": "2021-06-09T07:56:14Z",
          "last_comment_at": "2021-06-09T07:56:58Z",
          "last_comment_author": "qlty-cloud-legacy"
        },
        {
          "number": 487,
          "created_at": "2021-06-10T10:01:12Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 501,
          "created_at": "2021-06-29T18:32:24Z",
          "last_comment_at": "2021-06-30T14:07:07Z",
          "last_comment_author": "qlty-cloud-legacy"
        },
        {
          "number": 513,
          "created_at": "2021-08-11T03:59:45Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 549,
          "created_at": "2022-03-29T16:09:20Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 550,
          "created_at": "2022-03-29T16:09:25Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 557,
          "created_at": "2022-05-10T06:59:10Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 563,
          "created_at": "2022-06-02T16:02:18Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 564,
          "created_at": "2022-06-04T00:09:44Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 565,
          "created_at": "2022-06-10T01:04:47Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 571,
          "created_at": "2022-07-19T09:48:12Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 581,
          "created_at": "2022-08-24T09:08:16Z",
          "last_comment_at": "2022-08-24T09:09:25Z",
          "last_comment_author": "qlty-cloud-legacy"
        },
        {
          "number": 594,
          "created_at": "2023-01-03T15:35:15Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 598,
          "created_at": "2023-01-19T10:57:55Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 599,
          "created_at": "2023-02-04T11:23:37Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 607,
          "created_at": "2023-03-09T02:23:51Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 674,
          "created_at": "2024-04-19T07:32:17Z",
          "last_comment_at": "2024-04-19T07:33:24Z",
          "last_comment_author": "qlty-cloud-legacy"
        }
      ],
      "last_merged_pr_at": "2026-07-23T12:34:18Z",
      "ci_last_conclusion": null,
      "oldest_open_issues": [
        {
          "number": 140,
          "created_at": "2017-05-01T16:17:55Z",
          "last_comment_at": "2019-01-31T12:13:37Z",
          "last_comment_author": "lostie"
        },
        {
          "number": 170,
          "created_at": "2017-08-01T23:58:23Z",
          "last_comment_at": "2017-12-17T17:02:53Z",
          "last_comment_author": "daniel-gato"
        },
        {
          "number": 177,
          "created_at": "2017-08-11T08:08:13Z",
          "last_comment_at": "2020-08-05T09:45:41Z",
          "last_comment_author": "stefatkins"
        },
        {
          "number": 178,
          "created_at": "2017-08-11T08:14:30Z",
          "last_comment_at": "2017-12-17T18:41:42Z",
          "last_comment_author": "karensg"
        },
        {
          "number": 207,
          "created_at": "2017-11-23T15:54:07Z",
          "last_comment_at": "2018-01-11T14:59:13Z",
          "last_comment_author": "daniel-gato"
        },
        {
          "number": 208,
          "created_at": "2017-11-24T12:10:59Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 213,
          "created_at": "2017-12-19T13:41:44Z",
          "last_comment_at": "2017-12-27T15:00:46Z",
          "last_comment_author": "daniel-gato"
        },
        {
          "number": 214,
          "created_at": "2017-12-20T08:46:49Z",
          "last_comment_at": "2017-12-22T06:50:03Z",
          "last_comment_author": "daniel-gato"
        },
        {
          "number": 227,
          "created_at": "2018-01-11T14:00:57Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 256,
          "created_at": "2018-04-19T08:38:09Z",
          "last_comment_at": "2018-08-22T05:30:23Z",
          "last_comment_author": "arnaudbesnier"
        },
        {
          "number": 267,
          "created_at": "2018-06-25T08:42:32Z",
          "last_comment_at": "2023-04-21T07:38:02Z",
          "last_comment_author": "YoranBrondsema"
        },
        {
          "number": 278,
          "created_at": "2018-08-06T14:36:38Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 279,
          "created_at": "2018-08-17T07:36:34Z",
          "last_comment_at": "2018-10-21T20:40:58Z",
          "last_comment_author": "arnaudbesnier"
        },
        {
          "number": 291,
          "created_at": "2018-10-16T09:00:59Z",
          "last_comment_at": "2018-10-22T08:31:43Z",
          "last_comment_author": "CFtriksX"
        },
        {
          "number": 294,
          "created_at": "2018-10-17T15:38:22Z",
          "last_comment_at": "2018-10-21T14:49:24Z",
          "last_comment_author": "arnaudbesnier"
        },
        {
          "number": 302,
          "created_at": "2018-12-17T08:03:00Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 306,
          "created_at": "2019-02-04T17:47:38Z",
          "last_comment_at": "2024-05-10T14:12:32Z",
          "last_comment_author": "abdallaayman21"
        },
        {
          "number": 312,
          "created_at": "2019-04-26T08:26:09Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 313,
          "created_at": "2019-04-26T10:23:39Z",
          "last_comment_at": "2019-05-27T11:33:23Z",
          "last_comment_author": "pawelwiewiora"
        },
        {
          "number": 317,
          "created_at": "2019-05-31T13:32:24Z",
          "last_comment_at": "2021-04-10T00:10:48Z",
          "last_comment_author": "iyerushalmi"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/ForestAdmin/forest-rails",
    "host": "github.com",
    "name": "forest-rails",
    "owner": "ForestAdmin"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 71,
      "inputs": {
        "security": 55,
        "vitality": 84,
        "community": 69,
        "governance": 74,
        "engineering": 67
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 84,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 74,
            "inputs": {
              "commits_last_year": 57,
              "human_commit_share": 1,
              "days_since_last_push": 0,
              "active_weeks_last_year": 17
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "17/52 weeks with commits",
                "points": 11.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 17
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "57 commits in the last year",
                "points": 15.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 57
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "25 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 100,
              "latest_release_tag": "v9.20.1",
              "releases_from_tags": false,
              "days_since_latest_release": 0,
              "mean_days_between_releases": 7
            },
            "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 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~7 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 7
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 0,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 0 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 69,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "moderate",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 64,
            "inputs": {
              "forks": 83,
              "stars": 385,
              "watchers": 12,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "385 stars",
                "points": 41.9,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 385
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "83 forks",
                "points": 16,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 83
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "12 watchers",
                "points": 5.8,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 12
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 65,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "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 (GPL-3.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "GPL-3.0"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 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
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "good",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 84,
            "inputs": {
              "packages": [
                "forest_liana"
              ],
              "dependents": null,
              "ecosystems": "rubygems",
              "total_downloads": 2777110,
              "monthly_downloads": null
            },
            "components": [
              {
                "key": "total_downloads",
                "name": "Total downloads",
                "detail": "2,777,110 downloads all-time across rubygems",
                "points": 67,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_total",
                    "params": {
                      "count": 2777110,
                      "ecosystems": "rubygems"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "good",
        "name": "Sustainability & Governance",
        "value": 74,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "moderate",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 63,
            "inputs": {
              "bus_factor": 2,
              "contributors_sampled": 51,
              "top_contributor_share": 0.364
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "2 contributor(s) cover half of all commits",
                "points": 25.2,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 36% of commits",
                "points": 14.3,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 36
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "51 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 51
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 8 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 73,
            "inputs": {
              "merged_prs": 531,
              "open_issues": 49,
              "closed_issues": 102,
              "issue_closed_ratio": 0.675,
              "closed_unmerged_prs": 76
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "68% of issues closed",
                "points": 31.6,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 68
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "531/607 decided PRs merged",
                "points": 33.5,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 531,
                      "decided": 607
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 14/27 approved changesets -- score normalized to 5",
                "points": 7.5,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 69,
            "inputs": {
              "followers": 85,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "ForestAdmin",
              "public_repos": 87,
              "account_age_days": 4003
            },
            "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": "85 followers of ForestAdmin",
                "points": 13.9,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 85,
                      "login": "ForestAdmin"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "87 public repos, account ~10 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 87
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 10
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "forest_liana"
              ],
              "ecosystems": "rubygems",
              "any_deprecated": false,
              "min_days_since_publish": 0
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on rubygems",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "rubygems"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 0 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "538 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 538
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 67,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "1 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "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": "14 out of 14 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 65,
            "inputs": {
              "topics": [
                "admin",
                "rails",
                "gem",
                "admin-panel",
                "internal-tool",
                "ruby",
                "ruby-on-rails",
                "backend",
                "backend-api"
              ],
              "has_wiki": false,
              "homepage": "https://www.forestadmin.com",
              "has_readme": true,
              "has_docs_dir": false,
              "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://www.forestadmin.com",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "9 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 9
                    }
                  }
                ],
                "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": "moderate",
        "name": "Security",
        "value": 55,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Branch-Protection, Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection",
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 58,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 15,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 3,
              "scorecard_aggregate": 5.8
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "14 out of 14 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "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 14/27 approved changesets -- score normalized to 5",
                "points": 3.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 8 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "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": "25 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 1",
                "points": 0.5,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "99 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "at_risk",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories. Remaining weights renormalized. Matched 718 resolved dependencies against OSV; 14 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"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 718
                }
              },
              {
                "code": "advisories_unassessed",
                "params": {
                  "count": 14
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 43,
            "inputs": {
              "source": "osv",
              "advisories": 110,
              "affected_packages": 37,
              "assessed_packages": 718,
              "unassessed_packages": 14,
              "affected_by_severity": "critical 2, high 20, moderate 11, low 4",
              "direct_affected_packages": 5
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "5 affected: concurrent-ruby 1.3.4 (high 7.5), httparty 0.21.0 (high 8.2), json 2.15.1 (high 8.2), +2 more",
                "points": 6.9,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 5,
                      "packages": "concurrent-ruby 1.3.4 (high 7.5), httparty 0.21.0 (high 8.2), json 2.15.1 (high 8.2)"
                    }
                  },
                  {
                    "code": "advisories_affected_more",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "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": "3 advisory-carrying package(s) unaddressed past 90 days; oldest published 211 days ago",
                "points": 25.4,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_stale",
                    "params": {
                      "days": 90,
                      "count": 3,
                      "oldest": 211
                    }
                  }
                ],
                "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": 718,
              "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": 10
            },
            "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": "at_risk",
        "name": "AI Readiness",
        "value": 44,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "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": "100 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 100,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "at_risk",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 43,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "Gemfile.lock",
                "yarn.lock"
              ],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.1,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "10 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 10,
                      "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 1",
                "points": 1,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "primary_language": "Ruby",
              "largest_source_bytes": 27760,
              "source_files_sampled": 288,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Ruby without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "Ruby"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/288 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 288,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "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",
    "Could not fetch npm package 'forest-rails' from its registry"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-23T12:41:21.245982Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/f/ForestAdmin/forest-rails.svg",
  "full_name": "ForestAdmin/forest-rails",
  "license_state": "standard",
  "license_spdx": "GPL-3.0"
}

Bewertungen sind Signale, keine Garantien. Sie spiegeln öffentlich sichtbare Praxis auf GitHub wider — kein Code-Audit und keine Sicherheitsgarantie.

Fehlende Daten werden ausgeschlossen und die Gewichte neu normiert, nie als null bewertet. Die Methodik ist versioniert und offen: Metriken v1.13.0, Schema v0.27.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte StatistikenRubyGems.