Public record
Software health reportschema 0.23.0 · metrics 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 stars⑂ 224 forkssince Oct 2025View on GitHub ↗

southleft/figma-console-mcp holds a health index of 65 out of 100, placing it in the Moderate band. It scores highest on Vitality (92/100) and lowest on Security (39/100). It was last updated 4 days ago. A single contributor accounts for most of its recent work.

65
overall / 100
Moderate

Software health index

Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At risk ceiling of 49. AI Readiness sits outside the overall score.

65
Excellent85-100Exemplary; meets essentially all checked criteria
Good70-84Healthy; minor gaps
Moderate50-69Acceptable with notable gaps; review recommended
At risk30-49Significant weaknesses; adoption warrants caution
Critical1-29Severe problems (abandoned, single-maintainer, no hygiene)
VitalityCommunity &AdoptionSustainability &GovernanceEngineeringQualitySecurityAI Readiness

Score profile

Each axis is a category. The shape matters more than the average — a healthy subject fills the whole shape, while a spike-and-crater profile means strength in one dimension is masking risk in another.

Ownership

Southleft, LLCOrganization
117 followers30 public repossince Jan 2020

This repository is backed by an organization — shared, accountable stewardship that can outlive any single maintainer.

Package ecosystems

RegistryPackageVersionDownloads / moVersionsLast publishTags
npmfigma-console-mcp1.36.099,709814 days agomcpfigmaplugindesign-tokensdesign-systemsvariablesfigjamslidesaccessibilityaianthropicclaudecloudflare

Metrics by category

Vitality

Is the project alive — is code being written and are releases shipping?

92Excellent · 22% of overall
How it's scored
36/36Push recency — last push 4 days ago
22.8/36Commit cadence — 33/52 weeks with commits
18/18Commit volume — 553 commits in the last year
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Inputs used
commits_last_year553
human_commit_share1
days_since_last_push4
active_weeks_last_year33

Release discipline

100Excellent
How it's scored
27/27Ships releases — 66 releases published
36/36Release recency — latest release 4 days ago
27/27Release cadence — a release every ~4.9 days
0/10OpenSSF Scorecard: Signed-Releases — no data
Inputs used
releases_count66
latest_release_tagv1.36.0
releases_from_tagsno
days_since_latest_release4
mean_days_between_releases4.9
Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.

Community & Adoption

Does the project have users, downloads, attention, and a welcoming setup for contributors?

71Good · 18% of overall
How it's scored
53.6/60Stars — 2,024 stars
19.6/25Forks — 224 forks
8/15Watchers — 28 watchers
Inputs used
forks224
stars2,024
watchers28
growth_stateorganic
growth_factor_pct100
How it's scored
22.5/22.5README
22.5/22.5License — recognized license (MIT)
0/18CONTRIBUTING guide
0/13.5Code of conduct
0/7.2Issue template
0/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno
How it's scored
66.6/80Monthly downloads — 99,709 downloads/month across npm
0/20Registry dependents — not reported by this ecosystem
Inputs used
packagesfigma-console-mcp
dependents
ecosystemsnpm
total_downloads
monthly_downloads99,709
Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.

Sustainability & Governance

Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?

55Moderate · 24% of overall
How it's scored
9/54Bus factor — 1 contributor(s) cover half of all commits
0.7/22.5Commit distribution — top contributor authored 97% of commits
13.5/13.5Contributor breadth — 11 contributors
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Inputs used
bus_factor1
contributors_sampled11
top_contributor_share0.967
How it's scored
22.9/46.8Issue resolution — 49% of issues closed
19.1/38.3PR acceptance — 17/34 decided PRs merged
0/15OpenSSF Scorecard: Code-Review — Found 0/22 approved changesets -- score normalized to 0
Inputs used
merged_prs17
open_issues24
closed_issues23
issue_closed_ratio0.489
closed_unmerged_prs17
How it's scored
30/30Ownership backing — organization-owned
0/20Verified domain
14.9/25Owner reach — 117 followers of southleft
22.9/25Track record — 30 public repos, account ~6 yr old
Inputs used
followers117
owner_typeOrganization
is_verified
owner_loginsouthleft
public_repos30
account_age_days2,363
How it's scored
25/25Published & resolvable — 1 package(s) on npm
35/35Publish recency — latest publish 4 days ago
20/20Version history — 81 published versions
20/20Not deprecated — active, not deprecated or yanked
Inputs used
packagesfigma-console-mcp
ecosystemsnpm
any_deprecatedno
min_days_since_publish4

Engineering Quality

Are baseline engineering and documentation practices in place?

64Moderate · 20% of overall
How it's scored
0/24CI workflows
24/24Tests present
16/16Linter config — .eslintrc.json, biome.json
0/9.6Pre-commit hooks
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — 0 out of 1 merged PRs checked by a CI test -- score normalized to 0
Inputs used
has_cino
has_testsyes
has_editorconfigno
has_linter_configyes
has_precommit_configno

Documentation

