公开记录
软件健康报告模式 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年5月在 GitHub 上查看 ↗

STRRL/cloudflare-tunnel-ingress-controller 的健康指数为 100 分中的 70 分,处于「良好」区间。 其得分最高的类别是Engineering Quality(90/100),最低的是Security(57/100)。 最近一次更新在 1 天前。 近期的大部分工作由 1 位贡献者完成。

70
总分 / 100
良好

软件健康指数

指标归入加权类别,统一采用 1–100 量表。总体分先取类别加权平均;当公开证据触发高风险司法辖区政策时,评级会按政策调整,并设置 49(有风险)的上限。AI 就绪度不计入总体分。

70
优秀85-100堪称典范;基本满足所有检验标准
良好70-84健康;仅有轻微不足
中等50-69可接受,但存在明显不足;建议进行审查
存在风险30-49存在重大薄弱环节;采用时应保持审慎
危急1-29问题严重(项目被弃置、仅有单一维护者、缺乏基本工程规范)
活力社区与采用可持续性与治理工程质量安全AI 就绪度

评分画像

每条轴代表一个类别。形状比平均值更重要——健康的对象会填满整个图形,而“一峰一谷”式画像意味着某一维度的优势正掩盖另一维度的风险。

所有权

Zhiqiang ZHOU个人账户
721 关注者237 个公开仓库始于 2016年6月

该仓库由个人账户拥有。相较于组织支持的项目,单一所有者项目的延续性风险更高。

软件包生态系统

注册表软件包版本月下载量版本数最近发布
Gogithub.com/STRRL/cloudflare-tunnel-ingress-controllerv0.0.24-238 天前

按类别列示的指标

活力

项目是否仍有生命——是否仍在编写代码,是否仍在发布版本?

79良好 · 占总体的 22%
评分方式
36/36推送新近度 — 最近一次推送于 1 天前
8.3/36提交节奏 — 52 周中有 12 周有提交
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

发布纪律

92优秀
评分方式
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

社区健康

50中等
评分方式
22.5/22.5README
22.5/22.5许可证 — 可识别的许可证(MIT)
0/18CONTRIBUTING 指南
0/13.5行为准则
0/7.2议题模板
0/6.3PR 模板
所用输入
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议题解决 — 80% 的议题已关闭
16.1/38.3PR 接受 — 已裁定的 PR 中 110/262 已合并
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所有者影响力 — STRRL 有 721 位关注者
25/25既往记录 — 237 个公开仓库,账户约 10 年
所用输入
followers721
owner_typeUser
is_verified
owner_loginSTRRL
public_repos237
account_age_days3,680
已排除计分(无数据或不适用):已验证域名。 其余权重已重新归一化。
评分方式
25/25已发布且可解析 — go 上有 1 个软件包
35/35发布时效 — 最近一次发布于 8 天前
20/20版本历史 — 23 个已发布版本
20/20未被弃用 — 活跃,未被弃用或撤回
所用输入
packagesgithub.com/STRRL/cloudflare-tunnel-ingress-controller
ecosystemsgo
any_deprecated
min_days_since_publish8

工程质量

基础的工程与文档实践是否到位?

90优秀 · 占总体的 20%

工程实践

84良好
评分方式
24/24CI 工作流 — 8 个工作流
24/24存在测试
16/16Linter 配置 — 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 比对。 该仓库未发布任何索引可解析的软件包,因此改为评估仓库依赖图。该图将开发与测试版本固定同交付的依赖混在一起,因此仅对声明的运行时依赖计分;传递性发现仅作为背景信息列出,不计入评分。 未对可达性进行分析。

AI 就绪度

该仓库在多大程度上具备与 AI 编码代理协同开发与维护的条件?这是一枚独立的实验性徽章——权重为 0.0,因此单独呈现,不影响总体健康评分。

90优秀 · 占总体的 0%
评分方式
45/45代理指令 — CLAUDE.md
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 81 次人类提交中有 80 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share0.988
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes4,322
评分方式
18/18一条命令的引导启动 — Makefile
22/22自动化测试
11/11Lint / 格式化配置 — eslint.config.mjs
11/11静态类型检查 — docs/tsconfig.json
10/10可复现环境 — Dockerfile, lockfile
10/10已体现的代理实践 — 最近 100 次提交中有 20 次由代理编写或署名代理
8/8自动化维护 — 最近 100 次提交中有 16 次为自动依赖更新
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可控的文件大小 — 采样的 42 个源文件中有 0 个超过 60KB
所用输入
primary_languageGo
largest_source_bytes24,787
source_files_sampled42
oversized_source_files0

关键数据

1,172GitHub 星标
17贡献者
74最近 12 个月提交数
1距最近推送天数
18发布版本数
1巴士系数(bus factor)
15开放议题
Go, npm软件包生态系统数

数据采集警告

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

更多细节

Star 与 Fork 历史 0 ★ / 88 ⇿
0Star
88Fork
17发布

每颗 star 和每个 fork 的添加时间,来自 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 个间接(传递)软件包。仓库提交锁文件时,传递闭包才是完整的。

注册表软件包版本关系
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.