Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 2.3.1 · 2026-07-30 20:35 UTC

ncbi / icn3d

web-based protein structure viewer and analysis tool interactively or in batch mode

JavaScriptLicencia propia★ 175 estrellas⑂ 54 forksdesde ene 2016Ver en GitHub ↗
TipoBibliotecacómo se determina

ncbi/icn3d tiene un índice de salud de 57 sobre 100, lo que lo sitúa en la banda Moderado. Su puntuación más alta es Vitality (80/100) y la más baja, Engineering Quality (31/100). Se actualizó por última vez hace 8 días. Una sola persona concentra la mayor parte del trabajo reciente.

57
global / 100
Moderado

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala estandarizada de 1 a 100. El resultado global parte de su media ponderada, calibrada contra la distribución del registro público para que las bandas tengan significado percentil; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe un límite «En riesgo» de 34.

57
Excepcional93-100El nivel más alto del registro (≈ el 5% superior); cumple prácticamente todos los criterios evaluados
Excelente80-92Sólido en todos los frentes; carencias menores
Bueno65-79Saludable; carencias limitadas y manejables
Moderado50-64Aceptable con carencias notables; se recomienda revisión
Débil35-49Debilidades sustanciales en varias áreas
En riesgo20-34Debilidades significativas; su adopción exige cautela
Crítico1-19Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

El resultado global ponderado 55 se calibra a 57 en la escala publicada del índice (calibración del registro 2026-08-02).

Titularidad

2843 seguidores152 repositorios públicosdesde mar 2013

Este repositorio está respaldado por una organización: una custodia compartida y responsable que puede sobrevivir a cualquier mantenedor individual.

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicaciónEtiquetas
npmicn3d3.51.22767250hace 8 díasncbiicn3d3d-viewerproteinstructurenode
PyPIicn3dpy3.51.01148120hace 23 díaswebgl-basedproteinstructureviewer

Métricas por categoría

Vitalidad

¿Está vivo el proyecto: se escribe código y se publican versiones?

80Excelente · 21% del índice global
Cómo se puntúa
28.8/36Recencia de push — último push hace 8 días
11.1/36Cadencia de commits — 16/52 semanas con commits
16.9/18Volumen de commits — 76 commits en el último año
10/10OpenSSF Scorecard: Maintained — 27 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year76
human_commit_share1
days_since_last_push8
active_weeks_last_year16
Cómo se puntúa
27/27Publica versiones — 100 versiones publicadas
36/36Recencia de las versiones — última versión hace 10 días
27/27Cadencia de publicación — una versión cada ~22,5 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count100
latest_release_tagv3.51.1
releases_from_tagsno
days_since_latest_release10
mean_days_between_releases22,5
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Signed-Releases. Los pesos restantes se han renormalizado.

Comunidad y Adopción

¿Tiene el proyecto usuarios, descargas, atención y unas condiciones acogedoras para quienes contribuyen?

58Moderado · 17% del índice global
Cómo se puntúa
36.3/60Estrellas — 175 estrellas
14.4/25Forks — 54 forks
6.2/15Observadores — 14 observadores
Datos de entrada utilizados
forks54
stars175
watchers14
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
16.9/22.5Licencia — archivo de licencia presente, no es una licencia reconocida
0/18Guía CONTRIBUTING
13.5/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
readme_badges
has_contributingno
has_issue_templateno
has_code_of_conduct
readme_badge_services
has_pull_request_templateno
Cómo se puntúa
47.9/80Descargas mensuales — 3915 descargas/mes en npm, pypi
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packagesicn3d, icn3dpy
dependents
ecosystemsnpm, pypi
total_downloads
monthly_downloads3915
Excluidos de la puntuación (sin datos o no aplicable): Dependientes en el registro. Los pesos restantes se han renormalizado.

Sostenibilidad y Gobernanza

¿Sobrevivirá el proyecto a sus personas: factor bus, capacidad de respuesta, quién lo respalda y mantenimiento del paquete?

64Moderado · 23% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
0.5/22.5Distribución de commits — el principal contribuyente firma el 98% de los commits
5.4/13.5Amplitud de contribuyentes — 4 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 6 contributing companies or organizations
Datos de entrada utilizados
bus_factor1
contributors_sampled4
top_contributor_share0,98
Cómo se puntúa
39.4/42Resolución de issues — 94% de issues cerradas
16/30Aceptación de PR — 8/15 PR decididos fusionados
0/13Newcomer PR acceptance — ningún PR de un contribuyente primerizo decidido en 30 d
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs8
open_issues7
closed_issues104
prs_merged_7d
prs_decided_7d
prs_merged_30d
prs_decided_30d
issue_closed_ratio0,937
closed_unmerged_prs7
first_time_authors_30d
first_time_prs_merged_30d
first_time_prs_decided_30d
Excluidos de la puntuación (sin datos o no aplicable): newcomer_pr_acceptance. Los pesos restantes se han renormalizado.
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
24.8/25Alcance del propietario — 2843 seguidores de ncbi
25/25Trayectoria — 152 repos públicos, cuenta de ~13 años
Datos de entrada utilizados
followers2843
owner_typeOrganization
is_verified
owner_loginncbi
public_repos152
account_age_days4892
Cómo se puntúa
25/25Publicado y resoluble — 2 paquete(s) en npm, pypi
35/35Recencia de publicación — última publicación hace 8 días
20/20Historial de versiones — 250 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesicn3d, icn3dpy
ecosystemsnpm, pypi
any_deprecatedno
min_days_since_publish8

Calidad de Ingeniería

¿Existen unas prácticas mínimas de ingeniería y documentación?

31En riesgo · 19% del índice global
Cómo se puntúa
0/24Flujos de trabajo de CI
0/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-commit
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — sin datos
Datos de entrada utilizados
has_cino
has_testsno
has_editorconfigno
has_linter_configno
has_precommit_configno
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: CI-Tests. Los pesos restantes se han renormalizado.
Cómo se puntúa
30/30README
0/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://www.ncbi.nlm.nih.gov/Structure/icn3d
10/10Descripción del repositorio
10/10Topics — 16 topics
10/10Wiki
Datos de entrada utilizados
topicsicn3d, webgl, protein, 3d-structure, 3d-viewer, structure-viewer, nucleotide, chemical, protein-viewer, jupyter-notebook, snp, delphi, nodejs, molecular-viewer, ar, vr
has_wiki
homepagehttps://www.ncbi.nlm.nih.gov/Structure/icn3d
has_readme
has_docs_dirno
has_description

Seguridad

¿Son sólidas las prácticas visibles de seguridad y de cadena de suministro, sin exposición jurisdiccional de alto riesgo sin resolver?

38Débil · 16% del índice global
Cómo se puntúa
5.2/7.5Binary-Artifacts — binaries present in source code
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — sin datos
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 6 contributing companies or organizations
0/10Dangerous-Workflow — sin datos
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.2/2.5Licencia — license file detected
7.5/7.5Maintained — 27 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — sin datos
0/5Pinned-Dependencies — sin datos
0/5SAST — no SAST tool detected
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — sin datos
0/7.5Token-Permissions — sin datos
0/7.5Vulnerabilities — 23 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated12
scorecard_versionv5.5.0
checks_inconclusive6
scorecard_aggregate3,3
Excluidos de la puntuación (sin datos o no aplicable): ci_tests, dangerous_workflow, packaging, pinned_dependencies, signed_releases, token_permissions. Los pesos restantes se han renormalizado.
Cómo se puntúa
10.9/35Dependencias directas libres de avisos conocidos — 1 afectados: axios 0.25.0 (high 8.6)
18.4/25Dependencias indirectas libres de avisos conocidos — 1 afectados: @tootallnate/once 1.1.2 (low 3.3)
30.8/40Sin avisos pendientes — 2 paquete(s) con avisos sin atender más allá de 90 días; el más antiguo publicado hace 994 días
Datos de entrada utilizados
sourceosv
advisories24
affected_packages2
assessed_packages77
unassessed_packages0
affected_by_severityhigh 1, low 1
direct_affected_packages1
Se cotejó el cierre de dependencias en tiempo de ejecución de npm:icn3d@3.51.2 —lo que arrastra la instalación del paquete publicado—: 77 paquetes. No se analiza la alcanzabilidad.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Tiene un peso deliberadamente pequeño (4%): las herramientas para agentes son una señal real de mantenimiento, pero un repositorio sin ninguna puede alcanzar igualmente 100/100.

36Débil · 4% del índice global
Cómo se puntúa
0/45Instrucciones para agentes — sin CLAUDE.md / AGENTS.md / reglas de editor
0/15Documentación legible por máquinas (llms.txt)
35.2/40Historial de commits legible — 66 de 100 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,66
agent_instruction_files
agent_instruction_max_bytes
Cómo se puntúa
18/18Arranque con un solo comando — icn3dnode/tmalign-icn3dnode/Makefile
0/22Pruebas automatizadas
0/11Configuración de lint / formato
0/11Verificación estática de tipos
10/10Entorno reproducible — lockfile
0/10Práctica demostrada con agentes — ningún commit con autoría de agente entre los últimos 100
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — sin datos
Datos de entrada utilizados
has_nixno
has_testsno
lockfilespackage-lock.json
has_dockerfileno
typed_languageno
bootstrap_filesicn3dnode/tmalign-icn3dnode/Makefile
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Pinned-Dependencies. Los pesos restantes se han renormalizado.
Cómo se puntúa
0/45Código verificable por tipos — JavaScript sin configuración de verificación de tipos
48.2/55Tamaños de archivo manejables — 25/201 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageJavaScript
largest_source_bytes1.930.687
source_files_sampled201
oversized_source_files25
Cómo se puntúa
0/40Esquema de API (OpenAPI/GraphQL/proto)
0/20Servidor MCP
40/40Ejemplos ejecutables — example
Datos de entrada utilizados
example_dirsexample
has_mcp_signalno
api_schema_files

Datos clave

175estrellas de GitHub
4contribuidores
76commits en los últimos 12 meses
8días desde el último push
100versiones publicadas
1factor bus
7issues abiertas
npm, PyPIecosistemas de paquetes

Advertencias de recopilación de datos

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

Más detalle

Historial de estrellas y forks 0 ★ / 54 ⇿
0Estrellas
54Forks
99Versiones

Cuándo se añadió cada estrella y fork, recopilado de GitHub y agrupado por día. El crecimiento acumulado se sitúa justo encima de las adiciones diarias que lo componen, de modo que ambos se leen en conjunto: la acumulación orgánica sostenida no se parece en nada a un pico abrupto y efímero. Cuando esa diferencia es medible, se informa como autenticidad del crecimiento.

01020304050605252016-012021-042026-07
Mayor 0Menor 35Parche 58

Cada punto abarca 10 días.

OpenSSF Scorecard 3.3 / 10
3.3agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).Scorecard v5.5.0 · 2026-07-30 20:35 UTC

7Binary-Artifactsbinaries present in source code
0Branch-Protectionbranch protection not enabled on development/release branches
n/dCI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
10Contributorsproject has 6 contributing companies or organizations
n/dDangerous-Workflowno workflows found
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
9Licenselicense file detected
10Maintained27 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
n/dPackagingpackaging workflow not detected
n/dPinned-Dependenciesno dependencies found
0SASTno SAST tool detected
10Security-Policysecurity policy file detected
n/dSigned-Releasesno releases found
n/dToken-PermissionsNo tokens found
0Vulnerabilities23 existing vulnerabilities detected
Dependencias directas 16
RegistroPaqueteRestricción de versiónManifiesto
npmjquery^3.5.0package.json
npmjquery-uigithub:jquery/jquery-ui#1.13.2package.json
npmline-awesome^1.3.0package.json
npmthree~0.177.0package.json
npmuglify-js^3.3.9package.json
npmdel^5.1.0package.json
npmgulp-concat^2.6.1package.json
npmgulp-dom^1.0.0package.json
npmgulp-help^1.6.1package.json
npmgulp-rename^2.0.0package.json
npmgulp-replace^1.1.1package.json
npmgulp-uglify^3.0.2package.json
npmgulp-zip^5.0.1package.json
npmrollup^2.45.2package.json
npmrollup-plugin-node-resolve^5.2.0package.json
npmrollup-plugin-terser^7.0.2package.json
Todas las dependencias 498

Conjunto completo de dependencias resueltas según el grafo de dependencias de GitHub: 16 paquetes directos y 482 indirectos (transitivos). El cierre transitivo es completo cuando el repositorio incluye un lockfile.

