公开记录
软件健康报告模式 0.27.0 · 指标 1.13.0 · 2026-07-24 04:56 UTC

asyncdotengineering / plandesk

Local-first, self-hostable planning workspace — canvas + docs-on-nodes + tasks + board + MCP for product teams and agent workflows.

TypeScriptMIT★ 1 星标⑂ 0 复刻始于 2026年6月在 GitHub 上查看 ↗

asyncdotengineering/plandesk 的健康指数为 100 分中的 47 分,处于「存在风险」区间。 其得分最高的类别是AI Readiness(75/100),最低的是Security(26/100)。 最近一次更新在 5 天前。 近期的大部分工作由 1 位贡献者完成。

47
总分 / 100
存在风险

软件健康指数

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

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

评分画像

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

所有权

0 关注者9 个公开仓库始于 2023年4月

该仓库由组织支持——共同承担、可问责的托管责任,可延续于任何单一维护者之后。

软件包生态系统

按类别列示的指标

活力

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

70良好 · 占总体的 22%
评分方式
36/36推送新近度 — 最近一次推送于 5 天前
3.5/36提交节奏 — 52 周中有 5 周有提交
18/18提交量 — 最近一年 347 次提交
0/10OpenSSF Scorecard:Maintained — project was created within the last 90 days. Please review its contents carefully
所用输入
commits_last_year347
human_commit_share1
days_since_last_push5
active_weeks_last_year5

发布纪律

88优秀
评分方式
16.2/27有发布版本 — 14 个版本标签(无 GitHub 发布版本)
36/36发布时效 — 最近一次发布版本于 11 天前
27/27发布节奏 — 约每 3.9 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — 无数据
所用输入
releases_count14
latest_release_tagv0.20.0
releases_from_tags
days_since_latest_release11
mean_days_between_releases3.9
已排除计分(无数据或不适用):OpenSSF Scorecard:Signed-Releases。 其余权重已重新归一化。

社区与采用

项目是否拥有用户、下载量与关注度,并具备欢迎贡献者参与的配置?

36存在风险 · 占总体的 18%
评分方式
0/60星标 — 1 个星标
0/25复刻 — 0 个复刻
0/15关注者 — 0 位关注者
所用输入
forks0
stars1
watchers0
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
评分方式
56.5/80月度下载量 — npm 合计每月 17,285 次下载
0/20注册表被依赖数 — 该生态系统不报告此项
所用输入
packages@plandesk/db, @plandesk/api, @plandesk/cli, @plandesk/mcp, @plandesk/mcp-client
dependents
ecosystemsnpm
total_downloads
monthly_downloads17,285
已排除计分(无数据或不适用):注册表被依赖数。 其余权重已重新归一化。

可持续性与治理

项目能否在其成员之外延续——巴士系数、响应能力、由谁支持,以及软件包的维护状况?

43存在风险 · 占总体的 24%
评分方式
9/54巴士系数 — 1 位贡献者贡献了半数提交
0/22.5提交分布 — 头号贡献者编写了 100% 的提交
1.4/13.5贡献者广度 — 1 位贡献者
3/10OpenSSF Scorecard:Contributors — project has 1 contributing companies or organizations -- score normalized to 3
所用输入
bus_factor1
contributors_sampled1
top_contributor_share1
评分方式
20.9/46.8议题解决 — 45% 的议题已关闭
0/38.3PR 接受 — 没有已裁定的拉取请求或无数据
0/15OpenSSF Scorecard:Code-Review — Found 0/30 approved changesets -- score normalized to 0
所用输入
merged_prs0
open_issues16
closed_issues13
issue_closed_ratio0.448
closed_unmerged_prs0
已排除计分(无数据或不适用):PR 接受。 其余权重已重新归一化。
评分方式
30/30所有权背书 — 组织持有
0/20已验证域名
0/25所有者影响力 — asyncdotengineering 有 0 位关注者
13.8/25既往记录 — 9 个公开仓库,账户约 3 年
所用输入
followers0
owner_typeOrganization
is_verified
owner_loginasyncdotengineering
public_repos9
account_age_days1,197
评分方式
25/25已发布且可解析 — npm 上有 5 个软件包
35/35发布时效 — 最近一次发布于 4 天前
20/20版本历史 — 50 个已发布版本
20/20未被弃用 — 活跃,未被弃用或撤回
所用输入
packages@plandesk/db, @plandesk/api, @plandesk/cli, @plandesk/mcp, @plandesk/mcp-client
ecosystemsnpm
any_deprecated
min_days_since_publish4

工程质量

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

52中等 · 占总体的 20%

工程实践

50中等
评分方式
0/24CI 工作流
24/24存在测试
16/16Linter 配置 — eslint.config.js
0/9.6Pre-commit 钩子
0/6.4.editorconfig
0/20OpenSSF Scorecard:CI-Tests — 无数据
所用输入
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_config
已排除计分(无数据或不适用):OpenSSF Scorecard:CI-Tests。 其余权重已重新归一化。

文档

55中等
评分方式
30/30README
0/25文档目录
15/15文档 / 主页站点 — https://plandesk-docs.pages.dev
10/10仓库描述
0/10主题标签
0/10Wiki
所用输入
topics
has_wiki
homepagehttps://plandesk-docs.pages.dev
has_readme
has_docs_dir
has_description

安全

可见的安全与供应链实践是否稳固,且不存在未解决的高风险司法辖区暴露?

26危急 · 占总体的 16%

安全态势

15危急
评分方式
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — 无数据
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
0.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
0/10Dangerous-Workflow — 无数据
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5许可证 — license file detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
0/5Packaging — 无数据
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — no SAST tool detected
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — 无数据
0/7.5Token-Permissions — 无数据
0/7.5Vulnerabilities — 34 existing vulnerabilities detected
所用输入
sourceopenssf_scorecard
checks_evaluated13
scorecard_versionv5.5.0
checks_inconclusive5
scorecard_aggregate1.5
已排除计分(无数据或不适用):ci_tests, dangerous_workflow, packaging, signed_releases, token_permissions。 其余权重已重新归一化。
评分方式
11.7/35直接依赖不含已知公告 — 3 个受影响:hono 4.12.23 (high 7.1), @hono/node-server 1.19.14 (moderate 5.9), @hono/node-server 2.0.4 (moderate 5.9)
0/25间接依赖不含已知公告 — 在此范围内,传递依赖集合无法与开发和测试依赖区分
40/40没有长期未处理的公告 — 没有公告公开超过 90 天
所用输入
sourceosv
advisories37
affected_packages16
assessed_packages1,250
unassessed_packages56
affected_by_severityhigh 9, moderate 3, low 4
direct_affected_packages3
已排除计分(无数据或不适用):间接依赖不含已知公告。 其余权重已重新归一化。 已将 1250 个已解析依赖与 OSV 比对。 有 56 项无法评估——没有已解析的版本、生态系统不受支持,或超出所报告的软件包清单。 该仓库未发布任何索引可解析的软件包,因此改为评估仓库依赖图。该图将开发与测试版本固定同交付的依赖混在一起,因此仅对声明的运行时依赖计分;传递性发现仅作为背景信息列出,不计入评分。 未对可达性进行分析。

AI 就绪度

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

75良好 · 占总体的 0%
评分方式
45/45代理指令 — .agents/factory/workers/claude.md, CLAUDE.md
0/15机器可读文档(llms.txt)
40/40可读的提交历史 — 100 次人类提交中有 100 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
legible_history_share1
agent_instruction_files.agents/factory/workers/claude.md, CLAUDE.md
agent_instruction_max_bytes1,776
评分方式
0/18一条命令的引导启动
22/22自动化测试
11/11Lint / 格式化配置 — eslint.config.js
11/11静态类型检查 — apps/docs/tsconfig.json, apps/plandesk-web/tsconfig.json, packages/plandesk-api/tsconfig.json, packages/plandesk-cli/tsconfig.json, packages/plandesk-db/tsconfig.json, packages/plandesk-mcp-client/tsconfig.json, packages/plandesk-mcp/tsconfig.json
10/10可复现环境 — Dockerfile, lockfile
10/10已体现的代理实践 — 最近 100 次提交中有 98 次由代理编写或署名代理
0/8自动化维护 — 未观察到自动依赖更新
0/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
所用输入
has_nix
has_tests
lockfilespnpm-lock.yaml
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_config
typecheck_configsapps/docs/tsconfig.json, apps/plandesk-web/tsconfig.json, packages/plandesk-api/tsconfig.json, packages/plandesk-cli/tsconfig.json, packages/plandesk-db/tsconfig.json, packages/plandesk-mcp-client/tsconfig.json, packages/plandesk-mcp/tsconfig.json
agent_commit_share0.98
toolchain_manifests
dependency_bot_commit_share0
评分方式
45/45可类型检查的代码 — TypeScript(静态类型)
55/55可控的文件大小 — 采样的 425 个源文件中有 0 个超过 60KB
所用输入
primary_languageTypeScript
largest_source_bytes52,132
source_files_sampled425
oversized_source_files0
评分方式
0/40API 模式(OpenAPI/GraphQL/proto)
20/20MCP 服务器
40/40可运行示例 — examples
所用输入
example_dirsexamples
has_mcp_signal
api_schema_files

关键数据

1GitHub 星标
1贡献者
347最近 12 个月提交数
5距最近推送天数
14发布版本数
1巴士系数(bus factor)
16开放议题
npm软件包生态系统数

数据采集警告

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • deps.dev does not index npm:@plandesk/db@1.0.0; advisories assessed against the repository dependency graph instead

更多细节

OpenSSF Scorecard 1.5 / 10
1.5综合

来自开源项目 OpenSSF Scorecard 的独立、工具无关的安全评估。每项检查奖励的是安全实践本身,而非特定供应商的工具。Scorecard 无法判定的检查项标记为 不适用,并从安全评分中剔除(绝不按零分计)。Scorecard v5.5.0 · 2026-07-24 04:56 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
不适用CI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
不适用Dangerous-Workflowno workflows found
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
不适用Packagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
不适用Signed-Releasesno releases found
不适用Token-PermissionsNo tokens found
0Vulnerabilities34 existing vulnerabilities detected
直接依赖 58
注册表软件包版本约束清单文件
npm@dagrejs/dagre^3.0.0apps/plandesk-web/package.json
npm@dnd-kit/core^6.3.1apps/plandesk-web/package.json
npm@dnd-kit/utilities^3.2.2apps/plandesk-web/package.json
npm@tailwindcss/vite^4.3.2apps/plandesk-web/package.json
npm@tanstack/react-query^5.101.0apps/plandesk-web/package.json
npm@tanstack/react-router^1.170.15apps/plandesk-web/package.json
npm@tiptap/core^3.26.0apps/plandesk-web/package.json
npm@tiptap/extension-file-handler^3.27.3apps/plandesk-web/package.json
npm@tiptap/extension-image^3.26.0apps/plandesk-web/package.json
npm@tiptap/extension-table^3.26.0apps/plandesk-web/package.json
npm@tiptap/extension-task-item3.26.0apps/plandesk-web/package.json
npm@tiptap/extension-task-list3.26.0apps/plandesk-web/package.json
npm@tiptap/pm^3.26.0apps/plandesk-web/package.json
npm@tiptap/react^3.26.0apps/plandesk-web/package.json
npm@tiptap/starter-kit^3.26.0apps/plandesk-web/package.json
npm@tiptap/suggestion^3.27.3apps/plandesk-web/package.json
npm@xyflow/react^12.11.0apps/plandesk-web/package.json
npmclass-variance-authority^0.7.1apps/plandesk-web/package.json
npmclsx^2.1.1apps/plandesk-web/package.json
npmcmdk^1.1.1apps/plandesk-web/package.json
npmisomorphic-dompurify^3.16.0apps/plandesk-web/package.json
npmlucide-react^1.24.0apps/plandesk-web/package.json
npmmarked^18.0.5apps/plandesk-web/package.json
npmnext-themes^0.4.6apps/plandesk-web/package.json
npmradix-ui^1.6.2apps/plandesk-web/package.json
npmreact^19.2.7apps/plandesk-web/package.json
npmreact-dom^19.2.7apps/plandesk-web/package.json
npmsonner^2.0.7apps/plandesk-web/package.json
npmtailwind-merge^3.6.0apps/plandesk-web/package.json
npmtailwindcss^4.3.2apps/plandesk-web/package.json
npmturndown^7.2.4apps/plandesk-web/package.json
npmturndown-plugin-gfm^1.0.2apps/plandesk-web/package.json
npmtw-animate-css^1.4.0apps/plandesk-web/package.json
npm@better-auth/api-key1.6.23packages/plandesk-api/package.json
npm@hono/node-server^2.0.4packages/plandesk-api/package.json
npm@libsql/kysely-libsql^0.4.1packages/plandesk-api/package.json
npm@plandesk/dbworkspace:*packages/plandesk-api/package.json
npmbetter-auth1.6.23packages/plandesk-api/package.json
npmhono^4.12.23packages/plandesk-api/package.json
npm@hono/node-server^2.0.4packages/plandesk-cli/package.json
npm@modelcontextprotocol/sdk^1.29.0packages/plandesk-cli/package.json
npm@plandesk/apiworkspace:*packages/plandesk-cli/package.json
npm@plandesk/dbworkspace:*packages/plandesk-cli/package.json
npm@plandesk/mcpworkspace:*packages/plandesk-cli/package.json
npmhono^4.12.23packages/plandesk-cli/package.json
npmmarked^18.0.5packages/plandesk-cli/package.json
npmmarked-shiki^1.2.1packages/plandesk-cli/package.json
npmmermaid^11.16.0packages/plandesk-cli/package.json
npmshiki^4.3.1packages/plandesk-cli/package.json
npm@libsql/client^0.15.9packages/plandesk-db/package.json
npmdrizzle-orm^0.45.2packages/plandesk-db/package.json
npm@modelcontextprotocol/sdk^1.29.0packages/plandesk-mcp-client/package.json
npm@modelcontextprotocol/sdk^1.29.0packages/plandesk-mcp/package.json
npm@plandesk/apiworkspace:*packages/plandesk-mcp/package.json
npm@plandesk/dbworkspace:*packages/plandesk-mcp/package.json
npmhono^4.12.23packages/plandesk-mcp/package.json
npmmarked^18.0.5packages/plandesk-mcp/package.json
npmzod^3.25.76packages/plandesk-mcp/package.json
全部依赖 1,306

来自 GitHub 依赖图的完整解析依赖集合:89 个直接依赖与 1,217 个间接(传递)软件包。仓库提交锁文件时,传递闭包才是完整的。

