Публічний реєстр
Звіт про здоров'я програмного забезпеченнясхема 0.27.0 · метрики 1.13.0 · 2026-07-28 15:26 UTC

STRRL / cloudflare-tunnel-ingress-controller

🚀 Expose the website directly into the internet! The Kuberntes Ingress Controller based on Cloudflare Tunnel.

GoMIT★ 1 172 зірки⑂ 88 форківз трав. 2023 р.Переглянути на GitHub ↗

STRRL/cloudflare-tunnel-ingress-controller має індекс здоров’я 70 зі 100, що відповідає смузі «Добрий». Найвищий показник — Engineering Quality (90/100), найнижчий — Security (57/100). Останнє оновлення було 1 день тому. Більшість нещодавньої роботи виконує один учасник.

70
загалом / 100
Добрий

Індекс здоров'я програмного забезпечення

Метрики згруповано у зважені категорії на шкалі 1–100. Загальна оцінка починається як їхнє середнє; коли публічні дані активують Політику юрисдикцій високого ризику, рейтинг коригується й отримує верхню межу 49 («Під ризиком»). Готовність до ШІ не входить до індексу.

70
Відмінний85-100Зразковий; відповідає практично всім перевіреним критеріям
Добрий70-84Здоровий; незначні прогалини
Помірний50-69Прийнятний, але з помітними прогалинами; рекомендовано перевірку
У зоні ризику30-49Суттєві слабкі місця; впровадження потребує обережності
Критичний1-29Серйозні проблеми (покинутий, єдиний мейнтейнер, без базової гігієни)
ЖиттєздатністьСпільнота тавпровадженняСталість таврядуванняІнженернаякістьБезпекаГотовність доШІ

Профіль оцінок

Кожна вісь — окрема категорія. Форма важить більше, ніж середнє: здоровий об'єкт заповнює всю фігуру, тоді як профіль із піками та провалами означає, що сила в одному вимірі маскує ризик в іншому.

Власність

Zhiqiang ZHOUОсобистий обліковий запис
721 підписник237 публічних репозиторіївз черв. 2016 р.

Цей репозиторій належить особистому обліковому запису. Проєкт з єдиним власником несе більший ризик безперервності, ніж підтримуваний організацією.

Пакетні екосистеми

РеєстрПакетВерсіяЗавантажень / місВерсіїОстання публікація
Gogithub.com/STRRL/cloudflare-tunnel-ingress-controllerv0.0.24-238 днів тому

Метрики за категоріями

Життєздатність

Чи живий проєкт — чи пишеться код і чи виходять релізи?

79Добрий · 22% загального індексу
Як обчислюється оцінка
36/36Свіжість push — останній push 1 дн. тому
8.3/36Ритм комітів — 12/52 тижнів із комітами
16.8/18Обсяг комітів — 74 комітів за останній рік
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 11 issue activity found in the last 90 days -- score normalized to 10
Використані вхідні дані
commits_last_year74
human_commit_share0,81
days_since_last_push1
active_weeks_last_year12
Як обчислюється оцінка
27/27Випускає релізи — опубліковано 18 релізів
36/36Свіжість релізів — останній реліз 8 дн. тому
19.8/27Ритм релізів — реліз кожні ~74,7 дн.
0/10OpenSSF Scorecard: Signed-Releases — немає даних
Використані вхідні дані
releases_count18
latest_release_tagv0.0.24
releases_from_tagsні
days_since_latest_release8
mean_days_between_releases74,7
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: Signed-Releases. Залишкові ваги перенормовано.

Спільнота та впровадження

Чи має проєкт користувачів, завантаження, увагу та влаштовані умови для контриб’юторів?

61Помірний · 18% загального індексу
Як обчислюється оцінка
49.8/60Зірки — 1 172 зірок
16.2/25Форки — 88 форків
4.7/15Спостерігачі — 8 спостерігачів
Використані вхідні дані
forks88
stars1 172
watchers8
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Як обчислюється оцінка
22.5/22.5README
22.5/22.5Ліцензія — визнана ліцензія (MIT)
0/18Настанови CONTRIBUTING
0/13.5Кодекс поведінки
0/7.2Шаблон issue
0/6.3Шаблон PR
Використані вхідні дані
has_readmeтак
has_licenseтак
has_contributingні
has_issue_templateні
has_code_of_conductні
has_pull_request_templateні

Сталість та врядування

Чи переживе проєкт своїх людей — бас-фактор, реактивність, хто за ним стоїть і як супроводжуються пакети?

62Помірний · 24% загального індексу
Як обчислюється оцінка
9/54Бас-фактор — на 1 контриб’ютор(ів) припадає половина всіх комітів
4.1/22.5Розподіл комітів — головний контриб’ютор — автор 82% комітів
13.5/13.5Широта контриб’юторів — 17 контриб’юторів
10/10OpenSSF Scorecard: Contributors — project has 7 contributing companies or organizations
Використані вхідні дані
bus_factor1
contributors_sampled17
top_contributor_share0,817
Як обчислюється оцінка
37.6/46.8Вирішення issue — закрито 80% issue
16.1/38.3Прийняття PR — злито 110/262 вирішених PR
0/15OpenSSF Scorecard: Code-Review — Found 1/25 approved changesets -- score normalized to 0
Використані вхідні дані
merged_prs110
open_issues15
closed_issues62
issue_closed_ratio0,805
closed_unmerged_prs152
Як обчислюється оцінка
10/30Підтримка власника — особистий (користувацький) обліковий запис
0/20Верифікований домен — не застосовно до користувацьких облікових записів
20.6/25Охоплення власника — 721 підписників у STRRL
25/25Послужний список — 237 публічних репозиторіїв, вік облікового запису ~10 р.
Використані вхідні дані
followers721
owner_typeUser
is_verified
owner_loginSTRRL
public_repos237
account_age_days3 680
Виключено з оцінювання (немає даних або не застосовно): Верифікований домен. Залишкові ваги перенормовано.

Супровід пакетів

100Відмінний
Як обчислюється оцінка
25/25Опубліковано й доступно — 1 пакет(ів) у go
35/35Свіжість публікацій — остання публікація 8 дн. тому
20/20Історія версій — 23 опублікованих версій
20/20Не застарілий — активний, не deprecated і не yanked
Використані вхідні дані
packagesgithub.com/STRRL/cloudflare-tunnel-ingress-controller
ecosystemsgo
any_deprecatedні
min_days_since_publish8

Інженерна якість

Чи наявні базові інженерні практики та документація?

90Відмінний · 20% загального індексу
Як обчислюється оцінка
24/24Процеси CI — 8 процес(ів) CI
24/24Наявні тести
16/16Конфігурація лінтера — eslint.config.mjs
0/9.6Pre-commit-хуки
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 26 out of 26 merged PRs checked by a CI test -- score normalized to 10
Використані вхідні дані
has_ciтак
has_testsтак
has_editorconfigні
has_linter_configтак
has_precommit_configні

Документація

100Відмінний
Як обчислюється оцінка
30/30README
25/25Каталог документації
15/15Сайт документації / домашня сторінка — https://tunnel.strrl.dev
10/10Опис репозиторію
10/10Теми — 6 тем
10/10Wiki
Використані вхідні дані
topicscloudflare, cloudflare-tunnel, ingress, ingress-controller, kubernetes, selfhosted
has_wikiтак
homepagehttps://tunnel.strrl.dev
has_readmeтак
has_docs_dirтак
has_descriptionтак

Безпека

Чи міцні видимі практики безпеки й ланцюга постачання, без непослабленої пов’язаності з юрисдикціями високого ризику?

57Помірний · 16% загального індексу

Стан безпеки

46У зоні ризику
Як обчислюється оцінка
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
2.5/2.5CI-Tests — 26 out of 26 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
0/7.5Code-Review — Found 1/25 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 7 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.5Ліцензія — license file detected
7.5/7.5Maintained — 30 commit(s) and 11 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — немає даних
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 64 existing vulnerabilities detected
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate4,6
Виключено з оцінювання (немає даних або не застосовно): signed_releases. Залишкові ваги перенормовано.
Як обчислюється оцінка
35/35Прямі залежності без відомих сповіщень — жодна пряма залежність не має відомих сповіщень
0/25Непрямі залежності без відомих сповіщень — транзитивний набір не відокремлюється від залежностей розробки й тестування в цьому обсязі
0/40Немає задавнених сповіщень — жодне сповіщення не має дати публікації
Використані вхідні дані
sourceosv
advisories73
affected_packages25
assessed_packages781
unassessed_packages0
affected_by_severitycritical 3, high 14, moderate 6, low 1, unknown 1
direct_affected_packages0
Виключено з оцінювання (немає даних або не застосовно): Непрямі залежності без відомих сповіщень, Немає задавнених сповіщень. Залишкові ваги перенормовано. Звірено 781 резолвлених залежностей із OSV. Цей репозиторій не публікує пакета, який резолвить індекс, тож натомість оцінено граф залежностей репозиторію. Цей граф змішує закріплені версії для розробки й тестування зі справді постачаними залежностями, тож оцінюються лише задекларовані runtime-залежності; транзитивні знахідки подаються як контекст і в оцінку не входять. Досяжність не аналізується.

Готовність до ШІ

Наскільки репозиторій оснащений для розробки та супроводу за участі ШІ-агентів? Незалежний, експериментальний бейдж — вага 0.0, тож він подається окремо і не впливає на загальний індекс здоров'я.

90Відмінний · 0% загального індексу
Як обчислюється оцінка
45/45Інструкції для агентів — CLAUDE.md
0/15Машиночитана документація (llms.txt)
40/40Читабельна історія комітів — намір зазначено у 80 з 81 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share0,988
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes4 322
Як обчислюється оцінка
18/18Розгортання однією командою — Makefile
22/22Автоматизовані тести
11/11Конфігурація лінтера / форматера — eslint.config.mjs
11/11Статична перевірка типів — docs/tsconfig.json
10/10Відтворюване середовище — Dockerfile, lockfile
10/10Підтверджена практика роботи з агентами — 20 з останніх 100 комітів створено агентом або з його зазначенням
8/8Автоматизоване супроводження — 16 з останніх 100 комітів — автоматичні оновлення залежностей
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Використані вхідні дані
has_nixні
has_testsтак
lockfilesgo.sum, pnpm-lock.yaml
has_dockerfileтак
typed_languageтак
bootstrap_filesMakefile
has_devcontainerні
has_linter_configтак
typecheck_configsdocs/tsconfig.json
agent_commit_share0,2
toolchain_manifestsgo.mod
dependency_bot_commit_share0,16
Як обчислюється оцінка
45/45Типізований код — Go (статично типізована)
55/55Керовані розміри файлів — 0/42 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languageGo
largest_source_bytes24 787
source_files_sampled42
oversized_source_files0

Ключові факти

1 172зірок GitHub
17контриб'юторів
74комітів за останні 12 місяців
1днів від останнього пушу
18релізів
1бас-фактор
15відкритих issue
Go, npmпакетних екосистем

Попередження щодо збору даних

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

Докладніше

Історія зірок і форків 0 ★ / 88 ⇿
0Зірки
88Форки
17Релізи

Коли додано кожну зірку й форк — зібрано з GitHub і згруповано за днями. Кумулятивне зростання розміщено просто над денними додаваннями, з яких воно складається, тож їх видно одне проти одного: рівномірне органічне накопичення виглядає зовсім інакше, ніж різкий короткочасний сплеск. Там, де цю різницю можна виміряти, її подано як автентичність росту.

0204060801008582023-062024-122026-07
Мажорні 0Мінорні 0Патчі 17

Кожна точка охоплює 3 днів.

OpenSSF Scorecard 4.6 / 10
4.6сукупно

Незалежна, не прив'язана до інструментів оцінка безпеки від відкритого проєкту OpenSSF Scorecard. Кожна перевірка винагороджує практику безпеки, а не інструмент конкретного постачальника. Перевірки, які Scorecard не зміг визначити, позначено н/д і виключено з оцінки безпеки (вони ніколи не зараховуються як нуль).Scorecard v5.5.0 · 2026-07-28 15:26 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
10CI-Tests26 out of 26 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 1/25 approved changesets -- score normalized to 0
10Contributorsproject has 7 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 11 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
н/дSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities64 existing vulnerabilities detected
Прямі залежності 18
РеєстрПакетОбмеження версіїМаніфест
Gogithub.com/chromedp/chromedpv0.16.0go.mod
Gogithub.com/cloudflare/cloudflare-gov0.117.0go.mod
Gogithub.com/cucumber/godogv0.15.1go.mod
Gogithub.com/go-logr/logrv1.4.3go.mod
Gogithub.com/go-logr/stdrv1.2.2go.mod
Gogithub.com/joho/godotenvv1.5.1go.mod
Gogithub.com/onsi/ginkgo/v2v2.32.0go.mod
Gogithub.com/onsi/gomegav1.42.1go.mod
Gogithub.com/pkg/errorsv0.9.1go.mod
Gogithub.com/spf13/cobrav1.10.2go.mod
Gogithub.com/spf13/viperv1.20.1go.mod
Gogithub.com/stretchr/testifyv1.11.1go.mod
Gok8s.io/apiv0.36.2go.mod
Gok8s.io/apimachineryv0.36.2go.mod
Gok8s.io/client-gov0.36.2go.mod
Gok8s.io/utilsv0.0.0-20260210185600-b8788abfbbc2go.mod
Gosigs.k8s.io/controller-runtimev0.24.1go.mod
Gosigs.k8s.io/yamlv1.6.0go.mod
Усі залежності 781

Повний розв'язаний набір залежностей із графа залежностей GitHub: 18 прямих і 763 непрямих (транзитивних) пакетів. Транзитивне замикання є повним, коли в репозиторії закомічено lockfile.

