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

southleft / figma-console-mcp

Your design system as an API. Connect AI to Figma for extraction, creation, and debugging.

TypeScript · JavaScriptMIT★ 2 024 зірки⑂ 224 форкиз жовт. 2025 р.Переглянути на GitHub ↗

southleft/figma-console-mcp має індекс здоров’я 65 зі 100, що відповідає смузі «Помірний». Найвищий показник — Vitality (92/100), найнижчий — Security (39/100). Останнє оновлення було 4 дні тому. Більшість нещодавньої роботи виконує один учасник.

65
загалом / 100
Помірний

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

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

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

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

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

Власність

Southleft, LLCОрганізація
117 підписників30 публічних репозиторіївз січ. 2020 р.

За цим репозиторієм стоїть організація — спільна, підзвітна опіка, здатна пережити будь-якого окремого мейнтейнера.

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

РеєстрПакетВерсіяЗавантажень / місВерсіїОстання публікаціяТеги
npmfigma-console-mcp1.36.099 709814 дні томуmcpfigmaplugindesign-tokensdesign-systemsvariablesfigjamslidesaccessibilityaianthropicclaudecloudflare

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

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

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

92Відмінний · 22% загального індексу
Як обчислюється оцінка
36/36Свіжість push — останній push 4 дн. тому
22.8/36Ритм комітів — 33/52 тижнів із комітами
18/18Обсяг комітів — 553 комітів за останній рік
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Використані вхідні дані
commits_last_year553
human_commit_share1
days_since_last_push4
active_weeks_last_year33
Як обчислюється оцінка
27/27Випускає релізи — опубліковано 66 релізів
36/36Свіжість релізів — останній реліз 4 дн. тому
27/27Ритм релізів — реліз кожні ~4,9 дн.
0/10OpenSSF Scorecard: Signed-Releases — немає даних
Використані вхідні дані
releases_count66
latest_release_tagv1.36.0
releases_from_tagsні
days_since_latest_release4
mean_days_between_releases4,9
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: Signed-Releases. Залишкові ваги перенормовано.

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

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

71Добрий · 18% загального індексу
Як обчислюється оцінка
53.6/60Зірки — 2 024 зірок
19.6/25Форки — 224 форків
8/15Спостерігачі — 28 спостерігачів
Використані вхідні дані
forks224
stars2 024
watchers28
growth_stateorganic
growth_factor_pct100
Як обчислюється оцінка
22.5/22.5README
22.5/22.5Ліцензія — визнана ліцензія (MIT)
0/18Настанови CONTRIBUTING
0/13.5Кодекс поведінки
0/7.2Шаблон issue
0/6.3Шаблон PR
Використані вхідні дані
has_readmeтак
has_licenseтак
has_contributingні
has_issue_templateні
has_code_of_conductні
has_pull_request_templateні
Як обчислюється оцінка
66.6/80Щомісячні завантаження — 99 709 завантажень/місяць у npm
0/20Залежні пакети в реєстрі — ця екосистема цього не повідомляє
Використані вхідні дані
packagesfigma-console-mcp
dependents
ecosystemsnpm
total_downloads
monthly_downloads99 709
Виключено з оцінювання (немає даних або не застосовно): Залежні пакети в реєстрі. Залишкові ваги перенормовано.

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

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

55Помірний · 24% загального індексу
Як обчислюється оцінка
9/54Бас-фактор — на 1 контриб’ютор(ів) припадає половина всіх комітів
0.7/22.5Розподіл комітів — головний контриб’ютор — автор 97% комітів
13.5/13.5Широта контриб’юторів — 11 контриб’юторів
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Використані вхідні дані
bus_factor1
contributors_sampled11
top_contributor_share0,967
Як обчислюється оцінка
22.9/46.8Вирішення issue — закрито 49% issue
19.1/38.3Прийняття PR — злито 17/34 вирішених PR
0/15OpenSSF Scorecard: Code-Review — Found 0/22 approved changesets -- score normalized to 0
Використані вхідні дані
merged_prs17
open_issues24
closed_issues23
issue_closed_ratio0,489
closed_unmerged_prs17
Як обчислюється оцінка
30/30Підтримка власника — у власності організації
0/20Верифікований домен
14.9/25Охоплення власника — 117 підписників у southleft
22.9/25Послужний список — 30 публічних репозиторіїв, вік облікового запису ~6 р.
Використані вхідні дані
followers117
owner_typeOrganization
is_verified
owner_loginsouthleft
public_repos30
account_age_days2 363

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

100Відмінний
Як обчислюється оцінка
25/25Опубліковано й доступно — 1 пакет(ів) у npm
35/35Свіжість публікацій — остання публікація 4 дн. тому
20/20Історія версій — 81 опублікованих версій
20/20Не застарілий — активний, не deprecated і не yanked
Використані вхідні дані
packagesfigma-console-mcp
ecosystemsnpm
any_deprecatedні
min_days_since_publish4

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

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

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

Інженерні практики

40У зоні ризику
Як обчислюється оцінка
0/24Процеси CI
24/24Наявні тести
16/16Конфігурація лінтера — .eslintrc.json, biome.json
0/9.6Pre-commit-хуки
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — 0 out of 1 merged PRs checked by a CI test -- score normalized to 0
Використані вхідні дані
has_ciні
has_testsтак
has_editorconfigні
has_linter_configтак
has_precommit_configні

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

100Відмінний
Як обчислюється оцінка
30/30README
25/25Каталог документації
15/15Сайт документації / домашня сторінка — https://southleft.com
10/10Опис репозиторію
10/10Теми — 6 тем
10/10Wiki
Використані вхідні дані
topicsai, design-systems, figma, figma-api, figma-plugins, mcp
has_wikiтак
homepagehttps://southleft.com
has_readmeтак
has_docs_dirтак
has_descriptionтак

Безпека

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

39У зоні ризику · 16% загального індексу

Стан безпеки

31У зоні ризику
Як обчислюється оцінка
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 out of 1 merged PRs checked by a CI test -- score normalized to 0
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/22 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
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — немає даних
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — немає даних
0/7.5Token-Permissions — немає даних
0/7.5Vulnerabilities — 16 existing vulnerabilities detected
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated14
scorecard_versionv5.5.0
checks_inconclusive4
scorecard_aggregate3,1
Виключено з оцінювання (немає даних або не застосовно): dangerous_workflow, packaging, signed_releases, token_permissions. Залишкові ваги перенормовано.
Як обчислюється оцінка
14/35Прямі залежності без відомих сповіщень — уражено 1: ws 8.18.0 (high 7.5)
0/25Непрямі залежності без відомих сповіщень — транзитивний набір не відокремлюється від залежностей розробки й тестування в цьому обсязі
40/40Немає задавнених сповіщень — жодне сповіщення не є публічним довше за 90 дн.
Використані вхідні дані
sourceosv
advisories16
affected_packages5
assessed_packages690
unassessed_packages0
affected_by_severityhigh 3, low 2
direct_affected_packages1
Виключено з оцінювання (немає даних або не застосовно): Непрямі залежності без відомих сповіщень. Залишкові ваги перенормовано. Звірено 690 резолвлених залежностей із OSV. Цей репозиторій не публікує пакета, який резолвить індекс, тож натомість оцінено граф залежностей репозиторію. Цей граф змішує закріплені версії для розробки й тестування зі справді постачаними залежностями, тож оцінюються лише задекларовані runtime-залежності; транзитивні знахідки подаються як контекст і в оцінку не входять. Досяжність не аналізується.

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

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

65Помірний · 0% загального індексу
Як обчислюється оцінка
45/45Інструкції для агентів — CLAUDE.md
0/15Машиночитана документація (llms.txt)
40/40Читабельна історія комітів — намір зазначено у 87 з 100 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share0,87
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes1 324
Як обчислюється оцінка
0/18Розгортання однією командою
22/22Автоматизовані тести
11/11Конфігурація лінтера / форматера — .eslintrc.json, biome.json
11/11Статична перевірка типів — tsconfig.json
10/10Відтворюване середовище — lockfile
2/10Підтверджена практика роботи з агентами — 1 з останніх 100 комітів створено агентом або з його зазначенням
0/8Автоматизоване супроводження — автоматичних оновлень залежностей не виявлено
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Використані вхідні дані
has_nixні
has_testsтак
lockfilespackage-lock.json
has_dockerfileні
typed_languageтак
bootstrap_files
has_devcontainerні
has_linter_configтак
typecheck_configstsconfig.json
agent_commit_share0,01
toolchain_manifests
dependency_bot_commit_share0
Як обчислюється оцінка
45/45Типізований код — TypeScript (статично типізована)
51.1/55Керовані розміри файлів — 10/142 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languageTypeScript
largest_source_bytes295 107
source_files_sampled142
oversized_source_files10
Як обчислюється оцінка
0/40Схема API (OpenAPI/GraphQL/proto)
20/20Сервер MCP
0/40Придатні до запуску приклади
Використані вхідні дані
example_dirs
has_mcp_signalтак
api_schema_files

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

2 024зірок GitHub
11контриб'юторів
553комітів за останні 12 місяців
4днів від останнього пушу
66релізів
1бас-фактор
24відкритих issue
npmпакетних екосистем

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

  • deps.dev does not index npm:figma-console-mcp@1.36.0; advisories assessed against the repository dependency graph instead

Докладніше

Історія зірок і форків 2 024 ★ / 224 ⇿
2 024Зірки
224Форки
65Релізи

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

Показано лише найновішу історію — цей репозиторій перевищує вікно збору, тож найраніша історія не захоплена.

04008001 2001 6002 0002 4002 024224392026-012026-042026-07
Мажорні 0Мінорні 33Патчі 32
OpenSSF Scorecard 3.1 / 10
3.1сукупно

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

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
0CI-Tests0 out of 1 merged PRs checked by a CI test -- score normalized to 0
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/22 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
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
н/дPackagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
10Security-Policysecurity policy file detected
н/дSigned-Releasesno releases found
н/дToken-PermissionsNo tokens found
0Vulnerabilities16 existing vulnerabilities detected
Прямі залежності 11
РеєстрПакетОбмеження версіїМаніфест
npm@cloudflare/puppeteer^1.0.4package.json
npm@modelcontextprotocol/ext-apps^1.0.1package.json
npm@modelcontextprotocol/sdk^1.26.0package.json
npmagents^0.7.1package.json
npmaxe-core^4.11.2package.json
npmjsdom^29.0.1package.json
npmpino^9.5.0package.json
npmpino-pretty^13.0.0package.json
npmuuid^11.0.3package.json
npmws^8.19.0package.json
npmzod^3.25.76package.json
Усі залежності 690

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