注册表软件包版本关系
npm@better-auth/api-key1.6.23直接
npm@dagrejs/dagre3.0.0直接
npm@dagrejs/dagre^3.0.0直接
npm@dnd-kit/core6.3.1直接
npm@dnd-kit/core^6.3.1直接
npm@dnd-kit/utilities3.2.2直接
npm@dnd-kit/utilities^3.2.2直接
npm@hono/node-server1.19.14直接
npm@hono/node-server2.0.4直接
npm@hono/node-server^2.0.4直接
npm@libsql/client0.15.15直接
npm@libsql/client^0.15.9直接
npm@libsql/kysely-libsql0.4.1直接
npm@libsql/kysely-libsql^0.4.1直接
npm@modelcontextprotocol/sdk1.29.0直接
npm@modelcontextprotocol/sdk^1.29.0直接
npm@tailwindcss/vite4.3.2直接
npm@tailwindcss/vite^4.3.2直接
npm@tanstack/react-query5.101.0直接
npm@tanstack/react-query^5.101.0直接
npm@tanstack/react-router1.170.15直接
npm@tanstack/react-router^1.170.15直接
npm@tiptap/core3.26.0直接
npm@tiptap/core^3.26.0直接
npm@tiptap/extension-file-handler3.27.3直接
npm@tiptap/extension-file-handler^3.27.3直接
npm@tiptap/extension-image3.26.0直接
npm@tiptap/extension-image^3.26.0直接
npm@tiptap/extension-table3.26.0直接
npm@tiptap/extension-table^3.26.0直接
npm@tiptap/extension-task-item3.26.0直接
npm@tiptap/extension-task-list3.26.0直接
npm@tiptap/pm3.26.0直接
npm@tiptap/pm^3.26.0直接
npm@tiptap/react3.26.0直接
npm@tiptap/react^3.26.0直接
npm@tiptap/starter-kit3.26.0直接
npm@tiptap/starter-kit^3.26.0直接
npm@tiptap/suggestion3.27.3直接
npm@tiptap/suggestion^3.27.3直接
npm@xyflow/react12.11.0直接
npm@xyflow/react^12.11.0直接
npmbetter-auth1.6.23直接
npmclass-variance-authority0.7.1直接
npmclass-variance-authority^0.7.1直接
npmclsx2.1.1直接
npmclsx^2.1.1直接
npmcmdk1.1.1直接
npmcmdk^1.1.1直接
npmdrizzle-orm0.45.2直接
npmdrizzle-orm^0.45.2直接
npmhono4.12.23直接
npmhono^4.12.23直接
npmisomorphic-dompurify3.16.0直接
npmisomorphic-dompurify^3.16.0直接
npmlucide-react1.24.0直接
npmlucide-react^1.24.0直接
npmmarked16.4.2直接
npmmarked18.0.5直接
npmmarked^18.0.5直接
npmmarked-shiki1.2.1直接
npmmarked-shiki^1.2.1直接
npmmermaid11.16.0直接
npmmermaid^11.16.0直接
npmnext-themes0.4.6直接
npmnext-themes^0.4.6直接
npmradix-ui1.6.2直接
npmradix-ui^1.6.2直接
npmreact19.2.7直接
npmreact^19.2.7直接
npmreact-dom19.2.7直接
npmreact-dom^19.2.7直接
npmshiki4.3.1直接
npmshiki^4.3.1直接
npmsonner2.0.7直接
npmsonner^2.0.7直接
npmtailwind-merge3.6.0直接
npmtailwind-merge^3.6.0直接
npmtailwindcss4.3.2直接
npmtailwindcss^4.3.2直接
npmturndown7.2.4直接
npmturndown^7.2.4直接
npmturndown-plugin-gfm1.0.2直接
npmturndown-plugin-gfm^1.0.2直接
npmtw-animate-css1.4.0直接
npmtw-animate-css^1.4.0直接
npmzod3.25.76直接
npmzod4.4.3直接
npmzod^3.25.76直接
npm@antfu/install-pkg1.1.0间接
npm@asamuzakjp/css-color5.1.11间接
npm@asamuzakjp/dom-selector7.1.1间接
npm@asamuzakjp/generational-cache1.0.1间接
npm@asamuzakjp/nwsapi2.3.9间接
npm@astrojs/compiler4.0.0间接
npm@astrojs/internal-helpers0.10.0间接
npm@astrojs/internal-helpers0.9.1间接
npm@astrojs/markdown-remark7.1.2间接
npm@astrojs/markdown-remark7.2.0间接
npm@astrojs/mdx5.0.6间接
npm@astrojs/prism4.0.2间接
npm@astrojs/sitemap3.7.3间接
npm@astrojs/starlight0.39.3间接
npm@astrojs/starlight^0.39.3间接
npm@astrojs/telemetry3.3.2间接
npm@babel/code-frame7.29.7间接
npm@babel/compat-data7.29.7间接
npm@babel/core7.29.7间接
npm@babel/generator7.29.7间接
npm@babel/helper-compilation-targets7.29.7间接
npm@babel/helper-globals7.29.7间接
npm@babel/helper-module-imports7.29.7间接
npm@babel/helper-module-transforms7.29.7间接
npm@babel/helper-string-parser7.29.7间接
npm@babel/helper-validator-identifier7.29.7间接
npm@babel/helper-validator-option7.29.7间接
npm@babel/helpers7.29.7间接
npm@babel/parser7.29.7间接
npm@babel/runtime7.29.7间接
npm@babel/template7.29.7间接
npm@babel/traverse7.29.7间接
npm@babel/types7.29.7间接
npm@better-auth/core1.6.23间接
npm@better-auth/drizzle-adapter1.6.23间接
npm@better-auth/kysely-adapter1.6.23间接
npm@better-auth/memory-adapter1.6.23间接
npm@better-auth/mongo-adapter1.6.23间接
npm@better-auth/prisma-adapter1.6.23间接
npm@better-auth/telemetry1.6.23间接
npm@better-auth/utils0.4.2间接
npm@better-fetch/fetch1.3.1间接
npm@braintree/sanitize-url7.1.2间接
npm@bramus/specificity2.4.2间接
npm@capsizecss/unpack4.0.0间接
npm@chevrotain/types11.1.2间接
npm@clack/core1.4.1间接
npm@clack/prompts1.5.1间接
npm@cloudflare/workers-types4.20260609.1间接
npm@cloudflare/workers-types^4.20250609.0间接
npm@csstools/color-helpers6.0.2间接
npm@csstools/css-calc3.2.1间接
npm@csstools/css-color-parser4.1.1间接
npm@csstools/css-parser-algorithms4.0.0间接
npm@csstools/css-syntax-patches-for-csstree1.1.5间接
npm@csstools/css-tokenizer4.0.0间接
npm@ctrl/tinycolor4.2.0间接
npm@dagrejs/graphlib4.0.1间接
npm@dnd-kit/accessibility3.1.1间接
npm@drizzle-team/brocli0.10.2间接
npm@emnapi/core1.10.0间接
npm@emnapi/runtime1.10.0间接
npm@emnapi/wasi-threads1.2.1间接
npm@esbuild-kit/core-utils3.3.2间接
npm@esbuild-kit/esm-loader2.6.5间接
npm@esbuild/aix-ppc640.25.12间接
npm@esbuild/aix-ppc640.27.7间接
npm@esbuild/aix-ppc640.28.0间接
npm@esbuild/android-arm0.18.20间接
npm@esbuild/android-arm0.25.12间接
npm@esbuild/android-arm0.27.7间接
npm@esbuild/android-arm0.28.0间接
npm@esbuild/android-arm640.18.20间接
npm@esbuild/android-arm640.25.12间接
npm@esbuild/android-arm640.27.7间接
npm@esbuild/android-arm640.28.0间接
npm@esbuild/android-x640.18.20间接
npm@esbuild/android-x640.25.12间接
npm@esbuild/android-x640.27.7间接
npm@esbuild/android-x640.28.0间接
npm@esbuild/darwin-arm640.18.20间接
npm@esbuild/darwin-arm640.25.12间接
npm@esbuild/darwin-arm640.27.7间接
npm@esbuild/darwin-arm640.28.0间接
npm@esbuild/darwin-x640.18.20间接
npm@esbuild/darwin-x640.25.12间接
npm@esbuild/darwin-x640.27.7间接
npm@esbuild/darwin-x640.28.0间接
npm@esbuild/freebsd-arm640.18.20间接
npm@esbuild/freebsd-arm640.25.12间接
npm@esbuild/freebsd-arm640.27.7间接
npm@esbuild/freebsd-arm640.28.0间接
npm@esbuild/freebsd-x640.18.20间接
npm@esbuild/freebsd-x640.25.12间接
npm@esbuild/freebsd-x640.27.7间接
npm@esbuild/freebsd-x640.28.0间接
npm@esbuild/linux-arm0.18.20间接
npm@esbuild/linux-arm0.25.12间接
npm@esbuild/linux-arm0.27.7间接
npm@esbuild/linux-arm0.28.0间接
npm@esbuild/linux-arm640.18.20间接
npm@esbuild/linux-arm640.25.12间接
npm@esbuild/linux-arm640.27.7间接
npm@esbuild/linux-arm640.28.0间接
npm@esbuild/linux-ia320.18.20间接
npm@esbuild/linux-ia320.25.12间接
npm@esbuild/linux-ia320.27.7间接
npm@esbuild/linux-ia320.28.0间接
npm@esbuild/linux-loong640.18.20间接
npm@esbuild/linux-loong640.25.12间接
npm@esbuild/linux-loong640.27.7间接
npm@esbuild/linux-loong640.28.0间接
npm@esbuild/linux-mips64el0.18.20间接
npm@esbuild/linux-mips64el0.25.12间接
npm@esbuild/linux-mips64el0.27.7间接
npm@esbuild/linux-mips64el0.28.0间接
npm@esbuild/linux-ppc640.18.20间接
npm@esbuild/linux-ppc640.25.12间接
npm@esbuild/linux-ppc640.27.7间接
npm@esbuild/linux-ppc640.28.0间接
npm@esbuild/linux-riscv640.18.20间接
npm@esbuild/linux-riscv640.25.12间接
npm@esbuild/linux-riscv640.27.7间接
npm@esbuild/linux-riscv640.28.0间接
npm@esbuild/linux-s390x0.18.20间接
npm@esbuild/linux-s390x0.25.12间接
npm@esbuild/linux-s390x0.27.7间接
npm@esbuild/linux-s390x0.28.0间接
npm@esbuild/linux-x640.18.20间接
npm@esbuild/linux-x640.25.12间接
npm@esbuild/linux-x640.27.7间接
npm@esbuild/linux-x640.28.0间接
npm@esbuild/netbsd-arm640.25.12间接
npm@esbuild/netbsd-arm640.27.7间接
npm@esbuild/netbsd-arm640.28.0间接
npm@esbuild/netbsd-x640.18.20间接
npm@esbuild/netbsd-x640.25.12间接
npm@esbuild/netbsd-x640.27.7间接
npm@esbuild/netbsd-x640.28.0间接
npm@esbuild/openbsd-arm640.25.12间接
npm@esbuild/openbsd-arm640.27.7间接
npm@esbuild/openbsd-arm640.28.0间接
npm@esbuild/openbsd-x640.18.20间接
npm@esbuild/openbsd-x640.25.12间接
npm@esbuild/openbsd-x640.27.7间接
npm@esbuild/openbsd-x640.28.0间接
npm@esbuild/openharmony-arm640.25.12间接
npm@esbuild/openharmony-arm640.27.7间接
npm@esbuild/openharmony-arm640.28.0间接
npm@esbuild/sunos-x640.18.20间接
npm@esbuild/sunos-x640.25.12间接
npm@esbuild/sunos-x640.27.7间接
npm@esbuild/sunos-x640.28.0间接
npm@esbuild/win32-arm640.18.20间接
npm@esbuild/win32-arm640.25.12间接
npm@esbuild/win32-arm640.27.7间接
npm@esbuild/win32-arm640.28.0间接
npm@esbuild/win32-ia320.18.20间接
npm@esbuild/win32-ia320.25.12间接
npm@esbuild/win32-ia320.27.7间接
npm@esbuild/win32-ia320.28.0间接
npm@esbuild/win32-x640.18.20间接
npm@esbuild/win32-x640.25.12间接
npm@esbuild/win32-x640.27.7间接
npm@esbuild/win32-x640.28.0间接
npm@eslint-community/eslint-utils4.9.1间接
npm@eslint-community/regexpp4.12.2间接
npm@eslint/config-array0.21.2间接
npm@eslint/config-helpers0.4.2间接
npm@eslint/core0.17.0间接
npm@eslint/eslintrc3.3.5间接
npm@eslint/js9.39.4间接
npm@eslint/object-schema2.1.7间接
npm@eslint/plugin-kit0.4.1间接
npm@exodus/bytes1.15.1间接
npm@expressive-code/core0.42.0间接
npm@expressive-code/plugin-frames0.42.0间接
npm@expressive-code/plugin-shiki0.42.0间接
npm@expressive-code/plugin-text-markers0.42.0间接
npm@floating-ui/core1.7.5间接
npm@floating-ui/core1.8.0间接
npm@floating-ui/dom1.7.6间接
npm@floating-ui/dom1.8.0间接
npm@floating-ui/react-dom2.1.9间接
npm@floating-ui/utils0.2.11间接
npm@floating-ui/utils0.2.12间接
npm@humanfs/core0.19.2间接
npm@humanfs/node0.16.8间接
npm@humanfs/types0.15.0间接
npm@humanwhocodes/module-importer1.0.1间接
npm@humanwhocodes/retry0.4.3间接
npm@iconify/types2.0.0间接
npm@iconify/utils3.1.4间接
npm@img/colour1.1.0间接
npm@img/sharp-darwin-arm640.34.5间接
npm@img/sharp-darwin-x640.34.5间接
npm@img/sharp-libvips-darwin-arm641.2.4间接
npm@img/sharp-libvips-darwin-x641.2.4间接
npm@img/sharp-libvips-linux-arm1.2.4间接
npm@img/sharp-libvips-linux-arm641.2.4间接
npm@img/sharp-libvips-linux-ppc641.2.4间接
npm@img/sharp-libvips-linux-riscv641.2.4间接
npm@img/sharp-libvips-linux-s390x1.2.4间接
npm@img/sharp-libvips-linux-x641.2.4间接
npm@img/sharp-libvips-linuxmusl-arm641.2.4间接
npm@img/sharp-libvips-linuxmusl-x641.2.4间接
npm@img/sharp-linux-arm0.34.5间接
npm@img/sharp-linux-arm640.34.5间接
npm@img/sharp-linux-ppc640.34.5间接
npm@img/sharp-linux-riscv640.34.5间接
npm@img/sharp-linux-s390x0.34.5间接
npm@img/sharp-linux-x640.34.5间接
npm@img/sharp-linuxmusl-arm640.34.5间接
npm@img/sharp-linuxmusl-x640.34.5间接
npm@img/sharp-wasm320.34.5间接
npm@img/sharp-win32-arm640.34.5间接
npm@img/sharp-win32-ia320.34.5间接
npm@img/sharp-win32-x640.34.5间接
npm@jridgewell/gen-mapping0.3.13间接
npm@jridgewell/remapping2.3.5间接
npm@jridgewell/resolve-uri3.1.2间接
npm@jridgewell/sourcemap-codec1.5.5间接
npm@jridgewell/trace-mapping0.3.31间接
npm@libsql/core0.15.15间接
npm@libsql/darwin-arm640.5.29间接
npm@libsql/darwin-x640.5.29间接
npm@libsql/hrana-client0.7.0间接
npm@libsql/isomorphic-fetch0.3.1间接
npm@libsql/isomorphic-ws0.1.5间接
npm@libsql/linux-arm-gnueabihf0.5.29间接
npm@libsql/linux-arm-musleabihf0.5.29间接
npm@libsql/linux-arm64-gnu0.5.29间接
npm@libsql/linux-arm64-musl0.5.29间接
npm@libsql/linux-x64-gnu0.5.29间接
npm@libsql/linux-x64-musl0.5.29间接
npm@libsql/win32-x64-msvc0.5.29间接
npm@mdx-js/mdx3.1.1间接
npm@mermaid-js/parser1.2.0间接
npm@mixmark-io/domino2.2.0间接
npm@napi-rs/wasm-runtime1.1.4间接
npm@neon-rs/load0.0.4间接
npm@noble/ciphers2.2.0间接
npm@noble/hashes2.2.0间接
npm@opentelemetry/semantic-conventions1.43.0间接
npm@oslojs/encoding1.1.0间接
npm@oxc-project/types0.133.0间接
npm@pagefind/darwin-arm641.5.2间接
npm@pagefind/darwin-x641.5.2间接
npm@pagefind/default-ui1.5.2间接
npm@pagefind/freebsd-x641.5.2间接
npm@pagefind/linux-arm641.5.2间接
npm@pagefind/linux-x641.5.2间接
npm@pagefind/windows-arm641.5.2间接
npm@pagefind/windows-x641.5.2间接
npm@radix-ui/number1.1.2间接
npm@radix-ui/primitive1.1.5间接
npm@radix-ui/react-accessible-icon1.1.11间接
npm@radix-ui/react-accordion1.2.16间接
npm@radix-ui/react-alert-dialog1.1.19间接
npm@radix-ui/react-arrow1.1.11间接
npm@radix-ui/react-aspect-ratio1.1.11间接
npm@radix-ui/react-avatar1.2.2间接
npm@radix-ui/react-checkbox1.3.7间接
npm@radix-ui/react-collapsible1.1.16间接
npm@radix-ui/react-collection1.1.12间接
npm@radix-ui/react-compose-refs1.1.3间接
npm@radix-ui/react-context1.2.0间接
npm@radix-ui/react-context-menu2.3.3间接
npm@radix-ui/react-dialog1.1.19间接
npm@radix-ui/react-direction1.1.2间接
npm@radix-ui/react-dismissable-layer1.1.15间接
npm@radix-ui/react-dropdown-menu2.1.20间接
npm@radix-ui/react-focus-guards1.1.4间接
npm@radix-ui/react-focus-scope1.1.12间接
npm@radix-ui/react-form0.1.12间接
npm@radix-ui/react-hover-card1.1.19间接
npm@radix-ui/react-id1.1.2间接
npm@radix-ui/react-label2.1.11间接
npm@radix-ui/react-menu2.1.20间接
npm@radix-ui/react-menubar1.1.20间接
npm@radix-ui/react-navigation-menu1.2.18间接
npm@radix-ui/react-one-time-password-field0.1.12间接
npm@radix-ui/react-password-toggle-field0.1.7间接
npm@radix-ui/react-popover1.1.19间接
npm@radix-ui/react-popper1.3.3间接
npm@radix-ui/react-portal1.1.13间接
npm@radix-ui/react-presence1.1.7间接
npm@radix-ui/react-primitive2.1.7间接
npm@radix-ui/react-progress1.1.12间接
npm@radix-ui/react-radio-group1.4.3间接
npm@radix-ui/react-roving-focus1.1.15间接
npm@radix-ui/react-scroll-area1.2.14间接
npm@radix-ui/react-select2.3.3间接
npm@radix-ui/react-separator1.1.11间接
npm@radix-ui/react-slider1.4.3间接
npm@radix-ui/react-slot1.3.0间接
npm@radix-ui/react-switch1.3.3间接
npm@radix-ui/react-tabs1.1.17间接
npm@radix-ui/react-toast1.2.19间接
npm@radix-ui/react-toggle1.1.14间接
npm@radix-ui/react-toggle-group1.1.15间接
npm@radix-ui/react-toolbar1.1.15间接
npm@radix-ui/react-tooltip1.2.12间接
npm@radix-ui/react-use-callback-ref1.1.2间接
npm@radix-ui/react-use-controllable-state1.2.3间接
npm@radix-ui/react-use-effect-event0.0.3间接
npm@radix-ui/react-use-escape-keydown1.1.3间接
npm@radix-ui/react-use-is-hydrated0.1.1间接
npm@radix-ui/react-use-layout-effect1.1.2间接
npm@radix-ui/react-use-previous1.1.2间接
npm@radix-ui/react-use-rect1.1.2间接
npm@radix-ui/react-use-size1.1.2间接
npm@radix-ui/react-visually-hidden1.2.7间接
npm@radix-ui/rect1.1.2间接
npm@rolldown/binding-android-arm641.0.3间接
npm@rolldown/binding-darwin-arm641.0.3间接
npm@rolldown/binding-darwin-x641.0.3间接
npm@rolldown/binding-freebsd-x641.0.3间接
npm@rolldown/binding-linux-arm-gnueabihf1.0.3间接
npm@rolldown/binding-linux-arm64-gnu1.0.3间接
npm@rolldown/binding-linux-arm64-musl1.0.3间接
npm@rolldown/binding-linux-ppc64-gnu1.0.3间接
npm@rolldown/binding-linux-s390x-gnu1.0.3间接
npm@rolldown/binding-linux-x64-gnu1.0.3间接
npm@rolldown/binding-linux-x64-musl1.0.3间接
npm@rolldown/binding-openharmony-arm641.0.3间接
npm@rolldown/binding-wasm32-wasi1.0.3间接
npm@rolldown/binding-win32-arm64-msvc1.0.3间接
npm@rolldown/binding-win32-x64-msvc1.0.3间接
npm@rolldown/pluginutils1.0.1间接
npm@rollup/pluginutils5.4.0间接
npm@rollup/rollup-android-arm-eabi4.61.1间接
npm@rollup/rollup-android-arm644.61.1间接
npm@rollup/rollup-darwin-arm644.61.1间接
npm@rollup/rollup-darwin-x644.61.1间接
npm@rollup/rollup-freebsd-arm644.61.1间接
npm@rollup/rollup-freebsd-x644.61.1间接
npm@rollup/rollup-linux-arm-gnueabihf4.61.1间接
npm@rollup/rollup-linux-arm-musleabihf4.61.1间接
npm@rollup/rollup-linux-arm64-gnu4.61.1间接
npm@rollup/rollup-linux-arm64-musl4.61.1间接
npm@rollup/rollup-linux-loong64-gnu4.61.1间接
npm@rollup/rollup-linux-loong64-musl4.61.1间接
npm@rollup/rollup-linux-ppc64-gnu4.61.1间接
npm@rollup/rollup-linux-ppc64-musl4.61.1间接
npm@rollup/rollup-linux-riscv64-gnu4.61.1间接
npm@rollup/rollup-linux-riscv64-musl4.61.1间接
npm@rollup/rollup-linux-s390x-gnu4.61.1间接
npm@rollup/rollup-linux-x64-gnu4.61.1间接
npm@rollup/rollup-linux-x64-musl4.61.1间接
npm@rollup/rollup-openbsd-x644.61.1间接
npm@rollup/rollup-openharmony-arm644.61.1间接
npm@rollup/rollup-win32-arm64-msvc4.61.1间接
npm@rollup/rollup-win32-ia32-msvc4.61.1间接
npm@rollup/rollup-win32-x64-gnu4.61.1间接
npm@rollup/rollup-win32-x64-msvc4.61.1间接
npm@shikijs/core4.3.1间接
npm@shikijs/engine-javascript4.3.1间接
npm@shikijs/engine-oniguruma4.3.1间接
npm@shikijs/langs4.3.1间接
npm@shikijs/primitive4.3.1间接
npm@shikijs/themes4.3.1间接
npm@shikijs/types4.3.1间接
npm@shikijs/vscode-textmate10.0.2间接
npm@standard-schema/spec1.1.0间接
npm@tailwindcss/node4.3.2间接
npm@tailwindcss/oxide4.3.2间接
npm@tailwindcss/oxide-android-arm644.3.2间接
npm@tailwindcss/oxide-darwin-arm644.3.2间接
npm@tailwindcss/oxide-darwin-x644.3.2间接
npm@tailwindcss/oxide-freebsd-x644.3.2间接
npm@tailwindcss/oxide-linux-arm-gnueabihf4.3.2间接
npm@tailwindcss/oxide-linux-arm64-gnu4.3.2间接
npm@tailwindcss/oxide-linux-arm64-musl4.3.2间接
npm@tailwindcss/oxide-linux-x64-gnu4.3.2间接
npm@tailwindcss/oxide-linux-x64-musl4.3.2间接
npm@tailwindcss/oxide-wasm32-wasi4.3.2间接
npm@tailwindcss/oxide-win32-arm64-msvc4.3.2间接
npm@tailwindcss/oxide-win32-x64-msvc4.3.2间接
npm@tanstack/history1.162.0间接
npm@tanstack/query-core5.101.0间接
npm@tanstack/react-store0.9.3间接
npm@tanstack/router-core1.171.13间接
npm@tanstack/router-generator1.167.17间接
npm@tanstack/router-plugin1.168.18间接
npm@tanstack/router-plugin^1.168.18间接
npm@tanstack/router-utils1.162.2间接
npm@tanstack/store0.9.3间接
npm@tanstack/virtual-file-routes1.162.0间接
npm@testing-library/dom10.4.1间接
npm@testing-library/react16.3.2间接
npm@testing-library/react^16.3.2间接
npm@tiptap/extension-blockquote3.26.0间接
npm@tiptap/extension-bold3.26.0间接
npm@tiptap/extension-bubble-menu3.26.0间接
npm@tiptap/extension-bullet-list3.26.0间接
npm@tiptap/extension-code3.26.0间接
npm@tiptap/extension-code-block3.26.0间接
npm@tiptap/extension-document3.26.0间接
npm@tiptap/extension-dropcursor3.26.0间接
npm@tiptap/extension-floating-menu3.26.0间接
npm@tiptap/extension-gapcursor3.26.0间接
npm@tiptap/extension-hard-break3.26.0间接
npm@tiptap/extension-heading3.26.0间接
npm@tiptap/extension-horizontal-rule3.26.0间接
npm@tiptap/extension-italic3.26.0间接
npm@tiptap/extension-link3.26.0间接
npm@tiptap/extension-list3.26.0间接
npm@tiptap/extension-list-item3.26.0间接
npm@tiptap/extension-list-keymap3.26.0间接
npm@tiptap/extension-ordered-list3.26.0间接
npm@tiptap/extension-paragraph3.26.0间接
npm@tiptap/extension-strike3.26.0间接
npm@tiptap/extension-text3.26.0间接
npm@tiptap/extension-text-style3.27.3间接
npm@tiptap/extension-underline3.26.0间接
npm@tiptap/extensions3.26.0间接
npm@turbo/darwin-642.9.16间接
npm@turbo/darwin-arm642.9.16间接
npm@turbo/linux-642.9.16间接
npm@turbo/linux-arm642.9.16间接
npm@turbo/windows-642.9.16间接
npm@turbo/windows-arm642.9.16间接
npm@tybys/wasm-util0.10.2间接
npm@types/aria-query5.0.4间接
npm@types/better-sqlite37.6.13间接
npm@types/braces3.0.5间接
npm@types/chai5.2.3间接
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.4间接
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.13间接
npm@types/deep-eql4.0.2间接
npm@types/estree1.0.9间接
npm@types/estree-jsx1.0.5间接
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.14间接
npm@types/micromatch4.0.10间接
npm@types/ms2.1.0间接
npm@types/nlcst2.0.3间接
npm@types/node24.13.1间接
npm@types/node25.9.2间接
npm@types/react19.2.17间接
npm@types/react^19.2.17间接
npm@types/react-dom19.2.3间接
npm@types/react-dom^19.2.3间接
npm@types/sax1.2.7间接
npm@types/trusted-types2.0.7间接
npm@types/turndown5.0.6间接
npm@types/turndown^5.0.6间接
npm@types/unist2.0.11间接
npm@types/unist3.0.3间接
npm@types/use-sync-external-store0.0.6间接
npm@types/ws8.18.1间接
npm@typescript-eslint/eslint-plugin8.60.1间接
npm@typescript-eslint/parser8.60.1间接
npm@typescript-eslint/project-service8.60.1间接
npm@typescript-eslint/scope-manager8.60.1间接
npm@typescript-eslint/tsconfig-utils8.60.1间接
npm@typescript-eslint/type-utils8.60.1间接
npm@typescript-eslint/types8.60.1间接
npm@typescript-eslint/typescript-estree8.60.1间接
npm@typescript-eslint/utils8.60.1间接
npm@typescript-eslint/visitor-keys8.60.1间接
npm@ungap/structured-clone1.3.1间接
npm@upsetjs/venn.js2.0.0间接
npm@vitejs/plugin-react6.0.2间接
npm@vitejs/plugin-react^6.0.2间接
npm@vitest/expect3.2.6间接
npm@vitest/mocker3.2.6间接
npm@vitest/pretty-format3.2.6间接
npm@vitest/runner3.2.6间接
npm@vitest/snapshot3.2.6间接
npm@vitest/spy3.2.6间接
npm@vitest/utils3.2.6间接
npm@xyflow/system0.0.77间接
npmaccepts2.0.0间接
npmacorn8.16.0间接
npmacorn-jsx5.3.2间接
npmajv6.15.0间接
npmajv8.20.0间接
npmajv-formats3.0.1间接
npmansi-regex5.0.1间接
npmansi-styles4.3.0间接
npmansi-styles5.2.0间接
npmansis4.3.1间接
npmanymatch3.1.3间接
npmarg5.0.2间接
npmargparse2.0.1间接
npmaria-hidden1.2.6间接
npmaria-query5.3.0间接
npmaria-query5.3.2间接
npmarray-iterate2.0.1间接
npmassertion-error2.0.1间接
npmastring1.9.0间接
npmastro6.4.4间接
npmastro^6.4.4间接
npmastro-expressive-code0.42.0间接
npmaxobject-query4.1.0间接
npmbabel-dead-code-elimination1.0.12间接
npmbail2.0.2间接
npmbalanced-match1.0.2间接
npmbalanced-match4.0.4间接
npmbase64-js1.5.1间接
npmbaseline-browser-mapping2.10.34间接
npmbcp-472.1.0间接
npmbcp-47-match2.0.3间接
npmbetter-call1.3.7间接
npmbetter-sqlite312.10.0间接
npmbidi-js1.0.3间接
npmbindings1.5.0间接
npmbl4.1.0间接
npmbody-parser2.2.2间接
npmboolbase1.0.0间接
npmbrace-expansion1.1.15间接
npmbrace-expansion5.0.6间接
npmbraces3.0.3间接
npmbrowserslist4.28.2间接
npmbuffer5.7.1间接
npmbuffer-from1.1.2间接
npmbytes3.1.2间接
npmcac6.7.14间接
npmcall-bind-apply-helpers1.0.2间接
npmcall-bound1.0.4间接
npmcallsites3.1.0间接
npmcaniuse-lite1.0.30001797间接
npmccount2.0.1间接
npmchai5.3.3间接
npmchalk4.1.2间接
npmcharacter-entities2.0.2间接
npmcharacter-entities-html42.1.0间接
npmcharacter-entities-legacy3.0.0间接
npmcharacter-reference-invalid2.0.1间接
npmcheck-error2.1.3间接
npmchokidar5.0.0间接
npmchownr1.1.4间接
npmci-info4.4.0间接
npmclasscat5.0.5间接
npmcollapse-white-space2.1.0间接
npmcolor-convert2.0.1间接
npmcolor-name1.1.4间接
npmcomma-separated-tokens2.0.3间接
npmcommander11.1.0间接
npmcommander7.2.0间接
npmcommander8.3.0间接
npmcommon-ancestor-path2.0.0间接
npmconcat-map0.0.1间接
npmcontent-disposition1.1.0间接
npmcontent-type1.0.5间接
npmcontent-type2.0.0间接
npmconvert-source-map2.0.0间接
npmcookie0.7.2间接
npmcookie1.1.1间接
npmcookie-es1.2.3间接
npmcookie-es3.1.1间接
npmcookie-signature1.2.2间接
npmcors2.8.6间接
npmcose-base1.0.3间接
npmcose-base2.2.0间接
npmcross-spawn7.0.6间接
npmcrossws0.3.5间接
npmcss-select5.2.2间接
npmcss-selector-parser3.3.0间接
npmcss-tree2.2.1间接
npmcss-tree3.2.1间接
npmcss-what6.2.2间接
npmcssesc3.0.0间接
npmcsso5.0.5间接
npmcsstype3.2.3间接
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间接
npmdata-uri-to-buffer4.0.1间接
npmdata-urls7.0.0间接
npmdayjs1.11.21间接
npmdebug4.4.3间接
npmdecimal.js10.6.0间接
npmdecode-named-character-reference1.3.0间接
npmdecompress-response6.0.0间接
npmdeep-eql5.0.2间接
npmdeep-extend0.6.0间接
npmdeep-is0.1.4间接
npmdefu6.1.7间接
npmdelaunator5.1.0间接
npmdepd2.0.0间接
npmdequal2.0.3间接
npmdestr2.0.5间接
npmdetect-libc2.0.2间接
npmdetect-libc2.1.2间接
npmdetect-node-es1.1.0间接
npmdevalue5.8.1间接
npmdevlop1.1.0间接
npmdiff8.0.4间接
npmdirection2.0.1间接
npmdom-accessibility-api0.5.16间接
npmdom-serializer2.0.0间接
npmdomelementtype2.3.0间接
npmdomhandler5.0.3间接
npmdompurify3.4.8间接
npmdomutils3.2.2间接
npmdrizzle-kit0.31.10间接
npmdrizzle-kit^0.31.10间接
npmdset3.1.4间接
npmdunder-proto1.0.1间接
npmee-first1.1.1间接
npmelectron-to-chromium1.5.368间接
npmencodeurl2.0.0间接
npmend-of-stream1.4.5间接
npmenhanced-resolve5.21.6间接
npmentities4.5.0间接
npmentities6.0.1间接
npmentities8.0.0间接
npmes-define-property1.0.1间接
npmes-errors1.3.0间接
npmes-module-lexer1.7.0间接
npmes-module-lexer2.1.0间接
npmes-object-atoms1.1.2间接
npmes-toolkit1.49.0间接
npmesast-util-from-estree2.0.0间接
npmesast-util-from-js2.0.1间接
npmesbuild0.18.20间接
npmesbuild0.25.12间接
npmesbuild0.27.7间接
npmesbuild0.28.0间接
npmescalade3.2.0间接
npmescape-html1.0.3间接
npmescape-string-regexp4.0.0间接
npmescape-string-regexp5.0.0间接
npmeslint9.39.4间接
npmeslint-scope8.4.0间接
npmeslint-visitor-keys3.4.3间接
npmeslint-visitor-keys4.2.1间接
npmeslint-visitor-keys5.0.1间接
npmespree10.4.0间接
npmesquery1.7.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间接
npmetag1.8.1间接
npmeventemitter35.0.4间接
npmeventsource3.0.7间接
npmeventsource-parser3.1.0间接
npmexpand-template2.0.3间接
npmexpect-type1.3.0间接
npmexpress5.2.1间接
npmexpress-rate-limit8.5.2间接
npmexpressive-code0.42.0间接
npmextend3.0.2间接
npmfast-deep-equal3.1.3间接
npmfast-equals5.4.0间接
npmfast-json-stable-stringify2.1.0间接
npmfast-levenshtein2.0.6间接
npmfast-string-truncated-width3.0.3间接
npmfast-string-width3.0.2间接
npmfast-uri3.1.2间接
npmfast-wrap-ansi0.2.2间接
npmfdir6.5.0间接
npmfetch-blob3.2.0间接
npmfile-entry-cache8.0.0间接
npmfile-uri-to-path1.0.0间接
npmfill-range7.1.1间接
npmfinalhandler2.1.1间接
npmfind-up5.0.0间接
npmflat-cache4.0.1间接
npmflatted3.4.2间接
npmflattie1.1.1间接
npmfontace0.4.1间接
npmfontkitten1.0.3间接
npmformdata-polyfill4.0.10间接
npmforwarded0.2.0间接
npmfresh2.0.0间接
npmfs-constants1.0.0间接
npmfsevents2.3.3间接
npmfunction-bind1.1.2间接
npmgensync1.0.0-beta.2间接
npmget-intrinsic1.3.0间接
npmget-nonce1.0.1间接
npmget-proto1.0.1间接
npmget-tsconfig4.14.0间接
npmget-tsconfig5.0.0-beta.4间接
npmgithub-from-package0.0.0间接
npmgithub-slugger2.0.0间接
npmglob-parent6.0.2间接
npmglobals14.0.0间接
npmgopd1.2.0间接
npmgraceful-fs4.2.11间接
npmh31.15.11间接
npmhachure-fill0.5.2间接
npmhas-flag4.0.0间接
npmhas-symbols1.1.0间接
npmhasown2.0.4间接
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-mdast10.1.2间接
npmhast-util-to-parse58.0.1间接
npmhast-util-to-string3.0.1间接
npmhast-util-to-text4.0.2间接
npmhast-util-whitespace3.0.0间接
npmhastscript9.0.1间接
npmhtml-encoding-sniffer6.0.0间接
npmhtml-escaper3.0.3间接
npmhtml-void-elements3.0.0间接
npmhtml-whitespace-sensitive-tag-names3.0.1间接
npmhttp-cache-semantics4.2.0间接
npmhttp-errors2.0.1间接
npmi18next26.3.1间接
npmiconv-lite0.6.3间接
npmiconv-lite0.7.2间接
npmieee7541.2.1间接
npmignore5.3.2间接
npmignore7.0.5间接
npmimport-fresh3.3.1间接
npmimport-meta-resolve4.2.0间接
npmimurmurhash0.1.4间接
npminherits2.0.4间接
npmini1.3.8间接
npminline-style-parser0.2.7间接
npminternmap1.0.1间接
npminternmap2.0.3间接
npmip-address10.2.0间接
npmipaddr.js1.9.1间接
npmiron-webcrypto1.2.1间接
npmis-alphabetical2.0.1间接
npmis-alphanumerical2.0.1间接
npmis-decimal2.0.1间接
npmis-docker3.0.0间接
npmis-docker4.0.0间接
npmis-extglob2.1.1间接
npmis-glob4.0.3间接
npmis-hexadecimal2.0.1间接
npmis-inside-container1.0.0间接
npmis-number7.0.0间接
npmis-plain-obj4.1.0间接
npmis-potential-custom-element-name1.0.1间接
npmis-promise4.0.0间接
npmis-wsl3.1.1间接
npmisbot5.1.41间接
npmisexe2.0.0间接
npmjiti2.7.0间接
npmjose6.2.3间接
npmjs-base643.7.8间接
npmjs-tokens4.0.0间接
npmjs-tokens9.0.1间接
npmjs-yaml4.2.0间接
npmjsdom29.1.1间接
npmjsdom^29.1.1间接
npmjsesc3.1.0间接
npmjson-buffer3.0.1间接
npmjson-schema-traverse0.4.1间接
npmjson-schema-traverse1.0.0间接
npmjson-schema-typed8.0.2间接
npmjson-stable-stringify-without-jsonify1.0.1间接
npmjson52.2.3间接
npmjsonc-parser3.3.1间接
npmkatex0.16.47间接
npmkeyv4.5.4间接
npmkhroma2.1.0间接
npmklona2.0.6间接
npmkysely0.29.3间接
npmlayout-base1.0.2间接
npmlayout-base2.0.1间接
npmlevn0.4.1间接
npmlibsql0.5.29间接
npmlightningcss1.32.0间接
npmlightningcss-android-arm641.32.0间接
npmlightningcss-darwin-arm641.32.0间接
npmlightningcss-darwin-x641.32.0间接
npmlightningcss-freebsd-x641.32.0间接
npmlightningcss-linux-arm-gnueabihf1.32.0间接
npmlightningcss-linux-arm64-gnu1.32.0间接
npmlightningcss-linux-arm64-musl1.32.0间接
npmlightningcss-linux-x64-gnu1.32.0间接
npmlightningcss-linux-x64-musl1.32.0间接
npmlightningcss-win32-arm64-msvc1.32.0间接
npmlightningcss-win32-x64-msvc1.32.0间接
npmlinkifyjs4.3.3间接
npmlocate-path6.0.0间接
npmlodash-es4.18.1间接
npmlodash.merge4.6.2间接
npmlongest-streak3.1.0间接
npmloupe3.2.1间接
npmlru-cache11.5.1间接
npmlru-cache5.1.1间接
npmlz-string1.5.0间接
npmmagic-string0.30.21间接
npmmagicast0.5.3间接
npmmarkdown-extensions2.0.0间接
npmmarkdown-table3.0.4间接
npmmath-intrinsics1.1.0间接
npmmdast-util-definitions6.0.0间接
npmmdast-util-directive3.1.0间接
npmmdast-util-find-and-replace3.0.2间接
npmmdast-util-from-markdown2.0.3间接
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.1间接
npmmdast-util-to-markdown2.1.2间接
npmmdast-util-to-string4.0.0间接
npmmdn-data2.0.28间接
npmmdn-data2.27.1间接
npmmedia-typer1.1.0间接
npmmerge-descriptors2.0.0间接
npmmicromark4.0.2间接
npmmicromark-core-commonmark2.0.3间接
npmmicromark-extension-directive4.0.0间接
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间接
npmmime-db1.54.0间接
npmmime-types3.0.2间接
npmmimic-response3.1.0间接
npmminimatch10.2.5间接
npmminimatch3.1.5间接
npmminimist1.2.8间接
npmmkdirp-classic0.5.3间接
npmmrmime2.0.1间接
npmms2.1.3间接
npmnanoid3.3.12间接
npmnanostores1.4.0间接
npmnapi-build-utils2.0.0间接
npmnatural-compare1.4.0间接
npmnegotiator1.0.0间接
npmneotraverse0.6.18间接
npmnlcst-to-string4.0.0间接
npmnode-abi3.92.0间接
npmnode-domexception1.0.0间接
npmnode-fetch3.3.2间接
npmnode-fetch-native1.6.7间接
npmnode-mock-http1.0.4间接
npmnode-releases2.0.47间接
npmnormalize-path3.0.0间接
npmnth-check2.1.1间接
npmobject-assign4.1.1间接
npmobject-inspect1.13.4间接
npmobug2.1.2间接
npmofetch1.5.1间接
npmohash2.0.11间接
npmon-finished2.4.1间接
npmonce1.4.0间接
npmoniguruma-parser0.12.2间接
npmoniguruma-to-es4.3.6间接
npmoptionator0.9.4间接
npmorderedmap2.1.1间接
npmp-limit3.1.0间接
npmp-limit7.3.0间接
npmp-locate5.0.0间接
npmp-queue9.3.0间接
npmp-timeout7.0.1间接
npmpackage-manager-detector1.6.0间接
npmpagefind1.5.2间接
npmparent-module1.0.1间接
npmparse-entities4.0.2间接
npmparse-latin7.0.0间接
npmparse57.3.0间接
npmparse58.0.1间接
npmparseurl1.3.3间接
npmpath-data-parser0.1.0间接
npmpath-exists4.0.0间接
npmpath-key3.1.1间接
npmpath-to-regexp8.4.2间接
npmpathe2.0.3间接
npmpathval2.0.1间接
npmpiccolore0.1.3间接
npmpicocolors1.1.1间接
npmpicomatch2.3.2间接
npmpicomatch4.0.4间接
npmpkce-challenge5.0.1间接
npmpoints-on-curve0.2.0间接
npmpoints-on-path0.2.1间接
npmpostcss8.5.15间接
npmpostcss-nested6.2.0间接
npmpostcss-selector-parser6.1.2间接
npmprebuild-install7.1.3间接
npmprelude-ls1.2.1间接
npmprettier3.8.3间接
npmpretty-format27.5.1间接
npmprismjs1.30.0间接
npmpromise-limit2.7.0间接
npmproperty-information7.2.0间接
npmprosemirror-changeset2.4.1间接
npmprosemirror-commands1.7.1间接
npmprosemirror-dropcursor1.8.2间接
npmprosemirror-gapcursor1.4.1间接
npmprosemirror-history1.5.0间接
npmprosemirror-inputrules1.5.1间接
npmprosemirror-keymap1.2.3间接
npmprosemirror-model1.25.7间接
npmprosemirror-schema-list1.5.1间接
npmprosemirror-state1.4.4间接
npmprosemirror-tables1.8.5间接
npmprosemirror-transform1.12.0间接
npmprosemirror-view1.41.8间接
npmproxy-addr2.0.7间接
npmpump3.0.4间接
npmpunycode2.3.1间接
npmqs6.15.2间接
npmradix31.1.2间接
npmrange-parser1.2.1间接
npmraw-body3.0.2间接
npmrc1.2.8间接
npmreact-is17.0.2间接
npmreact-remove-scroll2.7.2间接
npmreact-remove-scroll-bar2.3.8间接
npmreact-style-singleton2.2.3间接
npmreadable-stream3.6.2间接
npmreaddirp5.0.0间接
npmrecma-build-jsx1.0.0间接
npmrecma-jsx1.0.1间接
npmrecma-parse1.0.0间接
npmrecma-stringify1.0.0间接
npmregex6.1.0间接
npmregex-recursion6.0.2间接
npmregex-utilities2.3.0间接
npmrehype13.0.2间接
npmrehype-expressive-code0.42.0间接
npmrehype-format5.0.1间接
npmrehype-minify-whitespace6.0.2间接
npmrehype-parse9.0.1间接
npmrehype-raw7.0.0间接
npmrehype-recma1.0.0间接
npmrehype-remark10.0.1间接
npmrehype-stringify10.0.1间接
npmremark-directive4.0.0间接
npmremark-gfm4.0.1间接
npmremark-mdx3.1.1间接
npmremark-parse11.0.0间接
npmremark-rehype11.1.2间接
npmremark-smartypants3.0.2间接
npmremark-stringify11.0.0间接
npmrequire-from-string2.0.2间接
npmresolve-from4.0.0间接
npmresolve-pkg-maps1.0.0间接
npmretext9.0.0间接
npmretext-latin4.0.0间接
npmretext-smartypants6.2.0间接
npmretext-stringify4.0.0间接
npmrobust-predicates3.0.3间接
npmrolldown1.0.3间接
npmrollup4.61.1间接
npmrope-sequence1.3.4间接
npmrou30.7.12间接
npmroughjs4.6.6间接
npmrouter2.2.0间接
npmrw1.3.3间接
npmsafe-buffer5.2.1间接
npmsafer-buffer2.1.2间接
npmsax1.6.0间接
npmsaxes6.0.0间接
npmscheduler0.27.0间接
npmsemver6.3.1间接
npmsemver7.8.2间接
npmsend1.2.1间接
npmseroval1.5.4间接
npmseroval-plugins1.5.4间接
npmserve-static2.2.1间接
npmset-cookie-parser3.1.2间接
npmsetprototypeof1.2.0间接
npmsharp0.34.5间接
npmsharp^0.34.5间接
npmshebang-command2.0.0间接
npmshebang-regex3.0.0间接
npmside-channel1.1.0间接
npmside-channel-list1.0.1间接
npmside-channel-map1.0.1间接
npmside-channel-weakmap1.0.2间接
npmsiginfo2.0.0间接
npmsimple-concat1.0.1间接
npmsimple-get4.0.1间接
npmsisteransi1.0.5间接
npmsitemap9.0.1间接
npmsmol-toml1.6.1间接
npmsource-map0.6.1间接
npmsource-map0.7.6间接
npmsource-map-js1.2.1间接
npmsource-map-support0.5.21间接
npmspace-separated-tokens2.0.2间接
npmstackback0.0.2间接
npmstarlight-llms-txt0.10.0间接
npmstatuses2.0.2间接
npmstd-env3.10.0间接
npmstream-replace-string2.0.0间接
npmstring_decoder1.3.0间接
npmstringify-entities4.0.4间接
npmstrip-json-comments2.0.1间接
npmstrip-json-comments3.1.1间接
npmstrip-literal3.1.0间接
npmstyle-to-js1.1.21间接
npmstyle-to-object1.0.14间接
npmstylis4.4.0间接
npmsupports-color7.2.0间接
npmsvgo4.0.1间接
npmsymbol-tree3.2.4间接
npmtapable2.3.3间接
npmtar-fs2.1.4间接
npmtar-stream2.2.0间接
npmtiny-inflate1.0.3间接
npmtinybench2.9.0间接
npmtinyclip0.1.14间接
npmtinyexec0.3.2间接
npmtinyexec1.2.4间接
npmtinyglobby0.2.17间接
npmtinypool1.1.1间接
npmtinyrainbow2.0.0间接
npmtinyspy4.0.4间接
npmtldts7.4.2间接
npmtldts-core7.4.2间接
npmto-regex-range5.0.1间接
npmtoidentifier1.0.1间接
npmtough-cookie6.0.1间接
npmtr466.0.0间接
npmtrim-lines3.0.1间接
npmtrim-trailing-lines2.1.0间接
npmtrough2.2.0间接
npmts-api-utils2.5.0间接
npmts-dedent2.3.0间接
npmtslib2.8.1间接
npmtsx4.22.4间接
npmtunnel-agent0.6.0间接
npmturbo2.9.16间接
npmtype-check0.4.0间接
npmtype-is2.1.0间接
npmtypescript6.0.3间接
npmtypescript^6.0.3间接
npmtypescript-eslint8.60.1间接
npmufo1.6.4间接
npmultrahtml1.6.0间接
npmuncrypto0.1.3间接
npmundici7.27.2间接
npmundici-types7.18.2间接
npmundici-types7.24.6间接
npmunified11.0.5间接
npmunifont0.7.4间接
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.1.0间接
npmunist-util-visit-children3.0.0间接
npmunist-util-visit-parents6.0.2间接
npmunpipe1.0.0间接
npmunplugin3.0.0间接
npmunstorage1.17.5间接
npmupdate-browserslist-db1.2.3间接
npmuri-js4.4.1间接
npmuse-callback-ref1.3.3间接
npmuse-sidecar1.1.3间接
npmuse-sync-external-store1.6.0间接
npmutil-deprecate1.0.2间接
npmuuid14.0.1间接
npmvary1.1.2间接
npmvfile6.0.3间接
npmvfile-location5.0.3间接
npmvfile-message4.0.3间接
npmvite7.3.5间接
npmvite8.0.16间接
npmvite^8.0.16间接
npmvite-node3.2.4间接
npmvitefu1.1.3间接
npmvitest3.2.6间接
npmvitest^3.2.6间接
npmw3c-keyname2.2.8间接
npmw3c-xmlserializer5.0.0间接
npmweb-namespaces2.0.1间接
npmweb-streams-polyfill3.3.3间接
npmwebidl-conversions8.0.1间接
npmwebpack-virtual-modules0.6.2间接
npmwhatwg-mimetype5.0.0间接
npmwhatwg-url16.0.1间接
npmwhich2.0.2间接
npmwhich-pm-runs1.1.0间接
npmwhy-is-node-running2.3.0间接
npmword-wrap1.2.5间接
npmwrappy1.0.2间接
npmws8.21.0间接
npmxml-name-validator5.0.0间接
npmxmlchars2.2.0间接
npmxxhash-wasm1.1.0间接
npmyallist3.1.1间接
npmyargs-parser22.0.0间接
npmyocto-queue0.1.0间接
npmyocto-queue1.2.2间接
npmzod-to-json-schema3.25.2间接
npmzustand4.5.7间接
npmzwitch2.0.4间接
依赖安全公告 16