РеєстрПакетВерсіяЗв'язок
Gogithub.com/chromedp/chromedpv0.16.0пряма
Gogithub.com/cloudflare/cloudflare-gov0.117.0пряма
Gogithub.com/cucumber/godogv0.15.1пряма
Gogithub.com/go-logr/logrv1.4.3пряма
Gogithub.com/go-logr/stdrv1.2.2пряма
Gogithub.com/joho/godotenvv1.5.1пряма
Gogithub.com/onsi/ginkgo/v2v2.32.0пряма
Gogithub.com/onsi/gomegav1.42.1пряма
Gogithub.com/pkg/errorsv0.9.1пряма
Gogithub.com/spf13/cobrav1.10.2пряма
Gogithub.com/spf13/viperv1.20.1пряма
Gogithub.com/stretchr/testifyv1.11.1пряма
Gok8s.io/apiv0.36.2пряма
Gok8s.io/apimachineryv0.36.2пряма
Gok8s.io/client-gov0.36.2пряма
Gok8s.io/utilsv0.0.0-20260210185600-b8788abfbbc2пряма
Gosigs.k8s.io/controller-runtimev0.24.1пряма
Gosigs.k8s.io/yamlv1.6.0пряма
Gogithub.com/beorn7/perksv1.0.1непряма
Gogithub.com/cespare/xxhash/v2v2.3.0непряма
Gogithub.com/chromedp/cdprotov0.0.0-20260714215040-dc233986426fнепряма
Gogithub.com/chromedp/sysutilv1.1.0непряма
Gogithub.com/cucumber/gherkin/go/v26v26.2.0непряма
Gogithub.com/cucumber/messages/go/v21v21.0.1непряма
Gogithub.com/davecgh/go-spewv1.1.2-0.20180830191138-d8f796af33ccнепряма
Gogithub.com/emicklei/go-restful/v3v3.13.0непряма
Gogithub.com/evanphx/json-patch/v5v5.9.11непряма
Gogithub.com/fsnotify/fsnotifyv1.9.0непряма
Gogithub.com/fxamacker/cbor/v2v2.9.0непряма
Gogithub.com/go-json-experiment/jsonv0.0.0-20260623181947-01eb4420fa68непряма
Gogithub.com/go-openapi/jsonpointerv0.21.0непряма
Gogithub.com/go-openapi/jsonreferencev0.20.2непряма
Gogithub.com/go-openapi/swagv0.23.0непряма
Gogithub.com/go-task/slim-sprig/v3v3.0.0непряма
Gogithub.com/go-viper/mapstructure/v2v2.3.0непряма
Gogithub.com/gobwas/httpheadv0.1.0непряма
Gogithub.com/gobwas/poolv0.2.1непряма
Gogithub.com/gobwas/wsv1.4.0непряма
Gogithub.com/goccy/go-jsonv0.10.5непряма
Gogithub.com/gofrs/uuidv4.3.1+incompatibleнепряма
Gogithub.com/google/gnostic-modelsv0.7.0непряма
Gogithub.com/google/go-cmpv0.7.0непряма
Gogithub.com/google/go-querystringv1.1.0непряма
Gogithub.com/google/pprofv0.0.0-20260402051712-545e8a4df936непряма
Gogithub.com/google/uuidv1.6.0непряма
Gogithub.com/hashicorp/go-immutable-radixv1.3.1непряма
Gogithub.com/hashicorp/go-memdbv1.3.4непряма
Gogithub.com/hashicorp/golang-lruv0.5.4непряма
Gogithub.com/inconshreveable/mousetrapv1.1.0непряма
Gogithub.com/josharian/internv1.0.0непряма
Gogithub.com/json-iterator/gov1.1.12непряма
Gogithub.com/mailru/easyjsonv0.7.7непряма
Gogithub.com/masterminds/semver/v3v3.4.0непряма
Gogithub.com/modern-go/concurrentv0.0.0-20180306012644-bacd9c7ef1ddнепряма
Gogithub.com/modern-go/reflect2v1.0.3-0.20250322232337-35a7c28c31eeнепряма
Gogithub.com/munnerz/goautonegv0.0.0-20191010083416-a7dc8b61c822непряма
Gogithub.com/pelletier/go-toml/v2v2.2.3непряма
Gogithub.com/pmezard/go-difflibv1.0.1-0.20181226105442-5d4384ee4fb2непряма
Gogithub.com/prometheus/client_golangv1.23.2непряма
Gogithub.com/prometheus/client_modelv0.6.2непряма
Gogithub.com/prometheus/commonv0.67.5непряма
Gogithub.com/prometheus/procfsv0.19.2непряма
Gogithub.com/sagikazarmark/locaferov0.7.0непряма
Gogithub.com/sourcegraph/concv0.3.0непряма
Gogithub.com/spf13/aferov1.12.0непряма
Gogithub.com/spf13/castv1.7.1непряма
Gogithub.com/spf13/pflagv1.0.9непряма
Gogithub.com/subosito/gotenvv1.6.0непряма
Gogithub.com/x448/float16v0.8.4непряма
Gogo.uber.org/multierrv1.11.0непряма
Gogo.yaml.in/yaml/v2v2.4.3непряма
Gogo.yaml.in/yaml/v3v3.0.4непряма
Gogolang.org/x/modv0.36.0непряма
Gogolang.org/x/netv0.56.0непряма
Gogolang.org/x/oauth2v0.34.0непряма
Gogolang.org/x/syncv0.21.0непряма
Gogolang.org/x/sysv0.47.0непряма
Gogolang.org/x/termv0.44.0непряма
Gogolang.org/x/textv0.38.0непряма
Gogolang.org/x/timev0.14.0непряма
Gogolang.org/x/toolsv0.45.0непряма
Gogomodules.xyz/jsonpatch/v2v2.4.0непряма
Gogoogle.golang.org/protobufv1.36.12-0.20260120151049-f2248ac996afнепряма
Gogopkg.in/evanphx/json-patch.v4v4.13.0непряма
Gogopkg.in/inf.v0v0.9.1непряма
Gogopkg.in/yaml.v3v3.0.1непряма
Gok8s.io/apiextensions-apiserverv0.36.0непряма
Gok8s.io/klog/v2v2.140.0непряма
Gok8s.io/kube-openapiv0.0.0-20260317180543-43fb72c5454aнепряма
Gosigs.k8s.io/jsonv0.0.0-20250730193827-2d320260d730непряма
Gosigs.k8s.io/randfillv1.0.0непряма
Gosigs.k8s.io/structured-merge-diff/v6v6.3.2непряма
npm@antfu/install-pkg1.1.0непряма
npm@astrojs/compiler2.13.0непряма
npm@astrojs/internal-helpers0.7.4непряма
npm@astrojs/markdown-remark6.3.8непряма
npm@astrojs/mdx4.3.8непряма
npm@astrojs/prism3.3.0непряма
npm@astrojs/rss4.0.13непряма
npm@astrojs/sitemap3.6.0непряма
npm@astrojs/starlight0.36.1непряма
npm@astrojs/telemetry3.3.0непряма
npm@babel/helper-string-parser7.27.1непряма
npm@babel/helper-validator-identifier7.28.5непряма
npm@babel/parser7.28.5непряма
npm@babel/runtime7.28.4непряма
npm@babel/types7.28.5непряма
npm@braintree/sanitize-url7.1.2непряма
npm@capsizecss/unpack3.0.0непряма
npm@chevrotain/types11.1.2непряма
npm@ctrl/tinycolor4.2.0непряма
npm@emnapi/runtime1.6.0непряма
npm@esbuild/aix-ppc640.25.11непряма
npm@esbuild/android-arm0.25.11непряма
npm@esbuild/android-arm640.25.11непряма
npm@esbuild/android-x640.25.11непряма
npm@esbuild/darwin-arm640.25.11непряма
npm@esbuild/darwin-x640.25.11непряма
npm@esbuild/freebsd-arm640.25.11непряма
npm@esbuild/freebsd-x640.25.11непряма
npm@esbuild/linux-arm0.25.11непряма
npm@esbuild/linux-arm640.25.11непряма
npm@esbuild/linux-ia320.25.11непряма
npm@esbuild/linux-loong640.25.11непряма
npm@esbuild/linux-mips64el0.25.11непряма
npm@esbuild/linux-ppc640.25.11непряма
npm@esbuild/linux-riscv640.25.11непряма
npm@esbuild/linux-s390x0.25.11непряма
npm@esbuild/linux-x640.25.11непряма
npm@esbuild/netbsd-arm640.25.11непряма
npm@esbuild/netbsd-x640.25.11непряма
npm@esbuild/openbsd-arm640.25.11непряма
npm@esbuild/openbsd-x640.25.11непряма
npm@esbuild/openharmony-arm640.25.11непряма
npm@esbuild/sunos-x640.25.11непряма
npm@esbuild/win32-arm640.25.11непряма
npm@esbuild/win32-ia320.25.11непряма
npm@esbuild/win32-x640.25.11непряма
npm@eslint-community/eslint-utils4.9.0непряма
npm@eslint-community/regexpp4.12.2непряма
npm@eslint/config-array0.21.1непряма
npm@eslint/config-helpers0.4.1непряма
npm@eslint/core0.16.0непряма
npm@eslint/eslintrc3.3.1непряма
npm@eslint/js9.38.0непряма
npm@eslint/object-schema2.1.7непряма
npm@eslint/plugin-kit0.4.0непряма
npm@expressive-code/core0.41.3непряма
npm@expressive-code/plugin-frames0.41.3непряма
npm@expressive-code/plugin-shiki0.41.3непряма
npm@expressive-code/plugin-text-markers0.41.3непряма
npm@humanfs/core0.19.1непряма
npm@humanfs/node0.16.7непряма
npm@humanwhocodes/module-importer1.0.1непряма
npm@humanwhocodes/retry0.4.3непряма
npm@iconify/types2.0.0непряма
npm@iconify/utils3.1.3непряма
npm@img/colour1.0.0непряма
npm@img/sharp-darwin-arm640.34.4непряма
npm@img/sharp-darwin-x640.34.4непряма
npm@img/sharp-libvips-darwin-arm641.2.3непряма
npm@img/sharp-libvips-darwin-x641.2.3непряма
npm@img/sharp-libvips-linux-arm1.2.3непряма
npm@img/sharp-libvips-linux-arm641.2.3непряма
npm@img/sharp-libvips-linux-ppc641.2.3непряма
npm@img/sharp-libvips-linux-s390x1.2.3непряма
npm@img/sharp-libvips-linux-x641.2.3непряма
npm@img/sharp-libvips-linuxmusl-arm641.2.3непряма
npm@img/sharp-libvips-linuxmusl-x641.2.3непряма
npm@img/sharp-linux-arm0.34.4непряма
npm@img/sharp-linux-arm640.34.4непряма
npm@img/sharp-linux-ppc640.34.4непряма
npm@img/sharp-linux-s390x0.34.4непряма
npm@img/sharp-linux-x640.34.4непряма
npm@img/sharp-linuxmusl-arm640.34.4непряма
npm@img/sharp-linuxmusl-x640.34.4непряма
npm@img/sharp-wasm320.34.4непряма
npm@img/sharp-win32-arm640.34.4непряма
npm@img/sharp-win32-ia320.34.4непряма
npm@img/sharp-win32-x640.34.4непряма
npm@jridgewell/sourcemap-codec1.5.5непряма
npm@mdx-js/mdx3.1.1непряма
npm@mermaid-js/layout-elk0.2.2непряма
npm@mermaid-js/parser1.2.0непряма
npm@nodelib/fs.scandir2.1.5непряма
npm@nodelib/fs.stat2.0.5непряма
npm@nodelib/fs.walk1.2.8непряма
npm@oslojs/encoding1.1.0непряма
npm@pagefind/darwin-arm641.4.0непряма
npm@pagefind/darwin-x641.4.0непряма
npm@pagefind/default-ui1.4.0непряма
npm@pagefind/freebsd-x641.4.0непряма
npm@pagefind/linux-arm641.4.0непряма
npm@pagefind/linux-x641.4.0непряма
npm@pagefind/windows-x641.4.0непряма
npm@pkgr/core0.2.9непряма
npm@rollup/pluginutils5.3.0непряма
npm@rollup/rollup-android-arm-eabi4.52.5непряма
npm@rollup/rollup-android-arm644.52.5непряма
npm@rollup/rollup-darwin-arm644.52.5непряма
npm@rollup/rollup-darwin-x644.52.5непряма
npm@rollup/rollup-freebsd-arm644.52.5непряма
npm@rollup/rollup-freebsd-x644.52.5непряма
npm@rollup/rollup-linux-arm-gnueabihf4.52.5непряма
npm@rollup/rollup-linux-arm-musleabihf4.52.5непряма
npm@rollup/rollup-linux-arm64-gnu4.52.5непряма
npm@rollup/rollup-linux-arm64-musl4.52.5непряма
npm@rollup/rollup-linux-loong64-gnu4.52.5непряма
npm@rollup/rollup-linux-ppc64-gnu4.52.5непряма
npm@rollup/rollup-linux-riscv64-gnu4.52.5непряма
npm@rollup/rollup-linux-riscv64-musl4.52.5непряма
npm@rollup/rollup-linux-s390x-gnu4.52.5непряма
npm@rollup/rollup-linux-x64-gnu4.52.5непряма
npm@rollup/rollup-linux-x64-musl4.52.5непряма
npm@rollup/rollup-openharmony-arm644.52.5непряма
npm@rollup/rollup-win32-arm64-msvc4.52.5непряма
npm@rollup/rollup-win32-ia32-msvc4.52.5непряма
npm@rollup/rollup-win32-x64-gnu4.52.5непряма
npm@rollup/rollup-win32-x64-msvc4.52.5непряма
npm@shikijs/core3.14.0непряма
npm@shikijs/engine-javascript3.14.0непряма
npm@shikijs/engine-oniguruma3.14.0непряма
npm@shikijs/langs3.14.0непряма
npm@shikijs/themes3.14.0непряма
npm@shikijs/types3.14.0непряма
npm@shikijs/vscode-textmate10.0.2непряма
npm@swc/helpers0.5.17непряма
npm@types/d37.4.3непряма
npm@types/d3-array3.2.2непряма
npm@types/d3-axis3.0.6непряма
npm@types/d3-brush3.0.6непряма
npm@types/d3-chord3.0.6непряма
npm@types/d3-color3.1.3непряма
npm@types/d3-contour3.0.6непряма
npm@types/d3-delaunay6.0.4непряма
npm@types/d3-dispatch3.0.7непряма
npm@types/d3-drag3.0.7непряма
npm@types/d3-dsv3.0.7непряма
npm@types/d3-ease3.0.2непряма
npm@types/d3-fetch3.0.7непряма
npm@types/d3-force3.0.10непряма
npm@types/d3-format3.0.4непряма
npm@types/d3-geo3.1.0непряма
npm@types/d3-hierarchy3.1.7непряма
npm@types/d3-interpolate3.0.4непряма
npm@types/d3-path3.1.1непряма
npm@types/d3-polygon3.0.2непряма
npm@types/d3-quadtree3.0.6непряма
npm@types/d3-random3.0.3непряма
npm@types/d3-scale4.0.9непряма
npm@types/d3-scale-chromatic3.1.0непряма
npm@types/d3-selection3.0.11непряма
npm@types/d3-shape3.1.8непряма
npm@types/d3-time3.0.4непряма
npm@types/d3-time-format4.0.3непряма
npm@types/d3-timer3.0.2непряма
npm@types/d3-transition3.0.9непряма
npm@types/d3-zoom3.0.8непряма
npm@types/debug4.1.12непряма
npm@types/estree1.0.8непряма
npm@types/estree-jsx1.0.5непряма
npm@types/fontkit2.0.8непряма
npm@types/geojson7946.0.16непряма
npm@types/hast3.0.4непряма
npm@types/js-yaml4.0.9непряма
npm@types/json-schema7.0.15непряма
npm@types/mdast4.0.4непряма
npm@types/mdx2.0.13непряма
npm@types/ms2.1.0непряма
npm@types/nlcst2.0.3непряма
npm@types/node17.0.45непряма
npm@types/node24.9.1непряма
npm@types/sax1.2.7непряма
npm@types/trusted-types2.0.7непряма
npm@types/unist2.0.11непряма
npm@types/unist3.0.3непряма
npm@typescript-eslint/eslint-plugin8.46.2непряма
npm@typescript-eslint/parser8.46.2непряма
npm@typescript-eslint/project-service8.46.2непряма
npm@typescript-eslint/scope-manager8.46.2непряма
npm@typescript-eslint/tsconfig-utils8.46.2непряма
npm@typescript-eslint/type-utils8.46.2непряма
npm@typescript-eslint/types8.46.2непряма
npm@typescript-eslint/typescript-estree8.46.2непряма
npm@typescript-eslint/utils8.46.2непряма
npm@typescript-eslint/visitor-keys8.46.2непряма
npm@ungap/structured-clone1.3.0непряма
npm@upsetjs/venn.js2.0.0непряма
npm@webgpu/types0.1.21непряма
npmacorn8.15.0непряма
npmacorn-jsx5.3.2непряма
npmajv6.12.6непряма
npmansi-align3.0.1непряма
npmansi-regex5.0.1непряма
npmansi-regex6.2.2непряма
npmansi-styles4.3.0непряма
npmansi-styles6.2.3непряма
npmanymatch3.1.3непряма
npmarg5.0.2непряма
npmargparse2.0.1непряма
npmaria-query5.3.2непряма
npmarray-iterate2.0.1непряма
npmastring1.9.0непряма
npmastro5.15.1непряма
npmastro-eslint-parser1.2.2непряма
npmastro-expressive-code0.41.3непряма
npmastro-mermaid2.0.1непряма
npmastro-og-canvas0.7.2непряма
npmastro-remote0.3.4непряма
npmastrojs-compiler-sync1.1.1непряма
npmaxobject-query4.1.0непряма
npmbail2.0.2непряма
npmbalanced-match1.0.2непряма
npmbase-641.0.0непряма
npmbase64-js1.5.1непряма
npmbcp-472.1.0непряма
npmbcp-47-match2.0.3непряма
npmboolbase1.0.0непряма
npmboxen8.0.1непряма
npmbrace-expansion1.1.12непряма
npmbrace-expansion2.0.2непряма
npmbraces3.0.3непряма
npmbrotli1.3.3непряма
npmcallsites3.1.0непряма
npmcamelcase8.0.0непряма
npmcanvaskit-wasm0.40.0непряма
npmccount2.0.1непряма
npmchalk4.1.2непряма
npmchalk5.6.2непряма
npmcharacter-entities2.0.2непряма
npmcharacter-entities-html42.1.0непряма
npmcharacter-entities-legacy3.0.0непряма
npmcharacter-reference-invalid2.0.1непряма
npmchokidar4.0.3непряма
npmci-info4.3.1непряма
npmcli-boxes3.0.0непряма
npmclone2.1.2непряма
npmclsx2.1.1непряма
npmcollapse-white-space2.1.0непряма
npmcolor-convert2.0.1непряма
npmcolor-name1.1.4непряма
npmcomma-separated-tokens2.0.3непряма
npmcommander7.2.0непряма
npmcommander8.3.0непряма
npmcommon-ancestor-path1.0.1непряма
npmconcat-map0.0.1непряма
npmcookie1.0.2непряма
npmcookie-es1.2.2непряма
npmcose-base1.0.3непряма
npmcose-base2.2.0непряма
npmcross-spawn7.0.6непряма
npmcrossws0.3.5непряма
npmcss-selector-parser3.1.3непряма
npmcss-tree3.1.0непряма
npmcssesc3.0.0непряма
npmcytoscape3.34.0непряма
npmcytoscape-cose-bilkent4.1.0непряма
npmcytoscape-fcose2.2.0непряма
npmd37.9.0непряма
npmd3-array2.12.1непряма
npmd3-array3.2.4непряма
npmd3-axis3.0.0непряма
npmd3-brush3.0.0непряма
npmd3-chord3.0.1непряма
npmd3-color3.1.0непряма
npmd3-contour4.0.2непряма
npmd3-delaunay6.0.4непряма
npmd3-dispatch3.0.1непряма
npmd3-drag3.0.0непряма
npmd3-dsv3.0.1непряма
npmd3-ease3.0.1непряма
npmd3-fetch3.0.1непряма
npmd3-force3.0.0непряма
npmd3-format3.1.2непряма
npmd3-geo3.1.1непряма
npmd3-hierarchy3.1.2непряма
npmd3-interpolate3.0.1непряма
npmd3-path1.0.9непряма
npmd3-path3.1.0непряма
npmd3-polygon3.0.1непряма
npmd3-quadtree3.0.1непряма
npmd3-random3.0.1непряма
npmd3-sankey0.12.3непряма
npmd3-scale4.0.2непряма
npmd3-scale-chromatic3.1.0непряма
npmd3-selection3.0.0непряма
npmd3-shape1.3.7непряма
npmd3-shape3.2.0непряма
npmd3-time3.1.0непряма
npmd3-time-format4.1.0непряма
npmd3-timer3.0.1непряма
npmd3-transition3.0.1непряма
npmd3-zoom3.0.0непряма
npmdagre-d3-es7.0.14непряма
npmdayjs1.11.21непряма
npmdebug4.4.3непряма
npmdecode-named-character-reference1.2.0непряма
npmdeep-is0.1.4непряма
npmdefu6.1.4непряма
npmdelaunator5.1.0непряма
npmdequal2.0.3непряма
npmdestr2.0.5непряма
npmdetect-libc2.1.2непряма
npmdeterministic-object-hash2.0.2непряма
npmdevalue5.4.2непряма
npmdevlop1.1.0непряма
npmdfa1.2.0непряма
npmdiff5.2.0непряма
npmdirection2.0.1непряма
npmdlv1.1.3непряма
npmdompurify3.4.11непряма
npmdset3.1.4непряма
npmelkjs0.9.3непряма
npmemoji-regex10.6.0непряма
npmemoji-regex8.0.0непряма
npmentities4.5.0непряма
npmentities6.0.1непряма
npmentities7.0.0непряма
npmes-module-lexer1.7.0непряма
npmes-toolkit1.49.0непряма
npmesast-util-from-estree2.0.0непряма
npmesast-util-from-js2.0.1непряма
npmesbuild0.25.11непряма
npmescape-string-regexp4.0.0непряма
npmescape-string-regexp5.0.0непряма
npmeslint9.38.0непряма
npmeslint-compat-utils0.6.5непряма
npmeslint-config-prettier10.1.8непряма
npmeslint-plugin-astro1.4.0непряма
npmeslint-scope8.4.0непряма
npmeslint-visitor-keys3.4.3непряма
npmeslint-visitor-keys4.2.1непряма
npmespree10.4.0непряма
npmesquery1.6.0непряма
npmesrecurse4.3.0непряма
npmestraverse5.3.0непряма
npmestree-util-attach-comments3.0.0непряма
npmestree-util-build-jsx3.0.1непряма
npmestree-util-is-identifier-name3.0.0непряма
npmestree-util-scope1.0.0непряма
npmestree-util-to-js2.0.0непряма
npmestree-util-visit2.0.0непряма
npmestree-walker2.0.2непряма
npmestree-walker3.0.3непряма
npmesutils2.0.3непряма
npmeventemitter35.0.1непряма
npmexpressive-code0.41.3непряма
npmextend3.0.2непряма
npmfast-deep-equal3.1.3непряма
npmfast-glob3.3.3непряма
npmfast-json-stable-stringify2.1.0непряма
npmfast-levenshtein2.0.6непряма
npmfast-xml-parser5.3.0непряма
npmfastq1.19.1непряма
npmfdir6.5.0непряма
npmfile-entry-cache8.0.0непряма
npmfill-range7.1.1непряма
npmfind-up5.0.0непряма
npmflat-cache4.0.1непряма
npmflatted3.3.3непряма
npmflattie1.1.1непряма
npmfontace0.3.1непряма
npmfontkit2.0.4непряма
npmfsevents2.3.3непряма
npmget-east-asian-width1.4.0непряма
npmgithub-slugger2.0.0непряма
npmglob-parent5.1.2непряма
npmglob-parent6.0.2непряма
npmglobals14.0.0непряма
npmglobals16.4.0непряма
npmgraphemer1.4.0непряма
npmh31.15.4непряма
npmhachure-fill0.5.2непряма
npmhas-flag4.0.0непряма
npmhast-util-embedded3.0.0непряма
npmhast-util-format1.1.0непряма
npmhast-util-from-html2.0.3непряма
npmhast-util-from-parse58.0.3непряма
npmhast-util-has-property3.0.0непряма
npmhast-util-is-body-ok-link3.0.1непряма
npmhast-util-is-element3.0.0непряма
npmhast-util-minify-whitespace1.0.1непряма
npmhast-util-parse-selector4.0.0непряма
npmhast-util-phrasing3.0.1непряма
npmhast-util-raw9.1.0непряма
npmhast-util-select6.0.4непряма
npmhast-util-to-estree3.1.3непряма
npmhast-util-to-html9.0.5непряма
npmhast-util-to-jsx-runtime2.3.6непряма
npmhast-util-to-parse58.0.0непряма
npmhast-util-to-string3.0.1непряма
npmhast-util-to-text4.0.2непряма
npmhast-util-whitespace3.0.0непряма
npmhastscript9.0.1непряма
npmhtml-escaper3.0.3непряма
npmhtml-void-elements3.0.0непряма
npmhtml-whitespace-sensitive-tag-names3.0.1непряма
npmhttp-cache-semantics4.2.0непряма
npmi18next23.16.8непряма
npmiconv-lite0.6.3непряма
npmignore5.3.2непряма
npmignore7.0.5непряма
npmimport-fresh3.3.1непряма
npmimport-meta-resolve4.2.0непряма
npmimurmurhash0.1.4непряма
npminline-style-parser0.2.4непряма
npminternmap1.0.1непряма
npminternmap2.0.3непряма
npmiron-webcrypto1.2.1непряма
npmis-alphabetical2.0.1непряма
npmis-alphanumerical2.0.1непряма
npmis-decimal2.0.1непряма
npmis-docker3.0.0непряма
npmis-extglob2.1.1непряма
npmis-fullwidth-code-point3.0.0непряма
npmis-glob4.0.3непряма
npmis-hexadecimal2.0.1непряма
npmis-inside-container1.0.0непряма
npmis-number7.0.0непряма
npmis-plain-obj4.1.0непряма
npmis-wsl3.1.0непряма
npmisexe2.0.0непряма
npmjs-yaml4.1.0непряма
npmjson-buffer3.0.1непряма
npmjson-schema-traverse0.4.1непряма
npmjson-stable-stringify-without-jsonify1.0.1непряма
npmkatex0.16.47непряма
npmkeyv4.5.4непряма
npmkhroma2.1.0непряма
npmkleur3.0.3непряма
npmklona2.0.6непряма
npmlayout-base1.0.2непряма
npmlayout-base2.0.1непряма
npmlevn0.4.1непряма
npmlocate-path6.0.0непряма
npmlodash-es4.18.1непряма
npmlodash.merge4.6.2непряма
npmlongest-streak3.1.0непряма
npmlru-cache10.4.3непряма
npmmagic-string0.30.21непряма
npmmagicast0.3.5непряма
npmmarkdown-extensions2.0.0непряма
npmmarkdown-table3.0.4непряма
npmmarked12.0.2непряма
npmmarked15.0.12непряма
npmmarked16.4.2непряма
npmmarked-footnote1.4.0непряма
npmmarked-plaintify1.1.1непряма
npmmarked-smartypants1.1.10непряма
npmmdast-util-definitions6.0.0непряма
npmmdast-util-directive3.1.0непряма
npmmdast-util-find-and-replace3.0.2непряма
npmmdast-util-from-markdown2.0.2непряма
npmmdast-util-gfm3.1.0непряма
npmmdast-util-gfm-autolink-literal2.0.1непряма
npmmdast-util-gfm-footnote2.1.0непряма
npmmdast-util-gfm-strikethrough2.0.0непряма
npmmdast-util-gfm-table2.0.0непряма
npmmdast-util-gfm-task-list-item2.0.0непряма
npmmdast-util-mdx3.0.0непряма
npmmdast-util-mdx-expression2.0.1непряма
npmmdast-util-mdx-jsx3.2.0непряма
npmmdast-util-mdxjs-esm2.0.1непряма
npmmdast-util-phrasing4.1.0непряма
npmmdast-util-to-hast13.2.0непряма
npmmdast-util-to-markdown2.1.2непряма
npmmdast-util-to-string4.0.0непряма
npmmdn-data2.12.2непряма
npmmerge21.4.1непряма
npmmermaid11.16.0непряма
npmmicromark4.0.2непряма
npmmicromark-core-commonmark2.0.3непряма
npmmicromark-extension-directive3.0.2непряма
npmmicromark-extension-gfm3.0.0непряма
npmmicromark-extension-gfm-autolink-literal2.1.0непряма
npmmicromark-extension-gfm-footnote2.1.0непряма
npmmicromark-extension-gfm-strikethrough2.1.0непряма
npmmicromark-extension-gfm-table2.1.1непряма
npmmicromark-extension-gfm-tagfilter2.0.0непряма
npmmicromark-extension-gfm-task-list-item2.1.0непряма
npmmicromark-extension-mdx-expression3.0.1непряма
npmmicromark-extension-mdx-jsx3.0.2непряма
npmmicromark-extension-mdx-md2.0.0непряма
npmmicromark-extension-mdxjs3.0.0непряма
npmmicromark-extension-mdxjs-esm3.0.0непряма
npmmicromark-factory-destination2.0.1непряма
npmmicromark-factory-label2.0.1непряма
npmmicromark-factory-mdx-expression2.0.3непряма
npmmicromark-factory-space2.0.1непряма
npmmicromark-factory-title2.0.1непряма
npmmicromark-factory-whitespace2.0.1непряма
npmmicromark-util-character2.1.1непряма
npmmicromark-util-chunked2.0.1непряма
npmmicromark-util-classify-character2.0.1непряма
npmmicromark-util-combine-extensions2.0.1непряма
npmmicromark-util-decode-numeric-character-reference2.0.2непряма
npmmicromark-util-decode-string2.0.1непряма
npmmicromark-util-encode2.0.1непряма
npmmicromark-util-events-to-acorn2.0.3непряма
npmmicromark-util-html-tag-name2.0.1непряма
npmmicromark-util-normalize-identifier2.0.1непряма
npmmicromark-util-resolve-all2.0.1непряма
npmmicromark-util-sanitize-uri2.0.1непряма
npmmicromark-util-subtokenize2.1.0непряма
npmmicromark-util-symbol2.0.1непряма
npmmicromark-util-types2.0.2непряма
npmmicromatch4.0.8непряма
npmminimatch3.1.2непряма
npmminimatch9.0.5непряма
npmmrmime2.0.1непряма
npmms2.1.3непряма
npmnanoid3.3.11непряма
npmnatural-compare1.4.0непряма
npmneotraverse0.6.18непряма
npmnlcst-to-string4.0.0непряма
npmnode-fetch-native1.6.7непряма
npmnode-mock-http1.0.3непряма
npmnormalize-path3.0.0непряма
npmnth-check2.1.1непряма
npmofetch1.4.1непряма
npmohash2.0.11непряма
npmoniguruma-parser0.12.1непряма
npmoniguruma-to-es4.3.3непряма
npmoptionator0.9.4непряма
npmp-limit3.1.0непряма
npmp-limit6.2.0непряма
npmp-locate5.0.0непряма
npmp-queue8.1.1непряма
npmp-timeout6.1.4непряма
npmpackage-manager-detector1.5.0непряма
npmpagefind1.4.0непряма
npmpako0.2.9непряма
npmparent-module1.0.1непряма
npmparse-entities4.0.2непряма
npmparse-latin7.0.0непряма
npmparse57.3.0непряма
npmpath-data-parser0.1.0непряма
npmpath-exists4.0.0непряма
npmpath-key3.1.1непряма
npmpicocolors1.1.1непряма
npmpicomatch2.3.1непряма
npmpicomatch4.0.3непряма
npmpoints-on-curve0.2.0непряма
npmpoints-on-path0.2.1непряма
npmpostcss8.5.6непряма
npmpostcss-nested6.2.0непряма
npmpostcss-selector-parser6.1.2непряма
npmpostcss-selector-parser7.1.0непряма
npmprelude-ls1.2.1непряма
npmprettier3.6.2непряма
npmprettier-plugin-astro0.14.1непряма
npmprismjs1.30.0непряма
npmprompts2.4.2непряма
npmproperty-information6.5.0непряма
npmproperty-information7.1.0непряма
npmpunycode2.3.1непряма
npmqueue-microtask1.2.3непряма
npmradix31.1.2непряма
npmreaddirp4.1.2непряма
npmrecma-build-jsx1.0.0непряма
npmrecma-jsx1.0.1непряма
npmrecma-parse1.0.0непряма
npmrecma-stringify1.0.0непряма
npmregex6.0.1непряма
npmregex-recursion6.0.2непряма
npmregex-utilities2.3.0непряма
npmrehype13.0.2непряма
npmrehype-expressive-code0.41.3непряма
npmrehype-format5.0.1непряма
npmrehype-parse9.0.1непряма
npmrehype-raw7.0.0непряма
npmrehype-recma1.0.0непряма
npmrehype-stringify10.0.1непряма
npmremark-directive3.0.1непряма
npmremark-gfm4.0.1непряма
npmremark-mdx3.1.1непряма
npmremark-parse11.0.0непряма
npmremark-rehype11.1.2непряма
npmremark-smartypants3.0.2непряма
npmremark-stringify11.0.0непряма
npmresolve-from4.0.0непряма
npmrestructure3.0.2непряма
npmretext9.0.0непряма
npmretext-latin4.0.0непряма
npmretext-smartypants6.2.0непряма
npmretext-stringify4.0.0непряма
npmreusify1.1.0непряма
npmrobust-predicates3.0.3непряма
npmrollup4.52.5непряма
npmroughjs4.6.6непряма
npmrun-parallel1.2.0непряма
npmrw1.3.3непряма
npms.color0.0.15непряма
npmsafer-buffer2.1.2непряма
npmsass-formatter0.7.9непряма
npmsax1.4.1непряма
npmsemver7.7.3непряма
npmsharp0.34.4непряма
npmshebang-command2.0.0непряма
npmshebang-regex3.0.0непряма
npmshiki3.14.0непряма
npmsisteransi1.0.5непряма
npmsitemap8.0.1непряма
npmsmartypants0.2.2непряма
npmsmol-toml1.4.2непряма
npmsource-map0.7.6непряма
npmsource-map-js1.2.1непряма
npmspace-separated-tokens2.0.2непряма
npmstarlight-blog0.24.3непряма
npmstream-replace-string2.0.0непряма
npmstring-width4.2.3непряма
npmstring-width7.2.0непряма
npmstringify-entities4.0.4непряма
npmstrip-ansi6.0.1непряма
npmstrip-ansi7.1.2непряма
npmstrip-json-comments3.1.1непряма
npmstrnum2.1.1непряма
npmstyle-to-js1.1.18непряма
npmstyle-to-object1.0.11непряма
npmstylis4.4.0непряма
npmsuf-log2.5.3непряма
npmsupports-color7.2.0непряма
npmsynckit0.11.11непряма
npmtiny-inflate1.0.3непряма
npmtinyexec1.0.1непряма
npmtinyglobby0.2.15непряма
npmto-regex-range5.0.1непряма
npmtrim-lines3.0.1непряма
npmtrough2.2.0непряма
npmts-api-utils2.1.0непряма
npmts-dedent2.3.0непряма
npmtsconfck3.1.6непряма
npmtslib2.8.1непряма
npmtype-check0.4.0непряма
npmtype-fest4.41.0непряма
npmtypescript5.9.3непряма
npmtypescript-eslint8.46.2непряма
npmufo1.6.1непряма
npmultrahtml1.6.0непряма
npmuncrypto0.1.3непряма
npmundici-types7.16.0непряма
npmunicode-properties1.4.1непряма
npmunicode-trie2.0.0непряма
npmunified11.0.5непряма
npmunifont0.6.0непряма
npmunist-util-find-after5.0.0непряма
npmunist-util-is6.0.1непряма
npmunist-util-modify-children4.0.0непряма
npmunist-util-position5.0.0непряма
npmunist-util-position-from-estree2.0.0непряма
npmunist-util-remove4.0.0непряма
npmunist-util-remove-position5.0.0непряма
npmunist-util-stringify-position4.0.0непряма
npmunist-util-visit5.0.0непряма
npmunist-util-visit-children3.0.0непряма
npmunist-util-visit-parents6.0.2непряма
npmunstorage1.17.1непряма
npmuri-js4.4.1непряма
npmutil-deprecate1.0.2непряма
npmuuid14.0.1непряма
npmvfile6.0.3непряма
npmvfile-location5.0.3непряма
npmvfile-message4.0.3непряма
npmvite6.4.1непряма
npmvitefu1.1.1непряма
npmweb-namespaces2.0.1непряма
npmwhich2.0.2непряма
npmwhich-pm-runs1.1.0непряма
npmwidest-line5.0.0непряма
npmword-wrap1.2.5непряма
npmwrap-ansi9.0.2непряма
npmxxhash-wasm1.1.0непряма
npmyargs-parser21.1.1непряма
npmyocto-queue0.1.0непряма
npmyocto-queue1.2.1непряма
npmyocto-spinner0.2.3непряма
npmyoctocolors2.1.2непряма
npmzod3.25.76непряма
npmzod-to-json-schema3.24.6непряма
npmzod-to-ts1.2.0непряма
npmzwitch2.0.4непряма
Сповіщення про залежності 25