100Excellent
How it's scored
30/30README
25/25Documentation directory
15/15Documentation / homepage site — https://southleft.com
10/10Repository description
10/10Topics — 6 topics
10/10Wiki
Inputs used
topicsai, design-systems, figma, figma-api, figma-plugins, mcp
has_wikiyes
homepagehttps://southleft.com
has_readmeyes
has_docs_diryes
has_descriptionyes

Security

Are visible security and supply-chain practices strong, without unresolved high-risk jurisdiction exposure?

39At risk · 16% of overall
How it's scored
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 — no data
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5License — 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 — no data
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 — no data
0/7.5Token-Permissions — no data
0/7.5Vulnerabilities — 16 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated14
scorecard_versionv5.5.0
checks_inconclusive4
scorecard_aggregate3.1
Excluded from scoring (no data or not applicable): dangerous_workflow, packaging, signed_releases, token_permissions. Remaining weights renormalized.
How it's scored
14/35Direct dependencies free of known advisories — 1 affected: ws 8.18.0 (high 7.5)
0/25Indirect dependencies free of known advisories — transitive set not separable from development and test dependencies in this scope
40/40No advisories left outstanding — no advisory has been public longer than 90 days
Inputs used
sourceosv
advisories16
affected_packages5
assessed_packages690
unassessed_packages0
affected_by_severityhigh 3, low 2
direct_affected_packages1
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.

AI Readiness

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.

65Moderate · 0% of overall
How it's scored
45/45Agent instructions — CLAUDE.md
0/15Machine-readable docs (llms.txt)
40/40Legible commit history — 87 of 100 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share0.87
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes1,324
How it's scored
0/18One-command bootstrap
22/22Automated tests
11/11Lint / format config — .eslintrc.json, biome.json
11/11Static type checking — tsconfig.json
10/10Reproducible environment — lockfile
2/10Demonstrated agent practice — 1 of the last 100 commits agent-authored or agent-credited
0/8Automated maintenance — no automated dependency updates observed
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Inputs used
has_nixno
has_testsyes
lockfilespackage-lock.json
has_dockerfileno
typed_languageyes
bootstrap_files
has_devcontainerno
has_linter_configyes
typecheck_configstsconfig.json
agent_commit_share0.01
toolchain_manifests
dependency_bot_commit_share0
How it's scored
45/45Type-checkable code — TypeScript (statically typed)
51.1/55Manageable file sizes — 10/142 source files over 60KB
Inputs used
primary_languageTypeScript
largest_source_bytes295,107
source_files_sampled142
oversized_source_files10
How it's scored
0/40API schema (OpenAPI/GraphQL/proto)
20/20MCP server
0/40Runnable examples
Inputs used
example_dirs
has_mcp_signalyes
api_schema_files

Key facts

2,024GitHub stars
11contributors
553commits, last 12 months
4days since last push
66releases
1bus factor
24open issues
npmpackage ecosystems

Data collection warnings

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

More detail

Star and fork history 2,024 ★ / 224 ⇿
2,024Stars
224Forks
65Releases

When each star and fork was added, collected from GitHub and bucketed by day. Cumulative growth sits directly above the daily additions it is made of, so the two read against each other: steady organic accretion looks nothing like an abrupt, short-lived burst. Where that difference is measurable, it is reported as growth authenticity.

Only the most recent history is shown — this repository exceeds the collection window, so the earliest history is not captured.

04008001,2001,6002,0002,4002,024224392026-012026-042026-07
Major 0Minor 33Patch 32
OpenSSF Scorecard 3.1 / 10
3.1aggregate

Independent, tool-agnostic security assessment from the open-source OpenSSF Scorecard. Each check rewards a security practice, not a specific vendor's tool. Checks Scorecard could not determine are marked n/a and excluded from the security score (never counted as zero).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
n/aDangerous-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
n/aPackagingpackaging 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
n/aSigned-Releasesno releases found
n/aToken-PermissionsNo tokens found
0Vulnerabilities16 existing vulnerabilities detected
Direct dependencies 11
RegistryPackageVersion constraintManifest
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
All dependencies 690

Full resolved dependency set from the GitHub dependency graph: 12 direct and 678 indirect (transitive) packages. The transitive closure is complete when the repository commits a lockfile.

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

This repository publishes no package the index resolves, so its own dependency graph was assessed — 690 packages, which also include development and test pins that never ship: 5 carry known advisories, of which 1 are direct.

PackageVersionRelationSeverityAdvisoriesFixed in
ws8.18.0directhigh28.21.0
brace-expansion1.1.15indirecthigh15.0.7
undici7.18.2indirecthigh118.5.0
body-parser2.2.2indirectlow12.3.0
esbuild0.27.3indirectlow10.28.1

An advisory means the version recorded in the dependency graph falls inside an advisory’s affected range. Reachability is not analysed, and the graph includes development and test pins — a finding may concern tooling rather than shipped software.

Raw JSON report machine-readable
{
  "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"
}

Scores are signals, not warranties. They reflect publicly visible practices on GitHub — not a code audit, and not a security guarantee.

Missing data is excluded and weights renormalized, never scored as zero. Methodology is versioned and open: metrics v1.13.0, schema v0.23.0 — full methodology · metrics wiki.

How one result sits in the wider record: aggregate statisticsnpm.