РеєстрПакетВерсіяЗв'язок
npm@cloudflare/puppeteer1.0.4пряма
npm@modelcontextprotocol/ext-apps1.0.1пряма
npm@modelcontextprotocol/sdk1.26.0пряма
npmagents0.7.1пряма
npmaxe-core4.11.2пряма
npmjsdom29.0.1пряма
npmpino9.13.1пряма
npmpino-pretty13.1.1пряма
npmuuid11.1.1пряма
npmws8.18.0пряма
npmws8.21.0пряма
npmzod3.25.76пряма
npm@ai-sdk/gateway3.0.60непряма
npm@ai-sdk/provider3.0.8непряма
npm@ai-sdk/provider-utils4.0.16непряма
npm@apidevtools/json-schema-ref-parser11.9.3непряма
npm@asamuzakjp/css-color5.1.5непряма
npm@asamuzakjp/dom-selector7.0.6непряма
npm@asamuzakjp/nwsapi2.3.9непряма
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-plugin-utils7.27.1непряма
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/plugin-syntax-async-generators7.8.4непряма
npm@babel/plugin-syntax-bigint7.8.3непряма
npm@babel/plugin-syntax-class-properties7.12.13непряма
npm@babel/plugin-syntax-class-static-block7.14.5непряма
npm@babel/plugin-syntax-import-attributes7.27.1непряма
npm@babel/plugin-syntax-import-meta7.10.4непряма
npm@babel/plugin-syntax-json-strings7.8.3непряма
npm@babel/plugin-syntax-jsx7.27.1непряма
npm@babel/plugin-syntax-logical-assignment-operators7.10.4непряма
npm@babel/plugin-syntax-nullish-coalescing-operator7.8.3непряма
npm@babel/plugin-syntax-numeric-separator7.10.4непряма
npm@babel/plugin-syntax-object-rest-spread7.8.3непряма
npm@babel/plugin-syntax-optional-catch-binding7.8.3непряма
npm@babel/plugin-syntax-optional-chaining7.8.3непряма
npm@babel/plugin-syntax-private-property-in-object7.14.5непряма
npm@babel/plugin-syntax-top-level-await7.14.5непряма
npm@babel/plugin-syntax-typescript7.27.1непряма
npm@babel/runtime7.28.6непряма
npm@babel/runtime-corejs37.29.0непряма
npm@babel/template7.29.7непряма
npm@babel/traverse7.29.7непряма
npm@babel/types7.29.7непряма
npm@bcoe/v8-coverage0.2.3непряма
npm@biomejs/biome2.2.5непряма
npm@biomejs/cli-darwin-arm642.2.5непряма
npm@biomejs/cli-darwin-x642.2.5непряма
npm@biomejs/cli-linux-arm642.2.5непряма
npm@biomejs/cli-linux-arm64-musl2.2.5непряма
npm@biomejs/cli-linux-x642.2.5непряма
npm@biomejs/cli-linux-x64-musl2.2.5непряма
npm@biomejs/cli-win32-arm642.2.5непряма
npm@biomejs/cli-win32-x642.2.5непряма
npm@bramus/specificity2.4.2непряма
npm@cfworker/json-schema4.1.1непряма
npm@cloudflare/kv-asset-handler0.4.2непряма
npm@cloudflare/unenv-preset2.15.0непряма
npm@cloudflare/workerd-darwin-641.20260310.1непряма
npm@cloudflare/workerd-darwin-arm641.20260310.1непряма
npm@cloudflare/workerd-linux-641.20260310.1непряма
npm@cloudflare/workerd-linux-arm641.20260310.1непряма
npm@cloudflare/workerd-windows-641.20260310.1непряма
npm@cloudflare/workers-types4.20260702.1непряма
npm@cspotcode/source-map-support0.8.1непряма
npm@csstools/color-helpers6.0.2непряма
npm@csstools/css-calc3.1.1непряма
npm@csstools/css-color-parser4.0.2непряма
npm@csstools/css-parser-algorithms4.0.0непряма
npm@csstools/css-syntax-patches-for-csstree1.1.2непряма
npm@csstools/css-tokenizer4.0.0непряма
npm@emnapi/runtime1.11.2непряма
npm@esbuild/aix-ppc640.25.4непряма
npm@esbuild/aix-ppc640.27.3непряма
npm@esbuild/android-arm0.25.4непряма
npm@esbuild/android-arm0.27.3непряма
npm@esbuild/android-arm640.25.4непряма
npm@esbuild/android-arm640.27.3непряма
npm@esbuild/android-x640.25.4непряма
npm@esbuild/android-x640.27.3непряма
npm@esbuild/darwin-arm640.25.4непряма
npm@esbuild/darwin-arm640.27.3непряма
npm@esbuild/darwin-x640.25.4непряма
npm@esbuild/darwin-x640.27.3непряма
npm@esbuild/freebsd-arm640.25.4непряма
npm@esbuild/freebsd-arm640.27.3непряма
npm@esbuild/freebsd-x640.25.4непряма
npm@esbuild/freebsd-x640.27.3непряма
npm@esbuild/linux-arm0.25.4непряма
npm@esbuild/linux-arm0.27.3непряма
npm@esbuild/linux-arm640.25.4непряма
npm@esbuild/linux-arm640.27.3непряма
npm@esbuild/linux-ia320.25.4непряма
npm@esbuild/linux-ia320.27.3непряма
npm@esbuild/linux-loong640.25.4непряма
npm@esbuild/linux-loong640.27.3непряма
npm@esbuild/linux-mips64el0.25.4непряма
npm@esbuild/linux-mips64el0.27.3непряма
npm@esbuild/linux-ppc640.25.4непряма
npm@esbuild/linux-ppc640.27.3непряма
npm@esbuild/linux-riscv640.25.4непряма
npm@esbuild/linux-riscv640.27.3непряма
npm@esbuild/linux-s390x0.25.4непряма
npm@esbuild/linux-s390x0.27.3непряма
npm@esbuild/linux-x640.25.4непряма
npm@esbuild/linux-x640.27.3непряма
npm@esbuild/netbsd-arm640.25.4непряма
npm@esbuild/netbsd-arm640.27.3непряма
npm@esbuild/netbsd-x640.25.4непряма
npm@esbuild/netbsd-x640.27.3непряма
npm@esbuild/openbsd-arm640.25.4непряма
npm@esbuild/openbsd-arm640.27.3непряма
npm@esbuild/openbsd-x640.25.4непряма
npm@esbuild/openbsd-x640.27.3непряма
npm@esbuild/openharmony-arm640.27.3непряма
npm@esbuild/sunos-x640.25.4непряма
npm@esbuild/sunos-x640.27.3непряма
npm@esbuild/win32-arm640.25.4непряма
npm@esbuild/win32-arm640.27.3непряма
npm@esbuild/win32-ia320.25.4непряма
npm@esbuild/win32-ia320.27.3непряма
npm@esbuild/win32-x640.25.4непряма
npm@esbuild/win32-x640.27.3непряма
npm@exodus/bytes1.15.0непряма
npm@hono/node-server1.19.14непряма
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@istanbuljs/load-nyc-config1.1.0непряма
npm@istanbuljs/schema0.1.3непряма
npm@jest/console29.7.0непряма
npm@jest/core29.7.0непряма
npm@jest/environment29.7.0непряма
npm@jest/expect29.7.0непряма
npm@jest/expect-utils29.7.0непряма
npm@jest/fake-timers29.7.0непряма
npm@jest/globals29.7.0непряма
npm@jest/reporters29.7.0непряма
npm@jest/schemas29.6.3непряма
npm@jest/source-map29.6.3непряма
npm@jest/test-result29.7.0непряма
npm@jest/test-sequencer29.7.0непряма
npm@jest/transform29.7.0непряма
npm@jest/types29.6.3непряма
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@jridgewell/trace-mapping0.3.9непряма
npm@jsdevtools/ono7.1.3непряма
npm@opentelemetry/api1.9.0непряма
npm@oven/bun-darwin-aarch641.3.6непряма
npm@oven/bun-darwin-x641.3.6непряма
npm@oven/bun-darwin-x64-baseline1.3.6непряма
npm@oven/bun-linux-aarch641.3.6непряма
npm@oven/bun-linux-aarch64-musl1.3.6непряма
npm@oven/bun-linux-x641.3.6непряма
npm@oven/bun-linux-x64-baseline1.3.6непряма
npm@oven/bun-linux-x64-musl1.3.6непряма
npm@oven/bun-linux-x64-musl-baseline1.3.6непряма
npm@oven/bun-windows-x641.3.6непряма
npm@oven/bun-windows-x64-baseline1.3.6непряма
npm@poppinss/colors4.1.6непряма
npm@poppinss/dumper0.6.5непряма
npm@poppinss/exception1.2.3непряма
npm@puppeteer/browsers2.2.4непряма
npm@rollup/rollup-android-arm-eabi4.59.0непряма
npm@rollup/rollup-android-arm644.59.0непряма
npm@rollup/rollup-darwin-arm644.59.0непряма
npm@rollup/rollup-darwin-x644.59.0непряма
npm@rollup/rollup-freebsd-arm644.59.0непряма
npm@rollup/rollup-freebsd-x644.59.0непряма
npm@rollup/rollup-linux-arm-gnueabihf4.59.0непряма
npm@rollup/rollup-linux-arm-musleabihf4.59.0непряма
npm@rollup/rollup-linux-arm64-gnu4.59.0непряма
npm@rollup/rollup-linux-arm64-musl4.59.0непряма
npm@rollup/rollup-linux-loong64-gnu4.59.0непряма
npm@rollup/rollup-linux-loong64-musl4.59.0непряма
npm@rollup/rollup-linux-ppc64-gnu4.59.0непряма
npm@rollup/rollup-linux-ppc64-musl4.59.0непряма
npm@rollup/rollup-linux-riscv64-gnu4.59.0непряма
npm@rollup/rollup-linux-riscv64-musl4.59.0непряма
npm@rollup/rollup-linux-s390x-gnu4.59.0непряма
npm@rollup/rollup-linux-x64-gnu4.59.0непряма
npm@rollup/rollup-linux-x64-musl4.59.0непряма
npm@rollup/rollup-openbsd-x644.59.0непряма
npm@rollup/rollup-openharmony-arm644.59.0непряма
npm@rollup/rollup-win32-arm64-msvc4.59.0непряма
npm@rollup/rollup-win32-ia32-msvc4.59.0непряма
npm@rollup/rollup-win32-x64-gnu4.59.0непряма
npm@rollup/rollup-win32-x64-msvc4.59.0непряма
npm@sinclair/typebox0.27.8непряма
npm@sindresorhus/is7.2.0непряма
npm@sinonjs/commons3.0.1непряма
npm@sinonjs/fake-timers10.3.0непряма
npm@speed-highlight/core1.2.17непряма
npm@standard-schema/spec1.1.0непряма
npm@tootallnate/quickjs-emscripten0.23.0непряма
npm@types/babel__core7.20.5непряма
npm@types/babel__generator7.27.0непряма
npm@types/babel__template7.4.4непряма
npm@types/babel__traverse7.28.0непряма
npm@types/estree1.0.8непряма
npm@types/graceful-fs4.1.9непряма
npm@types/istanbul-lib-coverage2.0.6непряма
npm@types/istanbul-lib-report3.0.3непряма
npm@types/istanbul-reports3.0.4непряма
npm@types/jest29.5.14непряма
npm@types/jsdom28.0.1непряма
npm@types/json-schema7.0.15непряма
npm@types/lodash4.17.20непряма
npm@types/node22.18.8непряма
npm@types/stack-utils2.0.3непряма
npm@types/tough-cookie4.0.5непряма
npm@types/uuid10.0.0непряма
npm@types/ws8.18.1непряма
npm@types/yargs17.0.33непряма
npm@types/yargs-parser21.0.3непряма
npm@types/yauzl2.10.3непряма
npm@vercel/oidc3.1.0непряма
npmaccepts2.0.0непряма
npmagent-base7.1.4непряма
npmai6.0.106непряма
npmajv8.18.0непряма
npmajv-formats3.0.1непряма
npmansi-escapes4.3.2непряма
npmansi-regex5.0.1непряма
npmansi-regex6.2.2непряма
npmansi-styles4.3.0непряма
npmansi-styles5.2.0непряма
npmansi-styles6.2.3непряма
npmanymatch3.1.3непряма
npmargparse1.0.10непряма
npmargparse2.0.1непряма
npmast-types0.13.4непряма
npmatomic-sleep1.0.0непряма
npmb4a1.7.3непряма
npmbabel-jest29.7.0непряма
npmbabel-plugin-istanbul6.1.1непряма
npmbabel-plugin-jest-hoist29.6.3непряма
npmbabel-preset-current-node-syntax1.2.0непряма
npmbabel-preset-jest29.6.3непряма
npmbalanced-match1.0.2непряма
npmbare-events2.7.0непряма
npmbare-fs4.4.5непряма
npmbare-os3.6.2непряма
npmbare-path3.0.0непряма
npmbare-stream2.7.0непряма
npmbare-url2.2.2непряма
npmbase64-js1.5.1непряма
npmbaseline-browser-mapping2.10.41непряма
npmbasic-ftp5.3.1непряма
npmbidi-js1.0.3непряма
npmblake3-wasm2.1.5непряма
npmbody-parser2.2.2непряма
npmbrace-expansion1.1.15непряма
npmbraces3.0.3непряма
npmbrowserslist4.28.4непряма
npmbs-logger0.2.6непряма
npmbser2.1.1непряма
npmbuffer5.7.1непряма
npmbuffer-crc320.2.13непряма
npmbuffer-from1.1.2непряма
npmbytes3.1.2непряма
npmcall-bind-apply-helpers1.0.2непряма
npmcall-bound1.0.4непряма
npmcallsites3.1.0непряма
npmcamelcase5.3.1непряма
npmcamelcase6.3.0непряма
npmcaniuse-lite1.0.30001800непряма
npmchalk4.1.2непряма
npmchar-regex1.0.2непряма
npmci-info3.9.0непряма
npmcjs-module-lexer1.4.3непряма
npmcliui8.0.1непряма
npmcliui9.0.1непряма
npmco4.6.0непряма
npmcollect-v8-coverage1.0.2непряма
npmcolor-convert2.0.1непряма
npmcolor-name1.1.4непряма
npmcolorette2.0.20непряма
npmconcat-map0.0.1непряма
npmcontent-disposition1.0.1непряма
npmcontent-type1.0.5непряма
npmconvert-source-map2.0.0непряма
npmcookie0.7.2непряма
npmcookie1.1.1непряма
npmcookie-signature1.2.2непряма
npmcore-js-pure3.48.0непряма
npmcors2.8.5непряма
npmcreate-jest29.7.0непряма
npmcron-schedule6.0.0непряма
npmcross-env7.0.3непряма
npmcross-spawn7.0.6непряма
npmcss-tree3.2.1непряма
npmdata-uri-to-buffer6.0.2непряма
npmdata-urls7.0.0непряма
npmdateformat4.6.3непряма
npmdebug4.4.3непряма
npmdecimal.js10.6.0непряма
npmdedent1.7.0непряма
npmdeepmerge4.3.1непряма
npmdegenerator5.0.1непряма
npmdepd2.0.0непряма
npmdetect-libc2.1.2непряма
npmdetect-newline3.1.0непряма
npmdevtools-protocol0.0.1299070непряма
npmdiff-sequences29.6.3непряма
npmdunder-proto1.0.1непряма
npmee-first1.1.1непряма
npmelectron-to-chromium1.5.385непряма
npmemittery0.13.1непряма
npmemoji-regex10.6.0непряма
npmemoji-regex8.0.0непряма
npmencodeurl2.0.0непряма
npmend-of-stream1.4.5непряма
npmentities6.0.1непряма
npmerror-ex1.3.4непряма
npmerror-stack-parser-es1.0.5непряма
npmes-define-property1.0.1непряма
npmes-errors1.3.0непряма
npmes-object-atoms1.1.2непряма
npmesbuild0.25.4непряма
npmesbuild0.27.3непряма
npmescalade3.2.0непряма
npmescape-html1.0.3непряма
npmescape-string-regexp2.0.0непряма
npmescodegen2.1.0непряма
npmesprima4.0.1непряма
npmestraverse5.3.0непряма
npmesutils2.0.3непряма
npmetag1.8.1непряма
npmevent-target-polyfill0.0.4непряма
npmevents-universal1.0.1непряма
npmeventsource3.0.7непряма
npmeventsource-parser3.0.6непряма
npmexeca5.1.1непряма
npmexit0.1.2непряма
npmexpect29.7.0непряма
npmexpress5.2.1непряма
npmexpress-rate-limit8.5.2непряма
npmextract-zip2.0.1непряма
npmfast-copy3.0.2непряма
npmfast-deep-equal3.1.3непряма
npmfast-fifo1.3.2непряма
npmfast-json-stable-stringify2.1.0непряма
npmfast-safe-stringify2.1.1непряма
npmfast-uri3.1.3непряма
npmfb-watchman2.0.2непряма
npmfd-slicer1.1.0непряма
npmfdir6.5.0непряма
npmfill-range7.1.1непряма
npmfinalhandler2.1.1непряма
npmfind-up4.1.0непряма
npmforwarded0.2.0непряма
npmfresh2.0.0непряма
npmfs.realpath1.0.0непряма
npmfsevents2.3.3непряма
npmfunction-bind1.1.2непряма
npmgensync1.0.0-beta.2непряма
npmget-caller-file2.0.5непряма
npmget-east-asian-width1.5.0непряма
npmget-intrinsic1.3.0непряма
npmget-package-type0.1.0непряма
npmget-proto1.0.1непряма
npmget-stream5.2.0непряма
npmget-stream6.0.1непряма
npmget-tsconfig4.10.1непряма
npmget-uri6.0.5непряма
npmglob7.2.3непряма
npmgopd1.2.0непряма
npmgraceful-fs4.2.11непряма
npmhandlebars4.7.9непряма
npmhas-flag4.0.0непряма
npmhas-symbols1.1.0непряма
npmhasown2.0.2непряма
npmhelp-me5.0.0непряма
npmhono4.12.27непряма
npmhtml-encoding-sniffer6.0.0непряма
npmhtml-escaper2.0.2непряма
npmhttp-errors2.0.1непряма
npmhttp-proxy-agent7.0.2непряма
npmhttps-proxy-agent7.0.6непряма
npmhuman-signals2.1.0непряма
npmiconv-lite0.7.2непряма
npmieee7541.2.1непряма
npmimport-local3.2.0непряма
npmimurmurhash0.1.4непряма
npminflight1.0.6непряма
npminherits2.0.4непряма
npmip-address10.2.0непряма
npmipaddr.js1.9.1непряма
npmis-arrayish0.2.1непряма
npmis-core-module2.16.1непряма
npmis-extglob2.1.1непряма
npmis-fullwidth-code-point3.0.0непряма
npmis-generator-fn2.1.0непряма
npmis-glob4.0.3непряма
npmis-number7.0.0непряма
npmis-potential-custom-element-name1.0.1непряма
npmis-promise4.0.0непряма
npmis-stream2.0.1непряма
npmisexe2.0.0непряма
npmistanbul-lib-coverage3.2.2непряма
npmistanbul-lib-instrument5.2.1непряма
npmistanbul-lib-instrument6.0.3непряма
npmistanbul-lib-report3.0.1непряма
npmistanbul-lib-source-maps4.0.1непряма
npmistanbul-reports3.2.0непряма
npmjest29.7.0непряма
npmjest-changed-files29.7.0непряма
npmjest-circus29.7.0непряма
npmjest-cli29.7.0непряма
npmjest-config29.7.0непряма
npmjest-diff29.7.0непряма
npmjest-docblock29.7.0непряма
npmjest-each29.7.0непряма
npmjest-environment-node29.7.0непряма
npmjest-get-type29.6.3непряма
npmjest-haste-map29.7.0непряма
npmjest-leak-detector29.7.0непряма
npmjest-matcher-utils29.7.0непряма
npmjest-message-util29.7.0непряма
npmjest-mock29.7.0непряма
npmjest-pnp-resolver1.2.3непряма
npmjest-regex-util29.6.3непряма
npmjest-resolve29.7.0непряма
npmjest-resolve-dependencies29.7.0непряма
npmjest-runner29.7.0непряма
npmjest-runtime29.7.0непряма
npmjest-snapshot29.7.0непряма
npmjest-util29.7.0непряма
npmjest-validate29.7.0непряма
npmjest-watcher29.7.0непряма
npmjest-worker29.7.0непряма
npmjose6.1.3непряма
npmjoycon3.1.1непряма
npmjs-base643.7.8непряма
npmjs-tokens4.0.0непряма
npmjs-yaml3.15.0непряма
npmjs-yaml4.3.0непряма
npmjsesc3.1.0непряма
npmjson-parse-even-better-errors2.3.1непряма
npmjson-schema0.4.0непряма
npmjson-schema-to-typescript15.0.4непряма
npmjson-schema-traverse1.0.0непряма
npmjson-schema-typed8.0.2непряма
npmjson52.2.3непряма
npmkleur3.0.3непряма
npmkleur4.1.5непряма
npmleven3.1.0непряма
npmlines-and-columns1.2.4непряма
npmlocate-path5.0.0непряма
npmlodash4.18.1непряма
npmlodash.memoize4.1.2непряма
npmlru-cache11.2.7непряма
npmlru-cache5.1.1непряма
npmlru-cache7.18.3непряма
npmmake-dir4.0.0непряма
npmmake-error1.3.6непряма
npmmakeerror1.0.12непряма
npmmath-intrinsics1.1.0непряма
npmmdn-data2.27.1непряма
npmmedia-typer1.1.0непряма
npmmerge-descriptors2.0.0непряма
npmmerge-stream2.0.0непряма
npmmicromatch4.0.8непряма
npmmime-db1.52.0непряма
npmmime-db1.54.0непряма
npmmime-types2.1.35непряма
npmmime-types3.0.2непряма
npmmimetext3.0.28непряма
npmmimic-fn2.1.0непряма
npmminiflare4.20260310.0непряма
npmminimatch3.1.5непряма
npmminimist1.2.8непряма
npmms2.1.3непряма
npmnanoid3.3.15непряма
npmnanoid5.1.6непряма
npmnatural-compare1.4.0непряма
npmnegotiator1.0.0непряма
npmneo-async2.6.2непряма
npmnetmask2.0.2непряма
npmnode-int640.4.0непряма
npmnode-releases2.0.50непряма
npmnormalize-path3.0.0непряма
npmnpm-run-path4.0.1непряма
npmobject-assign4.1.1непряма
npmobject-inspect1.13.4непряма
npmon-exit-leak-free2.1.2непряма
npmon-finished2.4.1непряма
npmonce1.4.0непряма
npmonetime5.1.2непряма
npmp-limit2.3.0непряма
npmp-limit3.1.0непряма
npmp-locate4.1.0непряма
npmp-try2.2.0непряма
npmpac-proxy-agent7.2.0непряма
npmpac-resolver7.0.1непряма
npmparse-json5.2.0непряма
npmparse57.3.0непряма
npmparse58.0.0непряма
npmparseurl1.3.3непряма
npmpartyserver0.3.2непряма
npmpartysocket1.1.16непряма
npmpath-exists4.0.0непряма
npmpath-is-absolute1.0.1непряма
npmpath-key3.1.1непряма
npmpath-parse1.0.7непряма
npmpath-to-regexp6.3.0непряма
npmpath-to-regexp8.4.2непряма
npmpathe2.0.3непряма
npmpend1.2.0непряма
npmpicocolors1.1.1непряма
npmpicomatch2.3.2непряма
npmpicomatch4.0.5непряма
npmpino-abstract-transport2.0.0непряма
npmpino-std-serializers7.0.0непряма
npmpirates4.0.7непряма
npmpkce-challenge5.0.0непряма
npmpkg-dir4.2.0непряма
npmpostcss8.5.16непряма
npmprettier3.6.2непряма
npmpretty-format29.7.0непряма
npmprocess-warning5.0.0непряма
npmprogress2.0.3непряма
npmprompts2.4.2непряма
npmproxy-addr2.0.7непряма
npmproxy-agent6.5.0непряма
npmproxy-from-env1.1.0непряма
npmpump3.0.3непряма
npmpunycode2.3.1непряма
npmpure-rand6.1.0непряма
npmqs6.15.3непряма
npmquick-format-unescaped4.0.4непряма
npmrange-parser1.2.1непряма
npmraw-body3.0.2непряма
npmreact19.2.0непряма
npmreact-is18.3.1непряма
npmreal-require0.2.0непряма
npmrequire-directory2.1.1непряма
npmrequire-from-string2.0.2непряма
npmresolve1.22.10непряма
npmresolve-cwd3.0.0непряма
npmresolve-from5.0.0непряма
npmresolve-pkg-maps1.0.0непряма
npmresolve.exports2.0.3непряма
npmrollup4.59.0непряма
npmrouter2.2.0непряма
npmsafe-stable-stringify2.5.0непряма
npmsafer-buffer2.1.2непряма
npmsaxes6.0.0непряма
npmsecure-json-parse4.1.0непряма
npmsemver6.3.1непряма
npmsemver7.7.4непряма
npmsend1.2.1непряма
npmserve-static2.2.1непряма
npmsetprototypeof1.2.0непряма
npmsharp0.34.5непряма
npmshebang-command2.0.0непряма
npmshebang-regex3.0.0непряма
npmside-channel1.1.1непряма
npmside-channel-list1.0.1непряма
npmside-channel-map1.0.1непряма
npmside-channel-weakmap1.0.2непряма
npmsignal-exit3.0.7непряма
npmsisteransi1.0.5непряма
npmslash3.0.0непряма
npmslow-redact0.3.1непряма
npmsmart-buffer4.2.0непряма
npmsocks2.8.7непряма
npmsocks-proxy-agent8.0.5непряма
npmsonic-boom4.2.0непряма
npmsource-map0.6.1непряма
npmsource-map-js1.2.1непряма
npmsource-map-support0.5.13непряма
npmsplit24.2.0непряма
npmsprintf-js1.0.3непряма
npmstack-utils2.0.6непряма
npmstatuses2.0.2непряма
npmstreamx2.23.0непряма
npmstring-length4.0.2непряма
npmstring-width4.2.3непряма
npmstring-width7.2.0непряма
npmstrip-ansi6.0.1непряма
npmstrip-ansi7.2.0непряма
npmstrip-bom4.0.0непряма
npmstrip-final-newline2.0.0непряма
npmstrip-json-comments3.1.1непряма
npmstrip-json-comments5.0.3непряма
npmsupports-color10.2.2непряма
npmsupports-color7.2.0непряма
npmsupports-color8.1.1непряма
npmsupports-preserve-symlinks-flag1.0.0непряма
npmsymbol-tree3.2.4непряма
npmtar-fs3.1.1непряма
npmtar-stream3.1.7непряма
npmtest-exclude6.0.0непряма
npmtext-decoder1.2.3непряма
npmthread-stream3.1.0непряма
npmthrough2.3.8непряма
npmtinyglobby0.2.15непряма
npmtldts7.0.27непряма
npmtldts-core7.0.27непряма
npmtmpl1.0.5непряма
npmto-regex-range5.0.1непряма
npmtoidentifier1.0.1непряма
npmtough-cookie6.0.1непряма
npmtr466.0.0непряма
npmts-jest29.4.4непряма
npmtslib2.8.1непряма
npmtsx4.20.6непряма
npmtype-detect4.0.8непряма
npmtype-fest0.21.3непряма
npmtype-fest4.41.0непряма
npmtype-is2.0.1непряма
npmtypescript5.9.3непряма
npmuglify-js3.19.3непряма
npmunbzip2-stream1.4.3непряма
npmundici7.18.2непряма
npmundici7.28.0непряма
npmundici-types6.21.0непряма
npmundici-types7.24.7непряма
npmunenv2.0.0-rc.24непряма
npmunpipe1.0.0непряма
npmupdate-browserslist-db1.2.3непряма
npmv8-to-istanbul9.3.0непряма
npmvary1.1.2непряма
npmvite6.4.3непряма
npmvite-plugin-singlefile2.3.0непряма
npmw3c-xmlserializer5.0.0непряма
npmwalker1.0.8непряма
npmwebidl-conversions8.0.1непряма
npmwhatwg-mimetype5.0.0непряма
npmwhatwg-url16.0.1непряма
npmwhich2.0.2непряма
npmwordwrap1.0.0непряма
npmworkerd1.20260310.1непряма
npmwrangler4.72.0непряма
npmwrap-ansi7.0.0непряма
npmwrap-ansi9.0.2непряма
npmwrappy1.0.2непряма
npmwrite-file-atomic4.0.2непряма
npmxml-name-validator5.0.0непряма
npmxmlchars2.2.0непряма
npmy18n5.0.8непряма
npmyallist3.1.1непряма
npmyargs17.7.2непряма
npmyargs18.0.0непряма
npmyargs-parser21.1.1непряма
npmyargs-parser22.0.0непряма
npmyauzl2.10.0непряма
npmyocto-queue0.1.0непряма
npmyouch4.1.0-beta.10непряма
npmyouch-core0.3.3непряма
npmzod-to-json-schema3.25.1непряма
Сповіщення про залежності 5

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