Цей репозиторій не публікує пакета, який розпізнає індекс, тож оцінено його власний граф залежностей — 781 пакетів, серед яких є й піниї розробки та тестування, що ніколи не постачаються: 25 мають відомі сповіщення, з них 0 прямі.

ПакетВерсіяЗв'язокКритичністьСповіщеньВиправлено в
fast-xml-parser5.3.0непрямакритична75.7.0
flatted3.3.3непрямакритична23.4.2
rollup4.52.5непрямакритична14.59.0
astro5.15.1непрямависока157.1.0
brace-expansion1.1.12непрямависока35.0.8
brace-expansion2.0.2непрямависока35.0.8
defu6.1.4непрямависока16.1.5
devalue5.4.2непрямависока65.6.4
h31.15.4непрямависока52.0.1-rc.17
js-yaml4.1.0непрямависока34.3.0
minimatch3.1.2непрямависока310.2.3
minimatch9.0.5непрямависока310.2.3
picomatch2.3.1непрямависока24.0.4
picomatch4.0.3непрямависока24.0.4
postcss8.5.6непрямависока38.5.18
sharp0.34.4непрямависока10.35.0
vite6.4.1непрямависока48.0.16
@astrojs/rss4.0.13непрямапомірна14.0.19
ajv6.12.6непрямапомірна18.18.0
diff5.2.0непрямапомірна18.0.3
github.com/go-viper/mapstructure/v2v2.3.0непрямапомірна22.4.0
mdast-util-to-hast13.2.0непрямапомірна113.2.1
smol-toml1.4.2непрямапомірна11.6.1
dompurify3.4.11непряманизька13.4.12
golang.org/x/textv0.38.0непряманевідома10.39.0

Сповіщення означає, що версія, записана в графі залежностей, потрапляє в уражений діапазон. Досяжність не аналізується, а граф містить піниї розробки й тестування — знахідка може стосуватися інструментів, а не поставленого коду.