RegistroPaqueteVersiónRelación
npmdel5.1.0directa
npmgulp-concat2.6.1directa
npmgulp-dom1.0.0directa
npmgulp-help1.6.1directa
npmgulp-rename2.0.0directa
npmgulp-replace1.1.4directa
npmgulp-uglify3.0.2directa
npmgulp-zip5.1.0directa
npmjquery3.7.1directa
npmjquery-ui1.13.2directa
npmline-awesome1.3.0directa
npmrollup2.79.2directa
npmrollup-plugin-node-resolve5.2.0directa
npmrollup-plugin-terser7.0.2directa
npmthree0.177.0directa
npmuglify-js3.3.9directa
npm@babel/code-frame7.26.2indirecta
npm@babel/helper-validator-identifier7.25.9indirecta
npm@jridgewell/gen-mapping0.3.5indirecta
npm@jridgewell/resolve-uri3.1.2indirecta
npm@jridgewell/set-array1.2.1indirecta
npm@jridgewell/source-map0.3.6indirecta
npm@jridgewell/sourcemap-codec1.5.0indirecta
npm@jridgewell/trace-mapping0.3.25indirecta
npm@nodelib/fs.scandir2.1.5indirecta
npm@nodelib/fs.stat2.0.5indirecta
npm@nodelib/fs.walk1.2.8indirecta
npm@types/expect1.20.4indirecta
npm@types/glob7.2.0indirecta
npm@types/minimatch5.1.2indirecta
npm@types/node22.9.1indirecta
npm@types/resolve0.0.8indirecta
npm@types/vinyl2.0.12indirecta
npmabab2.0.6indirecta
npmacorn6.4.2indirecta
npmacorn8.14.0indirecta
npmacorn-globals4.3.4indirecta
npmacorn-walk6.2.0indirecta
npmaggregate-error3.1.0indirecta
npmajv6.12.6indirecta
npmansi-colors1.1.0indirecta
npmansi-gray0.1.1indirecta
npmansi-regex2.1.1indirecta
npmansi-styles2.2.1indirecta
npmansi-wrap0.1.0indirecta
npmanymatch2.0.0indirecta
npmappend-buffer1.0.2indirecta
npmarchy1.0.0indirecta
npmarr-diff4.0.0indirecta
npmarr-filter1.1.2indirecta
npmarr-flatten1.1.0indirecta
npmarr-map2.0.2indirecta
npmarr-union3.1.0indirecta
npmarray-each1.0.1indirecta
npmarray-equal1.0.2indirecta
npmarray-initial1.1.0indirecta
npmarray-last1.3.0indirecta
npmarray-slice1.1.0indirecta
npmarray-sort1.0.0indirecta
npmarray-union2.1.0indirecta
npmarray-unique0.3.2indirecta
npmasn10.2.6indirecta
npmassert-plus1.0.0indirecta
npmassign-symbols1.0.0indirecta
npmasync-done1.3.2indirecta
npmasync-each1.0.6indirecta
npmasync-limiter1.0.1indirecta
npmasync-settle1.0.0indirecta
npmasynckit0.4.0indirecta
npmatob2.1.2indirecta
npmaws-sign20.7.0indirecta
npmaws41.13.2indirecta
npmbach1.2.0indirecta
npmbalanced-match1.0.2indirecta
npmbase0.11.2indirecta
npmbcrypt-pbkdf1.0.2indirecta
npmbinary-extensions1.13.1indirecta
npmbinaryextensions2.3.0indirecta
npmbindings1.5.0indirecta
npmbrace-expansion1.1.11indirecta
npmbraces2.3.2indirecta
npmbraces3.0.3indirecta
npmbrowser-process-hrtime1.0.0indirecta
npmbuffer-crc320.2.13indirecta
npmbuffer-equal1.0.1indirecta
npmbuffer-from1.1.2indirecta
npmbuiltin-modules3.3.0indirecta
npmcache-base1.0.1indirecta
npmcall-bind1.0.7indirecta
npmcamelcase3.0.0indirecta
npmcaseless0.12.0indirecta
npmchalk1.1.3indirecta
npmchokidar2.1.8indirecta
npmclass-utils0.3.6indirecta
npmclean-stack2.2.0indirecta
npmcliui3.2.0indirecta
npmclone2.1.2indirecta
npmclone-buffer1.0.0indirecta
npmclone-stats1.0.0indirecta
npmcloneable-readable1.1.3indirecta
npmcode-point-at1.1.0indirecta
npmcollection-map1.0.0indirecta
npmcollection-visit1.0.0indirecta
npmcolor-support1.1.3indirecta
npmcombined-stream1.0.8indirecta
npmcommander2.13.0indirecta
npmcommander2.20.3indirecta
npmcomponent-emitter1.3.1indirecta
npmconcat-map0.0.1indirecta
npmconcat-stream1.6.2indirecta
npmconcat-with-sourcemaps1.1.0indirecta
npmconvert-source-map1.9.0indirecta
npmcopy-descriptor0.1.1indirecta
npmcopy-props2.0.5indirecta
npmcore-util-is1.0.2indirecta
npmcore-util-is1.0.3indirecta
npmcssom0.3.8indirecta
npmcssstyle1.4.0indirecta
npmd1.0.2indirecta
npmdashdash1.14.1indirecta
npmdata-urls1.1.0indirecta
npmdebug2.6.9indirecta
npmdecamelize1.2.0indirecta
npmdecode-uri-component0.2.2indirecta
npmdeep-is0.1.4indirecta
npmdefault-compare1.0.0indirecta
npmdefault-resolution2.0.0indirecta
npmdefine-data-property1.1.4indirecta
npmdefine-properties1.2.1indirecta
npmdefine-property0.2.5indirecta
npmdefine-property1.0.0indirecta
npmdefine-property2.0.2indirecta
npmdelayed-stream1.0.0indirecta
npmdetect-file1.0.0indirecta
npmdir-glob3.0.1indirecta
npmdomexception1.0.1indirecta
npmduplexify3.7.1indirecta
npmeach-props1.3.2indirecta
npmecc-jsbn0.1.2indirecta
npmend-of-stream1.4.4indirecta
npmerror-ex1.3.2indirecta
npmes-define-property1.0.0indirecta
npmes-errors1.3.0indirecta
npmes5-ext0.10.64indirecta
npmes6-iterator2.0.3indirecta
npmes6-symbol3.1.4indirecta
npmes6-weak-map2.0.3indirecta
npmescape-string-regexp1.0.5indirecta
npmescodegen1.14.3indirecta
npmesniff2.0.1indirecta
npmesprima4.0.1indirecta
npmestraverse4.3.0indirecta
npmestree-walker0.6.1indirecta
npmesutils2.0.3indirecta
npmevent-emitter0.3.5indirecta
npmexpand-brackets2.1.4indirecta
npmexpand-tilde2.0.2indirecta
npmext1.7.0indirecta
npmextend3.0.2indirecta
npmextend-shallow2.0.1indirecta
npmextend-shallow3.0.2indirecta
npmextglob2.0.4indirecta
npmextsprintf1.3.0indirecta
npmfancy-log1.3.3indirecta
npmfast-deep-equal3.1.3indirecta
npmfast-glob3.3.2indirecta
npmfast-json-stable-stringify2.1.0indirecta
npmfast-levenshtein1.1.4indirecta
npmfast-levenshtein2.0.6indirecta
npmfastq1.17.1indirecta
npmfile-uri-to-path1.0.0indirecta
npmfill-range4.0.0indirecta
npmfill-range7.1.1indirecta
npmfind-up1.1.2indirecta
npmfindup-sync2.0.0indirecta
npmfindup-sync3.0.0indirecta
npmfined1.2.0indirecta
npmflagged-respawn1.0.1indirecta
npmflush-write-stream1.1.1indirecta
npmfor-in1.0.2indirecta
npmfor-own1.0.0indirecta
npmforever-agent0.6.1indirecta
npmform-data2.3.3indirecta
npmfragment-cache0.2.1indirecta
npmfs-mkdirp-stream1.0.0indirecta
npmfs.realpath1.0.0indirecta
npmfsevents1.2.13indirecta
npmfsevents2.3.3indirecta
npmfunction-bind1.1.2indirecta
npmget-caller-file1.0.3indirecta
npmget-intrinsic1.2.4indirecta
npmget-stream5.2.0indirecta
npmget-value2.0.6indirecta
npmgetpass0.1.7indirecta
npmglob7.2.3indirecta
npmglob-parent3.1.0indirecta
npmglob-parent5.1.2indirecta
npmglob-stream6.1.0indirecta
npmglob-watcher5.0.5indirecta
npmglobal-modules1.0.0indirecta
npmglobal-prefix1.0.2indirecta
npmglobby10.0.2indirecta
npmglogg1.0.2indirecta
npmgopd1.0.1indirecta
npmgraceful-fs4.2.11indirecta
npmgulp4.0.2indirecta
npmgulp-cli2.3.0indirecta
npmgulplog1.0.0indirecta
npmhar-schema2.0.0indirecta
npmhar-validator5.1.5indirecta
npmhas-ansi2.0.0indirecta
npmhas-flag4.0.0indirecta
npmhas-gulplog0.1.0indirecta
npmhas-property-descriptors1.0.2indirecta
npmhas-proto1.0.3indirecta
npmhas-symbols1.0.3indirecta
npmhas-value0.3.1indirecta
npmhas-value1.0.0indirecta
npmhas-values0.1.4indirecta
npmhas-values1.0.0indirecta
npmhasown2.0.2indirecta
npmhomedir-polyfill1.0.3indirecta
npmhosted-git-info2.8.9indirecta
npmhtml-encoding-sniffer1.0.2indirecta
npmhttp-signature1.2.0indirecta
npmiconv-lite0.4.24indirecta
npmignore5.3.2indirecta
npmindent-string4.0.0indirecta
npminflight1.0.6indirecta
npminherits2.0.4indirecta
npmini1.3.8indirecta
npminterpret1.4.0indirecta
npminvert-kv1.0.0indirecta
npmis-absolute1.0.0indirecta
npmis-accessor-descriptor1.0.1indirecta
npmis-arrayish0.2.1indirecta
npmis-binary-path1.0.1indirecta
npmis-buffer1.1.6indirecta
npmis-core-module2.15.1indirecta
npmis-data-descriptor1.0.1indirecta
npmis-descriptor0.1.7indirecta
npmis-descriptor1.0.3indirecta
npmis-extendable0.1.1indirecta
npmis-extendable1.0.1indirecta
npmis-extglob2.1.1indirecta
npmis-fullwidth-code-point1.0.0indirecta
npmis-glob3.1.0indirecta
npmis-glob4.0.3indirecta
npmis-module1.0.0indirecta
npmis-negated-glob1.0.0indirecta
npmis-number3.0.0indirecta
npmis-number4.0.0indirecta
npmis-number7.0.0indirecta
npmis-path-cwd2.2.0indirecta
npmis-path-inside3.0.3indirecta
npmis-plain-object2.0.4indirecta
npmis-plain-object5.0.0indirecta
npmis-relative1.0.0indirecta
npmis-typedarray1.0.0indirecta
npmis-unc-path1.0.0indirecta
npmis-utf80.2.1indirecta
npmis-valid-glob1.0.0indirecta
npmis-windows1.0.2indirecta
npmisarray1.0.0indirecta
npmisexe2.0.0indirecta
npmisobject2.1.0indirecta
npmisobject3.0.1indirecta
npmisstream0.1.2indirecta
npmistextorbinary3.3.0indirecta
npmjest-worker26.6.2indirecta
npmjs-tokens4.0.0indirecta
npmjsbn0.1.1indirecta
npmjsdom12.2.0indirecta
npmjson-schema0.4.0indirecta
npmjson-schema-traverse0.4.1indirecta
npmjson-stable-stringify-without-jsonify1.0.1indirecta
npmjson-stringify-safe5.0.1indirecta
npmjsprim1.4.2indirecta
npmjust-debounce1.1.0indirecta
npmkind-of3.2.2indirecta
npmkind-of4.0.0indirecta
npmkind-of5.1.0indirecta
npmkind-of6.0.3indirecta
npmlast-run1.1.1indirecta
npmlazystream1.0.1indirecta
npmlcid1.0.0indirecta
npmlead1.0.0indirecta
npmlevn0.3.0indirecta
npmliftoff3.1.0indirecta
npmload-json-file1.1.0indirecta
npmlodash4.17.21indirecta
npmlodash.sortby4.7.0indirecta
npmmake-error1.3.6indirecta
npmmake-error-cause1.2.2indirecta
npmmake-iterator1.0.1indirecta
npmmap-cache0.2.2indirecta
npmmap-visit1.0.0indirecta
npmmatchdep2.0.0indirecta
npmmerge-stream2.0.0indirecta
npmmerge21.4.1indirecta
npmmicromatch3.1.10indirecta
npmmicromatch4.0.8indirecta
npmmime-db1.52.0indirecta
npmmime-types2.1.35indirecta
npmminimatch3.1.2indirecta
npmmixin-deep1.3.2indirecta
npmms2.0.0indirecta
npmmute-stdout1.0.1indirecta
npmnan2.22.0indirecta
npmnanomatch1.2.13indirecta
npmnext-tick1.1.0indirecta
npmnormalize-package-data2.5.0indirecta
npmnormalize-path2.1.1indirecta
npmnormalize-path3.0.0indirecta
npmnow-and-later2.0.1indirecta
npmnumber-is-nan1.0.1indirecta
npmnwsapi2.2.13indirecta
npmoauth-sign0.9.0indirecta
npmobject-assign3.0.0indirecta
npmobject-assign4.1.1indirecta
npmobject-copy0.1.0indirecta
npmobject-keys1.1.1indirecta
npmobject-visit1.0.1indirecta
npmobject.assign4.1.5indirecta
npmobject.defaults1.1.0indirecta
npmobject.map1.0.1indirecta
npmobject.pick1.3.0indirecta
npmobject.reduce1.0.1indirecta
npmonce1.4.0indirecta
npmoptionator0.8.3indirecta
npmordered-read-streams1.0.1indirecta
npmos-locale1.4.0indirecta
npmp-map3.0.0indirecta
npmparse-filepath1.0.2indirecta
npmparse-json2.2.0indirecta
npmparse-node-version1.0.1indirecta
npmparse-passwd1.0.0indirecta
npmparse55.1.0indirecta
npmpascalcase0.1.1indirecta
npmpath-dirname1.0.2indirecta
npmpath-exists2.1.0indirecta
npmpath-is-absolute1.0.1indirecta
npmpath-parse1.0.7indirecta
npmpath-root0.1.1indirecta
npmpath-root-regex0.1.2indirecta
npmpath-type1.1.0indirecta
npmpath-type4.0.0indirecta
npmperformance-now2.1.0indirecta
npmpicocolors1.1.1indirecta
npmpicomatch2.3.1indirecta
npmpify2.3.0indirecta
npmpinkie2.0.4indirecta
npmpinkie-promise2.0.1indirecta
npmplugin-error1.0.1indirecta
npmpn1.1.0indirecta
npmposix-character-classes0.1.1indirecta
npmprelude-ls1.1.2indirecta
npmpretty-hrtime1.0.3indirecta
npmprocess-nextick-args2.0.1indirecta
npmpsl1.13.0indirecta
npmpump2.0.1indirecta
npmpump3.0.2indirecta
npmpumpify1.5.1indirecta
npmpunycode2.3.1indirecta
npmqs6.5.3indirecta
npmqueue-microtask1.2.3indirecta
npmrandombytes2.1.0indirecta
npmread-pkg1.1.0indirecta
npmread-pkg-up1.0.1indirecta
npmreadable-stream2.3.8indirecta
npmreaddirp2.2.1indirecta
npmrechoir0.6.2indirecta
npmregex-not1.0.2indirecta
npmremove-bom-buffer3.0.0indirecta
npmremove-bom-stream1.2.0indirecta
npmremove-trailing-separator1.1.0indirecta
npmrepeat-element1.1.4indirecta
npmrepeat-string1.6.1indirecta
npmreplace-ext1.0.1indirecta
npmreplace-homedir1.0.0indirecta
npmreplacestream4.0.3indirecta
npmrequest2.88.2indirecta
npmrequest-promise-core1.1.4indirecta
npmrequest-promise-native1.0.9indirecta
npmrequire-directory2.1.1indirecta
npmrequire-main-filename1.0.1indirecta
npmresolve1.22.8indirecta
npmresolve-dir1.0.1indirecta
npmresolve-options1.1.0indirecta
npmresolve-url0.2.1indirecta
npmret0.1.15indirecta
npmreusify1.0.4indirecta
npmrimraf3.0.2indirecta
npmrollup-pluginutils2.8.2indirecta
npmrun-parallel1.2.0indirecta
npmsafe-buffer5.1.2indirecta
npmsafe-buffer5.2.1indirecta
npmsafe-regex1.1.0indirecta
npmsafer-buffer2.1.2indirecta
npmsaxes3.1.11indirecta
npmsemver5.7.2indirecta
npmsemver-greatest-satisfied-range1.1.0indirecta
npmserialize-javascript4.0.0indirecta
npmset-blocking2.0.0indirecta
npmset-function-length1.2.2indirecta
npmset-value2.0.1indirecta
npmslash3.0.0indirecta
npmsnapdragon0.8.2indirecta
npmsnapdragon-node2.1.1indirecta
npmsnapdragon-util3.0.1indirecta
npmsource-map0.5.7indirecta
npmsource-map0.6.1indirecta
npmsource-map-resolve0.5.3indirecta
npmsource-map-support0.5.21indirecta
npmsource-map-url0.4.1indirecta
npmsparkles1.0.1indirecta
npmspdx-correct3.2.0indirecta
npmspdx-exceptions2.5.0indirecta
npmspdx-expression-parse3.0.1indirecta
npmspdx-license-ids3.0.20indirecta
npmsplit-string3.1.0indirecta
npmsshpk1.18.0indirecta
npmstack-trace0.0.10indirecta
npmstatic-extend0.1.2indirecta
npmstealthy-require1.1.1indirecta
npmstream-exhaust1.0.2indirecta
npmstream-shift1.0.3indirecta
npmstring-width1.0.2indirecta
npmstring_decoder1.1.1indirecta
npmstrip-ansi3.0.1indirecta
npmstrip-bom2.0.0indirecta
npmsupports-color2.0.0indirecta
npmsupports-color7.2.0indirecta
npmsupports-preserve-symlinks-flag1.0.0indirecta
npmsver-compat1.5.0indirecta
npmsymbol-tree3.2.4indirecta
npmterser5.36.0indirecta
npmtextextensions3.3.0indirecta
npmthrough22.0.3indirecta
npmthrough22.0.5indirecta
npmthrough23.0.2indirecta
npmthrough2-filter3.0.0indirecta
npmtime-stamp1.1.0indirecta
npmto-absolute-glob2.0.2indirecta
npmto-object-path0.3.0indirecta
npmto-regex3.0.2indirecta
npmto-regex-range2.1.1indirecta
npmto-regex-range5.0.1indirecta
npmto-through2.0.0indirecta
npmtough-cookie2.5.0indirecta
npmtr461.0.1indirecta
npmtunnel-agent0.6.0indirecta
npmtweetnacl0.14.5indirecta
npmtype2.7.3indirecta
npmtype-check0.3.2indirecta
npmtypedarray0.0.6indirecta
npmunc-path-regex0.1.2indirecta
npmundertaker1.3.0indirecta
npmundertaker-registry1.0.1indirecta
npmundici-types6.19.8indirecta
npmunion-value1.0.1indirecta
npmunique-stream2.3.1indirecta
npmunset-value1.0.0indirecta
npmupath1.2.0indirecta
npmuri-js4.4.1indirecta
npmurix0.1.0indirecta
npmuse3.1.1indirecta
npmutil-deprecate1.0.2indirecta
npmuuid3.4.0indirecta
npmv8flags3.2.0indirecta
npmvalidate-npm-package-license3.0.4indirecta
npmvalue-or-function3.0.0indirecta
npmverror1.10.0indirecta
npmvinyl2.2.1indirecta
npmvinyl-fs3.0.3indirecta
npmvinyl-sourcemap1.1.0indirecta
npmvinyl-sourcemaps-apply0.2.1indirecta
npmw3c-hr-time1.0.2indirecta
npmwebidl-conversions4.0.2indirecta
npmwhatwg-encoding1.0.5indirecta
npmwhatwg-mimetype2.3.0indirecta
npmwhatwg-url7.1.0indirecta
npmwhich1.3.1indirecta
npmwhich-module1.0.0indirecta
npmword-wrap1.2.5indirecta
npmwrap-ansi2.1.0indirecta
npmwrappy1.0.2indirecta
npmws6.2.3indirecta
npmxml-name-validator3.0.0indirecta
npmxmlchars2.2.0indirecta
npmxtend4.0.2indirecta
npmy18n3.2.2indirecta
npmyargs7.1.2indirecta
npmyargs-parser21.1.1indirecta
npmyargs-parser5.0.1indirecta
npmyazl2.5.1indirecta
PyPIidisplayindirecta
PyPIjupyterindirecta
Avisos de dependencias 2

