Public record
Software health reportschema 0.27.0 · metrics 1.13.0 · 2026-07-25 12:51 UTC

theseedship / mcp-ui

TypeScript · HTMLMIT★ 1 star⑂ 0 forkssince Nov 2025View on GitHub ↗

theseedship/mcp-ui holds a health index of 64 out of 100, placing it in the Moderate band. It scores highest on Vitality (86/100) and lowest on Community & Adoption (41/100). It was last updated today. A single contributor accounts for most of its recent work.

64
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.

64
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

The Seed ShipOrganization
5 followers22 public repossince Apr 2023

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

Package ecosystems

Metrics by category

Vitality

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

86Excellent · 22% of overall
How it's scored
36/36Push recency — last push 0 days ago
11.8/36Commit cadence — 17/52 weeks with commits
18/18Commit volume — 250 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_year250
human_commit_share0.98
days_since_last_push0
active_weeks_last_year17

Release discipline

100Excellent
How it's scored
27/27Ships releases — 100 releases published
36/36Release recency — latest release 21 days ago
27/27Release cadence — a release every ~3.8 days
0/10OpenSSF Scorecard: Signed-Releases — no data
Inputs used
releases_count100
latest_release_tagv6.16.0
releases_from_tagsno
days_since_latest_release21
mean_days_between_releases3.8
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?

41At risk · 18% of overall
How it's scored
0/60Stars — 1 stars
0/25Forks — 0 forks
0/15Watchers — 0 watchers
Inputs used
forks0
stars1
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
How it's scored
22.5/22.5README
22.5/22.5License — recognized license (MIT)
18/18CONTRIBUTING guide
0/13.5Code of conduct
0/7.2Issue template
6.3/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
has_contributingyes
has_issue_templateno
has_code_of_conductno
has_pull_request_templateyes
How it's scored
44.5/80Monthly downloads — 2,171 downloads/month across npm
0/20Registry dependents — not reported by this ecosystem
Inputs used
packages@seed-ship/mcp-ui-cli, @seed-ship/mcp-ui-spec, @seed-ship/mcp-ui-solid
dependents
ecosystemsnpm
total_downloads
monthly_downloads2,171
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/22.5Commit distribution — top contributor authored 100% of commits
1.4/13.5Contributor breadth — 1 contributors
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Inputs used
bus_factor1
contributors_sampled1
top_contributor_share1
How it's scored
0/46.8Issue resolution — no issues or no data
38.2/38.3PR acceptance — 14/14 decided PRs merged
0/15OpenSSF Scorecard: Code-Review — Found 0/17 approved changesets -- score normalized to 0
Inputs used
merged_prs14
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs0
Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.
How it's scored
30/30Ownership backing — organization-owned
0/20Verified domain
5.6/25Owner reach — 5 followers of theseedship
16.5/25Track record — 22 public repos, account ~3 yr old
Inputs used
followers5
owner_typeOrganization
is_verified
owner_logintheseedship
public_repos22
account_age_days1,203
How it's scored
25/25Published & resolvable — 3 package(s) on npm
35/35Publish recency — latest publish 21 days ago
20/20Version history — 135 published versions
20/20Not deprecated — active, not deprecated or yanked
Inputs used
packages@seed-ship/mcp-ui-cli, @seed-ship/mcp-ui-spec, @seed-ship/mcp-ui-solid
ecosystemsnpm
any_deprecatedno
min_days_since_publish21

Engineering Quality

Are baseline engineering and documentation practices in place?

76Good · 20% of overall
How it's scored
24/24CI workflows — 3 workflow(s)
24/24Tests present
16/16Linter config — eslint.config.js
0/9.6Pre-commit hooks
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 4 out of 4 merged PRs checked by a CI test -- score normalized to 10
Inputs used
has_ciyes
has_testsyes
has_editorconfigno
has_linter_configyes
has_precommit_configno

Documentation

65Moderate
How it's scored
30/30README
25/25Documentation directory
0/15Documentation / homepage site
0/10Repository description
0/10Topics
10/10Wiki
Inputs used
topics
has_wikiyes
homepage
has_readmeyes
has_docs_diryes
has_descriptionno

Security

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

55Moderate · 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
2.5/2.5CI-Tests — 4 out of 4 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/17 approved changesets -- score normalized to 0
0.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.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
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — no data
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 13 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate4.4
Excluded from scoring (no data or not applicable): signed_releases. Remaining weights renormalized.
How it's scored
35/35Direct dependencies free of known advisories — no direct dependency carries a known advisory
25/25Indirect dependencies free of known advisories — no indirect dependency carries a known advisory
0/40No advisories left outstanding — no advisory carries a publication date
Inputs used
sourceosv
advisories0
affected_packages0
assessed_packages49
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the npm:@seed-ship/mcp-ui-cli@5.0.0 runtime dependency closure — what installing the published package pulls in — 49 packages. 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.

75Good · 0% of overall
How it's scored
45/45Agent instructions — CLAUDE.md
0/15Machine-readable docs (llms.txt)
40/40Legible commit history — 98 of 98 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share1
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes3,127
How it's scored
0/18One-command bootstrap
22/22Automated tests
11/11Lint / format config — eslint.config.js
11/11Static type checking — mcp-ui-cli/tsconfig.json, mcp-ui-solid/tsconfig.json, mcp-ui-spec/tsconfig.json, tsconfig.json
10/10Reproducible environment — lockfile
10/10Demonstrated agent practice — 92 of the last 100 commits agent-authored or agent-credited
8/8Automated maintenance — 2 of the last 100 commits are automated dependency updates
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Inputs used
has_nixno
has_testsyes
lockfilespnpm-lock.yaml
has_dockerfileno
typed_languageyes
bootstrap_files
has_devcontainerno
has_linter_configyes
typecheck_configsmcp-ui-cli/tsconfig.json, mcp-ui-solid/tsconfig.json, mcp-ui-spec/tsconfig.json, tsconfig.json
agent_commit_share0.92
toolchain_manifests
dependency_bot_commit_share0.02
How it's scored
45/45Type-checkable code — TypeScript (statically typed)
54.4/55Manageable file sizes — 2/173 source files over 60KB
Inputs used
primary_languageTypeScript
largest_source_bytes81,424
source_files_sampled173
oversized_source_files2
How it's scored
0/40API schema (OpenAPI/GraphQL/proto)
0/20MCP server
40/40Runnable examples — examples, recipes
Inputs used
example_dirsexamples, recipes
has_mcp_signalno
api_schema_files

Key facts

1GitHub stars
1contributors
250commits, last 12 months
0days since last push
100releases
1bus factor
0open issues
npmpackage ecosystems

Data collection warnings

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

More detail

OpenSSF Scorecard 4.4 / 10
4.4aggregate

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-25 12:51 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
10CI-Tests4 out of 4 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/17 approved changesets -- score normalized to 0
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate 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
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
n/aSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities13 existing vulnerabilities detected
Direct dependencies 13
RegistryPackageVersion constraintManifest
npm@seed-ship/mcp-ui-specworkspace:*mcp-ui-cli/package.json
npmajv^8.18.0mcp-ui-cli/package.json
npmchalk^5.3.0mcp-ui-cli/package.json
npmcommander^11.1.0mcp-ui-cli/package.json
npmjson-schema-to-typescript^15.0.4mcp-ui-cli/package.json
npmora^7.0.1mcp-ui-cli/package.json
npmzod^3.22.4mcp-ui-cli/package.json
npm@seed-ship/mcp-ui-specworkspace:^5.3.0mcp-ui-solid/package.json
npm@types/dompurify^3.0.5mcp-ui-solid/package.json
npmdompurify^3.4.1mcp-ui-solid/package.json
npmmarked^16.3.0mcp-ui-solid/package.json
npmzod^3.22.4mcp-ui-solid/package.json
npmzod^3.22.4mcp-ui-spec/package.json
All dependencies 589

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