ПакетВерсіяЗв'язокКритичністьСповіщеньВиправлено в
ws8.18.0прямависока28.21.0
brace-expansion1.1.15непрямависока15.0.7
undici7.18.2непрямависока118.5.0
body-parser2.2.2непряманизька12.3.0
esbuild0.27.3непряманизька10.28.1

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

Звіт у форматі JSON машиночитний
{
  "data": {
    "repo": {
      "topics": [
        "ai",
        "design-systems",
        "figma",
        "figma-api",
        "figma-plugins",
        "mcp"
      ],
      "is_fork": false,
      "size_kb": 3174,
      "has_wiki": true,
      "homepage": "https://southleft.com",
      "languages": {
        "HTML": 130307,
        "Shell": 22160,
        "JavaScript": 547207,
        "TypeScript": 2154277
      },
      "pushed_at": "2026-07-17T00:31:58Z",
      "created_at": "2025-10-05T16:28:53Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-21T16:19:09Z",
      "description": "Your design system as an API. Connect AI to Figma for extraction, creation, and debugging.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript",
        "JavaScript"
      ]
    },
    "owner": {
      "blog": "https://southleft.com",
      "name": "Southleft, LLC",
      "type": "Organization",
      "login": "southleft",
      "company": null,
      "location": "New Orleans, LA",
      "followers": 117,
      "avatar_url": "https://avatars.githubusercontent.com/u/60514814?v=4",
      "created_at": "2020-01-31T15:10:43Z",
      "is_verified": null,
      "public_repos": 30,
      "account_age_days": 2363
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v1.36.0",
          "kind": "minor",
          "published_at": "2026-07-17T00:26:17Z"
        },
        {
          "tag": "v1.35.0",
          "kind": "minor",
          "published_at": "2026-07-09T12:12:16Z"
        },
        {
          "tag": "v1.34.0",
          "kind": "minor",
          "published_at": "2026-07-03T18:24:27Z"
        },
        {
          "tag": "v1.33.1",
          "kind": "patch",
          "published_at": "2026-07-03T03:14:14Z"
        },
        {
          "tag": "v1.33.0",
          "kind": "minor",
          "published_at": "2026-07-03T01:47:04Z"
        },
        {
          "tag": "v1.32.1",
          "kind": "patch",
          "published_at": "2026-07-01T02:55:33Z"
        },
        {
          "tag": "v1.32.0",
          "kind": "minor",
          "published_at": "2026-06-21T04:37:52Z"
        },
        {
          "tag": "v1.31.0",
          "kind": "minor",
          "published_at": "2026-06-05T13:48:28Z"
        },
        {
          "tag": "v1.30.0",
          "kind": "minor",
          "published_at": "2026-06-03T02:40:51Z"
        },
        {
          "tag": "v1.29.2",
          "kind": "patch",
          "published_at": "2026-06-03T01:12:00Z"
        },
        {
          "tag": "v1.29.0",
          "kind": "minor",
          "published_at": "2026-05-22T13:50:37Z"
        },
        {
          "tag": "v1.28.1",
          "kind": "patch",
          "published_at": "2026-05-18T20:01:07Z"
        },
        {
          "tag": "v1.28.0",
          "kind": "minor",
          "published_at": "2026-05-18T19:36:05Z"
        },
        {
          "tag": "v1.27.1",
          "kind": "patch",
          "published_at": "2026-05-17T01:19:22Z"
        },
        {
          "tag": "v1.27.0",
          "kind": "minor",
          "published_at": "2026-05-17T00:58:55Z"
        },
        {
          "tag": "v1.26.0",
          "kind": "minor",
          "published_at": "2026-05-16T19:10:24Z"
        },
        {
          "tag": "v1.25.0",
          "kind": "minor",
          "published_at": "2026-05-14T02:39:23Z"
        },
        {
          "tag": "v1.24.0",
          "kind": "minor",
          "published_at": "2026-05-14T02:02:49Z"
        },
        {
          "tag": "v1.23.0",
          "kind": "minor",
          "published_at": "2026-05-09T15:41:44Z"
        },
        {
          "tag": "v1.22.1",
          "kind": "patch",
          "published_at": "2026-04-07T02:12:12Z"
        },
        {
          "tag": "v1.21.0",
          "kind": "minor",
          "published_at": "2026-04-01T16:51:33Z"
        },
        {
          "tag": "v1.20.0",
          "kind": "minor",
          "published_at": "2026-03-29T20:49:49Z"
        },
        {
          "tag": "v1.19.2",
          "kind": "patch",
          "published_at": "2026-03-27T13:59:24Z"
        },
        {
          "tag": "v1.19.1",
          "kind": "patch",
          "published_at": "2026-03-27T13:13:20Z"
        },
        {
          "tag": "v1.19.0",
          "kind": "minor",
          "published_at": "2026-03-25T11:07:01Z"
        },
        {
          "tag": "v1.11.0",
          "kind": "minor",
          "published_at": "2026-03-25T00:21:55Z"
        },
        {
          "tag": "v1.18.0",
          "kind": "minor",
          "published_at": "2026-03-25T00:21:40Z"
        },
        {
          "tag": "v1.17.4",
          "kind": "patch",
          "published_at": "2026-03-25T00:21:29Z"
        },
        {
          "tag": "v1.17.3",
          "kind": "patch",
          "published_at": "2026-03-25T00:21:29Z"
        },
        {
          "tag": "v1.17.2",
          "kind": "patch",
          "published_at": "2026-03-25T00:21:28Z"
        },
        {
          "tag": "v1.17.1",
          "kind": "patch",
          "published_at": "2026-03-25T00:21:27Z"
        },
        {
          "tag": "v1.17.0",
          "kind": "minor",
          "published_at": "2026-03-25T00:21:26Z"
        },
        {
          "tag": "v1.16.0",
          "kind": "minor",
          "published_at": "2026-03-25T00:21:12Z"
        },
        {
          "tag": "v1.15.5",
          "kind": "patch",
          "published_at": "2026-03-25T00:20:57Z"
        },
        {
          "tag": "v1.15.4",
          "kind": "patch",
          "published_at": "2026-03-25T00:20:56Z"
        },
        {
          "tag": "v1.15.3",
          "kind": "patch",
          "published_at": "2026-03-25T00:20:55Z"
        },
        {
          "tag": "v1.15.2",
          "kind": "patch",
          "published_at": "2026-03-25T00:20:54Z"
        },
        {
          "tag": "v1.15.1",
          "kind": "patch",
          "published_at": "2026-03-25T00:20:53Z"
        },
        {
          "tag": "v1.15.0",
          "kind": "minor",
          "published_at": "2026-03-25T00:20:52Z"
        },
        {
          "tag": "v1.14.0",
          "kind": "minor",
          "published_at": "2026-03-25T00:20:36Z"
        },
        {
          "tag": "v1.13.1",
          "kind": "patch",
          "published_at": "2026-03-25T00:20:36Z"
        },
        {
          "tag": "v1.13.0",
          "kind": "minor",
          "published_at": "2026-03-25T00:20:35Z"
        },
        {
          "tag": "v1.12.2",
          "kind": "patch",
          "published_at": "2026-03-25T00:20:21Z"
        },
        {
          "tag": "v1.12.1",
          "kind": "patch",
          "published_at": "2026-03-25T00:20:20Z"
        },
        {
          "tag": "v1.12.0",
          "kind": "minor",
          "published_at": "2026-03-25T00:20:19Z"
        },
        {
          "tag": "v1.11.6",
          "kind": "patch",
          "published_at": "2026-03-25T00:20:04Z"
        },
        {
          "tag": "v1.11.5",
          "kind": "patch",
          "published_at": "2026-03-25T00:20:02Z"
        },
        {
          "tag": "v1.11.4",
          "kind": "patch",
          "published_at": "2026-03-25T00:20:01Z"
        },
        {
          "tag": "v1.11.2",
          "kind": "patch",
          "published_at": "2026-03-25T00:20:00Z"
        },
        {
          "tag": "v1.11.1",
          "kind": "patch",
          "published_at": "2026-03-25T00:19:49Z"
        },
        {
          "tag": "v1.10.1",
          "kind": "patch",
          "published_at": "2026-03-25T00:21:55Z"
        },
        {
          "tag": "v1.10.0",
          "kind": "minor",
          "published_at": "2026-02-13T05:42:44Z"
        },
        {
          "tag": "v1.9.1",
          "kind": "patch",
          "published_at": "2026-02-12T22:10:23Z"
        },
        {
          "tag": "v1.9.0",
          "kind": "minor",
          "published_at": "2026-02-11T03:39:47Z"
        },
        {
          "tag": "v1.8.0",
          "kind": "minor",
          "published_at": "2026-02-09T02:07:39Z"
        },
        {
          "tag": "v1.7.0",
          "kind": "minor",
          "published_at": "2026-02-06T04:42:31Z"
        },
        {
          "tag": "v1.5.0",
          "kind": "minor",
          "published_at": "2026-01-30T22:51:43Z"
        },
        {
          "tag": "v1.4.2",
          "kind": "patch",
          "published_at": "2026-01-28T03:00:49Z"
        },
        {
          "tag": "v1.4.1",
          "kind": "patch",
          "published_at": "2026-01-28T02:55:37Z"
        },
        {
          "tag": "v1.4.0",
          "kind": "minor",
          "published_at": "2026-01-27T15:23:47Z"
        },
        {
          "tag": "v1.3.0",
          "kind": "minor",
          "published_at": "2026-01-23T20:44:41Z"
        },
        {
          "tag": "v1.2.1",
          "kind": "patch",
          "published_at": "2026-01-19T14:53:49Z"
        },
        {
          "tag": "v1.1.2",
          "kind": "patch",
          "published_at": "2026-01-17T20:41:50Z"
        },
        {
          "tag": "v1.1.1",
          "kind": "patch",
          "published_at": "2026-01-15T21:26:07Z"
        },
        {
          "tag": "v1.1.0",
          "kind": "minor",
          "published_at": "2026-01-15T21:01:29Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2025-10-20T17:06:54Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "138975494458585123bf0d89840e46ddb7bd01ae",
          "body": null,
          "is_bot": false,
          "headline": "Merge feature/target-lock — v1.36.0",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-17T00:31:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "51d3188b5cf6db1c350b7f22e41a4f6618028ab8",
          "body": "figma_navigate gains lock:true to pin the active file; new connections,\nreconnects, and user selection/page changes in other files no longer move\nthe command target. Auto-releases on disconnect/navigate-away.\nfigma_list_open_files reports targetLocked.\n\nPost-review: simplified the connect gate to 'i\n[…]\nhe\n'|| !_activeFileKey' clause was dead per the lock invariant), and added\ncoverage for lock-release-on-disconnect and lock-preserved-on-reconnect.\n\nServer-only release — no plugin re-import required.",
          "is_bot": false,
          "headline": "chore: Release v1.36.0 — target lock for multi-file parallel work",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-17T00:31:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "922c0538203f51ba913e9f13472ca7f70c29aad4",
          "body": "figma_navigate gains a lock:true flag that pins the active file so new\nconnections, reconnects, and the user's own selection/page changes in\nother files no longer move the command target. Lets an agent work in one\nfile while the user works in another without writes routing to the wrong\nfile. Auto-re\n[…]\nvigates away;\nfigma_list_open_files now reports targetLocked.\n\nServer: _targetLocked gates the three active-file promotion sites;\nsetActiveFile(fileKey, lock?), lockTarget/unlockTarget/isTargetLocked.",
          "is_bot": false,
          "headline": "feat: add target lock for multi-file parallel work",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-17T00:25:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e15a7c979f9658e015c4490920bfe4f174ed072c",
          "body": "5 new tools (figma_create_slot, figma_get_slots, figma_append_to_slot,\nfigma_reset_slot, figma_add_slot_property) closing #29, based on PR #77\nby @simonesalvucci and updated to the GA slots Plugin API. Also fixes\nthe release script's cloud tool count (slot-tools.ts was missing from\nauto_count_cloud) and 25+ stale tool-count references.",
          "is_bot": false,
          "headline": "chore: Release v1.35.0 — Figma Slots write support",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-09T12:24:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6501b817f89265817e349edc517ea7115f5dbc9e",
          "body": "- APPEND_TO_SLOT: prepare/validate content BEFORE clearExisting (bad\n  sourceNodeId no longer empties the slot then errors); guard COMPONENT\n  before clone (no more orphaned main-component clones)\n- VARIANT defaultValue passthrough restored — live-validated that Figma\n  REQUIRES a non-empty default \n[…]\n- Width-only/height-only resizes honored; string/number coercion for\n  slot content properties; nested-slot name collisions prefer own slots\n- figma_get_slots response gains consistent success wrapper",
          "is_bot": false,
          "headline": "fix(slots): pre-merge review findings",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-09T12:16:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "47eb076d852a4cc14e5ca9f7b029b53b097bce36",
          "body": "Live E2E caught clones landing outside the slot's visible bounds because\nthey keep their original x/y. Auto-layout slots are unaffected (Figma\nmanages position).",
          "is_bot": false,
          "headline": "fix(slots): snap cloned nodes to slot origin in NONE-layout slots",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-09T12:04:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "30dbdc1f4ddc48f055f24eea5468928687352e4c",
          "body": "- createSlot() now works on variant components inside a COMPONENT_SET\n  (GA lifted the beta restriction the PR guarded against) — allow it\n- Document rename-after-create as the naming API: renaming the slot node\n  renames the linked SLOT property key live (createSlot name arg is ignored)\n- Forward '\n[…]\ni.html handleResult whitelist so\n  figma_append_to_slot returns its slot payload (relay drops unlisted fields)\n- Merge slot-aware ai_instruction with append-to-slot guidance in\n  ANALYZE_COMPONENT_SET",
          "is_bot": false,
          "headline": "fix(slots): update PR #77 to GA slots API — live-validated 2026-07-09",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-09T11:55:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "97db96a84b95e06ef2cfe413e36a9e341ee90e07",
          "body": "Implements slot creation, inspection, population, and reset tools now that SlotNode is available in Figma's open beta, closing the gap described in issue #29.\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
          "is_bot": false,
          "headline": "Add Figma Slots API support via Desktop Bridge.",
          "author_name": "Simone Salvucci",
          "author_login": "simonesalvucci",
          "committed_at": "2026-07-09T11:49:27Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f139a1a25b9140f54c208dfe6723b22ba3c20721",
          "body": "figma_import_tokens applies the full diff plan (creates collections/\nvariables, ID-matched renames, VARIABLE_ALIAS writes, replace-gated\ndeletes); DTCG 2025.10 dialect opt-in on export + accepted on import;\nscopes/codeSyntax round-trip; alias values in figma_setup_design_tokens;\nnew figma_create_component_set tool.\n\nPLUGIN RE-IMPORT REQUIRED (code.js/ui.html changed).\n\nTests: 1336 passing.",
          "is_bot": false,
          "headline": "chore: Release v1.34.0 — Bidirectional Token Sync v2 + DTCG 2025.10",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T18:38:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "501091ec54688c41bcf30e010e121c92ff3a782c",
          "body": "…ut scaling\n\n- Import diff now matches by round-trip variable ID before path: a token\n  path rename routes to the update phase as a name change (toRename)\n  instead of create+delete — under strategy='replace' the old behavior\n  would have PERMANENTLY DELETED the original variable and detached all\n  \n[…]\nphaned collections when addMode fails;\n  alias-pass failures counted once\n\nFindings from the pre-release code review (RELEASING.md independent\nreview step). Tests: 183 across token/write-tools suites.",
          "is_bot": false,
          "headline": "fix: pre-release review findings — rename safety, color guards, timeo…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T18:23:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "87171bcc0ef6c2c02c38a545c0f1904a5287f4b2",
          "body": "…sign_tokens\n\nRound-trip: variable scopes (omitted when default/ALL_SCOPES) and\ncodeSyntax (WEB/ANDROID/iOS) stash into $extensions[figma-console-mcp]\non export and flow back through import — diff compares them\n(order-insensitive scopes; code-side absent = no opinion, never\nresets Figma metadata), a\n[…]\ng the batch. Semantic collections no\nlonger require raw figma_execute.\n\nTests: 161 across token/write-tools suites (19 new). Legacy + 2025\nexport byte-identity re-verified for tokens without metadata.",
          "is_bot": false,
          "headline": "feat(tokens): scopes/codeSyntax round-trip + alias values in setup_de…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T17:54:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fb6dfd3ef0fb43c6eee40419adabe0782336c491",
          "body": "…5-dialect",
          "is_bot": false,
          "headline": "Merge branch 'claude/compassionate-meitner-d3a779' into feat/dtcg-202…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T17:39:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d8565c176e87d556e031aef76710ac9b52c21389",
          "body": "Export: opt-in dtcgDialect='2025' emits object colors ({colorSpace,\ncomponents, alpha, hex} from full-precision Figma floats) and object\ndimensions ({value, unit:'px'}). Default 'legacy' output proven\nbyte-identical to previous releases — existing consumers unaffected.\n\nImport: accepts BOTH dialects\n[…]\n gated behind strategy='replace' with loud warnings;\n  merge stays reporting-only\n- Per-item error isolation preserved (applyResult.errors[])\n\nTests: 110 token tests (26 dialect + 14 apply-phase new).",
          "is_bot": false,
          "headline": "feat(tokens): DTCG 2025.10 dialect + full bidirectional import",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T17:39:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "82fd61b3748ce40a255525159fbf0c185dc1b102",
          "body": "One-call component set creation from a variant axes matrix (e.g.\n{State: [default, hover, disabled], Size: [sm, lg]}): builds all\ncombination variants, names them Prop=Value comma-joined, combines\nvia combineAsVariants, and arranges with the in-place grid logic.\nStructured-command pattern: code.js handler + ui.html relay\npassthrough + connector method on IFigmaConnector (WebSocket + Cloud).\nFonts preloaded before text writes; variant keys returned for\ninstantiation.",
          "is_bot": false,
          "headline": "feat: figma_create_component_set — declarative variant-set creation",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T17:34:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "26b87b426479f364a4d2cf990f4585ac7cff10aa",
          "body": "The plugin staleness check now compares against the PLUGIN_VERSION\nembedded in the bundled figma-desktop-bridge/code.js (what a re-import\ninstalls) instead of the npm package version, so server-only releases\nno longer flag up-to-date plugins as stale. PLUGIN_VERSION now means\n'last release in which plugin files changed' and release.sh bumps it\nconditionally. 1245 tests passing (9 new).",
          "is_bot": false,
          "headline": "chore: Release v1.33.2 — version-handshake false-positive fix",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T14:17:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "03be8d7689fd8ea1005b4f9816d787533084e645",
          "body": "…iles (kills v1.33.1 false stale banner)",
          "is_bot": false,
          "headline": "Merge fix: plugin version handshake compares against bundled plugin f…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T14:14:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8d346b0944175bea587e327495788b2103701ac5",
          "body": "… version\n\nServer-only releases (e.g. v1.33.1, deps only) bumped package.json without\ntouching figma-desktop-bridge/, but the FILE_INFO handshake compared the\nplugin's reported version against SERVER_VERSION with strict !== — falsely\nflagging up-to-date plugins as stale and nagging users to re-impor\n[…]\nPluginVersion;\n  figma_diagnose cites the bundled version\n- Regression tests: handshake e2e with injected bundled version + new\n  PLUGIN_VERSION invariants (may lag package.json, must never exceed it)",
          "is_bot": false,
          "headline": "fix: compare plugin version against bundled plugin files, not package…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T14:13:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "35840a72bfdc24abf8b9ff974e0b495c0aab9388",
          "body": "…ount-anchor fix\n\nClaude-Session: https://claude.ai/code/session_01SyvXc6tqa1PEi3uWiWTdzs",
          "is_bot": false,
          "headline": "chore: Release v1.33.1 — security dependency sweep + release-script c…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T03:18:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "10bd6707eb024bd4962e8343fe6e547eb4a0aef6",
          "body": "…e bumps\n\nnpm audit fix (no --force): ws 8.21.0, hono 4.12.27, undici 7.28.0,\nhandlebars 4.7.9 (the critical), lodash, path-to-regexp, basic-ftp,\nfast-uri, vite, and friends — all within existing semver ranges, so no\nAPI changes. wrangler deliberately pinned at 4.72.0: newer versions\nrequire Node >=\n[…]\nppens.\n\nSupersedes dependabot PRs #81 (hono), #82 (vite), #84 (undici; wrangler\npart deferred for the Node engine requirement).\n\nClaude-Session: https://claude.ai/code/session_01SyvXc6tqa1PEi3uWiWTdzs",
          "is_bot": false,
          "headline": "fix(deps): resolve all runtime + critical security alerts via in-rang…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T03:14:11Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9cb514912c33f04e60bed007d9ebaac6c5be9ffc",
          "body": "Claude-Session: https://claude.ai/code/session_01SyvXc6tqa1PEi3uWiWTdzs",
          "is_bot": false,
          "headline": "chore: Release v1.33.0 — connection UX overhaul + 33-fix codebase audit",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T01:52:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fbd078af72a0db2ea9bb84e9f006325cfbaa25a0",
          "body": "…rror signal\n\n- probeServerHealth: execFileSync (no shell) + integer port validation;\n  data.port comes from world-writable /tmp files and must not reach a\n  shell string. Error semantics mirror the async variant (ENOENT).\n- healthProbeArgs: os.devNull instead of literal /dev/null — Windows\n  ships \n[…]\nURLs.\n- screenshot fallback: prefer error.isAuthError over a bare \"403\"\n  substring, which also matches node IDs like \"403:12\".\n\nClaude-Session: https://claude.ai/code/session_01SyvXc6tqa1PEi3uWiWTdzs",
          "is_bot": false,
          "headline": "fix: address Copilot review — probe hardening, branch fileKey, auth-e…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T01:45:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b3b4cf5c2f963fae92222367793ff72a69259ca6",
          "body": "…ected'\n\nThe cloud status line was event-driven while the main pill derives from\nfacts, so a stale restored pairing code failing on load wrote a bare\n'Disconnected' under a green 'Connected' pill. Cloud states are now\nderived in one place (renderCloudStatus), every string is labeled\n'Cloud', routine\n[…]\nsed, and only\nactionable states (pairing lost) speak up uninvited. Pause renders as\n'Cloud: paused' rather than a lost pairing.\n\nClaude-Session: https://claude.ai/code/session_01SyvXc6tqa1PEi3uWiWTdzs",
          "is_bot": false,
          "headline": "fix(plugin): derive cloud pairing status — kill the orphaned 'Disconn…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-03T01:39:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e79b8ca5cff26c8bb98c7f31bd6549d352c81885",
          "body": "…aling\n\nBased on a three-track deep dive (forensic lifecycle trace, alternative-\narchitecture research, designer-persona UX audit) into why product\ndesigners struggle with the Desktop Bridge connection dance.\n\nPlugin UI (ui.html — requires manifest re-import; with auto-discovery\nshipped, this should\n[…]\n-probes before returning an honest error\n\nFull deep-dive with file:line evidence and the deferred broker/\nthin-shell roadmap: .notes/CONNECTION-ARCHITECTURE-DEEP-DIVE.md (local).\n\nTests: 1236 passing.",
          "is_bot": false,
          "headline": "feat: connection UX overhaul — honest status, auto-discovery, self-he…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-02T04:18:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1c8466c65a65bbbb9c2fd25054e6edab1b8a0737",
          "body": "# Conflicts:\n#\tsrc/core/figma-tools.ts",
          "is_bot": false,
          "headline": "Merge branch 'claude/goofy-burnell-f85648' into fix/audit-2026-07-01",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-02T04:01:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1c94dd20c08d6bca0cf33493c22f5735d98c17b0",
          "body": "figma_get_variables defaults to format='summary' (description already\nrecommended it; explicit format='full' unaffected). Design-system kit\ndelta-encodes variant visualSpecs against the set-level spec instead of\nrepeating near-identical specs per variant; removes never-attached\nchildSpecs dead compute.",
          "is_bot": false,
          "headline": "perf: trim default payloads in figma_get_variables and design-system kit",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-02T03:59:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d368bca8f48224004b3e8987376aadfe9cd099f6",
          "body": "# Conflicts:\n#\tsrc/core/write-tools.ts",
          "is_bot": false,
          "headline": "Merge branch 'claude/kind-meninsky-3e4132' into fix/audit-2026-07-01",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-02T03:59:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2144d4eb2e51027a22d089bb4c54188066574fad",
          "body": "Repositions variants via x/y on the EXISTING component set's children\n(layoutMode forced to NONE first) instead of clone/remove/combineAsVariants,\nso the set keeps its node ID and all placed instances survive. Also pulls\nthe set out of a previous run's container before cleanup and uses\nabsoluteTransform coords for container placement, fixing re-run breakage.",
          "is_bot": false,
          "headline": "feat(write-tools): arrange component set variants in place",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-02T03:58:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "726aedd758a5dccba3acda9f320f17a399308f6d",
          "body": "…, caching, REST, and plugin layers\n\nMulti-agent audit (5 auditors, 4 fixers) with every finding verified\nagainst live code paths; token-pipeline findings reproduced at runtime.\n\nToken pipeline (round-trip fidelity):\n- DTCG multi-mode export lost all non-primary modes on re-import\n  (writer/parser $\n[…]\nent_image accept dashed\nids, search results truncate multi-KB descriptions.\n\nTests: 1223 passing (20 new regression tests incl. multi-mode\nround-trip, TIMING/EASING mapping, cross-collection aliases).",
          "is_bot": false,
          "headline": "fix: full-codebase audit — 33 verified fixes across tokens, transport…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-02T03:02:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ec698302460e7bfbf8db2329cea5912850ad6dde",
          "body": "…(v1.32.1)\n\nComponent docs documented variable-bound colors as raw hex (Figma Variable\ncolumn showed —) while spacing tokens worked. Two root causes:\n\n1. The id→name lookup map read .id/.name off enrichment entries whose keys\n   are variableId/variableName, so every color lookup missed.\n2. Variable \n[…]\n.name/variableName mismatch in\ntoken-parity cross-referencing.\n\nVerified live: 100/100 colors on the Eventz Textarea resolve to token\nnames (was 0/100). Reported by Robin Di Capua. 1203 tests passing.",
          "is_bot": false,
          "headline": "fix(docs): resolve color token names in figma_generate_component_doc …",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-07-01T02:54:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e8a9dc1898610baacaaef40c5778c90e5203af73",
          "body": "Components could define slots since June 2026, but our traversal caught the\n'can only read componentPropertyDefinitions on a set/non-variant' error and\nskipped slot sublayers — so analysis, dev handoff, and component reads silently\nomitted a core part of the component's public API.\n\nAdds extractSlot\n[…]\njs changed). Note: slots are new enough that real\ndesign systems have not adopted them yet — this is correctness as the platform\nevolved, validated by fixture rather than against production slot data.",
          "is_bot": false,
          "headline": "feat(components): extract Figma slot contracts (SlotNode, GA June 2026)",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-06-28T03:31:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0700d35c55fc9e5aef4e3ef8e0a219fa1b157454",
          "body": "…iption\n\nExtends the existing tool with an optional 'description' param (and makes\nmodeId/value optional) so an existing variable's 'How to use this variable'\ntext can be edited — previously only settable at creation time. Reuses the\nexisting setVariableDescription connector method + SET_VARIABLE_DE\n[…]\nange, no plugin re-import.\nBackward-compatible (value-only callers unaffected). Exported as DTCG\n$description by figma_export_tokens.\n\nFollow-up to the variables-description capability TJ asked about.",
          "is_bot": false,
          "headline": "feat(variables): figma_update_variable can now set a variable's descr…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-06-28T02:47:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b111b9e37aa23492cce08a5ce8e0114a77ac258a",
          "body": "…eight 1.4.12 fix)\n\nfigma_lint_design no longer red-flags line height <1.5x as a WCAG failure.\n1.4.12 Text Spacing requires SUPPORTING user spacing overrides, not shipping\n1.5x. Line/paragraph-spacing scoped to multi-line text; readability hints\ndecoupled from the 'wcag' group into opt-in 'best-prac\n[…]\nessibility.\n\nNo new tools, no arg-shape changes. Plugin re-import required to pick up the\nnew audit behavior (bridge protocol unchanged). 1196 tests passing.\n\nReported by Isabella (a11y collaborator).",
          "is_bot": false,
          "headline": "chore: Release v1.32.0 — WCAG-accurate accessibility auditing (line-h…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-06-21T04:41:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "94a2e8235ad614b4bb858327539b485989e14384",
          "body": "…+ decouple best-practice\n\nWCAG 1.4.12 Text Spacing is a 'support user overrides' criterion, not a\nrequirement to ship 1.5x line height. The lint audit over-flagged every\ntext node <1.5 (incl. single-line labels) and grouped these readability\nhints under the 'wcag' conformance set.\n\n- code.js: line-\n[…]\nspacing-support' advisory\n  (fixed-px typography) — where 1.4.12/1.4.4 are actually verifiable.\n- tests: regrouping + multi-line guard coverage (1196 green).\n\nReported by Isabella (a11y collaborator).",
          "is_bot": false,
          "headline": "fix(a11y): line-height <1.5 is not a WCAG fail — scope to multi-line …",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-06-21T04:37:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7b6796ae911935933aa5a3f7516075f5730d505d",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'feature/desktop-bridge-ui-v0.2.1'",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-06-05T13:46:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9de4ecbfdc8023e5f3066875fc67c36105eb7b50",
          "body": "…ie reaper + auto-reconnect)\n\nFixes the most-reported reliability bug: the bridge dropping and staying\ndown until the user closed the plugin, restarted their MCP client, or\nkilled ports by hand. Root cause was zombie MCP server processes squatting\nthe WebSocket port range after a bad shutdown.\n\n- Re\n[…]\n 'Start Here' section, home banner, README banner/roadmap\n\nNo new tools. Plugin re-import required (ui.html + code.js changed).\n1190 tests passing, incl. SIGTERM-ignoring-orphan reap integration test.",
          "is_bot": false,
          "headline": "chore: Release v1.31.0 — self-healing Desktop Bridge connection (zomb…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-06-05T13:46:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "486a94afd6356ace85a5da1bcd5172d943553cc4",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' into feature/desktop-bridge-ui-v0.2.1",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-06-05T13:39:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c89fb0bcb9db36710207ca9f8f2bb6bac3d39ea7",
          "body": "…ding + typography)",
          "is_bot": false,
          "headline": "Merge feature/console-skill-tool-fixes — v1.30.0 (native variable bin…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-06-03T02:44:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "037d0010cf12ca4558de17f6b787db2173b93459",
          "body": "…e tools",
          "is_bot": false,
          "headline": "chore: Release v1.30.0 — native variable binding + typography in writ…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-06-03T02:44:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c92317c339908b7a905fd32b709d3a8ce5b7af28",
          "body": "- figma_set_fills / figma_set_strokes: new optional per-paint variableId binds a\n  color variable to the fill/stroke via setBoundVariableForPaint (works on any plan\n  via the bridge); color is now optional when variableId is provided.\n- figma_set_text: new fontFamily/fontStyle params with space-inse\n[…]\nnnectors forward fontStyle.\n\nValidated live against the CollegeTown design system: fill/stroke variable binding,\nfont normalization + fallback, instantiate font preload, and override-failure warnings.",
          "is_bot": false,
          "headline": "fix(tools): close Figma Plugin API gaps that forced raw figma_execute",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-06-03T02:40:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e41629d98aa29d5f0582f005d04dba88dce2e4df",
          "body": "…vel auto-detection",
          "is_bot": false,
          "headline": "chore: Release v1.29.2 — faithful component-doc rendering + atomic-le…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-06-03T01:10:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d459187c7ec5b579bdabab2e248dd45e902a6f82",
          "body": "…tadata\n\nThe first auto-detect pass relied on the published `containing_frame.pageId`\n(from /components + /component_sets) to find a component's home page. Many real\nfiles — including ones whose components have publish keys — return an empty\n/component_sets list over REST, so that path resolved noth\n[…]\ningle page whose subtree still contains the\nnode is its home page; walk back from there to the nearest ATOMS/MOLECULES/\nORGANISMS/TEMPLATES divider. One REST call, no dependency on library publishing.",
          "is_bot": false,
          "headline": "fix(component-doc): resolve atomic level without published library me…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-06-02T15:51:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "01507dcab6e8c64478a843d5f3034de94ff8bfda",
          "body": "…ic level\n\n- Parse single '#' headings in Figma component descriptions, not just '##'/'###',\n  so sections (Usage Guidelines, Implementation Considerations, Accessibility\n  Requirements, Content Configuration) render as real sections instead of leaking\n  as '- # Heading' list items.\n- Frontmatter de\n[…]\n target node, fixing a doubled ?node-id=.\n- Auto-detect the component's atomic-design level (atom/molecule/organism/template)\n  from its Figma page section and emit it as 'level:' frontmatter + a tag.",
          "is_bot": false,
          "headline": "fix(component-doc): faithful description rendering + auto-detect atom…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-06-02T15:40:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "854481469028d1070dcce3cf7fe22ade93533be4",
          "body": "…ariable-resolver fix",
          "is_bot": false,
          "headline": "Merge main (v1.29.1) into desktop-bridge-ui — sync PLUGIN_VERSION + v…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-31T13:25:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2e18e224279435c5cc26ce173b8d5dc486f8c9b0",
          "body": "…olution)",
          "is_bot": false,
          "headline": "Merge fix/variables-bridge-first — v1.29.1 (bridge-first variable res…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-30T19:27:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a6e1ef4cd4beae42d38c7bb8f89276a67de5c7f2",
          "body": "…(no 403 for non-Enterprise)",
          "is_bot": false,
          "headline": "chore: Release v1.29.1 — bridge-first variables in design_system_kit …",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-30T19:27:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9127fccdeeede0e36c65a255e970cfad59e6bedc",
          "body": "…stem_kit description\n\nfigma_get_variables already states variables work on any plan; figma_get_design_system_kit\ndid not, so in cloud mode the model lacked the signal that the bridge/relay is the\nplan-independent route and would abandon variables on a 403. Adds: tokens/variables are\nread via the connected Desktop Bridge or cloud relay (any plan, no Enterprise), and a 403\nfrom the Variables REST API means \"connect the bridge and retry,\" not \"variables unavailable.\"",
          "is_bot": false,
          "headline": "docs(variables): signal plan-independent variable access in design_sy…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-30T19:09:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1a6571c963c4afd71f1dbf21ac0949f01ca80449",
          "body": "…e 403 for non-Enterprise)\n\nfigma_get_design_system_kit fetched variables via the Enterprise-only REST\nVariables API directly (design-system-tools.ts: api.getLocalVariables), with no\nDesktop Bridge fallback and no connector passed in. For the majority of users\n(Starter/Pro/Org) that returns 403 \"Lim\n[…]\n (figma_get_variables, figma_export_tokens,\nlocal token-browser path) are already bridge-first; design_system_kit was the sole\nREST-only offender.\n\nTests: +7 (variable-resolver). Full suite 1185 pass.",
          "is_bot": false,
          "headline": "fix(variables): bridge-first resolution for design system kit (no mor…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-30T18:36:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9418e68c7709d32ed46cd413126e4228a37f74ec",
          "body": "…d zombie reaper\n\nAdds a user-facing \"Plugin Interface\" section (status strip, Pause/Reconnect,\nN-server badge, Info/Log panels, log intelligence, theme-follows-Figma) and an\n\"Automatic cleanup of stale servers\" subsection explaining the zombie cause of\nthe \"not connected, restart the plugin\" sympto\n[…]\nion +\nshutdown-backstop fix. Updates troubleshooting to note auto-reconnect means a\nplugin restart is usually unnecessary. No stale screenshots imported (PR #56\nshots predate the mask/theme removals).",
          "is_bot": false,
          "headline": "docs(desktop-bridge): document plugin UI, auto-reconnect watchdog, an…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-30T17:49:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "548cc4c6857e6f2d22ac25f3a3979859b409f8ad",
          "body": "…ectly\n\nThe manual sun/moon toggle (and its OS-preference fallback) duplicated control\nthat Figma already owns via themeColors:true. Removed the button and toggleTheme;\napplyTheme now mirrors Figma's injected figma-light/figma-dark class onto\nbody[data-theme] (with a MutationObserver for live theme switches, OS fallback\nif the class is absent), so the status/log color tokens always match Figma.\nOne less control to manage; the plugin theme can no longer drift from Figma.",
          "is_bot": false,
          "headline": "refactor(desktop-bridge): remove theme toggle, follow Figma theme dir…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-30T17:46:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ab658f1c0b7a7f53667b153e471146dd8a5f5870",
          "body": "…acy)\n\nThe eye toggle masked the connected file/page name in the Info panel, but\nFigma already shows both in the tab/title bar and left sidebar — so masking\nthem inside the plugin provides no real privacy, just an extra control and\nstate to manage. Removed the toggle and always show the values; the Info panel\nitself stays (confirms which file the bridge is on, useful with multiple\nservers). Trims UI surface in line with the small-footprint goal.",
          "is_bot": false,
          "headline": "refactor(desktop-bridge): remove file/page mask toggle (illusory priv…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-30T17:43:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c2805760f5277471742e7000959c186b6325fee2",
          "body": "…ected until restart\" cause)\n\nDiagnosed live: 8 stale dist/local.js servers (3-9 days old) squatted ports\n9223-9231, forcing new servers onto fallback ports with no plugin attached, so\nthe client reports \"server running but no plugin connected, restart the plugin\".\nThe reaper that should prevent thi\n[…]\n  but have not advertised yet; parses portable ps etime (macOS rejects etimes).\n\nTests: +5 (SIGKILL-escalation integration proof, age-guard sparing, reaper\nlifecycle, constants). Full suite 1183 pass.",
          "is_bot": false,
          "headline": "fix(port-discovery): reliably reap zombie MCP servers (real \"not conn…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-30T15:56:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8393a5af5969b85bbfa1d1689e3ba86697d1874e",
          "body": "Fixes the long-standing \"plugin says not connected until I restart it\" bug.\n\nRoot cause: the plugin scanned for MCP servers once on load (3-retry burst,\nthen stopped). If the MCP client/server started AFTER that window, the plugin\nnever re-probed, so the server saw no plugin connection until a full \n[…]\nshows clickable \"Reconnect\" when disconnected\n  instead of a misleading \"Pause\". Pause sets userPaused so the watchdog\n  respects a deliberate pause.\n\nAll 1178 tests pass; ui.html script parses clean.",
          "is_bot": false,
          "headline": "feat(desktop-bridge): auto-reconnect watchdog + one-click Reconnect",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-30T15:35:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "54df2d3b3a615c54041b2f424ddbf1423cb20bae",
          "body": "… stale 1.28.1 from older fork base)",
          "is_bot": false,
          "headline": "fix(desktop-bridge): restore PLUGIN_VERSION to 1.29.0 (PR #56 carried…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-30T14:58:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9420778b3bc0ecd3840e52a8ed3945e84322415c",
          "body": "…e, server-count badge, Pause/Resume rescan)\n\nFrom PR #56 (Dave Gregurke), functional files only. Excludes fork-maintenance\nartifacts: ui-full.html duplicate, CLAUDE.md fork-ownership section, .gitattributes,\nscripts/sync-fork.sh.\n\n- code.js: collapsed window 180x50 -> 240x40\n- ui.html: human-readab\n[…]\nxport, theme toggle icon fix, live 'N server(s)' badge\n  (2s poll), Pause/Resume that re-scans ports without a full plugin restart.\nAll 69 bridge command handlers preserved (no functional regression).",
          "is_bot": false,
          "headline": "feat(desktop-bridge): cherry-pick v0.2.1 UI redesign (log intelligenc…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-30T14:57:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "77528d06ef307e3420c72a3c70214d1f3677b5d8",
          "body": "Two small follow-ups to v1.29.0 born from this release. The granular\naccess token in ~/.npmrc had expired mid-flight: by the time npm publish\nreturned 401 at Phase 5, the release script had already bumped versions,\nscaffolded the CHANGELOG, created the GitHub Release, and pushed the tag.\n\nChanges:\n\n\n[…]\nequired by per-package 2FA enforcement\n  - Why disabling account 2FA does not help (per-package rule takes\n    precedence)\n  - The 3-command renewal recipe\n\nNo version bump — this is docs/script-only.",
          "is_bot": false,
          "headline": "chore: release script — npm auth precheck + token rotation recipe",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-22T15:15:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4e61ad24e2b2fb0a5043da137bc42deede2282b8",
          "body": "…nt + library variables)\n\nThree new tools fill the gap between \"I have a component key from search results\"\nand \"I can actually use it\" — without requiring the library file URL or Enterprise plan.\n\n- figma_get_library_component_by_key (REST): resolves any 40-char component key to\n  full componentPro\n[…]\nloses the workflow loop: search_design_system → figma_get_library_component_by_key →\nfigma_instantiate_component → figma_get_library_variables → figma_import_library_variable\n→ existing binding tools.",
          "is_bot": false,
          "headline": "chore: Release v1.29.0 — shared library inspection (key-based compone…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-22T13:57:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f8c57b403b03a8183cf4be0eebea50cea0051701",
          "body": "…SON formatters + Tailwind v4 namespace dedup\n\nBug fix patch surfacing from live-fire testing of the v1.28.0 formatters against multi-tier semantic-token design systems (Altitude Design System, lib-NEF-v5). Four bugs that produced garbage output for alias-heavy semantic-token sets, now fixed and cov\n[…]\n-comparison.md (should be 9 / 95 / 103).\n- Stale \"Fully implemented: dtcg + css-vars\" error messages in formatters/stubs.ts + parsers/stubs.ts — now list the actual supported set.\n\n1151 tests passing.",
          "is_bot": false,
          "headline": "chore: Release v1.28.1 — fix alias resolution in Tailwind v3 / TS / J…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-18T20:00:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5390b0ec968cd772ccfde20bd82222d5d0dfd0c6",
          "body": null,
          "is_bot": false,
          "headline": "Merge feature/token-formatters-phase-2 into main — v1.28.0 release",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-18T19:39:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e5956e77085f38efcf23163616bad1e1d5dfa44c",
          "body": "Seven new output formats shipped (Tailwind v4, Tailwind v3, SCSS, TS\nmodule, JSON flat/nested, Style Dictionary v3, Tokens Studio). Combined\nwith DTCG + CSS variables, figma_export_tokens now ships 10 fully-\nimplemented output formats. No third-party build-tool install required\nfor any popular styli\n[…]\nse 3.5 audit caught two real issues that the release script regex\nmissed:\n- README banner still referenced v1.27.0/v1.27.1\n- '93 tools' Cloud Mode references in table cells\n\nBoth fixed before publish.",
          "is_bot": false,
          "headline": "chore: Release v1.28.0 — full formatter coverage for figma_export_tokens",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-18T19:39:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fbb10473be14664d033c73b5c0d9677626d1bc4f",
          "body": "…/Planned'\n\nCaught by the user reading docs/tools.md output-formats table after the\nv1.27.1 release shipped. The status column labeled rows as 'Phase 1' /\n'Phase 2' — internal-roadmap terminology with no public meaning. Users\nhad no way to interpret it (no published roadmap to cross-reference).\n\nFix\n[…]\nso this class of leak gets\ncaught next release. Logged in Anti-Patterns Caught section.\n\nNext: actually implementing the formatters now marked 'Planned' so the\nstatus column doesn't stay aspirational.",
          "is_bot": false,
          "headline": "docs: replace internal 'Phase 1/2' jargon with user-friendly 'Shipped…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-18T19:23:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7830c933958314d2930038de443f2d938ecf117c",
          "body": "Phase 3.5 stale-content audit (the one I just added to RELEASING.md)\ncaught two real issues on the v1.27.1 release that I'd already missed:\n\n1. README banner still said '(v1.27.0)' — should reference v1.27.1 per\n   the rule that banner version stamps must match package.json. Now\n   reads '(v1.27.0, \n[…]\nn of the new Phase 3.5 audit and it fired\ncorrectly. The .notes/RELEASING.md file was updated to clarify the\nbanner version-stamp rule (the (vX.Y.0, patched vX.Y.Z) form is\nexplicitly documented now).",
          "is_bot": false,
          "headline": "docs: banner + recent-releases entries refreshed for v1.27.1",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-17T03:12:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1570d5688212366402ad5a95659648c480cff9ab",
          "body": "No code behavior changes. Catches the stale-content surface that the\nv1.27.0 release missed:\n\n- README front-page banner was still announcing v1.23.0\n- 'Phase 1 ships with DTCG only' language across tool descriptions,\n  error messages, and internal comments — even though CSS variables\n  formatter sh\n[…]\nredeploys Cloud Mode so the AI-facing tool\ndescriptions reach users (without 1.27.1, those still serve the v1.27.0\nstale text in dist/local.js and the Cloudflare deployment).\n\nFull suite 1129 passing.",
          "is_bot": false,
          "headline": "chore: Release v1.27.1 — docs patch sweeping stale Phase 1/2 language",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-17T01:18:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6658ad0b9f451f3bd4529a3e6a7ff4932533739e",
          "body": "…urce\n\nUser flagged the GitHub README still showing the v1.23.0 banner as the\nfront-and-center \"What's New\" callout — three minor versions out of date\n(v1.24, v1.25, v1.26 all shipped without updating it; v1.27.0 release\nalso missed it). Triggered an exhaustive audit via three parallel\nsub-agents (R\n[…]\nions (the latter\nship to users on their next MCP reconnect — Local Mode picks up the\nnew dist after `npm update @latest`; Cloud Mode picks up immediately\non wrangler deploy).\n\nFull suite 1129 passing.",
          "is_bot": false,
          "headline": "docs(audit): exhaustive stale-content sweep across README + docs + so…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-17T01:16:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b71d2a180ae643234250963c461bf7d0faf5dbbf",
          "body": null,
          "is_bot": false,
          "headline": "Merge feature/figma-tokens-sync into main — v1.27.0 release",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-17T01:02:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "510128301a7bb3c13e3fe99e70724fd0bde062be",
          "body": null,
          "is_bot": false,
          "headline": "chore: Release v1.27.0 — bidirectional Figma↔code token sync",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-17T01:02:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "56671b7cb6810baf9883c2afdbf41a936af0a90e",
          "body": "…ersion\n\nThree pre-merge fixes from the code review of feature/figma-tokens-sync\nbefore v1.27.0 release.\n\n1. Cloud Mode fs landmine (BLOCKING per review). The new tools were\n   registered identically in src/index.ts (Cloud Mode) but called\n   readFileSync / readdirSync / writeFileSync / process.cwd(\n[…]\nript update so scripts/release.sh now bumps this\n   string alongside src/index.ts's three version literals and the\n   plugin's PLUGIN_VERSION.\n\n2 new tests added (29 tokens tests, 1129 total passing).",
          "is_bot": false,
          "headline": "fix(tokens): Cloud Mode fs guard + alias-skip warnings + dynamic mcpV…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-17T00:55:38Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cc3710cc161a8d6f8f9a87beeef859b272878747",
          "body": "…a now\n\nWired the diff plan into real Figma variable mutations via the plugin's\nexecuteCodeViaUI bridge. Updates flow:\n\n  1. Compute diff plan as before (toUpdate / toCreate / toDelete buckets).\n  2. For each toUpdate entry: look up the Figma variableId + collectionId\n     from the code-side token's\n[…]\nponse shape adds an applyResult { applied, failed, errors } block\nwhen not dry-run and there were toUpdate entries. The mode label in the\nresponse is now 'applied' instead of 'not-applied-in-phase-1'.",
          "is_bot": false,
          "headline": "feat(tokens): apply phase — figma_import_tokens actually mutates Figm…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T21:31:08Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d049aff745a6f1aaa19d8b6b97218bf12715deed",
          "body": "User-spotted accuracy issues from the third real-Figma round-trip\ntest against CollegeTown:\n\n1. 70 broken `var(--ds-unknown)` references in 3-mode.css.\n\n   The converter previously emitted `{ reference: \"{unknown}\" }` for any\n   alias whose target wasn't in the local variable set — i.e. variables\n  \n[…]\n resolve `{__library:...}` references to their literal\n   values instead of skipping them in CSS output. Not in this commit.\n\n2 regression tests added (27 tokens tests total, full suite 1127\npassing).",
          "is_bot": false,
          "headline": "fix(tokens): cross-library alias preservation + CSS string quoting",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T21:21:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "da87484126590992ac368da8b6a40ef6be78bb00",
          "body": "Real Figma variable names can contain spaces (CollegeTown has\n'tailwind colors/purple/50'). The previous css-vars formatter joined\npath segments with '-' without normalizing each segment, producing\ninvalid CSS identifiers like '--ds-tailwind colors-purple-50' with an\nunescaped space.\n\nFix: pathToCss\n[…]\ncolors-purple-50)'\nmatches the property name that's actually declared elsewhere).\n\nRegression test added with a 'tailwind colors' source name + an alias\npointing at it. Suite: 25 tokens tests passing.",
          "is_bot": false,
          "headline": "fix(tokens): slugify each path segment in css-vars output",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T20:45:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e969112133de70544b068320ab3b5b31cf535946",
          "body": "Two changes from the third round of real-Figma testing.\n\n1. Order-independent diff comparison. Final 60 false-positive toUpdates\n   on the CollegeTown test were tokens whose values matched exactly but\n   whose mode key insertion order differed:\n     Figma:   { Light, Dark, Vibrant }    (collection o\n[…]\nanonical to source/, CSS vars to generated/ with\n   ds- prefix and splitByCollection.\n\n4 new Jest tests covering primitives, aliases, dark-mode convention,\nprefix. Full suite: 1124 passing (was 1120).",
          "is_bot": false,
          "headline": "feat(tokens): order-independent diff + CSS variables formatter",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T20:39:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ed3874c14a7834d9dc3ef81d28cd54d610743971",
          "body": "…ensions\n\nCaught by the second real-Figma round-trip against CollegeTown. After the\nslug round-trip and merge dedup fixes, parsedTokenCount was correct (713\nmatching Figma exactly), set names matched perfectly, and 627 of 713 tokens\nshowed unchanged. But the 60 multi-mode tokens in the \"3. Mode\" col\n[…]\n(modulo cross-library aliases, which\nare a separate Phase 2 issue tracked separately).\n\nRegression test added: splitByMode + parse → modes recovered correctly.\nSuite: 20 tokens tests passing (was 19).",
          "is_bot": false,
          "headline": "fix(tokens): splitByMode round-trip — embed fileMode in document $ext…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T20:34:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "702c787c9b73aa0268fd9abf254dc120f95467e8",
          "body": "…sponse\n\nThree correctness fixes from the second round of real-Figma testing\nagainst CollegeTown Design System.\n\n1. Set names slugified for JSON keys lose their original form. A Figma\n   collection named \"1. TailwindCSS\" becomes JSON key \"1-tailwindcss\",\n   and the parser previously used that slug a\n[…]\n  the apply; full entries available via figma_get_variables for IDs.\n\nRegression test added for the set-name slug round-trip with\n\"1. TailwindCSS\" collection name. Full suite: 1119 passing (was 1118).",
          "is_bot": false,
          "headline": "fix(tokens): set-name slug round-trip, multi-mode dedup, slim diff re…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T20:29:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "da4d14112794b52811adc388cf3dcb99721e178a",
          "body": "Two bugs caught by the first real-Figma test against CollegeTown Design System:\n\n1. ESM require bug. collectInputFiles dynamically imported readdirSync via\n   require(\"node:fs\") inside the function body. The MCP runs as ESM (per\n   tsconfig.local.json's \"module\": \"Node16\"), so require is undefined a\n[…]\n+ derived outputs\" split.\n\nBoth validated by running figma_export_tokens against a real 4-collection\n713-token file and verifying the 7 split-by-mode/collection DTCG files land\nin the right directory.",
          "is_bot": false,
          "headline": "fix(tokens): ESM require + canonical output routing",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T20:22:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "db5f4350f8508f79a01a01d0db4ce63e1109e7d3",
          "body": "… DTCG round-trip\n\nPhase 1 of the bidirectional Figma <-> code token sync engine. Two new MCP\ntools that together replace Style Dictionary and Tokens Studio's export\npipeline for popular styling methods. DTCG (W3C Design Tokens Community\nGroup) is the canonical pivot format; other styling outputs co\n[…]\n-platform needs can still consume our DTCG output downstream.\n\nDesign doc: .notes/FIGMA-TOKENS-SYNC-DESIGN.md (gitignored per project\nconvention; included in this commit's working tree for reference).",
          "is_bot": false,
          "headline": "feat(tokens): scaffold figma_export_tokens + figma_import_tokens with…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T20:16:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "63fc35aafe5ec08200533ea63e3c1b5539ec27c4",
          "body": "…ire-compatible upgrades\n\nPrevious wording said \"re-import the manifest after a package update\" as a\nblanket instruction, which is misleading. In practice most upgrades stay\nwire-compatible with the previous plugin — every tool, every command, and\nevery WebSocket protocol message still works without\n[…]\n up (status-pill copy, pluginVersion reporting)\n  - Be explicit that release notes will call out required re-imports\n    explicitly when they apply\n\nNo code or test changes. Tests still 1100/36 green.",
          "is_bot": false,
          "headline": "docs: clarify that re-importing the plugin manifest is optional for w…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T19:20:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9ddf78a3ca0083582cbf915ffd85d3deaa36bd62",
          "body": null,
          "is_bot": false,
          "headline": "Merge feature/cleanup-and-clarity into main — v1.26.0 release",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T19:13:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b4f665e6c6fe00135dab648d643ab9b5f7203919",
          "body": "…tion",
          "is_bot": false,
          "headline": "chore: Release v1.26.0 — Local-mode CDP removal + identity disambigua…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T19:13:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ffe4bf017515fee136f03733a2ad00cefc21532f",
          "body": "- docs/setup.md L415: Cloud Mode \"What You Can Do (83 Tools)\" → (93 Tools)\n- docs/use-cases.md L412: Cloud pairing flow \"All write tools (43 total)\"\n  → \"All 93 Cloud Mode tools — including write/create tools\"\n\nBoth were missed by the earlier sweep because they used \"(N Tools)\"\nand \"(N total)\" patterns rather than the \"94 tools\" / \"**94**\" patterns\nthe bulk sed targeted. Caught by a follow-up subagent audit.",
          "is_bot": false,
          "headline": "chore(docs): fix two stale tool-count cells found in final verification",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T17:18:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b503371e5737ad84517030c76d4691bd29e5acf2",
          "body": "…ode boundaries\n\nWhat was wrong, what changed, and why each chunk got rewritten:\n\nTool counts (off across the board)\n  Old docs said \"94 tools\" in Local and \"83 tools\" in Cloud / \"61 tools\" in\n  Remote-paired / \"44 tools\" / \"15 tools\" in various tables. Grepping the\n  registered tool names in src/lo\n[…]\nppeteer-CDP path was removed.\n\ntools.md figma_navigate description\n  Was Always use this first to initialize the browser - no longer true in\n  Local mode. Split the description to show both behaviors.",
          "is_bot": false,
          "headline": "chore(docs): scrub Markdown docs — tool counts, bootloader removal, m…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T17:11:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5ecf200d3a30f27a0c5ed8d46e412d581e53a3c8",
          "body": "package.json:\n  - description: the previous npm description (\"MCP server for accessing\n    Figma plugin console logs and screenshots via Cloudflare Workers or\n    local mode\") only covered 2 tools out of 94 — console logs and\n    screenshots — and was the first thing prospective users saw on npm.\n  \n[…]\n documented in .env.mcp) and accepted as a Bearer\n    token in cloud mode. Now: \"Optional server-wide PAT for testing.\n    Cloud production uses per-user OAuth; local NPX mode reads this env\n    var.\"",
          "is_bot": false,
          "headline": "chore(docs): package.json, wrangler, delete orphan launcher scripts",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T16:53:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ae1ffe8a3ced07b9bfed676eae88f99f75228d29",
          "body": "Findings from the tool-description audit applied:\n\nfigma_get_variables (src/core/figma-tools.ts):\n  - JSDoc block (lines 1040–1052): replaced the \"TWO-CALL PATTERN\n    (console snippet)\" workflow description with the actual resolution\n    order — cache → Desktop Bridge plugin → REST API → Styles API\n[…]\n   description, one in the runtime resource_link header — both removed.\n\nVerification:\n  - tsc --noEmit -p tsconfig.local.json: clean\n  - jest: 1100 / 1100 passing\n  - Tool surface unchanged (94 → 94)",
          "is_bot": false,
          "headline": "chore(docs): scrub tool descriptions — accurate to current behavior",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T16:52:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1ff65d3964da99b18df24be145857bddf0a9f376",
          "body": "… runtime strings + plugin code comments\n\nUser-visible runtime strings:\n  - src/local.ts:1229 (LLM-facing ai_instruction in figma_get_status): no\n    longer claims \"the plugin's bootloader will automatically scan all\n    ports\" — the bootloader was deleted in Phase 2 (commit 03ffea1).\n    Now says t\n[…]\nthis file (or any test file — CDP path is gone). Header\n    now correctly summarizes what's actually tested.\n\nVerification:\n  - tsc --noEmit -p tsconfig.local.json: clean\n  - jest: 1100 / 1100 passing",
          "is_bot": false,
          "headline": "chore(docs): scrub stale CDP / bootloader / Puppeteer references from…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T16:49:51Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9081df2a528acea4fcde372f1490a2ed3a9c5254",
          "body": "Tail-end documentation cleanup so nothing in user-facing or AI-instruction\ndocs still implies a CDP fallback exists:\n\n  - docs/architecture.md: the IFigmaConnector connector table dropped\n    the \"Local Desktop / FigmaDesktopConnector / CDP fallback\" row.\n    Added a one-line note explaining the tra\n[…]\n tsconfig.local.json: clean\n  - tsc --noEmit -p tsconfig.cloudflare.json: only pre-existing Env errors\n  - npm run build:local: clean\n  - jest: 1100 / 1100 passing\n  - Tool surface unchanged (94 → 94)",
          "is_bot": false,
          "headline": "docs: scrub remaining CDP references (Phase 3 8 — final)",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T16:04:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "90fe164e29ed6b0c7277501c027e006643dbc259",
          "body": "Now that the CDP source files and config have been removed, the two\nlocal-mode-only browser-automation dependencies have no consumers:\n\n  - puppeteer-core (^23.11.1) — used by LocalBrowserManager and\n    FigmaDesktopConnector for the Figma Desktop --remote-debugging-port\n    connection. Both files d\n[…]\n tsconfig.local.json: clean\n  - tsc --noEmit -p tsconfig.cloudflare.json: only pre-existing Env errors\n  - npm run build:local: clean\n  - jest: 1100 / 1100 passing\n  - Tool surface unchanged (94 → 94)",
          "is_bot": false,
          "headline": "chore(deps): drop puppeteer-core + chrome-remote-interface (Phase 3 7)",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T16:03:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "26b79b80f362212265cb4aa5cbc80260a6a5d8bf",
          "body": "… (Phase 3 6)\n\nThe local-mode `debugHost` / `debugPort` config block was the CDP launch\nconfiguration — telling LocalBrowserManager which host/port to\n`puppeteer.connect()` to. With Phase 3 5 deleting LocalBrowserManager,\nnothing reads these fields anymore.\n\nChanges:\n  - src/core/config.ts: drop the\n[…]\nrification:\n  - tsc --noEmit -p tsconfig.local.json: clean\n  - tsc --noEmit -p tsconfig.cloudflare.json: only pre-existing Env errors\n  - jest: 1100 / 1100 passing\n  - Tool surface unchanged (94 → 94)",
          "is_bot": false,
          "headline": "chore: drop LocalModeConfig (debugHost / debugPort) from config types…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T16:01:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ffb8b39ad4aab97167ff700425dae8ff8f18c0a4",
          "body": "…pe to 'websocket' (Phase 3 5)\n\nAfter 4a–4e nothing reachable in either local or cloud mode references\nthe local Puppeteer/CDP layer. Dropping all of it:\n\n  - src/core/figma-desktop-connector.ts (~1,693 lines) — the CDP-side\n    IFigmaConnector implementation\n  - src/browser/local.ts — LocalBrowserM\n[…]\nBrowserManager |\n    IBrowserManager across src/ tests/: 0 hits\n\nCloud mode (src/browser-manager.ts, @cloudflare/puppeteer) is untouched\nand continues to work the same way — it never used these files.",
          "is_bot": false,
          "headline": "chore: delete CDP source files; narrow IFigmaConnector.getTransportTy…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-16T15:59:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bb641eec538be36e52ecf7bee404a2615fb2fda7",
          "body": "…sterFigmaAPITools params (Phase 3 4e)\n\nThe last surface that referenced the old CDP/Puppeteer machinery in\nlocal mode comes out:\n\n  src/local.ts\n    - Drop the `import { LocalBrowserManager }` and `import { ConsoleMonitor }`\n      and `import { FigmaDesktopConnector }` lines\n    - Drop `private bro\n[…]\nsportType to 'websocket'\n  6. drop LocalModeConfig + debugHost/debugPort from src/core/config.ts +\n     types\n  7. drop puppeteer-core + chrome-remote-interface from package.json\n  8. final docs scrub",
          "is_bot": false,
          "headline": "refactor: drop browserManager + consoleMonitor fields and unused regi…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T20:12:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "233d1706b91cef267baa57a94fabab015135f50c",
          "body": "…console to WS-only (Phase 3 4d)\n\nFinal pass over the dual-transport literals that were carried in alongside\nthe now-deleted CDP branches:\n\n  figma_watch_console: the entire handler was a 50-line `useCDP ? cdpPath\n  : wsPath` ternary tree. After 4a, ConsoleMonitor is never running so\n  useCDP is alw\n[…]\nc --noEmit -p tsconfig.cloudflare.json: only pre-existing Env errors\n  - jest: 1101/1101 passing\n  - Tool surface unchanged (94 → 94)\n  - grep useCDP|\"cdp\"|'cdp' in src/local.ts: 0 hits in active code",
          "is_bot": false,
          "headline": "refactor(local): drop useCDP / 'cdp' literals — collapse figma_watch_…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T20:02:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "43286ca5420bd8e2b854b90e8ab90d4797cb7287",
          "body": "…ndlers (Phase 3 4c)\n\nAfter 4a the LocalBrowserManager field is always null, so every\n`if (this.browserManager) { … }` / `?.isRunning()` branch in local.ts is\ndead code. This commit collapses them to the WebSocket-only path that was\nalready living next door in each affected handler.\n\nTouched handler\n[…]\nVerification:\n  - tsc --noEmit -p tsconfig.local.json: clean\n  - tsc --noEmit -p tsconfig.cloudflare.json: only pre-existing Env errors\n  - jest: 1101/1101 passing\n  - Tool surface unchanged (94 → 94)",
          "is_bot": false,
          "headline": "refactor(local): collapse browserManager dead branches across tool ha…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T19:59:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "92be3b4d347a7b566dc111a41d0dc0a0a5f3c76f",
          "body": "…figma_clear_console (Phase 3 4b)\n\nAfter 4a, ConsoleMonitor is never constructed. Three of the surviving dead\nbranches were independently reachable (i.e. not nested inside a\nbrowserManager guard) and worth removing now so the WS-only intent is\nobvious to anyone reading the code:\n\n  1. figma_get_cons\n[…]\nVerification:\n  - tsc --noEmit -p tsconfig.local.json: clean\n  - tsc --noEmit -p tsconfig.cloudflare.json: only pre-existing Env errors\n  - jest: 1101/1101 passing\n  - Tool surface unchanged (94 → 94)",
          "is_bot": false,
          "headline": "refactor(local): collapse the CDP branch in figma_get_console_logs + …",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T19:53:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b279eccee4476859142a7ca2ee87256fdaad6a1a",
          "body": "…or (Phase 3 4a)\n\nensureInitialized() previously did two things:\n  1. Constructed LocalBrowserManager (a Puppeteer client that connected to\n     Figma Desktop via --remote-debugging-port=9222 — CDP)\n  2. Constructed ConsoleMonitor bound to that Puppeteer Page\n\nBoth have been superseded by the WebSoc\n[…]\nVerification:\n  - tsc --noEmit -p tsconfig.local.json: clean\n  - tsc --noEmit -p tsconfig.cloudflare.json: only pre-existing Env errors\n  - jest: 1101/1101 passing\n  - Tool surface unchanged (94 → 94)",
          "is_bot": false,
          "headline": "refactor(local): stop constructing LocalBrowserManager + ConsoleMonit…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T19:50:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8db936118c46dec1e222a3247d972c9effd8fd23",
          "body": "…(Phase 3)\n\nThe CDP-fallback branches inside figma-tools.ts tool handlers are reachable\nonly if `getDesktopConnector` is undefined — but both call sites\n(`src/local.ts:5961` and `src/index.ts:1019`) always pass a non-null\n`getDesktopConnector`. The legacy else-branches that dynamically imported\nFigm\n[…]\n01/1101 passing\n  - Tool surface unchanged (94 → 94)\n  - grep -c \"\\bbrowserManager\\b\" src/core/figma-tools.ts: 0\n  - grep -c \"FigmaDesktopConnector\\|figma-desktop-connector\" src/core/figma-tools.ts: 0",
          "is_bot": false,
          "headline": "refactor: drop CDP fallback paths from figma-tools.ts handler bodies …",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T18:00:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4262bed84a5d16cee952f23695816d5b2a95d57a",
          "body": "…@cloudflare/puppeteer\n\nConsoleMonitor's Page and WebWorker types came from puppeteer-core for a\nhistorical reason: both local mode (LocalBrowserManager via puppeteer-core)\nand cloud mode (BrowserManager via @cloudflare/puppeteer) instantiated it\nagainst their respective Page implementations. The co\n[…]\n\n  - tsc --noEmit -p tsconfig.cloudflare.json: only the pre-existing Env\n    errors remain\n  - Tool surface unchanged (94 → 94)\n  - Jest from commit 1 exit 0 (commit 2 is type-only, no runtime change)",
          "is_bot": false,
          "headline": "refactor: migrate ConsoleMonitor type imports from puppeteer-core to …",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T17:55:21Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c8407d2c009bfb2513da98f6f9ff9b5b046caee0",
          "body": "Before deleting src/browser/{base,local,cloudflare}.ts in a later commit,\nsever the cloud BrowserManager's dependency on browser/base.ts.\n\nsrc/browser-manager.ts (cloud Cloudflare-Browser-Rendering manager) imported\nonly the NavigationResult type from browser/base.ts — no other symbols. Now\nthat typ\n[…]\n src/index.ts:101/938/982 remain (documented as pre-existing\n    on main in CLAUDE.md \"Known Issues\")\n  - Tool surface unchanged (94 → 94 unique figma_* tools)\n\nAtomic, type-only, zero runtime change.",
          "is_bot": false,
          "headline": "refactor: inline NavigationResult into browser-manager.ts (Phase 3 prep)",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T17:53:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0faf925b70237b40ed1f461c0ddbd5814c16db2e",
          "body": "…-tools dedupe\n\nThe Phase-2 write-tools dedupe (commit 69b02d3) excised lines 1957–5958 of\nlocal.ts on the assumption — based on the Phase-0 audit — that the entire\nrange was 30 inline copies of write-tools.ts. The audit was wrong about\nthe boundaries: five READ-SIDE tools had been interleaved betwe\n[…]\nt catch the regression because\n    tests target write-tools.ts and the registrar's outputs, not the\n    inline read-tool blocks — worth a follow-up test for tool-list parity)\n  - dist/local.js rebuilt",
          "is_bot": false,
          "headline": "fix: restore 5 read-side library/design-system tools dropped by write…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T03:29:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "69b02d3db204c1ada19a8bd1fc7a56cf85238372",
          "body": "…eTools (-3950 lines)\n\nFor ~9 months, local mode and cloud mode have each been carrying their own\ncopy of 30 write tools — local.ts lines 1957–5958 contained inline\ndefinitions that mirrored src/core/write-tools.ts byte-for-byte (modulo\nindentation and `this.getDesktopConnector()` vs the passed-in g\n[…]\ny\n\nBackup of the pre-dedupe local.ts saved at /tmp/local.ts.bak in case any\nbehavioral drift surfaces post-merge — diff against current to recover\nany tool-specific copy that wasn't in write-tools.ts.",
          "is_bot": false,
          "headline": "refactor: dedupe write tools — local.ts now delegates to registerWrit…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T03:14:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "03ffea10ff34e29e4dc334cbd63b8d5a9a9ffa98",
          "body": "…ead code)\n\nThe \"bootloader pattern\" was an experimental v1.14.0 design that loaded a\nthin ui.html and fetched the full UI HTML from the MCP server at runtime,\nthe goal being to avoid the Figma plugin re-import dance every time the UI\nchanged. It was superseded — the shipped manifest references ui.h\n[…]\nstead of the deleted file\n\nNet deletion: ~55 KB plugin file + ~120 lines of unreferenced server +\nplugin code.\n\nVerification:\n  - tsc --noEmit -p tsconfig.local.json: clean\n  - jest: 1101/1101 passing",
          "is_bot": false,
          "headline": "chore: delete ui-full.html + bootloader code paths (HIGH-confidence d…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T03:11:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "533cdf7e2ef31082ae6441d2732e92af9d454544",
          "body": "…, not the IIFE-scoped var\n\nThe mode label (\"Local\" / \"Cloud\" / \"Local + Cloud\") in the status pill\nnever appeared in practice because renderModeText() was defined at the\ntop of the script and tried to read `activeConnections` directly — but\nthat variable is declared with `var` inside the connection\n[…]\nn window\n  - Re-run from Plugins → Development → Figma Desktop Bridge\n  - Pill should now read \"Local ready\" while connected to a local\n    MCP server, or \"Local + Cloud ready\" if cloud is also paired",
          "is_bot": false,
          "headline": "fix: plugin mode banner reads activeConnections via the global getter…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T03:06:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0edf949ecf0e3b0a584bb56b599490ca3cb2bc78",
          "body": "Replaces the static \"MCP\" label in the Desktop Bridge plugin's status pill\nwith a live mode indicator — \"Local\", \"Cloud\", or \"Local + Cloud\" — so\nusers can see at a glance which transport is actually carrying their\nsession. Before this change the pill said only \"MCP ready\" regardless of\nwhich transp\n[…]\nill will read \"Local + Cloud ready\" or \"Cloud ready\" instead of just\n\"MCP ready\" — giving her an immediate signal that something switched.\n\nRequires plugin re-import to take effect for existing users.",
          "is_bot": false,
          "headline": "feat: plugin status pill shows Local / Cloud transport mode",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T02:54:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0ab9fb49ec37e8899d216a4eec2b53b8cb106dd2",
          "body": "…r with [figma-console-mcp]\n\nThe earlier identity work only covered tools that route through\nadaptiveResponse (about 5 call sites in figma-tools.ts) plus the new\nfigma_diagnose tool. The remaining ~90 tools in the codebase built their\nown response objects directly and shipped without an _mcp field —\n[…]\nFuture tools added to the server are covered automatically.\nThe full jest suite (36 suites / 1101 tests) passes without modification —\nthe wrap is invisible to handlers and to mock-server-based tests.",
          "is_bot": false,
          "headline": "feat: universal identity wrap — tag every tool response + thrown erro…",
          "author_name": "Terrance Pitre",
          "author_login": "tpitre",
          "committed_at": "2026-05-15T02:49:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 66,
      "commits_last_year": 553,
      "latest_release_at": "2026-07-17T00:26:17Z",
      "latest_release_tag": "v1.36.0",
      "releases_from_tags": false,
      "days_since_last_push": 4,
      "active_weeks_last_year": 33,
      "days_since_latest_release": 4,
      "mean_days_between_releases": 4.9
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 50,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "figma-console-mcp",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "mcp",
            "figma",
            "plugin",
            "design-tokens",
            "design-systems",
            "variables",
            "figjam",
            "slides",
            "accessibility",
            "ai",
            "anthropic",
            "claude",
            "cloudflare"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/figma-console-mcp",
          "is_deprecated": false,
          "latest_version": "1.36.0",
          "repository_url": "https://github.com/southleft/figma-console-mcp",
          "versions_count": 81,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 99709,
          "first_published_at": "2025-11-08T11:48:16.636000Z",
          "latest_published_at": "2026-07-17T00:32:31.958000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 4
        }
      ]
    },
    "popularity": {
      "forks": 224,
      "stars": 2024,
      "watchers": 28,
      "fork_history": {
        "days": [
          {
            "date": "2026-01-15",
            "count": 2
          },
          {
            "date": "2026-01-16",
            "count": 2
          },
          {
            "date": "2026-01-17",
            "count": 2
          },
          {
            "date": "2026-01-18",
            "count": 1
          },
          {
            "date": "2026-01-20",
            "count": 2
          },
          {
            "date": "2026-01-22",
            "count": 1
          },
          {
            "date": "2026-01-24",
            "count": 2
          },
          {
            "date": "2026-01-27",
            "count": 2
          },
          {
            "date": "2026-01-28",
            "count": 1
          },
          {
            "date": "2026-01-29",
            "count": 1
          },
          {
            "date": "2026-02-02",
            "count": 4
          },
          {
            "date": "2026-02-04",
            "count": 1
          },
          {
            "date": "2026-02-08",
            "count": 1
          },
          {
            "date": "2026-02-09",
            "count": 4
          },
          {
            "date": "2026-02-10",
            "count": 3
          },
          {
            "date": "2026-02-11",
            "count": 1
          },
          {
            "date": "2026-02-13",
            "count": 1
          },
          {
            "date": "2026-02-14",
            "count": 1
          },
          {
            "date": "2026-02-15",
            "count": 4
          },
          {
            "date": "2026-02-16",
            "count": 3
          },
          {
            "date": "2026-02-17",
            "count": 2
          },
          {
            "date": "2026-02-18",
            "count": 2
          },
          {
            "date": "2026-02-19",
            "count": 4
          },
          {
            "date": "2026-02-21",
            "count": 3
          },
          {
            "date": "2026-02-22",
            "count": 1
          },
          {
            "date": "2026-02-23",
            "count": 4
          },
          {
            "date": "2026-02-24",
            "count": 2
          },
          {
            "date": "2026-02-26",
            "count": 2
          },
          {
            "date": "2026-02-27",
            "count": 2
          },
          {
            "date": "2026-03-01",
            "count": 4
          },
          {
            "date": "2026-03-02",
            "count": 2
          },
          {
            "date": "2026-03-03",
            "count": 1
          },
          {
            "date": "2026-03-04",
            "count": 5
          },
          {
            "date": "2026-03-05",
            "count": 1
          },
          {
            "date": "2026-03-06",
            "count": 3
          },
          {
            "date": "2026-03-08",
            "count": 1
          },
          {
            "date": "2026-03-09",
            "count": 3
          },
          {
            "date": "2026-03-10",
            "count": 4
          },
          {
            "date": "2026-03-11",
            "count": 4
          },
          {
            "date": "2026-03-12",
            "count": 5
          },
          {
            "date": "2026-03-13",
            "count": 5
          },
          {
            "date": "2026-03-15",
            "count": 2
          },
          {
            "date": "2026-03-16",
            "count": 4
          },
          {
            "date": "2026-03-17",
            "count": 2
          },
          {
            "date": "2026-03-18",
            "count": 5
          },
          {
            "date": "2026-03-19",
            "count": 8
          },
          {
            "date": "2026-03-20",
            "count": 5
          },
          {
            "date": "2026-03-21",
            "count": 4
          },
          {
            "date": "2026-03-22",
            "count": 1
          },
          {
            "date": "2026-03-23",
            "count": 3
          },
          {
            "date": "2026-03-24",
            "count": 3
          },
          {
            "date": "2026-03-25",
            "count": 3
          },
          {
            "date": "2026-03-26",
            "count": 2
          },
          {
            "date": "2026-03-27",
            "count": 1
          },
          {
            "date": "2026-03-28",
            "count": 5
          },
          {
            "date": "2026-03-29",
            "count": 1
          },
          {
            "date": "2026-03-30",
            "count": 1
          },
          {
            "date": "2026-04-01",
            "count": 2
          },
          {
            "date": "2026-04-02",
            "count": 1
          },
          {
            "date": "2026-04-03",
            "count": 2
          },
          {
            "date": "2026-04-04",
            "count": 1
          },
          {
            "date": "2026-04-05",
            "count": 1
          },
          {
            "date": "2026-04-06",
            "count": 3
          },
          {
            "date": "2026-04-07",
            "count": 3
          },
          {
            "date": "2026-04-09",
            "count": 2
          },
          {
            "date": "2026-04-10",
            "count": 3
          },
          {
            "date": "2026-04-12",
            "count": 1
          },
          {
            "date": "2026-04-14",
            "count": 3
          },
          {
            "date": "2026-04-15",
            "count": 3
          },
          {
            "date": "2026-04-16",
            "count": 2
          },
          {
            "date": "2026-04-17",
            "count": 1
          },
          {
            "date": "2026-04-18",
            "count": 1
          },
          {
            "date": "2026-04-19",
            "count": 1
          },
          {
            "date": "2026-04-22",
            "count": 1
          },
          {
            "date": "2026-04-24",
            "count": 1
          },
          {
            "date": "2026-04-27",
            "count": 1
          },
          {
            "date": "2026-04-28",
            "count": 2
          },
          {
            "date": "2026-04-29",
            "count": 1
          },
          {
            "date": "2026-05-01",
            "count": 1
          },
          {
            "date": "2026-05-05",
            "count": 1
          },
          {
            "date": "2026-05-10",
            "count": 1
          },
          {
            "date": "2026-05-19",
            "count": 1
          },
          {
            "date": "2026-05-20",
            "count": 1
          },
          {
            "date": "2026-05-23",
            "count": 1
          },
          {
            "date": "2026-05-25",
            "count": 1
          },
          {
            "date": "2026-05-26",
            "count": 1
          },
          {
            "date": "2026-05-27",
            "count": 1
          },
          {
            "date": "2026-05-29",
            "count": 1
          },
          {
            "date": "2026-06-03",
            "count": 1
          },
          {
            "date": "2026-06-04",
            "count": 1
          },
          {
            "date": "2026-06-10",
            "count": 2
          },
          {
            "date": "2026-06-17",
            "count": 1
          },
          {
            "date": "2026-06-18",
            "count": 1
          },
          {
            "date": "2026-06-21",
            "count": 1
          },
          {
            "date": "2026-06-22",
            "count": 2
          },
          {
            "date": "2026-06-23",
            "count": 1
          },
          {
            "date": "2026-06-26",
            "count": 1
          },
          {
            "date": "2026-06-29",
            "count": 1
          },
          {
            "date": "2026-07-02",
            "count": 1
          },
          {
            "date": "2026-07-05",
            "count": 3
          },
          {
            "date": "2026-07-06",
            "count": 1
          },
          {
            "date": "2026-07-08",
            "count": 2
          },
          {
            "date": "2026-07-09",
            "count": 2
          },
          {
            "date": "2026-07-10",
            "count": 2
          },
          {
            "date": "2026-07-14",
            "count": 1
          },
          {
            "date": "2026-07-15",
            "count": 4
          },
          {
            "date": "2026-07-17",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 224,
        "total_forks": 224
      },
      "star_history": {
        "days": [
          {
            "date": "2026-03-16",
            "count": 10
          },
          {
            "date": "2026-03-17",
            "count": 27
          },
          {
            "date": "2026-03-18",
            "count": 21
          },
          {
            "date": "2026-03-19",
            "count": 39
          },
          {
            "date": "2026-03-20",
            "count": 22
          },
          {
            "date": "2026-03-21",
            "count": 19
          },
          {
            "date": "2026-03-22",
            "count": 13
          },
          {
            "date": "2026-03-23",
            "count": 16
          },
          {
            "date": "2026-03-24",
            "count": 31
          },
          {
            "date": "2026-03-25",
            "count": 31
          },
          {
            "date": "2026-03-26",
            "count": 17
          },
          {
            "date": "2026-03-27",
            "count": 18
          },
          {
            "date": "2026-03-28",
            "count": 12
          },
          {
            "date": "2026-03-29",
            "count": 6
          },
          {
            "date": "2026-03-30",
            "count": 8
          },
          {
            "date": "2026-03-31",
            "count": 14
          },
          {
            "date": "2026-04-01",
            "count": 10
          },
          {
            "date": "2026-04-02",
            "count": 20
          },
          {
            "date": "2026-04-03",
            "count": 8
          },
          {
            "date": "2026-04-04",
            "count": 5
          },
          {
            "date": "2026-04-05",
            "count": 3
          },
          {
            "date": "2026-04-06",
            "count": 8
          },
          {
            "date": "2026-04-07",
            "count": 16
          },
          {
            "date": "2026-04-08",
            "count": 12
          },
          {
            "date": "2026-04-09",
            "count": 10
          },
          {
            "date": "2026-04-10",
            "count": 15
          },
          {
            "date": "2026-04-11",
            "count": 4
          },
          {
            "date": "2026-04-12",
            "count": 6
          },
          {
            "date": "2026-04-13",
            "count": 12
          },
          {
            "date": "2026-04-14",
            "count": 14
          },
          {
            "date": "2026-04-15",
            "count": 11
          },
          {
            "date": "2026-04-16",
            "count": 15
          },
          {
            "date": "2026-04-17",
            "count": 10
          },
          {
            "date": "2026-04-18",
            "count": 3
          },
          {
            "date": "2026-04-19",
            "count": 5
          },
          {
            "date": "2026-04-20",
            "count": 11
          },
          {
            "date": "2026-04-21",
            "count": 10
          },
          {
            "date": "2026-04-22",
            "count": 6
          },
          {
            "date": "2026-04-23",
            "count": 9
          },
          {
            "date": "2026-04-24",
            "count": 3
          },
          {
            "date": "2026-04-25",
            "count": 7
          },
          {
            "date": "2026-04-26",
            "count": 3
          },
          {
            "date": "2026-04-27",
            "count": 6
          },
          {
            "date": "2026-04-28",
            "count": 10
          },
          {
            "date": "2026-04-29",
            "count": 11
          },
          {
            "date": "2026-04-30",
            "count": 8
          },
          {
            "date": "2026-05-01",
            "count": 2
          },
          {
            "date": "2026-05-02",
            "count": 1
          },
          {
            "date": "2026-05-03",
            "count": 2
          },
          {
            "date": "2026-05-04",
            "count": 8
          },
          {
            "date": "2026-05-05",
            "count": 6
          },
          {
            "date": "2026-05-06",
            "count": 8
          },
          {
            "date": "2026-05-07",
            "count": 8
          },
          {
            "date": "2026-05-08",
            "count": 5
          },
          {
            "date": "2026-05-09",
            "count": 4
          },
          {
            "date": "2026-05-10",
            "count": 4
          },
          {
            "date": "2026-05-11",
            "count": 5
          },
          {
            "date": "2026-05-12",
            "count": 7
          },
          {
            "date": "2026-05-13",
            "count": 3
          },
          {
            "date": "2026-05-14",
            "count": 5
          },
          {
            "date": "2026-05-15",
            "count": 6
          },
          {
            "date": "2026-05-16",
            "count": 3
          },
          {
            "date": "2026-05-17",
            "count": 1
          },
          {
            "date": "2026-05-18",
            "count": 6
          },
          {
            "date": "2026-05-19",
            "count": 6
          },
          {
            "date": "2026-05-20",
            "count": 3
          },
          {
            "date": "2026-05-21",
            "count": 12
          },
          {
            "date": "2026-05-22",
            "count": 6
          },
          {
            "date": "2026-05-23",
            "count": 1
          },
          {
            "date": "2026-05-24",
            "count": 2
          },
          {
            "date": "2026-05-25",
            "count": 2
          },
          {
            "date": "2026-05-26",
            "count": 5
          },
          {
            "date": "2026-05-27",
            "count": 8
          },
          {
            "date": "2026-05-28",
            "count": 4
          },
          {
            "date": "2026-05-29",
            "count": 5
          },
          {
            "date": "2026-05-30",
            "count": 4
          },
          {
            "date": "2026-05-31",
            "count": 5
          },
          {
            "date": "2026-06-01",
            "count": 2
          },
          {
            "date": "2026-06-02",
            "count": 4
          },
          {
            "date": "2026-06-03",
            "count": 10
          },
          {
            "date": "2026-06-04",
            "count": 8
          },
          {
            "date": "2026-06-05",
            "count": 6
          },
          {
            "date": "2026-06-06",
            "count": 3
          },
          {
            "date": "2026-06-07",
            "count": 3
          },
          {
            "date": "2026-06-08",
            "count": 8
          },
          {
            "date": "2026-06-09",
            "count": 5
          },
          {
            "date": "2026-06-10",
            "count": 4
          },
          {
            "date": "2026-06-11",
            "count": 4
          },
          {
            "date": "2026-06-12",
            "count": 2
          },
          {
            "date": "2026-06-13",
            "count": 4
          },
          {
            "date": "2026-06-14",
            "count": 3
          },
          {
            "date": "2026-06-15",
            "count": 9
          },
          {
            "date": "2026-06-16",
            "count": 8
          },
          {
            "date": "2026-06-17",
            "count": 6
          },
          {
            "date": "2026-06-18",
            "count": 13
          },
          {
            "date": "2026-06-19",
            "count": 6
          },
          {
            "date": "2026-06-21",
            "count": 3
          },
          {
            "date": "2026-06-22",
            "count": 3
          },
          {
            "date": "2026-06-23",
            "count": 6
          },
          {
            "date": "2026-06-24",
            "count": 9
          },
          {
            "date": "2026-06-25",
            "count": 5
          },
          {
            "date": "2026-06-26",
            "count": 5
          },
          {
            "date": "2026-06-27",
            "count": 4
          },
          {
            "date": "2026-06-28",
            "count": 2
          },
          {
            "date": "2026-06-29",
            "count": 4
          },
          {
            "date": "2026-06-30",
            "count": 3
          },
          {
            "date": "2026-07-01",
            "count": 2
          },
          {
            "date": "2026-07-02",
            "count": 9
          },
          {
            "date": "2026-07-03",
            "count": 1
          },
          {
            "date": "2026-07-04",
            "count": 3
          },
          {
            "date": "2026-07-05",
            "count": 10
          },
          {
            "date": "2026-07-06",
            "count": 9
          },
          {
            "date": "2026-07-07",
            "count": 3
          },
          {
            "date": "2026-07-08",
            "count": 12
          },
          {
            "date": "2026-07-09",
            "count": 7
          },
          {
            "date": "2026-07-10",
            "count": 8
          },
          {
            "date": "2026-07-11",
            "count": 2
          },
          {
            "date": "2026-07-12",
            "count": 4
          },
          {
            "date": "2026-07-13",
            "count": 2
          },
          {
            "date": "2026-07-14",
            "count": 12
          },
          {
            "date": "2026-07-15",
            "count": 12
          },
          {
            "date": "2026-07-16",
            "count": 5
          },
          {
            "date": "2026-07-17",
            "count": 9
          },
          {
            "date": "2026-07-18",
            "count": 2
          },
          {
            "date": "2026-07-19",
            "count": 3
          },
          {
            "date": "2026-07-20",
            "count": 4
          },
          {
            "date": "2026-07-21",
            "count": 7
          }
        ],
        "complete": false,
        "collected": 1000,
        "total_stars": 2024
      },
      "open_issues_and_prs": 43
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": true,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 295107,
      "source_files_sampled": 142,
      "oversized_source_files": 10,
      "agent_instruction_files": [
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 1324
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "ws",
            "direct": true,
            "version": "8.18.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-58qx-3vcg-4xpx",
              "GHSA-96hv-2xvq-fx4p"
            ],
            "fixed_version": "8.21.0",
            "advisory_count": 2,
            "oldest_advisory_days": 63
          },
          {
            "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": 0
          },
          {
            "name": "undici",
            "direct": false,
            "version": "7.18.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-2mjp-6q6p-2qxm",
              "GHSA-35p6-xmwp-9g52",
              "GHSA-4992-7rv2-5pvq",
              "GHSA-f269-vfmq-vjvj",
              "GHSA-g8m3-5g58-fq7m",
              "GHSA-p88m-4jfj-68fv",
              "GHSA-phc3-fgpg-7m6h",
              "GHSA-pr7r-676h-xcf6",
              "GHSA-v9p9-hfj2-hcw8",
              "GHSA-vrm6-8vpv-qv8q"
            ],
            "fixed_version": "8.5.0",
            "advisory_count": 11,
            "oldest_advisory_days": 129
          },
          {
            "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": 0
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.27.3",
            "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": 38
          }
        ],
        "collected": true,
        "truncated": false,
        "by_severity": {
          "low": 2,
          "high": 3
        },
        "advisory_count": 16,
        "affected_count": 5,
        "assessed_count": 690,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 1
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "@cloudflare/puppeteer",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.0.4"
        },
        {
          "name": "@modelcontextprotocol/ext-apps",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.0.1"
        },
        {
          "name": "@modelcontextprotocol/sdk",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.26.0"
        },
        {
          "name": "agents",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.7.1"
        },
        {
          "name": "axe-core",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.11.2"
        },
        {
          "name": "jsdom",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^29.0.1"
        },
        {
          "name": "pino",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^9.5.0"
        },
        {
          "name": "pino-pretty",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^13.0.0"
        },
        {
          "name": "uuid",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^11.0.3"
        },
        {
          "name": "ws",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.19.0"
        },
        {
          "name": "zod",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.25.76"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "@cloudflare/puppeteer",
            "direct": true,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@modelcontextprotocol/ext-apps",
            "direct": true,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@modelcontextprotocol/sdk",
            "direct": true,
            "version": "1.26.0",
            "ecosystem": "npm"
          },
          {
            "name": "agents",
            "direct": true,
            "version": "0.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "axe-core",
            "direct": true,
            "version": "4.11.2",
            "ecosystem": "npm"
          },
          {
            "name": "jsdom",
            "direct": true,
            "version": "29.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "pino",
            "direct": true,
            "version": "9.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "pino-pretty",
            "direct": true,
            "version": "13.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "uuid",
            "direct": true,
            "version": "11.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": true,
            "version": "8.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": true,
            "version": "8.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "zod",
            "direct": true,
            "version": "3.25.76",
            "ecosystem": "npm"
          },
          {
            "name": "@ai-sdk/gateway",
            "direct": false,
            "version": "3.0.60",
            "ecosystem": "npm"
          },
          {
            "name": "@ai-sdk/provider",
            "direct": false,
            "version": "3.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "@ai-sdk/provider-utils",
            "direct": false,
            "version": "4.0.16",
            "ecosystem": "npm"
          },
          {
            "name": "@apidevtools/json-schema-ref-parser",
            "direct": false,
            "version": "11.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "@asamuzakjp/css-color",
            "direct": false,
            "version": "5.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@asamuzakjp/dom-selector",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@asamuzakjp/nwsapi",
            "direct": false,
            "version": "2.3.9",
            "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-plugin-utils",
            "direct": false,
            "version": "7.27.1",
            "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/plugin-syntax-async-generators",
            "direct": false,
            "version": "7.8.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-bigint",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-class-properties",
            "direct": false,
            "version": "7.12.13",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-class-static-block",
            "direct": false,
            "version": "7.14.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-import-attributes",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-import-meta",
            "direct": false,
            "version": "7.10.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-json-strings",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-jsx",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-logical-assignment-operators",
            "direct": false,
            "version": "7.10.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-nullish-coalescing-operator",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-numeric-separator",
            "direct": false,
            "version": "7.10.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-object-rest-spread",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-optional-catch-binding",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-optional-chaining",
            "direct": false,
            "version": "7.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-private-property-in-object",
            "direct": false,
            "version": "7.14.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-top-level-await",
            "direct": false,
            "version": "7.14.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-typescript",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/runtime",
            "direct": false,
            "version": "7.28.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/runtime-corejs3",
            "direct": false,
            "version": "7.29.0",
            "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": "@bcoe/v8-coverage",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/biome",
            "direct": false,
            "version": "2.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-darwin-arm64",
            "direct": false,
            "version": "2.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-darwin-x64",
            "direct": false,
            "version": "2.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-linux-arm64",
            "direct": false,
            "version": "2.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-linux-arm64-musl",
            "direct": false,
            "version": "2.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-linux-x64",
            "direct": false,
            "version": "2.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-linux-x64-musl",
            "direct": false,
            "version": "2.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-win32-arm64",
            "direct": false,
            "version": "2.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-win32-x64",
            "direct": false,
            "version": "2.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "@bramus/specificity",
            "direct": false,
            "version": "2.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@cfworker/json-schema",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/kv-asset-handler",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/unenv-preset",
            "direct": false,
            "version": "2.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/workerd-darwin-64",
            "direct": false,
            "version": "1.20260310.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/workerd-darwin-arm64",
            "direct": false,
            "version": "1.20260310.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/workerd-linux-64",
            "direct": false,
            "version": "1.20260310.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/workerd-linux-arm64",
            "direct": false,
            "version": "1.20260310.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/workerd-windows-64",
            "direct": false,
            "version": "1.20260310.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/workers-types",
            "direct": false,
            "version": "4.20260702.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cspotcode/source-map-support",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/color-helpers",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-calc",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-color-parser",
            "direct": false,
            "version": "4.0.2",
            "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.2",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-tokenizer",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/runtime",
            "direct": false,
            "version": "1.11.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/aix-ppc64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/aix-ppc64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-x64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-x64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-arm64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-arm64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-x64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-x64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-arm64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-arm64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-x64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-x64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ia32",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ia32",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-loong64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-loong64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-mips64el",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-mips64el",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ppc64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ppc64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-riscv64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-riscv64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-s390x",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-s390x",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-x64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-x64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-arm64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-arm64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-x64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-x64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-arm64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-arm64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-x64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-x64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openharmony-arm64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/sunos-x64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/sunos-x64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-arm64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-arm64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-ia32",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-ia32",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-x64",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-x64",
            "direct": false,
            "version": "0.27.3",
            "ecosystem": "npm"
          },
          {
            "name": "@exodus/bytes",
            "direct": false,
            "version": "1.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "@hono/node-server",
            "direct": false,
            "version": "1.19.14",
            "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": "@istanbuljs/load-nyc-config",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@istanbuljs/schema",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/console",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/core",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/environment",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/expect",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/expect-utils",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/fake-timers",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/globals",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/reporters",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/schemas",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/source-map",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/test-result",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/test-sequencer",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/transform",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jest/types",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/gen-mapping",
            "direct": false,
            "version": "0.3.13",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/remapping",
            "direct": false,
            "version": "2.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/resolve-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.31",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "@jsdevtools/ono",
            "direct": false,
            "version": "7.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/api",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oven/bun-darwin-aarch64",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@oven/bun-darwin-x64",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@oven/bun-darwin-x64-baseline",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@oven/bun-linux-aarch64",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@oven/bun-linux-aarch64-musl",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@oven/bun-linux-x64",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@oven/bun-linux-x64-baseline",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@oven/bun-linux-x64-musl",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@oven/bun-linux-x64-musl-baseline",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@oven/bun-windows-x64",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@oven/bun-windows-x64-baseline",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@poppinss/colors",
            "direct": false,
            "version": "4.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "@poppinss/dumper",
            "direct": false,
            "version": "0.6.5",
            "ecosystem": "npm"
          },
          {
            "name": "@poppinss/exception",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@puppeteer/browsers",
            "direct": false,
            "version": "2.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-android-arm-eabi",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-android-arm64",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-darwin-arm64",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-darwin-x64",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-freebsd-arm64",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-freebsd-x64",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm-gnueabihf",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm-musleabihf",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm64-gnu",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm64-musl",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-loong64-gnu",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-loong64-musl",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-ppc64-gnu",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-ppc64-musl",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-riscv64-gnu",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-riscv64-musl",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-s390x-gnu",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-x64-gnu",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-x64-musl",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-openbsd-x64",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-openharmony-arm64",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-arm64-msvc",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-ia32-msvc",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-x64-gnu",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-x64-msvc",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sinclair/typebox",
            "direct": false,
            "version": "0.27.8",
            "ecosystem": "npm"
          },
          {
            "name": "@sindresorhus/is",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sinonjs/commons",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@sinonjs/fake-timers",
            "direct": false,
            "version": "10.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@speed-highlight/core",
            "direct": false,
            "version": "1.2.17",
            "ecosystem": "npm"
          },
          {
            "name": "@standard-schema/spec",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tootallnate/quickjs-emscripten",
            "direct": false,
            "version": "0.23.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__core",
            "direct": false,
            "version": "7.20.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__generator",
            "direct": false,
            "version": "7.27.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__template",
            "direct": false,
            "version": "7.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/babel__traverse",
            "direct": false,
            "version": "7.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/graceful-fs",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/istanbul-lib-coverage",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/istanbul-lib-report",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/istanbul-reports",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/jest",
            "direct": false,
            "version": "29.5.14",
            "ecosystem": "npm"
          },
          {
            "name": "@types/jsdom",
            "direct": false,
            "version": "28.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/json-schema",
            "direct": false,
            "version": "7.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "@types/lodash",
            "direct": false,
            "version": "4.17.20",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "22.18.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/stack-utils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/tough-cookie",
            "direct": false,
            "version": "4.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/uuid",
            "direct": false,
            "version": "10.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/ws",
            "direct": false,
            "version": "8.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/yargs",
            "direct": false,
            "version": "17.0.33",
            "ecosystem": "npm"
          },
          {
            "name": "@types/yargs-parser",
            "direct": false,
            "version": "21.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/yauzl",
            "direct": false,
            "version": "2.10.3",
            "ecosystem": "npm"
          },
          {
            "name": "@vercel/oidc",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "accepts",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "agent-base",
            "direct": false,
            "version": "7.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "ai",
            "direct": false,
            "version": "6.0.106",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv-formats",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-escapes",
            "direct": false,
            "version": "4.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "6.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "anymatch",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "1.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ast-types",
            "direct": false,
            "version": "0.13.4",
            "ecosystem": "npm"
          },
          {
            "name": "atomic-sleep",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "b4a",
            "direct": false,
            "version": "1.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "babel-jest",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "babel-plugin-istanbul",
            "direct": false,
            "version": "6.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "babel-plugin-jest-hoist",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "babel-preset-current-node-syntax",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "babel-preset-jest",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "bare-events",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "bare-fs",
            "direct": false,
            "version": "4.4.5",
            "ecosystem": "npm"
          },
          {
            "name": "bare-os",
            "direct": false,
            "version": "3.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "bare-path",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "bare-stream",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "bare-url",
            "direct": false,
            "version": "2.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "base64-js",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "baseline-browser-mapping",
            "direct": false,
            "version": "2.10.41",
            "ecosystem": "npm"
          },
          {
            "name": "basic-ftp",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "bidi-js",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "blake3-wasm",
            "direct": false,
            "version": "2.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "body-parser",
            "direct": false,
            "version": "2.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.15",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "4.28.4",
            "ecosystem": "npm"
          },
          {
            "name": "bs-logger",
            "direct": false,
            "version": "0.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "bser",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "buffer",
            "direct": false,
            "version": "5.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-crc32",
            "direct": false,
            "version": "0.2.13",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-from",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "bytes",
            "direct": false,
            "version": "3.1.2",
            "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": "camelcase",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "6.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-lite",
            "direct": false,
            "version": "1.0.30001800",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "char-regex",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "ci-info",
            "direct": false,
            "version": "3.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "cjs-module-lexer",
            "direct": false,
            "version": "1.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "co",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "collect-v8-coverage",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "colorette",
            "direct": false,
            "version": "2.0.20",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "content-disposition",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "content-type",
            "direct": false,
            "version": "1.0.5",
            "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-signature",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "core-js-pure",
            "direct": false,
            "version": "3.48.0",
            "ecosystem": "npm"
          },
          {
            "name": "cors",
            "direct": false,
            "version": "2.8.5",
            "ecosystem": "npm"
          },
          {
            "name": "create-jest",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "cron-schedule",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cross-env",
            "direct": false,
            "version": "7.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "css-tree",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "data-uri-to-buffer",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "data-urls",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "dateformat",
            "direct": false,
            "version": "4.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "decimal.js",
            "direct": false,
            "version": "10.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "dedent",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "deepmerge",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "degenerator",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "depd",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "detect-libc",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "detect-newline",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "devtools-protocol",
            "direct": false,
            "version": "0.0.1299070",
            "ecosystem": "npm"
          },
          {
            "name": "diff-sequences",
            "direct": false,
            "version": "29.6.3",
            "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.385",
            "ecosystem": "npm"
          },
          {
            "name": "emittery",
            "direct": false,
            "version": "0.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "10.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "encodeurl",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "end-of-stream",
            "direct": false,
            "version": "1.4.5",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "error-ex",
            "direct": false,
            "version": "1.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "error-stack-parser-es",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "es-define-property",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-errors",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-object-atoms",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.25.4",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.27.3",
            "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": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "escodegen",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "esprima",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "esutils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "etag",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "event-target-polyfill",
            "direct": false,
            "version": "0.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "events-universal",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "eventsource",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "eventsource-parser",
            "direct": false,
            "version": "3.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "execa",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "exit",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "expect",
            "direct": false,
            "version": "29.7.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": "extract-zip",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "fast-copy",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-fifo",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-json-stable-stringify",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-safe-stringify",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "fast-uri",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fb-watchman",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "fd-slicer",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fdir",
            "direct": false,
            "version": "6.5.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": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "forwarded",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "fresh",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fs.realpath",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "function-bind",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "gensync",
            "direct": false,
            "version": "1.0.0-beta.2",
            "ecosystem": "npm"
          },
          {
            "name": "get-caller-file",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "get-east-asian-width",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-intrinsic",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-package-type",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-tsconfig",
            "direct": false,
            "version": "4.10.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-uri",
            "direct": false,
            "version": "6.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "7.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "gopd",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "handlebars",
            "direct": false,
            "version": "4.7.9",
            "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.2",
            "ecosystem": "npm"
          },
          {
            "name": "help-me",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hono",
            "direct": false,
            "version": "4.12.27",
            "ecosystem": "npm"
          },
          {
            "name": "html-encoding-sniffer",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "html-escaper",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "http-errors",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "http-proxy-agent",
            "direct": false,
            "version": "7.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "https-proxy-agent",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "human-signals",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "ieee754",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "import-local",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "imurmurhash",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "inflight",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "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": "is-arrayish",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-core-module",
            "direct": false,
            "version": "2.16.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-generator-fn",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.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-stream",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-coverage",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-instrument",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-instrument",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-report",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-source-maps",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-reports",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-changed-files",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-circus",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-cli",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-config",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-diff",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-docblock",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-each",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-environment-node",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-get-type",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "jest-haste-map",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-leak-detector",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-matcher-utils",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-message-util",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-mock",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-pnp-resolver",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "jest-regex-util",
            "direct": false,
            "version": "29.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "jest-resolve",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-resolve-dependencies",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-runner",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-runtime",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-snapshot",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-util",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-validate",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-watcher",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-worker",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "jose",
            "direct": false,
            "version": "6.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "joycon",
            "direct": false,
            "version": "3.1.1",
            "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-yaml",
            "direct": false,
            "version": "3.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsesc",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-parse-even-better-errors",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-to-typescript",
            "direct": false,
            "version": "15.0.4",
            "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": "json5",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "kleur",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "kleur",
            "direct": false,
            "version": "4.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "leven",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "lines-and-columns",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "4.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.memoize",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "11.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "7.18.3",
            "ecosystem": "npm"
          },
          {
            "name": "make-dir",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "make-error",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "makeerror",
            "direct": false,
            "version": "1.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "math-intrinsics",
            "direct": false,
            "version": "1.1.0",
            "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": "merge-stream",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.54.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "2.1.35",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "mimetext",
            "direct": false,
            "version": "3.0.28",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-fn",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "miniflare",
            "direct": false,
            "version": "4.20260310.0",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.15",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "5.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "natural-compare",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "negotiator",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "neo-async",
            "direct": false,
            "version": "2.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "netmask",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "node-int64",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-releases",
            "direct": false,
            "version": "2.0.50",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-path",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "npm-run-path",
            "direct": false,
            "version": "4.0.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": "on-exit-leak-free",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "on-finished",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "onetime",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-try",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "pac-proxy-agent",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "pac-resolver",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parse-json",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "parseurl",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "partyserver",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "partysocket",
            "direct": false,
            "version": "1.1.16",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-is-absolute",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-key",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-parse",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "path-to-regexp",
            "direct": false,
            "version": "6.3.0",
            "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": "pend",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "4.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "pino-abstract-transport",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "pino-std-serializers",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "pirates",
            "direct": false,
            "version": "4.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "pkce-challenge",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "pkg-dir",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.5.16",
            "ecosystem": "npm"
          },
          {
            "name": "prettier",
            "direct": false,
            "version": "3.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "pretty-format",
            "direct": false,
            "version": "29.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "process-warning",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "progress",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "prompts",
            "direct": false,
            "version": "2.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "proxy-addr",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "proxy-agent",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "proxy-from-env",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "pump",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "pure-rand",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "qs",
            "direct": false,
            "version": "6.15.3",
            "ecosystem": "npm"
          },
          {
            "name": "quick-format-unescaped",
            "direct": false,
            "version": "4.0.4",
            "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": "react",
            "direct": false,
            "version": "19.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "react-is",
            "direct": false,
            "version": "18.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "real-require",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "require-directory",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-from-string",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "resolve",
            "direct": false,
            "version": "1.22.10",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-cwd",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-pkg-maps",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve.exports",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "rollup",
            "direct": false,
            "version": "4.59.0",
            "ecosystem": "npm"
          },
          {
            "name": "router",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "safe-stable-stringify",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "safer-buffer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "saxes",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "secure-json-parse",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "6.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.7.4",
            "ecosystem": "npm"
          },
          {
            "name": "send",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "serve-static",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "setprototypeof",
            "direct": false,
            "version": "1.2.0",
            "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.1",
            "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": "signal-exit",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "sisteransi",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "slash",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "slow-redact",
            "direct": false,
            "version": "0.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "smart-buffer",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "socks",
            "direct": false,
            "version": "2.8.7",
            "ecosystem": "npm"
          },
          {
            "name": "socks-proxy-agent",
            "direct": false,
            "version": "8.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "sonic-boom",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-js",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-support",
            "direct": false,
            "version": "0.5.13",
            "ecosystem": "npm"
          },
          {
            "name": "split2",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "sprintf-js",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "stack-utils",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "statuses",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "streamx",
            "direct": false,
            "version": "2.23.0",
            "ecosystem": "npm"
          },
          {
            "name": "string-length",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-final-newline",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "10.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "8.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "supports-preserve-symlinks-flag",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "symbol-tree",
            "direct": false,
            "version": "3.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "tar-fs",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "tar-stream",
            "direct": false,
            "version": "3.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "test-exclude",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "text-decoder",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "thread-stream",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "through",
            "direct": false,
            "version": "2.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "tinyglobby",
            "direct": false,
            "version": "0.2.15",
            "ecosystem": "npm"
          },
          {
            "name": "tldts",
            "direct": false,
            "version": "7.0.27",
            "ecosystem": "npm"
          },
          {
            "name": "tldts-core",
            "direct": false,
            "version": "7.0.27",
            "ecosystem": "npm"
          },
          {
            "name": "tmpl",
            "direct": false,
            "version": "1.0.5",
            "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": "ts-jest",
            "direct": false,
            "version": "29.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "tsx",
            "direct": false,
            "version": "4.20.6",
            "ecosystem": "npm"
          },
          {
            "name": "type-detect",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.21.3",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "4.41.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-is",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "5.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "uglify-js",
            "direct": false,
            "version": "3.19.3",
            "ecosystem": "npm"
          },
          {
            "name": "unbzip2-stream",
            "direct": false,
            "version": "1.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "undici",
            "direct": false,
            "version": "7.18.2",
            "ecosystem": "npm"
          },
          {
            "name": "undici",
            "direct": false,
            "version": "7.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "6.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "7.24.7",
            "ecosystem": "npm"
          },
          {
            "name": "unenv",
            "direct": false,
            "version": "2.0.0-rc.24",
            "ecosystem": "npm"
          },
          {
            "name": "unpipe",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "update-browserslist-db",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "v8-to-istanbul",
            "direct": false,
            "version": "9.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "vary",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "vite",
            "direct": false,
            "version": "6.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "vite-plugin-singlefile",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "w3c-xmlserializer",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "walker",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "webidl-conversions",
            "direct": false,
            "version": "8.0.1",
            "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": "wordwrap",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "workerd",
            "direct": false,
            "version": "1.20260310.1",
            "ecosystem": "npm"
          },
          {
            "name": "wrangler",
            "direct": false,
            "version": "4.72.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "9.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "write-file-atomic",
            "direct": false,
            "version": "4.0.2",
            "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": "y18n",
            "direct": false,
            "version": "5.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "17.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "18.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "21.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "22.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "yauzl",
            "direct": false,
            "version": "2.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "youch",
            "direct": false,
            "version": "4.1.0-beta.10",
            "ecosystem": "npm"
          },
          {
            "name": "youch-core",
            "direct": false,
            "version": "0.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "zod-to-json-schema",
            "direct": false,
            "version": "3.25.1",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 690,
        "direct_count": 12,
        "indirect_count": 678
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 19,
        "merged_prs": 17,
        "open_issues": 24,
        "closed_ratio": 0.489,
        "closed_issues": 23,
        "closed_unmerged_prs": 17
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "tpitre",
          "commits": 534,
          "avatar_url": "https://avatars.githubusercontent.com/u/645765?v=4"
        },
        {
          "type": "User",
          "login": "klgral",
          "commits": 5,
          "avatar_url": "https://avatars.githubusercontent.com/u/22195254?v=4"
        },
        {
          "type": "User",
          "login": "lukemoderwell",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/2180358?v=4"
        },
        {
          "type": "User",
          "login": "ahmed-khaire",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/4311670?v=4"
        },
        {
          "type": "User",
          "login": "claude",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/81847?v=4"
        },
        {
          "type": "User",
          "login": "Gururagavendra",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/84856326?v=4"
        },
        {
          "type": "User",
          "login": "ionmesca",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/103584532?v=4"
        },
        {
          "type": "User",
          "login": "nick-inkeep",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/122398915?v=4"
        },
        {
          "type": "User",
          "login": "robinhumphreys",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/97599438?v=4"
        },
        {
          "type": "User",
          "login": "chaba11",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/39912868?v=4"
        }
      ],
      "contributors_sampled": 11,
      "top_contributor_share": 0.967
    },
    "quality_signals": {
      "has_ci": false,
      "has_tests": true,
      "ci_workflows": [],
      "has_docs_dir": true,
      "linter_configs": [
        ".eslintrc.json",
        "biome.json"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json"
      ],
      "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": 0,
            "reason": "0 out of 1 merged PRs checked by a CI test -- score normalized to 0",
            "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/22 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": 10,
            "reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": null,
            "reason": "No tokens found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "16 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "138975494458585123bf0d89840e46ddb7bd01ae",
        "ran_at": "2026-07-21T17:02:52Z",
        "aggregate_score": 3.1,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": false
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/southleft/figma-console-mcp",
    "host": "github.com",
    "name": "figma-console-mcp",
    "owner": "southleft"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 65,
      "inputs": {
        "security": 39,
        "vitality": 92,
        "community": 71,
        "governance": 55,
        "engineering": 64
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 92,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 87,
            "inputs": {
              "commits_last_year": 553,
              "human_commit_share": 1,
              "days_since_last_push": 4,
              "active_weeks_last_year": 33
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 4 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 4
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "33/52 weeks with commits",
                "points": 22.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 33
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "553 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 553
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 66,
              "latest_release_tag": "v1.36.0",
              "releases_from_tags": false,
              "days_since_latest_release": 4,
              "mean_days_between_releases": 4.9
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "66 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 66
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 4 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 4
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~4.9 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 4.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": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 4,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 4 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 4
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "good",
        "name": "Community & Adoption",
        "value": 71,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "good",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 81,
            "inputs": {
              "forks": 224,
              "stars": 2024,
              "watchers": 28,
              "growth_state": "organic",
              "growth_factor_pct": 100
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "2,024 stars",
                "points": 53.6,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 2024
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "224 forks",
                "points": 19.6,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 224
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "28 watchers",
                "points": 8,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 28
                    }
                  }
                ],
                "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": 83,
            "inputs": {
              "packages": [
                "figma-console-mcp"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 99709
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "99,709 downloads/month across npm",
                "points": 66.6,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 99709,
                      "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": "moderate",
        "name": "Sustainability & Governance",
        "value": 55,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 26,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 11,
              "top_contributor_share": 0.967
            },
            "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 97% of commits",
                "points": 0.7,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 97
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "11 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 11
                    }
                  }
                ],
                "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": null,
            "notes": [],
            "value": 42,
            "inputs": {
              "merged_prs": 17,
              "open_issues": 24,
              "closed_issues": 23,
              "issue_closed_ratio": 0.489,
              "closed_unmerged_prs": 17
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "49% of issues closed",
                "points": 22.9,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 49
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "17/34 decided PRs merged",
                "points": 19.1,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 17,
                      "decided": 34
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/22 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "followers": 117,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "southleft",
              "public_repos": 30,
              "account_age_days": 2363
            },
            "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": "117 followers of southleft",
                "points": 14.9,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 117,
                      "login": "southleft"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "30 public repos, account ~6 yr old",
                "points": 22.9,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 30
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 6
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "figma-console-mcp"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 4
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "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": "81 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 81
                    }
                  }
                ],
                "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": 64,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "at_risk",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 40,
            "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": ".eslintrc.json, biome.json",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".eslintrc.json, biome.json"
                    }
                  }
                ],
                "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": "0 out of 1 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "topics": [
                "ai",
                "design-systems",
                "figma",
                "figma-api",
                "figma-plugins",
                "mcp"
              ],
              "has_wiki": true,
              "homepage": "https://southleft.com",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://southleft.com",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "6 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 39,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Dangerous-Workflow, Packaging, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "dangerous_workflow",
                    "packaging",
                    "signed_releases",
                    "token_permissions"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 31,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 14,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 4,
              "scorecard_aggregate": 3.1
            },
            "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": "0 out of 1 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/22 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": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "No tokens found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "16 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "good",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories. Remaining weights renormalized. Matched 690 resolved dependencies against OSV. This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "indirect_dependencies_free_of_known_advisories"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 690
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 72,
            "inputs": {
              "source": "osv",
              "advisories": 16,
              "affected_packages": 5,
              "assessed_packages": 690,
              "unassessed_packages": 0,
              "affected_by_severity": "high 3, low 2",
              "direct_affected_packages": 1
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "1 affected: ws 8.18.0 (high 7.5)",
                "points": 14,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 1,
                      "packages": "ws 8.18.0 (high 7.5)"
                    }
                  }
                ],
                "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": 690,
              "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": 8
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "moderate",
        "name": "AI Readiness",
        "value": 65,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.87,
              "agent_instruction_files": [
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 1324
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "87 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 87,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 56,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "tsconfig.json"
              ],
              "agent_commit_share": 0.01,
              "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": ".eslintrc.json, biome.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".eslintrc.json, biome.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "1 of the last 100 commits agent-authored or agent-credited",
                "points": 2,
                "status": "partial",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 1,
                      "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": 96,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 295107,
              "source_files_sampled": 142,
              "oversized_source_files": 10
            },
            "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": "10/142 source files over 60KB",
                "points": 51.1,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 142,
                      "oversized": 10
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "critical",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 20,
            "inputs": {
              "example_dirs": [],
              "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": [
    "deps.dev does not index npm:figma-console-mcp@1.36.0; advisories assessed against the repository dependency graph instead"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-21T17:03:06.162274Z",
  "schema_version": "0.23.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/southleft/figma-console-mcp.svg",
  "full_name": "southleft/figma-console-mcp",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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

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

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