Instalar npm:icn3d@3.51.2 arrastra 77 paquetes, directos y transitivos: 2 tienen avisos conocidos, de los cuales 1 son dependencias directas.

PaqueteVersiónRelaciónGravedadAvisosCorregido en
axios0.25.0directaalta231.18.0
@tootallnate/once1.1.2indirectabaja13.0.1

Un aviso significa que la versión registrada en el grafo de dependencias cae dentro del rango afectado de un aviso. No se analiza la alcanzabilidad, y el grafo incluye fijaciones de desarrollo y prueba: un hallazgo puede referirse al utillaje y no al software distribuido.

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [
        "icn3d",
        "webgl",
        "protein",
        "3d-structure",
        "3d-viewer",
        "structure-viewer",
        "nucleotide",
        "chemical",
        "protein-viewer",
        "jupyter-notebook",
        "snp",
        "delphi",
        "nodejs",
        "molecular-viewer",
        "ar",
        "vr"
      ],
      "is_fork": false,
      "size_kb": 575688,
      "has_wiki": true,
      "homepage": "https://www.ncbi.nlm.nih.gov/Structure/icn3d",
      "languages": {
        "C++": 999598,
        "CSS": 15394,
        "HTML": 646764,
        "Shell": 439,
        "Python": 27156,
        "Makefile": 719,
        "JavaScript": 14344289
      },
      "pushed_at": "2026-07-22T15:57:31Z",
      "created_at": "2016-01-20T16:16:12Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-22T16:02:23Z",
      "description": "web-based protein structure viewer and analysis tool interactively or in batch mode",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "master",
      "license_spdx_raw": "NOASSERTION",
      "primary_language": "JavaScript",
      "significant_languages": [
        "JavaScript"
      ]
    },
    "owner": {
      "blog": "http://www.ncbi.nlm.nih.gov",
      "name": "NCBI - National Center for Biotechnology Information/NLM/NIH",
      "type": "Organization",
      "login": "ncbi",
      "company": null,
      "location": null,
      "followers": 2843,
      "avatar_url": "https://avatars.githubusercontent.com/u/3812119?v=4",
      "created_at": "2013-03-08T19:57:55Z",
      "is_verified": null,
      "public_repos": 152,
      "account_age_days": 4892
    },
    "license": {
      "state": "custom",
      "spdx_id": null,
      "raw_spdx": "NOASSERTION",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v3.51.1",
          "kind": "patch",
          "published_at": "2026-07-20T18:10:32Z"
        },
        {
          "tag": "v3.51.0",
          "kind": "minor",
          "published_at": "2026-07-07T13:33:00Z"
        },
        {
          "tag": "v3.50.0",
          "kind": "minor",
          "published_at": "2026-06-08T19:00:12Z"
        },
        {
          "tag": "v3.49.2",
          "kind": "patch",
          "published_at": "2026-05-07T15:59:45Z"
        },
        {
          "tag": "v3.49.1",
          "kind": "patch",
          "published_at": "2026-05-04T17:15:10Z"
        },
        {
          "tag": "v3.49.0",
          "kind": "minor",
          "published_at": "2026-04-29T15:18:39Z"
        },
        {
          "tag": "v3.48.1",
          "kind": "patch",
          "published_at": "2026-04-15T15:57:40Z"
        },
        {
          "tag": "v3.48.0",
          "kind": "minor",
          "published_at": "2026-04-14T14:00:32Z"
        },
        {
          "tag": "v3.47.1",
          "kind": "patch",
          "published_at": "2026-01-21T14:04:31Z"
        },
        {
          "tag": "v3.47.0b",
          "kind": "other",
          "published_at": "2025-12-30T16:51:56Z"
        },
        {
          "tag": "v3.47.0",
          "kind": "minor",
          "published_at": "2025-12-29T18:57:10Z"
        },
        {
          "tag": "v3.46.0",
          "kind": "minor",
          "published_at": "2025-12-10T15:13:19Z"
        },
        {
          "tag": "v3.45.5",
          "kind": "patch",
          "published_at": "2025-12-02T19:35:31Z"
        },
        {
          "tag": "v3.45.4",
          "kind": "patch",
          "published_at": "2025-11-13T19:08:22Z"
        },
        {
          "tag": "v3.45.3",
          "kind": "patch",
          "published_at": "2025-09-22T11:51:15Z"
        },
        {
          "tag": "v3.45.2",
          "kind": "patch",
          "published_at": "2025-08-20T13:39:58Z"
        },
        {
          "tag": "v3.45.1",
          "kind": "patch",
          "published_at": "2025-07-28T18:27:24Z"
        },
        {
          "tag": "v3.45.0",
          "kind": "minor",
          "published_at": "2025-07-10T19:11:30Z"
        },
        {
          "tag": "v3.44.2",
          "kind": "patch",
          "published_at": "2025-06-30T17:20:51Z"
        },
        {
          "tag": "v3.44.1",
          "kind": "patch",
          "published_at": "2025-06-26T17:48:16Z"
        },
        {
          "tag": "v3.44.0",
          "kind": "minor",
          "published_at": "2025-06-11T16:06:33Z"
        },
        {
          "tag": "v3.43.0",
          "kind": "minor",
          "published_at": "2025-05-27T18:47:27Z"
        },
        {
          "tag": "v3.42.0",
          "kind": "minor",
          "published_at": "2025-05-12T17:33:39Z"
        },
        {
          "tag": "v3.41.0",
          "kind": "minor",
          "published_at": "2025-04-02T12:50:00Z"
        },
        {
          "tag": "v3.40.6",
          "kind": "patch",
          "published_at": "2025-03-21T00:14:58Z"
        },
        {
          "tag": "v3.40.5",
          "kind": "patch",
          "published_at": "2025-03-03T22:21:38Z"
        },
        {
          "tag": "v3.40.4",
          "kind": "patch",
          "published_at": "2025-02-13T21:12:24Z"
        },
        {
          "tag": "v3.40.3",
          "kind": "patch",
          "published_at": "2025-01-15T20:13:32Z"
        },
        {
          "tag": "v3.40.2",
          "kind": "patch",
          "published_at": "2025-01-08T17:27:32Z"
        },
        {
          "tag": "v3.40.0",
          "kind": "minor",
          "published_at": "2024-12-11T15:24:33Z"
        },
        {
          "tag": "v3.39.0",
          "kind": "minor",
          "published_at": "2024-12-02T17:38:16Z"
        },
        {
          "tag": "v3.38.1",
          "kind": "patch",
          "published_at": "2024-11-15T01:39:21Z"
        },
        {
          "tag": "v3.38.0",
          "kind": "minor",
          "published_at": "2024-11-12T16:51:34Z"
        },
        {
          "tag": "v3.37.0",
          "kind": "minor",
          "published_at": "2024-10-16T17:46:52Z"
        },
        {
          "tag": "v3.36.1",
          "kind": "patch",
          "published_at": "2024-10-07T16:01:21Z"
        },
        {
          "tag": "v3.36.0",
          "kind": "minor",
          "published_at": "2024-10-03T12:33:49Z"
        },
        {
          "tag": "v3.35.0",
          "kind": "minor",
          "published_at": "2024-09-12T17:29:06Z"
        },
        {
          "tag": "v3.34.1",
          "kind": "patch",
          "published_at": "2024-08-05T17:39:01Z"
        },
        {
          "tag": "v3.34.0",
          "kind": "minor",
          "published_at": "2024-07-29T15:03:46Z"
        },
        {
          "tag": "v3.33.3",
          "kind": "patch",
          "published_at": "2024-07-15T13:57:30Z"
        },
        {
          "tag": "v3.33.2",
          "kind": "patch",
          "published_at": "2024-06-25T20:12:47Z"
        },
        {
          "tag": "v3.33.1",
          "kind": "patch",
          "published_at": "2024-06-19T13:17:05Z"
        },
        {
          "tag": "v3.33.0",
          "kind": "minor",
          "published_at": "2024-06-12T14:06:29Z"
        },
        {
          "tag": "v3.32.0",
          "kind": "minor",
          "published_at": "2024-05-28T15:10:50Z"
        },
        {
          "tag": "v3.31.4",
          "kind": "patch",
          "published_at": "2024-05-11T14:21:50Z"
        },
        {
          "tag": "v3.31.3",
          "kind": "patch",
          "published_at": "2024-04-15T18:49:26Z"
        },
        {
          "tag": "v3.31.2",
          "kind": "patch",
          "published_at": "2024-04-09T18:28:56Z"
        },
        {
          "tag": "v3.31.1",
          "kind": "patch",
          "published_at": "2024-03-28T15:03:46Z"
        },
        {
          "tag": "v3.31.0",
          "kind": "minor",
          "published_at": "2024-03-25T16:14:35Z"
        },
        {
          "tag": "v3.30.1",
          "kind": "patch",
          "published_at": "2024-03-11T14:11:09Z"
        },
        {
          "tag": "v3.30.0",
          "kind": "minor",
          "published_at": "2024-02-27T17:51:09Z"
        },
        {
          "tag": "v3.29.5",
          "kind": "patch",
          "published_at": "2024-02-05T15:31:10Z"
        },
        {
          "tag": "v3.29.4",
          "kind": "patch",
          "published_at": "2024-01-19T14:46:58Z"
        },
        {
          "tag": "v3.29.3",
          "kind": "patch",
          "published_at": "2024-01-11T17:22:35Z"
        },
        {
          "tag": "v3.29.2",
          "kind": "patch",
          "published_at": "2024-01-08T15:13:18Z"
        },
        {
          "tag": "v3.29.1",
          "kind": "patch",
          "published_at": "2023-12-14T23:57:32Z"
        },
        {
          "tag": "v3.29.0",
          "kind": "minor",
          "published_at": "2023-12-13T19:48:41Z"
        },
        {
          "tag": "v3.28.4",
          "kind": "patch",
          "published_at": "2023-11-07T18:32:47Z"
        },
        {
          "tag": "v3.28.3",
          "kind": "patch",
          "published_at": "2023-10-05T16:06:47Z"
        },
        {
          "tag": "v3.28.2",
          "kind": "patch",
          "published_at": "2023-09-14T14:31:02Z"
        },
        {
          "tag": "v3.28.1",
          "kind": "patch",
          "published_at": "2023-08-23T19:43:53Z"
        },
        {
          "tag": "v3.28.0",
          "kind": "minor",
          "published_at": "2023-07-31T15:28:03Z"
        },
        {
          "tag": "v3.27.0",
          "kind": "minor",
          "published_at": "2023-07-13T23:45:21Z"
        },
        {
          "tag": "v3.26.1",
          "kind": "patch",
          "published_at": "2023-07-10T16:31:37Z"
        },
        {
          "tag": "v3.26.0",
          "kind": "minor",
          "published_at": "2023-06-20T15:00:58Z"
        },
        {
          "tag": "v3.25.4",
          "kind": "patch",
          "published_at": "2023-06-15T19:33:22Z"
        },
        {
          "tag": "v3.25.3",
          "kind": "patch",
          "published_at": "2023-05-24T21:25:03Z"
        },
        {
          "tag": "v3.25.2",
          "kind": "patch",
          "published_at": "2023-05-17T15:56:45Z"
        },
        {
          "tag": "v3.25.1",
          "kind": "patch",
          "published_at": "2023-05-03T21:10:45Z"
        },
        {
          "tag": "v3.25.0",
          "kind": "minor",
          "published_at": "2023-04-26T14:04:41Z"
        },
        {
          "tag": "v3.24.2",
          "kind": "patch",
          "published_at": "2023-04-24T18:17:50Z"
        },
        {
          "tag": "v3.24.1",
          "kind": "patch",
          "published_at": "2023-04-14T22:58:50Z"
        },
        {
          "tag": "v3.24.0",
          "kind": "minor",
          "published_at": "2023-04-10T18:56:39Z"
        },
        {
          "tag": "v3.23.3",
          "kind": "patch",
          "published_at": "2023-04-06T23:53:40Z"
        },
        {
          "tag": "v3.23.2",
          "kind": "patch",
          "published_at": "2023-04-03T01:03:10Z"
        },
        {
          "tag": "v3.23.1",
          "kind": "patch",
          "published_at": "2023-03-22T19:39:36Z"
        },
        {
          "tag": "v3.23.0",
          "kind": "minor",
          "published_at": "2023-03-16T22:21:26Z"
        },
        {
          "tag": "v3.22.4",
          "kind": "patch",
          "published_at": "2023-03-07T20:16:14Z"
        },
        {
          "tag": "v3.22.3",
          "kind": "patch",
          "published_at": "2023-03-01T20:50:28Z"
        },
        {
          "tag": "v3.22.2",
          "kind": "patch",
          "published_at": "2023-02-25T15:48:28Z"
        },
        {
          "tag": "v3.22.1",
          "kind": "patch",
          "published_at": "2023-02-17T23:47:59Z"
        },
        {
          "tag": "v3.22.0",
          "kind": "minor",
          "published_at": "2023-02-14T15:30:51Z"
        },
        {
          "tag": "v3.21.3",
          "kind": "patch",
          "published_at": "2023-02-06T03:43:34Z"
        },
        {
          "tag": "v3.21.2",
          "kind": "patch",
          "published_at": "2023-02-06T03:43:22Z"
        },
        {
          "tag": "v3.21.1",
          "kind": "patch",
          "published_at": "2023-02-06T03:43:09Z"
        },
        {
          "tag": "v3.21.0b",
          "kind": "other",
          "published_at": "2023-02-06T03:42:54Z"
        },
        {
          "tag": "v3.21.0",
          "kind": "minor",
          "published_at": "2023-02-06T03:42:37Z"
        },
        {
          "tag": "v3.20.1",
          "kind": "patch",
          "published_at": "2023-02-06T03:42:18Z"
        },
        {
          "tag": "v3.20.0",
          "kind": "minor",
          "published_at": "2023-02-06T03:42:02Z"
        },
        {
          "tag": "v3.19.1b",
          "kind": "other",
          "published_at": "2023-02-06T03:41:44Z"
        },
        {
          "tag": "v3.19.1",
          "kind": "patch",
          "published_at": "2023-02-06T03:41:36Z"
        },
        {
          "tag": "v3.19.0b",
          "kind": "other",
          "published_at": "2023-02-06T03:41:27Z"
        },
        {
          "tag": "v3.19.0",
          "kind": "minor",
          "published_at": "2023-02-06T03:41:18Z"
        },
        {
          "tag": "v3.18.1",
          "kind": "patch",
          "published_at": "2023-02-06T03:41:09Z"
        },
        {
          "tag": "v3.18.0b",
          "kind": "other",
          "published_at": "2023-02-06T03:40:52Z"
        },
        {
          "tag": "v3.18.0",
          "kind": "minor",
          "published_at": "2023-02-06T03:40:42Z"
        },
        {
          "tag": "v3.17.0b",
          "kind": "other",
          "published_at": "2023-02-06T03:40:31Z"
        },
        {
          "tag": "v3.17.0",
          "kind": "minor",
          "published_at": "2023-02-06T03:40:23Z"
        },
        {
          "tag": "v3.16.3",
          "kind": "patch",
          "published_at": "2023-02-06T03:40:13Z"
        },
        {
          "tag": "v3.16.2",
          "kind": "patch",
          "published_at": "2023-02-06T03:40:05Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "b53d64147fa87125ab958b26e58f9b59771f05de",
          "body": "Merge in STRUC/icn3d from release3.51.1 to master\n\n* commit '76d1b35aead0335b463cc00aad2022138171d1fa':\n  Updated to include glycans in the linked residues.",
          "is_bot": false,
          "headline": "Pull request #732: Updated to include glycans in the linked residues.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-07-22T15:56:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "76d1b35aead0335b463cc00aad2022138171d1fa",
          "body": null,
          "is_bot": false,
          "headline": "Updated to include glycans in the linked residues.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-07-22T15:56:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "96e5a9bbfed8f338a3f18eabf43bbe0e1351d424",
          "body": "Merge in STRUC/icn3d from release3.51.1 to master\n\n* commit '32157dab037f99c244ee52fba5924d00c730be03':\n  Updated to include glycans in the linked residues.\n  Updated to include glycans in the linked residues.",
          "is_bot": false,
          "headline": "Pull request #731: Updated to include glycans in the linked residues.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-07-20T18:09:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "32157dab037f99c244ee52fba5924d00c730be03",
          "body": null,
          "is_bot": false,
          "headline": "Updated to include glycans in the linked residues.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-07-20T18:08:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "51d26ce1b52b4952ffd0e2254f6a44795654f35a",
          "body": null,
          "is_bot": false,
          "headline": "Updated to include glycans in the linked residues.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-07-20T18:07:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "75ab788d3b7c2994be9a0d8b27d0d7ac3a47c8e4",
          "body": "…grated 2D and 3D views.\n\nMerge in STRUC/icn3d from release3.51.0 to master\n\n* commit '2b5201aa53ffac00cd7826ee2e9b4ce6db8830a3':\n  Upgraded \"2D Diagram for Ig Domains\" to allow integrated 2D and 3D views.",
          "is_bot": false,
          "headline": "Pull request #730: Upgraded \"2D Diagram for Ig Domains\" to allow inte…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-07-07T13:31:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b5201aa53ffac00cd7826ee2e9b4ce6db8830a3",
          "body": "…ews.",
          "is_bot": false,
          "headline": "Upgraded \"2D Diagram for Ig Domains\" to allow integrated 2D and 3D vi…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-07-07T13:30:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "79feff20b9ed424c5634834c0af794988927947e",
          "body": "… show \"2D Diagram for Nucleotides\" integrated with 3D view. The base pairs are either from FR3D or extended mmCIF with base pair information.\n\nMerge in STRUC/icn3d from release3.50.0 to master\n\n* commit 'a8591cbcef68d8af0eead8b3dc39b7a66f965f5b':\n  users can choose to use both R2DT and RNAcanvas to show \"2D Diagram for Nucleotides\" integrated with 3D view. The base pairs are either from Fr3D or extended mmCIF with base pair information.",
          "is_bot": false,
          "headline": "Pull request #729: users can choose to use both R2DT and RNAcanvas to…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-06-09T02:17:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a8591cbcef68d8af0eead8b3dc39b7a66f965f5b",
          "body": "…or Nucleotides\" integrated with 3D view. The base pairs are either from Fr3D or extended mmCIF with base pair information.",
          "is_bot": false,
          "headline": "users can choose to use both R2DT and RNAcanvas to show \"2D Diagram f…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-06-09T02:16:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "db55d51a6198be6b919e3a7ae9b67a9742054299",
          "body": "… show \"2D Diagram for Nucleotides\" integrated with 3D view. The base pairs are either from FR3D or extended mmCIF with base pair information.\n\nMerge in STRUC/icn3d from release3.50.0 to master\n\n* commit '970906e32afa8085744441774d6fe1efab8f08c4':\n  users can choose to use both R2DT and RNAcanvas to show \"2D Diagram for Nucleotides\" integrated with 3D view. The base pairs are either from Fr3D or extended mmCIF with base pair information.",
          "is_bot": false,
          "headline": "Pull request #728: users can choose to use both R2DT and RNAcanvas to…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-06-08T18:58:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "970906e32afa8085744441774d6fe1efab8f08c4",
          "body": "…or Nucleotides\" integrated with 3D view. The base pairs are either from Fr3D or extended mmCIF with base pair information.",
          "is_bot": false,
          "headline": "users can choose to use both R2DT and RNAcanvas to show \"2D Diagram f…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-06-08T18:57:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "57a74a7ca9864fb365f6735da6179345eff521f8",
          "body": "… can click on 2D Diagram to show selection on 3D view.\n\nMerge in STRUC/icn3d from release3.49.2 to master\n\n* commit '43c33289df3d84912204e0e8c801b11e20b023e6':\n  Updated \"2D Diagram for Nucleotides\" so that users can click on 2D Diagram to show selection on 3D view.",
          "is_bot": false,
          "headline": "Pull request #727: Updated \"2D Diagram for Nucleotides\" so that users…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-11T15:48:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "43c33289df3d84912204e0e8c801b11e20b023e6",
          "body": "…agram to show selection on 3D view.",
          "is_bot": false,
          "headline": "Updated \"2D Diagram for Nucleotides\" so that users can click on 2D Di…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-11T15:48:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1176b0ae10caa14f8de62c26af6eda211a71a897",
          "body": "… can click on 2D Diagram to show selection on 3D view.\n\nMerge in STRUC/icn3d from release3.49.2 to master\n\n* commit 'd8346b4e671405d099046a6a6b164a36c8f62f57':\n  Updated \"2D Diagram for Nucleotides\" so that users can click on 2D Diagram to show selection on 3D view.",
          "is_bot": false,
          "headline": "Pull request #726: Updated \"2D Diagram for Nucleotides\" so that users…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-08T14:30:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d8346b4e671405d099046a6a6b164a36c8f62f57",
          "body": "…agram to show selection on 3D view.",
          "is_bot": false,
          "headline": "Updated \"2D Diagram for Nucleotides\" so that users can click on 2D Di…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-08T14:30:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "127539a5595ba6b55045b8d0115ed2818e9352b9",
          "body": "… can click on 2D Diagram to show selection on 3D view.\n\nMerge in STRUC/icn3d from release3.49.2 to master\n\n* commit 'e792a5577b09cbc2928052720068f9ca8d0d0829':\n  Updated \"2D Diagram for Nucleotides\" so that users can click on 2D Diagram to show selection on 3D view.",
          "is_bot": false,
          "headline": "Pull request #725: Updated \"2D Diagram for Nucleotides\" so that users…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-08T14:15:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e792a5577b09cbc2928052720068f9ca8d0d0829",
          "body": "…agram to show selection on 3D view.",
          "is_bot": false,
          "headline": "Updated \"2D Diagram for Nucleotides\" so that users can click on 2D Di…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-08T14:14:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "43338d3a6ab007481cc0e4ffac85bdef2195414d",
          "body": "… can click on 2D Diagram to show selection on 3D view.\n\nMerge in STRUC/icn3d from release3.49.2 to master\n\n* commit '63f494b4b004a4f37d10e8178c8ab1e9a9fd9bf9':\n  Updated \"2D Diagram for Nucleotides\" so that users can click on 2D Diagram to show selection on 3D view.",
          "is_bot": false,
          "headline": "Pull request #724: Updated \"2D Diagram for Nucleotides\" so that users…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-08T11:45:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "63f494b4b004a4f37d10e8178c8ab1e9a9fd9bf9",
          "body": "…agram to show selection on 3D view.",
          "is_bot": false,
          "headline": "Updated \"2D Diagram for Nucleotides\" so that users can click on 2D Di…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-08T11:45:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0d70f72c7d735381f61e2ae96fa8a2540cc851ce",
          "body": "… can click on 2D Diagram to show selection on 3D view.\n\nMerge in STRUC/icn3d from release3.49.2 to master\n\n* commit '3c9f7c67c6da5b144e57a040c13c84a08dcd3311':\n  Updated \"2D Diagram for Nucleotides\" so that users can click on 2D Diagram to show selection on 3D view.",
          "is_bot": false,
          "headline": "Pull request #723: Updated \"2D Diagram for Nucleotides\" so that users…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-07T15:58:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3c9f7c67c6da5b144e57a040c13c84a08dcd3311",
          "body": "…agram to show selection on 3D view.",
          "is_bot": false,
          "headline": "Updated \"2D Diagram for Nucleotides\" so that users can click on 2D Di…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-07T15:57:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bdec93ebfd12e6a79f4ae026833d7f06d327d3c4",
          "body": "…iagram for each Ig domain in a chain.\n\nMerge in STRUC/icn3d from release3.49.1 to master\n\n* commit 'f295377e5ffcbf43f4a0aba8ac147d1bf5e79007':\n  Upgraded \"2D Diagram for Ig Domains\" to have one diagram for each Ig domain in a chain.",
          "is_bot": false,
          "headline": "Pull request #722: Upgraded \"2D Diagram for Ig Domains\" to have one d…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-06T13:40:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f295377e5ffcbf43f4a0aba8ac147d1bf5e79007",
          "body": "…domain in a chain.",
          "is_bot": false,
          "headline": "Upgraded \"2D Diagram for Ig Domains\" to have one diagram for each Ig …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-06T13:39:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4d3d57c405454ea4dc2f21ede82f5ecfa3d65432",
          "body": "…iagram for each Ig domain in a chain.\n\nMerge in STRUC/icn3d from release3.49.1 to master\n\n* commit '6e6f03c86407f62af886ff09424a146b2ba6326a':\n  Upgraded \"2D Diagram for Ig Domains\" to have one diagram for each Ig domain in a chain.",
          "is_bot": false,
          "headline": "Pull request #721: Upgraded \"2D Diagram for Ig Domains\" to have one d…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-04T17:29:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6e6f03c86407f62af886ff09424a146b2ba6326a",
          "body": "…domain in a chain.",
          "is_bot": false,
          "headline": "Upgraded \"2D Diagram for Ig Domains\" to have one diagram for each Ig …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-04T17:28:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4a15e86dc3152680195f77ed1f2e1a4bef1aeccf",
          "body": "…iagram for each Ig domain in a chain.\n\nMerge in STRUC/icn3d from release3.49.1 to master\n\n* commit '77823d5614575b376cf201c92fa8f7ce25b4ed4b':\n  Upgraded \"2D Diagram for Ig Domains\" to have one diagram for each Ig domain in a chain.",
          "is_bot": false,
          "headline": "Pull request #720: Upgraded \"2D Diagram for Ig Domains\" to have one d…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-04T17:13:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "77823d5614575b376cf201c92fa8f7ce25b4ed4b",
          "body": "…domain in a chain.",
          "is_bot": false,
          "headline": "Upgraded \"2D Diagram for Ig Domains\" to have one diagram for each Ig …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-05-04T17:12:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4d0ce46f29088463d67cda02f05f451341e9702e",
          "body": "…diagram, and \"2D Diagram for Ig Domains\" with predetermined Ig templates. The features are available via the menu \"Analysis > 2D Diagram\" in iCn3D.\n\nMerge in STRUC/icn3d from release3.49.0 to master\n\n* commit '1e5134ef9980c1a20257f4db206c238a7f2d4208':\n  Added \"2D Diagram for Nucleotides\" using the R2DT diagram, and \"2D Diagram for Ig Domains\" with predetermined Ig templates. The features are available via the menu \"Analysis > 2D Diagram\" in iCn3D.",
          "is_bot": false,
          "headline": "Pull request #719: Added \"2D Diagram for Nucleotides\" using the R2DT …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-04-29T15:17:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1e5134ef9980c1a20257f4db206c238a7f2d4208",
          "body": "…agram for Ig Domains\" with predetermined Ig templates. The features are available via the menu \"Analysis > 2D Diagram\" in iCn3D.",
          "is_bot": false,
          "headline": "Added \"2D Diagram for Nucleotides\" using the R2DT diagram, and \"2D Di…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-04-29T15:16:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4d4d508e2eaaab865c52fbe341125e343e4addd6",
          "body": "Merge in STRUC/icn3d from release3.48.1 to master\n\n* commit '37a768daa01fc42d6e341ef391bcb0fbc461d911':\n  Fixed the issue in changing backgroound color.",
          "is_bot": false,
          "headline": "Pull request #718: Fixed the issue in changing backgroound color.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-04-15T15:45:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "37a768daa01fc42d6e341ef391bcb0fbc461d911",
          "body": null,
          "is_bot": false,
          "headline": "Fixed the issue in changing backgroound color.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-04-15T15:45:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8e6a4ce24bf7476471646cb525bf87a5c72658ee",
          "body": "Merge in STRUC/icn3d from release3.48.1 to master\n\n* commit '27b9e68c80f7f54328a87827ac7c0978ea4c38da':\n  Fixed the issue in changing backgroound color.",
          "is_bot": false,
          "headline": "Pull request #717: Fixed the issue in changing backgroound color.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-04-15T15:33:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "27b9e68c80f7f54328a87827ac7c0978ea4c38da",
          "body": null,
          "is_bot": false,
          "headline": "Fixed the issue in changing backgroound color.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-04-15T15:33:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "90494fb871544f647d597d2936079363ed4597c9",
          "body": "Merge in STRUC/icn3d from release3.48.1 to master\n\n* commit '2a18fccf606f1ad68b4011af35b18f6f051cb031':\n  Fixed the issue in changing backgroound color.",
          "is_bot": false,
          "headline": "Pull request #716: Fixed the issue in changing backgroound color.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-04-15T15:25:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2a18fccf606f1ad68b4011af35b18f6f051cb031",
          "body": null,
          "is_bot": false,
          "headline": "Fixed the issue in changing backgroound color.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-04-15T15:24:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d3d21fd1722d27a9e6c035ed9f9a9df30ea949bd",
          "body": "… upgraded to version 1.2 by removing the templates for six IgE, seven IgFN3-like, and three other Igs.\n\nMerge in STRUC/icn3d from release3.48.0 to master\n\n* commit 'ee960a4762348eccbad202157d7acaf287dbc39f':\n  The IgStrand numbering scheme for Ig-fold has been upgraded to version 1.2 by removing the templates for six IgE, seven IgFN3-like, and three other Igs.",
          "is_bot": false,
          "headline": "Pull request #715: The IgStrand numbering scheme for Ig-fold has been…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-04-15T15:18:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ee960a4762348eccbad202157d7acaf287dbc39f",
          "body": "…n 1.2 by removing the templates for six IgE, seven IgFN3-like, and three other Igs.",
          "is_bot": false,
          "headline": "The IgStrand numbering scheme for Ig-fold has been upgraded to versio…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-04-15T15:18:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4806271fde70fca4ef427494dbf04f684041c8d5",
          "body": "… upgraded to version 1.2 by removing the templates for six IgE, seven IgFN3-like, and three other Igs.\n\nMerge in STRUC/icn3d from release3.48.0 to master\n\n* commit '2fe99207fa0262d41dc44e0d6092170df3eacb64':\n  The IgStrand numbering scheme for Ig-fold has been upgraded to version 1.2 by removing the templates for six IgE, seven IgFN3-like, and three other Igs.",
          "is_bot": false,
          "headline": "Pull request #714: The IgStrand numbering scheme for Ig-fold has been…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-04-14T13:58:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2fe99207fa0262d41dc44e0d6092170df3eacb64",
          "body": "…n 1.2 by removing the templates for six IgE, seven IgFN3-like, and three other Igs.",
          "is_bot": false,
          "headline": "The IgStrand numbering scheme for Ig-fold has been upgraded to versio…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-04-14T13:56:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e73411fbae85a84b012ecd472410630d4d7edac5",
          "body": "…D trajectories.\n\nMerge in STRUC/icn3d from release3.47.1 to master\n\n* commit '0e0819419ac59b202176760a0384bceebb937e2f':\n  Showed the count of hydrogen bonds over time for MD trajectories.",
          "is_bot": false,
          "headline": "Pull request #713: Showed the count of hydrogen bonds over time for M…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-01-21T14:03:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0e0819419ac59b202176760a0384bceebb937e2f",
          "body": null,
          "is_bot": false,
          "headline": "Showed the count of hydrogen bonds over time for MD trajectories.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2026-01-21T14:02:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "65febf421e771c5832f110f4bc0568efc70a7db0",
          "body": "…XTC) via the menu \"File > Open File > MD Trajectory File\", and draw a plane among three sets with the menu \"Style > Plane among 3 Sets\".\n\nMerge in STRUC/icn3d from release3.47.0 to master\n\n* commit 'e66cd06aafa440b63564dd16441d44f4493639d8':\n  Added the support to load trajectory file (DCD or XTC) via the menu \"File > Open File > MD Trajectory File\", and draw a plane among three sets with the menu \"Style > Plane among 3 Sets\".",
          "is_bot": false,
          "headline": "Pull request #712: Added the support to load trajectory file (DCD or …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-30T16:50:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e66cd06aafa440b63564dd16441d44f4493639d8",
          "body": "…File > Open File > MD Trajectory File\", and draw a plane among three sets with the menu \"Style > Plane among 3 Sets\".",
          "is_bot": false,
          "headline": "Added the support to load trajectory file (DCD or XTC) via the menu \"…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-30T16:50:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a6b08fcdbcba80899831816e6f77e604f084b328",
          "body": "…XTC) via the menu \"File > Open File > MD Trajectory File\", and draw a plane among three sets with the menu \"Style > Plane among 3 Sets\".\n\nMerge in STRUC/icn3d from release3.47.0 to master\n\n* commit 'a5eb03fe93bbe27d7efe68ce55cd92e710e495b8':\n  Added the support to load trajectory file (DCD or XTC) via the menu \"File > Open File > MD Trajectory File\", and draw a plane among three sets with the menu \"Style > Plane among 3 Sets\".",
          "is_bot": false,
          "headline": "Pull request #711: Added the support to load trajectory file (DCD or …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-29T19:49:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a5eb03fe93bbe27d7efe68ce55cd92e710e495b8",
          "body": "…File > Open File > MD Trajectory File\", and draw a plane among three sets with the menu \"Style > Plane among 3 Sets\".",
          "is_bot": false,
          "headline": "Added the support to load trajectory file (DCD or XTC) via the menu \"…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-29T19:48:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aeba0ca380ecf4f7f23741aefc0d5e12b09183b0",
          "body": "…XTC) via the menu \"File > Open File > MD Trajectory File\", and draw a plane among three sets with the menu \"Style > Plane among 3 Sets\".\n\nMerge in STRUC/icn3d from release3.47.0 to master\n\n* commit '3deae7c6692d4463ec3940ff9472384b73cbdaca':\n  Added the support to load trajectory file (DCD or XTC) via the menu \"File > Open File > MD Trajectory File\", and draw a plane among three sets with the menu \"Style > Plane among 3 Sets\".",
          "is_bot": false,
          "headline": "Pull request #710: Added the support to load trajectory file (DCD or …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-29T18:55:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3deae7c6692d4463ec3940ff9472384b73cbdaca",
          "body": "…File > Open File > MD Trajectory File\", and draw a plane among three sets with the menu \"Style > Plane among 3 Sets\".",
          "is_bot": false,
          "headline": "Added the support to load trajectory file (DCD or XTC) via the menu \"…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-29T18:54:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "26c9a1ccaaf0e08ab479d1c7c767042f86cc4010",
          "body": "… to use AI as a tutor to show users step-by-step instructions about how to build a custom view with five methods: Interactive, Sharable URL, Jupyter Notebook, Node.js script, and Python script.\n\nMerge in STRUC/icn3d from release3.46.0 to master\n\n* commit 'f94778865a4360d984512c155aa94a1bf20b9b20':\n\n[…]\nlp menu to use AI as a tutor to show users step-by-step instructions about how to build a custom view with five methods: Interactive, Sharable URL, Jupyter Notebook, Node.js script, and Python script.",
          "is_bot": false,
          "headline": "Pull request #709: Added an external link \"AI Tutor\" in the Help menu…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-15T18:24:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f94778865a4360d984512c155aa94a1bf20b9b20",
          "body": "…or to show users step-by-step instructions about how to build a custom view with five methods: Interactive, Sharable URL, Jupyter Notebook, Node.js script, and Python script.",
          "is_bot": false,
          "headline": "Added an external link \"AI Tutor\" in the Help menu to use AI as a tut…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-15T18:24:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0bca2f5aa7bf1e066c7bffbd7796d8c9ef6fa331",
          "body": "… to use AI as a tutor to show users step-by-step instructions about how to build a custom view with five methods: Interactive, Sharable URL, Jupyter Notebook, Node.js script, and Python script.\n\nMerge in STRUC/icn3d from release3.46.0 to master\n\n* commit '2ac50b4259c567eac81bd4df513600e4c7d29d18':\n\n[…]\nlp menu to use AI as a tutor to show users step-by-step instructions about how to build a custom view with five methods: Interactive, Sharable URL, Jupyter Notebook, Node.js script, and Python script.",
          "is_bot": false,
          "headline": "Pull request #708: Added an external link \"AI Tutor\" in the Help menu…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-10T15:24:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2ac50b4259c567eac81bd4df513600e4c7d29d18",
          "body": "…or to show users step-by-step instructions about how to build a custom view with five methods: Interactive, Sharable URL, Jupyter Notebook, Node.js script, and Python script.",
          "is_bot": false,
          "headline": "Added an external link \"AI Tutor\" in the Help menu to use AI as a tut…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-10T15:23:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "67cd04d2e95bdcc4718429215c2688484dea7f7a",
          "body": "… to use AI as a tutor to show users step-by-step instructions about how to build a custom view with five methods: Interactive, Sharable URL, Jupyter Notebook, Node.js script, and Python script.\n\nMerge in STRUC/icn3d from release3.46.0 to master\n\n* commit '934dbf84adeaee5740759ec7cc575622b018b595':\n\n[…]\nlp menu to use AI as a tutor to show users step-by-step instructions about how to build a custom view with five methods: Interactive, Sharable URL, Jupyter Notebook, Node.js script, and Python script.",
          "is_bot": false,
          "headline": "Pull request #707: Added an external link \"AI Tutor\" in the Help menu…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-10T15:11:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "934dbf84adeaee5740759ec7cc575622b018b595",
          "body": "…or to show users step-by-step instructions about how to build a custom view with five methods: Interactive, Sharable URL, Jupyter Notebook, Node.js script, and Python script.",
          "is_bot": false,
          "headline": "Added an external link \"AI Tutor\" in the Help menu to use AI as a tut…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-10T15:10:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fc315d430faaff48f0543afcbfcd04ec4d9c0e4e",
          "body": "…Added a general Node.js script general_id_cmd.js to output results based on PDB/AlphaFold ID and commands from sharable URLs.\n\nMerge in STRUC/icn3d from release3.45.5 to master\n\n* commit 'b832c0a67456089045c6436a074086f2b8a03561':\n  Fixed alternation display for aligned structures. Added a general Node.js script general_id_cmd.js to output results based on PDB/AlphaFold ID and commands from sharable URLs.",
          "is_bot": false,
          "headline": "Pull request #706: Fixed alternation display for aligned structures. …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-02T19:33:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b832c0a67456089045c6436a074086f2b8a03561",
          "body": "…e.js script general_id_cmd.js to output results based on PDB/AlphaFold ID and commands from sharable URLs.",
          "is_bot": false,
          "headline": "Fixed alternation display for aligned structures. Added a general Nod…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-12-02T19:32:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b26d49092fc4ce735579a7c9ee02e51d75cfacdd",
          "body": "…ersion 6, e.g., AF-Q12860-F1-model_v6.pdb.\n\nMerge in STRUC/icn3d from release3.45.4 to master\n\n* commit '45832dd5024276c4384202629b5986da739ba43a':\n  AlphaFold models were upgraded from version 4 to version 6, e.g., AF-Q12860-F1-model_v6.pdb.\n  AlphaFold models were upgraded from version 4 to version 6, e.g., AF-Q12860-F1-model_v6.pdb.",
          "is_bot": false,
          "headline": "Pull request #705: AlphaFold models were upgraded from version 4 to v…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-11-19T16:56:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "45832dd5024276c4384202629b5986da739ba43a",
          "body": "…Q12860-F1-model_v6.pdb.",
          "is_bot": false,
          "headline": "AlphaFold models were upgraded from version 4 to version 6, e.g., AF-…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-11-19T16:55:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b48d72245e5075e424426942cdc82029218fa442",
          "body": "…Q12860-F1-model_v6.pdb.",
          "is_bot": false,
          "headline": "AlphaFold models were upgraded from version 4 to version 6, e.g., AF-…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-11-19T16:50:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2d34819d39a09f4d59e83aa7a34a3e4d8cf77ee0",
          "body": "…ersion 6, e.g., AF-Q12860-F1-model_v6.pdb.\n\nMerge in STRUC/icn3d from release3.45.4 to master\n\n* commit '6fb34979f5f4547302af221b385102d144983084':\n  AlphaFold models were upgraded from version 4 to version 6, e.g., AF-Q12860-F1-model_v6.pdb.",
          "is_bot": false,
          "headline": "Pull request #704: AlphaFold models were upgraded from version 4 to v…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-11-13T19:22:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6fb34979f5f4547302af221b385102d144983084",
          "body": "…Q12860-F1-model_v6.pdb.",
          "is_bot": false,
          "headline": "AlphaFold models were upgraded from version 4 to version 6, e.g., AF-…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-11-13T19:21:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b0b6911d252dd5e332c036e6ebd42d21938b4c11",
          "body": "…ersion 6, e.g., AF-Q12860-F1-model_v6.pdb.\n\nMerge in STRUC/icn3d from release3.45.4 to master\n\n* commit 'b510ebbd4e58b1e347ee9b603dc72fba05ac8cbb':\n  AlphaFold models were upgraded from version 4 to version 6, e.g., AF-Q12860-F1-model_v6.pdb.",
          "is_bot": false,
          "headline": "Pull request #703: AlphaFold models were upgraded from version 4 to v…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-11-13T19:06:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b510ebbd4e58b1e347ee9b603dc72fba05ac8cbb",
          "body": "…Q12860-F1-model_v6.pdb.",
          "is_bot": false,
          "headline": "AlphaFold models were upgraded from version 4 to version 6, e.g., AF-…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-11-13T19:05:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9c883c6bc64062c86e33646617ab2dbe462a3c80",
          "body": "…00. Fixed sequence alignment view and camera viewpoint-related issues.\n\nMerge in STRUC/icn3d from release3.45.3 to master\n\n* commit '870fe677db67b4149b979ea7b50f59a68d9b42e4':\n  Enabled to input long PDB IDs starting with pdb_0000. Fixed sequence alignment view and camera viewpoint-related issues.",
          "is_bot": false,
          "headline": "Pull request #702: Enabled to input long PDB IDs starting with pdb_00…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-09-22T11:49:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "870fe677db67b4149b979ea7b50f59a68d9b42e4",
          "body": "…alignment view and camera viewpoint-related issues.",
          "is_bot": false,
          "headline": "Enabled to input long PDB IDs starting with pdb_0000. Fixed sequence …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-09-22T11:48:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "60e3acfc2207322347f1cf33c28eb029f4cfbf17",
          "body": "…00. Fixed sequence alignment view and camera viewpoint-related issues.\n\nMerge in STRUC/icn3d from release3.45.3 to master\n\n* commit '0d1a91b1c18a20e5baf22c486c91ea3da777af22':\n  Enabled to input long PDB IDs starting with pdb_0000. Fixed sequence alignment view and camera viewpoint-related issues.",
          "is_bot": false,
          "headline": "Pull request #701: Enabled to input long PDB IDs starting with pdb_00…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-09-22T11:44:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0d1a91b1c18a20e5baf22c486c91ea3da777af22",
          "body": "…alignment view and camera viewpoint-related issues.",
          "is_bot": false,
          "headline": "Enabled to input long PDB IDs starting with pdb_0000. Fixed sequence …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-09-22T11:43:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8c69e89bc2883d19834dbbb12b6cd9fedefab7c7",
          "body": "…own short URL service; removed the line \"global.THREE = require('three')\" in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.\n\nMerge in STRUC/icn3d from release3.45.2 to master\n\n* commit '8d5815c58e4f3b188130d6c6be9ec418b77b675e':\n  Switched from Google Firebase Dynamic Link to our own short URL service; removed the line \"global.THREE = require('three')\" in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.",
          "is_bot": false,
          "headline": "Pull request #700: Switched from Google Firebase Dynamic Link to our …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-08-26T14:16:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8d5815c58e4f3b188130d6c6be9ec418b77b675e",
          "body": "…ce; removed the line \"global.THREE = require('three')\" in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.",
          "is_bot": false,
          "headline": "Switched from Google Firebase Dynamic Link to our own short URL servi…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-08-26T14:15:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a3f92b9c18b89014e04b8182c0b53e09c09de7af",
          "body": "…own short URL service; removed the line \"global.THREE = require('three')\" in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.\n\nMerge in STRUC/icn3d from release3.45.2 to master\n\n* commit '659a862ce52e75a49e45fc55b9fec8c12b87f62c':\n  Switched from Google Firebase Dynamic Link to our own short URL service; removed the line \"global.THREE = require('three')\" in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.",
          "is_bot": false,
          "headline": "Pull request #699: Switched from Google Firebase Dynamic Link to our …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-08-21T13:55:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "659a862ce52e75a49e45fc55b9fec8c12b87f62c",
          "body": "…ce; removed the line \"global.THREE = require('three')\" in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.",
          "is_bot": false,
          "headline": "Switched from Google Firebase Dynamic Link to our own short URL servi…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-08-21T13:55:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5ccf13bd1759a4f24f918151bb616118a3aa5f99",
          "body": "…own short URL service; removed the line \"global.THREE = require('three')\" in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.\n\nMerge in STRUC/icn3d from release3.45.2 to master\n\n* commit '35374e1811db674ee18aaf15d992aff256003528':\n  Switched from Google Firebase Dynamic Link to our own short URL service; removed the line \"global.THREE = require('three')\" in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.",
          "is_bot": false,
          "headline": "Pull request #698: Switched from Google Firebase Dynamic Link to our …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-08-21T13:53:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "35374e1811db674ee18aaf15d992aff256003528",
          "body": "…ce; removed the line \"global.THREE = require('three')\" in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.",
          "is_bot": false,
          "headline": "Switched from Google Firebase Dynamic Link to our own short URL servi…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-08-21T13:52:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "be4c4d7253d4996dfae7584b55ac877dd2fdfdcc",
          "body": "…own short URL service; removed the line \"global.THREE = require('three')\" in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.\n\nMerge in STRUC/icn3d from release3.45.2 to master\n\n* commit '2bf5499dcad80a7f8e13af1719669437d69562ac':\n  Switched from Google Firebase Dynamic Link to our own short URL service; removed the line \"global.THREE = require('three')\" in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.",
          "is_bot": false,
          "headline": "Pull request #697: Switched from Google Firebase Dynamic Link to our …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-08-21T13:36:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2bf5499dcad80a7f8e13af1719669437d69562ac",
          "body": "…ce; removed the line \"global.THREE = require('three')\" in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.",
          "is_bot": false,
          "headline": "Switched from Google Firebase Dynamic Link to our own short URL servi…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-08-21T13:35:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c89330df2446ea9471b4251356d2d013a9cfcee4",
          "body": "… in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.\n\nMerge in STRUC/icn3d from release3.45.2 to master\n\n* commit '70f2bf4efb28ea605be05e313bf3b1c01d830456':\n  Removed the line \"global.THREE = require('three')\" in iCn3D node.js scripts since three.js was compiled into icn3d.js since iCn3D 3.44.0.",
          "is_bot": false,
          "headline": "Pull request #696: Removed the line \"global.THREE = require('three')\"…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-08-20T13:34:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "70f2bf4efb28ea605be05e313bf3b1c01d830456",
          "body": "…cripts since three.js was compiled into icn3d.js since iCn3D 3.44.0.",
          "is_bot": false,
          "headline": "Removed the line \"global.THREE = require('three')\" in iCn3D node.js s…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-08-20T13:33:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7bcd8b01d309393eadac44f31fed6e46af24c245",
          "body": "…+ alignment sequence display.\n\nMerge in STRUC/icn3d from release3.45.1 to master\n\n* commit '379ae3c1e881082d028e3eb7edb9ca06d47368a9':\n  Fixed bugs in assigning specific template and VAST+ alignment sequence display.",
          "is_bot": false,
          "headline": "Pull request #695: Fixed bugs in assigning specific template and VAST…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-07-28T18:25:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "379ae3c1e881082d028e3eb7edb9ca06d47368a9",
          "body": "…e display.",
          "is_bot": false,
          "headline": "Fixed bugs in assigning specific template and VAST+ alignment sequenc…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-07-28T18:25:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6832d5e7fdfd210ab5fc5a2449c66df00fb98a48",
          "body": "…inks from trackball parameters to camera parameters used in BCF files. Fixed a bug in using node.js script.\n\nMerge in STRUC/icn3d from release3.45.0 to master\n\n* commit 'e1908cf5d77bb9ee29077e0129876f2a4ce5e6f7':\n  Switched the transformation description in share links from trackball parameters to camera parameters used in BCF files. Fixed a bug in using node.js script.",
          "is_bot": false,
          "headline": "Pull request #694: Switched the transformation description in share l…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-07-18T03:17:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e1908cf5d77bb9ee29077e0129876f2a4ce5e6f7",
          "body": "… parameters to camera parameters used in BCF files. Fixed a bug in using node.js script.",
          "is_bot": false,
          "headline": "Switched the transformation description in share links from trackball…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-07-18T03:16:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ca7c7b7ba8b3f5c722866104a75b1fa5ef8496f",
          "body": "…inks from trackball parameters to camera parameters used in BCF files. Fixed a bug in using node.js script.\n\nMerge in STRUC/icn3d from release3.45.0 to master\n\n* commit 'f1e51c972519dab1ed910ed0f3bc6197a026afa1':\n  Switched the transformation description in share links from trackball parameters to camera parameters used in BCF files. Fixed a bug in using node.js script.",
          "is_bot": false,
          "headline": "Pull request #693: Switched the transformation description in share l…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-07-10T19:10:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f1e51c972519dab1ed910ed0f3bc6197a026afa1",
          "body": "… parameters to camera parameters used in BCF files. Fixed a bug in using node.js script.",
          "is_bot": false,
          "headline": "Switched the transformation description in share links from trackball…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-07-10T19:08:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8b21ec508785de78f02e48f879f43c01f302c7c0",
          "body": "…and BCF files.\n\nMerge in STRUC/icn3d from release3.44.2 to master\n\n* commit '95a224712564823df5ae7e9a1127a2d0862dd18e':\n  Enabled to drag and drop to open mmCIF, PDB, PNG, and BCF files.",
          "is_bot": false,
          "headline": "Pull request #692: Enabled to drag and drop to open mmCIF, PDB, PNG, …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-07-02T15:20:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "95a224712564823df5ae7e9a1127a2d0862dd18e",
          "body": null,
          "is_bot": false,
          "headline": "Enabled to drag and drop to open mmCIF, PDB, PNG, and BCF files.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-07-02T15:20:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a6b54403ba7440db8073f1d9a07ceae5b7f5a830",
          "body": "…and BCF files.\n\nMerge in STRUC/icn3d from release3.44.2 to master\n\n* commit '9a3f467218606d8d4c61350b3ff02b9b3b7f2b2e':\n  Enabled to drag and drop to open mmCIF, PDB, PNG, and BCF files.",
          "is_bot": false,
          "headline": "Pull request #691: Enabled to drag and drop to open mmCIF, PDB, PNG, …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-06-30T17:17:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a3f467218606d8d4c61350b3ff02b9b3b7f2b2e",
          "body": null,
          "is_bot": false,
          "headline": "Enabled to drag and drop to open mmCIF, PDB, PNG, and BCF files.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-06-30T17:16:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6c0586777555b25006d09e8d1e872e0c0a7a0c18",
          "body": "…e File > BCF Viewpoint\".\n\nMerge in STRUC/icn3d from release3.44.1 to master\n\n* commit 'cc9299c691c6744a67788e002ddcbdc6a4369cdf':\n  Output BCF viewpoint file via the menu \"File > Save File > BCF Viewpoint\".",
          "is_bot": false,
          "headline": "Pull request #690: Output BCF viewpoint file via the menu \"File > Sav…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-06-26T17:46:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cc9299c691c6744a67788e002ddcbdc6a4369cdf",
          "body": "…int\".",
          "is_bot": false,
          "headline": "Output BCF viewpoint file via the menu \"File > Save File > BCF Viewpo…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-06-26T17:46:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b8ca3f6c53233e4e25a8c73b56783eca5ef060e4",
          "body": "…e.js directly into iCn3D library. No need to include three.js as a separate library.\n\nMerge in STRUC/icn3d from release3.44.0 to master\n\n* commit 'e20839ace52c82ec9dbcf6f434b5d23b8d0f8867':\n  Upgraded three.js to version 177 and compiled three.js directly into iCn3D library. No need to include three.js as a separate library.\n  Upgraded three.js to version 177 and compiled three.js directly into iCn3D library. No need to include three.js as a separate library.",
          "is_bot": false,
          "headline": "Pull request #689: Upgraded three.js to version 177 and compiled thre…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-06-23T17:41:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e20839ace52c82ec9dbcf6f434b5d23b8d0f8867",
          "body": "…iCn3D library. No need to include three.js as a separate library.",
          "is_bot": false,
          "headline": "Upgraded three.js to version 177 and compiled three.js directly into …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-06-23T17:40:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f104d38c612f9a56b8ade04570e079a6dfaeab80",
          "body": "…iCn3D library. No need to include three.js as a separate library.",
          "is_bot": false,
          "headline": "Upgraded three.js to version 177 and compiled three.js directly into …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-06-23T17:39:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d00a4b67779accc64ba8611af9f8637dcc60b3db",
          "body": "…e.js directly into iCn3D library. No need to include three.js as a separate library.\n\nMerge in STRUC/icn3d from release3.44.0 to master\n\n* commit '6449b08a27d15073e18bf517baf54b1f1b8b602a':\n  Upgraded three.js to version 177 and compiled three.js directly into iCn3D library. No need to include three.js as a separate library.\n  Upgraded three.js to version 177 and compiled three.js directly into iCn3D library. No need to include three.js as a separate library.",
          "is_bot": false,
          "headline": "Pull request #688: Upgraded three.js to version 177 and compiled thre…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-06-11T16:04:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6449b08a27d15073e18bf517baf54b1f1b8b602a",
          "body": "…iCn3D library. No need to include three.js as a separate library.",
          "is_bot": false,
          "headline": "Upgraded three.js to version 177 and compiled three.js directly into …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-06-11T16:02:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c55ba378a24d12ead55004d8a1ac8fb970914c1b",
          "body": "…iCn3D library. No need to include three.js as a separate library.",
          "is_bot": false,
          "headline": "Upgraded three.js to version 177 and compiled three.js directly into …",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-06-11T15:54:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "de6f65c3dbf45d5e17234adf896797ed2bd84734",
          "body": "…n short URL service.\n\nMerge in STRUC/icn3d from release3.43.0 to master\n\n* commit '0c3fd69cd7a20733332acd48258f0cf0c2897a40':\n  Replaced Google Firebase dynamic links with our own short URL service.",
          "is_bot": false,
          "headline": "Pull request #687: Replaced Google Firebase dynamic links with our ow…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-05-27T20:12:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0c3fd69cd7a20733332acd48258f0cf0c2897a40",
          "body": null,
          "is_bot": false,
          "headline": "Replaced Google Firebase dynamic links with our own short URL service.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-05-27T20:11:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8708b8791da52de8c300ef9e0e46bbed7471b938",
          "body": "…n short URL service.\n\nMerge in STRUC/icn3d from release3.43.0 to master\n\n* commit '99d7a4a1a75b06548f04847a0a03d2191cad2a88':\n  Replaced Google Firebase dynamic links with our own short URL service.",
          "is_bot": false,
          "headline": "Pull request #686: Replaced Google Firebase dynamic links with our ow…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-05-27T20:08:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "99d7a4a1a75b06548f04847a0a03d2191cad2a88",
          "body": null,
          "is_bot": false,
          "headline": "Replaced Google Firebase dynamic links with our own short URL service.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-05-27T20:07:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0037c7a5066609b9d1e0ec03dfeb49c224a825dc",
          "body": "…n short URL service.\n\nMerge in STRUC/icn3d from release3.43.0 to master\n\n* commit '4b51e97f459c9d516adeaef7cfa3709591a1895b':\n  Replaced Google Firebase dynamic links with our own short URL service.",
          "is_bot": false,
          "headline": "Pull request #685: Replaced Google Firebase dynamic links with our ow…",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-05-27T18:45:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4b51e97f459c9d516adeaef7cfa3709591a1895b",
          "body": null,
          "is_bot": false,
          "headline": "Replaced Google Firebase dynamic links with our own short URL service.",
          "author_name": "Wang, Jiyao",
          "author_login": "jiywang3",
          "committed_at": "2025-05-27T18:43:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 100,
      "commits_last_year": 76,
      "latest_release_at": "2026-07-20T18:10:32Z",
      "latest_release_tag": "v3.51.1",
      "releases_from_tags": false,
      "days_since_last_push": 8,
      "active_weeks_last_year": 16,
      "days_since_latest_release": 10,
      "mean_days_between_releases": 22.5
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 62,
      "has_issue_template": false,
      "has_code_of_conduct": true,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "icn3d",
          "exists": true,
          "license": "SEE LICENSE IN LICENSE",
          "keywords": [
            "ncbi",
            "icn3d",
            "3d viewer",
            "protein",
            "structure",
            "node"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/icn3d",
          "is_deprecated": false,
          "latest_version": "3.51.2",
          "repository_url": "https://github.com/ncbi/icn3d",
          "versions_count": 250,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 2,
          "monthly_downloads": 2767,
          "first_published_at": "2021-05-03T20:35:53.972000Z",
          "latest_published_at": "2026-07-22T15:46:03.872000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        },
        {
          "name": "icn3dpy",
          "exists": true,
          "license": "MIT License",
          "keywords": [
            "WebGL-based",
            "protein",
            "structure",
            "viewer",
            "Development Status :: 5 - Production/Stable",
            "Intended Audience :: Developers",
            "Intended Audience :: Science/Research",
            "License :: OSI Approved :: MIT License",
            "Programming Language :: Python :: 2",
            "Programming Language :: Python :: 3",
            "Topic :: Scientific/Engineering :: Bio-Informatics",
            "Topic :: Scientific/Engineering :: Chemistry",
            "Topic :: Scientific/Engineering :: Visualization"
          ],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/icn3dpy/",
          "is_deprecated": false,
          "latest_version": "3.51.0",
          "repository_url": "https://github.com/ncbi/icn3d",
          "versions_count": 120,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 1148,
          "first_published_at": "2020-07-11T02:27:54.078712Z",
          "latest_published_at": "2026-07-07T13:28:23.945615Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 23
        }
      ]
    },
    "popularity": {
      "forks": 54,
      "stars": 175,
      "watchers": 14,
      "fork_history": {
        "days": [
          {
            "date": "2016-01-22",
            "count": 2
          },
          {
            "date": "2016-05-04",
            "count": 1
          },
          {
            "date": "2016-06-29",
            "count": 1
          },
          {
            "date": "2016-07-10",
            "count": 1
          },
          {
            "date": "2016-07-15",
            "count": 1
          },
          {
            "date": "2017-02-07",
            "count": 1
          },
          {
            "date": "2017-03-07",
            "count": 1
          },
          {
            "date": "2019-01-24",
            "count": 1
          },
          {
            "date": "2020-02-01",
            "count": 1
          },
          {
            "date": "2020-04-12",
            "count": 1
          },
          {
            "date": "2020-07-09",
            "count": 1
          },
          {
            "date": "2020-07-12",
            "count": 3
          },
          {
            "date": "2020-07-13",
            "count": 1
          },
          {
            "date": "2020-08-18",
            "count": 1
          },
          {
            "date": "2020-11-23",
            "count": 3
          },
          {
            "date": "2020-11-29",
            "count": 1
          },
          {
            "date": "2021-04-07",
            "count": 1
          },
          {
            "date": "2021-04-26",
            "count": 1
          },
          {
            "date": "2021-08-19",
            "count": 1
          },
          {
            "date": "2021-12-14",
            "count": 1
          },
          {
            "date": "2022-02-15",
            "count": 1
          },
          {
            "date": "2022-04-06",
            "count": 1
          },
          {
            "date": "2022-06-07",
            "count": 1
          },
          {
            "date": "2022-07-29",
            "count": 1
          },
          {
            "date": "2022-11-28",
            "count": 1
          },
          {
            "date": "2023-01-22",
            "count": 1
          },
          {
            "date": "2023-02-24",
            "count": 1
          },
          {
            "date": "2023-02-26",
            "count": 1
          },
          {
            "date": "2023-04-28",
            "count": 1
          },
          {
            "date": "2024-01-05",
            "count": 1
          },
          {
            "date": "2024-01-09",
            "count": 1
          },
          {
            "date": "2024-01-18",
            "count": 1
          },
          {
            "date": "2024-01-23",
            "count": 1
          },
          {
            "date": "2024-03-04",
            "count": 1
          },
          {
            "date": "2024-05-02",
            "count": 1
          },
          {
            "date": "2024-12-03",
            "count": 1
          },
          {
            "date": "2025-04-20",
            "count": 1
          },
          {
            "date": "2025-04-21",
            "count": 1
          },
          {
            "date": "2025-05-06",
            "count": 1
          },
          {
            "date": "2025-06-15",
            "count": 1
          },
          {
            "date": "2025-06-23",
            "count": 1
          },
          {
            "date": "2025-06-27",
            "count": 1
          },
          {
            "date": "2025-08-15",
            "count": 1
          },
          {
            "date": "2025-11-26",
            "count": 1
          },
          {
            "date": "2025-12-02",
            "count": 1
          },
          {
            "date": "2026-01-23",
            "count": 1
          },
          {
            "date": "2026-07-21",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 52,
        "total_forks": 54
      },
      "star_history": null,
      "open_issues_and_prs": 10
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "example"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [
        "icn3dnode/tmalign-icn3dnode/Makefile"
      ],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 1930687,
      "source_files_sampled": 201,
      "oversized_source_files": 25,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "jupyternotebook/setup.py",
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [
          {
            "name": "axios",
            "direct": true,
            "version": "0.25.0",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 8.6,
            "advisory_ids": [
              "GHSA-3g43-6gmg-66jw",
              "GHSA-3p68-rc4w-qgx5",
              "GHSA-43fc-jf86-j433",
              "GHSA-5c9x-8gcm-mpgx",
              "GHSA-62hf-57xw-28j9",
              "GHSA-6chq-wfr3-2hj9",
              "GHSA-7q8q-rj6j-mhjq",
              "GHSA-898c-q2cr-xwhg",
              "GHSA-fvcv-3m26-pcqx",
              "GHSA-hfxv-24rg-xrqf"
            ],
            "fixed_version": "1.18.0",
            "advisory_count": 23,
            "oldest_advisory_days": 994
          },
          {
            "name": "@tootallnate/once",
            "direct": false,
            "version": "1.1.2",
            "severity": "low",
            "ecosystem": "npm",
            "cvss_score": 3.3,
            "advisory_ids": [
              "GHSA-vpq2-c234-7xj6"
            ],
            "fixed_version": "3.0.1",
            "advisory_count": 1,
            "oldest_advisory_days": 149
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "low": 1,
          "high": 1
        },
        "advisory_count": 24,
        "affected_count": 2,
        "assessed_count": 77,
        "malicious_count": 0,
        "assessed_package": "npm:icn3d@3.51.2",
        "unassessed_count": 0,
        "direct_affected_count": 1
      },
      "ecosystems": [
        "npm",
        "pypi"
      ],
      "dependencies": [
        {
          "name": "jquery",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.5.0"
        },
        {
          "name": "jquery-ui",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "github:jquery/jquery-ui#1.13.2"
        },
        {
          "name": "line-awesome",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.3.0"
        },
        {
          "name": "three",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "~0.177.0"
        },
        {
          "name": "uglify-js",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.3.9"
        },
        {
          "name": "del",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.1.0"
        },
        {
          "name": "gulp-concat",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.6.1"
        },
        {
          "name": "gulp-dom",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.0.0"
        },
        {
          "name": "gulp-help",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.6.1"
        },
        {
          "name": "gulp-rename",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.0.0"
        },
        {
          "name": "gulp-replace",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.1"
        },
        {
          "name": "gulp-uglify",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.0.2"
        },
        {
          "name": "gulp-zip",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.0.1"
        },
        {
          "name": "rollup",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.45.2"
        },
        {
          "name": "rollup-plugin-node-resolve",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.2.0"
        },
        {
          "name": "rollup-plugin-terser",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^7.0.2"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "del",
            "direct": true,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "gulp-concat",
            "direct": true,
            "version": "2.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "gulp-dom",
            "direct": true,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "gulp-help",
            "direct": true,
            "version": "1.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "gulp-rename",
            "direct": true,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "gulp-replace",
            "direct": true,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "gulp-uglify",
            "direct": true,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "gulp-zip",
            "direct": true,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "jquery",
            "direct": true,
            "version": "3.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "jquery-ui",
            "direct": true,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "line-awesome",
            "direct": true,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "rollup",
            "direct": true,
            "version": "2.79.2",
            "ecosystem": "npm"
          },
          {
            "name": "rollup-plugin-node-resolve",
            "direct": true,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "rollup-plugin-terser",
            "direct": true,
            "version": "7.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "three",
            "direct": true,
            "version": "0.177.0",
            "ecosystem": "npm"
          },
          {
            "name": "uglify-js",
            "direct": true,
            "version": "3.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/code-frame",
            "direct": false,
            "version": "7.26.2",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.25.9",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/gen-mapping",
            "direct": false,
            "version": "0.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/resolve-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/set-array",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/source-map",
            "direct": false,
            "version": "0.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.25",
            "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": "@types/expect",
            "direct": false,
            "version": "1.20.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/glob",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/minimatch",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "22.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/resolve",
            "direct": false,
            "version": "0.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/vinyl",
            "direct": false,
            "version": "2.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "abab",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "6.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-globals",
            "direct": false,
            "version": "4.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-walk",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "aggregate-error",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "6.12.6",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-colors",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-gray",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-wrap",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "anymatch",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "append-buffer",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "archy",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "arr-diff",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "arr-filter",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "arr-flatten",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "arr-map",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "arr-union",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "array-each",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "array-equal",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "array-initial",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "array-last",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "array-slice",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "array-sort",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "array-union",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "array-unique",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "asn1",
            "direct": false,
            "version": "0.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "assert-plus",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "assign-symbols",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "async-done",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "async-each",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "async-limiter",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "async-settle",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "asynckit",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "atob",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "aws-sign2",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "aws4",
            "direct": false,
            "version": "1.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "bach",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "base",
            "direct": false,
            "version": "0.11.2",
            "ecosystem": "npm"
          },
          {
            "name": "bcrypt-pbkdf",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "binary-extensions",
            "direct": false,
            "version": "1.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "binaryextensions",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "bindings",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.11",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "browser-process-hrtime",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-crc32",
            "direct": false,
            "version": "0.2.13",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-equal",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-from",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "builtin-modules",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "cache-base",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "call-bind",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "camelcase",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "caseless",
            "direct": false,
            "version": "0.12.0",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "2.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "class-utils",
            "direct": false,
            "version": "0.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "clean-stack",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "clone",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "clone-buffer",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "clone-stats",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cloneable-readable",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "code-point-at",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "collection-map",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "collection-visit",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "color-support",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "combined-stream",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "2.13.0",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "2.20.3",
            "ecosystem": "npm"
          },
          {
            "name": "component-emitter",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "concat-stream",
            "direct": false,
            "version": "1.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "concat-with-sourcemaps",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "copy-descriptor",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "copy-props",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "core-util-is",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "core-util-is",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "cssom",
            "direct": false,
            "version": "0.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "cssstyle",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "d",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "dashdash",
            "direct": false,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "data-urls",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "2.6.9",
            "ecosystem": "npm"
          },
          {
            "name": "decamelize",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "decode-uri-component",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "deep-is",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "default-compare",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "default-resolution",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "define-data-property",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "define-properties",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "define-property",
            "direct": false,
            "version": "0.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "define-property",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "define-property",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "delayed-stream",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "detect-file",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "dir-glob",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "domexception",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "duplexify",
            "direct": false,
            "version": "3.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "each-props",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ecc-jsbn",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "end-of-stream",
            "direct": false,
            "version": "1.4.4",
            "ecosystem": "npm"
          },
          {
            "name": "error-ex",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "es-define-property",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-errors",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "es5-ext",
            "direct": false,
            "version": "0.10.64",
            "ecosystem": "npm"
          },
          {
            "name": "es6-iterator",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "es6-symbol",
            "direct": false,
            "version": "3.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "es6-weak-map",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "escodegen",
            "direct": false,
            "version": "1.14.3",
            "ecosystem": "npm"
          },
          {
            "name": "esniff",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "esprima",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estree-walker",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "esutils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "event-emitter",
            "direct": false,
            "version": "0.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "expand-brackets",
            "direct": false,
            "version": "2.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "expand-tilde",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "ext",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "extend",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "extend-shallow",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "extend-shallow",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "extglob",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "extsprintf",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "fancy-log",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-glob",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-json-stable-stringify",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-levenshtein",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "fast-levenshtein",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "fastq",
            "direct": false,
            "version": "1.17.1",
            "ecosystem": "npm"
          },
          {
            "name": "file-uri-to-path",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "findup-sync",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "findup-sync",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fined",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "flagged-respawn",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "flush-write-stream",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "for-in",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "for-own",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "forever-agent",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "form-data",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "fragment-cache",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "fs-mkdirp-stream",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fs.realpath",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "1.2.13",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "function-bind",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "get-caller-file",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "get-intrinsic",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-value",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "getpass",
            "direct": false,
            "version": "0.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "7.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "glob-stream",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob-watcher",
            "direct": false,
            "version": "5.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "global-modules",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "global-prefix",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "globby",
            "direct": false,
            "version": "10.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "glogg",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "gopd",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "gulp",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "gulp-cli",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "gulplog",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "har-schema",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "har-validator",
            "direct": false,
            "version": "5.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "has-ansi",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-gulplog",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-property-descriptors",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "has-proto",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "has-symbols",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "has-value",
            "direct": false,
            "version": "0.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "has-value",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-values",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "has-values",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "homedir-polyfill",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "hosted-git-info",
            "direct": false,
            "version": "2.8.9",
            "ecosystem": "npm"
          },
          {
            "name": "html-encoding-sniffer",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "http-signature",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.4.24",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "indent-string",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "inflight",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "ini",
            "direct": false,
            "version": "1.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "interpret",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "invert-kv",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-absolute",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-accessor-descriptor",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-arrayish",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-binary-path",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-buffer",
            "direct": false,
            "version": "1.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "is-core-module",
            "direct": false,
            "version": "2.15.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-data-descriptor",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-descriptor",
            "direct": false,
            "version": "0.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "is-descriptor",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-extendable",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-extendable",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-module",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-negated-glob",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-path-cwd",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-path-inside",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-object",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-object",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-relative",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-typedarray",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-unc-path",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-utf8",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-valid-glob",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-windows",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "isarray",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isobject",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "isobject",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "isstream",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "istextorbinary",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "jest-worker",
            "direct": false,
            "version": "26.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "js-tokens",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsbn",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "jsdom",
            "direct": false,
            "version": "12.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-stable-stringify-without-jsonify",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-stringify-safe",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "jsprim",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "just-debounce",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "kind-of",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "kind-of",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "kind-of",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "kind-of",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "last-run",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "lazystream",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "lcid",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lead",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "levn",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "liftoff",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "load-json-file",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "4.17.21",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.sortby",
            "direct": false,
            "version": "4.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "make-error",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "make-error-cause",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "make-iterator",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "map-cache",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "map-visit",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "matchdep",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge-stream",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge2",
            "direct": false,
            "version": "1.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "3.1.10",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "2.1.35",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "mixin-deep",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mute-stdout",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "nan",
            "direct": false,
            "version": "2.22.0",
            "ecosystem": "npm"
          },
          {
            "name": "nanomatch",
            "direct": false,
            "version": "1.2.13",
            "ecosystem": "npm"
          },
          {
            "name": "next-tick",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-package-data",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-path",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-path",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "now-and-later",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "number-is-nan",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "nwsapi",
            "direct": false,
            "version": "2.2.13",
            "ecosystem": "npm"
          },
          {
            "name": "oauth-sign",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "object-assign",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "object-assign",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-copy",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "object-keys",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-visit",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "object.assign",
            "direct": false,
            "version": "4.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "object.defaults",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "object.map",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "object.pick",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "object.reduce",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "optionator",
            "direct": false,
            "version": "0.8.3",
            "ecosystem": "npm"
          },
          {
            "name": "ordered-read-streams",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "os-locale",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-map",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse-filepath",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "parse-json",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse-node-version",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parse-passwd",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "pascalcase",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-dirname",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-is-absolute",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-parse",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "path-root",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-root-regex",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "path-type",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-type",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "performance-now",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "pify",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "pinkie",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "pinkie-promise",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "plugin-error",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "pn",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "posix-character-classes",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "prelude-ls",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "pretty-hrtime",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "process-nextick-args",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "psl",
            "direct": false,
            "version": "1.13.0",
            "ecosystem": "npm"
          },
          {
            "name": "pump",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "pump",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "pumpify",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "qs",
            "direct": false,
            "version": "6.5.3",
            "ecosystem": "npm"
          },
          {
            "name": "queue-microtask",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "randombytes",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "read-pkg",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "read-pkg-up",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "2.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "rechoir",
            "direct": false,
            "version": "0.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "regex-not",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "remove-bom-buffer",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "remove-bom-stream",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "remove-trailing-separator",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "repeat-element",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "repeat-string",
            "direct": false,
            "version": "1.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "replace-ext",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "replace-homedir",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "replacestream",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "request",
            "direct": false,
            "version": "2.88.2",
            "ecosystem": "npm"
          },
          {
            "name": "request-promise-core",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "request-promise-native",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "require-directory",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-main-filename",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "resolve",
            "direct": false,
            "version": "1.22.8",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-dir",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-options",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-url",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "ret",
            "direct": false,
            "version": "0.1.15",
            "ecosystem": "npm"
          },
          {
            "name": "reusify",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "rimraf",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "rollup-pluginutils",
            "direct": false,
            "version": "2.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "run-parallel",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "safe-regex",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "safer-buffer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "saxes",
            "direct": false,
            "version": "3.1.11",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "5.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "semver-greatest-satisfied-range",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "serialize-javascript",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "set-blocking",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "set-function-length",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "set-value",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "slash",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "snapdragon",
            "direct": false,
            "version": "0.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "snapdragon-node",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "snapdragon-util",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.5.7",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-resolve",
            "direct": false,
            "version": "0.5.3",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-support",
            "direct": false,
            "version": "0.5.21",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-url",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "sparkles",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-correct",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-exceptions",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-expression-parse",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "spdx-license-ids",
            "direct": false,
            "version": "3.0.20",
            "ecosystem": "npm"
          },
          {
            "name": "split-string",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "sshpk",
            "direct": false,
            "version": "1.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "stack-trace",
            "direct": false,
            "version": "0.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "static-extend",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "stealthy-require",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "stream-exhaust",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "stream-shift",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "string_decoder",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-bom",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-preserve-symlinks-flag",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "sver-compat",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "symbol-tree",
            "direct": false,
            "version": "3.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "terser",
            "direct": false,
            "version": "5.36.0",
            "ecosystem": "npm"
          },
          {
            "name": "textextensions",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "through2",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "through2",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "through2",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "through2-filter",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "time-stamp",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "to-absolute-glob",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "to-object-path",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "to-through",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "tough-cookie",
            "direct": false,
            "version": "2.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "tr46",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "tunnel-agent",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "tweetnacl",
            "direct": false,
            "version": "0.14.5",
            "ecosystem": "npm"
          },
          {
            "name": "type",
            "direct": false,
            "version": "2.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "type-check",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "typedarray",
            "direct": false,
            "version": "0.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "unc-path-regex",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "undertaker",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "undertaker-registry",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "6.19.8",
            "ecosystem": "npm"
          },
          {
            "name": "union-value",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "unique-stream",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "unset-value",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "upath",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "uri-js",
            "direct": false,
            "version": "4.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "urix",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "use",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "util-deprecate",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "uuid",
            "direct": false,
            "version": "3.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "v8flags",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "validate-npm-package-license",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "value-or-function",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "verror",
            "direct": false,
            "version": "1.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "vinyl",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "vinyl-fs",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vinyl-sourcemap",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "vinyl-sourcemaps-apply",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "w3c-hr-time",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "webidl-conversions",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-encoding",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-mimetype",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "whatwg-url",
            "direct": false,
            "version": "7.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "which-module",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "word-wrap",
            "direct": false,
            "version": "1.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": false,
            "version": "6.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "xml-name-validator",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "xmlchars",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "xtend",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "7.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "21.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "yazl",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "idisplay",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "jupyter",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 498,
        "direct_count": 16,
        "indirect_count": 482
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 3,
        "merged_prs": 8,
        "open_issues": 7,
        "closed_ratio": 0.937,
        "closed_issues": 104,
        "closed_unmerged_prs": 7
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "jiywang3",
          "commits": 1606,
          "avatar_url": "https://avatars.githubusercontent.com/u/11690222?v=4"
        },
        {
          "type": "User",
          "login": "Klortho",
          "commits": 20,
          "avatar_url": "https://avatars.githubusercontent.com/u/77226?v=4"
        },
        {
          "type": "User",
          "login": "th3linja",
          "commits": 11,
          "avatar_url": "https://avatars.githubusercontent.com/u/44933974?v=4"
        },
        {
          "type": "User",
          "login": "lewisg-ncbi",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/13484888?v=4"
        }
      ],
      "contributors_sampled": 4,
      "top_contributor_share": 0.98
    },
    "quality_signals": {
      "has_ci": false,
      "has_tests": false,
      "ci_workflows": [],
      "has_docs_dir": false,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 7,
            "reason": "binaries present in source code",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": null,
            "reason": "no pull request found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 6 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": null,
            "reason": "no workflows found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 9,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "27 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": null,
            "reason": "no dependencies found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "no SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": null,
            "reason": "No tokens found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "23 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "b53d64147fa87125ab958b26e58f9b59771f05de",
        "ran_at": "2026-07-30T20:35:06Z",
        "aggregate_score": 3.3,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-27T19:14:22Z",
      "oldest_open_prs": [
        {
          "number": 111,
          "created_at": "2024-01-24T01:16:57Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 116,
          "created_at": "2024-12-02T16:41:13Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 130,
          "created_at": "2026-07-21T04:38:25Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2025-01-15T12:48:09Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 55,
          "created_at": "2021-10-20T23:39:55Z",
          "last_comment_at": "2021-10-22T01:53:52Z",
          "last_comment_author": "jiywang3"
        },
        {
          "number": 58,
          "created_at": "2021-10-30T01:01:11Z",
          "last_comment_at": "2021-11-08T17:14:16Z",
          "last_comment_author": "jiywang3"
        },
        {
          "number": 64,
          "created_at": "2021-11-22T00:17:24Z",
          "last_comment_at": "2021-11-22T23:48:33Z",
          "last_comment_author": "jiywang3"
        },
        {
          "number": 67,
          "created_at": "2021-11-23T17:04:05Z",
          "last_comment_at": "2021-11-23T18:49:57Z",
          "last_comment_author": "jiywang3"
        },
        {
          "number": 70,
          "created_at": "2021-11-24T16:44:30Z",
          "last_comment_at": "2021-11-24T20:07:12Z",
          "last_comment_author": "digitaltodd"
        },
        {
          "number": 71,
          "created_at": "2021-11-24T17:23:02Z",
          "last_comment_at": "2021-11-24T19:39:51Z",
          "last_comment_author": "digitalbio"
        },
        {
          "number": 129,
          "created_at": "2026-04-16T18:42:15Z",
          "last_comment_at": "2026-04-29T15:48:05Z",
          "last_comment_author": "joelb123"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/ncbi/icn3d",
    "host": "github.com",
    "name": "icn3d",
    "owner": "ncbi"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": "The weighted overall 55 is calibrated to 57 on the published index scale (record calibration 2026-08-02).",
      "notes": [
        {
          "code": "overall_calibration",
          "params": {
            "raw": 55,
            "calibrated": 57,
            "calibration": "2026-08-02"
          }
        }
      ],
      "value": 57,
      "inputs": {
        "security": 38,
        "vitality": 80,
        "community": 58,
        "governance": 64,
        "calibration": "2026-08-02",
        "engineering": 31,
        "ai_readiness": 36,
        "weighted_overall_raw": 55
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 80,
        "weight": 0.21,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 67,
            "inputs": {
              "commits_last_year": 76,
              "human_commit_share": 1,
              "days_since_last_push": 8,
              "active_weeks_last_year": 16
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 8 days ago",
                "points": 28.8,
                "status": "partial",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 8
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "16/52 weeks with commits",
                "points": 11.1,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 16
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "76 commits in the last year",
                "points": 16.9,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 76
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "27 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": "exceptional",
            "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": "v3.51.1",
              "releases_from_tags": false,
              "days_since_latest_release": 10,
              "mean_days_between_releases": 22.5
            },
            "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 10 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 10
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~22.5 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 22.5
                    }
                  }
                ],
                "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": "exceptional",
            "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": 11,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 11 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 11
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 58,
        "weight": 0.17,
        "metrics": [
          {
            "key": "popularity",
            "band": "moderate",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 57,
            "inputs": {
              "forks": 54,
              "stars": 175,
              "watchers": 14,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "175 stars",
                "points": 36.3,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 175
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "54 forks",
                "points": 14.4,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 54
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "14 watchers",
                "points": 6.2,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 14
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 59,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "readme_badges": null,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": true,
              "readme_badge_services": [],
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file present, not a recognized license",
                "points": 16.9,
                "status": "partial",
                "details": [
                  {
                    "code": "license_custom",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 13.5,
                "status": "met",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "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": 60,
            "inputs": {
              "packages": [
                "icn3d",
                "icn3dpy"
              ],
              "dependents": null,
              "ecosystems": "npm, pypi",
              "total_downloads": null,
              "monthly_downloads": 3915
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "3,915 downloads/month across npm, pypi",
                "points": 47.9,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 3915,
                      "ecosystems": "npm, pypi"
                    }
                  }
                ],
                "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": 64,
        "weight": 0.23,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 25,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 4,
              "top_contributor_share": 0.98
            },
            "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 98% of commits",
                "points": 0.5,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 98
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "4 contributors",
                "points": 5.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 6 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Newcomer PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "newcomer_pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 64,
            "inputs": {
              "merged_prs": 8,
              "open_issues": 7,
              "closed_issues": 104,
              "prs_merged_7d": null,
              "prs_decided_7d": null,
              "prs_merged_30d": null,
              "prs_decided_30d": null,
              "issue_closed_ratio": 0.937,
              "closed_unmerged_prs": 7,
              "first_time_authors_30d": null,
              "first_time_prs_merged_30d": null,
              "first_time_prs_decided_30d": null
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "94% of issues closed",
                "points": 39.4,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 94
                    }
                  }
                ],
                "max_points": 42
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "8/15 decided PRs merged",
                "points": 16,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 8,
                      "decided": 15
                    }
                  }
                ],
                "max_points": 30
              },
              {
                "key": "newcomer_pr_acceptance",
                "name": "Newcomer PR acceptance",
                "detail": "no first-time contributor's PR decided in 30d",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_newcomer_prs",
                    "params": {
                      "days": 30
                    }
                  }
                ],
                "max_points": 13
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "excellent",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "followers": 2843,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "ncbi",
              "public_repos": 152,
              "account_age_days": 4892
            },
            "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": "2,843 followers of ncbi",
                "points": 24.8,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 2843,
                      "login": "ncbi"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "152 public repos, account ~13 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 152
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 13
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "exceptional",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "icn3d",
                "icn3dpy"
              ],
              "ecosystems": "npm, pypi",
              "any_deprecated": false,
              "min_days_since_publish": 8
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "2 package(s) on npm, pypi",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 2,
                      "ecosystems": "npm, pypi"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 8 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 8
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "250 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 250
                    }
                  }
                ],
                "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": "at_risk",
        "name": "Engineering Quality",
        "value": 31,
        "weight": 0.19,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "critical",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 1,
            "inputs": {
              "has_ci": false,
              "has_tests": false,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "topics": [
                "icn3d",
                "webgl",
                "protein",
                "3d-structure",
                "3d-viewer",
                "structure-viewer",
                "nucleotide",
                "chemical",
                "protein-viewer",
                "jupyter-notebook",
                "snp",
                "delphi",
                "nodejs",
                "molecular-viewer",
                "ar",
                "vr"
              ],
              "has_wiki": true,
              "homepage": "https://www.ncbi.nlm.nih.gov/Structure/icn3d",
              "has_readme": true,
              "has_docs_dir": false,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://www.ncbi.nlm.nih.gov/Structure/icn3d",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "16 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 16
                    }
                  }
                ],
                "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": "weak",
        "name": "Security",
        "value": 38,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Dangerous-Workflow, Packaging, Pinned-Dependencies, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "dangerous_workflow",
                    "packaging",
                    "pinned_dependencies",
                    "signed_releases",
                    "token_permissions"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 33,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 12,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 6,
              "scorecard_aggregate": 3.3
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "binaries present in source code",
                "points": 5.2,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 6 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no workflows found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "27 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "no SAST tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "No tokens found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "23 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "moderate",
            "name": "Dependency advisories",
            "note": "Matched the npm:icn3d@3.51.2 runtime dependency closure — what installing the published package pulls in — 77 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:icn3d@3.51.2",
                  "assessed": 77
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 60,
            "inputs": {
              "source": "osv",
              "advisories": 24,
              "affected_packages": 2,
              "assessed_packages": 77,
              "unassessed_packages": 0,
              "affected_by_severity": "high 1, low 1",
              "direct_affected_packages": 1
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "1 affected: axios 0.25.0 (high 8.6)",
                "points": 10.9,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 1,
                      "packages": "axios 0.25.0 (high 8.6)"
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "1 affected: @tootallnate/once 1.1.2 (low 3.3)",
                "points": 18.4,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_affected",
                    "params": {
                      "count": 1,
                      "packages": "@tootallnate/once 1.1.2 (low 3.3)"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "2 advisory-carrying package(s) unaddressed past 90 days; oldest published 994 days ago",
                "points": 30.8,
                "status": "partial",
                "details": [
                  {
                    "code": "advisories_stale",
                    "params": {
                      "days": 90,
                      "count": 2,
                      "oldest": 994
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "exceptional",
            "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": 77,
              "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": "exceptional",
            "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"
              ],
              "commit_weight_rule": {
                "min_commits": 50,
                "min_commit_share": 0.1
              },
              "review_only_matches": 0,
              "below_threshold_exposures": [],
              "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": "weak",
        "name": "AI Readiness",
        "value": 36,
        "weight": 0.04,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "weak",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 35,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.66,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "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": "66 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 35.2,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 66,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "at_risk",
            "name": "Verify loop (build / test / typecheck)",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_pinned_dependencies"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 31,
            "inputs": {
              "has_nix": false,
              "has_tests": false,
              "lockfiles": [
                "package-lock.json"
              ],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [
                "icn3dnode/tmalign-icn3dnode/Makefile"
              ],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "icn3dnode/tmalign-icn3dnode/Makefile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "icn3dnode/tmalign-icn3dnode/Makefile"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "weak",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 48,
            "inputs": {
              "primary_language": "JavaScript",
              "largest_source_bytes": 1930687,
              "source_files_sampled": 201,
              "oversized_source_files": 25
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "JavaScript without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "JavaScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "25/201 source files over 60KB",
                "points": 48.2,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 201,
                      "oversized": 25
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "weak",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "example"
              ],
              "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": "example",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "example"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
      }
    ],
    "classification": {
      "labels": [
        "library"
      ],
      "scores": {
        "library": 12,
        "notebook": 2
      },
      "primary": "library",
      "evidence": [
        {
          "tier": "distribution",
          "label": "library",
          "source": "registry:npm",
          "weight": 6
        },
        {
          "tier": "distribution",
          "label": "library",
          "source": "registry:pypi",
          "weight": 6
        },
        {
          "tier": "tags",
          "label": "notebook",
          "source": "tag:jupyter-notebook",
          "weight": 2
        }
      ],
      "artifacts": [],
      "confidence": "medium",
      "host_extension": false,
      "runs_as_process": false,
      "consumed_by_code": true
    },
    "metrics_version": "2.3.1"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-30T20:35:16.511245Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/n/ncbi/icn3d.svg",
  "full_name": "ncbi/icn3d",
  "license_state": "custom",
  "license_spdx": null
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v2.3.1, esquema v0.27.0 — metodología completa · wiki de métricas.

Cómo se sitúa un resultado dentro del registro general: estadísticas agregadasnpm, PyPI.