RegistryPackageVersionRelation
npm@types/dompurify3.2.0direct
npm@types/dompurify^3.0.5direct
npmajv6.14.0direct
npmajv8.18.0direct
npmajv^8.18.0direct
npmchalk4.1.2direct
npmchalk5.6.2direct
npmchalk^5.3.0direct
npmcommander11.1.0direct
npmcommander7.2.0direct
npmcommander^11.1.0direct
npmdompurify3.4.11direct
npmdompurify^3.4.1direct
npmjson-schema-to-typescript15.0.4direct
npmjson-schema-to-typescript^15.0.4direct
npmmarked16.4.2direct
npmmarked^16.3.0direct
npmora7.0.1direct
npmora^7.0.1direct
npmzod3.25.76direct
npmzod^3.22.4direct
npm@acemir/cssom0.9.23indirect
npm@antv/algorithm0.1.26indirect
npm@antv/component2.1.11indirect
npm@antv/event-emitter0.1.3indirect
npm@antv/expr1.0.2indirect
npm@antv/g6.3.1indirect
npm@antv/g-canvas2.2.0indirect
npm@antv/g-lite2.7.0indirect
npm@antv/g-math3.1.0indirect
npm@antv/g-plugin-dragndrop2.1.1indirect
npm@antv/g65.1.0indirect
npm@antv/graphlib2.0.4indirect
npm@antv/hierarchy0.7.1indirect
npm@antv/layout2.0.0indirect
npm@antv/scale0.4.16indirect
npm@antv/util2.0.17indirect
npm@antv/util3.3.11indirect
npm@antv/vendor1.0.11indirect
npm@apidevtools/json-schema-ref-parser11.9.3indirect
npm@asamuzakjp/css-color4.0.5indirect
npm@asamuzakjp/dom-selector6.7.4indirect
npm@asamuzakjp/nwsapi2.3.9indirect
npm@babel/code-frame7.27.1indirect
npm@babel/compat-data7.28.5indirect
npm@babel/core7.28.5indirect
npm@babel/generator7.28.5indirect
npm@babel/helper-compilation-targets7.27.2indirect
npm@babel/helper-globals7.28.0indirect
npm@babel/helper-module-imports7.18.6indirect
npm@babel/helper-module-imports7.27.1indirect
npm@babel/helper-module-transforms7.28.3indirect
npm@babel/helper-plugin-utils7.27.1indirect
npm@babel/helper-string-parser7.27.1indirect
npm@babel/helper-validator-identifier7.28.5indirect
npm@babel/helper-validator-option7.27.1indirect
npm@babel/helpers7.28.4indirect
npm@babel/parser7.28.5indirect
npm@babel/plugin-syntax-jsx7.27.1indirect
npm@babel/runtime7.28.4indirect
npm@babel/template7.27.2indirect
npm@babel/traverse7.28.5indirect
npm@babel/types7.28.5indirect
npm@csstools/color-helpers5.1.0indirect
npm@csstools/css-calc2.1.4indirect
npm@csstools/css-color-parser3.1.0indirect
npm@csstools/css-parser-algorithms3.0.5indirect
npm@csstools/css-syntax-patches-for-csstree1.0.16indirect
npm@csstools/css-tokenizer3.0.4indirect
npm@duckdb/duckdb-wasm1.32.0indirect
npm@emnapi/core1.10.0indirect
npm@emnapi/runtime1.10.0indirect
npm@emnapi/wasi-threads1.2.1indirect
npm@esbuild/aix-ppc640.27.2indirect
npm@esbuild/android-arm0.27.2indirect
npm@esbuild/android-arm640.27.2indirect
npm@esbuild/android-x640.27.2indirect
npm@esbuild/darwin-arm640.27.2indirect
npm@esbuild/darwin-x640.27.2indirect
npm@esbuild/freebsd-arm640.27.2indirect
npm@esbuild/freebsd-x640.27.2indirect
npm@esbuild/linux-arm0.27.2indirect
npm@esbuild/linux-arm640.27.2indirect
npm@esbuild/linux-ia320.27.2indirect
npm@esbuild/linux-loong640.27.2indirect
npm@esbuild/linux-mips64el0.27.2indirect
npm@esbuild/linux-ppc640.27.2indirect
npm@esbuild/linux-riscv640.27.2indirect
npm@esbuild/linux-s390x0.27.2indirect
npm@esbuild/linux-x640.27.2indirect
npm@esbuild/netbsd-arm640.27.2indirect
npm@esbuild/netbsd-x640.27.2indirect
npm@esbuild/openbsd-arm640.27.2indirect
npm@esbuild/openbsd-x640.27.2indirect
npm@esbuild/openharmony-arm640.27.2indirect
npm@esbuild/sunos-x640.27.2indirect
npm@esbuild/win32-arm640.27.2indirect
npm@esbuild/win32-ia320.27.2indirect
npm@esbuild/win32-x640.27.2indirect
npm@eslint-community/eslint-utils4.9.0indirect
npm@eslint-community/regexpp4.12.2indirect
npm@eslint/eslintrc2.1.4indirect
npm@eslint/js8.57.1indirect
npm@humanwhocodes/config-array0.13.0indirect
npm@humanwhocodes/module-importer1.0.1indirect
npm@humanwhocodes/object-schema2.0.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@jsdevtools/ono7.1.3indirect
npm@kurkle/color0.3.4indirect
npm@mapbox/point-geometry1.1.0indirect
npm@mapbox/vector-tile2.0.4indirect
npm@napi-rs/wasm-runtime1.1.5indirect
npm@nodelib/fs.scandir2.1.5indirect
npm@nodelib/fs.stat2.0.5indirect
npm@nodelib/fs.walk1.2.8indirect
npm@oxc-project/types0.133.0indirect
npm@polka/url1.0.0-next.29indirect
npm@rolldown/binding-android-arm641.0.3indirect
npm@rolldown/binding-darwin-arm641.0.3indirect
npm@rolldown/binding-darwin-x641.0.3indirect
npm@rolldown/binding-freebsd-x641.0.3indirect
npm@rolldown/binding-linux-arm-gnueabihf1.0.3indirect
npm@rolldown/binding-linux-arm64-gnu1.0.3indirect
npm@rolldown/binding-linux-arm64-musl1.0.3indirect
npm@rolldown/binding-linux-ppc64-gnu1.0.3indirect
npm@rolldown/binding-linux-s390x-gnu1.0.3indirect
npm@rolldown/binding-linux-x64-gnu1.0.3indirect
npm@rolldown/binding-linux-x64-musl1.0.3indirect
npm@rolldown/binding-openharmony-arm641.0.3indirect
npm@rolldown/binding-wasm32-wasi1.0.3indirect
npm@rolldown/binding-win32-arm64-msvc1.0.3indirect
npm@rolldown/binding-win32-x64-msvc1.0.3indirect
npm@rolldown/pluginutils1.0.1indirect
npm@size-limit/esbuild12.0.0indirect
npm@size-limit/esbuild^12.0.0indirect
npm@size-limit/esbuild-why12.0.0indirect
npm@size-limit/esbuild-why^12.0.0indirect
npm@size-limit/file12.0.0indirect
npm@size-limit/preset-small-lib12.0.0indirect
npm@size-limit/preset-small-lib^12.0.0indirect
npm@solidjs/testing-library0.8.10indirect
npm@solidjs/testing-library^0.8.5indirect
npm@standard-schema/spec1.1.0indirect
npm@swc/helpers0.5.18indirect
npm@tanstack/solid-virtual3.13.18indirect
npm@tanstack/solid-virtual^3.13.18indirect
npm@tanstack/virtual-core3.13.18indirect
npm@testing-library/dom10.4.1indirect
npm@tybys/wasm-util0.10.2indirect
npm@types/aria-query5.0.4indirect
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/chai5.2.3indirect
npm@types/command-line-args5.2.3indirect
npm@types/command-line-usage5.0.4indirect
npm@types/css-font-loading-module0.0.7indirect
npm@types/d3-array3.2.2indirect
npm@types/d3-color3.1.3indirect
npm@types/d3-dispatch3.0.7indirect
npm@types/d3-dsv3.0.7indirect
npm@types/d3-ease3.0.2indirect
npm@types/d3-fetch3.0.7indirect
npm@types/d3-force3.0.10indirect
npm@types/d3-format3.0.4indirect
npm@types/d3-geo3.1.0indirect
npm@types/d3-hierarchy3.1.7indirect
npm@types/d3-interpolate3.0.4indirect
npm@types/d3-path3.1.1indirect
npm@types/d3-quadtree3.0.6indirect
npm@types/d3-random3.0.3indirect
npm@types/d3-scale4.0.9indirect
npm@types/d3-scale-chromatic3.1.0indirect
npm@types/d3-shape3.1.8indirect
npm@types/d3-time3.0.4indirect
npm@types/d3-timer3.0.2indirect
npm@types/deep-eql4.0.2indirect
npm@types/estree1.0.9indirect
npm@types/geojson7946.0.16indirect
npm@types/json-schema7.0.15indirect
npm@types/leaflet1.9.21indirect
npm@types/leaflet^1.9.8indirect
npm@types/leaflet.markercluster1.5.6indirect
npm@types/leaflet.markercluster^1.5.6indirect
npm@types/lodash4.17.20indirect
npm@types/node20.19.25indirect
npm@types/node22.19.11indirect
npm@types/node^22.0.0indirect
npm@types/rbush3.0.4indirect
npm@types/semver7.7.1indirect
npm@types/trusted-types2.0.7indirect
npm@typescript-eslint/eslint-plugin6.21.0indirect
npm@typescript-eslint/eslint-plugin7.18.0indirect
npm@typescript-eslint/eslint-plugin^6.15.0indirect
npm@typescript-eslint/parser6.21.0indirect
npm@typescript-eslint/parser7.18.0indirect
npm@typescript-eslint/parser^6.15.0indirect
npm@typescript-eslint/scope-manager6.21.0indirect
npm@typescript-eslint/scope-manager7.18.0indirect
npm@typescript-eslint/type-utils6.21.0indirect
npm@typescript-eslint/type-utils7.18.0indirect
npm@typescript-eslint/types6.21.0indirect
npm@typescript-eslint/types7.18.0indirect
npm@typescript-eslint/typescript-estree6.21.0indirect
npm@typescript-eslint/typescript-estree7.18.0indirect
npm@typescript-eslint/utils6.21.0indirect
npm@typescript-eslint/utils7.18.0indirect
npm@typescript-eslint/visitor-keys6.21.0indirect
npm@typescript-eslint/visitor-keys7.18.0indirect
npm@ungap/structured-clone1.3.0indirect
npm@vitest/expect4.1.8indirect
npm@vitest/mocker4.1.8indirect
npm@vitest/pretty-format4.0.9indirect
npm@vitest/pretty-format4.1.8indirect
npm@vitest/runner4.1.8indirect
npm@vitest/snapshot4.1.8indirect
npm@vitest/spy4.1.8indirect
npm@vitest/ui4.0.9indirect
npm@vitest/ui^4.0.9indirect
npm@vitest/utils4.0.9indirect
npm@vitest/utils4.1.8indirect
npmacorn8.15.0indirect
npmacorn-jsx5.3.2indirect
npmagent-base7.1.4indirect
npmansi-regex5.0.1indirect
npmansi-regex6.2.2indirect
npmansi-styles4.3.0indirect
npmansi-styles5.2.0indirect
npmapache-arrow17.0.0indirect
npmargparse2.0.1indirect
npmaria-query5.3.0indirect
npmarray-back3.1.0indirect
npmarray-back6.2.2indirect
npmarray-union2.1.0indirect
npmassertion-error2.0.1indirect
npmbabel-plugin-jsx-dom-expressions0.40.3indirect
npmbabel-preset-solid1.9.10indirect
npmbalanced-match4.0.4indirect
npmbase64-arraybuffer1.0.2indirect
npmbase64-js1.5.1indirect
npmbaseline-browser-mapping2.8.28indirect
npmbidi-js1.0.3indirect
npmbl5.1.0indirect
npmbrace-expansion5.0.5indirect
npmbraces3.0.3indirect
npmbrowserslist4.28.0indirect
npmbubblesets-js2.3.4indirect
npmbuffer6.0.3indirect
npmbundle-name4.1.0indirect
npmbytes-iec3.1.1indirect
npmcallsites3.1.0indirect
npmcaniuse-lite1.0.30001754indirect
npmchai6.2.2indirect
npmchalk-template0.4.0indirect
npmchart.js4.5.1indirect
npmchart.js^4.5.1indirect
npmcli-cursor4.0.0indirect
npmcli-spinners2.9.2indirect
npmcliui8.0.1indirect
npmcolor-convert2.0.1indirect
npmcolor-name1.1.4indirect
npmcolor-string1.9.1indirect
npmcolor2k2.0.3indirect
npmcomlink4.4.2indirect
npmcommand-line-args5.2.1indirect
npmcommand-line-usage7.0.3indirect
npmconvert-source-map2.0.0indirect
npmcross-spawn7.0.6indirect
npmcss-line-break2.1.0indirect
npmcss-tree3.1.0indirect
npmcssstyle5.3.3indirect
npmcsstype3.2.1indirect
npmd3-array3.2.4indirect
npmd3-binarytree1.0.2indirect
npmd3-color3.1.0indirect
npmd3-dispatch3.0.1indirect
npmd3-dsv3.0.1indirect
npmd3-ease3.0.1indirect
npmd3-fetch3.0.1indirect
npmd3-force3.0.0indirect
npmd3-force-3d3.0.6indirect
npmd3-format3.1.2indirect
npmd3-geo3.1.1indirect
npmd3-geo-projection4.0.0indirect
npmd3-hierarchy3.1.2indirect
npmd3-interpolate3.0.1indirect
npmd3-octree1.1.0indirect
npmd3-path3.1.0indirect
npmd3-quadtree3.0.1indirect
npmd3-random3.0.1indirect
npmd3-regression1.3.10indirect
npmd3-scale4.0.2indirect
npmd3-scale-chromatic3.1.0indirect
npmd3-shape3.2.0indirect
npmd3-time3.1.0indirect
npmd3-time-format4.1.0indirect
npmd3-timer3.0.1indirect
npmdagre0.8.5indirect
npmdata-urls6.0.0indirect
npmdebug4.4.3indirect
npmdecimal.js10.6.0indirect
npmdeep-is0.1.4indirect
npmdefault-browser5.4.0indirect
npmdefault-browser-id5.0.1indirect
npmdefine-lazy-prop2.0.0indirect
npmdefine-lazy-prop3.0.0indirect
npmdequal2.0.3indirect
npmdetect-libc2.1.2indirect
npmdir-glob3.0.1indirect
npmdoctrine3.0.0indirect
npmdom-accessibility-api0.5.16indirect
npmeastasianwidth0.2.0indirect
npmelectron-to-chromium1.5.254indirect
npmemoji-regex10.6.0indirect
npmemoji-regex8.0.0indirect
npmentities6.0.1indirect
npmes-module-lexer2.1.0indirect
npmesbuild0.27.2indirect
npmesbuild-visualizer0.7.0indirect
npmescalade3.2.0indirect
npmescape-string-regexp4.0.0indirect
npmeslint8.57.1indirect
npmeslint^8.56.0indirect
npmeslint-scope7.2.2indirect
npmeslint-visitor-keys3.4.3indirect
npmespree9.6.1indirect
npmesquery1.6.0indirect
npmesrecurse4.3.0indirect
npmestraverse5.3.0indirect
npmestree-walker3.0.3indirect
npmesutils2.0.3indirect
npmeventemitter35.0.4indirect
npmexpect-type1.3.0indirect
npmfast-deep-equal3.1.3indirect
npmfast-glob3.3.3indirect
npmfast-json-stable-stringify2.1.0indirect
npmfast-levenshtein2.0.6indirect
npmfast-uri3.1.2indirect
npmfastq1.19.1indirect
npmfdir6.5.0indirect
npmfecha4.2.3indirect
npmfflate0.8.2indirect
npmfile-entry-cache6.0.1indirect
npmfill-range7.1.1indirect
npmfind-replace3.0.0indirect
npmfind-up5.0.0indirect
npmflat-cache3.2.0indirect
npmflatbuffers24.12.23indirect
npmflatted3.4.2indirect
npmfs.realpath1.0.0indirect
npmfsevents2.3.3indirect
npmgensync1.0.0-beta.2indirect
npmget-caller-file2.0.5indirect
npmgl-matrix3.4.4indirect
npmglob7.2.3indirect
npmglob-parent5.1.2indirect
npmglob-parent6.0.2indirect
npmglobals13.24.0indirect
npmglobby11.1.0indirect
npmgraphemer1.4.0indirect
npmgraphlib2.1.8indirect
npmhas-flag4.0.0indirect
npmhighlight.js11.11.1indirect
npmhtml-encoding-sniffer4.0.0indirect
npmhtml-entities2.3.3indirect
npmhtml2canvas1.4.1indirect
npmhttp-proxy-agent7.0.2indirect
npmhttps-proxy-agent7.0.6indirect
npmiconv-lite0.6.3indirect
npmieee7541.2.1indirect
npmignore5.3.2indirect
npmimport-fresh3.3.1indirect
npmimurmurhash0.1.4indirect
npminflight1.0.6indirect
npminherits2.0.4indirect
npminternmap2.0.3indirect
npmis-any-array3.0.0indirect
npmis-arrayish0.3.4indirect
npmis-docker2.2.1indirect
npmis-docker3.0.0indirect
npmis-extglob2.1.1indirect
npmis-fullwidth-code-point3.0.0indirect
npmis-glob4.0.3indirect
npmis-in-ssh1.0.0indirect
npmis-inside-container1.0.0indirect
npmis-interactive2.0.0indirect
npmis-number7.0.0indirect
npmis-path-inside3.0.3indirect
npmis-potential-custom-element-name1.0.1indirect
npmis-unicode-supported1.3.0indirect
npmis-what4.1.16indirect
npmis-wsl2.2.0indirect
npmis-wsl3.1.0indirect
npmisexe2.0.0indirect
npmjs-tokens4.0.0indirect
npmjs-yaml4.1.1indirect
npmjsdom27.2.0indirect
npmjsdom^27.2.0indirect
npmjsesc3.1.0indirect
npmjson-bignum0.0.3indirect
npmjson-buffer3.0.1indirect
npmjson-schema-traverse0.4.1indirect
npmjson-schema-traverse1.0.0indirect
npmjson-stable-stringify-without-jsonify1.0.1indirect
npmjson52.2.3indirect
npmkeyv4.5.4indirect
npmleaflet1.9.4indirect
npmleaflet.markercluster1.5.3indirect
npmleaflet.markercluster^1.5.3indirect
npmlevn0.4.1indirect
npmlightningcss1.32.0indirect
npmlightningcss-android-arm641.32.0indirect
npmlightningcss-darwin-arm641.32.0indirect
npmlightningcss-darwin-x641.32.0indirect
npmlightningcss-freebsd-x641.32.0indirect
npmlightningcss-linux-arm-gnueabihf1.32.0indirect
npmlightningcss-linux-arm64-gnu1.32.0indirect
npmlightningcss-linux-arm64-musl1.32.0indirect
npmlightningcss-linux-x64-gnu1.32.0indirect
npmlightningcss-linux-x64-musl1.32.0indirect
npmlightningcss-win32-arm64-msvc1.32.0indirect
npmlightningcss-win32-x64-msvc1.32.0indirect
npmlilconfig3.1.3indirect
npmlocate-path6.0.0indirect
npmlodash4.18.1indirect
npmlodash.camelcase4.3.0indirect
npmlodash.merge4.6.2indirect
npmlog-symbols5.1.0indirect
npmlru-cache11.2.2indirect
npmlru-cache5.1.1indirect
npmlz-string1.5.0indirect
npmmagic-string0.30.21indirect
npmmdn-data2.12.2indirect
npmmerge-anything5.1.7indirect
npmmerge21.4.1indirect
npmmicromatch4.0.8indirect
npmmimic-fn2.1.0indirect
npmminimatch10.2.5indirect
npmminimist1.2.8indirect
npmml-array-max2.0.0indirect
npmml-array-min2.0.0indirect
npmml-array-rescale2.0.0indirect
npmml-matrix6.12.2indirect
npmmrmime2.0.1indirect
npmms2.1.3indirect
npmnanoid3.3.15indirect
npmnanoid5.1.6indirect
npmnanospinner1.2.2indirect
npmnatural-compare1.4.0indirect
npmnode-releases2.0.27indirect
npmobug2.1.1indirect
npmonce1.4.0indirect
npmonetime5.1.2indirect
npmopen11.0.0indirect
npmopen8.4.2indirect
npmoptionator0.9.4indirect
npmp-limit3.1.0indirect
npmp-locate5.0.0indirect
npmparent-module1.0.1indirect
npmparse57.3.0indirect
npmparse58.0.0indirect
npmpath-exists4.0.0indirect
npmpath-is-absolute1.0.1indirect
npmpath-key3.1.1indirect
npmpath-type4.0.0indirect
npmpathe2.0.3indirect
npmpbf4.0.1indirect
npmpicocolors1.1.1indirect
npmpicomatch2.3.2indirect
npmpicomatch4.0.4indirect
npmpmtiles3.2.1indirect
npmpostcss8.5.15indirect
npmpotpack1.0.2indirect
npmpowershell-utils0.1.0indirect
npmprelude-ls1.2.1indirect
npmprettier3.6.2indirect
npmpretty-format27.5.1indirect
npmprotocol-buffers-schema3.6.1indirect
npmprotomaps-leaflet4.1.1indirect
npmpunycode2.3.1indirect
npmqueue-microtask1.2.3indirect
npmquickselect2.0.0indirect
npmrbush3.0.1indirect
npmreact-is17.0.2indirect
npmreadable-stream3.6.2indirect
npmrequire-directory2.1.1indirect
npmrequire-from-string2.0.2indirect
npmresolve-from4.0.0indirect
npmresolve-protobuf-schema2.1.0indirect
npmrestore-cursor4.0.0indirect
npmreusify1.1.0indirect
npmrimraf3.0.2indirect
npmrolldown1.0.3indirect
npmrun-applescript7.1.0indirect
npmrun-parallel1.2.0indirect
npmrw1.3.3indirect
npmsafe-buffer5.2.1indirect
npmsafer-buffer2.1.2indirect
npmsaxes6.0.0indirect
npmsemver6.3.1indirect
npmsemver7.7.3indirect
npmseroval1.5.0indirect
npmseroval-plugins1.5.0indirect
npmshebang-command2.0.0indirect
npmshebang-regex3.0.0indirect
npmsiginfo2.0.0indirect
npmsignal-exit3.0.7indirect
npmsimple-swizzle0.2.4indirect
npmsirv3.0.2indirect
npmsize-limit12.0.0indirect
npmsize-limit^12.0.0indirect
npmslash3.0.0indirect
npmsolid-js1.9.11indirect
npmsolid-js^1.9.11indirect
npmsolid-refresh0.6.3indirect
npmsource-map-js1.2.1indirect
npmstackback0.0.2indirect
npmstd-env4.1.0indirect
npmstdin-discarder0.1.0indirect
npmstring-width4.2.3indirect
npmstring-width6.1.0indirect
npmstring_decoder1.3.0indirect
npmstrip-ansi6.0.1indirect
npmstrip-ansi7.1.2indirect
npmstrip-json-comments3.1.1indirect
npmsupports-color7.2.0indirect
npmsvg-path-parser1.1.0indirect
npmsymbol-tree3.2.4indirect
npmtable-layout4.1.1indirect
npmtext-segmentation1.0.3indirect
npmtext-table0.2.0indirect
npmtinybench2.9.0indirect
npmtinyexec1.2.4indirect
npmtinyglobby0.2.15indirect
npmtinyglobby0.2.17indirect
npmtinyrainbow3.0.3indirect
npmtinyrainbow3.1.0indirect
npmtldts7.0.17indirect
npmtldts-core7.0.17indirect
npmto-regex-range5.0.1indirect
npmtotalist3.0.1indirect
npmtough-cookie6.0.0indirect
npmtr466.0.0indirect
npmts-api-utils1.4.3indirect
npmtslib2.8.1indirect
npmtype-check0.4.0indirect
npmtype-fest0.20.2indirect
npmtypescript5.9.3indirect
npmtypescript^5.3.3indirect
npmtypescript-eslint7.18.0indirect
npmtypical4.0.0indirect
npmtypical7.3.0indirect
npmundici-types6.21.0indirect
npmupdate-browserslist-db1.1.4indirect
npmuri-js4.4.1indirect
npmutil-deprecate1.0.2indirect
npmutrie1.0.2indirect
npmvite8.0.16indirect
npmvite^6.4.1indirect
npmvite-plugin-solid2.11.10indirect
npmvite-plugin-solid^2.11.8indirect
npmvitefu1.1.1indirect
npmvitest4.1.8indirect
npmvitest^4.0.8indirect
npmw3c-xmlserializer5.0.0indirect
npmwebidl-conversions8.0.0indirect
npmwhatwg-encoding3.1.1indirect
npmwhatwg-mimetype4.0.0indirect
npmwhatwg-url15.1.0indirect
npmwhich2.0.2indirect
npmwhy-is-node-running2.3.0indirect
npmword-wrap1.2.5indirect
npmwordwrapjs5.1.1indirect
npmwrap-ansi7.0.0indirect
npmwrappy1.0.2indirect
npmws8.18.3indirect
npmwsl-utils0.3.1indirect
npmxml-name-validator5.0.0indirect
npmxmlchars2.2.0indirect
npmy18n5.0.8indirect
npmyallist3.1.1indirect
npmyargs17.7.2indirect
npmyargs-parser21.1.1indirect
npmyocto-queue0.1.0indirect
Dependency advisories 0

Installing npm:@seed-ship/mcp-ui-cli@5.0.0 pulls in 49 packages, direct and transitive: 0 carry known advisories, of which 0 are direct dependencies.

