RepoTrust

Leaderboard github.com

RyanTheAllmighty/ai-usage-monitor

A local-first Electron desktop app for watching AI provider spend, credit, quota, and usage from the system tray.

  • View repository ↗
  • TypeScript
  • ★ 0
  • commit 54032d3a27e4
  • scored 2026-11-14
  • scoring prov-5+qual-2+sec-2

AI provenance

0%

none-detected

Confidence
46%
Coverage
100%

Estimated share of AI-generated code. Explicit attribution is a lower bound.

Code quality

59/100

weak

Confidence
90%
Coverage
100%

Complexity, duplication, lint density, tests, CI, docs and review process.

Security

55/100

weak

Confidence
85%
Coverage
100%

Secrets, static analysis, vulnerable dependencies, CI and supply-chain posture.

AI provenance

0% none-detected

No AI attribution or AI-consistent velocity signals detected.

How the score is built

  • Explicitly attributed share0%
  • Unattributed share in AI-pace bursts0%
  • Estimated AI-generated share0%
  • AI tool configuration files0
  • Work sessions at AI pace0
  • Releases at AI pace0
  • Coding-style index (1.0+ means possible)0.00

Lines added per month all AI-attributed share

  1. 2026-046,243 · 0% AI
  2. 2026-062,636 · 0% AI
  3. 2026-08370 · 0% AI

Evidence by analyzer

Explicit AI attributionok
attributed_commit_share
0.0%
attributed_commits
0
attributed_loc
0
attributed_loc_share
0.0%
commits
22
effective_loc
9,249
tools_detected
0
AI tool configurationok
artifacts
0
tools_configured
0
workflow_agents
0
Commit velocityok
excluded_import_loc
6,243
flagged_loc
0
flagged_loc_share
0.0%
flagged_units
0
max_loc_per_hour
397.51
measured_loc
3,006
median_loc_per_hour
119.59
pr_timed_units
0
pre_ai_era_burst_loc
0
pre_ai_era_bursts
0
pre_ai_era_measured_loc
0
work_units
8
Release velocityok
flagged_releases
0
max_loc_per_day
1,677.60
releases
6
Coding styleok
count:assistant_voice
0
count:emoji_in_code
0
count:narrated_steps
0
count:placeholder
0
files:assistant_voice
0
files:emoji_in_code
0
files:narrated_steps
0
files:placeholder
0
index
0
lines_scanned
8,234
per_kloc:assistant_voice
0
per_kloc:emoji_in_code
0
per_kloc:narrated_steps
0
per_kloc:placeholder
0

Code quality

59 weak

Code quality is weak: test-to-source ratio 0.09, CI runs tests; 22% of function code in complex or long functions; 9% duplicated lines. Weakest area: docs.

How the score is built

  • Complexity52
  • Duplication59
  • Lint and smells50
  • Tests and CI70
  • Documentation40
  • Type safety100
  • Review processnot measured

Evidence by analyzer

Complexity (lizard)ok10 items
complex_functions
13
function_nloc
6,288
functions
628
long_functions
4
many_param_functions
0
mean_ccn
2.88
p90_ccn
6
risky_nloc_share
21.6%
Duplication (jscpd)ok9 items
compared_lines
6,274
duplicated_lines
545
duplicated_share
8.7%
files
33
Lintok
category:best-practice
15
category:correctness
9
findings
24
scanned_lines
8,234
weighted_findings
23
Tests and CIok3 items
  • CI config: .github/workflows/ci.yml .github/workflows/ci.yml
  • CI config: .github/workflows/release.yml .github/workflows/release.yml
  • CI runs tests (npm test, pnpm test)
check:ci_present
yes
check:ci_runs_lint
no
check:ci_runs_tests
yes
check:has_tests
yes
check:test_ratio
no
check:tests_cochange
yes
ci_files
2
cochange_commits
14
cochange_share
50.0%
source_lines
8,234
test_lines
742
test_ratio
0.09
Documentationok1 item
  • README.md README.md
check:changelog
no
check:contributing
no
check:license
no
check:readme
yes
readme_lines
37
Type safetyok1 item
  • TypeScript strict type checking: tsconfig.json tsconfig.json
check:low_escape_density
yes
check:strict_config
yes
escapes
8
escapes_per_kloc
1.05

Security

55 weak

Security posture is weak: 142 known vulnerabilities in 29 dependencies; 11 high-severity workflow issues. Weakest area: dependencies.

How the score is built

  • Secrets100
  • Static analysis (SAST)98
  • Vulnerable dependencies4
  • CI workflows12
  • Security posture20
  • OpenSSF Scorecardnot measured

Evidence by analyzer

OpenSSF Scorecardskipped

no published OpenSSF Scorecard result for this repo

Package registriesok
checked
54
declared
54
lookup_errors
0
missing
0
recent
0
Secrets (gitleaks)ok
secrets_current
0
secrets_history
0
secrets_low_confidence
0
secrets_nonprod
0
Static analysis (opengrep)ok
findings
2
findings_high
0
findings_low
0
findings_medium
2
parse_errors
0
scanned_lines
8,234
weighted_findings
0.50
Dependencies (osv-scanner)ok
penalty
200
vulnerabilities
142
vulnerable_packages
29
vulns_critical
1
vulns_high
78
vulns_low
14
vulns_medium
49
vulns_unknown
0
CI workflows (zizmor)ok
findings
14
findings_high
11
findings_low
1
findings_medium
2
penalty
126
workflows
2
Security postureok
check:dependency_updates
no
check:lockfiles
yes
check:security_policy
no
check:signed_commits
yes
signed_commit_share
54.5%
unpinned_manifests
0
Release downloadsok5 items
binary_assets
9
signals
1
suspicious
0