Звіт у форматі JSON машиночитний
{
  "data": {
    "repo": {
      "topics": [
        "cloudflare",
        "cloudflare-tunnel",
        "ingress",
        "ingress-controller",
        "kubernetes",
        "selfhosted"
      ],
      "is_fork": false,
      "size_kb": 1261,
      "has_wiki": true,
      "homepage": "https://tunnel.strrl.dev",
      "languages": {
        "Go": 237078,
        "Shell": 4600,
        "Gherkin": 4094,
        "Makefile": 1305,
        "Dockerfile": 1602,
        "Go Template": 2072
      },
      "pushed_at": "2026-07-27T07:34:36Z",
      "created_at": "2023-05-26T04:49:25Z",
      "owner_type": "User",
      "updated_at": "2026-07-26T16:26:34Z",
      "description": "🚀 Expose the website directly into the internet! The Kuberntes Ingress Controller based on Cloudflare Tunnel.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "master",
      "license_spdx_raw": "MIT",
      "primary_language": "Go",
      "significant_languages": [
        "Go"
      ]
    },
    "owner": {
      "blog": "https://strrl.dev",
      "name": "Zhiqiang ZHOU",
      "type": "User",
      "login": "STRRL",
      "company": null,
      "location": "Great Vancouver, Canada",
      "followers": 721,
      "avatar_url": "https://avatars.githubusercontent.com/u/20221408?v=4",
      "created_at": "2016-06-30T08:00:11Z",
      "is_verified": null,
      "public_repos": 237,
      "account_age_days": 3680
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.0.24",
          "kind": "patch",
          "published_at": "2026-07-20T05:25:49Z"
        },
        {
          "tag": "v0.0.23",
          "kind": "patch",
          "published_at": "2026-03-20T02:47:36Z"
        },
        {
          "tag": "v0.0.21",
          "kind": "patch",
          "published_at": "2025-11-03T19:06:26Z"
        },
        {
          "tag": "v0.0.19",
          "kind": "patch",
          "published_at": "2025-11-03T18:13:52Z"
        },
        {
          "tag": "v0.0.18",
          "kind": "patch",
          "published_at": "2025-02-10T03:04:55Z"
        },
        {
          "tag": "v0.0.17",
          "kind": "patch",
          "published_at": "2025-02-10T02:20:42Z"
        },
        {
          "tag": "v0.0.16",
          "kind": "patch",
          "published_at": "2024-11-06T17:24:14Z"
        },
        {
          "tag": "v0.0.15",
          "kind": "patch",
          "published_at": "2024-10-23T05:02:43Z"
        },
        {
          "tag": "v0.0.14",
          "kind": "patch",
          "published_at": "2024-10-17T03:41:52Z"
        },
        {
          "tag": "v0.0.13",
          "kind": "patch",
          "published_at": "2024-09-15T19:47:05Z"
        },
        {
          "tag": "v0.0.11",
          "kind": "patch",
          "published_at": "2024-06-03T12:12:12Z"
        },
        {
          "tag": "v0.0.10",
          "kind": "patch",
          "published_at": "2024-05-31T14:40:50Z"
        },
        {
          "tag": "v0.0.9",
          "kind": "patch",
          "published_at": "2023-11-25T08:49:25Z"
        },
        {
          "tag": "v0.0.8",
          "kind": "patch",
          "published_at": "2023-06-30T12:17:47Z"
        },
        {
          "tag": "v0.0.7",
          "kind": "patch",
          "published_at": "2023-06-30T11:52:07Z"
        },
        {
          "tag": "v0.0.4",
          "kind": "patch",
          "published_at": "2023-06-18T05:40:05Z"
        },
        {
          "tag": "v0.0.3",
          "kind": "patch",
          "published_at": "2023-06-17T23:10:57Z"
        },
        {
          "tag": "v0.0.2",
          "kind": "patch",
          "published_at": "2023-06-13T06:56:52Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "147f794731e7fe99b0c7ff755e2c57afebfcded0",
          "body": "…#344)\n\n* feat: add controller observability (health probes, metrics, events)\n\n* fix: truncate metrics service name to 63 characters",
          "is_bot": false,
          "headline": "feat: add controller observability (health probes, metrics, events) (…",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-25T20:40:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a33da47828d03d7b845648b721c47cb4d09d590a",
          "body": "…ons (#343)\n\n* feat: support cloudflared originRequest settings via annotations\n\nNine new annotations map to cloudflared originRequest fields:\ntimeouts, keepalive pool, happy eyeballs, chunked encoding, http2\norigin and direct no-tls-verify control. Parsing is typed and\nvalidated, invalid values fai\n[…]\nive-connections zero is\na meaningful value; tunnel discovery in the e2e filters deleted\ntunnels and retries transient failures; document the https default\nof no-tls-verify as the historical exception.",
          "is_bot": false,
          "headline": "feat: support cloudflared originRequest settings via ingress annotati…",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-25T19:51:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "387e6f869f2621d2fa249d72eb94966b14602d34",
          "body": "Connector deployment and token secret are created at runtime and\nsurvive helm uninstall, leaving cloudflared running against a stale\ntunnel (#162). Give them an ownerReference to the controller\ndeployment so kubernetes GC removes them with the release.\n\nExternal resources follow the ingress-nginx model and are never\ntouched during uninstall: the tunnel is addressed by name and reused\non reinstall, DNS records are cleaned by normal ingress deletion.\n\nCloses #197\nCloses #162",
          "is_bot": false,
          "headline": "fix: garbage collect connector resources on uninstall (#342)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-25T18:41:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "505e353f202a629f7afd697353dbd89e5140671f",
          "body": null,
          "is_bot": false,
          "headline": "ci: keep e2e-test required check satisfied on docs-only changes (#341)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-23T17:14:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "68b8a89f96200f17fb35d33be9f7902d132afe45",
          "body": "…(#340)\n\n* docs: add architecture explanation page\n\n* docs: slim README and purify quickstart tutorial\n\n* docs: fill reference gaps in controller configuration and helm values\n\n* docs: add symptom-oriented troubleshooting page\n\n* docs: add how-to guide series\n\n* docs: keep API token template link in\n[…]\nDME\n\n* docs: add astro-mermaid rendering and split architecture diagrams\n\n* docs: reorganize sidebar by Divio quadrant and add feedback CTA\n\n* docs: add client connection section for non-HTTP services",
          "is_bot": false,
          "headline": "docs: reorganize sidebar by Divio quadrant and add docs feedback CTA …",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-23T06:43:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1372e06c7dabb72f91bb8f0081d96c0ac75a602a",
          "body": "…nto a tutorial (#336)\n\n* docs: slim README and purify quickstart tutorial\n\n* docs: keep API token template link in README\n\n* docs: restore demo video and quickstart token template link",
          "is_bot": false,
          "headline": "docs: slim README down to point at the docs site, purify quickstart i…",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-23T06:41:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eed700a53bdc6626c17d4bdecc8291f2b4b758bc",
          "body": "* docs: add how-to guide series\n\n* docs: add client connection section for non-HTTP services",
          "is_bot": false,
          "headline": "docs: add how-to guide series (#339)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-23T06:41:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "238fb64be926d1673eda897254169008997049f3",
          "body": null,
          "is_bot": false,
          "headline": "docs: add symptom-oriented troubleshooting page (#338)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-23T06:41:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1de64da4572bbae09a330ec3a83bf049bb0bb804",
          "body": "… (#337)",
          "is_bot": false,
          "headline": "docs: fill reference gaps in controller configuration and helm values…",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-23T06:41:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e57e4cf3eb8b615a2c24fb52f3eaabfeca3e6fe4",
          "body": "* docs: add architecture explanation page\n\n* docs: add astro-mermaid rendering and split architecture diagrams",
          "is_bot": false,
          "headline": "docs: add architecture explanation page (#335)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-23T06:41:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5995da2d1a691d32ed748ff52708b48490a0cdf9",
          "body": null,
          "is_bot": false,
          "headline": "ci: skip e2e test for docs-only changes (#333)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-23T05:24:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "51eb8d218cde1b9a8cf84a4b79f7f4e858c6766c",
          "body": "…332)\n\nAddress the two open review comments on #331: pass each helm value\nthrough its own --set flag, and document that credential rotation\nrequires a controller rollout because the values are injected as\nenv vars and read once at startup.\n\nCover features merged recently that the docs site missed:\n\n\n[…]\n92, #324)\n- warning events on ingress objects, troubleshooting section (#317)\n- wildcard hostname support and rule ordering semantics (#287, #322)\n- non http backend protocols and path handling (#321)",
          "is_bot": false,
          "headline": "docs: cover recently merged features and fix helm install commands (#…",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-23T05:22:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4f967203d8139d922ea127540acf6abef4389b54",
          "body": null,
          "is_bot": false,
          "headline": "docs: import tunnel.strrl.dev docs site sources (#331)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-23T04:58:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c1fd0f669d858fc86a10e15927a0818b45d5068c",
          "body": null,
          "is_bot": false,
          "headline": "feat: apply dns comment template to all managed records",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-23T04:52:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7b07c6dd87241d390d22080c0741d7102c4e8aab",
          "body": null,
          "is_bot": false,
          "headline": "ci: make codecov project status informational",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-23T04:49:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "598c68f9d86dc3ae44e0fa537f18fc9e69e3b6b3",
          "body": null,
          "is_bot": false,
          "headline": "feat: add managed-by comment to TXT ownership records",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-23T04:47:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2f97f289de2d52435b76a6d551df10b0d541f01a",
          "body": "…connector label helpers (#329)\n\nCo-authored-by: Zhiqiang ZHOU <str_ruiling@outlook.com>\nCo-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>\nCo-authored-by: Zhiqiang ZHOU <im@strrl.dev>",
          "is_bot": true,
          "headline": "refactor: extract duplicated exposure filtering, DNS TXT lookup, and …",
          "author_name": "devin-ai-integration[bot]",
          "author_login": "devin-ai-integration[bot]",
          "committed_at": "2026-07-23T03:40:12Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "92a069afe71a4e89b22029c6de819b7fdfb59182",
          "body": "Co-authored-by: Zhiqiang ZHOU <str_ruiling@outlook.com>\nCo-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Improve error propagation in DNS sync and ingress reconcile (#330)",
          "author_name": "devin-ai-integration[bot]",
          "author_login": "devin-ai-integration[bot]",
          "committed_at": "2026-07-23T03:38:53Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7a2e5344791645a782c670b0a5c2989a0303f58d",
          "body": "…Go toolchain (#328)\n\nCo-authored-by: Zhiqiang ZHOU <str_ruiling@outlook.com>\nCo-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "security: patch vulnerable deps (mapstructure GO-2025-3787) and bump …",
          "author_name": "devin-ai-integration[bot]",
          "author_login": "devin-ai-integration[bot]",
          "committed_at": "2026-07-23T03:38:35Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1620474e3e1b0c54bb52990dd1c5231eb7fa15b1",
          "body": null,
          "is_bot": false,
          "headline": "ci: make codecov patch status informational",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-23T03:37:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d6ef20eae1775b57fd56768a0395ca322a897886",
          "body": "* refactor: split e2e scenarios into godog features\n\nReplace the single 400 line Ginkgo It with four Gherkin features, http\nexposure, tcp exposure, wildcard routing and dns management. Shared\ninfrastructure, minikube, the controller image and the Helm release,\nboots once in BeforeSuite, scenarios on\n[…]\nd ingress deletion list in e2e.sh. Scenarios run serially\nbecause they share one Cloudflare tunnel.\n\n* test: use plain wording in e2e feature files\n\n* test: write godog junit report into e2e artifacts",
          "is_bot": false,
          "headline": "refactor: split e2e scenarios into godog features (#327)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-23T02:51:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cba7d635f69e96a051571eca99971f6475106f4f",
          "body": "* feat: allow customization of controlled-cloudflared-connector Deployment spec\n\nAllow users to customize the pod template of the managed cloudflared Deployment via Helm values:\n- Resources (cpu/memory requests and limits)\n- Security contexts (pod and container level)\n- Pod labels, annotations, node\n[…]\nelm, and wait for DNS propagation.\n\n* fix: reject unknown fields in cloudflared deployment config\n\nA typo in the customization file must fail at startup instead of\nbecoming a silently ignored setting.",
          "is_bot": false,
          "headline": "Allow customization of cloudflared Deployment spec (#273)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-20T05:20:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0ae750b264e240e214a5b8eb634f6fd08215a31c",
          "body": "Replace the implicit replicas greater than one trigger with a\ncloudflared-pod-anti-affinity flag, environment variable and helm value,\ndefault off. A hard scheduling requirement that switches on by itself\nstrands pods as pending on clusters with fewer nodes than replicas.\nAlso swap the hand rolled affinity comparison for the community standard\nequality.Semantic.DeepEqual from apimachinery.",
          "is_bot": false,
          "headline": "feat: make cloudflared pod anti-affinity an explicit opt in (#326)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-20T04:29:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6c09190c2a1009719a093431066ce327cb1ab989",
          "body": "Spread connector pods across nodes when replicas > 1 using\nrequiredDuringSchedulingIgnoredDuringExecution anti-affinity.\nAdds needsUpdate check so existing deployments pick up the\naffinity on the next reconcile cycle.\n\nCo-authored-by: Conrado Buhrer <conrado@buhrer.net>\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "IN-103: add pod anti-affinity to cloudflared connector deployment (#325)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-20T04:18:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "bf2b8814e9a3032959869efce00b3dea75486335",
          "body": "* chore: finish viper config loading follow up\n\nRead dns-comment-template through viper in RunE so it is configurable\nvia environment variable like every other flag, move cloudflared\ndeployment defaults next to their usage instead of viper.SetDefault in\nmain, and document flag to environment variabl\n[…]\nn resolves a\nCloudflaredConfig struct and passes it to\nCreateOrUpdateControlledCloudflared, and tests construct the config\nexplicitly instead of depending on process environment or global viper\nstate.",
          "is_bot": false,
          "headline": "chore: finish viper config loading follow up (#324)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-20T04:06:13Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "013359be85a02ea4c8a84d72c24c3c3385e0bf89",
          "body": "Integrates github.com/spf13/viper to support environment variable-based\nconfiguration alongside existing Cobra CLI flags.\n\n- Add viper dependency to go.mod\n- Bind all Cobra PersistentFlags to viper with BindPFlags\n- Enable AutomaticEnv with hyphen-to-underscore key replacement\n- Read config values f\n[…]\n each flag.\n\nExamples:\n  --cloudflare-api-token=xxx  or  CLOUDFLARE_API_TOKEN=xxx\n  --cloudflare-account-id=xxx  or  CLOUDFLARE_ACCOUNT_ID=xxx\n\nFixes #291\n\nCo-authored-by: Zhiqiang ZHOU <im@strrl.dev>",
          "is_bot": false,
          "headline": "feat: use Viper for controller configuration loading (#292)",
          "author_name": "rdyjun",
          "author_login": "rdyjun",
          "committed_at": "2026-07-20T02:33:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1e9edd2933bd176647d2d068163ddab8219526a5",
          "body": "… (#320)\n\nBumps the actions group with 9 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [actions/checkout](https://github.com/actions/checkout) | `4` | `7` |\n| [actions/setup-go](https://github.com/actions/setup-go) | `5` | `7` |\n| [azure/setup-helm](https://github.com/az\n[…]\npe: version-update:semver-major\n  dependency-group: actions\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump the actions group across 1 directory with 9 updates…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-20T00:02:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a8e30d74d35921c65c2e700a24f9193f386fe3ab",
          "body": "…tes (#318)\n\nBumps the kubernetes group with 2 updates in the / directory: [k8s.io/api](https://github.com/kubernetes/api) and [k8s.io/client-go](https://github.com/kubernetes/client-go).\n\n\nUpdates `k8s.io/api` from 0.36.0 to 0.36.2\n- [Commits](https://github.com/kubernetes/api/compare/v0.36.0...v0.\n[…]\n version-update:semver-patch\n  dependency-group: kubernetes\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump the kubernetes group across 1 directory with 3 upda…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-20T00:00:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b90041fe693156be6aeaed76dbfd68f889718708",
          "body": "* feat: relinquish DNS ownership when management is disabled\n\nPer-ingress disable-dns-management previously just skipped record\nreconciliation, leaving the ownership TXT behind. A later ingress\ndeletion would then find the TXT, claim the hostname and delete a\nCNAME that external-dns or a load balanc\n[…]\nership relinquish\n\nCreates a managed ingress, confirms the CNAME and ownership TXT exist\nvia the Cloudflare API, enables the disable-dns-management annotation\nand confirms both records are cleaned up.",
          "is_bot": false,
          "headline": "feat: relinquish DNS ownership when management is disabled (#323)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-19T23:58:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2410eaf882619472ffe846d3583b22c3d15fdf25",
          "body": "* feat: refine wildcard rule ordering and verify routing end to end\n\nFollow-ups to #287:\n- wildcards with more labels sort first, a broader wildcard would\n  suffix-match and shadow a more specific one\n- lexical path fallback makes the comparator a total order, the rule\n  list must be deterministic o\n[…]\noudflare tunnel and zone, overlapping controllers\ntreat each other's records as orphans and delete them in a loop, so\nthe workflow gets a concurrency group.\n\n* chore: ignore local e2e credentials file",
          "is_bot": false,
          "headline": "feat: refine wildcard rule ordering and verify routing end to end (#322)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-19T23:49:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7980bf8108f91dc5069f61cb159d0b9cb67f2f3b",
          "body": "Adds the annotation\n`cloudflare-tunnel-ingress-controller.strrl.dev/disable-dns-management`\n(\"true\"/\"false\", default \"false\"). When set to \"true\" on an Ingress, the\ncontroller still configures the Cloudflare Tunnel ingress rule for that host,\nbut skips all DNS record (CNAME/TXT) management for it. D\n[…]\ndateDNSCNAMERecord no longer requires a flagged exposure's hostname to\n  belong to a Cloudflare zone (it may be managed elsewhere)\n\nCloses #310\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: add per-ingress annotation to disable DNS record management (#311)",
          "author_name": "Lado Golijashvili",
          "author_login": "lado936",
          "committed_at": "2026-07-19T22:58:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6fd850877afcbe7274ca2500f99a263c2b44b758",
          "body": "* Initial plan\n\n* Fix wildcard domain sort priority: wildcards now have lowest priority as fallbacks\n\nCo-authored-by: joelcox22 <1089216+joelcox22@users.noreply.github.com>\n\n* Add test: single character subdomain sorts before wildcard\n\nCo-authored-by: joelcox22 <1089216+joelcox22@users.noreply.githu\n[…]\nIngressRules to sortIngressRules\n\nCo-authored-by: joelcox22 <1089216+joelcox22@users.noreply.github.com>\n\n---------\n\nCo-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Sort wildcard domain ingress routes after non-wildcard routes (#287)",
          "author_name": "Joel Cox",
          "author_login": "joelcox22",
          "committed_at": "2026-07-19T22:47:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1299970a956595731106fd0d1fe732de6a4e2261",
          "body": "* fix: omit tunnel rule path for non http backend protocols\n\nPath based routing only exists for http(s) in cloudflare tunnel\ningress rules. For backend protocols like ssh, rdp or tcp the Ingress\nspec still requires a dummy http path entry, which previously leaked\ninto the tunnel rule and broke the t\n[…]\nerforms a real PING round trip from the test runner through cloudflared\naccess tcp, the Cloudflare edge and the tunnel. Before the path fix the\ntcp rule carried a path and this data path did not work.",
          "is_bot": false,
          "headline": "fix: omit tunnel rule path for non http backend protocols (#321)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-19T22:38:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6762af27d74440430669684f864ab94234b571c5",
          "body": "…via dependabot (#319)\n\nBranch refs (beta, master, latest) move on every upstream push and are\nthe largest supply chain surface in the workflows. Version tags plus\nweekly dependabot tracking keep updates flowing through reviewable PRs\ninstead. claude-code-action moves from the stale beta branch to v1,\nwhich renames direct_prompt to prompt.",
          "is_bot": false,
          "headline": "ci: replace floating branch refs with version tags and track actions …",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-19T22:16:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a5cc4758f8c76432db6c56075913c5e4cb8c73be",
          "body": "The Ingress API has no status conditions, so unsupported states were\nonly visible in controller logs. Follow the ingress-nginx convention\nand emit Warning events on the Ingress object instead, visible via\nkubectl describe ingress:\n\n- RuleSkipped: a rule carries only a host, no http section\n- TLSIgno\n[…]\nSL Passthrough unsupported\n- TransformFailed: any transform error, e.g. headless service or\n  unsupported path type\n\nThe ClusterRole gains create/patch on events, the namespaced Role\nalready had them.",
          "is_bot": false,
          "headline": "feat: emit Kubernetes events for skipped and failed ingress rules (#317)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-19T02:18:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d26bace1797ec9bf134ae7ee06702e2fe4561f9a",
          "body": "… (#313)\n\n* fix(controller): return error when ingress rule has host but nil HTTP\n\nSigned-off-by: Arunesh Dwivedi <arunesh.devops@gmail.com>\n\n* fix: skip host-only ingress rules instead of failing the ingress\n\nFollow the ingress-nginx convention: rule.HTTP is optional in the\nIngress API, so a host-o\n[…]\n is skipped with a log line and the\nremaining rules of the same ingress keep working.\n\n---------\n\nSigned-off-by: Arunesh Dwivedi <arunesh.devops@gmail.com>\nCo-authored-by: Zhiqiang ZHOU <im@strrl.dev>",
          "is_bot": false,
          "headline": "fix(controller): return error when ingress rule has host but nil HTTP…",
          "author_name": "Arunesh Dwivedi",
          "author_login": "AruneshDwivedi",
          "committed_at": "2026-07-19T01:57:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "846842d947355637e0758270833002414f8553ec",
          "body": "…1 (#306)\n\nBumps [sigs.k8s.io/controller-runtime](https://github.com/kubernetes-sigs/controller-runtime) from 0.23.1 to 0.24.1.\n- [Release notes](https://github.com/kubernetes-sigs/controller-runtime/releases)\n- [Changelog](https://github.com/kubernetes-sigs/controller-runtime/blob/main/RELEASE.md)\n\n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump sigs.k8s.io/controller-runtime from 0.23.1 to 0.24.…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-19T01:09:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dd16934879cdb0515071ee1b3a3f09b008ee11b2",
          "body": "The replace block and hack/update-kubernetes-library.sh were adapted\nfrom chaos-mesh in #207. That pattern is only required for projects\nthat depend on the k8s.io/kubernetes monorepo, whose staging modules\nare declared as v0.0.0. This project only uses published staging\nmodules plus controller-runtime, so MVS keeps versions aligned on its\nown. The pins also block dependabot from bumping controller-runtime,\nbecause it updates require directives but never replace directives.",
          "is_bot": false,
          "headline": "chore: remove k8s.io replace pins and update script (#316)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-19T01:05:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c46205a5909e1d9fd30031926d5f947598e965b0",
          "body": "* chore(deps): Bump the go-deps group with 3 updates\n\nBumps the go-deps group with 3 updates: [github.com/chromedp/chromedp](https://github.com/chromedp/chromedp), [github.com/cloudflare/cloudflare-go](https://github.com/cloudflare/cloudflare-go) and [github.com/onsi/gomega](https://github.com/onsi/\n[…]\nng 1.26\n\n---------\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\nCo-authored-by: Zhiqiang ZHOU <im@strrl.dev>",
          "is_bot": true,
          "headline": "chore(deps): Bump the go-deps group with 3 updates (#315)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-19T00:29:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a31013e4e031c75c0e8b1b071aae64bc0ec9fb70",
          "body": "* ci: group dependabot updates and enable auto merge for minor and patch bumps\n\n* ci: drop auto merge workflow, keep dependabot grouping only",
          "is_bot": false,
          "headline": "ci: group dependabot updates (#314)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-19T00:16:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c7c79eac88acdb10f62c4e95d87d9e3f78b67987",
          "body": "Bumps [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) from 2.28.1 to 2.32.0.\n- [Release notes](https://github.com/onsi/ginkgo/releases)\n- [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/onsi/ginkgo/compare/v2.28.1...v2.32.0)\n\n---\nupdate\n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump github.com/onsi/ginkgo/v2 from 2.28.1 to 2.32.0 (#304)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-19T00:09:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a156df6982ac2ca9b83f49007d450dd2df783302",
          "body": "Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.39.1 to 1.41.0.\n- [Release notes](https://github.com/onsi/gomega/releases)\n- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/onsi/gomega/compare/v1.39.1...v1.41.0)\n\n---\nupdated-d\n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump github.com/onsi/gomega from 1.39.1 to 1.41.0 (#305)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-19T00:04:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ce42994c0ac7385da15a509dc063827d103f2375",
          "body": null,
          "is_bot": false,
          "headline": "test: inline E2E dump commands",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-18T23:47:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d035a474bed0237c737b1f3f51e18bf95d01a3c2",
          "body": "… (#270)\n\n* feat: pass tunnel token via Kubernetes Secret instead of command args\n\nStore the Cloudflare tunnel token in a Kubernetes Secret\n(controlled-cloudflared-token) and inject it into cloudflared pods\nvia the TUNNEL_TOKEN environment variable, instead of passing it as\na --token command-line ar\n[…]\nest: cover default cloudflared replicas\n\n* refactor: encapsulate cloudflared deployment\n\n* test: collect E2E dump directly\n\n* test: fully redact secret metadata\n\n* test: move E2E dump to shell wrapper",
          "is_bot": false,
          "headline": "feat: pass tunnel token via Kubernetes Secret instead of command args…",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-18T23:46:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4febdc9048862a06096a7f5ba3334d7a846a344d",
          "body": "* Mask Cloudflare API token in logs\n\nThe Cloudflare API token was previously logged in cleartext when the log\nverbosity was set to 3 or higher. This commit masks the token in the log\nmessage to prevent sensitive information disclosure.\n\nFixes: security vulnerability where API token is logged\n\nCo-aut\n[…]\nusers.noreply.github.com>\n\n---------\n\nCo-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>\nCo-authored-by: STRRL <20221408+STRRL@users.noreply.github.com>",
          "is_bot": false,
          "headline": "🔒 Fix sensitive API token logging (#285)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-07-16T18:57:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "279e68d64a575f7bbe97ccf479196c27c4ecc0be",
          "body": "* feat: add configurable DNS comment template for CNAME records\n\nRestore DNS CNAME record comments that were removed when ownership\ntracking migrated from comment-based to TXT-based.\n\nAdd --dns-comment-template flag and corresponding Helm value that\naccepts a Go template with {{.TunnelName}}, {{.Tun\n[…]\nomment\n\nTable-driven tests covering: disabled template, default template,\nall template variables, long comments exceeding 100 chars, invalid\ntemplate syntax graceful degradation, and static templates.",
          "is_bot": false,
          "headline": "feat: add configurable DNS comment template for CNAME records (#275)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-03-20T02:45:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6b4029f5044b1708dcacb885be18f969f900e1cf",
          "body": "…(#290)\n\n* fix: skip UpdateTunnelConfiguration when ingress rules are unchanged\n\nFetch current tunnel config before PUT and compare the ingress slice\nwith reflect.DeepEqual. If identical, skip the update entirely.\n\nThis eliminates ~28 unconditional Cloudflare API write calls per day\n(one per 10-hour\n[…]\nudflare admin audit log.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\n\n* use logger.Info instead of logger.V(3).Info\n\n---------\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: skip UpdateTunnelConfiguration when ingress rules are unchanged …",
          "author_name": "Conrado Buhrer",
          "author_login": "conrado",
          "committed_at": "2026-03-11T14:19:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ba10a2a6cbc0f341edd5cc868c55455f91a1c568",
          "body": "- Replace stringSliceContains with slices.Contains\n- Replace removeStringFromSlice with slices.DeleteFunc\n- Replace slicesEqual with slices.Equal\n- Remove custom helper functions and their associated tests\n- Add necessary slices package imports\n\nCo-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>\nCo-authored-by: STRRL <20221408+STRRL@users.noreply.github.com>",
          "is_bot": false,
          "headline": "refactor: use slices package instead of custom helpers (#279)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-02-27T18:19:27Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9455aa13d61a73c7c5c4b4cb544b8d9ec8976f89",
          "body": "This commit corrects a typo in the filename `pkg/controller/weel_known_annotations.go`. The file has been renamed to `pkg/controller/well_known_annotations.go`. This change is purely for code health and maintainability, ensuring filenames are spelled correctly. No functional changes were made to the code within the file.\n\nCo-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>\nCo-authored-by: STRRL <20221408+STRRL@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Rename weel_known_annotations.go to well_known_annotations.go (#280)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-02-27T18:09:21Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "78c5c83aa923bfbbe0299a080ba2669442138a19",
          "body": "Replaces the custom `boolPointer` helper function with `ptr.To` from `k8s.io/utils/ptr` to improve code maintainability and reduce duplication. This change updates `pkg/controller/transform.go`, `pkg/cloudflare-controller/bootstrap.go`, `pkg/cloudflare-controller/transform.go`, and `pkg/cloudflare-c\n[…]\nller/...` which passed successfully.\n\nCo-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>\nCo-authored-by: STRRL <20221408+STRRL@users.noreply.github.com>",
          "is_bot": false,
          "headline": "🧹 Use `ptr.To` Instead of `boolPointer` (#282)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-02-27T18:09:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f35a4eaeddf0c3f9a7c5dc16293607a1330309ef",
          "body": "Enable multiple controller replicas via controller-runtime's built-in leader\nelection. Only the elected leader actively reconciles Ingress resources and\nmanages cloudflared connectors, preventing concurrent updates to Cloudflare\ntunnel configuration.\n\n- Add --leader-elect CLI flag (default: false, b\n[…]\np on mgr.Elected() channel\n- Add Helm values and template support for leader election\n- Add RBAC permissions for coordination.k8s.io/leases and events\n- Fix pre-existing RoleBinding/Role kind mismatch",
          "is_bot": false,
          "headline": "feat: add leader election support for high availability (#272)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-02-19T04:06:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "908b5e5f37b0accc6b7c0c047bd845543a171e71",
          "body": "* feat: add --cluster-domain flag for custom cluster domains\n\nKubernetes clusters can use a custom domain via --cluster-domain\n(kubelet) instead of the default cluster.local. The controller\nhardcoded cluster.local when constructing backend service FQDNs,\ncausing DNS resolution failures on clusters w\n[…]\ned rather than\nrelying on the default \"cluster.local\". Also enrich descriptions for the\n--cluster-domain flag and the Helm clusterDomain value.\n\n---------\n\nCo-authored-by: Zhiqiang ZHOU <im@strrl.dev>",
          "is_bot": false,
          "headline": "feat: add --cluster-domain flag for custom cluster domains (#264)",
          "author_name": "Robbe Verhelst",
          "author_login": "robbeverhelst",
          "committed_at": "2026-02-12T04:47:51Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "601e4ff1b931fa07d8cea9e359beaa0427fbc162",
          "body": "Bump k8s.io/{api,apimachinery,client-go,apiextensions-apiserver} from\nv0.35.0 to v0.35.1 along with all replace directives. Also updates\nk8s.io/utils to latest.\n\nSupersedes #250.",
          "is_bot": false,
          "headline": "chore(deps): bump k8s.io dependencies to v0.35.1 and k8s.io/utils (#269)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-02-12T04:25:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "487ec0c96ce38763169e2412c26411779044a4d5",
          "body": "…257)\n\n* fix: use TXT records instead of comments for DNS record management\n\nReplace DNS comment-based tracking with TXT records to avoid Cloudflare's\n100-character comment limit (fixes #168).\n\nChanges:\n- Add TXT record (_ctic_managed.<hostname>) with JSON content identifying\n  controller and tunnel\n[…]\nSR1 handler\n\nThe handler is only compiled in when explicitly built with -tags coverage,\nenabling efficient coverage collection from long-running processes without\nadding overhead to production builds.",
          "is_bot": false,
          "headline": "fix: use TXT records instead of comments for DNS record management (#…",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-02-12T04:17:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4a3b6385f363911ec922ae4bd8a1f044a024076c",
          "body": "* chore: setup pre-commit hooks with prek\n\nAdd prek.toml to configure gofmt, go vet, and golangci-lint as pre-commit hooks. Add make setup target to install hooks after cloning. Update CLAUDE.md with prek documentation and condense verbose sections.\n\n* fix: resolve golangci-lint errcheck and go vet \n[…]\nSetenv/Unsetenv(...)).To(Succeed()) in integration tests\n- Remove unused isDeleted variable and convert if/else chain to switch in transform.go\n- Simplify ticker receive in main.go (flagged by go vet)",
          "is_bot": false,
          "headline": "Setup pre-commit hooks with prek (#268)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-02-11T06:12:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "00c377d9fc585add04f2f37fc33182f3615e0c53",
          "body": null,
          "is_bot": false,
          "headline": "Add support for `priorityClassName` (#266)",
          "author_name": "Matt DeKrey",
          "author_login": "mdekrey",
          "committed_at": "2026-02-11T05:24:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "27e4afa21a08a5aa02fcdf2994940128e4761b97",
          "body": "The go.mod was updated to require go 1.25.0 but the Dockerfile still\nreferenced golang:1.24, causing the e2e-test CI job to fail with:\n\"go: go.mod requires go >= 1.25.0 (running go 1.24.13; GOTOOLCHAIN=local)\"",
          "is_bot": false,
          "headline": "fix(docker): bump Go version in Dockerfile to 1.25 (#267)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-02-11T05:23:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6414b812c1c838a64aac3d738d286e94aefe13fc",
          "body": "- github.com/onsi/ginkgo/v2: 2.27.1 → 2.28.1\n- github.com/onsi/gomega: 1.38.2 → 1.39.1\n- sigs.k8s.io/controller-runtime: 0.22.3 → 0.23.1\n- github.com/spf13/cobra: 1.10.1 → 1.10.2\n- k8s.io/api, apimachinery, client-go: 0.34.1 → 0.35.0\n- Go version: 1.24.0 → 1.25.0\n\nConsolidates updates from Dependabot PRs #250, #259, #261, #262.",
          "is_bot": false,
          "headline": "chore(deps): bump Go dependencies",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2026-02-05T04:27:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a2a35bd4c43c73e6b543f8ca3ed57a683a7257ec",
          "body": "Update release-helm workflow to use the modern $GITHUB_OUTPUT file\nformat instead of the deprecated ::set-output command for setting\nworkflow outputs in GitHub Actions.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci(workflows): migrate to GITHUB_OUTPUT in release-helm workflow",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2025-11-03T19:14:57Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "292541263b062ddccd6442a8966930ed3dfe6d02",
          "body": "Update the Helm chart release workflow from ubuntu-20.04 to ubuntu-latest to use a more recent runner version.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci(workflows): update release-helm workflow to use ubuntu-latest",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2025-11-03T19:03:43Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "972eda792f1b1d79d94ca5a8d4af4279ec4c2cba",
          "body": "Remove cache-from and cache-to configuration from both amd64 and arm64\nbuild jobs to avoid dependency on GitHub Actions cache and gcloud\nauthentication requirements.\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: remove GitHub Actions cache from container image builds (#245)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2025-11-03T18:57:34Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4a17ca3eea680418ab5ffa59174ebe800b500854",
          "body": "Allow users to add custom labels to the ServiceMonitor resource via\ncloudflaredServiceMonitor.labels in values.yaml. This enables compatibility\nwith Prometheus Operator instances that use custom label selectors.\n\nExample usage:\n```yaml\ncloudflaredServiceMonitor:\n  create: true\n  labels:\n    release: kube-prometheus-stack\n```\n\nThis change maintains backward compatibility - if no custom labels are\nspecified, the ServiceMonitor behaves exactly as before.",
          "is_bot": false,
          "headline": "feat: add custom labels support to ServiceMonitor (#239)",
          "author_name": "Conrado Buhrer",
          "author_login": "conrado",
          "committed_at": "2025-11-03T18:12:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d3e05735d371de98f25eedd6fb5b9d8b34d822fc",
          "body": "Update multiple dependencies including Kubernetes packages to v0.34.1,\ncontroller-runtime to v0.22.3, cloudflare-go to v0.116.0, and testing\nframeworks.\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(deps): update Go dependencies (#241)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2025-10-28T17:26:50Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "325d6e7aceec90d928a7a901c336b191e99c0b14",
          "body": "Add community survey link to README to gather user feedback\nand improve the controller based on real-world usage. Include\nHelm chart NOTES.txt with post-installation instructions and\na QR code for easy mobile access to the survey.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: add community survey and post-install instructions",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2025-10-21T22:43:01Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "78d7ee4fca6c53d4eddaef432a4227aa71ab7168",
          "body": "…template\n\nAdd numbered steps to the DIY instructions for better clarity and sequential guidance.\nInclude a pre-configured Cloudflare API token template URL to streamline the token\ncreation process with the required permissions.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: improve DIY setup instructions with step numbers and API token …",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2025-10-21T22:16:27Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "13991502ec418fbe4eee26e2f7d5c1f1fb9e1695",
          "body": "The dev target now includes --cache-artifacts=false to prevent Skaffold\nfrom checking remote registries during development, which was causing\ngcloud authentication errors when Docker credential helpers were configured.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "build(dev): disable Skaffold cache to avoid gcloud auth requirement",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2025-10-10T18:51:16Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9ec3afd76945377cb0c6e8e3817c3118ec754930",
          "body": "Bumps [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) from 2.22.2 to 2.26.0.\n- [Release notes](https://github.com/onsi/ginkgo/releases)\n- [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/onsi/ginkgo/compare/v2.22.2...v2.26.0)\n\n---\nupdate\n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump github.com/onsi/ginkgo/v2 from 2.22.2 to 2.26.0 (#228)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-10-10T17:23:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "68d952feb84c704d4335e463a0c2f5003137b22c",
          "body": "Bumps [github.com/spf13/cobra](https://github.com/spf13/cobra) from 1.9.1 to 1.10.1.\n- [Release notes](https://github.com/spf13/cobra/releases)\n- [Commits](https://github.com/spf13/cobra/compare/v1.9.1...v1.10.1)\n\n---\nupdated-dependencies:\n- dependency-name: github.com/spf13/cobra\n  dependency-versi\n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump github.com/spf13/cobra from 1.9.1 to 1.10.1 (#223)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-10-10T17:22:21Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0d0b2ed8031fa6518f29eb812c42c580a1def2b7",
          "body": "Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.36.2 to 1.38.2.\n- [Release notes](https://github.com/onsi/gomega/releases)\n- [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/onsi/gomega/compare/v1.36.2...v1.38.2)\n\n---\nupdated-d\n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump github.com/onsi/gomega from 1.36.2 to 1.38.2 (#222)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-10-10T17:22:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a6031272c4c267041e7dc7612c12d33558478790",
          "body": "…#220)\n\nBumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.10.0 to 1.11.1.\n- [Release notes](https://github.com/stretchr/testify/releases)\n- [Commits](https://github.com/stretchr/testify/compare/v1.10.0...v1.11.1)\n\n---\nupdated-dependencies:\n- dependency-name: github.com/\n[…]\nirect:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump github.com/stretchr/testify from 1.10.0 to 1.11.1 (…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-10-10T17:02:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0d379571d5b87d6357707e88c7a7b4967dd67c8a",
          "body": "Bumps [github.com/go-logr/logr](https://github.com/go-logr/logr) from 1.4.2 to 1.4.3.\n- [Release notes](https://github.com/go-logr/logr/releases)\n- [Changelog](https://github.com/go-logr/logr/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/go-logr/logr/compare/v1.4.2...v1.4.3)\n\n---\nupdated-\n[…]\nirect:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump github.com/go-logr/logr from 1.4.2 to 1.4.3 (#211)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-10-10T17:02:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9bc56866463590ce0ffb6d7d9cc25fc51a4e7b5f",
          "body": "* test(e2e): add end-to-end testing framework\n\nAdd comprehensive E2E testing framework that validates the controller\nfunctionality with real Cloudflare Tunnel and DNS configurations.\nThe test suite spins up a temporary minikube cluster, deploys the\ncontroller, and validates connectivity through Clou\n[…]\nith [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\n\n---------\n\nSigned-off-by: Zhiqiang ZHOU <im@strrl.dev>\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(e2e): add end-to-end testing framework (#229)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2025-10-10T16:58:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "731a86515174bf0d600e5645c92519ce4f202b4b",
          "body": "* name fix\n\n* more docs\n\n* add secret\n\n* improve docs\n\n---------\n\nCo-authored-by: fmendieta <fmendieta@eservicios.indra.es>",
          "is_bot": false,
          "headline": "feat: improve docs for contributing (#203)",
          "author_name": "VALKIRIA ACUATICA",
          "author_login": "valkiriaaquatica",
          "committed_at": "2025-09-27T20:13:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "446e1402fc57f3804556ca889146ea729daf8026",
          "body": "…nnel configuration (#216)\n\n* feat: use FQDN service names instead of cluster IPs for Cloudflare tunnel configuration\n\nThis change improves stability by using service FQDN names (e.g., my-service.default.svc.cluster.local)\ninstead of cluster IPs when configuring Cloudflare tunnel exposures. This pre\n[…]\n: Zhiqiang ZHOU <STRRL@users.noreply.github.com>\n\n---------\n\nCo-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>\nCo-authored-by: Zhiqiang ZHOU <STRRL@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat: use FQDN service names instead of cluster IPs for Cloudflare tu…",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2025-09-27T20:02:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "033e57d0c5a1b95811508d7906d9bfb13e3d3904",
          "body": "* Update Claude PR Assistant workflow\n\n* Update Claude Code Review workflow\n\n* chore: only trigger when review_requested\n\nSigned-off-by: Zhiqiang ZHOU <im@strrl.dev>\n\n---------\n\nSigned-off-by: Zhiqiang ZHOU <im@strrl.dev>",
          "is_bot": false,
          "headline": "Add Claude Code GitHub Workflow (#212)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2025-07-09T00:13:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4f880c88666a0c81052f1419c4ca4e06ca223705",
          "body": "…4 (#190)\n\nBumps [sigs.k8s.io/controller-runtime](https://github.com/kubernetes-sigs/controller-runtime) from 0.20.1 to 0.20.4.\n- [Release notes](https://github.com/kubernetes-sigs/controller-runtime/releases)\n- [Changelog](https://github.com/kubernetes-sigs/controller-runtime/blob/main/RELEASE.md)\n\n[…]\nirect:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump sigs.k8s.io/controller-runtime from 0.20.1 to 0.20.…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-06-24T07:55:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "013a234b892acab0a1acf036d470e46c44544ab0",
          "body": "Bumps [github.com/spf13/cobra](https://github.com/spf13/cobra) from 1.8.1 to 1.9.1.\n- [Release notes](https://github.com/spf13/cobra/releases)\n- [Commits](https://github.com/spf13/cobra/compare/v1.8.1...v1.9.1)\n\n---\nupdated-dependencies:\n- dependency-name: github.com/spf13/cobra\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump github.com/spf13/cobra from 1.8.1 to 1.9.1 (#183)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-06-24T07:55:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7fd0325e7601e1b5bb98cd8cdea46d0d61bb68e2",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump deps (#207)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2025-06-24T07:21:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7184a1e9146d8e07a43e973da22fb4672463f4e1",
          "body": null,
          "is_bot": false,
          "headline": "chore: udpate CLAUDE md",
          "author_name": "STRRL",
          "author_login": "STRRL",
          "committed_at": "2025-06-23T23:43:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e8d32769e5cd084d86333b6f3659a06bc3b31864",
          "body": "* feat: apply extra args\n\n* chore: adjust the position of extra args\n\n* chore: bug bot nice catch!",
          "is_bot": false,
          "headline": "feat: apply extra args (#206)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2025-06-22T07:42:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9d1e4374a1497e417a8541362bcfa15667a53e86",
          "body": "* Claude PR Assistant workflow\n\n* Claude Code Review workflow",
          "is_bot": false,
          "headline": "Add Claude Code GitHub Workflow (#204)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2025-06-22T05:50:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3aef70317c18099122afd67a8e5c016780878769",
          "body": "This is for the convenience of connecting the ingress to existing\r\nservices which expect specific Host header or SNI to work.\r\n\r\nCo-authored-by: STRRL <im@strrl.dev>",
          "is_bot": false,
          "headline": "Allow setting http-host-header and origin-server-name annotations (#177)",
          "author_name": "jingyuanliang",
          "author_login": "jingyuanliang",
          "committed_at": "2025-02-10T03:01:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "99b7ec0daee53302426c9a0bc817bbba0001f37d",
          "body": "Signed-off-by: STRRL <im@strrl.dev>",
          "is_bot": false,
          "headline": "feat: bump kubernetes deps",
          "author_name": "STRRL",
          "author_login": "STRRL",
          "committed_at": "2025-02-10T02:18:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8547566bb7af11d6d64c49403801c05849cad9fd",
          "body": "Signed-off-by: STRRL <im@strrl.dev>",
          "is_bot": false,
          "headline": "chore: bump deps",
          "author_name": "STRRL",
          "author_login": "STRRL",
          "committed_at": "2025-02-10T02:16:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7cba464d7cdc1ed4e2e3eb23facba4e072331caa",
          "body": "Having this is better than nothing.",
          "is_bot": false,
          "headline": "Allow ingress to ExternalName services (#174)",
          "author_name": "jingyuanliang",
          "author_login": "jingyuanliang",
          "committed_at": "2025-02-10T02:07:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "686fa3e9c6664b0080ddd05e308c0388921f06e7",
          "body": "Sort the rules by hostnames first for prettiness, then by path length\r\nin descending order to ensure \"precedence will be given first to the\r\nlongest matching path\".",
          "is_bot": false,
          "headline": "Sort ingress rules created for Cloudflare tunnel (#172)",
          "author_name": "jingyuanliang",
          "author_login": "jingyuanliang",
          "committed_at": "2025-02-10T02:05:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a109a59d1b3fab4481e45fa8904c22e7ea47b5cb",
          "body": null,
          "is_bot": false,
          "headline": "ci: configure arm64 runner (#146)",
          "author_name": "Zhiqiang ZHOU",
          "author_login": "STRRL",
          "committed_at": "2024-11-06T18:51:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "52898c20dd0cff5a6fcbffd0b933f9c66c5c20e7",
          "body": "Signed-off-by: STRRL <im@strrl.dev>",
          "is_bot": false,
          "headline": "ci: adopt new container registry cr.strrl.dev",
          "author_name": "STRRL",
          "author_login": "STRRL",
          "committed_at": "2024-11-06T17:23:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "032f660ac87c018995b5d0405f612550cc218b67",
          "body": "Signed-off-by: STRRL <im@strrl.dev>",
          "is_bot": false,
          "headline": "chore: bump k8s related dependencies",
          "author_name": "STRRL",
          "author_login": "STRRL",
          "committed_at": "2024-11-06T17:21:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "55168402ae1b1b05b902ad7a74635587cfd965fd",
          "body": "… 0.108.0 (#144)\n\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump github.com/cloudflare/cloudflare-go from 0.107.0 to…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2024-11-06T17:19:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5b58efb1feff795a539871c6768080342371398c",
          "body": "…1 (#140)\n\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump sigs.k8s.io/controller-runtime from 0.19.0 to 0.19.…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2024-11-06T17:19:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aa08f8b7fd5b87a54d721193e05ab9f5aa99101b",
          "body": "Signed-off-by: STRRL <im@strrl.dev>",
          "is_bot": false,
          "headline": "chore: update cloudflared protocol to auto",
          "author_name": "STRRL",
          "author_login": "STRRL",
          "committed_at": "2024-10-23T04:59:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "92546fe51ebaea0aca2fde13d69c543d6aefab4f",
          "body": null,
          "is_bot": false,
          "headline": "Add ServiceMonitor for cloudflared (#129)",
          "author_name": "Ihor Urazov",
          "author_login": "z0rc",
          "committed_at": "2024-10-23T04:49:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2d1b5f2ad3ce72f5a95d2fc98223d1e4a0486f2b",
          "body": "…_PULL_POLICY\n\nSigned-off-by: STRRL <im@strrl.dev>",
          "is_bot": false,
          "headline": "chore: resolve default values CLOUDFLARED_IMAGE and CLOUDFLARED_IMAGE…",
          "author_name": "STRRL",
          "author_login": "STRRL",
          "committed_at": "2024-10-23T04:36:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d147cd0653d0716b0c28cbad84cc5f0e3dedcd81",
          "body": "Signed-off-by: STRRL <im@strrl.dev>",
          "is_bot": false,
          "headline": "chore: resolve default CLOUDFLARED_REPLICA_COUNT values with skaffold",
          "author_name": "STRRL",
          "author_login": "STRRL",
          "committed_at": "2024-10-23T04:34:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "21274972b444a26f59b030cbca03ecae01f2a3b8",
          "body": "…ngress-controller",
          "is_bot": false,
          "headline": "Merge branch 'master' of https://github.com/STRRL/cloudflare-tunnel-i…",
          "author_name": "STRRL",
          "author_login": "STRRL",
          "committed_at": "2024-10-17T23:24:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "587c0139fb2c27705497b90df8dc32e2af742c76",
          "body": "Signed-off-by: STRRL <im@strrl.dev>",
          "is_bot": false,
          "headline": "feat: update floss funding manifests",
          "author_name": "STRRL",
          "author_login": "STRRL",
          "committed_at": "2024-10-17T23:13:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "103b6dd9ad0912dd7bc050c15aae1fcae6de7244",
          "body": "… 0.107.0 (#133)\n\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump github.com/cloudflare/cloudflare-go from 0.106.0 to…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2024-10-17T03:52:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "649d5afeac6950d262d5f56b6024e037db149ca4",
          "body": "Co-authored-by: omega.zeng <omega.zeng@hstong.com>",
          "is_bot": false,
          "headline": "add: cloudflared protocol option (#135)",
          "author_name": "Omega Zeng",
          "author_login": "omegazeng",
          "committed_at": "2024-10-17T03:36:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "be107bdb9bce7bc9e05c0792d9877672ce81e4a6",
          "body": "Signed-off-by: STRRL <im@strrl.dev>",
          "is_bot": false,
          "headline": "fix: use the correct label for controlled cloudflared connector",
          "author_name": "STRRL",
          "author_login": "STRRL",
          "committed_at": "2024-10-17T03:18:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 18,
      "commits_last_year": 74,
      "latest_release_at": "2026-07-20T05:25:49Z",
      "latest_release_tag": "v0.0.24",
      "releases_from_tags": false,
      "days_since_last_push": 1,
      "active_weeks_last_year": 12,
      "days_since_latest_release": 8,
      "mean_days_between_releases": 74.7
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 42,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "github.com/STRRL/cloudflare-tunnel-ingress-controller",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "go",
          "matches_repo": true,
          "registry_url": "https://pkg.go.dev/github.com/STRRL/cloudflare-tunnel-ingress-controller",
          "is_deprecated": false,
          "latest_version": "v0.0.24",
          "repository_url": "https://github.com/STRRL/cloudflare-tunnel-ingress-controller",
          "versions_count": 23,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-20T05:20:06Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        }
      ]
    },
    "popularity": {
      "forks": 88,
      "stars": 1172,
      "watchers": 8,
      "fork_history": {
        "days": [
          {
            "date": "2023-06-10",
            "count": 1
          },
          {
            "date": "2023-06-11",
            "count": 5
          },
          {
            "date": "2023-06-12",
            "count": 2
          },
          {
            "date": "2023-07-12",
            "count": 1
          },
          {
            "date": "2023-08-02",
            "count": 1
          },
          {
            "date": "2023-09-30",
            "count": 1
          },
          {
            "date": "2023-10-05",
            "count": 1
          },
          {
            "date": "2023-10-14",
            "count": 1
          },
          {
            "date": "2023-10-21",
            "count": 1
          },
          {
            "date": "2023-11-14",
            "count": 1
          },
          {
            "date": "2023-12-04",
            "count": 1
          },
          {
            "date": "2023-12-17",
            "count": 1
          },
          {
            "date": "2024-01-14",
            "count": 1
          },
          {
            "date": "2024-01-25",
            "count": 1
          },
          {
            "date": "2024-01-31",
            "count": 1
          },
          {
            "date": "2024-02-07",
            "count": 1
          },
          {
            "date": "2024-02-14",
            "count": 1
          },
          {
            "date": "2024-03-20",
            "count": 1
          },
          {
            "date": "2024-05-15",
            "count": 1
          },
          {
            "date": "2024-05-23",
            "count": 2
          },
          {
            "date": "2024-06-13",
            "count": 1
          },
          {
            "date": "2024-07-09",
            "count": 1
          },
          {
            "date": "2024-07-25",
            "count": 1
          },
          {
            "date": "2024-08-06",
            "count": 1
          },
          {
            "date": "2024-10-12",
            "count": 1
          },
          {
            "date": "2024-10-16",
            "count": 1
          },
          {
            "date": "2024-12-29",
            "count": 1
          },
          {
            "date": "2025-01-01",
            "count": 1
          },
          {
            "date": "2025-01-05",
            "count": 1
          },
          {
            "date": "2025-01-15",
            "count": 1
          },
          {
            "date": "2025-01-19",
            "count": 1
          },
          {
            "date": "2025-01-26",
            "count": 1
          },
          {
            "date": "2025-01-30",
            "count": 1
          },
          {
            "date": "2025-02-09",
            "count": 1
          },
          {
            "date": "2025-02-20",
            "count": 1
          },
          {
            "date": "2025-02-23",
            "count": 1
          },
          {
            "date": "2025-03-14",
            "count": 1
          },
          {
            "date": "2025-03-24",
            "count": 1
          },
          {
            "date": "2025-04-09",
            "count": 1
          },
          {
            "date": "2025-04-10",
            "count": 2
          },
          {
            "date": "2025-04-29",
            "count": 1
          },
          {
            "date": "2025-05-31",
            "count": 1
          },
          {
            "date": "2025-06-05",
            "count": 1
          },
          {
            "date": "2025-06-08",
            "count": 1
          },
          {
            "date": "2025-06-20",
            "count": 1
          },
          {
            "date": "2025-07-09",
            "count": 1
          },
          {
            "date": "2025-08-02",
            "count": 1
          },
          {
            "date": "2025-08-07",
            "count": 1
          },
          {
            "date": "2025-08-18",
            "count": 1
          },
          {
            "date": "2025-08-20",
            "count": 1
          },
          {
            "date": "2025-09-02",
            "count": 2
          },
          {
            "date": "2025-10-15",
            "count": 1
          },
          {
            "date": "2025-10-19",
            "count": 1
          },
          {
            "date": "2025-10-21",
            "count": 1
          },
          {
            "date": "2025-10-22",
            "count": 1
          },
          {
            "date": "2025-12-06",
            "count": 1
          },
          {
            "date": "2025-12-23",
            "count": 1
          },
          {
            "date": "2026-01-02",
            "count": 1
          },
          {
            "date": "2026-01-21",
            "count": 1
          },
          {
            "date": "2026-01-24",
            "count": 1
          },
          {
            "date": "2026-02-08",
            "count": 1
          },
          {
            "date": "2026-02-10",
            "count": 1
          },
          {
            "date": "2026-02-24",
            "count": 1
          },
          {
            "date": "2026-03-05",
            "count": 1
          },
          {
            "date": "2026-03-06",
            "count": 1
          },
          {
            "date": "2026-03-11",
            "count": 2
          },
          {
            "date": "2026-03-17",
            "count": 1
          },
          {
            "date": "2026-04-15",
            "count": 1
          },
          {
            "date": "2026-04-18",
            "count": 1
          },
          {
            "date": "2026-05-26",
            "count": 1
          },
          {
            "date": "2026-06-09",
            "count": 1
          },
          {
            "date": "2026-06-15",
            "count": 1
          },
          {
            "date": "2026-06-21",
            "count": 1
          },
          {
            "date": "2026-06-22",
            "count": 1
          },
          {
            "date": "2026-06-25",
            "count": 1
          },
          {
            "date": "2026-07-12",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 85,
        "total_forks": 88
      },
      "star_history": null,
      "open_issues_and_prs": 22
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": false,
      "bootstrap_files": [
        "Makefile"
      ],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "docs/tsconfig.json"
      ],
      "toolchain_manifests": [
        "go.mod"
      ],
      "largest_source_bytes": 24787,
      "source_files_sampled": 42,
      "oversized_source_files": 0,
      "agent_instruction_files": [
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 4322
    },
    "dependencies": {
      "manifests": [
        "docs/package.json",
        "go.mod"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "fast-xml-parser",
            "direct": false,
            "version": "5.3.0",
            "severity": "critical",
            "ecosystem": "npm",
            "cvss_score": 9.3,
            "advisory_ids": [
              "GHSA-37qj-frw5-hhjh",
              "GHSA-8gc5-j5rx-235r",
              "GHSA-fj3w-jwp8-x2g3",
              "GHSA-gh4j-gqv2-49f6",
              "GHSA-jmr7-xgp7-cmfj",
              "GHSA-jp2q-39xq-3w4g",
              "GHSA-m7jm-9gc2-mpf2"
            ],
            "fixed_version": "5.7.0",
            "advisory_count": 7,
            "oldest_advisory_days": 178
          },
          {
            "name": "flatted",
            "direct": false,
            "version": "3.3.3",
            "severity": "critical",
            "ecosystem": "npm",
            "cvss_score": 9.8,
            "advisory_ids": [
              "GHSA-25h7-pfq9-p65f",
              "GHSA-rf6f-7fwh-wjgh"
            ],
            "fixed_version": "3.4.2",
            "advisory_count": 2,
            "oldest_advisory_days": 136
          },
          {
            "name": "rollup",
            "direct": false,
            "version": "4.52.5",
            "severity": "critical",
            "ecosystem": "npm",
            "cvss_score": 9.1,
            "advisory_ids": [
              "GHSA-mw96-cpmx-2vgc"
            ],
            "fixed_version": "4.59.0",
            "advisory_count": 1,
            "oldest_advisory_days": 152
          },
          {
            "name": "astro",
            "direct": false,
            "version": "5.15.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-2pvr-wf23-7pc7",
              "GHSA-4g3v-8h47-v7g6",
              "GHSA-7pw4-f3q4-r2p2",
              "GHSA-8hv8-536x-4wqp",
              "GHSA-f48w-9m4c-m7f5",
              "GHSA-fvmw-cj7j-j39q",
              "GHSA-g735-7g2w-hh3f",
              "GHSA-ggxq-hp9w-j794",
              "GHSA-hr2q-hp5q-x767",
              "GHSA-j687-52p2-xcff"
            ],
            "fixed_version": "7.1.0",
            "advisory_count": 15,
            "oldest_advisory_days": 256
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.12",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp",
              "GHSA-f886-m6hf-6m8v",
              "GHSA-mh99-v99m-4gvg"
            ],
            "fixed_version": "5.0.8",
            "advisory_count": 3,
            "oldest_advisory_days": 123
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "2.0.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp",
              "GHSA-f886-m6hf-6m8v",
              "GHSA-mh99-v99m-4gvg"
            ],
            "fixed_version": "5.0.8",
            "advisory_count": 3,
            "oldest_advisory_days": 123
          },
          {
            "name": "defu",
            "direct": false,
            "version": "6.1.4",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-737v-mqg7-c878"
            ],
            "fixed_version": "6.1.5",
            "advisory_count": 1,
            "oldest_advisory_days": 115
          },
          {
            "name": "devalue",
            "direct": false,
            "version": "5.4.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-33hq-fvwr-56pm",
              "GHSA-8qm3-746x-r74r",
              "GHSA-cfw5-2vxh-hr84",
              "GHSA-g2pg-6438-jwpf",
              "GHSA-mwv9-gp5h-frr4",
              "GHSA-vw5p-8cq8-m7mv"
            ],
            "fixed_version": "5.6.4",
            "advisory_count": 6,
            "oldest_advisory_days": 193
          },
          {
            "name": "h3",
            "direct": false,
            "version": "1.15.4",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 8.9,
            "advisory_ids": [
              "GHSA-22cc-p3c6-wpvm",
              "GHSA-4hxc-9384-m385",
              "GHSA-72gr-qfp7-vwhw",
              "GHSA-mp2g-9vg9-f4cg",
              "GHSA-wr4h-v87w-p3r7"
            ],
            "fixed_version": "2.0.1-rc.17",
            "advisory_count": 5,
            "oldest_advisory_days": 193
          },
          {
            "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": 256
          },
          {
            "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": 159
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "9.0.5",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-23c5-xmqv-rm74",
              "GHSA-3ppc-4f35-3m26",
              "GHSA-7r86-cg39-jmmj"
            ],
            "fixed_version": "10.2.3",
            "advisory_count": 3,
            "oldest_advisory_days": 159
          },
          {
            "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": 124
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "4.0.3",
            "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": 124
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.5.6",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-6g55-p6wh-862q",
              "GHSA-qx2v-qp2m-jg93",
              "GHSA-r28c-9q8g-f849"
            ],
            "fixed_version": "8.5.18",
            "advisory_count": 3,
            "oldest_advisory_days": 94
          },
          {
            "name": "sharp",
            "direct": false,
            "version": "0.34.4",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.3,
            "advisory_ids": [
              "GHSA-f88m-g3jw-g9cj"
            ],
            "fixed_version": "0.35.0",
            "advisory_count": 1,
            "oldest_advisory_days": 6
          },
          {
            "name": "vite",
            "direct": false,
            "version": "6.4.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-4w7w-66w2-5vf9",
              "GHSA-fx2h-pf6j-xcff",
              "GHSA-p9ff-h696-f583",
              "GHSA-v6wh-96g9-6wx3"
            ],
            "fixed_version": "8.0.16",
            "advisory_count": 4,
            "oldest_advisory_days": 112
          },
          {
            "name": "@astrojs/rss",
            "direct": false,
            "version": "4.0.13",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 4.3,
            "advisory_ids": [
              "GHSA-8j5q-mfj2-5q9q"
            ],
            "fixed_version": "4.0.19",
            "advisory_count": 1,
            "oldest_advisory_days": 7
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "6.12.6",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-2g4f-4pwh-qvx6"
            ],
            "fixed_version": "8.18.0",
            "advisory_count": 1,
            "oldest_advisory_days": 166
          },
          {
            "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": 194
          },
          {
            "name": "github.com/go-viper/mapstructure/v2",
            "direct": false,
            "version": "v2.3.0",
            "severity": "moderate",
            "ecosystem": "go",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-2464-8j7c-4cjm",
              "GO-2025-3900"
            ],
            "fixed_version": "2.4.0",
            "advisory_count": 2,
            "oldest_advisory_days": 341
          },
          {
            "name": "mdast-util-to-hast",
            "direct": false,
            "version": "13.2.0",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-4fh9-h7wg-q85m"
            ],
            "fixed_version": "13.2.1",
            "advisory_count": 1,
            "oldest_advisory_days": 238
          },
          {
            "name": "smol-toml",
            "direct": false,
            "version": "1.4.2",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-v3rj-xjv7-4jmq"
            ],
            "fixed_version": "1.6.1",
            "advisory_count": 1,
            "oldest_advisory_days": 124
          },
          {
            "name": "dompurify",
            "direct": false,
            "version": "3.4.11",
            "severity": "low",
            "ecosystem": "npm",
            "cvss_score": 0,
            "advisory_ids": [
              "GHSA-c2j3-45gr-mqc4"
            ],
            "fixed_version": "3.4.12",
            "advisory_count": 1,
            "oldest_advisory_days": 6
          },
          {
            "name": "golang.org/x/text",
            "direct": false,
            "version": "v0.38.0",
            "severity": "unknown",
            "ecosystem": "go",
            "cvss_score": null,
            "advisory_ids": [
              "GO-2026-5970"
            ],
            "fixed_version": "0.39.0",
            "advisory_count": 1,
            "oldest_advisory_days": 13
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "low": 1,
          "high": 14,
          "unknown": 1,
          "critical": 3,
          "moderate": 6
        },
        "advisory_count": 73,
        "affected_count": 25,
        "assessed_count": 781,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "go",
        "npm"
      ],
      "dependencies": [
        {
          "name": "github.com/chromedp/chromedp",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.16.0"
        },
        {
          "name": "github.com/cloudflare/cloudflare-go",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.117.0"
        },
        {
          "name": "github.com/cucumber/godog",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.15.1"
        },
        {
          "name": "github.com/go-logr/logr",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.4.3"
        },
        {
          "name": "github.com/go-logr/stdr",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.2.2"
        },
        {
          "name": "github.com/joho/godotenv",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.5.1"
        },
        {
          "name": "github.com/onsi/ginkgo/v2",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v2.32.0"
        },
        {
          "name": "github.com/onsi/gomega",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.42.1"
        },
        {
          "name": "github.com/pkg/errors",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.9.1"
        },
        {
          "name": "github.com/spf13/cobra",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.10.2"
        },
        {
          "name": "github.com/spf13/viper",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.20.1"
        },
        {
          "name": "github.com/stretchr/testify",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.11.1"
        },
        {
          "name": "k8s.io/api",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.36.2"
        },
        {
          "name": "k8s.io/apimachinery",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.36.2"
        },
        {
          "name": "k8s.io/client-go",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.36.2"
        },
        {
          "name": "k8s.io/utils",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.0.0-20260210185600-b8788abfbbc2"
        },
        {
          "name": "sigs.k8s.io/controller-runtime",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.24.1"
        },
        {
          "name": "sigs.k8s.io/yaml",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.6.0"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "github.com/chromedp/chromedp",
            "direct": true,
            "version": "v0.16.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/cloudflare/cloudflare-go",
            "direct": true,
            "version": "v0.117.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/cucumber/godog",
            "direct": true,
            "version": "v0.15.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/go-logr/logr",
            "direct": true,
            "version": "v1.4.3",
            "ecosystem": "go"
          },
          {
            "name": "github.com/go-logr/stdr",
            "direct": true,
            "version": "v1.2.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/joho/godotenv",
            "direct": true,
            "version": "v1.5.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/onsi/ginkgo/v2",
            "direct": true,
            "version": "v2.32.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/onsi/gomega",
            "direct": true,
            "version": "v1.42.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pkg/errors",
            "direct": true,
            "version": "v0.9.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/spf13/cobra",
            "direct": true,
            "version": "v1.10.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/spf13/viper",
            "direct": true,
            "version": "v1.20.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/stretchr/testify",
            "direct": true,
            "version": "v1.11.1",
            "ecosystem": "go"
          },
          {
            "name": "k8s.io/api",
            "direct": true,
            "version": "v0.36.2",
            "ecosystem": "go"
          },
          {
            "name": "k8s.io/apimachinery",
            "direct": true,
            "version": "v0.36.2",
            "ecosystem": "go"
          },
          {
            "name": "k8s.io/client-go",
            "direct": true,
            "version": "v0.36.2",
            "ecosystem": "go"
          },
          {
            "name": "k8s.io/utils",
            "direct": true,
            "version": "v0.0.0-20260210185600-b8788abfbbc2",
            "ecosystem": "go"
          },
          {
            "name": "sigs.k8s.io/controller-runtime",
            "direct": true,
            "version": "v0.24.1",
            "ecosystem": "go"
          },
          {
            "name": "sigs.k8s.io/yaml",
            "direct": true,
            "version": "v1.6.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/beorn7/perks",
            "direct": false,
            "version": "v1.0.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/cespare/xxhash/v2",
            "direct": false,
            "version": "v2.3.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/chromedp/cdproto",
            "direct": false,
            "version": "v0.0.0-20260714215040-dc233986426f",
            "ecosystem": "go"
          },
          {
            "name": "github.com/chromedp/sysutil",
            "direct": false,
            "version": "v1.1.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/cucumber/gherkin/go/v26",
            "direct": false,
            "version": "v26.2.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/cucumber/messages/go/v21",
            "direct": false,
            "version": "v21.0.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/davecgh/go-spew",
            "direct": false,
            "version": "v1.1.2-0.20180830191138-d8f796af33cc",
            "ecosystem": "go"
          },
          {
            "name": "github.com/emicklei/go-restful/v3",
            "direct": false,
            "version": "v3.13.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/evanphx/json-patch/v5",
            "direct": false,
            "version": "v5.9.11",
            "ecosystem": "go"
          },
          {
            "name": "github.com/fsnotify/fsnotify",
            "direct": false,
            "version": "v1.9.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/fxamacker/cbor/v2",
            "direct": false,
            "version": "v2.9.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/go-json-experiment/json",
            "direct": false,
            "version": "v0.0.0-20260623181947-01eb4420fa68",
            "ecosystem": "go"
          },
          {
            "name": "github.com/go-openapi/jsonpointer",
            "direct": false,
            "version": "v0.21.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/go-openapi/jsonreference",
            "direct": false,
            "version": "v0.20.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/go-openapi/swag",
            "direct": false,
            "version": "v0.23.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/go-task/slim-sprig/v3",
            "direct": false,
            "version": "v3.0.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/go-viper/mapstructure/v2",
            "direct": false,
            "version": "v2.3.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/gobwas/httphead",
            "direct": false,
            "version": "v0.1.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/gobwas/pool",
            "direct": false,
            "version": "v0.2.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/gobwas/ws",
            "direct": false,
            "version": "v1.4.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/goccy/go-json",
            "direct": false,
            "version": "v0.10.5",
            "ecosystem": "go"
          },
          {
            "name": "github.com/gofrs/uuid",
            "direct": false,
            "version": "v4.3.1+incompatible",
            "ecosystem": "go"
          },
          {
            "name": "github.com/google/gnostic-models",
            "direct": false,
            "version": "v0.7.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/google/go-cmp",
            "direct": false,
            "version": "v0.7.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/google/go-querystring",
            "direct": false,
            "version": "v1.1.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/google/pprof",
            "direct": false,
            "version": "v0.0.0-20260402051712-545e8a4df936",
            "ecosystem": "go"
          },
          {
            "name": "github.com/google/uuid",
            "direct": false,
            "version": "v1.6.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/hashicorp/go-immutable-radix",
            "direct": false,
            "version": "v1.3.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/hashicorp/go-memdb",
            "direct": false,
            "version": "v1.3.4",
            "ecosystem": "go"
          },
          {
            "name": "github.com/hashicorp/golang-lru",
            "direct": false,
            "version": "v0.5.4",
            "ecosystem": "go"
          },
          {
            "name": "github.com/inconshreveable/mousetrap",
            "direct": false,
            "version": "v1.1.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/josharian/intern",
            "direct": false,
            "version": "v1.0.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/json-iterator/go",
            "direct": false,
            "version": "v1.1.12",
            "ecosystem": "go"
          },
          {
            "name": "github.com/mailru/easyjson",
            "direct": false,
            "version": "v0.7.7",
            "ecosystem": "go"
          },
          {
            "name": "github.com/masterminds/semver/v3",
            "direct": false,
            "version": "v3.4.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/modern-go/concurrent",
            "direct": false,
            "version": "v0.0.0-20180306012644-bacd9c7ef1dd",
            "ecosystem": "go"
          },
          {
            "name": "github.com/modern-go/reflect2",
            "direct": false,
            "version": "v1.0.3-0.20250322232337-35a7c28c31ee",
            "ecosystem": "go"
          },
          {
            "name": "github.com/munnerz/goautoneg",
            "direct": false,
            "version": "v0.0.0-20191010083416-a7dc8b61c822",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pelletier/go-toml/v2",
            "direct": false,
            "version": "v2.2.3",
            "ecosystem": "go"
          },
          {
            "name": "github.com/pmezard/go-difflib",
            "direct": false,
            "version": "v1.0.1-0.20181226105442-5d4384ee4fb2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/prometheus/client_golang",
            "direct": false,
            "version": "v1.23.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/prometheus/client_model",
            "direct": false,
            "version": "v0.6.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/prometheus/common",
            "direct": false,
            "version": "v0.67.5",
            "ecosystem": "go"
          },
          {
            "name": "github.com/prometheus/procfs",
            "direct": false,
            "version": "v0.19.2",
            "ecosystem": "go"
          },
          {
            "name": "github.com/sagikazarmark/locafero",
            "direct": false,
            "version": "v0.7.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/sourcegraph/conc",
            "direct": false,
            "version": "v0.3.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/spf13/afero",
            "direct": false,
            "version": "v1.12.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/spf13/cast",
            "direct": false,
            "version": "v1.7.1",
            "ecosystem": "go"
          },
          {
            "name": "github.com/spf13/pflag",
            "direct": false,
            "version": "v1.0.9",
            "ecosystem": "go"
          },
          {
            "name": "github.com/subosito/gotenv",
            "direct": false,
            "version": "v1.6.0",
            "ecosystem": "go"
          },
          {
            "name": "github.com/x448/float16",
            "direct": false,
            "version": "v0.8.4",
            "ecosystem": "go"
          },
          {
            "name": "go.uber.org/multierr",
            "direct": false,
            "version": "v1.11.0",
            "ecosystem": "go"
          },
          {
            "name": "go.yaml.in/yaml/v2",
            "direct": false,
            "version": "v2.4.3",
            "ecosystem": "go"
          },
          {
            "name": "go.yaml.in/yaml/v3",
            "direct": false,
            "version": "v3.0.4",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/mod",
            "direct": false,
            "version": "v0.36.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/net",
            "direct": false,
            "version": "v0.56.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/oauth2",
            "direct": false,
            "version": "v0.34.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/sync",
            "direct": false,
            "version": "v0.21.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/sys",
            "direct": false,
            "version": "v0.47.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/term",
            "direct": false,
            "version": "v0.44.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/text",
            "direct": false,
            "version": "v0.38.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/time",
            "direct": false,
            "version": "v0.14.0",
            "ecosystem": "go"
          },
          {
            "name": "golang.org/x/tools",
            "direct": false,
            "version": "v0.45.0",
            "ecosystem": "go"
          },
          {
            "name": "gomodules.xyz/jsonpatch/v2",
            "direct": false,
            "version": "v2.4.0",
            "ecosystem": "go"
          },
          {
            "name": "google.golang.org/protobuf",
            "direct": false,
            "version": "v1.36.12-0.20260120151049-f2248ac996af",
            "ecosystem": "go"
          },
          {
            "name": "gopkg.in/evanphx/json-patch.v4",
            "direct": false,
            "version": "v4.13.0",
            "ecosystem": "go"
          },
          {
            "name": "gopkg.in/inf.v0",
            "direct": false,
            "version": "v0.9.1",
            "ecosystem": "go"
          },
          {
            "name": "gopkg.in/yaml.v3",
            "direct": false,
            "version": "v3.0.1",
            "ecosystem": "go"
          },
          {
            "name": "k8s.io/apiextensions-apiserver",
            "direct": false,
            "version": "v0.36.0",
            "ecosystem": "go"
          },
          {
            "name": "k8s.io/klog/v2",
            "direct": false,
            "version": "v2.140.0",
            "ecosystem": "go"
          },
          {
            "name": "k8s.io/kube-openapi",
            "direct": false,
            "version": "v0.0.0-20260317180543-43fb72c5454a",
            "ecosystem": "go"
          },
          {
            "name": "sigs.k8s.io/json",
            "direct": false,
            "version": "v0.0.0-20250730193827-2d320260d730",
            "ecosystem": "go"
          },
          {
            "name": "sigs.k8s.io/randfill",
            "direct": false,
            "version": "v1.0.0",
            "ecosystem": "go"
          },
          {
            "name": "sigs.k8s.io/structured-merge-diff/v6",
            "direct": false,
            "version": "v6.3.2",
            "ecosystem": "go"
          },
          {
            "name": "@antfu/install-pkg",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/compiler",
            "direct": false,
            "version": "2.13.0",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/internal-helpers",
            "direct": false,
            "version": "0.7.4",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/markdown-remark",
            "direct": false,
            "version": "6.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/mdx",
            "direct": false,
            "version": "4.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/prism",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/rss",
            "direct": false,
            "version": "4.0.13",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/sitemap",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/starlight",
            "direct": false,
            "version": "0.36.1",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/telemetry",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.28.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "7.28.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/runtime",
            "direct": false,
            "version": "7.28.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "7.28.5",
            "ecosystem": "npm"
          },
          {
            "name": "@braintree/sanitize-url",
            "direct": false,
            "version": "7.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@capsizecss/unpack",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@chevrotain/types",
            "direct": false,
            "version": "11.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@ctrl/tinycolor",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/runtime",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/aix-ppc64",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm64",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-x64",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-arm64",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-x64",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-arm64",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-x64",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm64",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ia32",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-loong64",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-mips64el",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ppc64",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-riscv64",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-s390x",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-x64",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-arm64",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-x64",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-arm64",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-x64",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openharmony-arm64",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/sunos-x64",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-arm64",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-ia32",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-x64",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/eslint-utils",
            "direct": false,
            "version": "4.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/regexpp",
            "direct": false,
            "version": "4.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/config-array",
            "direct": false,
            "version": "0.21.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/config-helpers",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/core",
            "direct": false,
            "version": "0.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/eslintrc",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/js",
            "direct": false,
            "version": "9.38.0",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/object-schema",
            "direct": false,
            "version": "2.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/plugin-kit",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@expressive-code/core",
            "direct": false,
            "version": "0.41.3",
            "ecosystem": "npm"
          },
          {
            "name": "@expressive-code/plugin-frames",
            "direct": false,
            "version": "0.41.3",
            "ecosystem": "npm"
          },
          {
            "name": "@expressive-code/plugin-shiki",
            "direct": false,
            "version": "0.41.3",
            "ecosystem": "npm"
          },
          {
            "name": "@expressive-code/plugin-text-markers",
            "direct": false,
            "version": "0.41.3",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/core",
            "direct": false,
            "version": "0.19.1",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/node",
            "direct": false,
            "version": "0.16.7",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/module-importer",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/retry",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "@iconify/types",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@iconify/utils",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/colour",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-darwin-arm64",
            "direct": false,
            "version": "0.34.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-darwin-x64",
            "direct": false,
            "version": "0.34.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-darwin-arm64",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-darwin-x64",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-arm",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-arm64",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-ppc64",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-s390x",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-x64",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linuxmusl-arm64",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linuxmusl-x64",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-arm",
            "direct": false,
            "version": "0.34.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-arm64",
            "direct": false,
            "version": "0.34.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-ppc64",
            "direct": false,
            "version": "0.34.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-s390x",
            "direct": false,
            "version": "0.34.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-x64",
            "direct": false,
            "version": "0.34.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linuxmusl-arm64",
            "direct": false,
            "version": "0.34.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linuxmusl-x64",
            "direct": false,
            "version": "0.34.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-wasm32",
            "direct": false,
            "version": "0.34.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-win32-arm64",
            "direct": false,
            "version": "0.34.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-win32-ia32",
            "direct": false,
            "version": "0.34.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-win32-x64",
            "direct": false,
            "version": "0.34.4",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "npm"
          },
          {
            "name": "@mdx-js/mdx",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@mermaid-js/layout-elk",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@mermaid-js/parser",
            "direct": false,
            "version": "1.2.0",
            "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": "@oslojs/encoding",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@pagefind/darwin-arm64",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@pagefind/darwin-x64",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@pagefind/default-ui",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@pagefind/freebsd-x64",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@pagefind/linux-arm64",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@pagefind/linux-x64",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@pagefind/windows-x64",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@pkgr/core",
            "direct": false,
            "version": "0.2.9",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/pluginutils",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-android-arm-eabi",
            "direct": false,
            "version": "4.52.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-android-arm64",
            "direct": false,
            "version": "4.52.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-darwin-arm64",
            "direct": false,
            "version": "4.52.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-darwin-x64",
            "direct": false,
            "version": "4.52.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-freebsd-arm64",
            "direct": false,
            "version": "4.52.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-freebsd-x64",
            "direct": false,
            "version": "4.52.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm-gnueabihf",
            "direct": false,
            "version": "4.52.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm-musleabihf",
            "direct": false,
            "version": "4.52.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm64-gnu",
            "direct": false,
            "version": "4.52.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm64-musl",
            "direct": false,
            "version": "4.52.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-loong64-gnu",
            "direct": false,
            "version": "4.52.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-ppc64-gnu",
            "direct": false,
            "version": "4.52.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-riscv64-gnu",
            "direct": false,
            "version": "4.52.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-riscv64-musl",
            "direct": false,
            "version": "4.52.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-s390x-gnu",
            "direct": false,
            "version": "4.52.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-x64-gnu",
            "direct": false,
            "version": "4.52.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-x64-musl",
            "direct": false,
            "version": "4.52.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-openharmony-arm64",
            "direct": false,
            "version": "4.52.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-arm64-msvc",
            "direct": false,
            "version": "4.52.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-ia32-msvc",
            "direct": false,
            "version": "4.52.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-x64-gnu",
            "direct": false,
            "version": "4.52.5",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-x64-msvc",
            "direct": false,
            "version": "4.52.5",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/core",
            "direct": false,
            "version": "3.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/engine-javascript",
            "direct": false,
            "version": "3.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/engine-oniguruma",
            "direct": false,
            "version": "3.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/langs",
            "direct": false,
            "version": "3.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/themes",
            "direct": false,
            "version": "3.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/types",
            "direct": false,
            "version": "3.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/vscode-textmate",
            "direct": false,
            "version": "10.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@swc/helpers",
            "direct": false,
            "version": "0.5.17",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3",
            "direct": false,
            "version": "7.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-array",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-axis",
            "direct": false,
            "version": "3.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-brush",
            "direct": false,
            "version": "3.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-chord",
            "direct": false,
            "version": "3.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-color",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-contour",
            "direct": false,
            "version": "3.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-delaunay",
            "direct": false,
            "version": "6.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-dispatch",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-drag",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-dsv",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-ease",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-fetch",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-force",
            "direct": false,
            "version": "3.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-format",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-geo",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-hierarchy",
            "direct": false,
            "version": "3.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-interpolate",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-path",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-polygon",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-quadtree",
            "direct": false,
            "version": "3.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-random",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-scale",
            "direct": false,
            "version": "4.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-scale-chromatic",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-selection",
            "direct": false,
            "version": "3.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-shape",
            "direct": false,
            "version": "3.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-time",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-time-format",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-timer",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-transition",
            "direct": false,
            "version": "3.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-zoom",
            "direct": false,
            "version": "3.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/debug",
            "direct": false,
            "version": "4.1.12",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree-jsx",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/fontkit",
            "direct": false,
            "version": "2.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/geojson",
            "direct": false,
            "version": "7946.0.16",
            "ecosystem": "npm"
          },
          {
            "name": "@types/hast",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/js-yaml",
            "direct": false,
            "version": "4.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/json-schema",
            "direct": false,
            "version": "7.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mdast",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mdx",
            "direct": false,
            "version": "2.0.13",
            "ecosystem": "npm"
          },
          {
            "name": "@types/ms",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/nlcst",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "17.0.45",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "24.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/sax",
            "direct": false,
            "version": "1.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/trusted-types",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/unist",
            "direct": false,
            "version": "2.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "@types/unist",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/eslint-plugin",
            "direct": false,
            "version": "8.46.2",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/parser",
            "direct": false,
            "version": "8.46.2",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/project-service",
            "direct": false,
            "version": "8.46.2",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/scope-manager",
            "direct": false,
            "version": "8.46.2",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/tsconfig-utils",
            "direct": false,
            "version": "8.46.2",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/type-utils",
            "direct": false,
            "version": "8.46.2",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/types",
            "direct": false,
            "version": "8.46.2",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/typescript-estree",
            "direct": false,
            "version": "8.46.2",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/utils",
            "direct": false,
            "version": "8.46.2",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/visitor-keys",
            "direct": false,
            "version": "8.46.2",
            "ecosystem": "npm"
          },
          {
            "name": "@ungap/structured-clone",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@upsetjs/venn.js",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@webgpu/types",
            "direct": false,
            "version": "0.1.21",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-jsx",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "6.12.6",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-align",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "6.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "anymatch",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "arg",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "aria-query",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "array-iterate",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "astring",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "astro",
            "direct": false,
            "version": "5.15.1",
            "ecosystem": "npm"
          },
          {
            "name": "astro-eslint-parser",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "astro-expressive-code",
            "direct": false,
            "version": "0.41.3",
            "ecosystem": "npm"
          },
          {
            "name": "astro-mermaid",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "astro-og-canvas",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "astro-remote",
            "direct": false,
            "version": "0.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "astrojs-compiler-sync",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "axobject-query",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "bail",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "base-64",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "base64-js",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "bcp-47",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "bcp-47-match",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "boolbase",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "boxen",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.12",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "brotli",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "callsites",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "canvaskit-wasm",
            "direct": false,
            "version": "0.40.0",
            "ecosystem": "npm"
          },
          {
            "name": "ccount",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "5.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities-html4",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities-legacy",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "character-reference-invalid",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "ci-info",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "cli-boxes",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "clone",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "clsx",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "collapse-white-space",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "comma-separated-tokens",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "8.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "common-ancestor-path",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "cookie",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "cookie-es",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "cose-base",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "cose-base",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "crossws",
            "direct": false,
            "version": "0.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "css-selector-parser",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "css-tree",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "cssesc",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cytoscape",
            "direct": false,
            "version": "3.34.0",
            "ecosystem": "npm"
          },
          {
            "name": "cytoscape-cose-bilkent",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "cytoscape-fcose",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3",
            "direct": false,
            "version": "7.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-array",
            "direct": false,
            "version": "2.12.1",
            "ecosystem": "npm"
          },
          {
            "name": "d3-array",
            "direct": false,
            "version": "3.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "d3-axis",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-brush",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-chord",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "d3-color",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-contour",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "d3-delaunay",
            "direct": false,
            "version": "6.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "d3-dispatch",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "d3-drag",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-dsv",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "d3-ease",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "d3-fetch",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "d3-force",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-format",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "d3-geo",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "d3-hierarchy",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "d3-interpolate",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "d3-path",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "d3-path",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-polygon",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "d3-quadtree",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "d3-random",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "d3-sankey",
            "direct": false,
            "version": "0.12.3",
            "ecosystem": "npm"
          },
          {
            "name": "d3-scale",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "d3-scale-chromatic",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-selection",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-shape",
            "direct": false,
            "version": "1.3.7",
            "ecosystem": "npm"
          },
          {
            "name": "d3-shape",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-time",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-time-format",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-timer",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "d3-transition",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "d3-zoom",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "dagre-d3-es",
            "direct": false,
            "version": "7.0.14",
            "ecosystem": "npm"
          },
          {
            "name": "dayjs",
            "direct": false,
            "version": "1.11.21",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "decode-named-character-reference",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "deep-is",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "defu",
            "direct": false,
            "version": "6.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "delaunator",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "dequal",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "destr",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "detect-libc",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "deterministic-object-hash",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "devalue",
            "direct": false,
            "version": "5.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "devlop",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "dfa",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "diff",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "direction",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "dlv",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "dompurify",
            "direct": false,
            "version": "3.4.11",
            "ecosystem": "npm"
          },
          {
            "name": "dset",
            "direct": false,
            "version": "3.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "elkjs",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "10.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-module-lexer",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-toolkit",
            "direct": false,
            "version": "1.49.0",
            "ecosystem": "npm"
          },
          {
            "name": "esast-util-from-estree",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "esast-util-from-js",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.25.11",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint",
            "direct": false,
            "version": "9.38.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-compat-utils",
            "direct": false,
            "version": "0.6.5",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-config-prettier",
            "direct": false,
            "version": "10.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-plugin-astro",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-scope",
            "direct": false,
            "version": "8.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "3.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "4.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "espree",
            "direct": false,
            "version": "10.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "esquery",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "esrecurse",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estree-util-attach-comments",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "estree-util-build-jsx",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "estree-util-is-identifier-name",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "estree-util-scope",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "estree-util-to-js",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "estree-util-visit",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "estree-walker",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "estree-walker",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "esutils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "eventemitter3",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "expressive-code",
            "direct": false,
            "version": "0.41.3",
            "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.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-json-stable-stringify",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-levenshtein",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "fast-xml-parser",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "fastq",
            "direct": false,
            "version": "1.19.1",
            "ecosystem": "npm"
          },
          {
            "name": "fdir",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "file-entry-cache",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "flat-cache",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "flatted",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "flattie",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "fontace",
            "direct": false,
            "version": "0.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "fontkit",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "get-east-asian-width",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "github-slugger",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "globals",
            "direct": false,
            "version": "14.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "globals",
            "direct": false,
            "version": "16.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "graphemer",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "h3",
            "direct": false,
            "version": "1.15.4",
            "ecosystem": "npm"
          },
          {
            "name": "hachure-fill",
            "direct": false,
            "version": "0.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-embedded",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-format",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-from-html",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-from-parse5",
            "direct": false,
            "version": "8.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-has-property",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-is-body-ok-link",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-is-element",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-minify-whitespace",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-parse-selector",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-phrasing",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-raw",
            "direct": false,
            "version": "9.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-select",
            "direct": false,
            "version": "6.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-to-estree",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-to-html",
            "direct": false,
            "version": "9.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-to-jsx-runtime",
            "direct": false,
            "version": "2.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-to-parse5",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-to-string",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-to-text",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-whitespace",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hastscript",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "html-escaper",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "html-void-elements",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "html-whitespace-sensitive-tag-names",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "http-cache-semantics",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "i18next",
            "direct": false,
            "version": "23.16.8",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "7.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "import-fresh",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "import-meta-resolve",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "imurmurhash",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "inline-style-parser",
            "direct": false,
            "version": "0.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "internmap",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "internmap",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "iron-webcrypto",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-alphabetical",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-alphanumerical",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-decimal",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-docker",
            "direct": false,
            "version": "3.0.0",
            "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": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-inside-container",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-obj",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-wsl",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-buffer",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-stable-stringify-without-jsonify",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "katex",
            "direct": false,
            "version": "0.16.47",
            "ecosystem": "npm"
          },
          {
            "name": "keyv",
            "direct": false,
            "version": "4.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "khroma",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "kleur",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "klona",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "layout-base",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "layout-base",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "levn",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash-es",
            "direct": false,
            "version": "4.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.merge",
            "direct": false,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "longest-streak",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "10.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "magic-string",
            "direct": false,
            "version": "0.30.21",
            "ecosystem": "npm"
          },
          {
            "name": "magicast",
            "direct": false,
            "version": "0.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "markdown-extensions",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "markdown-table",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "marked",
            "direct": false,
            "version": "12.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "marked",
            "direct": false,
            "version": "15.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "marked",
            "direct": false,
            "version": "16.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "marked-footnote",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "marked-plaintify",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "marked-smartypants",
            "direct": false,
            "version": "1.1.10",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-definitions",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-directive",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-find-and-replace",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-from-markdown",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-autolink-literal",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-footnote",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-strikethrough",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-table",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-gfm-task-list-item",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-mdx",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-mdx-expression",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-mdx-jsx",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-mdxjs-esm",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-phrasing",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-hast",
            "direct": false,
            "version": "13.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-markdown",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-string",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdn-data",
            "direct": false,
            "version": "2.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "merge2",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "mermaid",
            "direct": false,
            "version": "11.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-core-commonmark",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-directive",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-autolink-literal",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-footnote",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-strikethrough",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-table",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-tagfilter",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-task-list-item",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-mdx-expression",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-mdx-jsx",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-mdx-md",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-mdxjs",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-mdxjs-esm",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-destination",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-label",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-mdx-expression",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-space",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-title",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-whitespace",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-character",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-chunked",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-classify-character",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-combine-extensions",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-decode-numeric-character-reference",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-decode-string",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-encode",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-events-to-acorn",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-html-tag-name",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-normalize-identifier",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-resolve-all",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-sanitize-uri",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-subtokenize",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-symbol",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-types",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "9.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "mrmime",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.11",
            "ecosystem": "npm"
          },
          {
            "name": "natural-compare",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "neotraverse",
            "direct": false,
            "version": "0.6.18",
            "ecosystem": "npm"
          },
          {
            "name": "nlcst-to-string",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-fetch-native",
            "direct": false,
            "version": "1.6.7",
            "ecosystem": "npm"
          },
          {
            "name": "node-mock-http",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-path",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "nth-check",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "ofetch",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "ohash",
            "direct": false,
            "version": "2.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "oniguruma-parser",
            "direct": false,
            "version": "0.12.1",
            "ecosystem": "npm"
          },
          {
            "name": "oniguruma-to-es",
            "direct": false,
            "version": "4.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "optionator",
            "direct": false,
            "version": "0.9.4",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-queue",
            "direct": false,
            "version": "8.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "p-timeout",
            "direct": false,
            "version": "6.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "package-manager-detector",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "pagefind",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "pako",
            "direct": false,
            "version": "0.2.9",
            "ecosystem": "npm"
          },
          {
            "name": "parent-module",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parse-entities",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "parse-latin",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-data-parser",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-key",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "points-on-curve",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "points-on-path",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-nested",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-selector-parser",
            "direct": false,
            "version": "6.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-selector-parser",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "prelude-ls",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "prettier",
            "direct": false,
            "version": "3.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "prettier-plugin-astro",
            "direct": false,
            "version": "0.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "prismjs",
            "direct": false,
            "version": "1.30.0",
            "ecosystem": "npm"
          },
          {
            "name": "prompts",
            "direct": false,
            "version": "2.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "property-information",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "property-information",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "queue-microtask",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "radix3",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "recma-build-jsx",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "recma-jsx",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "recma-parse",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "recma-stringify",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "regex",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "regex-recursion",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "regex-utilities",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "rehype",
            "direct": false,
            "version": "13.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-expressive-code",
            "direct": false,
            "version": "0.41.3",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-format",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-parse",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-raw",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-recma",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-stringify",
            "direct": false,
            "version": "10.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "remark-directive",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "remark-gfm",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "remark-mdx",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "remark-parse",
            "direct": false,
            "version": "11.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "remark-rehype",
            "direct": false,
            "version": "11.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "remark-smartypants",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "remark-stringify",
            "direct": false,
            "version": "11.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "restructure",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "retext",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "retext-latin",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "retext-smartypants",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "retext-stringify",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "reusify",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "robust-predicates",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "rollup",
            "direct": false,
            "version": "4.52.5",
            "ecosystem": "npm"
          },
          {
            "name": "roughjs",
            "direct": false,
            "version": "4.6.6",
            "ecosystem": "npm"
          },
          {
            "name": "run-parallel",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "rw",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "s.color",
            "direct": false,
            "version": "0.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "safer-buffer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "sass-formatter",
            "direct": false,
            "version": "0.7.9",
            "ecosystem": "npm"
          },
          {
            "name": "sax",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "sharp",
            "direct": false,
            "version": "0.34.4",
            "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": "shiki",
            "direct": false,
            "version": "3.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "sisteransi",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "sitemap",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "smartypants",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "smol-toml",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.7.6",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-js",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "space-separated-tokens",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "starlight-blog",
            "direct": false,
            "version": "0.24.3",
            "ecosystem": "npm"
          },
          {
            "name": "stream-replace-string",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "stringify-entities",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "7.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "strnum",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "style-to-js",
            "direct": false,
            "version": "1.1.18",
            "ecosystem": "npm"
          },
          {
            "name": "style-to-object",
            "direct": false,
            "version": "1.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "stylis",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "suf-log",
            "direct": false,
            "version": "2.5.3",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "synckit",
            "direct": false,
            "version": "0.11.11",
            "ecosystem": "npm"
          },
          {
            "name": "tiny-inflate",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "tinyexec",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "tinyglobby",
            "direct": false,
            "version": "0.2.15",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "trim-lines",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "trough",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ts-api-utils",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ts-dedent",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "tsconfck",
            "direct": false,
            "version": "3.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "type-check",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "4.41.0",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "5.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "typescript-eslint",
            "direct": false,
            "version": "8.46.2",
            "ecosystem": "npm"
          },
          {
            "name": "ufo",
            "direct": false,
            "version": "1.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "ultrahtml",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "uncrypto",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "7.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "unicode-properties",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "unicode-trie",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unified",
            "direct": false,
            "version": "11.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "unifont",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-find-after",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-is",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-modify-children",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-position",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-position-from-estree",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-remove",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-remove-position",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-stringify-position",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit-children",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit-parents",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "unstorage",
            "direct": false,
            "version": "1.17.1",
            "ecosystem": "npm"
          },
          {
            "name": "uri-js",
            "direct": false,
            "version": "4.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "util-deprecate",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "uuid",
            "direct": false,
            "version": "14.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "vfile",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vfile-location",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vfile-message",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vite",
            "direct": false,
            "version": "6.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "vitefu",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "web-namespaces",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "which-pm-runs",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "widest-line",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "word-wrap",
            "direct": false,
            "version": "1.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "9.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "xxhash-wasm",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "21.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-spinner",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "yoctocolors",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "zod",
            "direct": false,
            "version": "3.25.76",
            "ecosystem": "npm"
          },
          {
            "name": "zod-to-json-schema",
            "direct": false,
            "version": "3.24.6",
            "ecosystem": "npm"
          },
          {
            "name": "zod-to-ts",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "zwitch",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 781,
        "direct_count": 18,
        "indirect_count": 763
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 7,
        "merged_prs": 110,
        "open_issues": 15,
        "closed_ratio": 0.805,
        "closed_issues": 62,
        "closed_unmerged_prs": 152
      },
      "bus_factor": 1,
      "bot_contributors": 2,
      "top_contributors": [
        {
          "type": "User",
          "login": "STRRL",
          "commits": 103,
          "avatar_url": "https://avatars.githubusercontent.com/u/20221408?v=4"
        },
        {
          "type": "User",
          "login": "UnstoppableMango",
          "commits": 4,
          "avatar_url": "https://avatars.githubusercontent.com/u/20211602?v=4"
        },
        {
          "type": "User",
          "login": "jingyuanliang",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/96671468?v=4"
        },
        {
          "type": "User",
          "login": "kanya-approve",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/6502571?v=4"
        },
        {
          "type": "User",
          "login": "conrado",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/77191?v=4"
        },
        {
          "type": "User",
          "login": "AruneshDwivedi",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/175807761?v=4"
        },
        {
          "type": "User",
          "login": "bcaldwell",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/8838361?v=4"
        },
        {
          "type": "User",
          "login": "z0rc",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/787519?v=4"
        },
        {
          "type": "User",
          "login": "joelcox22",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/1089216?v=4"
        },
        {
          "type": "User",
          "login": "lado936",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/13964808?v=4"
        }
      ],
      "contributors_sampled": 17,
      "top_contributor_share": 0.817
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "claude-code-review.yml",
        "claude.yml",
        "e2e-test.yaml",
        "helm-package-test.yaml",
        "integration-test.yaml",
        "release-container-image.yaml",
        "release-helm.yaml",
        "unit-test.yaml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        "eslint.config.mjs"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "go.sum",
        "pnpm-lock.yaml"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "26 out of 26 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": 0,
            "reason": "Found 1/25 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 7 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": "30 commit(s) and 11 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": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 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": "64 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "147f794731e7fe99b0c7ff755e2c57afebfcded0",
        "ran_at": "2026-07-28T15:26:26Z",
        "aggregate_score": 4.6,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-27T07:39:35Z",
      "oldest_open_prs": [
        {
          "number": 87,
          "created_at": "2024-05-31T15:46:26Z",
          "last_comment_at": "2025-07-30T20:23:30Z",
          "last_comment_author": "STRRL"
        },
        {
          "number": 224,
          "created_at": "2025-09-03T14:10:40Z",
          "last_comment_at": "2026-02-12T04:49:07Z",
          "last_comment_author": "STRRL"
        },
        {
          "number": 277,
          "created_at": "2026-02-24T20:48:00Z",
          "last_comment_at": "2026-07-23T04:38:40Z",
          "last_comment_author": "STRRL"
        },
        {
          "number": 278,
          "created_at": "2026-02-24T20:59:34Z",
          "last_comment_at": "2026-02-27T18:26:32Z",
          "last_comment_author": "STRRL"
        },
        {
          "number": 345,
          "created_at": "2026-07-26T18:12:36Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 346,
          "created_at": "2026-07-26T18:12:43Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 347,
          "created_at": "2026-07-27T07:38:50Z",
          "last_comment_at": "2026-07-27T07:39:31Z",
          "last_comment_author": "codecov"
        }
      ],
      "last_merged_pr_at": "2026-07-25T20:40:18Z",
      "ci_last_conclusion": "SKIPPED",
      "oldest_open_issues": [
        {
          "number": 9,
          "created_at": "2023-06-21T11:57:14Z",
          "last_comment_at": "2023-06-30T05:27:06Z",
          "last_comment_author": "STRRL"
        },
        {
          "number": 10,
          "created_at": "2023-06-21T11:58:25Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 12,
          "created_at": "2023-06-22T00:58:30Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 16,
          "created_at": "2023-06-30T09:30:59Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 28,
          "created_at": "2023-07-27T05:54:47Z",
          "last_comment_at": "2025-06-07T14:04:31Z",
          "last_comment_author": "adhasahar97"
        },
        {
          "number": 83,
          "created_at": "2024-05-21T02:22:28Z",
          "last_comment_at": "2025-03-26T22:57:10Z",
          "last_comment_author": "grabskimm"
        },
        {
          "number": 97,
          "created_at": "2024-07-01T15:52:43Z",
          "last_comment_at": "2024-07-09T11:48:51Z",
          "last_comment_author": "zoftdev"
        },
        {
          "number": 137,
          "created_at": "2024-10-23T04:37:24Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 138,
          "created_at": "2024-10-23T04:54:14Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 179,
          "created_at": "2025-02-10T03:39:14Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 193,
          "created_at": "2025-04-20T21:18:19Z",
          "last_comment_at": "2025-10-20T12:37:50Z",
          "last_comment_author": "joelcox22"
        },
        {
          "number": 231,
          "created_at": "2025-10-13T17:47:59Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 232,
          "created_at": "2025-10-13T17:50:44Z",
          "last_comment_at": "2026-04-02T14:44:55Z",
          "last_comment_author": "TurboTurtle65"
        },
        {
          "number": 260,
          "created_at": "2026-02-02T20:50:01Z",
          "last_comment_at": "2026-06-27T20:32:46Z",
          "last_comment_author": "abasu0713"
        },
        {
          "number": 334,
          "created_at": "2026-07-23T05:34:20Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/STRRL/cloudflare-tunnel-ingress-controller",
    "host": "github.com",
    "name": "cloudflare-tunnel-ingress-controller",
    "owner": "STRRL"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 70,
      "inputs": {
        "security": 57,
        "vitality": 79,
        "community": 61,
        "governance": 62,
        "engineering": 90
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 79,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 71,
            "inputs": {
              "commits_last_year": 74,
              "human_commit_share": 0.81,
              "days_since_last_push": 1,
              "active_weeks_last_year": 12
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 1 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "12/52 weeks with commits",
                "points": 8.3,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 12
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "74 commits in the last year",
                "points": 16.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 74
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 11 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": 92,
            "inputs": {
              "releases_count": 18,
              "latest_release_tag": "v0.0.24",
              "releases_from_tags": false,
              "days_since_latest_release": 8,
              "mean_days_between_releases": 74.7
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "18 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 18
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 8 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 8
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~74.7 days",
                "points": 19.8,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 74.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": 2,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 2 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 2
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 61,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "good",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 71,
            "inputs": {
              "forks": 88,
              "stars": 1172,
              "watchers": 8,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "1,172 stars",
                "points": 49.8,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 1172
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "88 forks",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 88
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "8 watchers",
                "points": 4.7,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 62,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 37,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 17,
              "top_contributor_share": 0.817
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 82% of commits",
                "points": 4.1,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 82
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "17 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 17
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 7 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 54,
            "inputs": {
              "merged_prs": 110,
              "open_issues": 15,
              "closed_issues": 62,
              "issue_closed_ratio": 0.805,
              "closed_unmerged_prs": 152
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "80% of issues closed",
                "points": 37.6,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 80
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "110/262 decided PRs merged",
                "points": 16.1,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 110,
                      "decided": 262
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 1/25 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "good",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 70,
            "inputs": {
              "followers": 721,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "STRRL",
              "public_repos": 237,
              "account_age_days": 3680
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "721 followers of STRRL",
                "points": 20.6,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 721,
                      "login": "STRRL"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "237 public repos, account ~10 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 237
                    }
                  },
                  {
                    "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": [
                "github.com/STRRL/cloudflare-tunnel-ingress-controller"
              ],
              "ecosystems": "go",
              "any_deprecated": false,
              "min_days_since_publish": 8
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on go",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "go"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 8 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 8
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "23 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 23
                    }
                  }
                ],
                "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": "excellent",
        "name": "Engineering Quality",
        "value": 90,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 84,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "8 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "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": "eslint.config.mjs",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.mjs"
                    }
                  }
                ],
                "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": "26 out of 26 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "topics": [
                "cloudflare",
                "cloudflare-tunnel",
                "ingress",
                "ingress-controller",
                "kubernetes",
                "selfhosted"
              ],
              "has_wiki": true,
              "homepage": "https://tunnel.strrl.dev",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://tunnel.strrl.dev",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "6 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 57,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 46,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 4.6
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "26 out of 26 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 1/25 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 7 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": "30 commit(s) and 11 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 detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "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": "64 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 781 resolved dependencies against OSV. This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "indirect_dependencies_free_of_known_advisories",
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 781
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 73,
              "affected_packages": 25,
              "assessed_packages": 781,
              "unassessed_packages": 0,
              "affected_by_severity": "critical 3, high 14, moderate 6, low 1, unknown 1",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "transitive set not separable from development and test dependencies in this scope",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_scope_not_separable",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 781,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 13
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "excellent",
        "name": "AI Readiness",
        "value": 90,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.988,
              "agent_instruction_files": [
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 4322
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "80 of 81 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 80,
                      "sampled": 81
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "excellent",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "go.sum",
                "pnpm-lock.yaml"
              ],
              "has_dockerfile": true,
              "typed_language": true,
              "bootstrap_files": [
                "Makefile"
              ],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "docs/tsconfig.json"
              ],
              "agent_commit_share": 0.2,
              "toolchain_manifests": [
                "go.mod"
              ],
              "dependency_bot_commit_share": 0.16
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "Makefile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Makefile"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": "eslint.config.mjs",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.mjs"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "docs/tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "docs/tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "Dockerfile, lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Dockerfile, lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "20 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 20,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "16 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 16,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "Go",
              "largest_source_bytes": 24787,
              "source_files_sampled": 42,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Go (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "Go"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/42 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 42,
                      "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"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-28T15:26:50.429582Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/STRRL/cloudflare-tunnel-ingress-controller.svg",
  "full_name": "STRRL/cloudflare-tunnel-ingress-controller",
  "license_state": "standard",
  "license_spdx": "MIT"
}

Оцінки — це сигнали, а не гарантії. Вони відображають публічно видимі практики на GitHub — це не аудит коду й не гарантія безпеки.

Відсутні дані виключаються, а ваги перенормовуються — нуль за відсутність ніколи не ставиться. Методологія версіонована й відкрита: метрики v1.13.0, схема v0.27.0 — повна методологія · вікі метрик.

Як окремий результат виглядає на тлі всього реєстру: сукупна статистикаGo.