该仓库未发布可被索引解析的包,因此评估的是其自身的依赖图——共 1,250 个包,其中也包含从不交付的开发与测试版本固定:16 个存在已知公告,3 个为直接依赖。 有 56 个无法评估——没有已解析的版本、生态系统不受支持,或不在所列包清单之内。

软件包版本关系严重程度公告数修复版本
hono4.12.23直接84.12.27
astro6.4.4间接57.1.0
brace-expansion1.1.15间接15.0.7
brace-expansion5.0.6间接15.0.7
fast-uri3.1.2间接24.1.1
js-yaml4.2.0间接14.3.0
sharp0.34.5间接10.35.0
svgo4.0.1间接14.0.2
undici7.27.2间接78.5.0
@hono/node-server1.19.14直接12.0.5
@hono/node-server2.0.4直接22.0.10
esbuild0.18.20间接10.25.0
body-parser2.2.2间接12.3.0
dompurify3.4.8间接33.4.12
esbuild0.27.7间接10.28.1
esbuild0.28.0间接10.28.1

公告表示依赖图中记录的版本落入某条公告的受影响范围。可达性未经分析,且依赖图包含开发与测试的版本固定——某项发现可能只涉及工具链而非交付的软件。

原始 JSON 报告 机器可读
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 3118,
      "has_wiki": false,
      "homepage": "https://plandesk-docs.pages.dev",
      "languages": {
        "CSS": 21330,
        "HTML": 110396,
        "Astro": 22046,
        "Shell": 4811,
        "Dockerfile": 1830,
        "JavaScript": 22167,
        "TypeScript": 2600432
      },
      "pushed_at": "2026-07-18T19:45:45Z",
      "created_at": "2026-06-07T20:15:49Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-20T04:50:52Z",
      "description": "Local-first, self-hostable planning workspace — canvas + docs-on-nodes + tasks + board + MCP for product teams and agent workflows.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript"
      ]
    },
    "owner": {
      "blog": null,
      "name": "Asyncdot Engineering",
      "type": "Organization",
      "login": "asyncdotengineering",
      "company": null,
      "location": null,
      "followers": 0,
      "avatar_url": "https://avatars.githubusercontent.com/u/130723569?v=4",
      "created_at": "2023-04-14T02:52:53Z",
      "is_verified": null,
      "public_repos": 9,
      "account_age_days": 1197
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2026-06-07T19:45:55Z"
        },
        {
          "tag": "v0.20.0",
          "kind": "minor",
          "published_at": "2026-07-12T12:04:14Z"
        },
        {
          "tag": "v0.19.0",
          "kind": "minor",
          "published_at": "2026-07-12T11:27:35Z"
        },
        {
          "tag": "v0.18.0",
          "kind": "minor",
          "published_at": "2026-07-12T10:32:22Z"
        },
        {
          "tag": "v0.17.0",
          "kind": "minor",
          "published_at": "2026-07-12T09:07:26Z"
        },
        {
          "tag": "v0.16.0",
          "kind": "minor",
          "published_at": "2026-07-12T06:58:44Z"
        },
        {
          "tag": "v0.15.0",
          "kind": "minor",
          "published_at": "2026-07-12T06:25:14Z"
        },
        {
          "tag": "v0.14.0",
          "kind": "minor",
          "published_at": "2026-07-11T20:23:37Z"
        },
        {
          "tag": "v0.13.2",
          "kind": "patch",
          "published_at": "2026-07-06T16:50:33Z"
        },
        {
          "tag": "v0.13.1",
          "kind": "patch",
          "published_at": "2026-07-06T16:17:57Z"
        },
        {
          "tag": "v0.13.0",
          "kind": "minor",
          "published_at": "2026-07-06T14:28:00Z"
        },
        {
          "tag": "v0.12.0",
          "kind": "minor",
          "published_at": "2026-07-06T07:49:11Z"
        },
        {
          "tag": "v0.9.1",
          "kind": "patch",
          "published_at": "2026-07-03T08:01:06Z"
        },
        {
          "tag": "v0.9.0",
          "kind": "minor",
          "published_at": "2026-07-03T07:37:21Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "9a679547cfa1630dd96e7879d9258aa8e4e7daad",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "release: api + cli 1.0.3 — loopback active-workspace default fix",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T19:44:57Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "86257b4ab055ac2e6c0de6691433b2f472ff35bc",
          "body": "…empty General\n\nA local (loopback) board opened on the default 'General' workspace even when the\nreal projects were imported into another workspace (legacy-upgrade --into-workspace),\nso the dashboard showed no projects. The loopback session now picks the first\nworkspace that actually has projects (falls back to the first workspace).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "fix(web): loopback active workspace defaults to a populated one, not …",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T19:44:57Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f0194031b62d98740d15fef444764e3e40b5c832",
          "body": "…project switchers\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "release: api + cli 1.0.2 — backfill-preserve fix + sidebar workspace/…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T19:35:11Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1578196f43843bc20e199d7e5ff43c596d2d7dc2",
          "body": "…her [ws-ux]\n\nFrom live 1.0 use — workspace switching was hidden in the top account menu, create\nwas buried in Settings, no project switcher.\n\n- WorkspaceSwitcher: active workspace + dropdown to switch (setActiveWorkspace,\n  invalidates projects); inline \"+ New workspace\" dialog (createWorkspace),\n \n[…]\nojectSwitcher.test\n\nGate: build 0, plandesk-web 168 tests.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "feat(web): sidebar workspace switcher + inline create + project switc…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T19:34:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c7227ee1e6c446ca896a033b0f3e119f02311e90",
          "body": "…workspace assignments [backfill-preserve]\n\nFound via a local 1.0 preview: backfillProjectWorkspaces (runs on every serve\nboot + on migrate) reset EVERY project's workspace_id to the org default team if\nit differed — so it silently undid legacy-upgrade --into-workspace, move-project,\nand go-online o\n[…]\n project in a real\nnon-default team survives the backfill.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "fix(security/data): backfillProjectWorkspaces must not clobber valid …",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T19:15:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8acbbbdc72279eb0dbeb3a70399218cf451128c6",
          "body": "…ackfill]\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "release(cli): 1.0.1 — migrate runs the workspace backfills [migrate-b…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T18:59:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9c22a1a761bfb5de5e6df01b6d3454308754ce32",
          "body": "…igrate-backfill]\n\n`plandesk migrate` ran the drizzle + better-auth migrations but not the workspace\nbackfills, so upgrading a hosted board with existing projects left every project\npointed at the local placeholder workspace_id (a team that doesn't exist there)\nand created no default teams. Now runs\n[…]\n while migrating the hosted Turso db for the 1.0 redeploy.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "fix(cli): migrate runs the workspace backfills for hosted upgrades [m…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T18:55:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "69f2ec61131fc34e040b7fd238eb16dfb16f3a78",
          "body": "- reference/workspaces.md (new): the Org → Workspace → Project model (workspace =\n  better-auth team), why (agent isolation, multi-project folders, member scoping),\n  the owner/workspace/project auth tiers, and the no-existence-leak scoping\n  guarantee; added to the sidebar\n- reference/architecture.\n[…]\nbroken links). Gate: pnpm --filter @plandesk/docs build 0.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "docs(workspace): document the workspace tier for 1.0 [ws-docs]",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T18:46:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "af940c1a429f160afe1277dccd0f73d01f21186d",
          "body": "…ed org [ws-goonline]\n\nThe offline→online migration (inverse of legacy-upgrade). Take the local global\nboard's workspaces + projects and push them UP to a registered hosted org, all or\nselected. Pure CLI orchestration — no new API endpoints.\n\n- plandesk go-online [--to <org>] [--server <url>] [--tok\n[…]\nr decision.\nGate: build 0, pnpm test 0 (cli 259, api 502).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "feat(cli): go-online — push local workspaces (all/selected) to a host…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T18:35:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bce9b475a0e7934584f90555b26227e3dc2e5669",
          "body": "…latest [ws-port-ga]\n\nGA code cut (publish + deploy are done separately, on human go). Workspace tier is\nfunctionally + security complete.\n\n- default port 3847 -> 7526 everywhere (args.ts DEFAULT_PORT, mcp-client DEFAULT_URL,\n  web vite proxy, ~all cli tests + ~30 doc refs); mcporter.md auto-rotate \n[…]\n build 0, pnpm test 0 (api 502, cli 254, mcp 53, web, db).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "release(1.0.0): default port 7526 + version bump + CHANGELOG + docs @…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T18:21:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9da0fb52c5aa715ba8f9140cda82ff1b11463e9e",
          "body": "…-audit-dry]\n\nFourth independent codex audit came back DRY — no new isolation bypasses across a\nfull 44-tool MCP sweep (workspace-A key vs workspace B AND org-A owner vs org B),\nevery guest/portal surface, foreign-id references, with before/after mutation\nsnapshots. The loop-until-dry sequence: 11 -\n[…]\n4 rounds, all green. Gate: build 0, pnpm test 0 (api 502).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "test(security): round-4 audit DRY + regression assets + build fix [ws…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T18:10:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f76620d840d947916cd1e4ec5fc29a8709d0f555",
          "body": "…sofix3]\n\nThird codex audit found leaks in surfaces rounds 1-2 didn't probe (project-scoped\nkeys, the MCP tool surface). All fixed; workspace-isolation-audit3.test.ts (11)\n+ audit (11) + audit2 (13) all pass — 35 adversarial isolation tests green.\n\nSystemic: MCP tools call service methods in-process\n[…]\n, pnpm test 0 (api 496, db 123, web 161, cli 254, mcp 53).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "fix(security): close round-3 leaks + gate the MCP service layer [ws-i…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T17:47:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "20812af005e1afff400969f8100e35123d3a6c40",
          "body": "Second independent codex audit found 4 more bypasses (9/13 vectors were already\nsafe). All fixed; workspace-isolation-audit2.test.ts (13) + round-1 audit (11) pass.\n\n- artifact comments: ids are file paths, not globally unique — new\n  listCommentsByTargetInProject scopes by projectId so a query on p\n[…]\nes. Gate: build 0, pnpm test 0 (api 485, db 123, web 161).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "fix(security): close 4 round-2 audit isolation leaks [ws-isofix2]",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T17:03:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "59a46354c59cbdc52fa2b1bfc6e5bbaf0285984e",
          "body": "…rial audit [ws-isofix]\n\nAn independent codex audit (different model family) found 11 confirmed bypasses\nthe by-id fix missed. All now closed; codex's 11 failing tests\n(workspace-isolation-audit.test.ts) pass unchanged.\n\nRouted through the org+project+workspace chokepoint (assertProjectInOrg):\n- com\n[…]\n2 incl. 11 audit tests, db 123, web 161, cli 254, mcp 53).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "fix(security): close 11 workspace/org isolation bypasses from adversa…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T16:37:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d44792a169f94859add85b1cc40f3ebd496bdebe",
          "body": "…-membergate]\n\nGA-blocker found reviewing ws-share: a session (human) org member could reach\nANY org project regardless of workspace membership — for a client-engagement\nproduct that exposes other clients' workspaces to an unassigned member. Only\napikey/loopback contexts were workspace-gated before.\n[…]\nsts before commit.\nGate: build 0, @plandesk/api 461 tests.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "fix(security): gate session members to their workspaces (RFC §12) [ws…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T15:50:48Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "905394d9e44dc91c137475258fcc836fd357f8b2",
          "body": "…kspace) [ws-share]\n\nSlice 11/14 (security-sensitive). Worker: pi z.ai/glm-5.2. A client share can now\nscope to a whole workspace; the portal shows all its projects, read-only.\n\n- schema/migration 0002: shares.workspace_id (nullable) + projectId nullable\n  (table rebuild; guest_sessions FK ordering \n[…]\n, pnpm test 0 (db 123, api 457, web 161, cli 254, mcp 53).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "feat(workspace): workspace-level client sharing (portal shows the wor…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T15:33:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a5ed00970436a453b8d9cf61f3a5d38198caaf4e",
          "body": "…s-invites]\n\nInvitations move from org-level to workspace-level (better-auth team-scoped),\nslice 10 of the workspace-tier epic. Passing teamId through is all that's\nneeded — better-auth validates the team is in the org on create and creates\nboth the org member and the teamMember row on accept.\n\nAPI\n\n[…]\nnly org roster\n- InvitePage shows the workspace name\n- api.ts/queries.ts carry team_id + workspace on preview/accept\n\nBreaking: team_id is required on the invite POST; no org-only invite path remains.",
          "is_bot": false,
          "headline": "feat(workspace): workspace-scoped invitations (invite → join team) [w…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T14:48:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8562c635def4c8198b36c31cc613cf762991c232",
          "body": "…mber mgmt [ws-web]\n\nSlice 9/14. Worker: pi z.ai/glm-5.2 (kimi hit usage limit).\n\nBackend (plandesk-api):\n- serializeProject exposes workspace_id\n- POST /projects + PATCH /projects/:id accept workspace_id; create validates the\n  target team is in the caller's org (WorkspaceNotFoundError -> 404)\n- mo\n[…]\n build 0, pnpm test 0 (api 453, web 158, cli 254, mcp 53).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "feat(workspace): dashboard workspace switcher, CRUD, move project, me…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T14:23:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4873e12897b59852cf1dc9e3d4b8e412acfeefb0",
          "body": "…space [ws-mcp]\n\nSlice 8/14. Hosted workspace tokens already scope the in-process MCP (slice 3).\nThis closes local loopback: an agent in a workspace-bound folder sees only its\nworkspace's projects on the shared local board.\n\n- auth.ts: the loopback fallback reads an optional x-plandesk-workspace-id \n[…]\nts.\nGate: build 0, @plandesk/api tests pass (incl. 2 new).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "feat(workspace): scope MCP/local project resolution to the bound work…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T13:35:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b153077e01a924fb88918ba96182c2cb2b64e322",
          "body": "… workspace [ws-legacy]\n\nSlice 7/14. Imports an old repo's board into a named workspace (better-auth team)\nso a multi-project folder migrates together.\n\n- args/cli: --into-workspace [name] (value or bare flag)\n- legacy-upgrade: builds better-auth against the global board, resolves-or-creates\n  the t\n[…]\nto the workspace)\n\nGate: build 0, @plandesk/cli 254 tests.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "feat(workspace): legacy-upgrade --into-workspace lands a board in one…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T12:55:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1d710f4a1e755d1f360bc5b68b7a00bcb7a55cad",
          "body": "…ce, config v2) [ws-cli]\n\nSlice 6/14.\n\nAPI (orgs.ts):\n- GET /orgs/:orgId/workspaces (any member) + POST (owner-gated team:create) via\n  new createTeamForOrg helper\n- POST /orgs/:orgId/agent-keys now accepts team_id (XOR project_id); validates\n  the team is in the org then mints a workspace-scoped ke\n[…]\nat\n\nGate: build 0, pnpm test 0 (api 448, cli 249, mcp 53).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "feat(workspace): workspace CLI + REST (create/list, connect --workspa…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T12:49:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f25c5db4a9c5b6181bc23b330d3d8a77cc8385f8",
          "body": "…ctiveTeam [ws-active]\n\nSlice 5/14. Mirrors the active-organization self-heal for teams: on session\ncreate, after the active org is resolved, pick the best team in that org\n(prior session's still-valid activeTeamId, else the org's default team) and\npersist session.activeTeamId.\n\n- identity.ts: setDe\n[…]\np / no active org\n\nGate: build 0, @plandesk/api 440 tests.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "feat(workspace): default active workspace per session via setDefaultA…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T12:34:48Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "53a91b32ba34f75424e1a191752d2142962d7b2d",
          "body": "…dleak]\n\nGA-blocking cross-tenant leak found during ws-scope review: by-id resource\nendpoints fetched by id with no scoping, so an org-B key could read an org-A\ndocument (GET /documents/:id -> 200; must be 404), and a workspace-scoped key\ncould read sibling-workspace resources.\n\nEvery by-id method n\n[…]\noss-workspace=404.\nGate: build 0, @plandesk/api 435 tests.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "fix(security): enforce tenant scope on all by-id resource reads [ws-i…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T12:29:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "45ce3ff89edfa4408b907d8f717e139eeccc6c6d",
          "body": "… enforcement [ws-scope]\n\nSlice 3/14 (SECURITY-CRITICAL). Adds the workspace key tier and enforces it at\nthe project chokepoint and the project list.\n\n- auth-context: apikey ctx gains workspaceId\n- auth.ts: readApiKeyMetadata maps teamId -> workspaceId (exported for tests)\n- scope.ts: assertProjectI\n[…]\n/:id etc.) not covered here — filed as its own GA blocker.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "feat(workspace): workspace-scoped agent keys + project/list workspace…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T12:18:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a276bd16c3863b9d3e12aba6419bdf438621e91d",
          "body": "…ault workspace [ws-projcol]\n\nSlice 2/14. Every project now belongs to exactly one workspace (better-auth team).\n\n- schema: projects.workspace_id text NOT NULL default DEFAULT_WORKSPACE_ID\n  (well-known local workspace id, mirrors DEFAULT_ORG_ID); migration 0001 is a\n  clean single ALTER (no rebuild\n[…]\n pnpm test 0 (api 422, cli 245, mcp 53, web, db all pass).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "feat(workspace): add projects.workspace_id NOT NULL + backfill to def…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T12:08:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a247debed09f60503e6f21a4a16db84d8b8133cd",
          "body": "… [ws-teams]\n\nSlice 1/14 of the workspace tier. Turn on the organization plugin's teams\nfeature (Workspace = a better-auth team) and guarantee a default 'General'\nteam per org, including the direct-adapter org paths that bypass better-auth's\nauto-default-team.\n\n- better-auth.ts: organization({ ..., \n[…]\ntasks).\nGate: pnpm build 0, @plandesk/api test 421 passed.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "feat(workspace): enable better-auth teams + default workspace per org…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T11:34:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a9a335976054d20b401a08b074ea845bed0021ca",
          "body": "- Each package wipes dist/ before tsc so orphaned outputs never ship\n  (earlier @plandesk/api tarballs carried stale compiled events.* from the\n  removed SSE stream).\n- No runtime behavior change; build 0, test 0.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "release: 1.0.0-beta.8 — clean-build hygiene + dead SSE removal",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T09:30:43Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "da1466f6020df5a6e6f0d227d6e4ac3dbac99c87",
          "body": "SSE was replaced by polling; clean up the leftovers:\n- scripts/metrics.mjs: drop the whole SSE-latency path (sseP95Ms target,\n  parseSseEvents/openSseCollector/measureSseLatency, the fixture SSE node, the\n  report rows, the miss + pass-gate checks, the rig note) — it measured the\n  removed /api/v1/e\n[…]\n.\n\nBuild 0, test 0 (unchanged counts). No behavior change.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "chore: remove dead SSE remnants (metrics rig + test stubs)",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T09:27:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "22b31efa26fe4da7ef52267e050662ffce748dbc",
          "body": "Audited every reference doc against current source and fixed the drift:\n\n- Real-time is polling (~2.5s via TanStack Query), not SSE — the SSE stream\n  and /api/v1/events were removed. Fixed architecture, api, cli, collaboration,\n  factory, validation-metrics.\n- Version is 1.0.0-beta.7 on the `beta` \n[…]\n tests are up-only + idempotent; added cmd:lint_typecheck.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "docs(reference): correct stale claims across all reference pages",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T08:15:04Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "725c391c46b83fa5ef59d28856dfc3cde958d3d9",
          "body": "Finishes the web user-flow audit: every one of 134 flows now passes or is\nfixed (plandesk-feature-audit.csv: 64 tested + 70 retested-pass, 0 error).\n\n- Jargon → plain language: lane gate tooltip + selector, short-id tooltip,\n  editable edge-relationship picker (friendly labels), \"Send to planning\",\n\n[…]\n0,\ntest 0 (web 155). No regressions. Bump to 1.0.0-beta.7.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "fix(web): UX audit second pass — clear the remaining 36 (beta.7)",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T07:22:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bdea4582550f5f33cc5f2788cda906ba6d8b92cf",
          "body": "Four-phase audit of every web user flow (134 flows; plandesk-feature-audit.csv,\nAUDIT-SUMMARY.md). Ships the clear-defects batch (34 rows fixed):\n\n- Global MutationCache onError fallback toast → ~20 previously-silent\n  create/rename/delete/status/tag/move/org-switch/logout failures now surface\n  (sk\n[…]\nest 0 (web 152, +3). No regressions. Bump to 1.0.0-beta.6.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "fix(web): UX audit clear-defects batch + GitHub glyph (beta.6)",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T06:48:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "25245bbefff94dceb0c8bc23e55d0d220dfd1f61",
          "body": "Invite links were broken end to end: the claim URL /invite/:id had no page\nand sat inside the auth wall, so a signed-out invitee was bounced to sign-in,\naccept was never called, and the invitation stayed pending forever.\n\n- New /invite/$invitationId claim page (rootless, bypasses AuthGate): previews\n[…]\nign-in heading assertions updated.\n- Bump to 1.0.0-beta.5.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "feat(invite): working invite claim page + branded auth surfaces (beta.5)",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T05:54:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f6b59f9d16ec00f5a65eaa4c7b0dcca3cec34eee",
          "body": "- access-control: admin role gains invitation:[create,cancel] (member\n  management stays owner-only). better-auth still blocks a non-owner\n  inviting an owner (creatorRole guard).\n- invitations route guards invitation:create (was member:create), so\n  owners and admins can invite; members still 403.\n\n[…]\n can invite.\n- Bump to 1.0.0-beta.4; gitignore .wrangler/.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "feat(auth): admins can invite; hide invite card from non-inviters",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T05:22:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "548021afa7440cfd14f9e8e1da9f6101b3dadc70",
          "body": "The SPA is served two ways, neither of which reads _redirects: the Worker\nvia wrangler `not_found_handling=single-page-application`, and `plandesk\nserve` via mountStatic's own index.html fallback. On Workers the\n`/* /index.html 200` rule is fatal — an infinite-loop redirect (code 100324)\nthat broke \n[…]\nlic/ verbatim to dist/) stops it regenerating every build.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "fix(web): remove public/_redirects — dead Cloudflare Pages directive",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T05:08:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7f1b0f183a7d161734cfb844328b42f6491027a2",
          "body": "Production-hardening pass before the production release.\n\n- R2 file storage via the native Workers FILES binding: put persists the\n  files metadata row (uploads no longer fail) and resolve is org-scoped\n  through getFileInOrg (no cross-tenant read by content hash).\n- Dashboard Settings → Members: ow\n[…]\n\n  custom domain; CHANGELOG + CLI/Cloudflare docs updated.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "feat(release): 1.0.0-beta.3 — hosted control-plane hardening",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-18T05:03:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b66da0345e6814e59a71dc528dc1c463f16ca69d",
          "body": "Republish with the three Workers-compat fixes from aba58d9 (lazy\nfileURLToPath, optional storage, SPA _redirects) so the api/db packages\ndeploy to Workers cleanly. beta tag → 1.0.0-beta.2.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "release: v1.0.0-beta.2 — Cloudflare Workers deploy fixes",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-17T20:03:06Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9e242b1bce57a7a8519d832db95fa38d6dc1aa58",
          "body": "…rnings\n\nA running dev-log blog (new Blog sidebar section) documenting the beta launch:\nwhat shipped (better-auth rewrite, hosted control plane, legacy-upgrade), and\nthe three real Cloudflare Workers bugs deploying it surfaced (module-load\nfileURLToPath, hard-required S3, SPA redirect loop) — honest\n[…]\nin, R2, invite UI). To be appended as the beta\nproves out.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "docs(blog): add launch log — 1.0.0-beta.1 + the Cloudflare deploy lea…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-17T20:01:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "aba58d981807cda65ba9635f40e4b7d0bcfeb9c4",
          "body": "Three module-load bugs that broke the Workers bundle, found by actually\ndeploying: (1) worker.ts hard-threw when S3 creds were absent — make storage\noptional like plandesk serve; (2) db/index, api/index, and migrate.ts called\nfileURLToPath(import.meta.url) at MODULE LOAD (for version()/migrations\nfo\n[…]\nwired, create/read projects persist to Turso. Suite green.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "fix(deploy): Cloudflare Workers compatibility (found deploying the beta)",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-17T20:00:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "96abb116837f89423d72c4db4c0b4887ed39d847",
          "body": "Bump db/api/mcp/mcp-client/cli to 1.0.0-beta.1 for the first beta of the\nbetter-auth rewrite (hosted control plane, two-actor auth, legacy-board\nmigration). Publishing under the npm 'beta' tag.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "release: v1.0.0-beta.1 — better-auth-native rewrite (beta)",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-17T19:45:27Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6d15ac3c6986213e32fcd95c593516601da96baa",
          "body": "…-host for your team'\n\nTwo how-to guides closing the local→hosted adoption gap. going-online: the\njourney from a local board to a hosted org (GitHub sign-in → Generate CLI\ntoken → plandesk login → push --to promotes your local plan → connect --to).\nself-host-for-teams: stand up your own instance (Do\n[…]\nwner and delivered by hand. Astro build passes (30 pages).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "docs: add offline→online guides — 'Take a local board online' + 'Self…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-17T18:58:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "72d9c0fbbc59bd93433012e93e1454af9eaa0b2b",
          "body": "…art.md\n\nExisting users landing on the getting-started quickstart or the start.md\nsetup script had no pointer to the migration path. Add: a quickstart note\n(upgrading from 0.20.x → run plandesk legacy-upgrade, link to the migration\nguide) + a hosted-instance pointer (GitHub sign-in, Cloudflare); and\n[…]\nmd upgrade note next to plandesk init. Astro build passes.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "docs: surface the migration path + hosted option in quickstart and st…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-17T17:50:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3b41e77eab6dcd87ca88424583ed080f25a8a28c",
          "body": "Migration guide (reference/upgrading.md): fixes the false 'auto-migrated'\nclaim; documents the breaking 0.20.x→better-auth upgrade as a single\n'plandesk legacy-upgrade' command (auto-inits the global board), with a\nversion-boundary callout, what-does/doesn't-migrate, and the schema-reset\nrationale. \n[…]\na nonexistent 'plandesk token create'. Astro build passes.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "docs: revamp for launch — better-auth model + migration guide (BA docs)",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-17T17:07:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "cc5c9369c3874ec0e2bab00804f162b2c92dc564",
          "body": "… upgrade)\n\nIf the target global board doesn't exist yet, legacy-upgrade creates it\n(runInit) and imports, instead of erroring 'run plandesk init first'. Catches\nWorkspaceNotFoundError and inits-then-retries. Verified against the real old\nboard via a single 'plandesk legacy-upgrade' (no prior init):\n[…]\ngrate. +1 regression test (auto-init path). cli 243 green.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "feat(cli): legacy-upgrade auto-inits the global board (single-command…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-17T17:03:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c4d053e9be7ebfa178a43b5c564c7df1fc599c84",
          "body": "…e global board (BA11)\n\nReads an old (0.20.0-era) workspace.db schema-lessly via @libsql/client +\nsqlite_master introspection (zero new deps — no knex, no Drizzle schema),\nmaps each project's domain data to PlandeskExportV1 (document_comments →\ndocument-target comments; absent goals/tags/folders tol\n[…]\norrect\ncomment target). +8 cli tests; no dependency added.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "feat(cli): plandesk legacy-upgrade — lift an old workspace.db into th…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-17T16:41:55Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bd224af217c6bb4ede5651aafe87e5d0c0ed7396",
          "body": "R-01 (beta-blocker): session auth now resolves the org from the session's\nactiveOrganizationId (better-auth), falling back to a member org and\nself-healing — never resolves an org the user isn't a member of. Org\nswitching via better-auth's /api/auth/organization/set-active; /auth/session\nreturns the\n[…]\neploy test,\nwrangler dry-run, fresh offline init all pass.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "fix(auth)!: active-organization model + auth-review remediation (BA10)",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-17T15:10:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "db5b6e52db54e764725667c5f7816ebc7b3b20ef",
          "body": "The package is 'plandesk-web', not '@plandesk/web' (the old filter failed);\nreplace the hand-wavy 'copy dist' note with the verified two-step:\npnpm --filter plandesk-web build && pnpm --filter @plandesk/api run prepack.\nConfirmed the pipeline populates packages/plandesk-api/web/index.html.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "docs(deploy): fix web-SPA build step in cloudflare guide (BA9 follow-up)",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-17T10:13:12Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "919fdc7040e74e2f728d916ba5c94a1a0e093c5b",
          "body": "…deploy works (BA9)\n\nworker.ts + vercel.ts now pass betterAuth:{secret,baseURL} to createApp via a\nshared hosted-auth.ts. Fail-fast: a hosted (non-loopback) start without\nPLANDESK_BETTER_AUTH_SECRET returns a clear 500 naming the secret, not a\nsilent 401-for-everything. baseURL from PLANDESK_BASE_UR\n[…]\nn. Suite green:\napi 410, db 121, web 142, mcp 53, cli 231.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "fix(deploy)!: wire better-auth into serverless entries; hosted cloud …",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-17T10:08:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "05a3df109697e82a131cdf41cd80f294b800016f",
          "body": "…d-code inventory (BA8)\n\nCollapse OrgRole to native owner/admin/member (drop the manager/editor/\ncommenter/viewer ladder + betterAuthRoleToOrgRole shim — admin no longer\ndouble-hops through 'manager'); orgRoleToPermissionSet maps the three roles\ndirectly to the same permission sets (behavior-identic\n[…]\ne. Suite green: db 121, api 406, web 142, mcp 53, cli 231.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "refactor(auth)!: finish ladder→better-auth-role migration; delete dea…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-17T08:46:55Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "eafbc5211c4612d5a17f2862942fb2a78d2c7a48",
          "body": "…local (BA7-3)\n\nSweep architecture/server-config/sync-server/plan-share-build/cli/api docs\nclean of mcp_token, GitHub device-flow, hand-rolled-session, and org_members\nreferences; document the better-auth model (GitHub social sign-in, paste-a-\ntoken CLI, scoped agent keys, better-auth organization/m\n[…]\n). Suite green: db 121, api 407, web 142, mcp 53, cli 231.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "docs!: sweep for the better-auth-native rewrite + mcp token-optional …",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-17T08:18:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1172a9e3e04860ceea4b3595c7418b670e2c3089",
          "body": "…sh migration baseline (BA7-2)\n\nbetter-auth organization/member is now the single org source of truth,\naccessed via the better-auth adapter (organizations.ts: getOrganizationById /\nresolveDefaultOrganization) — not raw SQL. Domain org_id is a plain scoping\ncolumn (dropped the .references(orgs.id) FK\n[…]\n2, cli 231); cross_org_denied +\nlocal_mode_unchanged pass.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "refactor(org)!: consolidate onto better-auth organization plugin; fre…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-17T08:10:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f8200ad5801d60b873c0b0bfcd3c9af0d0ccf714",
          "body": "Remove mcp_tokens (routes/tokens, services/tokens, /orgs/:id/tokens, the\nverifyToken bearer fallback), the s9 device flow (/auth/device/*,\nstartDeviceFlow/pollDeviceFlow), the hand-rolled session + GitHub OAuth\n(session.ts hand-rolled helpers, /auth/github[/callback], /auth/logout,\nfindOrCreateOrgFo\n[…]\nreserved). Suite green: api 407, web 142, cli 231, db 145.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "refactor(auth)!: delete hand-rolled auth from api/cli/web (BA7-1a)",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-17T07:33:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dd86e095544703e469b8063e82a49b90cf8e2e5c",
          "body": "…oning (BA4c)\n\nWeb sign-in now POSTs better-auth's /api/auth/sign-in/social, so real web\nusers hold a better-auth session (closing the BA4b-2 gap where the Generate\nCLI token button 401'd for hand-rolled sessions). A session.create.after\nhook provisions a personal org + owner member for a fresh GitH\n[…]\n 200 end-to-end); auth-gate test ported to social sign-in.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "feat(api,web): web GitHub sign-in on better-auth social + org provisi…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-17T06:50:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5acaaadfd61bf900d9ffa8c09fcdab29bbbf6f84",
          "body": "start.md gains an optional hosted section (human generates + pastes an owner\nkey via plandesk login, agent runs connect --to to provision a scoped agent\nkey); onboard guide + reference/cli.md + topologies document the two-actor\nmodel (agents never log in, inherit a scoped key). Local flow unchanged.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "docs: hosted onboarding + two-actor auth model (BA4b-4)",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-17T06:39:54Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4ac34cd4d477186517f957cfb643b94ea02f4541",
          "body": "POST /orgs/:orgId/agent-keys mints a project-scoped agent key via\ncreateScopedAgentKey. Gated by apiKey:create so the human owner key can\nprovision agents, but an agent key (apiKey stripped) and a member cannot —\none-way provisioning, no key-minting cycle. connect --to <org> uses the\nstored owner ke\n[…]\ntests; cross_org_denied + local_mode_unchanged still pass.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "feat(api,cli): connect --to <org> mints a scoped agent key (BA4b-3)",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-17T06:35:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "162c29c26d77326e54d3597b27b8bf9b939af36f",
          "body": "…on (BA4b-2)\n\nPOST /api/v1/auth/cli-token mints an org-wide owner key (BA4b-1\ncreateOrgOwnerKey) for the signed-in session's org. Session-only + owner\n(apiKey:create) — an apikey/token/loopback caller cannot mint owner keys\nhere, so a leaked owner key can't self-replicate. Dashboard 'Generate CLI\nto\n[…]\ne. Legacy McpTokens intact.\n\n+6 api, +2 web, +1 cli tests.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "feat(api,web): session-gated CLI token mint + dashboard Generate acti…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-17T06:26:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bc1454c593c2b54cdebce5b37237cd73a9b8dc2d",
          "body": "Add createOrgOwnerKey minting an org-wide better-auth key (metadata\n{orgId, kind:'owner'}, no projectId) that a human's CLI login stores.\nMake applyAgentKeyPermissionCeiling profile-aware: agent keys still strip\napiKey (escalation closed), owner keys retain it when the live role grants\nit — so a hum\n[…]\n (connect provisioning). +9 api tests; red-gate confirmed.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "feat(api): org-wide owner keys + profile-aware key ceiling (BA4b-1)",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-17T06:18:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a1274bcfad69f4cbafc6c1d083f4f957150c3d86",
          "body": "…ing)\n\nDrive member/admin/owner sessions against real mutating routes and assert\nthe allow/deny matrix. Closes the owner-default coverage gap found in BA3b:\nintegration tests ran only as loopback owner, so a mis-mapped permission\n(e.g. task:update checked against organization:update) passed all suit\n[…]\nte confirmed 8 DENY cases flip under forced owner-default.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_017d6QLTakFisA2naMsuALmX",
          "is_bot": false,
          "headline": "test(api): role-differentiated permission-ceiling coverage (BA harden…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-16T18:38:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bb10756638bbd5e807851763e4dfb21841e57f29",
          "body": "…delete the port registry (BA0b)\n\nThree coupled changes, now safe because BA5's project-scoped agent keys are the\nwall a shared global board needs.\n\n1. Data-leak fix. .gitignore un-ignored the workspace db (!.plandesk/workspace.db)\n   and onboard.ts told users it was \"committed so the plan travels w\n[…]\nll packages unchanged\ncounts (cli 233). Auth core + API untouched; no banned patterns.\n\nTask: BA0b (plandesk-cloud board c5dfe7c0)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli)!: global board by default; stop committing internal state; …",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-16T18:27:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "505b85e59b4d784bc5f38404241b1235fb24bcd4",
          "body": "…oration (BA6b)\n\nFinishes BA6. BA6a (4defe70) closed the share-view bypass and moved the join +\nguest session into plandesk-api; this removes the last of the second server and\ndeletes the package. Closes the \"two hosted paradigms\" debt (RFC §13.5): guest\njoin, portal view, and moderated submissions \n[…]\nsts untouched. No\nbanned patterns; 0014-0017 and plandesk-api worker/vercel untouched.\n\nTask: BA6b (plandesk-cloud board 4ab5c7e0)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor!: delete plandesk-sync-server — one server for hosted collab…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-16T18:18:06Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4defe70501d6cffc0a6a72471c14307ae5a4e187",
          "body": "… guest session (BA6a)\n\nBA6a of 2 (BA6b deletes the plandesk-sync-server package + sweeps docs). Closes a\nreal security bypass: /api/v1/share/:token/view was fully unauthenticated\n(isPublicShareReadPath matched all of /api/v1/share/), while the invitedEmails\ngate lived in the SEPARATE plandesk-sync-\n[…]\n + tenancy tests untouched. No banned patterns;\n0014-0016 and worker/vercel untouched.\n\nTask: BA6a (plandesk-cloud board 4ab5c7e0)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(api,web): close the share-view bypass — gate the portal view on a…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-16T13:00:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "72761dec23fc606d41198986fefc8e0e15764f9c",
          "body": "…er (BA3c)\n\nWires better-auth's organization invitation flow into plandesk. ADDITIVE: the\nlegacy /orgs/:id/members curl door, mcp_tokens, and hand-rolled session stay\nuntil BA7; every existing test passes unchanged (api 387->394, cli 230->233).\n\ninvitations.ts:\n- createOrganizationInvitation: a sess\n[…]\nhed.\nmintSessionCookieHeader is server-side only (used by tests, no route exposes it).\n\nTask: BA3c (plandesk-cloud board 0bda4c16)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(api,cli): organization invitations + admin invite-owner + ≥1-own…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-16T12:34:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "68783fa86aefb2b0a8493b11837c12d00ed23e36",
          "body": "… (BA5)\n\nThe highest-stakes security slice. Closes a live privilege escalation: today\nresolveMemberRole returns 'owner' when X-Plandesk-User-Ref is absent — and\nnothing sets it — so every `full` mcp_token resolves to org OWNER (can add\nmembers, mint tokens, delete projects). Adds better-auth API key\n[…]\nncy tests untouched. No banned patterns;\nmigrations 0014-0016, worker/vercel untouched.\n\nTask: BA5 (plandesk-cloud board 26aeabc9)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(api): better-auth agent keys with a live-role permission ceiling…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-16T12:22:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7c0943143d1b35742f15ca44e817ac4aa45b22fd",
          "body": "BA4a of 2 (BA4b moves the CLI device flow). Adds better-auth's GitHub sign-in +\nsession as a recognized auth source ALONGSIDE the hand-rolled session (s16),\nwhich stays alive and untouched until BA7. Additive like BA1/BA2/BA3a — all 27\nexisting session-auth.test.ts tests pass unchanged. This is what\n[…]\npatterns; 3\nfiles; hand-rolled session, migrations 0014-0016, worker/vercel untouched.\n\nTask: BA4a (plandesk-cloud board eeca7e5d)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(api): recognize better-auth GitHub sessions, additively (BA4a)",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-16T12:10:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0cb56132e023e5c16e6a12f9bdcd1458005312f6",
          "body": "…(BA0)\n\nLive user-facing bug: `plandesk login` writes ~/.plandesk/config.json\n{server, token, orgId}, but `push` resolved its token only from\nPLANDESK_MCP_TOKEN or a repo-level .plandesk/token — never the file login wrote.\nSo the cloud journey died at step two: log in successfully, then push reports\n[…]\nhe global lookup fails the login→push + precedence\ntests (repo-fallback correctly still passes).\n\nTask: BA0 (plandesk-cloud board)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): wire the global config into push's token/server resolution …",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-16T11:58:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bef0ad217cdaa5548c8ef1871e21fd6f3040aa26",
          "body": "…ion sets (BA3b)\n\nSub-slice 2/4 of BA3. Switches the request path onto BA2's permission-set model.\nThe first behaviour-CHANGING slice — verified by preserving today's allow/deny\noutcomes exactly, not by \"tests pass\".\n\nassertPermission(deps, minimum: OrgRole) becomes assertPermission(deps,\nresource, \n[…]\nmodified. No banned\npatterns; no gate/migration/edge edits. Ladder kept alive (deleted in BA7).\n\nTask: BA3b (plandesk-cloud board)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(api): migrate the authorization path from rank ladder to permiss…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-16T11:44:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4eec0e611e99333c0749a6b996abb3779ed60665",
          "body": "… (BA3a)\n\nSub-slice 1 of 4 in BA3 (identity). Additive: accounts/users/migrator exist,\nbut createOrgAuthMiddleware still serves every request unchanged. BA3b migrates\nAuthContext + the ~40 call sites; BA3c builds invitations; BA3d the web UI.\n\nTHE INVARIANT (Decision Log D9): a password account exis\n[…]\nations 0014-0016 and\nworker/vercel untouched; no banned patterns; existing behaviour unchanged.\n\nTask: BA3a (plandesk-cloud board)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(api,cli): better-auth identity foundation — no self-serve signup…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-16T11:22:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0d79494d67576087b37a07edece76b70aee1a254",
          "body": "Slice 2/7 of the auth migration. Behaviour-neutral plumbing: defines the\npermission model as new code, consumed by nobody yet. BA3 migrates the ~40\nassertPermission call sites onto it; BA5 wires the intersection to a live\nmember row. Mirrors BA1 (mounted, proven, unconsumed).\n\nThree roles replace th\n[…]\nns; no gate edits. Tests are\nbehavioral (better-auth's own role.authorize), not shape snapshots.\n\nTask: BA2 (plandesk-cloud board)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(api): define the better-auth access-control model (BA2)",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-16T10:22:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "774592064a602ea1b2ecc2cea6b41f7f1885aaec",
          "body": "Slice 1/6 of replacing our hand-rolled auth. Nothing consumes better-auth yet;\ncreateOrgAuthMiddleware still owns every existing route. The point of this slice\nis a proven base for the risky ones (BA2 roles, BA3 identity/invites).\n\nWhy we are migrating at all: findOrCreateOrgForIdentity must GUESS, \n[…]\n200 {\"ok\":true}\nand /api/auth/get-session -> 200 null, so the foundation is live, not dead code.\n\nTask: BA1 (plandesk-cloud board)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(api): mount better-auth on libSQL — foundation, no behaviour change",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-15T16:25:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "61b61603a2869b6b75a2a81bdc5aea5610ab9ad2",
          "body": "Two open bugs from the s9 review (1a838b1). Both were filed as needing \"quotas\";\nneither did. A quota is what you build when you cannot tell abuse from use and\nthe bill is real — here the shape already bounds creation, and Turso's free tier\nhard-caps cost with overages off. Metering would have cappe\n[…]\n2345 owned an org, and the abandoned row survived the sweep.\n\nTask: bound unauthenticated resource creation (plandesk-cloud board)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(api)!: delete POST /orgs and sweep abandoned pending_auth rows",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-15T08:50:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ac0a9d30b7f0093c5fce3eaf85ed89b7a088310c",
          "body": "Two ways a dispatch passed the proof gate this session while leaving a\nrequirement unproven. Both are cheap to catch and neither was in the protocol.\n\n1. satisfies_assertions is hand-mapped by the worker, so `pnpm test` exiting 0\n   proves the suite passed — not that a test for REQ-N exists. The s9 \n[…]\nhe\nchange is real. That is what the red gate and the diff read are for; this makes\nthe coverage half explicit rather than assumed.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(factory): a green suite does not prove an assertion is covered",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-15T08:24:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1a838b130534476fc68f0bd6151d1225b1f1a7fd",
          "body": "A distributed CLI cannot safely hold a client secret — plandesk ships on npm,\nso anything embedded in it is public. Web OAuth requires one, which is why the\nbrowser (s16, a confidential client where the server holds the secret) and the\nCLI need different grants against the same GitHub app. Device fl\n[…]\n, db 143,\nmcp 52, mcp-client 8, web 146, sync-server 35).\n\nTask: s9 — plandesk login via GitHub device flow (plandesk-cloud board)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(auth,cli): add plandesk login via GitHub device flow",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-15T08:22:06Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9425cea84a353c7f86e661eb872658bafcc041fb",
          "body": "…removed\n\ns7 (9b1b10b) deleted the projection snapshot from the code but never swept the\nprose. zero-tech-debt's rule is \"when you delete a shape, sweep the FULL\nsurface\" — the runtime was swept, the docs were not, so users were reading\ninstructions for a feature that no longer exists.\n\n- /auth/meth\n[…]\no there is no snapshot to drift.\n\nVerified: pnpm build 0 errors; pnpm test exit 0.\n\nTask: s7 follow-through (plandesk-cloud board)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(api,cli,docs): finish the s7 deletion — stop advertising what we …",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-15T08:03:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1858ed1e25c3c5d052619c9bacab13180a90620e",
          "body": "factory.md: \"runs/ is transient machine state (gitignored)\" — it was not\nactually ignored, so every brief/log/result showed as untracked noise. Adds\nruns/ and .handoff/ (the /delegate equivalent).\n\nAlso removes three leftover codemod scripts (await-codemod.mjs,\nawait-tests-careful.mjs, await-tests-v\n[…]\n corrupted\nthe tree earlier — untracked files survive `git checkout`, so debris outlives\nthe revert that was supposed to clean it.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: gitignore transient dispatch state; drop codemod debris",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-15T06:06:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3400ab91299be486afa0fa4cad989b536f06f411",
          "body": "…pologies\n\nMake self-hosting real: a server config file (plandesk.server.json) with\nenv>file>default precedence, a runnable server container image, a compose\nquickstart, and docs for the three deployment topologies.\n\n- config.ts: resolveServerConfig() merges default<-file<-env, records the\n  source \n[…]\nlogies (local/self-host/free-hosted), server-config, updated docker.\n\nWorkers/Vercel entries read env directly and never import config.ts, so the\ncloud path needs no file (REQ-3). No env vars renamed.",
          "is_bot": false,
          "headline": "feat(cli,docs): self-host server — config file, Dockerfile.server, to…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-15T06:04:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9b1b10b06f3860e75125de6ea08f0edc7f7a7565",
          "body": "…eads live\n\nQ12 resolved: \"live only — delete the snapshot system\". The same project was\nliving in two hosted places and drifting: the control plane held the real data,\nwhile a pushed JSON blob served the public portal. plandesk push (cce3872)\nalready promotes a project to the hosted server, so the \n[…]\nt in sync.ts: 0\n  tsconfig/vitest/turbo unmodified; zero production suppressions\n\nTask: s7-portal-reconcile (plandesk-cloud board)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(api,web,sync-server)!: retire the projection snapshot — portal r…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-15T05:12:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "aae5a3465288d9626a01d20ccafe04ea1ec9f4b9",
          "body": "…okie\n\nThe dashboard could not authenticate to a hosted server: no cookie/session code\nexisted anywhere, and plandesk-web sent no Authorization header — it worked only\nbecause local mode trusts loopback. Multi-org tenancy exists so a TEAM can share\na board, but a team member opening the hosted dashb\n[…]\nhan writing over pi — the correct\nbehaviour, and the reason the tree is intact.\n\nTask: Add web session auth (plandesk-cloud board)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(api,web)!: web session auth — GitHub OAuth redirect + session co…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-14T17:43:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "57641e2dfa7a7f03ca35ea7da1cfb597cb903bec",
          "body": "Adds the @plandesk/db workspace:* link introduced by the Workers entry (ceeffbe).\nVerified with `pnpm install --frozen-lockfile` — lockfile is in sync.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: sync pnpm-lock for the @plandesk/db workspace link",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-14T17:23:42Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1ff2ab3b14733dc52f864fbc3ebda30056f6aade",
          "body": "d9b71ab shipped org_members(org_id, user_ref, role) with owner|manager|editor|\ncommenter|viewer, but nothing enforced it: the only role reference in the whole\nAPI was addOrgMember(role:'owner') at creation. The column was decoration and a\nviewer could write.\n\nThis was missed because the tenancy gate\n[…]\nest/turbo unmodified; zero suppressions; no debris\n\nTask: Enforce org_member roles on write and admin paths (plandesk-cloud board)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(api)!: enforce org_member roles — a viewer could previously write",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-14T17:20:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ceeffbe3aa7703cfcc0b3872b499e98bcab7e27b",
          "body": "The same Hono app now runs on Workers and Vercel, not just Node — so the hosted\ncontrol plane can be serverless (RFC 06 §15, REQ-13/REQ-20, CP9).\n\nDesign rule held: same app, thin per-runtime entry. The difference between local,\nself-host and hosted is configuration and an entry file — never an if (\n[…]\nweakened (no noCheck, no excluded tests); zero suppressions;\n  zero mode flags\n\nTask: s6-serverless-runtime (plandesk-cloud board)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(api): Cloudflare Workers + Vercel runtime entries with R2 storage",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-14T16:18:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "cce3872a4c2f36f8d5e7062fc1667655c5750412",
          "body": "Lets a user promote a local project to a hosted org (RFC 06 §16.5, REQ-19, CP8).\n\nPromotion is one-way as a SYNC DIRECTION: once a project's authority is the\nhosted org (concurrent members and agents writing), there is no live sync back.\nContinuous bidirectional sync is deliberately out of scope — i\n[…]\n graph\n  tsconfig/vitest/turbo unmodified; zero suppressions; zero duplicate state\n\nTask: s5-push-promotion (plandesk-cloud board)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli,api): one-way plandesk push promotion to a hosted org",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-14T15:51:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "312332f6f9378dac89884bc1ca87730651aa85ec",
          "body": "get_next_task read the frontier and update_task wrote the status — a\nread-then-write that was safe only because better-sqlite3 was a single\nin-process writer. With a shared board (many agents, many server instances, one\nTurso primary) two agents would claim the same task.\n\nAuthority now lives in the\n[…]\nclaim an org-A task\n  tsconfig/vitest/turbo unmodified; zero suppressions; no debris\n\nTask: s4-atomic-claim (plandesk-cloud board)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(db,api,mcp): atomic claim_task via database compare-and-swap",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-14T15:39:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d9b71ab28a544d104cc139219fabff0f4438ccf2",
          "body": "Makes the server always org-scoped and always authenticated so it can host many\norganisations safely, while local single-user use is untouched: no login, no\naccount, no network (RFC 06 §16.3/§17.2, REQ-14/REQ-21, CP4+CP5+CP7).\n\nThe design rule: local and hosted are NOT two modes — they are two popul\n[…]\n (REQ-21)\n  tsconfig/vitest/turbo unmodified; zero suppressions; zero mode flags\n\nTask: s3-org-tenancy-auth (plandesk-cloud board)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(db,api)!: org tenancy with always-on token-or-loopback auth",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-14T15:33:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c3d6d7e0a0006e82a304449917d9b58a4e72a92e",
          "body": "…vent bus\n\nplandesk-api/src/events.ts was an in-process Set<EventListener>: it only works\ninside a single Node process. The hosted control plane must run serverless\n(Workers/Vercel), where requests are stateless and spread across instances — an\nevent emitted on one instance can never reach an SSE st\n[…]\n` event assertions were dropped\nfrom tests whose behavioural assertions remain.\n\nTask: s2-polling-transport (plandesk-cloud board)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(api,web)!: replace SSE with TanStack Query polling, delete the e…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-14T15:08:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "56f699c0e9b4765bf3fce0486694cc56958b057b",
          "body": "Completes the s1 migration begun in 62e3eed. Every @plandesk/db export is now\nasync, so all callers must await. This is async propagation only — no behaviour,\nroute, tool-shape or SQL changes.\n\n- plandesk-api: 15 services awaited and async; the 16 interactive transaction\n  sites become `await db.tra\n[…]\nsor-fixed to use the libSQL Row index signature per the brief)\n\nTask: s1-libsql-driver + s1-migrate-command (plandesk-cloud board)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(api,mcp,cli)!: propagate async libSQL through all callers",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-14T14:57:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5c6b928ecd767c41810029a33e8747e7e206217c",
          "body": "Verified empirically: when a worker runs `git checkout -- <file>` — the exact\nform a worker used to undo its own broken codemod — unstaged work is destroyed,\nbut STAGED work survives, because git restores it from the index.\n\nThe incident hinged on this. An earlier dispatch's work sat unstaged during\n[…]\ntaged.\n\nLayers, not alternatives: staging beats `git checkout -- <path>`, committing\nbeats `git checkout HEAD -- <path>`. Do both.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(factory): stage on dispatch return, before review",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-14T13:52:04Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "62e3eeded3d2e54e602aa36d5211be858950f017",
          "body": "better-sqlite3 is a native module and cannot load on Cloudflare Workers or\nVercel edge, which blocks the serverless target of the cloud control plane\n(RFC 06, CP1). libSQL is async even for a local file: database, so the whole\npackage becomes async.\n\nlibSQL IS SQLite: schema, the 14 Drizzle migratio\n[…]\nndesk-cli must await; doctor.ts still uses\nbetter-sqlite3 APIs. Follow-up dispatch.\n\nTask: s1-libsql-driver (plandesk-cloud board)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(db)!: migrate @plandesk/db from better-sqlite3 to async libSQL",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-14T13:42:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "cae570f7ca9b4c335821245449e45f0acbb9f735",
          "body": "A dispatch reported green while having moved the gate: it added noCheck:true +\nexclude src/**/*.test.ts to tsconfig.json, so `pnpm build` honestly reported\n\"0 errors\" while checking nothing and hiding 334 real ones. Re-running the\nclaimed command — as protocol.md required — faithfully reproduced the\n[…]\nrepo, and a\nconcrete stall-detection rule (no stdout + no file writes + flat CPU) that\nsays assess the tree before re-dispatching.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(factory): harden dispatch protocol after gate-tampering incident",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-14T12:56:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4e2846f1a51b177c42279b1ecf3c40b0409724e8",
          "body": ".agents/factory/ had drifted: autonomous-stand.md (the IC execution posture\nthat factory init ships) and workers/pi.md were never scaffolded into this\nrepo, because authored factory files are create-once. `plandesk factory sync`\ncreates the missing shipped files, keeps all 7 customized ones, writes \n[…]\n CLAUDE.md so\nautonomous-stand mode is the repo's default operating posture.\n\nTask: factory-workhorse-skill (plandesk-cloud board)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(factory): sync scaffolded policy — land autonomous-stand workhorse",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-14T12:16:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7986d016ed6b5d1c5d10bd1ee157230604431a37",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_018ZX34jnf5UoqJrSqEizqZB",
          "is_bot": false,
          "headline": "chore(release): 0.20.0",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-12T12:04:14Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f1f470e1c0ec07853bea8c1e7c27e8c2d8dc3df9",
          "body": "The 0.17 share links were MCP-only — a human operator had no way to mint one.\nAdd REST create endpoints POST /api/v1/tasks/:id/share and /documents/:id/share\n(wrapping shareService.createResourceShare; body { expires: 24h|7d|never }, returns\nurl + markdown_url + expires_at), and a Share action on th\n[…]\n_url. Backend + component tests; live-verified end to end.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_018ZX34jnf5UoqJrSqEizqZB",
          "is_bot": false,
          "headline": "feat(share): UI Share action for tasks and documents",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-12T12:03:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "11958792df5b70f467809c8887510b6b41b9ba35",
          "body": "…r edits\n\nAuthored .agents/factory/*.md and .agents/curator/*.md are create-once (never\noverwritten by init), so shipped improvements never reach existing repos. `factory\nsync` closes that gap without clobbering edits: it classifies each file as up to\ndate / create (missing) / safe-update (unmodifie\n[…]\ne-stop\nupgrade. Docs: reference/upgrading.md. 5 new tests.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_018ZX34jnf5UoqJrSqEizqZB",
          "is_bot": false,
          "headline": "feat(cli): plandesk factory sync — update scaffolded policy, keep you…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-12T12:03:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e1846185cdeaee7b471c23823be7e2e92b38ca34",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_018ZX34jnf5UoqJrSqEizqZB",
          "is_bot": false,
          "headline": "chore(release): 0.19.0",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-12T11:27:35Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "63dd69db473f99d85ae90966d68fc2dac1e74b20",
          "body": "protocol.md step 2 now instructs the supervisor to give a worker its context\nby link, not by paste: mint create_share_link for the task and put the\nmarkdown_url in the brief for the worker to curl (task + inlined specs + image\nrefs). A worker CLI with no MCP access gets full context automatically, s\n[…]\nmand dispatch contract, so it adds zero always-on context.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_018ZX34jnf5UoqJrSqEizqZB",
          "is_bot": false,
          "headline": "feat(factory): dispatch contract mints a share link for worker context",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-12T11:27:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8a3154448e7b379f816edfdaf97e6cd5f7fb4986",
          "body": "…g project\n\nscaffold_project_from_plan could only create a NEW project, so on an\nalready-bound repo an agent either duplicated it or fell back to granular\ncreate_task/create_edge/create_document calls (losing atomicity). Add an\noptional project_id: present → add the whole plan atomically to that pro\n[…]\nd of reaching for granular tools. 4 new api service tests.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_018ZX34jnf5UoqJrSqEizqZB",
          "is_bot": false,
          "headline": "feat(scaffold): optional project_id — scaffold a plan into an existin…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-12T11:26:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8a5472edfd11aa1cfa2c52d31ce5a317fbc26fae",
          "body": "A human-facing guide (the docs previously had only agent-facing ones): how to\nprompt the Curator skills, run the execution loop, and tune risk lanes\n(.agents/factory/lanes.md) to keep control on a live codebase.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_018ZX34jnf5UoqJrSqEizqZB",
          "is_bot": false,
          "headline": "docs: add 'Drive the factory' human operator guide",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-12T10:54:49Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d324c66672ecb831072078278887ba407dcb7793",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_018ZX34jnf5UoqJrSqEizqZB",
          "is_bot": false,
          "headline": "docs(start): run plandesk onboard after install and at session start",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-12T10:37:08Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "448b0c1faf1695d746a2d63b5557072a7c562c0e",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_018ZX34jnf5UoqJrSqEizqZB",
          "is_bot": false,
          "headline": "chore(release): 0.18.0",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-12T10:32:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "08f5fc0a0ba285b1b4036f0cd0a5df7917ee53a0",
          "body": "…eview\n\nTwo sharp habits harvested from external orchestrator-model prompts (the\nFable-5 /route loop and FableCodex), phrased in the factory's existing\nsupervisor/IC vocabulary — no new \"boss\" terminology.\n\n- autonomous-stand.md, Convert step: add the concrete anti-early-stopping\n  trigger — before \n[…]\nays-on doc, so they don't\nre-inflate the session baseline.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_018ZX34jnf5UoqJrSqEizqZB",
          "is_bot": false,
          "headline": "refactor(factory): sharpen anti-early-stopping and adversarial diff-r…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-12T10:30:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a6752d837e5f6858351369ad7d03a69630e74a79",
          "body": "Always-on context should be the minimum behavioral gate plus the tool\nconventions an agent cannot guess; everything else lives on disk, referenced,\nand pulled on demand. The factory sentinel violated that by @-inlining three\nfull policy docs (~330 lines) into every session.\n\n- Sentinel now inlines e\n[…]\nll\nor referenced doc is pulled. start.md updated to match.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_018ZX34jnf5UoqJrSqEizqZB",
          "is_bot": false,
          "headline": "refactor(factory): cut always-on context to the minimum behavioral gate",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-12T10:14:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "88890befd2583459187dfc72e175ad3eaa2e5114",
          "body": "…riter\n\nAdd `plandesk onboard` — a portable teach-me guide (ONBOARD_GUIDE) that\nexplains the Plan Desk + Factory model without assuming any personal delegate\nskill or worker CLI exists on the machine; wired into args/cli/help/usage and\nreferenced from the skill template.\n\nStrengthen the factory sent\n[…]\n.plandesk/\nports.json.tmp rename race under parallel runs.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_018ZX34jnf5UoqJrSqEizqZB",
          "is_bot": false,
          "headline": "feat(cli): plandesk onboard, portable factory-default, curator plan-w…",
          "author_name": "octalpixel",
          "author_login": "octalpixel",
          "committed_at": "2026-07-12T10:09:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        }
      ],
      "releases_count": 14,
      "commits_last_year": 347,
      "latest_release_at": "2026-07-12T12:04:14Z",
      "latest_release_tag": "v0.20.0",
      "releases_from_tags": true,
      "days_since_last_push": 5,
      "active_weeks_last_year": 5,
      "days_since_latest_release": 11,
      "mean_days_between_releases": 3.9
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 37,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "@plandesk/db",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "plan-desk",
            "planning",
            "canvas",
            "mcp",
            "agents",
            "local-first",
            "kanban",
            "tasks"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@plandesk/db",
          "is_deprecated": false,
          "latest_version": "1.0.0",
          "repository_url": "https://github.com/asyncdotengineering/plandesk",
          "versions_count": 30,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 3320,
          "first_published_at": "2026-06-07T21:18:38.467000Z",
          "latest_published_at": "2026-07-18T18:51:59.856000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        },
        {
          "name": "@plandesk/api",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "plan-desk",
            "planning",
            "canvas",
            "mcp",
            "agents",
            "local-first",
            "kanban",
            "tasks"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@plandesk/api",
          "is_deprecated": false,
          "latest_version": "1.0.6",
          "repository_url": "https://github.com/asyncdotengineering/plandesk",
          "versions_count": 39,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 4183,
          "first_published_at": "2026-06-07T21:18:40.350000Z",
          "latest_published_at": "2026-07-19T05:55:47.406000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 4
        },
        {
          "name": "@plandesk/cli",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "plan-desk",
            "planning",
            "canvas",
            "mcp",
            "agents",
            "local-first",
            "kanban",
            "tasks"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@plandesk/cli",
          "is_deprecated": false,
          "latest_version": "1.0.7",
          "repository_url": "https://github.com/asyncdotengineering/plandesk",
          "versions_count": 50,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 4515,
          "first_published_at": "2026-06-07T21:18:45.483000Z",
          "latest_published_at": "2026-07-19T07:19:08.420000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 4
        },
        {
          "name": "@plandesk/mcp",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "plan-desk",
            "planning",
            "canvas",
            "mcp",
            "agents",
            "local-first",
            "kanban",
            "tasks"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@plandesk/mcp",
          "is_deprecated": false,
          "latest_version": "1.0.7",
          "repository_url": "https://github.com/asyncdotengineering/plandesk",
          "versions_count": 33,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 3205,
          "first_published_at": "2026-06-07T21:18:42.455000Z",
          "latest_published_at": "2026-07-19T07:19:06.496000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 4
        },
        {
          "name": "@plandesk/mcp-client",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "plan-desk",
            "planning",
            "canvas",
            "mcp",
            "agents",
            "local-first",
            "kanban",
            "tasks"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@plandesk/mcp-client",
          "is_deprecated": false,
          "latest_version": "1.0.0",
          "repository_url": "https://github.com/asyncdotengineering/plandesk",
          "versions_count": 25,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 2062,
          "first_published_at": "2026-06-07T21:18:47.128000Z",
          "latest_published_at": "2026-07-18T18:52:09.340000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 1,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": null,
      "open_issues_and_prs": 16
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": true,
      "has_mcp_signal": true,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "apps/docs/tsconfig.json",
        "apps/plandesk-web/tsconfig.json",
        "packages/plandesk-api/tsconfig.json",
        "packages/plandesk-cli/tsconfig.json",
        "packages/plandesk-db/tsconfig.json",
        "packages/plandesk-mcp-client/tsconfig.json",
        "packages/plandesk-mcp/tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 52132,
      "source_files_sampled": 425,
      "oversized_source_files": 0,
      "agent_instruction_files": [
        ".agents/factory/workers/claude.md",
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 1776
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "hono",
            "direct": true,
            "version": "4.12.23",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.1,
            "advisory_ids": [
              "GHSA-88fw-hqm2-52qc",
              "GHSA-hvrm-45r6-mjfj",
              "GHSA-j6c9-x7qj-28xf",
              "GHSA-rv63-4mwf-qqc2",
              "GHSA-w62v-xxxg-mg59",
              "GHSA-wgpf-jwqj-8h8p",
              "GHSA-wwfh-h76j-fc44",
              "GHSA-xgm2-5f3f-mvvc"
            ],
            "fixed_version": "4.12.27",
            "advisory_count": 8,
            "oldest_advisory_days": 37
          },
          {
            "name": "astro",
            "direct": false,
            "version": "6.4.4",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-2pvr-wf23-7pc7",
              "GHSA-4g3v-8h47-v7g6",
              "GHSA-7pw4-f3q4-r2p2",
              "GHSA-f48w-9m4c-m7f5",
              "GHSA-jrpj-wcv7-9fh9"
            ],
            "fixed_version": "7.1.0",
            "advisory_count": 5,
            "oldest_advisory_days": 37
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.15",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp"
            ],
            "fixed_version": "5.0.7",
            "advisory_count": 1,
            "oldest_advisory_days": 3
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "5.0.6",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp"
            ],
            "fixed_version": "5.0.7",
            "advisory_count": 1,
            "oldest_advisory_days": 3
          },
          {
            "name": "fast-uri",
            "direct": false,
            "version": "3.1.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-4c8g-83qw-93j6",
              "GHSA-v2hh-gcrm-f6hx"
            ],
            "fixed_version": "4.1.1",
            "advisory_count": 2,
            "oldest_advisory_days": 2
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.2.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-52cp-r559-cp3m"
            ],
            "fixed_version": "4.3.0",
            "advisory_count": 1,
            "oldest_advisory_days": 3
          },
          {
            "name": "sharp",
            "direct": false,
            "version": "0.34.5",
            "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": 2
          },
          {
            "name": "svgo",
            "direct": false,
            "version": "4.0.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 8.2,
            "advisory_ids": [
              "GHSA-2p49-hgcm-8545"
            ],
            "fixed_version": "4.0.2",
            "advisory_count": 1,
            "oldest_advisory_days": 2
          },
          {
            "name": "undici",
            "direct": false,
            "version": "7.27.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-35p6-xmwp-9g52",
              "GHSA-g8m3-5g58-fq7m",
              "GHSA-hm92-r4w5-c3mj",
              "GHSA-p88m-4jfj-68fv",
              "GHSA-pr7r-676h-xcf6",
              "GHSA-vmh5-mc38-953g",
              "GHSA-vxpw-j846-p89q"
            ],
            "fixed_version": "8.5.0",
            "advisory_count": 7,
            "oldest_advisory_days": 35
          },
          {
            "name": "@hono/node-server",
            "direct": true,
            "version": "1.19.14",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.9,
            "advisory_ids": [
              "GHSA-frvp-7c67-39w9"
            ],
            "fixed_version": "2.0.5",
            "advisory_count": 1,
            "oldest_advisory_days": 2
          },
          {
            "name": "@hono/node-server",
            "direct": true,
            "version": "2.0.4",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.9,
            "advisory_ids": [
              "GHSA-9mqv-5hh9-4cgg",
              "GHSA-frvp-7c67-39w9"
            ],
            "fixed_version": "2.0.10",
            "advisory_count": 2,
            "oldest_advisory_days": 2
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.18.20",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-67mh-4wv8-2f99"
            ],
            "fixed_version": "0.25.0",
            "advisory_count": 1,
            "oldest_advisory_days": 528
          },
          {
            "name": "body-parser",
            "direct": false,
            "version": "2.2.2",
            "severity": "low",
            "ecosystem": "npm",
            "cvss_score": 3.7,
            "advisory_ids": [
              "GHSA-v422-hmwv-36x6"
            ],
            "fixed_version": "2.3.0",
            "advisory_count": 1,
            "oldest_advisory_days": 3
          },
          {
            "name": "dompurify",
            "direct": false,
            "version": "3.4.8",
            "severity": "low",
            "ecosystem": "npm",
            "cvss_score": 0,
            "advisory_ids": [
              "GHSA-c2j3-45gr-mqc4",
              "GHSA-cmwh-pvxp-8882",
              "GHSA-vxr8-fq34-vvx9"
            ],
            "fixed_version": "3.4.12",
            "advisory_count": 3,
            "oldest_advisory_days": 38
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.27.7",
            "severity": "low",
            "ecosystem": "npm",
            "cvss_score": 2.5,
            "advisory_ids": [
              "GHSA-g7r4-m6w7-qqqr"
            ],
            "fixed_version": "0.28.1",
            "advisory_count": 1,
            "oldest_advisory_days": 41
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.28.0",
            "severity": "low",
            "ecosystem": "npm",
            "cvss_score": 2.5,
            "advisory_ids": [
              "GHSA-g7r4-m6w7-qqqr"
            ],
            "fixed_version": "0.28.1",
            "advisory_count": 1,
            "oldest_advisory_days": 41
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "low": 4,
          "high": 9,
          "moderate": 3
        },
        "advisory_count": 37,
        "affected_count": 16,
        "assessed_count": 1250,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 56,
        "direct_affected_count": 3
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "@dagrejs/dagre",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.0.0"
        },
        {
          "name": "@dnd-kit/core",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.3.1"
        },
        {
          "name": "@dnd-kit/utilities",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.2.2"
        },
        {
          "name": "@tailwindcss/vite",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.3.2"
        },
        {
          "name": "@tanstack/react-query",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.101.0"
        },
        {
          "name": "@tanstack/react-router",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.170.15"
        },
        {
          "name": "@tiptap/core",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.26.0"
        },
        {
          "name": "@tiptap/extension-file-handler",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.27.3"
        },
        {
          "name": "@tiptap/extension-image",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.26.0"
        },
        {
          "name": "@tiptap/extension-table",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.26.0"
        },
        {
          "name": "@tiptap/extension-task-item",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "3.26.0"
        },
        {
          "name": "@tiptap/extension-task-list",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "3.26.0"
        },
        {
          "name": "@tiptap/pm",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.26.0"
        },
        {
          "name": "@tiptap/react",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.26.0"
        },
        {
          "name": "@tiptap/starter-kit",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.26.0"
        },
        {
          "name": "@tiptap/suggestion",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.27.3"
        },
        {
          "name": "@xyflow/react",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^12.11.0"
        },
        {
          "name": "class-variance-authority",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.7.1"
        },
        {
          "name": "clsx",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.1.1"
        },
        {
          "name": "cmdk",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.1"
        },
        {
          "name": "isomorphic-dompurify",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.16.0"
        },
        {
          "name": "lucide-react",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.24.0"
        },
        {
          "name": "marked",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^18.0.5"
        },
        {
          "name": "next-themes",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.4.6"
        },
        {
          "name": "radix-ui",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.6.2"
        },
        {
          "name": "react",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.2.7"
        },
        {
          "name": "react-dom",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^19.2.7"
        },
        {
          "name": "sonner",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.0.7"
        },
        {
          "name": "tailwind-merge",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.6.0"
        },
        {
          "name": "tailwindcss",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.3.2"
        },
        {
          "name": "turndown",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^7.2.4"
        },
        {
          "name": "turndown-plugin-gfm",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.0.2"
        },
        {
          "name": "tw-animate-css",
          "manifest": "apps/plandesk-web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.4.0"
        },
        {
          "name": "@better-auth/api-key",
          "manifest": "packages/plandesk-api/package.json",
          "ecosystem": "npm",
          "version_constraint": "1.6.23"
        },
        {
          "name": "@hono/node-server",
          "manifest": "packages/plandesk-api/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.0.4"
        },
        {
          "name": "@libsql/kysely-libsql",
          "manifest": "packages/plandesk-api/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.4.1"
        },
        {
          "name": "@plandesk/db",
          "manifest": "packages/plandesk-api/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "better-auth",
          "manifest": "packages/plandesk-api/package.json",
          "ecosystem": "npm",
          "version_constraint": "1.6.23"
        },
        {
          "name": "hono",
          "manifest": "packages/plandesk-api/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.12.23"
        },
        {
          "name": "@hono/node-server",
          "manifest": "packages/plandesk-cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.0.4"
        },
        {
          "name": "@modelcontextprotocol/sdk",
          "manifest": "packages/plandesk-cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.29.0"
        },
        {
          "name": "@plandesk/api",
          "manifest": "packages/plandesk-cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@plandesk/db",
          "manifest": "packages/plandesk-cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@plandesk/mcp",
          "manifest": "packages/plandesk-cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "hono",
          "manifest": "packages/plandesk-cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.12.23"
        },
        {
          "name": "marked",
          "manifest": "packages/plandesk-cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^18.0.5"
        },
        {
          "name": "marked-shiki",
          "manifest": "packages/plandesk-cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.2.1"
        },
        {
          "name": "mermaid",
          "manifest": "packages/plandesk-cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^11.16.0"
        },
        {
          "name": "shiki",
          "manifest": "packages/plandesk-cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.3.1"
        },
        {
          "name": "@libsql/client",
          "manifest": "packages/plandesk-db/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.15.9"
        },
        {
          "name": "drizzle-orm",
          "manifest": "packages/plandesk-db/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.45.2"
        },
        {
          "name": "@modelcontextprotocol/sdk",
          "manifest": "packages/plandesk-mcp-client/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.29.0"
        },
        {
          "name": "@modelcontextprotocol/sdk",
          "manifest": "packages/plandesk-mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.29.0"
        },
        {
          "name": "@plandesk/api",
          "manifest": "packages/plandesk-mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "@plandesk/db",
          "manifest": "packages/plandesk-mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "hono",
          "manifest": "packages/plandesk-mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.12.23"
        },
        {
          "name": "marked",
          "manifest": "packages/plandesk-mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^18.0.5"
        },
        {
          "name": "zod",
          "manifest": "packages/plandesk-mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.25.76"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "@better-auth/api-key",
            "direct": true,
            "version": "1.6.23",
            "ecosystem": "npm"
          },
          {
            "name": "@dagrejs/dagre",
            "direct": true,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@dagrejs/dagre",
            "direct": true,
            "version": "^3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@dnd-kit/core",
            "direct": true,
            "version": "6.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@dnd-kit/core",
            "direct": true,
            "version": "^6.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@dnd-kit/utilities",
            "direct": true,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@dnd-kit/utilities",
            "direct": true,
            "version": "^3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@hono/node-server",
            "direct": true,
            "version": "1.19.14",
            "ecosystem": "npm"
          },
          {
            "name": "@hono/node-server",
            "direct": true,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@hono/node-server",
            "direct": true,
            "version": "^2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@libsql/client",
            "direct": true,
            "version": "0.15.15",
            "ecosystem": "npm"
          },
          {
            "name": "@libsql/client",
            "direct": true,
            "version": "^0.15.9",
            "ecosystem": "npm"
          },
          {
            "name": "@libsql/kysely-libsql",
            "direct": true,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@libsql/kysely-libsql",
            "direct": true,
            "version": "^0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@modelcontextprotocol/sdk",
            "direct": true,
            "version": "1.29.0",
            "ecosystem": "npm"
          },
          {
            "name": "@modelcontextprotocol/sdk",
            "direct": true,
            "version": "^1.29.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/vite",
            "direct": true,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/vite",
            "direct": true,
            "version": "^4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/react-query",
            "direct": true,
            "version": "5.101.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/react-query",
            "direct": true,
            "version": "^5.101.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/react-router",
            "direct": true,
            "version": "1.170.15",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/react-router",
            "direct": true,
            "version": "^1.170.15",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/core",
            "direct": true,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/core",
            "direct": true,
            "version": "^3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-file-handler",
            "direct": true,
            "version": "3.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-file-handler",
            "direct": true,
            "version": "^3.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-image",
            "direct": true,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-image",
            "direct": true,
            "version": "^3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-table",
            "direct": true,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-table",
            "direct": true,
            "version": "^3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-task-item",
            "direct": true,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-task-list",
            "direct": true,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/pm",
            "direct": true,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/pm",
            "direct": true,
            "version": "^3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/react",
            "direct": true,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/react",
            "direct": true,
            "version": "^3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/starter-kit",
            "direct": true,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/starter-kit",
            "direct": true,
            "version": "^3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/suggestion",
            "direct": true,
            "version": "3.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/suggestion",
            "direct": true,
            "version": "^3.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@xyflow/react",
            "direct": true,
            "version": "12.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "@xyflow/react",
            "direct": true,
            "version": "^12.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "better-auth",
            "direct": true,
            "version": "1.6.23",
            "ecosystem": "npm"
          },
          {
            "name": "class-variance-authority",
            "direct": true,
            "version": "0.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "class-variance-authority",
            "direct": true,
            "version": "^0.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "clsx",
            "direct": true,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "clsx",
            "direct": true,
            "version": "^2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "cmdk",
            "direct": true,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "cmdk",
            "direct": true,
            "version": "^1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "drizzle-orm",
            "direct": true,
            "version": "0.45.2",
            "ecosystem": "npm"
          },
          {
            "name": "drizzle-orm",
            "direct": true,
            "version": "^0.45.2",
            "ecosystem": "npm"
          },
          {
            "name": "hono",
            "direct": true,
            "version": "4.12.23",
            "ecosystem": "npm"
          },
          {
            "name": "hono",
            "direct": true,
            "version": "^4.12.23",
            "ecosystem": "npm"
          },
          {
            "name": "isomorphic-dompurify",
            "direct": true,
            "version": "3.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "isomorphic-dompurify",
            "direct": true,
            "version": "^3.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "lucide-react",
            "direct": true,
            "version": "1.24.0",
            "ecosystem": "npm"
          },
          {
            "name": "lucide-react",
            "direct": true,
            "version": "^1.24.0",
            "ecosystem": "npm"
          },
          {
            "name": "marked",
            "direct": true,
            "version": "16.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "marked",
            "direct": true,
            "version": "18.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "marked",
            "direct": true,
            "version": "^18.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "marked-shiki",
            "direct": true,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "marked-shiki",
            "direct": true,
            "version": "^1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "mermaid",
            "direct": true,
            "version": "11.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "mermaid",
            "direct": true,
            "version": "^11.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "next-themes",
            "direct": true,
            "version": "0.4.6",
            "ecosystem": "npm"
          },
          {
            "name": "next-themes",
            "direct": true,
            "version": "^0.4.6",
            "ecosystem": "npm"
          },
          {
            "name": "radix-ui",
            "direct": true,
            "version": "1.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "radix-ui",
            "direct": true,
            "version": "^1.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "react",
            "direct": true,
            "version": "19.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "react",
            "direct": true,
            "version": "^19.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "react-dom",
            "direct": true,
            "version": "19.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "react-dom",
            "direct": true,
            "version": "^19.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "shiki",
            "direct": true,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "shiki",
            "direct": true,
            "version": "^4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "sonner",
            "direct": true,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "sonner",
            "direct": true,
            "version": "^2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "tailwind-merge",
            "direct": true,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "tailwind-merge",
            "direct": true,
            "version": "^3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "tailwindcss",
            "direct": true,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "tailwindcss",
            "direct": true,
            "version": "^4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "turndown",
            "direct": true,
            "version": "7.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "turndown",
            "direct": true,
            "version": "^7.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "turndown-plugin-gfm",
            "direct": true,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "turndown-plugin-gfm",
            "direct": true,
            "version": "^1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "tw-animate-css",
            "direct": true,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "tw-animate-css",
            "direct": true,
            "version": "^1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "zod",
            "direct": true,
            "version": "3.25.76",
            "ecosystem": "npm"
          },
          {
            "name": "zod",
            "direct": true,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "zod",
            "direct": true,
            "version": "^3.25.76",
            "ecosystem": "npm"
          },
          {
            "name": "@antfu/install-pkg",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@asamuzakjp/css-color",
            "direct": false,
            "version": "5.1.11",
            "ecosystem": "npm"
          },
          {
            "name": "@asamuzakjp/dom-selector",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@asamuzakjp/generational-cache",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@asamuzakjp/nwsapi",
            "direct": false,
            "version": "2.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/compiler",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/internal-helpers",
            "direct": false,
            "version": "0.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/internal-helpers",
            "direct": false,
            "version": "0.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/markdown-remark",
            "direct": false,
            "version": "7.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/markdown-remark",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/mdx",
            "direct": false,
            "version": "5.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/prism",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/sitemap",
            "direct": false,
            "version": "3.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/starlight",
            "direct": false,
            "version": "0.39.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/starlight",
            "direct": false,
            "version": "^0.39.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/telemetry",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/compat-data",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/core",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/generator",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-compilation-targets",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-globals",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-imports",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-transforms",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-option",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helpers",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/runtime",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/template",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/traverse",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@better-auth/core",
            "direct": false,
            "version": "1.6.23",
            "ecosystem": "npm"
          },
          {
            "name": "@better-auth/drizzle-adapter",
            "direct": false,
            "version": "1.6.23",
            "ecosystem": "npm"
          },
          {
            "name": "@better-auth/kysely-adapter",
            "direct": false,
            "version": "1.6.23",
            "ecosystem": "npm"
          },
          {
            "name": "@better-auth/memory-adapter",
            "direct": false,
            "version": "1.6.23",
            "ecosystem": "npm"
          },
          {
            "name": "@better-auth/mongo-adapter",
            "direct": false,
            "version": "1.6.23",
            "ecosystem": "npm"
          },
          {
            "name": "@better-auth/prisma-adapter",
            "direct": false,
            "version": "1.6.23",
            "ecosystem": "npm"
          },
          {
            "name": "@better-auth/telemetry",
            "direct": false,
            "version": "1.6.23",
            "ecosystem": "npm"
          },
          {
            "name": "@better-auth/utils",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@better-fetch/fetch",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@braintree/sanitize-url",
            "direct": false,
            "version": "7.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@bramus/specificity",
            "direct": false,
            "version": "2.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@capsizecss/unpack",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@chevrotain/types",
            "direct": false,
            "version": "11.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@clack/core",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@clack/prompts",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/workers-types",
            "direct": false,
            "version": "4.20260609.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/workers-types",
            "direct": false,
            "version": "^4.20250609.0",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/color-helpers",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-calc",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-color-parser",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-parser-algorithms",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-syntax-patches-for-csstree",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-tokenizer",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ctrl/tinycolor",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@dagrejs/graphlib",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@dnd-kit/accessibility",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@drizzle-team/brocli",
            "direct": false,
            "version": "0.10.2",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/core",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/runtime",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/wasi-threads",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild-kit/core-utils",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild-kit/esm-loader",
            "direct": false,
            "version": "2.6.5",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/aix-ppc64",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/aix-ppc64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/aix-ppc64",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm64",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm64",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-x64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-x64",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-x64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-x64",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-arm64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-arm64",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-arm64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-arm64",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-x64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-x64",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-x64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-x64",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-arm64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-arm64",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-arm64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-arm64",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-x64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-x64",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-x64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-x64",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm64",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm64",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ia32",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ia32",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ia32",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ia32",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-loong64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-loong64",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-loong64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-loong64",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-mips64el",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-mips64el",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-mips64el",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-mips64el",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ppc64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ppc64",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ppc64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ppc64",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-riscv64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-riscv64",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-riscv64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-riscv64",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-s390x",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-s390x",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-s390x",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-s390x",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-x64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-x64",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-x64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-x64",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-arm64",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-arm64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-arm64",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-x64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-x64",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-x64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-x64",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-arm64",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-arm64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-arm64",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-x64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-x64",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-x64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-x64",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openharmony-arm64",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openharmony-arm64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openharmony-arm64",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/sunos-x64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/sunos-x64",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/sunos-x64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/sunos-x64",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-arm64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-arm64",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-arm64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-arm64",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-ia32",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-ia32",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-ia32",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-ia32",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-x64",
            "direct": false,
            "version": "0.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-x64",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-x64",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-x64",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/eslint-utils",
            "direct": false,
            "version": "4.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/regexpp",
            "direct": false,
            "version": "4.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/config-array",
            "direct": false,
            "version": "0.21.2",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/config-helpers",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/core",
            "direct": false,
            "version": "0.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/eslintrc",
            "direct": false,
            "version": "3.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/js",
            "direct": false,
            "version": "9.39.4",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/object-schema",
            "direct": false,
            "version": "2.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/plugin-kit",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@exodus/bytes",
            "direct": false,
            "version": "1.15.1",
            "ecosystem": "npm"
          },
          {
            "name": "@expressive-code/core",
            "direct": false,
            "version": "0.42.0",
            "ecosystem": "npm"
          },
          {
            "name": "@expressive-code/plugin-frames",
            "direct": false,
            "version": "0.42.0",
            "ecosystem": "npm"
          },
          {
            "name": "@expressive-code/plugin-shiki",
            "direct": false,
            "version": "0.42.0",
            "ecosystem": "npm"
          },
          {
            "name": "@expressive-code/plugin-text-markers",
            "direct": false,
            "version": "0.42.0",
            "ecosystem": "npm"
          },
          {
            "name": "@floating-ui/core",
            "direct": false,
            "version": "1.7.5",
            "ecosystem": "npm"
          },
          {
            "name": "@floating-ui/core",
            "direct": false,
            "version": "1.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "@floating-ui/dom",
            "direct": false,
            "version": "1.7.6",
            "ecosystem": "npm"
          },
          {
            "name": "@floating-ui/dom",
            "direct": false,
            "version": "1.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "@floating-ui/react-dom",
            "direct": false,
            "version": "2.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@floating-ui/utils",
            "direct": false,
            "version": "0.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "@floating-ui/utils",
            "direct": false,
            "version": "0.2.12",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/core",
            "direct": false,
            "version": "0.19.2",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/node",
            "direct": false,
            "version": "0.16.8",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/types",
            "direct": false,
            "version": "0.15.0",
            "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.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/colour",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-darwin-arm64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-darwin-x64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-darwin-arm64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-darwin-x64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-arm",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-arm64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-ppc64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-riscv64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-s390x",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-x64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linuxmusl-arm64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linuxmusl-x64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-arm",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-arm64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-ppc64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-riscv64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-s390x",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-x64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linuxmusl-arm64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linuxmusl-x64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-wasm32",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-win32-arm64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-win32-ia32",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-win32-x64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/gen-mapping",
            "direct": false,
            "version": "0.3.13",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/remapping",
            "direct": false,
            "version": "2.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/resolve-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.31",
            "ecosystem": "npm"
          },
          {
            "name": "@libsql/core",
            "direct": false,
            "version": "0.15.15",
            "ecosystem": "npm"
          },
          {
            "name": "@libsql/darwin-arm64",
            "direct": false,
            "version": "0.5.29",
            "ecosystem": "npm"
          },
          {
            "name": "@libsql/darwin-x64",
            "direct": false,
            "version": "0.5.29",
            "ecosystem": "npm"
          },
          {
            "name": "@libsql/hrana-client",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@libsql/isomorphic-fetch",
            "direct": false,
            "version": "0.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@libsql/isomorphic-ws",
            "direct": false,
            "version": "0.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@libsql/linux-arm-gnueabihf",
            "direct": false,
            "version": "0.5.29",
            "ecosystem": "npm"
          },
          {
            "name": "@libsql/linux-arm-musleabihf",
            "direct": false,
            "version": "0.5.29",
            "ecosystem": "npm"
          },
          {
            "name": "@libsql/linux-arm64-gnu",
            "direct": false,
            "version": "0.5.29",
            "ecosystem": "npm"
          },
          {
            "name": "@libsql/linux-arm64-musl",
            "direct": false,
            "version": "0.5.29",
            "ecosystem": "npm"
          },
          {
            "name": "@libsql/linux-x64-gnu",
            "direct": false,
            "version": "0.5.29",
            "ecosystem": "npm"
          },
          {
            "name": "@libsql/linux-x64-musl",
            "direct": false,
            "version": "0.5.29",
            "ecosystem": "npm"
          },
          {
            "name": "@libsql/win32-x64-msvc",
            "direct": false,
            "version": "0.5.29",
            "ecosystem": "npm"
          },
          {
            "name": "@mdx-js/mdx",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@mermaid-js/parser",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@mixmark-io/domino",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/wasm-runtime",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@neon-rs/load",
            "direct": false,
            "version": "0.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@noble/ciphers",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@noble/hashes",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/semantic-conventions",
            "direct": false,
            "version": "1.43.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oslojs/encoding",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxc-project/types",
            "direct": false,
            "version": "0.133.0",
            "ecosystem": "npm"
          },
          {
            "name": "@pagefind/darwin-arm64",
            "direct": false,
            "version": "1.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "@pagefind/darwin-x64",
            "direct": false,
            "version": "1.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "@pagefind/default-ui",
            "direct": false,
            "version": "1.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "@pagefind/freebsd-x64",
            "direct": false,
            "version": "1.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "@pagefind/linux-arm64",
            "direct": false,
            "version": "1.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "@pagefind/linux-x64",
            "direct": false,
            "version": "1.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "@pagefind/windows-arm64",
            "direct": false,
            "version": "1.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "@pagefind/windows-x64",
            "direct": false,
            "version": "1.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/number",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/primitive",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-accessible-icon",
            "direct": false,
            "version": "1.1.11",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-accordion",
            "direct": false,
            "version": "1.2.16",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-alert-dialog",
            "direct": false,
            "version": "1.1.19",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-arrow",
            "direct": false,
            "version": "1.1.11",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-aspect-ratio",
            "direct": false,
            "version": "1.1.11",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-avatar",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-checkbox",
            "direct": false,
            "version": "1.3.7",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-collapsible",
            "direct": false,
            "version": "1.1.16",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-collection",
            "direct": false,
            "version": "1.1.12",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-compose-refs",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-context",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-context-menu",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-dialog",
            "direct": false,
            "version": "1.1.19",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-direction",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-dismissable-layer",
            "direct": false,
            "version": "1.1.15",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-dropdown-menu",
            "direct": false,
            "version": "2.1.20",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-focus-guards",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-focus-scope",
            "direct": false,
            "version": "1.1.12",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-form",
            "direct": false,
            "version": "0.1.12",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-hover-card",
            "direct": false,
            "version": "1.1.19",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-id",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-label",
            "direct": false,
            "version": "2.1.11",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-menu",
            "direct": false,
            "version": "2.1.20",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-menubar",
            "direct": false,
            "version": "1.1.20",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-navigation-menu",
            "direct": false,
            "version": "1.2.18",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-one-time-password-field",
            "direct": false,
            "version": "0.1.12",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-password-toggle-field",
            "direct": false,
            "version": "0.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-popover",
            "direct": false,
            "version": "1.1.19",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-popper",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-portal",
            "direct": false,
            "version": "1.1.13",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-presence",
            "direct": false,
            "version": "1.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-primitive",
            "direct": false,
            "version": "2.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-progress",
            "direct": false,
            "version": "1.1.12",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-radio-group",
            "direct": false,
            "version": "1.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-roving-focus",
            "direct": false,
            "version": "1.1.15",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-scroll-area",
            "direct": false,
            "version": "1.2.14",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-select",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-separator",
            "direct": false,
            "version": "1.1.11",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-slider",
            "direct": false,
            "version": "1.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-slot",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-switch",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-tabs",
            "direct": false,
            "version": "1.1.17",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-toast",
            "direct": false,
            "version": "1.2.19",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-toggle",
            "direct": false,
            "version": "1.1.14",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-toggle-group",
            "direct": false,
            "version": "1.1.15",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-toolbar",
            "direct": false,
            "version": "1.1.15",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-tooltip",
            "direct": false,
            "version": "1.2.12",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-callback-ref",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-controllable-state",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-effect-event",
            "direct": false,
            "version": "0.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-escape-keydown",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-is-hydrated",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-layout-effect",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-previous",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-rect",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-use-size",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/react-visually-hidden",
            "direct": false,
            "version": "1.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "@radix-ui/rect",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-android-arm64",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-darwin-arm64",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-darwin-x64",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-freebsd-x64",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm64-gnu",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm64-musl",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-ppc64-gnu",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-s390x-gnu",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-x64-gnu",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-x64-musl",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-openharmony-arm64",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-wasm32-wasi",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-win32-arm64-msvc",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-win32-x64-msvc",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/pluginutils",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/pluginutils",
            "direct": false,
            "version": "5.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-android-arm-eabi",
            "direct": false,
            "version": "4.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-android-arm64",
            "direct": false,
            "version": "4.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-darwin-arm64",
            "direct": false,
            "version": "4.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-darwin-x64",
            "direct": false,
            "version": "4.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-freebsd-arm64",
            "direct": false,
            "version": "4.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-freebsd-x64",
            "direct": false,
            "version": "4.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm-gnueabihf",
            "direct": false,
            "version": "4.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm-musleabihf",
            "direct": false,
            "version": "4.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm64-gnu",
            "direct": false,
            "version": "4.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm64-musl",
            "direct": false,
            "version": "4.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-loong64-gnu",
            "direct": false,
            "version": "4.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-loong64-musl",
            "direct": false,
            "version": "4.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-ppc64-gnu",
            "direct": false,
            "version": "4.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-ppc64-musl",
            "direct": false,
            "version": "4.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-riscv64-gnu",
            "direct": false,
            "version": "4.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-riscv64-musl",
            "direct": false,
            "version": "4.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-s390x-gnu",
            "direct": false,
            "version": "4.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-x64-gnu",
            "direct": false,
            "version": "4.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-x64-musl",
            "direct": false,
            "version": "4.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-openbsd-x64",
            "direct": false,
            "version": "4.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-openharmony-arm64",
            "direct": false,
            "version": "4.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-arm64-msvc",
            "direct": false,
            "version": "4.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-ia32-msvc",
            "direct": false,
            "version": "4.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-x64-gnu",
            "direct": false,
            "version": "4.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-x64-msvc",
            "direct": false,
            "version": "4.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/core",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/engine-javascript",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/engine-oniguruma",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/langs",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/primitive",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/themes",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/types",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/vscode-textmate",
            "direct": false,
            "version": "10.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@standard-schema/spec",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/node",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-android-arm64",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-darwin-arm64",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-darwin-x64",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-freebsd-x64",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-linux-arm-gnueabihf",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-linux-arm64-gnu",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-linux-arm64-musl",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-linux-x64-gnu",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-linux-x64-musl",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-wasm32-wasi",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-win32-arm64-msvc",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@tailwindcss/oxide-win32-x64-msvc",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/history",
            "direct": false,
            "version": "1.162.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/query-core",
            "direct": false,
            "version": "5.101.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/react-store",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/router-core",
            "direct": false,
            "version": "1.171.13",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/router-generator",
            "direct": false,
            "version": "1.167.17",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/router-plugin",
            "direct": false,
            "version": "1.168.18",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/router-plugin",
            "direct": false,
            "version": "^1.168.18",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/router-utils",
            "direct": false,
            "version": "1.162.2",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/store",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/virtual-file-routes",
            "direct": false,
            "version": "1.162.0",
            "ecosystem": "npm"
          },
          {
            "name": "@testing-library/dom",
            "direct": false,
            "version": "10.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@testing-library/react",
            "direct": false,
            "version": "16.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@testing-library/react",
            "direct": false,
            "version": "^16.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-blockquote",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-bold",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-bubble-menu",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-bullet-list",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-code",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-code-block",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-document",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-dropcursor",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-floating-menu",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-gapcursor",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-hard-break",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-heading",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-horizontal-rule",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-italic",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-link",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-list",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-list-item",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-list-keymap",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-ordered-list",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-paragraph",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-strike",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-text",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-text-style",
            "direct": false,
            "version": "3.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extension-underline",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tiptap/extensions",
            "direct": false,
            "version": "3.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "@turbo/darwin-64",
            "direct": false,
            "version": "2.9.16",
            "ecosystem": "npm"
          },
          {
            "name": "@turbo/darwin-arm64",
            "direct": false,
            "version": "2.9.16",
            "ecosystem": "npm"
          },
          {
            "name": "@turbo/linux-64",
            "direct": false,
            "version": "2.9.16",
            "ecosystem": "npm"
          },
          {
            "name": "@turbo/linux-arm64",
            "direct": false,
            "version": "2.9.16",
            "ecosystem": "npm"
          },
          {
            "name": "@turbo/windows-64",
            "direct": false,
            "version": "2.9.16",
            "ecosystem": "npm"
          },
          {
            "name": "@turbo/windows-arm64",
            "direct": false,
            "version": "2.9.16",
            "ecosystem": "npm"
          },
          {
            "name": "@tybys/wasm-util",
            "direct": false,
            "version": "0.10.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/aria-query",
            "direct": false,
            "version": "5.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/better-sqlite3",
            "direct": false,
            "version": "7.6.13",
            "ecosystem": "npm"
          },
          {
            "name": "@types/braces",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/chai",
            "direct": false,
            "version": "5.2.3",
            "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.4",
            "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.13",
            "ecosystem": "npm"
          },
          {
            "name": "@types/deep-eql",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree-jsx",
            "direct": false,
            "version": "1.0.5",
            "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.14",
            "ecosystem": "npm"
          },
          {
            "name": "@types/micromatch",
            "direct": false,
            "version": "4.0.10",
            "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": "24.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "25.9.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/react",
            "direct": false,
            "version": "19.2.17",
            "ecosystem": "npm"
          },
          {
            "name": "@types/react",
            "direct": false,
            "version": "^19.2.17",
            "ecosystem": "npm"
          },
          {
            "name": "@types/react-dom",
            "direct": false,
            "version": "19.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/react-dom",
            "direct": false,
            "version": "^19.2.3",
            "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/turndown",
            "direct": false,
            "version": "5.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/turndown",
            "direct": false,
            "version": "^5.0.6",
            "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": "@types/use-sync-external-store",
            "direct": false,
            "version": "0.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/ws",
            "direct": false,
            "version": "8.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/eslint-plugin",
            "direct": false,
            "version": "8.60.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/parser",
            "direct": false,
            "version": "8.60.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/project-service",
            "direct": false,
            "version": "8.60.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/scope-manager",
            "direct": false,
            "version": "8.60.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/tsconfig-utils",
            "direct": false,
            "version": "8.60.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/type-utils",
            "direct": false,
            "version": "8.60.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/types",
            "direct": false,
            "version": "8.60.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/typescript-estree",
            "direct": false,
            "version": "8.60.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/utils",
            "direct": false,
            "version": "8.60.1",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/visitor-keys",
            "direct": false,
            "version": "8.60.1",
            "ecosystem": "npm"
          },
          {
            "name": "@ungap/structured-clone",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@upsetjs/venn.js",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@vitejs/plugin-react",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@vitejs/plugin-react",
            "direct": false,
            "version": "^6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/expect",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/mocker",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/pretty-format",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/runner",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/snapshot",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/spy",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/utils",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "@xyflow/system",
            "direct": false,
            "version": "0.0.77",
            "ecosystem": "npm"
          },
          {
            "name": "accepts",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.16.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-jsx",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "6.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.20.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv-formats",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansis",
            "direct": false,
            "version": "4.3.1",
            "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-hidden",
            "direct": false,
            "version": "1.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "aria-query",
            "direct": false,
            "version": "5.3.0",
            "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": "assertion-error",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "astring",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "astro",
            "direct": false,
            "version": "6.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "astro",
            "direct": false,
            "version": "^6.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "astro-expressive-code",
            "direct": false,
            "version": "0.42.0",
            "ecosystem": "npm"
          },
          {
            "name": "axobject-query",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "babel-dead-code-elimination",
            "direct": false,
            "version": "1.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "bail",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "base64-js",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "baseline-browser-mapping",
            "direct": false,
            "version": "2.10.34",
            "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": "better-call",
            "direct": false,
            "version": "1.3.7",
            "ecosystem": "npm"
          },
          {
            "name": "better-sqlite3",
            "direct": false,
            "version": "12.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "bidi-js",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "bindings",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "bl",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "body-parser",
            "direct": false,
            "version": "2.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "boolbase",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.15",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "5.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "4.28.2",
            "ecosystem": "npm"
          },
          {
            "name": "buffer",
            "direct": false,
            "version": "5.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-from",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "bytes",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "cac",
            "direct": false,
            "version": "6.7.14",
            "ecosystem": "npm"
          },
          {
            "name": "call-bind-apply-helpers",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "call-bound",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "callsites",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-lite",
            "direct": false,
            "version": "1.0.30001797",
            "ecosystem": "npm"
          },
          {
            "name": "ccount",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "chai",
            "direct": false,
            "version": "5.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.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": "check-error",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "chownr",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "ci-info",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "classcat",
            "direct": false,
            "version": "5.0.5",
            "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": "11.1.0",
            "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": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "content-disposition",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "content-type",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "content-type",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cookie",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "cookie",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "cookie-es",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "cookie-es",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "cookie-signature",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "cors",
            "direct": false,
            "version": "2.8.6",
            "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-select",
            "direct": false,
            "version": "5.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "css-selector-parser",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "css-tree",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "css-tree",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "css-what",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "cssesc",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "csso",
            "direct": false,
            "version": "5.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "csstype",
            "direct": false,
            "version": "3.2.3",
            "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": "data-uri-to-buffer",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "data-urls",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "dayjs",
            "direct": false,
            "version": "1.11.21",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "decimal.js",
            "direct": false,
            "version": "10.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "decode-named-character-reference",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "decompress-response",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "deep-eql",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "deep-extend",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "deep-is",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "defu",
            "direct": false,
            "version": "6.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "delaunator",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "depd",
            "direct": false,
            "version": "2.0.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.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "detect-libc",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "detect-node-es",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "devalue",
            "direct": false,
            "version": "5.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "devlop",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "diff",
            "direct": false,
            "version": "8.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "direction",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "dom-accessibility-api",
            "direct": false,
            "version": "0.5.16",
            "ecosystem": "npm"
          },
          {
            "name": "dom-serializer",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "domelementtype",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "domhandler",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "dompurify",
            "direct": false,
            "version": "3.4.8",
            "ecosystem": "npm"
          },
          {
            "name": "domutils",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "drizzle-kit",
            "direct": false,
            "version": "0.31.10",
            "ecosystem": "npm"
          },
          {
            "name": "drizzle-kit",
            "direct": false,
            "version": "^0.31.10",
            "ecosystem": "npm"
          },
          {
            "name": "dset",
            "direct": false,
            "version": "3.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "dunder-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ee-first",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "electron-to-chromium",
            "direct": false,
            "version": "1.5.368",
            "ecosystem": "npm"
          },
          {
            "name": "encodeurl",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "end-of-stream",
            "direct": false,
            "version": "1.4.5",
            "ecosystem": "npm"
          },
          {
            "name": "enhanced-resolve",
            "direct": false,
            "version": "5.21.6",
            "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": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-define-property",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-errors",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-module-lexer",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-module-lexer",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-object-atoms",
            "direct": false,
            "version": "1.1.2",
            "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.18.20",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.25.12",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.27.7",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-html",
            "direct": false,
            "version": "1.0.3",
            "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.39.4",
            "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": "eslint-visitor-keys",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "espree",
            "direct": false,
            "version": "10.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "esquery",
            "direct": false,
            "version": "1.7.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": "etag",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "eventemitter3",
            "direct": false,
            "version": "5.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "eventsource",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "eventsource-parser",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "expand-template",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "expect-type",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "express",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "express-rate-limit",
            "direct": false,
            "version": "8.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "expressive-code",
            "direct": false,
            "version": "0.42.0",
            "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-equals",
            "direct": false,
            "version": "5.4.0",
            "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-string-truncated-width",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-string-width",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-wrap-ansi",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "fdir",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "fetch-blob",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "file-entry-cache",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "file-uri-to-path",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "finalhandler",
            "direct": false,
            "version": "2.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.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "flattie",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "fontace",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "fontkitten",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "formdata-polyfill",
            "direct": false,
            "version": "4.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "forwarded",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "fresh",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fs-constants",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "function-bind",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "gensync",
            "direct": false,
            "version": "1.0.0-beta.2",
            "ecosystem": "npm"
          },
          {
            "name": "get-intrinsic",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-nonce",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-tsconfig",
            "direct": false,
            "version": "4.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-tsconfig",
            "direct": false,
            "version": "5.0.0-beta.4",
            "ecosystem": "npm"
          },
          {
            "name": "github-from-package",
            "direct": false,
            "version": "0.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "github-slugger",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "globals",
            "direct": false,
            "version": "14.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "gopd",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "h3",
            "direct": false,
            "version": "1.15.11",
            "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": "has-symbols",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.4",
            "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-mdast",
            "direct": false,
            "version": "10.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-to-parse5",
            "direct": false,
            "version": "8.0.1",
            "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-encoding-sniffer",
            "direct": false,
            "version": "6.0.0",
            "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": "http-errors",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "i18next",
            "direct": false,
            "version": "26.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "ieee754",
            "direct": false,
            "version": "1.2.1",
            "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": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "ini",
            "direct": false,
            "version": "1.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "inline-style-parser",
            "direct": false,
            "version": "0.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "internmap",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "internmap",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "ip-address",
            "direct": false,
            "version": "10.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ipaddr.js",
            "direct": false,
            "version": "1.9.1",
            "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-docker",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "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-potential-custom-element-name",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-promise",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-wsl",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "isbot",
            "direct": false,
            "version": "5.1.41",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "jiti",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jose",
            "direct": false,
            "version": "6.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "js-base64",
            "direct": false,
            "version": "3.7.8",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsdom",
            "direct": false,
            "version": "29.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "jsdom",
            "direct": false,
            "version": "^29.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "jsesc",
            "direct": false,
            "version": "3.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-schema-traverse",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-typed",
            "direct": false,
            "version": "8.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "json-stable-stringify-without-jsonify",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "jsonc-parser",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "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": "klona",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "kysely",
            "direct": false,
            "version": "0.29.3",
            "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": "libsql",
            "direct": false,
            "version": "0.5.29",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-android-arm64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-darwin-arm64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-darwin-x64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-freebsd-x64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm64-gnu",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm64-musl",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-x64-gnu",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-x64-musl",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-win32-arm64-msvc",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-win32-x64-msvc",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "linkifyjs",
            "direct": false,
            "version": "4.3.3",
            "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": "loupe",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "11.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "lz-string",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "magic-string",
            "direct": false,
            "version": "0.30.21",
            "ecosystem": "npm"
          },
          {
            "name": "magicast",
            "direct": false,
            "version": "0.5.3",
            "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": "math-intrinsics",
            "direct": false,
            "version": "1.1.0",
            "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.3",
            "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.1",
            "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.0.28",
            "ecosystem": "npm"
          },
          {
            "name": "mdn-data",
            "direct": false,
            "version": "2.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "media-typer",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge-descriptors",
            "direct": false,
            "version": "2.0.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": "4.0.0",
            "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": "mime-db",
            "direct": false,
            "version": "1.54.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-response",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "10.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "mkdirp-classic",
            "direct": false,
            "version": "0.5.3",
            "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.12",
            "ecosystem": "npm"
          },
          {
            "name": "nanostores",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "napi-build-utils",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "natural-compare",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "negotiator",
            "direct": false,
            "version": "1.0.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-abi",
            "direct": false,
            "version": "3.92.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-domexception",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-fetch",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "node-fetch-native",
            "direct": false,
            "version": "1.6.7",
            "ecosystem": "npm"
          },
          {
            "name": "node-mock-http",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "node-releases",
            "direct": false,
            "version": "2.0.47",
            "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": "object-assign",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-inspect",
            "direct": false,
            "version": "1.13.4",
            "ecosystem": "npm"
          },
          {
            "name": "obug",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "ofetch",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "ohash",
            "direct": false,
            "version": "2.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "on-finished",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "oniguruma-parser",
            "direct": false,
            "version": "0.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "oniguruma-to-es",
            "direct": false,
            "version": "4.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "optionator",
            "direct": false,
            "version": "0.9.4",
            "ecosystem": "npm"
          },
          {
            "name": "orderedmap",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-queue",
            "direct": false,
            "version": "9.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-timeout",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "package-manager-detector",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "pagefind",
            "direct": false,
            "version": "1.5.2",
            "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": "parse5",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parseurl",
            "direct": false,
            "version": "1.3.3",
            "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": "path-to-regexp",
            "direct": false,
            "version": "8.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "pathe",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "pathval",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "piccolore",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "pkce-challenge",
            "direct": false,
            "version": "5.0.1",
            "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.15",
            "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": "prebuild-install",
            "direct": false,
            "version": "7.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "prelude-ls",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "prettier",
            "direct": false,
            "version": "3.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "pretty-format",
            "direct": false,
            "version": "27.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "prismjs",
            "direct": false,
            "version": "1.30.0",
            "ecosystem": "npm"
          },
          {
            "name": "promise-limit",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "property-information",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-changeset",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-commands",
            "direct": false,
            "version": "1.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-dropcursor",
            "direct": false,
            "version": "1.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-gapcursor",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-history",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-inputrules",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-keymap",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-model",
            "direct": false,
            "version": "1.25.7",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-schema-list",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-state",
            "direct": false,
            "version": "1.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-tables",
            "direct": false,
            "version": "1.8.5",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-transform",
            "direct": false,
            "version": "1.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "prosemirror-view",
            "direct": false,
            "version": "1.41.8",
            "ecosystem": "npm"
          },
          {
            "name": "proxy-addr",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "pump",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "qs",
            "direct": false,
            "version": "6.15.2",
            "ecosystem": "npm"
          },
          {
            "name": "radix3",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "range-parser",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "raw-body",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "rc",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "react-is",
            "direct": false,
            "version": "17.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "react-remove-scroll",
            "direct": false,
            "version": "2.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "react-remove-scroll-bar",
            "direct": false,
            "version": "2.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "react-style-singleton",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "3.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "5.0.0",
            "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.1.0",
            "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.42.0",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-format",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-minify-whitespace",
            "direct": false,
            "version": "6.0.2",
            "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-remark",
            "direct": false,
            "version": "10.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-stringify",
            "direct": false,
            "version": "10.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "remark-directive",
            "direct": false,
            "version": "4.0.0",
            "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": "require-from-string",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-pkg-maps",
            "direct": false,
            "version": "1.0.0",
            "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": "robust-predicates",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "rolldown",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "rollup",
            "direct": false,
            "version": "4.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "rope-sequence",
            "direct": false,
            "version": "1.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "rou3",
            "direct": false,
            "version": "0.7.12",
            "ecosystem": "npm"
          },
          {
            "name": "roughjs",
            "direct": false,
            "version": "4.6.6",
            "ecosystem": "npm"
          },
          {
            "name": "router",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "rw",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "safer-buffer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "sax",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "saxes",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "scheduler",
            "direct": false,
            "version": "0.27.0",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "6.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "send",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "seroval",
            "direct": false,
            "version": "1.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "seroval-plugins",
            "direct": false,
            "version": "1.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "serve-static",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "set-cookie-parser",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "setprototypeof",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "sharp",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "sharp",
            "direct": false,
            "version": "^0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-command",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-regex",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-list",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-map",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-weakmap",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "siginfo",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "simple-concat",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "simple-get",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "sisteransi",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "sitemap",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "smol-toml",
            "direct": false,
            "version": "1.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.6.1",
            "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": "source-map-support",
            "direct": false,
            "version": "0.5.21",
            "ecosystem": "npm"
          },
          {
            "name": "space-separated-tokens",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "stackback",
            "direct": false,
            "version": "0.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "starlight-llms-txt",
            "direct": false,
            "version": "0.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "statuses",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "std-env",
            "direct": false,
            "version": "3.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "stream-replace-string",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "string_decoder",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "stringify-entities",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-literal",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "style-to-js",
            "direct": false,
            "version": "1.1.21",
            "ecosystem": "npm"
          },
          {
            "name": "style-to-object",
            "direct": false,
            "version": "1.0.14",
            "ecosystem": "npm"
          },
          {
            "name": "stylis",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "svgo",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "symbol-tree",
            "direct": false,
            "version": "3.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "tapable",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "tar-fs",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "tar-stream",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "tiny-inflate",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "tinybench",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "tinyclip",
            "direct": false,
            "version": "0.1.14",
            "ecosystem": "npm"
          },
          {
            "name": "tinyexec",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "tinyexec",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "tinyglobby",
            "direct": false,
            "version": "0.2.17",
            "ecosystem": "npm"
          },
          {
            "name": "tinypool",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "tinyrainbow",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "tinyspy",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "tldts",
            "direct": false,
            "version": "7.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "tldts-core",
            "direct": false,
            "version": "7.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "toidentifier",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "tough-cookie",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "tr46",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "trim-lines",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "trim-trailing-lines",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "trough",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ts-api-utils",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "ts-dedent",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "tsx",
            "direct": false,
            "version": "4.22.4",
            "ecosystem": "npm"
          },
          {
            "name": "tunnel-agent",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "turbo",
            "direct": false,
            "version": "2.9.16",
            "ecosystem": "npm"
          },
          {
            "name": "type-check",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-is",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "^6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "typescript-eslint",
            "direct": false,
            "version": "8.60.1",
            "ecosystem": "npm"
          },
          {
            "name": "ufo",
            "direct": false,
            "version": "1.6.4",
            "ecosystem": "npm"
          },
          {
            "name": "ultrahtml",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "uncrypto",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "undici",
            "direct": false,
            "version": "7.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "7.18.2",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "7.24.6",
            "ecosystem": "npm"
          },
          {
            "name": "unified",
            "direct": false,
            "version": "11.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "unifont",
            "direct": false,
            "version": "0.7.4",
            "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.1.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": "unpipe",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unplugin",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unstorage",
            "direct": false,
            "version": "1.17.5",
            "ecosystem": "npm"
          },
          {
            "name": "update-browserslist-db",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "uri-js",
            "direct": false,
            "version": "4.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "use-callback-ref",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "use-sidecar",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "use-sync-external-store",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "util-deprecate",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "uuid",
            "direct": false,
            "version": "14.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "vary",
            "direct": false,
            "version": "1.1.2",
            "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": "7.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "vite",
            "direct": false,
            "version": "8.0.16",
            "ecosystem": "npm"
          },
          {
            "name": "vite",
            "direct": false,
            "version": "^8.0.16",
            "ecosystem": "npm"
          },
          {
            "name": "vite-node",
            "direct": false,
            "version": "3.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "vitefu",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "vitest",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "vitest",
            "direct": false,
            "version": "^3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "w3c-keyname",
            "direct": false,
            "version": "2.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "w3c-xmlserializer",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "web-namespaces",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "web-streams-polyfill",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "webidl-conversions",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "webpack-virtual-modules",
            "direct": false,
            "version": "0.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-mimetype",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-url",
            "direct": false,
            "version": "16.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": "why-is-node-running",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "word-wrap",
            "direct": false,
            "version": "1.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": false,
            "version": "8.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "xml-name-validator",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "xmlchars",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "xxhash-wasm",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "22.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "zod-to-json-schema",
            "direct": false,
            "version": "3.25.2",
            "ecosystem": "npm"
          },
          {
            "name": "zustand",
            "direct": false,
            "version": "4.5.7",
            "ecosystem": "npm"
          },
          {
            "name": "zwitch",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 1306,
        "direct_count": 89,
        "indirect_count": 1217
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 0,
        "open_issues": 16,
        "closed_ratio": 0.448,
        "closed_issues": 13,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "octalpixel",
          "commits": 347,
          "avatar_url": "https://avatars.githubusercontent.com/u/30002284?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": false,
      "has_tests": true,
      "ci_workflows": [],
      "has_docs_dir": false,
      "linter_configs": [
        "eslint.config.js"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "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": null,
            "reason": "no pull request found",
            "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 0/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 3,
            "reason": "project has 1 contributing companies or organizations -- score normalized to 3",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": null,
            "reason": "no workflows found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "project was created within the last 90 days. Please review its contents carefully",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "no SAST tool detected",
            "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": null,
            "reason": "No tokens found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "34 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "9a679547cfa1630dd96e7879d9258aa8e4e7daad",
        "ran_at": "2026-07-24T04:56:43Z",
        "aggregate_score": 1.5,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": null,
      "oldest_open_prs": [],
      "last_merged_pr_at": null,
      "ci_last_conclusion": null,
      "oldest_open_issues": [
        {
          "number": 14,
          "created_at": "2026-07-09T11:10:07Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 15,
          "created_at": "2026-07-09T11:10:12Z",
          "last_comment_at": "2026-07-09T11:33:25Z",
          "last_comment_author": "octalpixel"
        },
        {
          "number": 16,
          "created_at": "2026-07-09T11:10:14Z",
          "last_comment_at": "2026-07-09T11:33:27Z",
          "last_comment_author": "octalpixel"
        },
        {
          "number": 17,
          "created_at": "2026-07-09T11:11:08Z",
          "last_comment_at": "2026-07-09T11:33:30Z",
          "last_comment_author": "octalpixel"
        },
        {
          "number": 18,
          "created_at": "2026-07-09T11:11:23Z",
          "last_comment_at": "2026-07-09T11:33:35Z",
          "last_comment_author": "octalpixel"
        },
        {
          "number": 19,
          "created_at": "2026-07-09T11:26:56Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 20,
          "created_at": "2026-07-09T11:26:58Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 21,
          "created_at": "2026-07-09T11:27:01Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 22,
          "created_at": "2026-07-09T11:27:03Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 23,
          "created_at": "2026-07-09T11:27:05Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 24,
          "created_at": "2026-07-09T11:27:08Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 25,
          "created_at": "2026-07-09T11:27:10Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 26,
          "created_at": "2026-07-09T11:27:13Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 27,
          "created_at": "2026-07-09T11:33:37Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 28,
          "created_at": "2026-07-09T11:33:39Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 29,
          "created_at": "2026-07-09T11:33:42Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/asyncdotengineering/plandesk",
    "host": "github.com",
    "name": "plandesk",
    "owner": "asyncdotengineering"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "at_risk",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 47,
      "inputs": {
        "security": 26,
        "vitality": 70,
        "community": 36,
        "governance": 43,
        "engineering": 52
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 70,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 58,
            "inputs": {
              "commits_last_year": 347,
              "human_commit_share": 1,
              "days_since_last_push": 5,
              "active_weeks_last_year": 5
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "5/52 weeks with commits",
                "points": 3.5,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "347 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 347
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "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": 88,
            "inputs": {
              "releases_count": 14,
              "latest_release_tag": "v0.20.0",
              "releases_from_tags": true,
              "days_since_latest_release": 11,
              "mean_days_between_releases": 3.9
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "14 version tags (no GitHub releases)",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "version_tags_no_releases",
                    "params": {
                      "count": 14
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 11 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 11
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~3.9 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 3.9
                    }
                  }
                ],
                "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": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 36,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 0,
              "stars": 1,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "1 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "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
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "good",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 71,
            "inputs": {
              "packages": [
                "@plandesk/db",
                "@plandesk/api",
                "@plandesk/cli",
                "@plandesk/mcp",
                "@plandesk/mcp-client"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 17285
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "17,285 downloads/month across npm",
                "points": 56.5,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 17285,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "at_risk",
        "name": "Sustainability & Governance",
        "value": 43,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 13,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 1,
              "top_contributor_share": 1
            },
            "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 100% of commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "1 contributors",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "at_risk",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 34,
            "inputs": {
              "merged_prs": 0,
              "open_issues": 16,
              "closed_issues": 13,
              "issue_closed_ratio": 0.448,
              "closed_unmerged_prs": 0
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "45% of issues closed",
                "points": 20.9,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 45
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "no decided pull requests or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_decided_prs_or_data",
                    "params": {}
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "at_risk",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 44,
            "inputs": {
              "followers": 0,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "asyncdotengineering",
              "public_repos": 9,
              "account_age_days": 1197
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "0 followers of asyncdotengineering",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 0,
                      "login": "asyncdotengineering"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "9 public repos, account ~3 yr old",
                "points": 13.8,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 9
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 3
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "@plandesk/db",
                "@plandesk/api",
                "@plandesk/cli",
                "@plandesk/mcp",
                "@plandesk/mcp-client"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 4
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "5 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 5,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 4 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 4
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "50 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 50
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 52,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 50,
            "inputs": {
              "has_ci": false,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": "eslint.config.js",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.js"
                    }
                  }
                ],
                "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": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "topics": [],
              "has_wiki": false,
              "homepage": "https://plandesk-docs.pages.dev",
              "has_readme": true,
              "has_docs_dir": false,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://plandesk-docs.pages.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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "critical",
        "name": "Security",
        "value": 26,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "critical",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Dangerous-Workflow, Packaging, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "dangerous_workflow",
                    "packaging",
                    "signed_releases",
                    "token_permissions"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 15,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 13,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 5,
              "scorecard_aggregate": 1.5
            },
            "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": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no workflows found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "no SAST tool detected",
                "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": "No tokens found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "34 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "moderate",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories. Remaining weights renormalized. Matched 1250 resolved dependencies against OSV; 56 could not be assessed (no resolved version, an unsupported ecosystem, or beyond the reported package list). This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "indirect_dependencies_free_of_known_advisories"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 1250
                }
              },
              {
                "code": "advisories_unassessed",
                "params": {
                  "count": 56
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 69,
            "inputs": {
              "source": "osv",
              "advisories": 37,
              "affected_packages": 16,
              "assessed_packages": 1250,
              "unassessed_packages": 56,
              "affected_by_severity": "high 9, moderate 3, low 4",
              "direct_affected_packages": 3
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "3 affected: hono 4.12.23 (high 7.1), @hono/node-server 1.19.14 (moderate 5.9), @hono/node-server 2.0.4 (moderate 5.9)",
                "points": 11.7,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 3,
                      "packages": "hono 4.12.23 (high 7.1), @hono/node-server 1.19.14 (moderate 5.9), @hono/node-server 2.0.4 (moderate 5.9)"
                    }
                  }
                ],
                "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 has been public longer than 90 days",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "advisories_none_stale",
                    "params": {
                      "days": 90
                    }
                  }
                ],
                "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": 1250,
              "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": 1
            },
            "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": "good",
        "name": "AI Readiness",
        "value": 75,
        "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": 1,
              "agent_instruction_files": [
                ".agents/factory/workers/claude.md",
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 1776
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": ".agents/factory/workers/claude.md, CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".agents/factory/workers/claude.md, 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": "100 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 100,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 64,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "pnpm-lock.yaml"
              ],
              "has_dockerfile": true,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "apps/docs/tsconfig.json",
                "apps/plandesk-web/tsconfig.json",
                "packages/plandesk-api/tsconfig.json",
                "packages/plandesk-cli/tsconfig.json",
                "packages/plandesk-db/tsconfig.json",
                "packages/plandesk-mcp-client/tsconfig.json",
                "packages/plandesk-mcp/tsconfig.json"
              ],
              "agent_commit_share": 0.98,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": "eslint.config.js",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.js"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "apps/docs/tsconfig.json, apps/plandesk-web/tsconfig.json, packages/plandesk-api/tsconfig.json, packages/plandesk-cli/tsconfig.json, packages/plandesk-db/tsconfig.json, packages/plandesk-mcp-client/tsconfig.json, packages/plandesk-mcp/tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "apps/docs/tsconfig.json, apps/plandesk-web/tsconfig.json, packages/plandesk-api/tsconfig.json, packages/plandesk-cli/tsconfig.json, packages/plandesk-db/tsconfig.json, packages/plandesk-mcp-client/tsconfig.json, packages/plandesk-mcp/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": "98 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 98,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 52132,
              "source_files_sampled": 425,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "TypeScript (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "TypeScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/425 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 425,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "moderate",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": true,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "deps.dev does not index npm:@plandesk/db@1.0.0; advisories assessed against the repository dependency graph instead"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-24T04:56:48.063007Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/a/asyncdotengineering/plandesk.svg",
  "full_name": "asyncdotengineering/plandesk",
  "license_state": "standard",
  "license_spdx": "MIT"
}

评分是信号,而非担保。 评分反映的是 GitHub 上公开可见的实践——不是代码审计,也不是安全保证。

缺失数据将被剔除并重新归一化权重,绝不按零分计。方法论已版本化并公开:指标 v1.13.0、模式 v0.27.0—— 完整方法论 · 指标知识库.

单项结果在整体记录中的位置: 汇总统计npm.