Findings

1 critical90 high72 medium18 low1 info

SeverityRuleLocationMessageTool
critical osv/GHSA-23hp-3jrh-7fpw pnpm-lock.yaml [email protected] (npm) is affected by GHSA-23hp-3jrh-7fpw Dependencies (osv-scanner)
high opengrep/typescript.lang.correctness.useless-ternary src/main/database.ts:349 It looks like no matter how provider.source === 'portal' is evaluated, this expression returns 'unknown'. This is probably a copy-paste error. Lint
high zizmor/unpinned-uses .github/workflows/ci.yml:19 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:22 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:27 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/excessive-permissions .github/workflows/release.yml:15 overly broad permissions [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/release.yml:30 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/release.yml:43 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/cache-poisoning .github/workflows/release.yml:48 runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/release.yml:48 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/release.yml:71 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/release.yml:90 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/release.yml:96 unpinned action reference [confidence high] CI workflows (zizmor)
high osv/GHSA-27p8-2357-5qqv pnpm-lock.yaml @xmldom/[email protected] (npm) is affected by GHSA-27p8-2357-5qqv Dependencies (osv-scanner)
high osv/GHSA-27p8-2357-5qqv pnpm-lock.yaml @xmldom/[email protected] (npm) is affected by GHSA-27p8-2357-5qqv Dependencies (osv-scanner)
high osv/GHSA-2883-xcg3-v3hh pnpm-lock.yaml [email protected] (npm) is affected by GHSA-2883-xcg3-v3hh Dependencies (osv-scanner)
high osv/GHSA-28wg-ghj8-5hjv pnpm-lock.yaml [email protected] (npm) is affected by GHSA-28wg-ghj8-5hjv Dependencies (osv-scanner)
high osv/GHSA-2m5v-pch6-74hx pnpm-lock.yaml [email protected] (npm) is affected by GHSA-2m5v-pch6-74hx Dependencies (osv-scanner)
high osv/GHSA-2m5v-pch6-74hx pnpm-lock.yaml [email protected] (npm) is affected by GHSA-2m5v-pch6-74hx Dependencies (osv-scanner)
high osv/GHSA-2v37-7h3g-55p8 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-2v37-7h3g-55p8 Dependencies (osv-scanner)
high osv/GHSA-3jxr-9vmj-r5cp pnpm-lock.yaml [email protected] (npm) is affected by GHSA-3jxr-9vmj-r5cp Dependencies (osv-scanner)
high osv/GHSA-3jxr-9vmj-r5cp pnpm-lock.yaml [email protected] (npm) is affected by GHSA-3jxr-9vmj-r5cp Dependencies (osv-scanner)
high osv/GHSA-3jxr-9vmj-r5cp pnpm-lock.yaml [email protected] (npm) is affected by GHSA-3jxr-9vmj-r5cp Dependencies (osv-scanner)
high osv/GHSA-3px3-54cx-rmw9 pnpm-lock.yaml @xmldom/[email protected] (npm) is affected by GHSA-3px3-54cx-rmw9 Dependencies (osv-scanner)
high osv/GHSA-4c8g-83qw-93j6 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-4c8g-83qw-93j6 Dependencies (osv-scanner)
high osv/GHSA-4cwx-7wf7-3272 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-4cwx-7wf7-3272 Dependencies (osv-scanner)
high osv/GHSA-4w3w-2rp5-g8jm pnpm-lock.yaml @xmldom/[email protected] (npm) is affected by GHSA-4w3w-2rp5-g8jm Dependencies (osv-scanner)
high osv/GHSA-4w3w-2rp5-g8jm pnpm-lock.yaml @xmldom/[email protected] (npm) is affected by GHSA-4w3w-2rp5-g8jm Dependencies (osv-scanner)
high osv/GHSA-4w7w-5xrc-9h26 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-4w7w-5xrc-9h26 Dependencies (osv-scanner)
high osv/GHSA-52cp-r559-cp3m pnpm-lock.yaml [email protected] (npm) is affected by GHSA-52cp-r559-cp3m Dependencies (osv-scanner)
high osv/GHSA-587h-7wmj-h5pm pnpm-lock.yaml [email protected] (npm) is affected by GHSA-587h-7wmj-h5pm Dependencies (osv-scanner)
high osv/GHSA-5p4m-2wfm-xmqj pnpm-lock.yaml [email protected] (npm) is affected by GHSA-5p4m-2wfm-xmqj Dependencies (osv-scanner)
high osv/GHSA-68fv-2mgg-jv7q pnpm-lock.yaml [email protected] (npm) is affected by GHSA-68fv-2mgg-jv7q Dependencies (osv-scanner)
high osv/GHSA-6j4f-fj2g-mc7p pnpm-lock.yaml [email protected] (npm) is affected by GHSA-6j4f-fj2g-mc7p Dependencies (osv-scanner)
high osv/GHSA-6j4f-fj2g-mc7p pnpm-lock.yaml [email protected] (npm) is affected by GHSA-6j4f-fj2g-mc7p Dependencies (osv-scanner)
high osv/GHSA-6j4f-fj2g-mc7p pnpm-lock.yaml [email protected] (npm) is affected by GHSA-6j4f-fj2g-mc7p Dependencies (osv-scanner)
high osv/GHSA-6mj3-qw4j-hgrw pnpm-lock.yaml @xmldom/[email protected] (npm) is affected by GHSA-6mj3-qw4j-hgrw Dependencies (osv-scanner)
high osv/GHSA-73wf-gq98-2v4g pnpm-lock.yaml [email protected] (npm) is affected by GHSA-73wf-gq98-2v4g Dependencies (osv-scanner)
high osv/GHSA-7g7r-gx96-252g pnpm-lock.yaml [email protected] (npm) is affected by GHSA-7g7r-gx96-252g Dependencies (osv-scanner)
high osv/GHSA-7p8r-x3mc-p8w7 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-7p8r-x3mc-p8w7 Dependencies (osv-scanner)
high osv/GHSA-8344-3jmq-59r6 pnpm-lock.yaml @xmldom/[email protected] (npm) is affected by GHSA-8344-3jmq-59r6 Dependencies (osv-scanner)
high osv/GHSA-8344-3jmq-59r6 pnpm-lock.yaml @xmldom/[email protected] (npm) is affected by GHSA-8344-3jmq-59r6 Dependencies (osv-scanner)
high osv/GHSA-8x88-c5mf-7j5w pnpm-lock.yaml [email protected] (npm) is affected by GHSA-8x88-c5mf-7j5w Dependencies (osv-scanner)
high osv/GHSA-93r5-fhx6-vmg9 pnpm-lock.yaml @xmldom/[email protected] (npm) is affected by GHSA-93r5-fhx6-vmg9 Dependencies (osv-scanner)
high osv/GHSA-93r5-fhx6-vmg9 pnpm-lock.yaml @xmldom/[email protected] (npm) is affected by GHSA-93r5-fhx6-vmg9 Dependencies (osv-scanner)
high osv/GHSA-965w-775f-mr7g pnpm-lock.yaml @xmldom/[email protected] (npm) is affected by GHSA-965w-775f-mr7g Dependencies (osv-scanner)
high osv/GHSA-965w-775f-mr7g pnpm-lock.yaml @xmldom/[email protected] (npm) is affected by GHSA-965w-775f-mr7g Dependencies (osv-scanner)
high osv/GHSA-9qh4-3jw8-366w pnpm-lock.yaml [email protected] (npm) is affected by GHSA-9qh4-3jw8-366w Dependencies (osv-scanner)
high osv/GHSA-c7q8-3ch8-vqpv pnpm-lock.yaml @xmldom/[email protected] (npm) is affected by GHSA-c7q8-3ch8-vqpv Dependencies (osv-scanner)
high osv/GHSA-c7q8-3ch8-vqpv pnpm-lock.yaml @xmldom/[email protected] (npm) is affected by GHSA-c7q8-3ch8-vqpv Dependencies (osv-scanner)
high osv/GHSA-c83g-rgw3-j3cx pnpm-lock.yaml [email protected] (npm) is affected by GHSA-c83g-rgw3-j3cx Dependencies (osv-scanner)
high osv/GHSA-f65p-4m7j-42xc pnpm-lock.yaml [email protected] (npm) is affected by GHSA-f65p-4m7j-42xc Dependencies (osv-scanner)
high osv/GHSA-g53g-w8rj-fmg7 pnpm-lock.yaml @xmldom/[email protected] (npm) is affected by GHSA-g53g-w8rj-fmg7 Dependencies (osv-scanner)
high osv/GHSA-gr2m-v5gq-v685 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-gr2m-v5gq-v685 Dependencies (osv-scanner)
high osv/GHSA-hmw2-7cc7-3qxx pnpm-lock.yaml [email protected] (npm) is affected by GHSA-hmw2-7cc7-3qxx Dependencies (osv-scanner)
high osv/GHSA-hq2x-r82h-9wj4 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-hq2x-r82h-9wj4 Dependencies (osv-scanner)
high osv/GHSA-j84w-jfhq-vhvj pnpm-lock.yaml [email protected] (npm) is affected by GHSA-j84w-jfhq-vhvj Dependencies (osv-scanner)
high osv/GHSA-jqff-g426-hqxp pnpm-lock.yaml [email protected] (npm) is affected by GHSA-jqff-g426-hqxp Dependencies (osv-scanner)
high osv/GHSA-jr5w-w6x2-84p9 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-jr5w-w6x2-84p9 Dependencies (osv-scanner)
high osv/GHSA-mh99-v99m-4gvg pnpm-lock.yaml [email protected] (npm) is affected by GHSA-mh99-v99m-4gvg Dependencies (osv-scanner)
high osv/GHSA-mh99-v99m-4gvg pnpm-lock.yaml [email protected] (npm) is affected by GHSA-mh99-v99m-4gvg Dependencies (osv-scanner)
high osv/GHSA-mh99-v99m-4gvg pnpm-lock.yaml [email protected] (npm) is affected by GHSA-mh99-v99m-4gvg Dependencies (osv-scanner)
high osv/GHSA-mrhx-c7xc-m3w5 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-mrhx-c7xc-m3w5 Dependencies (osv-scanner)
high osv/GHSA-mrhx-c7xc-m3w5 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-mrhx-c7xc-m3w5 Dependencies (osv-scanner)
high osv/GHSA-p2f4-r6v6-j797 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-p2f4-r6v6-j797 Dependencies (osv-scanner)
high osv/GHSA-ph9p-34f9-6g65 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-ph9p-34f9-6g65 Dependencies (osv-scanner)
high osv/GHSA-q3j6-qgpj-74h6 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-q3j6-qgpj-74h6 Dependencies (osv-scanner)
high osv/GHSA-qhr7-859c-m2p7 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-qhr7-859c-m2p7 Dependencies (osv-scanner)
high osv/GHSA-qhr7-859c-m2p7 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-qhr7-859c-m2p7 Dependencies (osv-scanner)
high osv/GHSA-qhr7-859c-m2p7 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-qhr7-859c-m2p7 Dependencies (osv-scanner)
high osv/GHSA-qmv3-fv6v-rmhq pnpm-lock.yaml [email protected] (npm) is affected by GHSA-qmv3-fv6v-rmhq Dependencies (osv-scanner)
high osv/GHSA-qrxm-fqhp-jwvm pnpm-lock.yaml [email protected] (npm) is affected by GHSA-qrxm-fqhp-jwvm Dependencies (osv-scanner)
high osv/GHSA-qrxm-fqhp-jwvm pnpm-lock.yaml [email protected] (npm) is affected by GHSA-qrxm-fqhp-jwvm Dependencies (osv-scanner)
high osv/GHSA-qw65-cvwx-89v3 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-qw65-cvwx-89v3 Dependencies (osv-scanner)
high osv/GHSA-r28c-9q8g-f849 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-r28c-9q8g-f849 Dependencies (osv-scanner)
high osv/GHSA-r292-9mhp-454m pnpm-lock.yaml [email protected] (npm) is affected by GHSA-r292-9mhp-454m Dependencies (osv-scanner)
high osv/GHSA-rfgv-xxqx-mfg5 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-rfgv-xxqx-mfg5 Dependencies (osv-scanner)
high osv/GHSA-rfgv-xxqx-mfg5 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-rfgv-xxqx-mfg5 Dependencies (osv-scanner)
high osv/GHSA-rgw5-rvv9-x895 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-rgw5-rvv9-x895 Dependencies (osv-scanner)
high osv/GHSA-rgw5-rvv9-x895 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-rgw5-rvv9-x895 Dependencies (osv-scanner)
high osv/GHSA-rgw5-rvv9-x895 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-rgw5-rvv9-x895 Dependencies (osv-scanner)
high osv/GHSA-v2hh-gcrm-f6hx pnpm-lock.yaml [email protected] (npm) is affected by GHSA-v2hh-gcrm-f6hx Dependencies (osv-scanner)
high osv/GHSA-v39h-62p7-jpjc pnpm-lock.yaml [email protected] (npm) is affected by GHSA-v39h-62p7-jpjc Dependencies (osv-scanner)
high osv/GHSA-vr34-hp96-76pp pnpm-lock.yaml @xmldom/[email protected] (npm) is affected by GHSA-vr34-hp96-76pp Dependencies (osv-scanner)
high osv/GHSA-vxpw-j846-p89q pnpm-lock.yaml [email protected] (npm) is affected by GHSA-vxpw-j846-p89q Dependencies (osv-scanner)
high osv/GHSA-w293-vg96-wgc3 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-w293-vg96-wgc3 Dependencies (osv-scanner)
high osv/GHSA-w2rr-34g9-rvrj pnpm-lock.yaml @xmldom/[email protected] (npm) is affected by GHSA-w2rr-34g9-rvrj Dependencies (osv-scanner)
high osv/GHSA-w2rr-34g9-rvrj pnpm-lock.yaml @xmldom/[email protected] (npm) is affected by GHSA-w2rr-34g9-rvrj Dependencies (osv-scanner)
high osv/GHSA-x4fp-j954-r2f4 pnpm-lock.yaml @xmldom/[email protected] (npm) is affected by GHSA-x4fp-j954-r2f4 Dependencies (osv-scanner)
high osv/GHSA-xjj6-f33q-929c pnpm-lock.yaml [email protected] (npm) is affected by GHSA-xjj6-f33q-929c Dependencies (osv-scanner)
high osv/GHSA-xjj6-f33q-929c pnpm-lock.yaml [email protected] (npm) is affected by GHSA-xjj6-f33q-929c Dependencies (osv-scanner)
medium opengrep/javascript.lang.correctness.no-stringify-keys src/main/database.ts:465 JSON stringify does not produce a stable key ordering, and should not be relied on for producing object keys. Consider using json-stable-stringify instead. Lint
medium opengrep/javascript.lang.correctness.no-replaceall src/main/provider-utils.ts:69 The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, "good")... Lint
medium opengrep/javascript.lang.correctness.no-replaceall src/main/providers.ts:1180 The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, "good")... Lint
medium opengrep/javascript.lang.correctness.no-replaceall src/main/providers.ts:2115 The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, "good")... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading src/renderer/components/ui/alert-dialog.tsx:18 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading src/renderer/components/ui/alert-dialog.tsx:32 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading src/renderer/components/ui/alert-dialog.tsx:50 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading src/renderer/components/ui/alert-dialog.tsx:57 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading src/renderer/components/ui/alert-dialog.tsx:62 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading src/renderer/components/ui/alert-dialog.tsx:70 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading src/renderer/components/ui/alert-dialog.tsx:81 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading src/renderer/components/ui/alert-dialog.tsx:90 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading src/renderer/components/ui/button.tsx:40 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading src/renderer/components/ui/input.tsx:13 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading src/renderer/components/ui/select.tsx:21 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading src/renderer/components/ui/select.tsx:44 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading src/renderer/components/ui/select.tsx:66 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading src/renderer/components/ui/switch.tsx:16 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading src/renderer/components/ui/tooltip.tsx:22 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium zizmor/artipacked .github/workflows/ci.yml:18 credential persistence through GitHub Actions artifacts [confidence low] CI workflows (zizmor)
medium zizmor/artipacked .github/workflows/release.yml:29 credential persistence through GitHub Actions artifacts [confidence low] CI workflows (zizmor)
medium osv/GHSA-2jfj-6hjv-fm6j pnpm-lock.yaml [email protected] (npm) is affected by GHSA-2jfj-6hjv-fm6j Dependencies (osv-scanner)
medium osv/GHSA-2p8c-gr87-2676 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-2p8c-gr87-2676 Dependencies (osv-scanner)
medium osv/GHSA-3wwx-pv8p-q78v pnpm-lock.yaml [email protected] (npm) is affected by GHSA-3wwx-pv8p-q78v Dependencies (osv-scanner)
medium osv/GHSA-3wwx-pv8p-q78v pnpm-lock.yaml [email protected] (npm) is affected by GHSA-3wwx-pv8p-q78v Dependencies (osv-scanner)
medium osv/GHSA-3xpg-4rpp-hhhm pnpm-lock.yaml [email protected] (npm) is affected by GHSA-3xpg-4rpp-hhhm Dependencies (osv-scanner)
medium osv/GHSA-4qv8-2p9j-2685 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-4qv8-2p9j-2685 Dependencies (osv-scanner)
medium osv/GHSA-4qv8-2p9j-2685 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-4qv8-2p9j-2685 Dependencies (osv-scanner)
medium osv/GHSA-55wc-3pg8-jfw6 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-55wc-3pg8-jfw6 Dependencies (osv-scanner)
medium osv/GHSA-698v-4r3x-3vcv pnpm-lock.yaml [email protected] (npm) is affected by GHSA-698v-4r3x-3vcv Dependencies (osv-scanner)
medium osv/GHSA-6gmq-8vp8-gcm6 pnpm-lock.yaml @xmldom/[email protected] (npm) is affected by GHSA-6gmq-8vp8-gcm6 Dependencies (osv-scanner)
medium osv/GHSA-6gmq-8vp8-gcm6 pnpm-lock.yaml @xmldom/[email protected] (npm) is affected by GHSA-6gmq-8vp8-gcm6 Dependencies (osv-scanner)
medium osv/GHSA-6h8r-xr42-gp59 pnpm-lock.yaml @xmldom/[email protected] (npm) is affected by GHSA-6h8r-xr42-gp59 Dependencies (osv-scanner)
medium osv/GHSA-6h8r-xr42-gp59 pnpm-lock.yaml @xmldom/[email protected] (npm) is affected by GHSA-6h8r-xr42-gp59 Dependencies (osv-scanner)
medium osv/GHSA-82fw-gwwq-j7x9 pnpm-lock.yaml @vitest/[email protected] (npm) is affected by GHSA-82fw-gwwq-j7x9 Dependencies (osv-scanner)
medium osv/GHSA-82fw-gwwq-j7x9 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-82fw-gwwq-j7x9 Dependencies (osv-scanner)
medium osv/GHSA-8xcm-r25x-g524 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-8xcm-r25x-g524 Dependencies (osv-scanner)
medium osv/GHSA-8xcm-r25x-g524 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-8xcm-r25x-g524 Dependencies (osv-scanner)
medium osv/GHSA-997q-gvvc-jwmx pnpm-lock.yaml [email protected] (npm) is affected by GHSA-997q-gvvc-jwmx Dependencies (osv-scanner)
medium osv/GHSA-9fm3-97px-rjf6 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-9fm3-97px-rjf6 Dependencies (osv-scanner)
medium osv/GHSA-9fm3-97px-rjf6 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-9fm3-97px-rjf6 Dependencies (osv-scanner)
medium osv/GHSA-f72v-6w45-q472 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-f72v-6w45-q472 Dependencies (osv-scanner)
medium osv/GHSA-fw47-9c62-h3vw pnpm-lock.yaml [email protected] (npm) is affected by GHSA-fw47-9c62-h3vw Dependencies (osv-scanner)
medium osv/GHSA-fxqj-rqcc-2cmp pnpm-lock.yaml [email protected] (npm) is affected by GHSA-fxqj-rqcc-2cmp Dependencies (osv-scanner)
medium osv/GHSA-g3hv-75wg-m249 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-g3hv-75wg-m249 Dependencies (osv-scanner)
medium osv/GHSA-g3hv-75wg-m249 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-g3hv-75wg-m249 Dependencies (osv-scanner)
medium osv/GHSA-gvwx-54wh-qm9j pnpm-lock.yaml [email protected] (npm) is affected by GHSA-gvwx-54wh-qm9j Dependencies (osv-scanner)
medium osv/GHSA-h67p-54hq-rp68 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-h67p-54hq-rp68 Dependencies (osv-scanner)
medium osv/GHSA-hrr3-gc8f-f4qj pnpm-lock.yaml [email protected] (npm) is affected by GHSA-hrr3-gc8f-f4qj Dependencies (osv-scanner)
medium osv/GHSA-jr45-8vmc-qm54 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-jr45-8vmc-qm54 Dependencies (osv-scanner)
medium osv/GHSA-jxxr-4gwj-5jf2 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-jxxr-4gwj-5jf2 Dependencies (osv-scanner)
medium osv/GHSA-m8rv-5g2x-5cg5 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-m8rv-5g2x-5cg5 Dependencies (osv-scanner)
medium osv/GHSA-m8rv-5g2x-5cg5 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-m8rv-5g2x-5cg5 Dependencies (osv-scanner)
medium osv/GHSA-p88m-4jfj-68fv pnpm-lock.yaml [email protected] (npm) is affected by GHSA-p88m-4jfj-68fv Dependencies (osv-scanner)
medium osv/GHSA-pmjh-fq2x-6v4x pnpm-lock.yaml [email protected] (npm) is affected by GHSA-pmjh-fq2x-6v4x Dependencies (osv-scanner)
medium osv/GHSA-q2hr-2g5m-vwhr pnpm-lock.yaml [email protected] (npm) is affected by GHSA-q2hr-2g5m-vwhr Dependencies (osv-scanner)
medium osv/GHSA-q2hr-2g5m-vwhr pnpm-lock.yaml [email protected] (npm) is affected by GHSA-q2hr-2g5m-vwhr Dependencies (osv-scanner)
medium osv/GHSA-q2hr-2g5m-vwhr pnpm-lock.yaml [email protected] (npm) is affected by GHSA-q2hr-2g5m-vwhr Dependencies (osv-scanner)
medium osv/GHSA-qxg6-89mg-rqv8 pnpm-lock.yaml @vitest/[email protected] (npm) is affected by GHSA-qxg6-89mg-rqv8 Dependencies (osv-scanner)
medium osv/GHSA-r4w5-6pfg-jxp5 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-r4w5-6pfg-jxp5 Dependencies (osv-scanner)
medium osv/GHSA-r825-w8mm-5pxw pnpm-lock.yaml [email protected] (npm) is affected by GHSA-r825-w8mm-5pxw Dependencies (osv-scanner)
medium osv/GHSA-rq7h-c2jc-7f22 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-rq7h-c2jc-7f22 Dependencies (osv-scanner)
medium osv/GHSA-rx4f-c7p8-82vq pnpm-lock.yaml [email protected] (npm) is affected by GHSA-rx4f-c7p8-82vq Dependencies (osv-scanner)
medium osv/GHSA-v3r7-h72x-cjcm pnpm-lock.yaml [email protected] (npm) is affected by GHSA-v3r7-h72x-cjcm Dependencies (osv-scanner)
medium osv/GHSA-v3r7-h72x-cjcm pnpm-lock.yaml [email protected] (npm) is affected by GHSA-v3r7-h72x-cjcm Dependencies (osv-scanner)
medium osv/GHSA-vmf3-w455-68vh pnpm-lock.yaml [email protected] (npm) is affected by GHSA-vmf3-w455-68vh Dependencies (osv-scanner)
medium osv/GHSA-w5vr-8v7q-w6rv pnpm-lock.yaml [email protected] (npm) is affected by GHSA-w5vr-8v7q-w6rv Dependencies (osv-scanner)
medium osv/GHSA-w74x-v6f9-j3xg pnpm-lock.yaml [email protected] (npm) is affected by GHSA-w74x-v6f9-j3xg Dependencies (osv-scanner)
medium osv/GHSA-w8wr-v893-vjvp pnpm-lock.yaml [email protected] (npm) is affected by GHSA-w8wr-v893-vjvp Dependencies (osv-scanner)
medium osv/GHSA-x562-297c-g43g pnpm-lock.yaml [email protected] (npm) is affected by GHSA-x562-297c-g43g Dependencies (osv-scanner)
medium opengrep/javascript.lang.security.html-in-template-string src/main/providers.ts:475 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
medium opengrep/javascript.lang.security.html-in-template-string src/main/providers.ts:735 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
low opengrep/javascript.lang.correctness.missing-template-string-indicator src/main/providers.ts:1497 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator src/main/providers.ts:1497 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator src/main/providers.ts:735 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator src/main/providers.ts:735 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low osv/GHSA-2gqq-gqf2-x968 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-2gqq-gqf2-x968 Dependencies (osv-scanner)
low osv/GHSA-333x-w4r6-6crp pnpm-lock.yaml [email protected] (npm) is affected by GHSA-333x-w4r6-6crp Dependencies (osv-scanner)
low osv/GHSA-35p6-xmwp-9g52 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-35p6-xmwp-9g52 Dependencies (osv-scanner)
low osv/GHSA-3qxv-5xgr-q7w9 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-3qxv-5xgr-q7w9 Dependencies (osv-scanner)
low osv/GHSA-4x5r-pxfx-6jf8 pnpm-lock.yaml @babel/[email protected] (npm) is affected by GHSA-4x5r-pxfx-6jf8 Dependencies (osv-scanner)
low osv/GHSA-8436-99hf-9mmv pnpm-lock.yaml [email protected] (npm) is affected by GHSA-8436-99hf-9mmv Dependencies (osv-scanner)
low osv/GHSA-98mx-cjp9-gchm pnpm-lock.yaml [email protected] (npm) is affected by GHSA-98mx-cjp9-gchm Dependencies (osv-scanner)
low osv/GHSA-9jrq-w75r-8gcw pnpm-lock.yaml [email protected] (npm) is affected by GHSA-9jrq-w75r-8gcw Dependencies (osv-scanner)
low osv/GHSA-g7r4-m6w7-qqqr pnpm-lock.yaml [email protected] (npm) is affected by GHSA-g7r4-m6w7-qqqr Dependencies (osv-scanner)
low osv/GHSA-g8m3-5g58-fq7m pnpm-lock.yaml [email protected] (npm) is affected by GHSA-g8m3-5g58-fq7m Dependencies (osv-scanner)
low osv/GHSA-h3v5-h239-pg29 pnpm-lock.yaml [email protected] (npm) is affected by GHSA-h3v5-h239-pg29 Dependencies (osv-scanner)
low osv/GHSA-r53p-7pc4-xj5r pnpm-lock.yaml [email protected] (npm) is affected by GHSA-r53p-7pc4-xj5r Dependencies (osv-scanner)
low osv/GHSA-r53p-7pc4-xj5r pnpm-lock.yaml [email protected] (npm) is affected by GHSA-r53p-7pc4-xj5r Dependencies (osv-scanner)
low osv/GHSA-xhq7-xmqj-769h pnpm-lock.yaml [email protected] (npm) is affected by GHSA-xhq7-xmqj-769h Dependencies (osv-scanner)
info zizmor/superfluous-actions .github/workflows/release.yml:96 action functionality is already included by the runner [confidence high] CI workflows (zizmor)