No known advisories affect the assessed dependencies.

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": [],
      "is_fork": false,
      "size_kb": 1307,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "CSS": 13836,
        "HTML": 321360,
        "JavaScript": 11012,
        "TypeScript": 1258834
      },
      "pushed_at": "2026-07-25T12:46:27Z",
      "created_at": "2025-11-16T04:08:18Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-09T14:33:57Z",
      "description": null,
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript",
        "HTML"
      ]
    },
    "owner": {
      "blog": "https://the-seed-ship.com/",
      "name": "The Seed Ship",
      "type": "Organization",
      "login": "theseedship",
      "company": null,
      "location": "France",
      "followers": 5,
      "avatar_url": "https://avatars.githubusercontent.com/u/130248931?v=4",
      "created_at": "2023-04-08T19:28:20Z",
      "is_verified": null,
      "public_repos": 22,
      "account_age_days": 1203
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v6.16.0",
          "kind": "minor",
          "published_at": "2026-07-03T20:12:25Z"
        },
        {
          "tag": "v6.15.0",
          "kind": "minor",
          "published_at": "2026-05-31T00:51:15Z"
        },
        {
          "tag": "v6.14.0",
          "kind": "minor",
          "published_at": "2026-05-31T00:18:10Z"
        },
        {
          "tag": "v6.13.0",
          "kind": "minor",
          "published_at": "2026-05-31T00:02:18Z"
        },
        {
          "tag": "v6.12.0",
          "kind": "minor",
          "published_at": "2026-05-30T23:50:36Z"
        },
        {
          "tag": "v5.5.0-spec",
          "kind": "prerelease",
          "published_at": "2026-05-30T23:31:22Z"
        },
        {
          "tag": "v6.11.0",
          "kind": "minor",
          "published_at": "2026-05-30T23:22:12Z"
        },
        {
          "tag": "v5.4.0-spec",
          "kind": "prerelease",
          "published_at": "2026-05-30T23:11:46Z"
        },
        {
          "tag": "v6.10.0",
          "kind": "minor",
          "published_at": "2026-05-30T22:37:43Z"
        },
        {
          "tag": "v6.9.0",
          "kind": "minor",
          "published_at": "2026-05-30T22:27:40Z"
        },
        {
          "tag": "v6.8.2",
          "kind": "patch",
          "published_at": "2026-05-30T22:02:36Z"
        },
        {
          "tag": "v6.8.1",
          "kind": "patch",
          "published_at": "2026-05-30T21:23:10Z"
        },
        {
          "tag": "v6.8.0",
          "kind": "minor",
          "published_at": "2026-05-22T18:13:17Z"
        },
        {
          "tag": "v6.7.0",
          "kind": "minor",
          "published_at": "2026-05-22T16:11:07Z"
        },
        {
          "tag": "v5.3.0-spec",
          "kind": "prerelease",
          "published_at": "2026-05-22T16:08:52Z"
        },
        {
          "tag": "v5.2.0-spec",
          "kind": "prerelease",
          "published_at": "2026-05-22T15:30:58Z"
        },
        {
          "tag": "v6.6.1",
          "kind": "patch",
          "published_at": "2026-05-22T15:08:39Z"
        },
        {
          "tag": "v6.6.0",
          "kind": "minor",
          "published_at": "2026-05-21T01:09:37Z"
        },
        {
          "tag": "v5.1.0-spec",
          "kind": "prerelease",
          "published_at": "2026-05-21T01:09:37Z"
        },
        {
          "tag": "v6.5.0",
          "kind": "minor",
          "published_at": "2026-05-09T22:47:18Z"
        },
        {
          "tag": "v5.0.6",
          "kind": "patch",
          "published_at": "2026-05-09T22:41:48Z"
        },
        {
          "tag": "v6.4.0",
          "kind": "minor",
          "published_at": "2026-05-03T02:22:28Z"
        },
        {
          "tag": "v6.3.1",
          "kind": "patch",
          "published_at": "2026-05-03T01:50:15Z"
        },
        {
          "tag": "v6.3.0",
          "kind": "minor",
          "published_at": "2026-05-03T01:05:18Z"
        },
        {
          "tag": "v5.0.5",
          "kind": "patch",
          "published_at": "2026-05-03T00:48:50Z"
        },
        {
          "tag": "v6.2.0",
          "kind": "minor",
          "published_at": "2026-05-03T00:01:23Z"
        },
        {
          "tag": "v6.1.0",
          "kind": "minor",
          "published_at": "2026-05-02T23:37:37Z"
        },
        {
          "tag": "v5.0.4",
          "kind": "patch",
          "published_at": "2026-05-02T19:29:35Z"
        },
        {
          "tag": "v6.0.0",
          "kind": "major",
          "published_at": "2026-05-02T19:29:28Z"
        },
        {
          "tag": "v5.7.0",
          "kind": "minor",
          "published_at": "2026-05-02T17:56:24Z"
        },
        {
          "tag": "v5.0.3",
          "kind": "patch",
          "published_at": "2026-05-02T17:36:40Z"
        },
        {
          "tag": "v5.6.0",
          "kind": "minor",
          "published_at": "2026-04-27T15:19:29Z"
        },
        {
          "tag": "v5.0.2",
          "kind": "patch",
          "published_at": "2026-04-27T14:49:46Z"
        },
        {
          "tag": "v5.5.1",
          "kind": "patch",
          "published_at": "2026-04-27T13:40:58Z"
        },
        {
          "tag": "v5.5.0",
          "kind": "minor",
          "published_at": "2026-04-27T07:49:20Z"
        },
        {
          "tag": "v5.0.1",
          "kind": "patch",
          "published_at": "2026-04-27T07:16:22Z"
        },
        {
          "tag": "v5.4.0",
          "kind": "minor",
          "published_at": "2026-04-26T16:40:03Z"
        },
        {
          "tag": "v5.3.1",
          "kind": "patch",
          "published_at": "2026-04-24T22:20:00Z"
        },
        {
          "tag": "v5.3.0",
          "kind": "minor",
          "published_at": "2026-04-22T17:52:19Z"
        },
        {
          "tag": "v5.2.0",
          "kind": "minor",
          "published_at": "2026-04-21T23:43:13Z"
        },
        {
          "tag": "v5.1.0",
          "kind": "minor",
          "published_at": "2026-04-14T18:48:05Z"
        },
        {
          "tag": "v5.0.0",
          "kind": "major",
          "published_at": "2026-04-14T17:58:05Z"
        },
        {
          "tag": "v4.3.9",
          "kind": "patch",
          "published_at": "2026-04-14T17:33:33Z"
        },
        {
          "tag": "v4.3.8",
          "kind": "patch",
          "published_at": "2026-04-12T06:22:45Z"
        },
        {
          "tag": "v4.3.7",
          "kind": "patch",
          "published_at": "2026-04-11T21:02:18Z"
        },
        {
          "tag": "v4.3.6",
          "kind": "patch",
          "published_at": "2026-04-11T20:47:30Z"
        },
        {
          "tag": "v4.3.5",
          "kind": "patch",
          "published_at": "2026-04-11T20:30:16Z"
        },
        {
          "tag": "v4.3.4",
          "kind": "patch",
          "published_at": "2026-04-11T20:23:59Z"
        },
        {
          "tag": "v4.3.3",
          "kind": "patch",
          "published_at": "2026-04-11T20:19:38Z"
        },
        {
          "tag": "v4.3.2",
          "kind": "patch",
          "published_at": "2026-04-11T19:49:39Z"
        },
        {
          "tag": "v4.3.1",
          "kind": "patch",
          "published_at": "2026-04-11T14:42:20Z"
        },
        {
          "tag": "v4.3.0",
          "kind": "minor",
          "published_at": "2026-04-11T12:12:20Z"
        },
        {
          "tag": "v4.2.2",
          "kind": "patch",
          "published_at": "2026-04-11T11:13:20Z"
        },
        {
          "tag": "v4.2.1",
          "kind": "patch",
          "published_at": "2026-04-11T04:36:40Z"
        },
        {
          "tag": "v4.2.0",
          "kind": "minor",
          "published_at": "2026-04-11T03:48:15Z"
        },
        {
          "tag": "v4.1.0",
          "kind": "minor",
          "published_at": "2026-04-07T05:45:11Z"
        },
        {
          "tag": "v4.0.6",
          "kind": "patch",
          "published_at": "2026-04-07T03:46:57Z"
        },
        {
          "tag": "v4.0.5",
          "kind": "patch",
          "published_at": "2026-04-07T03:36:17Z"
        },
        {
          "tag": "v4.0.4",
          "kind": "patch",
          "published_at": "2026-04-07T02:04:17Z"
        },
        {
          "tag": "v4.0.3",
          "kind": "patch",
          "published_at": "2026-04-07T01:25:25Z"
        },
        {
          "tag": "v4.0.2",
          "kind": "patch",
          "published_at": "2026-04-07T00:31:22Z"
        },
        {
          "tag": "v4.0.1",
          "kind": "patch",
          "published_at": "2026-04-07T00:18:30Z"
        },
        {
          "tag": "v4.0.0",
          "kind": "major",
          "published_at": "2026-04-06T23:58:39Z"
        },
        {
          "tag": "v3.0.5",
          "kind": "patch",
          "published_at": "2026-04-06T23:09:27Z"
        },
        {
          "tag": "v3.0.4",
          "kind": "patch",
          "published_at": "2026-04-06T22:21:25Z"
        },
        {
          "tag": "v3.0.3",
          "kind": "patch",
          "published_at": "2026-04-06T22:19:22Z"
        },
        {
          "tag": "v3.0.2",
          "kind": "patch",
          "published_at": "2026-04-06T21:36:47Z"
        },
        {
          "tag": "v3.0.1",
          "kind": "patch",
          "published_at": "2026-04-06T21:12:13Z"
        },
        {
          "tag": "v3.0.0",
          "kind": "major",
          "published_at": "2026-04-06T20:12:57Z"
        },
        {
          "tag": "v2.15.0",
          "kind": "minor",
          "published_at": "2026-04-06T20:07:26Z"
        },
        {
          "tag": "v2.14.0",
          "kind": "minor",
          "published_at": "2026-04-06T18:50:51Z"
        },
        {
          "tag": "v2.13.0",
          "kind": "minor",
          "published_at": "2026-04-06T17:57:23Z"
        },
        {
          "tag": "v2.12.0",
          "kind": "minor",
          "published_at": "2026-04-06T13:55:02Z"
        },
        {
          "tag": "v2.11.0",
          "kind": "minor",
          "published_at": "2026-04-06T11:10:55Z"
        },
        {
          "tag": "v2.10.3",
          "kind": "patch",
          "published_at": "2026-04-06T10:18:02Z"
        },
        {
          "tag": "v2.10.2",
          "kind": "patch",
          "published_at": "2026-04-06T10:13:59Z"
        },
        {
          "tag": "v2.10.1",
          "kind": "patch",
          "published_at": "2026-04-06T10:12:01Z"
        },
        {
          "tag": "v2.10.0",
          "kind": "minor",
          "published_at": "2026-04-06T10:09:27Z"
        },
        {
          "tag": "v2.9.0",
          "kind": "minor",
          "published_at": "2026-04-06T02:10:19Z"
        },
        {
          "tag": "v2.8.3",
          "kind": "patch",
          "published_at": "2026-04-06T01:21:02Z"
        },
        {
          "tag": "v2.8.2",
          "kind": "patch",
          "published_at": "2026-04-05T23:44:43Z"
        },
        {
          "tag": "v2.8.1",
          "kind": "patch",
          "published_at": "2026-04-05T23:30:30Z"
        },
        {
          "tag": "v2.8.0",
          "kind": "minor",
          "published_at": "2026-04-05T23:25:40Z"
        },
        {
          "tag": "v2.7.0",
          "kind": "minor",
          "published_at": "2026-04-05T19:20:31Z"
        },
        {
          "tag": "v2.6.4",
          "kind": "patch",
          "published_at": "2026-04-05T18:22:37Z"
        },
        {
          "tag": "v2.6.3",
          "kind": "patch",
          "published_at": "2026-04-05T18:10:40Z"
        },
        {
          "tag": "v2.6.2",
          "kind": "patch",
          "published_at": "2026-04-05T17:24:31Z"
        },
        {
          "tag": "v2.6.1",
          "kind": "patch",
          "published_at": "2026-04-05T16:29:39Z"
        },
        {
          "tag": "v2.6.0",
          "kind": "minor",
          "published_at": "2026-04-05T16:23:10Z"
        },
        {
          "tag": "v2.5.3",
          "kind": "patch",
          "published_at": "2026-04-05T00:28:25Z"
        },
        {
          "tag": "v2.5.2",
          "kind": "patch",
          "published_at": "2026-04-05T00:04:38Z"
        },
        {
          "tag": "v2.5.1",
          "kind": "patch",
          "published_at": "2026-04-04T21:10:06Z"
        },
        {
          "tag": "v2.5.0",
          "kind": "minor",
          "published_at": "2026-04-04T21:06:40Z"
        },
        {
          "tag": "v2.4.0",
          "kind": "minor",
          "published_at": "2026-04-04T19:57:59Z"
        },
        {
          "tag": "v2.3.0",
          "kind": "minor",
          "published_at": "2026-04-03T19:21:05Z"
        },
        {
          "tag": "v2.2.11",
          "kind": "patch",
          "published_at": "2026-04-03T19:12:10Z"
        },
        {
          "tag": "v2.2.10",
          "kind": "patch",
          "published_at": "2026-04-03T17:37:29Z"
        },
        {
          "tag": "v2.2.9",
          "kind": "patch",
          "published_at": "2026-04-03T12:11:45Z"
        },
        {
          "tag": "v2.2.8",
          "kind": "patch",
          "published_at": "2026-03-31T15:06:16Z"
        },
        {
          "tag": "v2.2.7",
          "kind": "patch",
          "published_at": "2026-03-31T14:44:42Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "02449a057818c02b82cfe21588c3ddb6b65163fd",
          "body": "docs(solid): close the graph node/edge cap decision — ship uncapped",
          "is_bot": false,
          "headline": "Merge pull request #14 from theseedship/docs/close-graph-caps-decision",
          "author_name": "Nicolas",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-07-03T20:39:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2bfa1f53322fdbbc0cac22b55acbd6c4b3e5f938",
          "body": "BRIEF-graph-component-g6.md §12 item 3 (maxGraphNodes/maxGraphEdges) had been\nleft as an open 'decision needed'. Recorded the resolution: ship uncapped for\nnow — graphs are rare and the existing 512KB payload cap already bounds size in\npractice; the only residual risk is client-side G6 render perf o\n[…]\nted the trigger to revisit (add a\n.max() with fallback degradation if a real large-graph case appears).\n\nDoc-only; no code change.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(solid): close the graph node/edge cap decision — ship uncapped",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-07-03T20:36:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1edc9598c60a07d64c28a06ebebbdf2594e2d5a0",
          "body": "Post-audit polish pass (v6.16.0): type-drift fix, escapeHtml, streaming tests, docs cleanup",
          "is_bot": false,
          "headline": "Merge pull request #13 from theseedship/chore/polish-quickwins",
          "author_name": "Nicolas",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-07-03T20:10:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bfb760dedebfef7863c5767e6be879fe159c46bb",
          "body": "…blank (Codex P2)\n\nDeriving ComponentType from the spec added `composite` to the validation gate's\nknown set, so a `composite` component now passes validation. But `composite` is\na UILayout discriminator with no leaf render branch in ComponentRenderer: a\ntop-level composite is handled as a layout, b\n[…]\nle outcome). Adds a render test for a composite\nnested in a layout's components[].\n\ntypecheck + build clean, 778 solid tests pass.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(solid): composite components[] leaf shows the P1.6 notice, not a …",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-07-03T20:03:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "852ac5dcc35243220ef507865b8064446231901d",
          "body": "`./components` is a published package.json subpath, so\n`import { ActionRenderer } from '@seed-ship/mcp-ui-solid/components'` is public\nAPI — removing it in a 6.16.0 minor would break consumers. Restore the stub and\nits `./components` re-exports (documented as legacy, removal deferred to the next\nMAJ\n[…]\nmponents subpath entrypoint.\n\ntypecheck + build clean, 777 solid tests pass; dist/components.d.ts re-exports\nActionRenderer again.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(solid): keep ActionRenderer public export (Greptile P1)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-07-03T19:49:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1dcb76da2534bc78cc49c325b1f25b69263fb589",
          "body": "Bumps @seed-ship/mcp-ui-solid 6.15.0 -> 6.16.0 and records the polish-pass\nchangelog: composite type-drift fix (ComponentType now derived from the spec),\nescapeHtml consolidation, first behavioral coverage of the SSE streaming\nengine, dead ActionRenderer stub removal, and docstring fixes.\n\ntypecheck + build clean, 777 solid tests pass.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(solid): release v6.16.0 — post-audit polish pass",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-07-03T19:33:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "dd966ff0775a4d02d53a09f3f662af93d09589e9",
          "body": "Post-audit doc cleanup — the root docs had drifted well behind the packages\n(solid 6.16.0, spec 5.5.0):\n\n- Delete PUBLISH_STATUS.md: a one-time v1.0.0 npm-2FA publish-status note, fully\n  obsolete now that all packages are published.\n- Archive super-improve.md + sprint-ultimate.md under docs/archive\n[…]\n this monorepo-wide file stopped at 5.2.0. Added a banner pointing\n  readers to the per-package changelogs as the source of truth.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: archive stale root planning logs + refresh README/CHANGELOG",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-07-03T19:33:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "596ef3873186d0b1981779ebc1d8159f4fd1fcc8",
          "body": "The 469-line streaming hook — SSE connect, out-of-order component buffering /\nreordering, reconnect-with-backoff, terminal error handling — had zero\nbehavioral coverage: its only prior reference was StreamingUIRenderer.parity's\n`vi.mock(...)` that replaces it wholesale.\n\nAdds useStreamingUI.test.ts.\n[…]\nterminal (no reconnect, single fetch);\n- recoverable error reconnects with backoff, then recovers.\n\ntypecheck clean, 4 tests pass.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(solid): cover the SSE streaming engine (useStreamingUI)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-07-03T19:25:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ecbf55b781839717891116d886f3c8fc02deded9",
          "body": "…string\n\n- Delete components/ActionRenderer.tsx: a legacy stub (`ActionSpec = any`,\n  `{action, onExecute, disabled}` shape) with zero JSX consumers. The live\n  ActionRenderer is inline in UIResourceRenderer and takes `{component}`. The\n  stub was re-exported only from components/index.ts and never \n[…]\n the docstring named a `component:error` telemetry event\n  that does not exist — every degrade caller emits `render:error`. Fixed.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(solid): drop dead ActionRenderer stub + fix stale telemetry doc…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-07-03T19:16:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2f5177b927cd6ed5f4488468b6aee2c01ebd7a1f",
          "body": "MapRenderer and GraphRenderer each carried their own private `escapeHtml` and\nthe two disagreed: MapRenderer escaped `& < > \"` but MISSED the single quote,\nGraphRenderer escaped all five. Both feed untrusted payload values into\nHTML-string popup/tooltip bindings, so the divergence was a real (if low\n[…]\nal copies removed.\n- utils/escape-html.test.ts: covers all five chars incl. the single quote\n  MapRenderer previously let through.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(solid): consolidate escapeHtml into a shared util",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-07-03T19:16:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a2381afa6a52ce46a16531bb050b512856b550b9",
          "body": "…tores composite)\n\nSolid hand-maintained two parallel lists of the component-type enum — the\n`ComponentType` union in types/index.ts and the `KNOWN_COMPONENT_TYPES` Set in\nvalidation.ts — separate from the spec's `ComponentTypeSchema`, the single\nsource of truth. They drifted: `composite` is in the \n[…]\ne composite case).\n- fix the stale \"14/17 types\" count in the SPEC_VALIDATORS docstring.\n\ntypecheck clean, full solid suite green.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(solid): derive ComponentType + known-types set from the spec (res…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-07-03T19:16:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9a14485136041b489e1f92a00e1b93a949679c31",
          "body": "…nd_yarn-44ed45f192\n\nchore(deps): Bump the npm_and_yarn group across 1 directory with 2 updates",
          "is_bot": false,
          "headline": "Merge pull request #12 from theseedship/dependabot/npm_and_yarn/npm_a…",
          "author_name": "Nicolas",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-07-03T18:36:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c58a2e60502a45b9a862ac337c3d01c6d131cd40",
          "body": "…dates\n\nBumps the npm_and_yarn group with 2 updates in the / directory: [dompurify](https://github.com/cure53/DOMPurify) and [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).\n\n\nUpdates `dompurify` from 3.4.1 to 3.4.11\n- [Release notes](https://github.com/cure53/DOMPurify/releases)\n- [C\n[…]\nependency-group: npm_and_yarn\n- dependency-name: vite\n  dependency-version: 8.0.16\n  dependency-type: indirect\n  dependency-group: npm_and_yarn\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "chore(deps): Bump the npm_and_yarn group across 1 directory with 2 up…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-23T03:22:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1907b204288e36b9bd07d3e0dd7d87f87f1d1725",
          "body": "…nd_yarn-4825ac1e2e\n\nchore(deps-dev): Bump vitest from 4.0.9 to 4.1.8 in the npm_and_yarn group across 1 directory",
          "is_bot": false,
          "headline": "Merge pull request #11 from theseedship/dependabot/npm_and_yarn/npm_a…",
          "author_name": "Nicolas",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-06-23T03:18:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2c8579c495265560f41684bf3da2da736d94ec9e",
          "body": "Bumps the npm_and_yarn group with 1 update in the / directory: [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest).\n\n\nUpdates `vitest` from 4.0.9 to 4.1.8\n- [Release notes](https://github.com/vitest-dev/vitest/releases)\n- [Changelog](https://github.com/vitest-dev/vitest/blob/mai\n[…]\n)\n\n---\nupdated-dependencies:\n- dependency-name: vitest\n  dependency-version: 4.1.8\n  dependency-type: indirect\n  dependency-group: npm_and_yarn\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "chore(deps-dev): Bump vitest",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-01T23:33:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a58edf9d25a19aaf700970ed5d200496d7deb9bc",
          "body": "…sh fix)\n\nThe v6.15.0 commit shipped before the suite was green. Two corrections:\n- `footer` is a valid type with a real renderer but had no dispatch branch in\n  ComponentRenderer (only auto-injected at layout level), so a standalone\n  footer component rendered a silent blank — exactly the P1.6 fail\n[…]\nfailed` (firstErrorCode:\n  'UNKNOWN_COMPONENT_TYPE'). Fixed the assertion + title.\n\ntypecheck + build clean, 763 solid tests pass.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(solid): add footer dispatch branch + fix P1.6 test (v6.15.0 publi…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-31T01:00:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f0ecaa35112b2f07f0234ab26b16e508c3ef10c0",
          "body": "…5.0)\n\nP1.6 of AUDIT-2026-05-30-visual-renderers-g6-ontology.\n\nAn unrecognized component `type` has no renderer branch, so it rendered\nnothing — and under `errorMode: 'silent'` it passed the validation gate\nwithout even an error card (fully invisible failure). The gate now routes any\nUNKNOWN_COMPONE\n[…]\nonal.\n\nBehavior change only for previously-invisible unknown types. typecheck + build\nclean, 763 solid tests pass (+3 P1.6 tests).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(solid): unknown component types never render a silent blank (v6.1…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-31T00:50:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "51fffabb451bda4a638a9a44ca39b8d0422dc552",
          "body": "The first cut assumed jsdom lacked the chart.js peer; it is a devDependency, so\nisChartJSAvailable() resolved true and the native canvas path rendered instead\nof the fallback. Drive the decision with renderer: 'iframe' (gated purely on\nallowQuickchartFallback, independent of chart.js availability) and assert on the\nactual degraded message. Both tests pass; 760 solid tests green.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(solid): fix P1.7 quickchart opt-in test (v6.14.0 publish fix)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-31T00:22:30Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6c2b4341b2f62ab859904db78f8ec00f594c7b42",
          "body": "….14.0)\n\nP1.7 of AUDIT-2026-05-30-visual-renderers-g6-ontology.\n\nThe chart renderer could silently fall back to quickchart.io when the native\nchart.js peer was missing (auto mode), encoding the full chart config (labels +\ndata) into an external image URL — an implicit network call that can leak\nsens\n[…]\n a payload must not opt itself into an external call.\n\ntypecheck + build clean, 760 solid tests pass (+2 quickchart opt-in tests).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): make quickchart.io chart fallback an explicit opt-in (v6…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-31T00:17:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c53af919fb52441e0ca464ffef851672f991d829",
          "body": "…3.0)\n\nAudit follow-up to P1.4/P1.5. A `type: 'graph'` component could not be\nexpressed as a typed `UIComponent` — the params union ended at\n`MapComponentParams`, so the v6.12.0 GraphRegistry example had to be empty.\n\n- add `GraphComponentParams`, `GraphNode`, `GraphEdge`, `GraphLayout` to\n  mcp-ui-\n[…]\n+ runtime assignability).\n\nType-widening only; existing valid code keeps compiling. typecheck + build\nclean, 758 solid tests pass.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): make graph first-class in UIComponent params union (v6.1…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-31T00:01:32Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "650f7e5df40e450ca4d7baf05e25f94b35af79c2",
          "body": "P1.5 of AUDIT-2026-05-30-visual-renderers-g6-ontology.\n\n`ComponentRegistry` knew `graph` via KNOWN_COMPONENT_TYPES and the schema but\nhad no registry entry. Adds `GraphRegistry` (registry now 20 types) and a\nregistry ↔ schema parity test: every ComponentTypeSchema option must have a\nregistry entry, \n[…]\nGraphComponentParams joins the UIComponent params union.\n\ntypecheck + build clean, 756 solid tests pass (registry suite 70 -> 77).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): register graph + registry/schema parity test (v6.12.0)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-30T23:49:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0edcdce79449a5b6c6188e8920a736d72e33255a",
          "body": "…v5.5.0)\n\nP1.4 of AUDIT-2026-05-30-visual-renderers-g6-ontology.\n\n`src/types.ts` exported a hand-maintained 8-member `ComponentType`\n(chart|table|metric|text|composite|image|link|action) that had drifted from the\n21-member `ComponentTypeSchema`, so TS consumers of the legacy type believed\n`graph`/`m\n[…]\n`) that fails the build\nif they ever diverge again.\n\nType-widening only; existing valid code keeps compiling. 142 spec tests pass.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(spec): infer ComponentType from schema — kill legacy type drift (…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-30T23:30:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e2f555317cd81069e0fabfae5c5ff46febd73650",
          "body": "…dening (v6.11.0)\n\nP1.3 + P1.2 follow-up of AUDIT-2026-05-30-visual-renderers-g6-ontology.\n\nP1.3 — PMTiles no longer fails silently. A failed PMTiles overlay (commonly\nthe optional `protomaps-leaflet` peer missing) was only a console.warn, leaving\nan unexplained empty layer. `<MapRenderer>` now keep\n[…]\nraw HTML\nonly under `allowHtmlPopups`). Helper exported + unit-tested.\n\n749 tests pass (+6 marker tests), typecheck + build clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(solid): surface PMTiles failures + wire marker escaping — map har…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-30T23:21:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f6b07e555f0c0a2d60a81ce36a8b8a32812aa7c2",
          "body": "….4.0)\n\nP2.2 of AUDIT-2026-05-30-visual-renderers-g6-ontology.\n\n- add `graph` to `ConnectorPreferredLayoutSchema` so a connector can hint a\n  node-link graph for relational results (`renderHints.preferredLayout: 'graph'`).\n- ship 3 example fixtures: provenance/source, process/dependencies, and\n  ont\n[…]\n so the directory-scanned\nexample set is consistent between local and CI.\n\nAdditive enum change; existing payloads are unaffected.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(spec): add `graph` to connector preferredLayout render hints (v5…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-30T23:10:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6e6d32997191d8818dd844efcbcce5601b71588e",
          "body": "….10.0)\n\nLeaflet renders bound tooltip/popup strings as HTML, so marker.tooltip,\nmarker.popup and a GeoJSON popup.template were an XSS vector on the\nuntrusted (LLM/connector) payload path. Audit P1.2.\n\n<MapRenderer> now escapes marker.tooltip/popup by default and ignores a raw\npopup.template (falls \n[…]\nuildPopupContent. +14 tests\n(MapRenderer.security.test.ts). Full suite 745 passed / 1 skipped, typecheck\n+ build + prettier clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(solid): escape map popups/tooltips by default — XSS hardening (v6…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-30T22:36:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0992d1e385e8215f9532b335998c884372a8c056",
          "body": "Repairs the v6.9.0 commit (353adab) which didn't typecheck and never\nactually modified ChartJSRenderer (those edits silently no-op'd):\n\n- telemetry: `component:error` is not a valid TelemetryEvent type — use\n  `render:error` with `errorMessage`, and default `id` to '' (it's optional\n  on the rendere\n[…]\nchangelog: correct the test-count claim (731 passed, +14 tests).\n\ntypecheck clean, build clean, full suite 731 passed / 1 skipped.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(solid): correct telemetry event + wire chart degradation (v6.9.0)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-30T22:27:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "353adabb4e755bb69f31dd0c07e64b1f38bcab11",
          "body": "Every heavy renderer now follows the same three-rung contract (audit P2.5):\nnative render → degraded-but-useful table on throw → component:error\ntelemetry (detail.degraded=true). Previously a render-path failure left a\nblank canvas/container (graph, chart) or a bare red string (map).\n\n- graph: G6 th\n[…]\nrenderers-g6-ontology.md.\n\n+20 tests (projections + DegradedFallback). Full suite: 737 passed,\n1 skipped. typecheck + build clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): renderer fallback ladder — no silent blanks (v6.9.0)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-30T22:23:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "aa3566ac04fd4ca32799783dbb80e64124de160f",
          "body": "A fully-valid component has `errors === undefined`, so\n`errors?.some(...)` is `undefined`, not `false` — the new geojson/layers/\npmtiles map tests must assert toBeFalsy(), not toBe(false). The logic fix\nitself was correct; only the assertions were wrong.\n\nFull suite: 717 passed, 1 skipped. typecheck + prettier clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(solid): assert toBeFalsy for valid-map cases (fix v6.8.2 CI)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-30T22:01:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "59862421290154ba50d1c7437137addd10b6414d",
          "body": "cd63665 shipped the v6.8.2 tests + bump but NOT the validation.ts change\nitself (an earlier `git checkout` reverted it and the re-edit silently\nno-op'd), so CI failed: tests expected the new behaviour against old logic.\n\nThis commit:\n- applies the real widening in validation.ts (accept a map with AN\n[…]\n?.some(...)` is undefined — assert\n  toBeFalsy(), not toBe(false).\n\nFull suite: 717 passed, 1 skipped. typecheck + prettier clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(solid): apply the actual map-validator widening (amends cd63665)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-30T22:00:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "cd63665f742175949c8c99bf1834052385935e70",
          "body": "…6.8.2)\n\nvalidateComponent rejected a type:'map' as INVALID_MAP unless it had center\nor markers. Since spec@5.2.0 a map can render purely from params.geojson,\nnamed layers, or a pmtiles source (e.g. a Cadastre/choropleth map with an\nauto-fit viewport and no markers) — those valid maps, which <MapRen\n[…]\null suite: 717 passed, 1 skipped. typecheck clean.\n\nPer audit docs/briefs/AUDIT-2026-05-30-visual-renderers-g6-ontology.md (P1.1).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(solid): accept map rendered purely from geojson/layers/pmtiles (v…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-30T21:38:47Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7ccbd91eeab9d52515b831330da5cb469fb0a123",
          "body": "…6.8.1)\n\nThe previous v6.8.1 attempt's contract test drove the full component through\njsdom, but the container ref is gated behind an async availability <Show>, so\n`new Graph(...)` is never reached in a test renderer → all 6 tests timed out\nand CI failed (nothing published; npm stayed at 6.8.0).\n\nEx\n[…]\n behaviour is unchanged — onMount\nnow just calls the helper.\n\nFull suite green: 713 passed, 1 skipped. typecheck + prettier clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(solid): extract pure buildGraphConfig + green G6 contract test (v…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-30T21:22:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ddb7b8490a024a1237227936787e973a188a50a2",
          "body": "… (v6.8.1)\n\nThe first v6.8.1 attempt (c5b0640) wired `rendererPref: 'svg'` via\n`await import('@antv/g-svg')`. g-svg is a transitive dep of @antv/g6, not\nstatically resolvable at build time, so vite failed to transform the module\nand EVERY test importing GraphRenderer broke (publish CI failed; nothin\n[…]\ng factory.\n- brief BRIEF-graph-component-g6.md corrected to match.\n\nFull suite: 713 passed, 1 skipped. typecheck + prettier clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(solid): repair G6 svg path — never ship unresolvable g-svg import…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-30T21:15:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c5b064081feb031e1054668a5d877dea06a0aaca",
          "body": "GraphRenderer passed `renderer: 'canvas' | 'svg'` (a string) to the G6 v5\nGraph constructor. In G6 v5 `renderer` is a factory `(layer) => IRenderer`,\nnot a string (that was the v4 contract), so G6 threw \"renderer is not a\nfunction\" — and because the default path also passed the string 'canvas',\nEVER\n[…]\ndocs/briefs/AUDIT-2026-05-30-visual-renderers-g6-ontology.md (P0).\n\nFull suite: 713 passed, 1 skipped. typecheck + prettier clean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(solid): G6 v5 renderer is a factory, not a string (v6.8.1)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-30T21:08:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "436c35df7282a36fc9586b0e33fb73cdaee710ab",
          "body": "DEFAULT_RESOURCE_LIMITS.maxPayloadSize moved from 50*1024 to 512*1024.\nThe shared payload-size guard rejected otherwise-valid type:'map'\ncomponents carrying a realistic params.geojson FeatureCollection as\nPAYLOAD_TOO_LARGE — a dense multi-feature map (e.g. a département-wide\nchoropleth) runs 300-500\n[…]\nad-size tests (ceiling, ~350KB map accepted,\n  >512KB map + non-map rejected, stricter caller limit honoured)\n- bump 6.7.0 → 6.8.0\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): raise default payload-size limit 50KB → 512KB (v6.8.0)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-22T18:12:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b026f04c0a2fe45960bbbfb4be2249552a69cb37",
          "body": "feat: MacroRun Phase 2 — agnostic contract + pure adapters",
          "is_bot": false,
          "headline": "Merge pull request #10 from theseedship/feat/macro-run-phase-2",
          "author_name": "Nicolas",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-22T16:07:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0abdd6687ad3b4bef2219a87c0f5fce61b017ccd",
          "body": "Adds the agnostic MacroRun contract and the pure adapters that turn it\ninto existing MCP-UI primitives. Consolidated from deposium_MCPs\ndocs/2026/briefs/2026-05-22-macro-run-runtime-contract-consolidation.md.\n\nmcp-ui-spec (5.2.0 -> 5.3.0):\n- MacroRunV1 / MacroStepV1 / MacroInterrogationV1 Zod schema\n[…]\nValidation: 132 spec tests, 44 solid adapter tests (702 solid suite,\n0 regression), tsc --noEmit on both packages, Prettier clean.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: MacroRun Phase 2 — agnostic contract + pure adapters",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-22T16:04:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "485e9ce0f83733f8390d71bb822d569a19e82ab8",
          "body": "feat(spec): align map component contract with MapRenderer (v5.2.0)",
          "is_bot": false,
          "headline": "Merge pull request #9 from theseedship/feat/map-geojson-contract",
          "author_name": "Nicolas",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-22T15:27:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "278662852f945ffef026e14a8d4e7faf40cc3bd6",
          "body": "mcp-ui-solid's <MapRenderer> has supported GeoJSON, choropleth, popups,\nnamed layers, marker clustering and PMTiles since its v3.1.0, but\nMapComponentParamsSchema only validated `markers` — a host emitting\ntype:'map' with params.geojson had those fields silently stripped by Zod.\n\nAdds GeoJSON schema\n[…]\nest: schemas-map-v5.2.0.test.ts (17 cases)\n- docs: README \"Map Component Contract\" section, CHANGELOG 5.2.0\n- bump: 5.1.0 -> 5.2.0\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(spec): align map component contract with MapRenderer (v5.2.0)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-22T15:24:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0a22b89eaded811400c49091f92883ab2610ec63",
          "body": "Both files predated Prettier enforcement and never conformed to the\nrepo's .prettierrc (semi: true, etc.). Reformatting them in a dedicated\nstyle-only commit keeps the v5.2.0 map-contract feature diff readable —\nno logic changes here, formatting only.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "style(spec): apply Prettier to schemas/index.ts and README.md",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-22T15:24:24Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e1c0cb62a11ace735a4e7324d6dc3a9c34c7c362",
          "body": "ActionParamsSchema.action allows 'tool-call' | 'link' | 'submit', but at\nruntime `submit` was inert: ActionGroupRenderer only branched on\ntool-call/link, and the standalone `action` renderer emitted a native\ntype=\"submit\" button — which only fires inside a real <form>. Standalone\nresources rendered \n[…]\nl integration through real\nuseAction → MCPActionContext → host executor, both render surfaces).\nFull suite 677 passed / 1 skipped.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(solid): execute action:'submit' outside <form> contexts (v6.6.1)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-22T15:06:06Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "466231cdaef619344d6b9b41a13ebb2b2c3ae4f0",
          "body": "…visories\n\nDependabot flagged fast-uri@3.1.0 (pinned in the lockfile via\najv@8.18.0 ← @seed-ship/mcp-ui-cli):\n\n- host confusion via percent-encoded authority delimiters (<= 3.1.1)\n- path traversal via percent-encoded dot segments (<= 3.1.0)\n\n3.1.2 clears both. ajv's own range (^3.0.6) already permit\n[…]\nesh already get 3.1.2, so no published-package\nversion bump is needed.\n\nBuilds + tests green (spec 90, cli 7, solid 667 + 1 skip).\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(security): override fast-uri >=3.1.2 — fixes 2 high-severity ad…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-21T01:08:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a69422398e231caf557643bf9ab05995e2f81093",
          "body": "The 6.6.0 release bumped mcp-ui-solid's dependency on @seed-ship/mcp-ui-spec\nto workspace:^5.1.0; the lockfile needs to match for CI's --frozen-lockfile.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: update pnpm-lock.yaml for mcp-ui-spec ^5.1.0 bump",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-21T00:54:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1006b55093d8ac7e15d8c8f85cb33b085cf0e671",
          "body": "Quick-reference summary at the top of the roadmap: D1-D10 + R1-R4 are the\nbinding decisions; earlier \"decision required\" notes are historical. Lists\nthe 5-step MCPUI execution order.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(roadmap): add \"Etat final des decisions\" summary section",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-21T00:52:47Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4d7c6eaccd0d4e532f1ff56464aef0dc2d4cdb59",
          "body": "Sprint OpenData / macros (ROADMAP-opendata-macro-mcpui.md, D1-D10 + R1-R4).\n\nmcp-ui-solid 6.5.0 -> 6.6.0 (minor — additive):\n- D3 StreamingUIRenderer parity, D2 MCPUIStringsProvider, R3\n  PresentationFeedback, D5/D6 connector adapters subpath.\nmcp-ui-spec 5.0.6 -> 5.1.0 (minor — additive):\n- R1 Conn\n[…]\nnew features (What's New v6.6.0 / Connector Contracts).\n\nBuilds green (spec/cli/solid). Tests: spec 90, cli 7, solid 667 + 1 skip.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): mcp-ui-solid 6.6.0 + mcp-ui-spec 5.1.0",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-21T00:52:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a7a50f1a7ba61171c8de75d1aef7012a30e6d19d",
          "body": "Closes the connector half of D5/D6 of ROADMAP-opendata-macro-mcpui.md.\n\nNew dedicated subpath export @seed-ship/mcp-ui-solid/adapters — never\nimported by the core renderer path, so consumers that don't emit\nconnector results pay nothing for it.\n\n- connectorResultToUILayout(result): assembles a Conne\n[…]\naves to Phase 2.\n\nTests: 15 new (incl. all spec fixtures assemble cleanly + R2 degraded\npaths). Full suite 667 passed / 1 skipped.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): D5/D6 — opt-in connector adapters at /adapters subpath",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-21T00:45:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "eddd4df2cc5d1854d025b7aabd2e53d186e78efb",
          "body": "Closes R3 / D9 / Phase 4 of ROADMAP-opendata-macro-mcpui.md.\n\nNew opt-in feedback widget, DISTINCT from FeedbackInline (two separate\ncomponents, exports, payloads — the response-quality axis and the\npresentation axis never collapse, per R3):\n\n- FeedbackInline    — was the answer good?\n- Presentation\n[…]\n/ ConnectorPreferredLayout\n  re-exported from the package root for convenience.\n\nTests: 10 new. Full suite 652 passed / 1 skipped.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): R3 — PresentationFeedback component (Phase 4)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-21T00:39:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4ab5c97a7bfa7937b2df146d44a3663cf09f1c31",
          "body": "…ack)\n\nCloses the spec half of R3 / D9 of ROADMAP-opendata-macro-mcpui.md.\n\nThe payload <PresentationFeedback> (in mcp-ui-solid) emits when a user\nrates how a connector result was PRESENTED — a separate axis from\nresponse-quality feedback (FeedbackInline). Lives in the spec because,\nlike ConnectorDy\n[…]\n tags.\n- ConnectorPreferredLayoutSchema extracted + shared between\n  ConnectorRenderHintsSchema and ConnectorRenderFeedbackSchema.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(spec): R3 — ConnectorRenderFeedback contract (presentation feedb…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-21T00:39:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b71788e161297cc5fe098bd98775a1493c56faf8",
          "body": "Closes R1 of ROADMAP-opendata-macro-mcpui.md.\n\nThe canonical JSON contract a connector / MCP server emits to describe a\nrich, ready-to-render result. It crosses repo boundaries (MCPs emitter ->\nmcp-ui-solid consumer) deployed independently — so it lives in mcp-ui-spec\n(the shared contract layer), no\n[…]\ntate) — every one\nasserted to parse against the schema.\n\nTests: 13 new (schema validation + all fixtures parse). Spec suite 90/90.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(spec): R1 — ConnectorDynamicResultV1 contract + fixtures",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-21T00:29:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e5607fea69f689d718606b2e78c330d45613d86b",
          "body": "… strings\n\nCloses D2 / R4 of ROADMAP-opendata-macro-mcpui.md.\n\nMCP-UI hardcoded a handful of its own chrome strings (expand tooltip,\nfeedback acks...) as an inconsistent FR/EN mix. New opt-in context lets a\nhost localize them — without an i18n framework, without per-renderer\nlocale props.\n\n- MCPUISt\n[…]\ndbackInline / ExpandableWrapper tests updated accordingly.\n\nTests: 8 new (MCPUIStringsContext). Full suite 642 passed / 1 skipped.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): D2 — MCPUIStringsProvider, i18n for the library's chrome…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-21T00:14:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "31f418f78eba3f1556052641fba10fb3a87da246",
          "body": "size-limit is a regression guardrail, not a hard cap. Post-D3 the\n\"Streaming renderer\" entry's graph equals the full renderer set and the\nfigure is dominated by lazy chunks (not eager load cost). 1 MB gives\ncomfortable headroom without nagging. size-limit does not gate CI.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(solid): raise Streaming renderer size-limit to 1 MB",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-20T23:54:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f4d9468eb4e6c04156fe4b10df7277aaa8875a90",
          "body": "… (Gap 1 parity)\n\nCloses Gap 1 of ROADMAP-opendata-macro-mcpui.md (sprint OpenData/macros).\n\nStreamingUIRenderer previously rendered each streamed component through an\ninline simplified renderer that only showed a type label + title — a\nstreamed table/chart/map did NOT render the real component.\n\nEa\n[…]\nidentical DOM for table /\nmetric / action-group, legacy placeholder markers gone). Full suite 634\npassed / 1 skipped / 0 failures.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): D3 — StreamingUIRenderer delegates to UIResourceRenderer…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-20T23:52:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a18fe63717d34edf54ad5755fac71350c7685a36",
          "body": "…ry + D6 fix + ConnectorDynamicResultV1\n\nEditorial pass after R1-R4 ratification:\n- Add Final Decision Summary at top: D1-D10 + R1-R4 binding, earlier\n  \"decision required\" notes historical, execution order fixed.\n- Fix D6 directly: adapters never in docs/briefs (was contradicted by A3).\n- Consolidate ConnectorDynamicResultV1 in R1: final type with\n  schemaVersion (R2) + queryHash (A1) + calc rule.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(roadmap): finalize OpenData/macro roadmap — Final Decision Summa…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-20T23:31:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5c0d0ab35660e1ad91036d7986a3bc09e2df7553",
          "body": "Two tag pushes in quick succession used to race : the second workflow\nwould hit E403 trying to publish a package the first workflow had\nalready pushed, then `pnpm -r publish` would propagate the failure and\nbail out before publishing its own package.\n\nConcrete: pushing v5.0.6 (spec) then v6.5.0 (sol\n[…]\nr-package loop that\nchecks npm before publishing and skips already-published versions.\nIdempotent — safe to re-run, race-tolerant.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci(publish): skip already-published packages instead of bailing on E403",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-09T22:46:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a85c34dcf53654a7a82a943bb32085d2b4b2b605",
          "body": "…ervability\n\nCloses Demande 1.3 + Demande 2 of deposium's `BRIEF-MCPUI-2026-05-10.md`\n(rescue-duplicate root-cause investigation).\n\nAdds:\n\n1. `getUiResourceStableKey(content): string` — passthrough when\n   `content.id` is non-empty, else FNV-1a 32-bit hash of normalized\n   content (id + metadata.gen\n[…]\nhe clock.\n\nTests: 34 new (15 stable-key + 9 dup-registry + 10 identity-renderer).\nFull suite: 627 passed / 1 skipped / 0 failures.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): v6.5.0 — identity stability + opt-in duplicate-mount obs…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-09T22:40:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3c4fd36b81f0f643427c96e2f59284f4d695cd9b",
          "body": "Closes Demande 1.1 + 1.2 of deposium's `BRIEF-MCPUI-2026-05-10.md`.\n\nDocumentation-only patch — no schema changes. README now formalizes\nthe identity contract for runtime UILayout/UIComponent payloads\n(distinct from the registry-side Component definitions documented\npreviously):\n\n- `id` is obligatoi\n[…]\n6.5.0`.\n\nCodifies behavior that was previously implicit so host apps and\nproducers can rely on it without reading renderer source.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(spec): v5.0.6 — document Runtime Payload Identity contract",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-09T22:40:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "59928f317141293f981340e13dcace6f908277ce",
          "body": "Both Export menus shipped by the renderers (table : Copy TSV / Download\nCSV / Download JSON ; graph : Download PNG / Mermaid / JSON) now mount\nvia solid-js/web Portal on document.body instead of an in-tree\nposition: absolute sibling.\n\nEliminates two long-standing pain points :\n\n  1. overflow: hidden\n[…]\nboth root and\n/components subpaths for consumer reuse. 7 tests added.\n\nCloses axe 3 of SOLID-MCPUI-IMPROVEMENT-AXES-2026-05-03.md.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): v6.4.0 — Portal-mounted Export dropdowns (axe 3)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-03T02:21:47Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b65278dcfec1ec7a757af524c413cc7e4fa41436",
          "body": "Forwards the v6.3.0 ExpandableWrapper.toolbarVariant prop from the\ntop-level UIResourceRendererProps down through ComponentRenderer to\nall 8 internal renderers wrapped in ExpandableWrapper : table, chart\n(Chart.js path), graph, map, video, carousel, image-gallery, code.\n\nPre-v6.3.1 consumers had to \n[…]\nsurface needs always-visible\naffordances on touch + non-hovering UX.\n\nAdditive prop, default unchanged. 3 tests in fluidity suite.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): v6.3.1 — forward toolbarVariant from <UIResourceRenderer>",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-03T01:49:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "95cd0826500a42c5bf3f108b72ddefc7ec0f0f1d",
          "body": "…arVariant (axes 1+4)\n\nTwo consumer-friendly props from deposium_solid handoff\nSOLID-MCPUI-IMPROVEMENT-AXES-2026-05-03.md.\n\n═══ TableParams.maxHeight (axe 1) ═══\n\nOpt-out for the lib's hardcoded inline-mode max-height cap (400px,\n500px when virtualizing, applied when > 8 rows). Forced internal\nscrol\n[…]\n\n\n═══ Out of scope ═══\n\nAxe 2 (dark-theme native CSS vars) → v7.0.0 with design brief.\nAxe 3 (Portal dropdowns, 3 sites) → v6.4.0.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): v6.3.0 — TableParams.maxHeight + ExpandableWrapper toolb…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-03T01:04:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "084ed544d8a9372b45b574a49ccc1e06cb624b4f",
          "body": "…sium handoff)\n\nAdds opt-out for the lib's hardcoded inline-mode max-height cap on\ntables (400px / 500px when > 8 rows). Driven by deposium_solid's\nSOLID-MCPUI-IMPROVEMENT-AXES-2026-05-03.md handoff.\n\n- maxHeight?: 'auto' | number | string\n  - 'auto' → no cap, parent container handles overflow\n  - n\n[…]\n- undefined → existing behavior unchanged (400/500px caps)\n\nRenderer support ships in @seed-ship/mcp-ui-solid@6.3.0. Non-breaking.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(spec): v5.0.5 — TableComponentParamsSchema.maxHeight (axe 1 depo…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-03T00:48:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dda743f4be66787542fbffd555a731924dee5d61",
          "body": "…lery + Code search & download)\n\nCompletes the v6.1.0 fluidity audit across 5 more renderers, same UX\npattern: ExpandableWrapper for fullscreen, copy data via the modal-\nheader copy button, responsive expanded mode, format-specific export.\n\n═══ Fullscreen + copy on 4 renderers ═══\n\n- MapRenderer: wr\n[…]\nZIP-all download (would add JSZip dep)\n- Map PNG snapshot export (would add leaflet-image dep)\n- ImageGallery / Map / Video search\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): v6.2.0 — cross-renderer fluidity (Map/Video/Carousel/Gal…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-03T00:00:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c5a9573b7a9662b830a4a8279929140ec24784ae",
          "body": "…port defaults\n\nUX consistency / fluidity release. Three small but visible behaviors\nthat were inconsistent across renderers.\n\n═══ Fixed — fullscreen sizing for chart, table, graph ═══\n\nWhen the user clicked expand and went fullscreen, the visualization\nstayed at its inline default size (250px chart\n[…]\napped in ExpandableWrapper (no fullscreen, no copy/export) ;\nImageGallery / Video / Carousel have no integrated copy/export menus.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): v6.1.0 — fullscreen responsive + table search + chart ex…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-02T23:37:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "cfd028822777918c89f695a626109a9fc6a7c381",
          "body": "…port menu\n\nMajor version marker — no API breakage. Bumps to v6 to signal the\nsubstantial wave shipped over the 5.x line: B.1 closure (14/17 types\nspec-driven), B.5 telemetry sink, citation chips in tables, and now\nthis graph primitive. Existing consumers can upgrade 5.x → 6.0.0 with\nZERO migration \n[…]\nck message on\n'graph' payloads ; everything else renders identically. Apps\ninstalling @antv/g6 ^5 get graph rendering immediately.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): v6.0.0 — 'graph' ComponentType + lazy @antv/g6 + copy/ex…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-02T19:28:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7887105bdea756569a25d268d0ec62416e267833",
          "body": "… + 'graph' ComponentType\n\nAdds a generic node-link visualization primitive to the spec.\nDomain-neutral by design — `weight` on both nodes and edges is a\ngeneric ranking signal whose semantics (rerank score / co-retrieval\ncount / criticality / token contribution / frequency / etc.) are\nopaque to the\n[…]\nnstead of a crash.\n\nTests: +26 in schemas-graph-v5.0.4.test.ts. Total spec: 77/77 pass.\nNon-breaking — 'graph' is purely additive.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(spec): v5.0.4 — Graph schemas (Node/Edge with weight, 7 layouts)…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-02T19:28:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a074addc22bd8b9e11d2895fb6898856f2d27df2",
          "body": "Implements docs/briefs/BRIEF-citations-in-table-cells.md (deposium\nbrief). Lifts chip-rendering responsibility out of consumer apps so any\nhost stops mirroring chip HTML byte-for-byte.\n\nPublic API:\n- TableComponentParams.citationMap (optional, JSON-serializable)\n  Record<string|number, { page, file?\n[…]\nide\nrenderCitationChipHTML + replaceCitationsInCellHTML helpers) and\nemit raw `[📄 CITATION N]` markers with citationMap in params.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): v5.7.0 — citation chips inside TableRenderer cells (opt-in)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-02T17:55:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f19a6c95c6eca8cdf0fc6882209f3fbc0f2c1814",
          "body": "…lid@5.7.0)\n\nAdds the data-only half of the citation-chips-in-table-cells feature\nspec'd in mcp-ui-solid/docs/briefs/BRIEF-citations-in-table-cells.md.\n\n- CitationEntrySchema { page (number|string), file?, file_id? }\n- TableComponentParamsSchema.citationMap (optional record<string,\n  CitationEntry>)\n[…]\nr function override\n(which can't be JSON-serialized) stay in mcp-ui-solid. Tests: +3.\nTotal spec: 51/51 pass. Backward compatible.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(spec): v5.0.3 — CitationEntry + TableParams.citationMap (prep so…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-05-02T17:36:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "16256fc23366b924ef0511e5e1a8300be7e1d65a",
          "body": "Two combined items from deposium audit MCP-UI-AUDIT-2026-04-26.md §M.\n\n═══ B.1 final — map + form migrated to spec-driven Zod ═══\n\nAfter spec@5.0.2 relaxed MapComponentParamsSchema (LatLngPoint union)\nand FormFieldSchema.name regex (per audit §L answers), both types\njoined SPEC_VALIDATORS dispatch i\n[…]\n.6.4).\n3. Aggregate dashboard: P50/P95 render durations per ComponentType,\n   top validation:failed codes, action dispatch counts.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): v5.6.0 — close B.1 (map+form Zod) + ship B.5 telemetry sink",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-27T15:18:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8bbb4a1345347f44102d2e38da4cf772009ed9b2",
          "body": "Driven by deposium audit answers (MCP-UI-AUDIT-2026-04-26.md §M.2 + M.3)\nafter exhaustive grep on production payloads.\n\nMapComponentParamsSchema.center + MapMarkerSchema.position now accept\nEITHER `[lat, lng]` tuple OR `{lat, lng}` object — mirrors Leaflet's\nown polymorphic LatLngLiteral ∪ LatLngTup\n[…]\nss.\n\nNon-breaking. Unblocks `mcp-ui-solid@5.6.0` to migrate map + form to\nspec-driven Zod (close out B.1 to 14/17 ComponentTypes).\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(spec): v5.0.2 — relax map.center + form field.name (B.1 final prep)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-27T14:49:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d0be65d23b65667a04b32edd8413d2cb386bb00d",
          "body": "setup-node@v5 auto-enables `package-manager-cache` which probes the\nruntime for the `pnpm` executable BEFORE the rest of the workflow runs.\nWith the prior order (Node setup → pnpm setup), it failed with\n\"Unable to locate executable file: pnpm\" on the bump commit (a6e6ba7).\n\nMoved `pnpm/action-setup@v5` ahead of `actions/setup-node@v5` in all 3\nworkflows. Documented inline.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(ci): swap pnpm + Node setup order for setup-node@v5 compat",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-27T13:50:17Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a6e6ba7a2d76c0644d59348d819d9ec68b9266c1",
          "body": "GitHub announced that Node 20 actions will be force-switched to Node 24\non June 2, 2026 (removal Sept 16, 2026). Bumping all 4 actions in 3\nworkflows to their v5 release lines:\n\n- actions/checkout@v4    → v5\n- actions/setup-node@v4  → v5\n- actions/cache@v4       → v5\n- pnpm/action-setup@v4   → v5\n\nW\n[…]\nase@v1 in release.yml left untouched (not in\nthe deprecation list).\n\nNo code change. CI run on this commit will validate the bump.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(ci): bump GitHub Actions v4 → v5 (Node 20 → Node 24 deprecation)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-27T13:44:48Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2ba7edfe12128f5c80009787d9f574e871de2dc1",
          "body": "SECURITY FIX (validateIframeDomain): the predicate at validation.ts:572\nwas `allowed === 'localhost'` — checking the WHITELIST ENTRY (the literal\nstring) instead of the URL's hostname. Once 'localhost' was added to\nDEFAULT_IFRAME_DOMAINS (present since the beginning), the iframe domain\nwhitelist was\n[…]\n-evil.com (typo-squat) and continued acceptance of whitelist +\nsubdomains + localhost + 127.0.0.x. Total suite: 530/530 (was 523).\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(solid)!: v5.5.1 — iframe whitelist security bug + 2 test cosmetics",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-27T13:40:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e474f7141b5b580f87c3531c46d7d1f045df2de5",
          "body": "Refactor `services/validation.ts` to consume Zod schemas from\n`@seed-ship/mcp-ui-spec` (added v5.0.1) for 12 of the 17 ComponentTypes\n(metric, text, iframe, image, link, action, video, carousel,\nimage-gallery, action-group, code, artifact). The remaining 5\n(chart, table, form, map, modal) stay imper\n[…]\nnd↔frontend via\n`@seed-ship/mcp-ui-spec` (cf. audit §J.2).\n\nNon-breaking. New peer dep: @seed-ship/mcp-ui-spec ^5.0.1 (workspace).\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): v5.5.0 — validation.ts → spec-driven Zod (B.1 PR2)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-27T07:48:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "91824e59219a7b601dab66fd1430096cc43c0480",
          "body": "Adds Zod schemas + inferred types for the 9 ComponentTypes that didn't\nhave one (chart, table, metric, text, iframe, image, link, carousel,\nartifact). The 8 existing schemas (action, action-group, video,\nimage-gallery, form, modal, code, map) are untouched.\n\nMirrors the runtime shapes declared in `m\n[…]\nads at the source before emitting `done` events\n(cf. MCP-UI-AUDIT-2026-04-26.md §J.2).\n\nNon-breaking. No existing schema modified.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(spec): v5.0.1 — 9 primitive component params Zod schemas (B.1 PR1)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-27T07:15:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0a9edf4911c9e1a0caeed0cfd5da1f76cd65332a",
          "body": "Combo non-breaking from deposium audit MCP-UI-AUDIT-2026-04-26.md.\n\nB.2 Runtime debug mode\n- setDebugMode() / isDebugEnabled() exported\n- 4 activation sources: NODE_ENV, MCP_UI_DEBUG env, globalThis flag,\n  programmatic override\n- Lets prod sessions enable verbose logs without recompile (Docker dev\n\n[…]\n errors still go through\n  GenerativeUIErrorBoundary's fallback\n\nTests: 505/505 (vs 484 on v5.3.1) — +21 new tests across 3 files.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): v5.4.0 — observability + UX combo (B.2 + B.3 + B.4)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-26T16:39:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9bd6372d5b8f0e1545b6cf2b36fe4b1ac10e1195",
          "body": "Resolves the postcss XSS-via-unescaped-</style> alert. postcss is a\ntransitive dep of vite/vitest (dev only), so this is a lockfile-only\nchange — no published package version bump required.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(ci): pin postcss >=8.5.10 via pnpm override (Dependabot #35)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-24T22:23:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "921af83af6beeb46b7789a934825c0ba39c05ec7",
          "body": "Resolves 4 open advisories (#31-#34): SAFE_FOR_TEMPLATES bypass in\nRETURN_DOM mode, FORBID_TAGS bypass via function-form ADD_TAGS,\nprototype-pollution → XSS via CUSTOM_ELEMENT_HANDLING fallback, and\nADD_TAGS short-circuit FORBID_TAGS bypass. All fixed in 3.4.0.\n\nNo API surface change; 484/484 tests pass.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(solid): v5.3.1 — bump dompurify to ^3.4.1 (Dependabot security)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-24T22:19:28Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2ed83a9cd12577e647ce93de6d31b80903a4a8ab",
          "body": "… useServerCapabilities + recipes)\n\nCloses the items in mcp-ui's court per the mcp-ui ↔ deposium_MCPs alignment\ndoc (2026-04-22). All additions are optional and additive; v5.2.0 consumers\nupgrade with zero code changes.\n\nA. <ElicitationForm> — schema-driven renderer wrapping <ChatPrompt> +\n   elicit\n[…]\nsium POST /api/feedback shape as a worked example.\n\nTests: 484/484 passing (+17 new — 7 ElicitationForm + 10 server-capabilities).\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): v5.3.0 — alignment with deposium_MCPs (ElicitationForm +…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-22T17:39:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "97b86195e91d1f1359b65392986c75e59075d85b",
          "body": "…icitation\n\nScope consolidated from v5.1.0 consensus carry-forward (D1 + D2) plus two\nitems arising from the MCP SDK audit 2026-04-14 (D5, D6).\n\nD1 — createScratchpadStore factory\n  - createScratchpadStore() returns isolated ScratchpadStoreHandle\n  - ScratchpadStoreProvider + ScratchpadStoreContext \n[…]\n(7)\n  - services/chat-bus.test.ts — 8 new elicitation tests\n\nDesign doc: docs/2026/r&d/mcpui-v5.2.0-scope.md in the Deposium repo.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): v5.2.0 — D1/D2 carry-forward + D5 FeedbackInline + D6 el…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-21T23:36:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "76f7fb883fcd21b8a98e192a8bf9c8a78943356e",
          "body": "D4 — custom choice rendering (additive, non-breaking):\n- ChoicePromptConfig.optionRenderer?: (option, index) => JSX.Element\n  render prop for custom option bodies. mcp-ui still wraps the returned\n  JSX in the <button> with onClick handler and focus handling.\n- ChoicePromptConfig.buttonClass? + conta\n[…]\ne-entrance + abort (D2 + D3 code)\n- correlationId native in ChatPromptConfig → ChatPromptResponse\n- progress_update SSE event type\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): v5.1.0 — D4 optionRenderer + D3 AbortSignal contract docs",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-14T18:47:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a93692141c1d7400db22184ad4b047a56c4dc95f",
          "body": "All three packages bumped in lockstep:\n- @seed-ship/mcp-ui-solid 4.3.9 → 5.0.0\n- @seed-ship/mcp-ui-spec 3.2.0 → 5.0.0\n- @seed-ship/mcp-ui-cli 3.0.0 → 5.0.0\n\nBreaking:\n- Remove ClarificationEvent.options[].file_id from the TypeScript type\n  (deprecated in v4.3.9, removed as announced). clarificationT\n[…]\nuto-reject vs FIFO)\n- ChatPrompt AbortSignal wiring\n- ChoicePromptConfig.optionRenderer slot\n\nTests: 433 passing (no regressions).\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): v5.0.0 — synchronized major + docs consolidation",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-14T17:57:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ae6b9b0ab182c9433538a5213b603f28cfc5eb12",
          "body": "Additive, non-breaking except retrait code mort 'select' prompt type.\n\nTypes (chat-bus.ts):\n- G1: ChoicePromptConfig.options[].metadata? (free-form, opaque)\n- G3: ClarificationEvent.options[].metadata? + type?, file_id deprecated\n- G5: ChatPromptResponse.dismissed JSDoc (X/Cancel vs explicit vs abor\n[…]\nackfill for 4.3.6, 4.3.7, 4.3.8 (previously missing)\n\nTests: +10 (6 clarificationToPromptConfig + 4 createMockChatBus) = 433 pass.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): v4.3.9 — Sprint 52 multi-agent primitives (G1-G11)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-14T17:33:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4fe6163193d2d54ecad8bb534cc3ffcdd301cab1",
          "body": "Matched search terms highlighted with bg-yellow-200 / dark:bg-[#222F49]\nacross all visible cells. highlightQuery helper skips HTML tag content.\nFullscreen: removed h-full on table wrapper so it shrinks to content,\neliminating the phantom scrollbar when rows don't fill viewport.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): v4.3.8 — search highlight + fullscreen height fix",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-12T06:22:13Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a4419f225b9b43c44243a6ccedd868a7f27c744d",
          "body": "Replace progressive \"show more\" with unified Prev/Next pagination.\nFullscreen shows page size selector (10/30/60/100/All). Table fills\nviewport in fullscreen (calc(100vh - 180px)). Header bg-gray-100\n(was bg-gray-50) for better contrast in chat view.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): v4.3.7 — Prev/Next pagination + page size selector",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-11T21:01:50Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a81333fc0edf9e751066b649ecf80ecdb84a034e",
          "body": "Sticky thead bg changed from bg-gray-900/50 (translucent) to\nbg-gray-900 (opaque) so header is readable over chat bubbles.\nSearch input capped at max-w-xs min-w-[200px] instead of w-full.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(solid): v4.3.6 — opaque sticky header + compact search input",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-11T20:46:59Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9c19169fc21e153b74f70c2ae072a8246dd5ee7e",
          "body": "Table scroll container now bounded (400px chat, 70vh fullscreen) when\nrows > 8, making sticky thead work. Default copy/export changed from\nTSV to CSV. TSV removed from default export formats (still available\nif server explicitly sets formats: ['tsv']).\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): v4.3.5 — sticky table header + default export CSV over TSV",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-11T20:29:47Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "fc5dd110e64a35a4a1fe40cdcf106ce4c1cd060e",
          "body": "…een)\n\nExpandableWrapper provides isExpanded via SolidJS context. TableRenderer\nuses it to adapt pageSize: compact (min 10) in chat view, full pageSize\nin expanded view. Zero server changes needed. useExpanded hook exported.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): v4.3.4 — context-aware table pagination (chat vs fullscr…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-11T20:23:27Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f186444ca2af45bb8de9c4f91721869773e8e539",
          "body": "Client-side search input above tables. Filters all columns in real-time\nwith accent-insensitive matching, 200ms debounce, and clear button.\nPagination applies after filtering. Auto-enabled when rows > 10.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): v4.3.3 — table search filter (searchable)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-11T20:19:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "fb2c187d3b12ddd0fa880291bb20cbbbe308d503",
          "body": "Adds progressive \"show more\" pagination mode to TableRenderer.\nWhen showAllLabel is set, table shows first pageSize rows with\nan append button instead of Prev/Next paged navigation. Sort\nresets to first batch. Backward-compatible with existing paged mode.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): v4.3.2 — progressive table pagination (showAllLabel)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-11T19:49:09Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "634e99dbf6605e07c02c3f93eeac10e38a086e05",
          "body": "Collapsible debugTrace panel under form sections showing per-field\nprefill/source/muted state, submitted values, auto-submit decision\nreasoning, optional server _debug data, and raw SSE payload viewer.\nActivated via debugTrace prop on ScratchpadPanel.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): v4.3.1 — debug trace mode for forms & PPR",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-11T14:41:51Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2016c99f06da9a6facdeed8b50b61b6128dc82a4",
          "body": "P1: prefillMode \"resolve\" for autocomplete (client-side name→code)\nP2: smart tag display (label not code) for select/autocomplete\nP3: prefill confidence summary (\"N champs pré-remplis sur M\")\nP4: auto-submit toast mode (compact view when all fields prefilled)\nP5: valueFormat regex validation with valueFormatHint\nP6: autocomplete always submits valueField (blur auto-resolve)\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(spec,solid): v4.3.0 — prefill enhancements Phase B (P1-P6)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-11T12:11:44Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3beaafd122ef1a6737a3e8e119049a85410a1059",
          "body": "Ensures dist contains prefill support (v4.2.1 dist was stale).\nAdded changelog entry and README section for prefilled forms feature.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): v4.2.2 — prefilled forms changelog + README + rebuild",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-11T11:12:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "707485a1362dbc8cbbd5a244c61d1ddafa2384f1",
          "body": "EmbeddedFormSection (scratchpad forms) was initializing formData as {}\nignoring field.prefill values. Now initializes with prefill, re-applies\non streaming updates, and supports autoSubmitDelay countdown.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(solid): v4.2.1 — prefill initialization in EmbeddedFormSection",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-11T04:35:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "884773d6a13d404d32b5e3f2306e31d6b1a33d6c",
          "body": "Add prefill, displayHint, source, muted fields to FormFieldSchema and\nautoSubmitDelay to FormComponentParams. FormFieldRenderer shows source\nbadges, muted styling with focus-to-active, and displayHint captions.\nFormRenderer initializes with prefill values and supports auto-submit\ncountdown when all required fields are prefilled.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(spec,solid): v4.2.0 — prefilled forms with source indicators",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-11T03:44:51Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a5e2d2964b36425703d9e340a56e0e37d4402035",
          "body": "P1 — Agent visible:\n- AgentCard section: avatar + name + status badge + capabilities + current step\n- AgentStatusBadge: auto-detected in scratchpad header from agent_card sections\n- Standardized [MCP-UI:Component] logging with agentId/stepId\n\nP2 — HITL bidirectional:\n- ActionSection enriched: title \n[…]\nadded/removed/changed entries with color coding + stats\n\n23 scratchpad section types total. on:click for all interactive elements.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): v4.1.0 — AITL agent toolkit (P1-P5)",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-07T05:44:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6311e1ebef7b2f641de298459c34c93beca548c0",
          "body": "…Click\n\nRoot cause: SolidJS onClick compiles to $$click (event delegation) which\nrequires delegateEvents() at the document level. When the component is\nimported as a library in SolidStart (via \"solid\" condition), the delegation\nmay not be initialized in the consuming app's context.\n\nFix: use on:clic\n[…]\n Before: _el$103.$$click = () => handleSort(column.key)\n  After:  addEventListener(_el$103, \"click\", () => handleSort(column.key))\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(solid): v4.0.6 — TableRenderer sort click: on:click instead of on…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-07T03:46:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3ba67b38db776d947c0a3c129da5188b6fb3d715",
          "body": "Bug 1 (pagination freeze): virtualization was conflicting with client\npagination — now auto-disabled when pagination is active.\n\nBug 2 (tri non actif): added full client-side sorting to TableRenderer.\nClick header: asc → desc → reset. Type-aware (auto-detects number\ncolumns). Sort indicators (↕/↑/↓)\n[…]\nt-side\ndata — no need for server to send sortable: true.\n\nSort resets pagination to page 0. Pagination now slices from sortedRows.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(solid): v4.0.5 — TableRenderer sortable columns + pagination fix",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-07T03:35:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f2f68e929aafd34d14073a4e878af9bf9938cedc",
          "body": "DataPreviewSection + TableRenderer both auto-paginate when rows > pageSize.\nServer sends rows[] as before — zero server changes needed.\n\n- pageSize=0 disables pagination\n- initialPage prop (0-indexed)\n- showPageInfo: \"Showing X–Y of Z\" counter (default: true)\n- onPageChange callback for server-side \n[…]\n\n- Export CSV/JSON always exports ALL rows (not just current page)\n- Export tooltip shows \"(N rows)\" count\n- Sort resets page to 0\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): v4.0.4 — client-side auto-pagination for tables",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-07T02:03:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "af83b51b4c878de32b235745d781659a73f00f05",
          "body": "Click column header to cycle: asc → desc → reset.\nType-aware sorting: number (numeric), date (chronological),\nstring (locale-sensitive with localeCompare fr).\nSort indicator arrows on headers (↕ neutral, ↑ asc, ↓ desc).\nActive sort column highlighted in blue. Exports respect sort order.\nPage resets to 1 on sort change.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(solid): v4.0.3 — sortable columns in DataPreviewSection",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-07T01:24:55Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6caff29f473d564390cb9219fd5248343b395de9",
          "body": "SSE transport may deliver section content as JSON strings instead of\nparsed objects. Added parseContent() helper that auto-parses strings\nfor all 17 section types (data, filter, action, steps, form,\nunderstanding, feedback, prompt, stepper, error, source_card, diff,\nverified_text, data_preview, map, chart). Only 'message' is excluded\n(uses String() directly).\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(solid): v4.0.2 — parseContent() on all scratchpad sections",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-07T00:30:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8a9c04f7465b6f81722e2bd27e114945142283bf",
          "body": "…mat tolerance\n\nFix 1 (CRITICAL): DataPreviewSection now uses resolveContent() with defensive\nguards — handles store proxy content, wrapped content, and missing columns/rows.\nShows warning fallback instead of crashing to JSON.stringify.\n\nFix 2 (DX): ActionSection accepts both content: [...] and content: { actions: [...] }\nformats. Logs a console.warn when the wrapped format is used.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(solid): v4.0.1 — DataPreviewSection rendering + ActionSection for…",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-07T00:17:58Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "920fe1dc67e25e943217855f3d6e528b62e483eb",
          "body": "Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: update lockfile for protomaps-leaflet peer dep",
          "author_name": "Nicolas Geysse",
          "author_login": "nicolas-geysse",
          "committed_at": "2026-04-06T23:58:01Z",
          "body_truncated": false,
          "is_coding_agent": true
        }
      ],
      "releases_count": 100,
      "commits_last_year": 250,
      "latest_release_at": "2026-07-03T20:12:25Z",
      "latest_release_tag": "v6.16.0",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 17,
      "days_since_latest_release": 21,
      "mean_days_between_releases": 3.8
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": false,
      "has_contributing": true,
      "health_percentage": 50,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "@seed-ship/mcp-ui-cli",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "mcp",
            "ui",
            "cli",
            "validation",
            "codegen",
            "component-registry"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@seed-ship/mcp-ui-cli",
          "is_deprecated": false,
          "latest_version": "5.0.0",
          "repository_url": "https://github.com/theseedship/mcp-ui",
          "versions_count": 14,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 411,
          "first_published_at": "2025-11-16T05:05:34.260000Z",
          "latest_published_at": "2026-04-14T17:58:46.925000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 101
        },
        {
          "name": "@seed-ship/mcp-ui-spec",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "mcp",
            "ui",
            "specification",
            "json-schema",
            "component-registry"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@seed-ship/mcp-ui-spec",
          "is_deprecated": false,
          "latest_version": "5.5.0",
          "repository_url": "https://github.com/theseedship/mcp-ui",
          "versions_count": 29,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 836,
          "first_published_at": "2025-11-16T05:05:31.685000Z",
          "latest_published_at": "2026-05-30T23:31:58.281000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 55
        },
        {
          "name": "@seed-ship/mcp-ui-solid",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "mcp",
            "ui",
            "solidjs",
            "components",
            "streaming",
            "dashboard",
            "generative-ui"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@seed-ship/mcp-ui-solid",
          "is_deprecated": false,
          "latest_version": "6.16.0",
          "repository_url": "https://github.com/theseedship/mcp-ui",
          "versions_count": 135,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 924,
          "first_published_at": "2025-11-16T05:05:29.235000Z",
          "latest_published_at": "2026-07-03T20:13:29.721000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 21
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 1,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": null,
      "open_issues_and_prs": 1
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples",
        "recipes"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "mcp-ui-cli/tsconfig.json",
        "mcp-ui-solid/tsconfig.json",
        "mcp-ui-spec/tsconfig.json",
        "tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 81424,
      "source_files_sampled": 173,
      "oversized_source_files": 2,
      "agent_instruction_files": [
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 3127
    },
    "dependencies": {
      "manifests": [
        "mcp-ui-cli/package.json",
        "mcp-ui-solid/package.json",
        "mcp-ui-spec/package.json",
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 49,
        "malicious_count": 0,
        "assessed_package": "npm:@seed-ship/mcp-ui-cli@5.0.0",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "@seed-ship/mcp-ui-spec",
          "manifest": "mcp-ui-cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        },
        {
          "name": "ajv",
          "manifest": "mcp-ui-cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.18.0"
        },
        {
          "name": "chalk",
          "manifest": "mcp-ui-cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.3.0"
        },
        {
          "name": "commander",
          "manifest": "mcp-ui-cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^11.1.0"
        },
        {
          "name": "json-schema-to-typescript",
          "manifest": "mcp-ui-cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^15.0.4"
        },
        {
          "name": "ora",
          "manifest": "mcp-ui-cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^7.0.1"
        },
        {
          "name": "zod",
          "manifest": "mcp-ui-cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.22.4"
        },
        {
          "name": "@seed-ship/mcp-ui-spec",
          "manifest": "mcp-ui-solid/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:^5.3.0"
        },
        {
          "name": "@types/dompurify",
          "manifest": "mcp-ui-solid/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.0.5"
        },
        {
          "name": "dompurify",
          "manifest": "mcp-ui-solid/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.4.1"
        },
        {
          "name": "marked",
          "manifest": "mcp-ui-solid/package.json",
          "ecosystem": "npm",
          "version_constraint": "^16.3.0"
        },
        {
          "name": "zod",
          "manifest": "mcp-ui-solid/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.22.4"
        },
        {
          "name": "zod",
          "manifest": "mcp-ui-spec/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.22.4"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "@types/dompurify",
            "direct": true,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/dompurify",
            "direct": true,
            "version": "^3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": true,
            "version": "6.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": true,
            "version": "8.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": true,
            "version": "^8.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": true,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": true,
            "version": "5.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": true,
            "version": "^5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": true,
            "version": "11.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": true,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": true,
            "version": "^11.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "dompurify",
            "direct": true,
            "version": "3.4.11",
            "ecosystem": "npm"
          },
          {
            "name": "dompurify",
            "direct": true,
            "version": "^3.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-to-typescript",
            "direct": true,
            "version": "15.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-to-typescript",
            "direct": true,
            "version": "^15.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "marked",
            "direct": true,
            "version": "16.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "marked",
            "direct": true,
            "version": "^16.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "ora",
            "direct": true,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ora",
            "direct": true,
            "version": "^7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "zod",
            "direct": true,
            "version": "3.25.76",
            "ecosystem": "npm"
          },
          {
            "name": "zod",
            "direct": true,
            "version": "^3.22.4",
            "ecosystem": "npm"
          },
          {
            "name": "@acemir/cssom",
            "direct": false,
            "version": "0.9.23",
            "ecosystem": "npm"
          },
          {
            "name": "@antv/algorithm",
            "direct": false,
            "version": "0.1.26",
            "ecosystem": "npm"
          },
          {
            "name": "@antv/component",
            "direct": false,
            "version": "2.1.11",
            "ecosystem": "npm"
          },
          {
            "name": "@antv/event-emitter",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@antv/expr",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@antv/g",
            "direct": false,
            "version": "6.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@antv/g-canvas",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@antv/g-lite",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "@antv/g-math",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@antv/g-plugin-dragndrop",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@antv/g6",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@antv/graphlib",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@antv/hierarchy",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "@antv/layout",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@antv/scale",
            "direct": false,
            "version": "0.4.16",
            "ecosystem": "npm"
          },
          {
            "name": "@antv/util",
            "direct": false,
            "version": "2.0.17",
            "ecosystem": "npm"
          },
          {
            "name": "@antv/util",
            "direct": false,
            "version": "3.3.11",
            "ecosystem": "npm"
          },
          {
            "name": "@antv/vendor",
            "direct": false,
            "version": "1.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "@apidevtools/json-schema-ref-parser",
            "direct": false,
            "version": "11.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "@asamuzakjp/css-color",
            "direct": false,
            "version": "4.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@asamuzakjp/dom-selector",
            "direct": false,
            "version": "6.7.4",
            "ecosystem": "npm"
          },
          {
            "name": "@asamuzakjp/nwsapi",
            "direct": false,
            "version": "2.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/compat-data",
            "direct": false,
            "version": "7.28.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/core",
            "direct": false,
            "version": "7.28.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/generator",
            "direct": false,
            "version": "7.28.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-compilation-targets",
            "direct": false,
            "version": "7.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-globals",
            "direct": false,
            "version": "7.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-imports",
            "direct": false,
            "version": "7.18.6",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-imports",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-module-transforms",
            "direct": false,
            "version": "7.28.3",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-plugin-utils",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.28.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-option",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helpers",
            "direct": false,
            "version": "7.28.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "7.28.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/plugin-syntax-jsx",
            "direct": false,
            "version": "7.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/runtime",
            "direct": false,
            "version": "7.28.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/template",
            "direct": false,
            "version": "7.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/traverse",
            "direct": false,
            "version": "7.28.5",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "7.28.5",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/color-helpers",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-calc",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-color-parser",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-parser-algorithms",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-syntax-patches-for-csstree",
            "direct": false,
            "version": "1.0.16",
            "ecosystem": "npm"
          },
          {
            "name": "@csstools/css-tokenizer",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@duckdb/duckdb-wasm",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/core",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/runtime",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/wasi-threads",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/aix-ppc64",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm64",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-x64",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-arm64",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-x64",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-arm64",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-x64",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm64",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ia32",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-loong64",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-mips64el",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ppc64",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-riscv64",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-s390x",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-x64",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-arm64",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-x64",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-arm64",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-x64",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openharmony-arm64",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/sunos-x64",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-arm64",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-ia32",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-x64",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/eslint-utils",
            "direct": false,
            "version": "4.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/regexpp",
            "direct": false,
            "version": "4.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/eslintrc",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/js",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/config-array",
            "direct": false,
            "version": "0.13.0",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/module-importer",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/object-schema",
            "direct": false,
            "version": "2.0.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": "@jsdevtools/ono",
            "direct": false,
            "version": "7.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@kurkle/color",
            "direct": false,
            "version": "0.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "@mapbox/point-geometry",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@mapbox/vector-tile",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/wasm-runtime",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.scandir",
            "direct": false,
            "version": "2.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.stat",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.walk",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "@oxc-project/types",
            "direct": false,
            "version": "0.133.0",
            "ecosystem": "npm"
          },
          {
            "name": "@polka/url",
            "direct": false,
            "version": "1.0.0-next.29",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-android-arm64",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-darwin-arm64",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-darwin-x64",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-freebsd-x64",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm64-gnu",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm64-musl",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-ppc64-gnu",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-s390x-gnu",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-x64-gnu",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-x64-musl",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-openharmony-arm64",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-wasm32-wasi",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-win32-arm64-msvc",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-win32-x64-msvc",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/pluginutils",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@size-limit/esbuild",
            "direct": false,
            "version": "12.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@size-limit/esbuild",
            "direct": false,
            "version": "^12.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@size-limit/esbuild-why",
            "direct": false,
            "version": "12.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@size-limit/esbuild-why",
            "direct": false,
            "version": "^12.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@size-limit/file",
            "direct": false,
            "version": "12.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@size-limit/preset-small-lib",
            "direct": false,
            "version": "12.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@size-limit/preset-small-lib",
            "direct": false,
            "version": "^12.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@solidjs/testing-library",
            "direct": false,
            "version": "0.8.10",
            "ecosystem": "npm"
          },
          {
            "name": "@solidjs/testing-library",
            "direct": false,
            "version": "^0.8.5",
            "ecosystem": "npm"
          },
          {
            "name": "@standard-schema/spec",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@swc/helpers",
            "direct": false,
            "version": "0.5.18",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/solid-virtual",
            "direct": false,
            "version": "3.13.18",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/solid-virtual",
            "direct": false,
            "version": "^3.13.18",
            "ecosystem": "npm"
          },
          {
            "name": "@tanstack/virtual-core",
            "direct": false,
            "version": "3.13.18",
            "ecosystem": "npm"
          },
          {
            "name": "@testing-library/dom",
            "direct": false,
            "version": "10.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tybys/wasm-util",
            "direct": false,
            "version": "0.10.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/aria-query",
            "direct": false,
            "version": "5.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/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/chai",
            "direct": false,
            "version": "5.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/command-line-args",
            "direct": false,
            "version": "5.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/command-line-usage",
            "direct": false,
            "version": "5.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/css-font-loading-module",
            "direct": false,
            "version": "0.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-array",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-color",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-dispatch",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-dsv",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-ease",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-fetch",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-force",
            "direct": false,
            "version": "3.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-format",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-geo",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-hierarchy",
            "direct": false,
            "version": "3.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-interpolate",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-path",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-quadtree",
            "direct": false,
            "version": "3.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-random",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-scale",
            "direct": false,
            "version": "4.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-scale-chromatic",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-shape",
            "direct": false,
            "version": "3.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-time",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/d3-timer",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/deep-eql",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/geojson",
            "direct": false,
            "version": "7946.0.16",
            "ecosystem": "npm"
          },
          {
            "name": "@types/json-schema",
            "direct": false,
            "version": "7.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "@types/leaflet",
            "direct": false,
            "version": "1.9.21",
            "ecosystem": "npm"
          },
          {
            "name": "@types/leaflet",
            "direct": false,
            "version": "^1.9.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/leaflet.markercluster",
            "direct": false,
            "version": "1.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/leaflet.markercluster",
            "direct": false,
            "version": "^1.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/lodash",
            "direct": false,
            "version": "4.17.20",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "20.19.25",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "22.19.11",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "^22.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/rbush",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/semver",
            "direct": false,
            "version": "7.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/trusted-types",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/eslint-plugin",
            "direct": false,
            "version": "6.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/eslint-plugin",
            "direct": false,
            "version": "7.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/eslint-plugin",
            "direct": false,
            "version": "^6.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/parser",
            "direct": false,
            "version": "6.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/parser",
            "direct": false,
            "version": "7.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/parser",
            "direct": false,
            "version": "^6.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/scope-manager",
            "direct": false,
            "version": "6.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/scope-manager",
            "direct": false,
            "version": "7.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/type-utils",
            "direct": false,
            "version": "6.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/type-utils",
            "direct": false,
            "version": "7.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/types",
            "direct": false,
            "version": "6.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/types",
            "direct": false,
            "version": "7.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/typescript-estree",
            "direct": false,
            "version": "6.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/typescript-estree",
            "direct": false,
            "version": "7.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/utils",
            "direct": false,
            "version": "6.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/utils",
            "direct": false,
            "version": "7.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/visitor-keys",
            "direct": false,
            "version": "6.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "@typescript-eslint/visitor-keys",
            "direct": false,
            "version": "7.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "@ungap/structured-clone",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/expect",
            "direct": false,
            "version": "4.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/mocker",
            "direct": false,
            "version": "4.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/pretty-format",
            "direct": false,
            "version": "4.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/pretty-format",
            "direct": false,
            "version": "4.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/runner",
            "direct": false,
            "version": "4.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/snapshot",
            "direct": false,
            "version": "4.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/spy",
            "direct": false,
            "version": "4.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/ui",
            "direct": false,
            "version": "4.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/ui",
            "direct": false,
            "version": "^4.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/utils",
            "direct": false,
            "version": "4.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/utils",
            "direct": false,
            "version": "4.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-jsx",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "agent-base",
            "direct": false,
            "version": "7.1.4",
            "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": "apache-arrow",
            "direct": false,
            "version": "17.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "aria-query",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "array-back",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "array-back",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "array-union",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "assertion-error",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "babel-plugin-jsx-dom-expressions",
            "direct": false,
            "version": "0.40.3",
            "ecosystem": "npm"
          },
          {
            "name": "babel-preset-solid",
            "direct": false,
            "version": "1.9.10",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "base64-arraybuffer",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "base64-js",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "baseline-browser-mapping",
            "direct": false,
            "version": "2.8.28",
            "ecosystem": "npm"
          },
          {
            "name": "bidi-js",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "bl",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "5.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "4.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "bubblesets-js",
            "direct": false,
            "version": "2.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "buffer",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "bundle-name",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "bytes-iec",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "callsites",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-lite",
            "direct": false,
            "version": "1.0.30001754",
            "ecosystem": "npm"
          },
          {
            "name": "chai",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk-template",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "chart.js",
            "direct": false,
            "version": "4.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "chart.js",
            "direct": false,
            "version": "^4.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "cli-cursor",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cli-spinners",
            "direct": false,
            "version": "2.9.2",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "8.0.1",
            "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": "color-string",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "color2k",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "comlink",
            "direct": false,
            "version": "4.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "command-line-args",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "command-line-usage",
            "direct": false,
            "version": "7.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "css-line-break",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "css-tree",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "cssstyle",
            "direct": false,
            "version": "5.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "csstype",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "d3-array",
            "direct": false,
            "version": "3.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "d3-binarytree",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "d3-color",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-dispatch",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "d3-dsv",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "d3-ease",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "d3-fetch",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "d3-force",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-force-3d",
            "direct": false,
            "version": "3.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "d3-format",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "d3-geo",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "d3-geo-projection",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-hierarchy",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "d3-interpolate",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "d3-octree",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-path",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-quadtree",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "d3-random",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "d3-regression",
            "direct": false,
            "version": "1.3.10",
            "ecosystem": "npm"
          },
          {
            "name": "d3-scale",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "d3-scale-chromatic",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-shape",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-time",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-time-format",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "d3-timer",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "dagre",
            "direct": false,
            "version": "0.8.5",
            "ecosystem": "npm"
          },
          {
            "name": "data-urls",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "decimal.js",
            "direct": false,
            "version": "10.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "deep-is",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "default-browser",
            "direct": false,
            "version": "5.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "default-browser-id",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "define-lazy-prop",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "define-lazy-prop",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "dequal",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "detect-libc",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "dir-glob",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "doctrine",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "dom-accessibility-api",
            "direct": false,
            "version": "0.5.16",
            "ecosystem": "npm"
          },
          {
            "name": "eastasianwidth",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "electron-to-chromium",
            "direct": false,
            "version": "1.5.254",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "10.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-module-lexer",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.27.2",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild-visualizer",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint",
            "direct": false,
            "version": "8.57.1",
            "ecosystem": "npm"
          },
          {
            "name": "eslint",
            "direct": false,
            "version": "^8.56.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-scope",
            "direct": false,
            "version": "7.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "3.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "espree",
            "direct": false,
            "version": "9.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "esquery",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "esrecurse",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estree-walker",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "esutils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "eventemitter3",
            "direct": false,
            "version": "5.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "expect-type",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-glob",
            "direct": false,
            "version": "3.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-json-stable-stringify",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-levenshtein",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "fast-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "fastq",
            "direct": false,
            "version": "1.19.1",
            "ecosystem": "npm"
          },
          {
            "name": "fdir",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "fecha",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "fflate",
            "direct": false,
            "version": "0.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "file-entry-cache",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "find-replace",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "flat-cache",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "flatbuffers",
            "direct": false,
            "version": "24.12.23",
            "ecosystem": "npm"
          },
          {
            "name": "flatted",
            "direct": false,
            "version": "3.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "fs.realpath",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "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": "gl-matrix",
            "direct": false,
            "version": "3.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "7.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "globals",
            "direct": false,
            "version": "13.24.0",
            "ecosystem": "npm"
          },
          {
            "name": "globby",
            "direct": false,
            "version": "11.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "graphemer",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "graphlib",
            "direct": false,
            "version": "2.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "highlight.js",
            "direct": false,
            "version": "11.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "html-encoding-sniffer",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "html-entities",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "html2canvas",
            "direct": false,
            "version": "1.4.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": "iconv-lite",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "ieee754",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "import-fresh",
            "direct": false,
            "version": "3.3.1",
            "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": "internmap",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-any-array",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-arrayish",
            "direct": false,
            "version": "0.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-docker",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-docker",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-in-ssh",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-inside-container",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-interactive",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-path-inside",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-potential-custom-element-name",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-unicode-supported",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-what",
            "direct": false,
            "version": "4.1.16",
            "ecosystem": "npm"
          },
          {
            "name": "is-wsl",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-wsl",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "jsdom",
            "direct": false,
            "version": "27.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsdom",
            "direct": false,
            "version": "^27.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsesc",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-bignum",
            "direct": false,
            "version": "0.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "json-buffer",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-stable-stringify-without-jsonify",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json5",
            "direct": false,
            "version": "2.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "keyv",
            "direct": false,
            "version": "4.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "leaflet",
            "direct": false,
            "version": "1.9.4",
            "ecosystem": "npm"
          },
          {
            "name": "leaflet.markercluster",
            "direct": false,
            "version": "1.5.3",
            "ecosystem": "npm"
          },
          {
            "name": "leaflet.markercluster",
            "direct": false,
            "version": "^1.5.3",
            "ecosystem": "npm"
          },
          {
            "name": "levn",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-android-arm64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-darwin-arm64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-darwin-x64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-freebsd-x64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm64-gnu",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm64-musl",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-x64-gnu",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-x64-musl",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-win32-arm64-msvc",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-win32-x64-msvc",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lilconfig",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "4.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.camelcase",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.merge",
            "direct": false,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "log-symbols",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "11.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "lz-string",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "magic-string",
            "direct": false,
            "version": "0.30.21",
            "ecosystem": "npm"
          },
          {
            "name": "mdn-data",
            "direct": false,
            "version": "2.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "merge-anything",
            "direct": false,
            "version": "5.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "merge2",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-fn",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "10.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "ml-array-max",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ml-array-min",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ml-array-rescale",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ml-matrix",
            "direct": false,
            "version": "6.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "mrmime",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.15",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "5.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "nanospinner",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "natural-compare",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-releases",
            "direct": false,
            "version": "2.0.27",
            "ecosystem": "npm"
          },
          {
            "name": "obug",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "onetime",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "open",
            "direct": false,
            "version": "11.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "open",
            "direct": false,
            "version": "8.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "optionator",
            "direct": false,
            "version": "0.9.4",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "parent-module",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parse5",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5",
            "direct": false,
            "version": "8.0.0",
            "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-type",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "pathe",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "pbf",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "pmtiles",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.5.15",
            "ecosystem": "npm"
          },
          {
            "name": "potpack",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "powershell-utils",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "prelude-ls",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "prettier",
            "direct": false,
            "version": "3.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "pretty-format",
            "direct": false,
            "version": "27.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "protocol-buffers-schema",
            "direct": false,
            "version": "3.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "protomaps-leaflet",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "queue-microtask",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "quickselect",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "rbush",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "react-is",
            "direct": false,
            "version": "17.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "3.6.2",
            "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-from",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-protobuf-schema",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "restore-cursor",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "reusify",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "rimraf",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "rolldown",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "run-applescript",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "run-parallel",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "rw",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "safer-buffer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "saxes",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "6.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "seroval",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "seroval-plugins",
            "direct": false,
            "version": "1.5.0",
            "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": "siginfo",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "3.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "simple-swizzle",
            "direct": false,
            "version": "0.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "sirv",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "size-limit",
            "direct": false,
            "version": "12.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "size-limit",
            "direct": false,
            "version": "^12.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "slash",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "solid-js",
            "direct": false,
            "version": "1.9.11",
            "ecosystem": "npm"
          },
          {
            "name": "solid-js",
            "direct": false,
            "version": "^1.9.11",
            "ecosystem": "npm"
          },
          {
            "name": "solid-refresh",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-js",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "stackback",
            "direct": false,
            "version": "0.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "std-env",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "stdin-discarder",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "string_decoder",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "7.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "svg-path-parser",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "symbol-tree",
            "direct": false,
            "version": "3.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "table-layout",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "text-segmentation",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "text-table",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "tinybench",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "tinyexec",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "tinyglobby",
            "direct": false,
            "version": "0.2.15",
            "ecosystem": "npm"
          },
          {
            "name": "tinyglobby",
            "direct": false,
            "version": "0.2.17",
            "ecosystem": "npm"
          },
          {
            "name": "tinyrainbow",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "tinyrainbow",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "tldts",
            "direct": false,
            "version": "7.0.17",
            "ecosystem": "npm"
          },
          {
            "name": "tldts-core",
            "direct": false,
            "version": "7.0.17",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "totalist",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "tough-cookie",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "tr46",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ts-api-utils",
            "direct": false,
            "version": "1.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "type-check",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.20.2",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "5.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "^5.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "typescript-eslint",
            "direct": false,
            "version": "7.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "typical",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "typical",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "6.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "update-browserslist-db",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "uri-js",
            "direct": false,
            "version": "4.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "util-deprecate",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "utrie",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "vite",
            "direct": false,
            "version": "8.0.16",
            "ecosystem": "npm"
          },
          {
            "name": "vite",
            "direct": false,
            "version": "^6.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "vite-plugin-solid",
            "direct": false,
            "version": "2.11.10",
            "ecosystem": "npm"
          },
          {
            "name": "vite-plugin-solid",
            "direct": false,
            "version": "^2.11.8",
            "ecosystem": "npm"
          },
          {
            "name": "vitefu",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "vitest",
            "direct": false,
            "version": "4.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "vitest",
            "direct": false,
            "version": "^4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "w3c-xmlserializer",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "webidl-conversions",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-encoding",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-mimetype",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-url",
            "direct": false,
            "version": "15.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "why-is-node-running",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "word-wrap",
            "direct": false,
            "version": "1.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "wordwrapjs",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": false,
            "version": "8.18.3",
            "ecosystem": "npm"
          },
          {
            "name": "wsl-utils",
            "direct": false,
            "version": "0.3.1",
            "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-parser",
            "direct": false,
            "version": "21.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 589,
        "direct_count": 21,
        "indirect_count": 568
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 1,
        "merged_prs": 14,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "nicolas-geysse",
          "commits": 248,
          "avatar_url": "https://avatars.githubusercontent.com/u/8360521?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml",
        "publish.yml",
        "release.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        "eslint.config.js"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "pnpm-lock.yaml"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "4 out of 4 merged PRs checked by a CI test -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/17 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": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 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": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "13 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "02449a057818c02b82cfe21588c3ddb6b65163fd",
        "ran_at": "2026-07-25T12:51:27Z",
        "aggregate_score": 4.4,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-25T12:46:32Z",
      "oldest_open_prs": [
        {
          "number": 15,
          "created_at": "2026-07-25T12:46:28Z",
          "last_comment_at": "2026-07-25T12:46:51Z",
          "last_comment_author": "socket-security"
        }
      ],
      "last_merged_pr_at": "2026-07-03T20:39:49Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/theseedship/mcp-ui",
    "host": "github.com",
    "name": "mcp-ui",
    "owner": "theseedship"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 64,
      "inputs": {
        "security": 55,
        "vitality": 86,
        "community": 41,
        "governance": 55,
        "engineering": 76
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 86,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 76,
            "inputs": {
              "commits_last_year": 250,
              "human_commit_share": 0.98,
              "days_since_last_push": 0,
              "active_weeks_last_year": 17
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "17/52 weeks with commits",
                "points": 11.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 17
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "250 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 250
                    }
                  }
                ],
                "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": 100,
              "latest_release_tag": "v6.16.0",
              "releases_from_tags": false,
              "days_since_latest_release": 21,
              "mean_days_between_releases": 3.8
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "100 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 100
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 21 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 21
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~3.8 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 3.8
                    }
                  }
                ],
                "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": 21,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 21 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 21
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 41,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 0,
              "stars": 1,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "1 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 77,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": true
            },
            "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": 18,
                "status": "met",
                "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": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "moderate",
            "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": 56,
            "inputs": {
              "packages": [
                "@seed-ship/mcp-ui-cli",
                "@seed-ship/mcp-ui-spec",
                "@seed-ship/mcp-ui-solid"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 2171
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "2,171 downloads/month across npm",
                "points": 44.5,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 2171,
                      "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": 13,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 1,
              "top_contributor_share": 1
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 100% of commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "1 contributors",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 72,
            "inputs": {
              "merged_prs": 14,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 0
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "14/14 decided PRs merged",
                "points": 38.2,
                "status": "met",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 14,
                      "decided": 14
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/17 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": 52,
            "inputs": {
              "followers": 5,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "theseedship",
              "public_repos": 22,
              "account_age_days": 1203
            },
            "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": "5 followers of theseedship",
                "points": 5.6,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 5,
                      "login": "theseedship"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "22 public repos, account ~3 yr old",
                "points": 16.5,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 22
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 3
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "@seed-ship/mcp-ui-cli",
                "@seed-ship/mcp-ui-spec",
                "@seed-ship/mcp-ui-solid"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 21
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "3 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 3,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 21 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 21
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "135 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 135
                    }
                  }
                ],
                "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": "good",
        "name": "Engineering Quality",
        "value": 76,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 84,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "3 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": "eslint.config.js",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.js"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "4 out of 4 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 65,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": false
            },
            "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 55,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 44,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 4.4
            },
            "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": "4 out of 4 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/17 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 dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 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 detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "13 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the npm:@seed-ship/mcp-ui-cli@5.0.0 runtime dependency closure — what installing the published package pulls in — 49 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:@seed-ship/mcp-ui-cli@5.0.0",
                  "assessed": 49
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 49,
              "unassessed_packages": 0,
              "affected_by_severity": "none",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "no indirect dependency carries a known advisory",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "no_indirect_advisories",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 49,
              "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": 2
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 75,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 3127
            },
            "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": "98 of 98 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 98,
                      "sampled": 98
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 72,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "pnpm-lock.yaml"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "mcp-ui-cli/tsconfig.json",
                "mcp-ui-solid/tsconfig.json",
                "mcp-ui-spec/tsconfig.json",
                "tsconfig.json"
              ],
              "agent_commit_share": 0.92,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0.02
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": "eslint.config.js",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.js"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "mcp-ui-cli/tsconfig.json, mcp-ui-solid/tsconfig.json, mcp-ui-spec/tsconfig.json, tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "mcp-ui-cli/tsconfig.json, mcp-ui-solid/tsconfig.json, mcp-ui-spec/tsconfig.json, 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": "92 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 92,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "2 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 2,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 99,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 81424,
              "source_files_sampled": 173,
              "oversized_source_files": 2
            },
            "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": "2/173 source files over 60KB",
                "points": 54.4,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 173,
                      "oversized": 2
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples",
                "recipes"
              ],
              "has_mcp_signal": false,
              "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples, recipes",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples, recipes"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-25T12:51:40.181723Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/t/theseedship/mcp-ui.svg",
  "full_name": "theseedship/mcp-ui",
  "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.27.0 — full methodology · metrics wiki.

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