Tools and coverage

Every analyzer that ran on this commit. A failed or skipped tool is a coverage gap: its share of the score is left out and the coverage figure drops.

AnalyzerPillarStatusVersionFindingsNote
AI tool configurationAI provenanceoksignatures-v10
Explicit AI attributionAI provenanceoksignatures-v10
Release velocityAI provenanceokprov-40
Coding styleAI provenanceok—0
Commit velocityAI provenanceokprov-40
Complexity (lizard)Code qualityoklizard 1.25.10
DocumentationCode qualityok—0
Duplication (jscpd)Code qualityokrepotrust-dup-w60
LintCode qualityokopengrep 1.33.1; rules f1d2b562b41424
Tests and CICode qualityok—0
Type safetyCode qualityok—0
CI workflows (zizmor)Securityokzizmor 1.32.014
Dependencies (osv-scanner)Securityokosv-scanner version: 2.7.1142
Release downloadsSecurityok—0
Security postureSecurityok—0
Package registriesSecurityok—0
Static analysis (opengrep)Securityokopengrep 1.33.1; rules f1d2b562b4142
OpenSSF ScorecardSecurityskipped—0no published OpenSSF Scorecard result for this repo
Secrets (gitleaks)Securityokgitleaks 8.30.10

Score history

Scores from different scoring versions aren't directly comparable.

ScoredCommitScoringAI provenanceQualitySecurity
2026-11-1454032d3a27e4prov-5+qual-2+sec-20%5955
2026-11-1454032d3a27e4prov-4+qual-2+sec-20%5955

Embed a badge

Maintainers can show these in a README. Badges update when the repository is re-scored.

[![RepoTrust ai](https://repotrust.synapticcyber.com/badge/github.com/RyanTheAllmighty/ai-usage-monitor/ai.svg)](https://repotrust.synapticcyber.com/r/github.com/RyanTheAllmighty/ai-usage-monitor/)
[![RepoTrust quality](https://repotrust.synapticcyber.com/badge/github.com/RyanTheAllmighty/ai-usage-monitor/quality.svg)](https://repotrust.synapticcyber.com/r/github.com/RyanTheAllmighty/ai-usage-monitor/)
[![RepoTrust security](https://repotrust.synapticcyber.com/badge/github.com/RyanTheAllmighty/ai-usage-monitor/security.svg)](https://repotrust.synapticcyber.com/r/github.com/RyanTheAllmighty/ai-usage-monitor/)
Full text report

Scores

Pillar Score Signal Confidence Coverage
AI provenance (estimated AI-generated share) 0 none-detected 46% 100%
Code quality 59 weak 90% 100%
Security 55 weak 85% 100%

AI provenance

No AI attribution or AI-consistent velocity signals detected.

  • Explicitly attributed share (lower bound): 0.0%
  • Unattributed share in AI-consistent velocity bursts: 0.0%
  • Estimated AI-generated share: 0.0%
Month Lines added Attributed to AI
2026-04 6,243 0%
2026-06 2,636 0%
2026-08 370 0%

AI provenance describes how code was produced; it is not a quality judgment. Unless attribution is explicit, these are signals consistent with AI generation, not proof. Squash/rebase workflows, imported code, and rewritten history reduce accuracy.

Code quality

Code quality is weak: test-to-source ratio 0.09, CI runs tests; 22% of function code in complex or long functions; 9% duplicated lines. Weakest area: docs.

Area Score
Complexity (lizard) 52
Duplication 59
Code smells (Opengrep) 50
Tests and CI 70
Documentation 40
Type safety 100
Process (Scorecard review/maintenance) n/a
  • Functions: 628; mean complexity 2.9, 90th percentile 6; 13 complex and 4 long functions
  • Duplicated lines: 8.7% of 6,274 compared
  • Tests: 742 test lines for 8,234 source lines (ratio 0.09); CI test commands: npm test, pnpm test; 50% of recent source commits also change tests
  • Docs missing or thin: license, contributing, changelog

Most complex functions:

Security

Security posture is weak: 142 known vulnerabilities in 29 dependencies; 11 high-severity workflow issues. Weakest area: dependencies.

Area Score
Secrets (gitleaks, tree + history) 100
Static analysis (Opengrep) 98
Vulnerable dependencies (OSV) 4
CI workflows (zizmor) 12
Posture (policy, updates, signing, lockfiles) 20
OpenSSF Scorecard n/a
  • Known vulnerabilities: 142 in 29 packages (critical 1, high 78, medium 49, low 14)

  • Posture checks passed: signed commits, lockfiles; missing: security policy, dependency updates

Top findings

Severity Finding Location
critical osv/GHSA-23hp-3jrh-7fpw: [email protected] (npm) is affected by GHSA-23hp-3jrh-7fpw pnpm-lock.yaml
high osv/GHSA-27p8-2357-5qqv: @xmldom/[email protected] (npm) is affected by GHSA-27p8-2357-5qqv pnpm-lock.yaml
high osv/GHSA-4w3w-2rp5-g8jm: @xmldom/[email protected] (npm) is affected by GHSA-4w3w-2rp5-g8jm pnpm-lock.yaml
high osv/GHSA-8344-3jmq-59r6: @xmldom/[email protected] (npm) is affected by GHSA-8344-3jmq-59r6 pnpm-lock.yaml
high osv/GHSA-93r5-fhx6-vmg9: @xmldom/[email protected] (npm) is affected by GHSA-93r5-fhx6-vmg9 pnpm-lock.yaml
high osv/GHSA-965w-775f-mr7g: @xmldom/[email protected] (npm) is affected by GHSA-965w-775f-mr7g pnpm-lock.yaml
high osv/GHSA-c7q8-3ch8-vqpv: @xmldom/[email protected] (npm) is affected by GHSA-c7q8-3ch8-vqpv pnpm-lock.yaml
high osv/GHSA-w2rr-34g9-rvrj: @xmldom/[email protected] (npm) is affected by GHSA-w2rr-34g9-rvrj pnpm-lock.yaml
high osv/GHSA-x4fp-j954-r2f4: @xmldom/[email protected] (npm) is affected by GHSA-x4fp-j954-r2f4 pnpm-lock.yaml
high osv/GHSA-27p8-2357-5qqv: @xmldom/[email protected] (npm) is affected by GHSA-27p8-2357-5qqv pnpm-lock.yaml
high osv/GHSA-3px3-54cx-rmw9: @xmldom/[email protected] (npm) is affected by GHSA-3px3-54cx-rmw9 pnpm-lock.yaml
high osv/GHSA-4w3w-2rp5-g8jm: @xmldom/[email protected] (npm) is affected by GHSA-4w3w-2rp5-g8jm pnpm-lock.yaml
high osv/GHSA-6mj3-qw4j-hgrw: @xmldom/[email protected] (npm) is affected by GHSA-6mj3-qw4j-hgrw pnpm-lock.yaml
high osv/GHSA-8344-3jmq-59r6: @xmldom/[email protected] (npm) is affected by GHSA-8344-3jmq-59r6 pnpm-lock.yaml
high osv/GHSA-93r5-fhx6-vmg9: @xmldom/[email protected] (npm) is affected by GHSA-93r5-fhx6-vmg9 pnpm-lock.yaml
high osv/GHSA-965w-775f-mr7g: @xmldom/[email protected] (npm) is affected by GHSA-965w-775f-mr7g pnpm-lock.yaml
high osv/GHSA-c7q8-3ch8-vqpv: @xmldom/[email protected] (npm) is affected by GHSA-c7q8-3ch8-vqpv pnpm-lock.yaml
high osv/GHSA-g53g-w8rj-fmg7: @xmldom/[email protected] (npm) is affected by GHSA-g53g-w8rj-fmg7 pnpm-lock.yaml
high osv/GHSA-vr34-hp96-76pp: @xmldom/[email protected] (npm) is affected by GHSA-vr34-hp96-76pp pnpm-lock.yaml
high osv/GHSA-w2rr-34g9-rvrj: @xmldom/[email protected] (npm) is affected by GHSA-w2rr-34g9-rvrj pnpm-lock.yaml
high osv/GHSA-7g7r-gx96-252g: [email protected] (npm) is affected by GHSA-7g7r-gx96-252g pnpm-lock.yaml
high osv/GHSA-3jxr-9vmj-r5cp: [email protected] (npm) is affected by GHSA-3jxr-9vmj-r5cp pnpm-lock.yaml
high osv/GHSA-6j4f-fj2g-mc7p: [email protected] (npm) is affected by GHSA-6j4f-fj2g-mc7p pnpm-lock.yaml
high osv/GHSA-mh99-v99m-4gvg: [email protected] (npm) is affected by GHSA-mh99-v99m-4gvg pnpm-lock.yaml
high osv/GHSA-qhr7-859c-m2p7: [email protected] (npm) is affected by GHSA-qhr7-859c-m2p7 pnpm-lock.yaml

Static signals only: the scorer never runs the project's code. Secret findings are pattern matches that were not verified, and secret values are never stored.

Distribution signals

Signals consistent with a repository that exists to distribute a download. They are heuristics, not a verdict; release files were not downloaded or inspected.

Repository profile

  • Source lines: 8,234; test lines: 742
Language Lines
TypeScript 8,354
JavaScript 622