{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-5+qual-2+sec-2","generated_at":"2026-11-14T14:52:02.880065Z","repo":{"ref":{"host":"github.com","owner":"az9713","name":"talk-it-out-ai"},"default_branch":"main","clone_url":"https://github.com/az9713/talk-it-out-ai.git","html_url":"https://github.com/az9713/talk-it-out-ai","description":"AI-guided conflict resolution using therapeutic dialogue techniques. An AI mediator that helps couples and teams work through disagreements using Nonviolent Communication (NVC) principles.","stars":0,"forks":0,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":534,"primary_language":"TypeScript","license_spdx":null,"created_at":"2026-01-06T00:55:56Z","pushed_at":"2026-01-17T14:47:00Z","security_policy_url":null,"distribution":{"owner_created_at":"2011-01-14T21:36:32Z","owner_type":"User","release_assets":[]}},"commit_sha":"a8bc35e90b042598d06066a0631a98babb58e853","profile":{"lines_by_language":{"TypeScript":14497,"JavaScript":25},"files_by_category":{"source":106,"docs":11,"other":6,"config":4,"generated":1,"binary":1},"source_lines":14522,"test_lines":0},"pillars":{"ai_provenance":{"score":99.1,"confidence":0.76,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":0.9911,"suspected_share":0.0,"estimated_share":0.9911,"ai_artifacts":1.0,"flagged_work_units":3.0,"flagged_releases":null,"style_index":0.275},"summary":"Explicit AI attribution on 99% of first-party code added; an estimated 99% including velocity signals."},"quality":{"score":42.0,"confidence":0.9,"coverage":1.0,"label":"poor","breakdown":{"complexity":72.8,"duplication":60.1,"lint":34.7,"testing":0.0,"docs":40.0,"type_safety":100.0,"process":null},"summary":"Code quality is poor: test-to-source ratio 0.00, no CI test run detected; 11% of function code in complex or long functions; 8% duplicated lines. Weakest area: testing."},"security":{"score":62.0,"confidence":0.85,"coverage":1.0,"label":"weak","breakdown":{"secrets":96.7,"sast":99.3,"dependencies":2.4,"ci_actions":null,"posture":20.0,"scorecard":null},"summary":"Security posture is weak: 110 known vulnerabilities in 28 dependencies. Weakest area: dependencies."}},"analyzer_results":[{"analyzer":"sec-scorecard","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":"no published OpenSSF Scorecard result for this repo"},{"analyzer":"sec-registry","pillar":"security","status":"ok","tool_version":null,"metrics":{"declared":42.0,"checked":42.0,"missing":0.0,"recent":0.0,"lookup_errors":0.0},"findings":[],"evidence":[],"data":{"phantom":false},"error":null},{"analyzer":"ai-attribution","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"commits":23.0,"attributed_commits":22.0,"attributed_commit_share":0.9565217391304348,"effective_loc":14656.0,"attributed_loc":14525.0,"attributed_loc_share":0.9910616812227074,"tools_detected":1.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"Claude Code: 22 attributed commits, 14,525 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"3aa22dd257c4913e3d80ea9436ce538fc16e1165","url":"https://github.com/az9713/talk-it-out-ai/commit/3aa22dd257c4913e3d80ea9436ce538fc16e1165","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"492f8055356db244b41c4cfb1f11fa563d884a9d","url":"https://github.com/az9713/talk-it-out-ai/commit/492f8055356db244b41c4cfb1f11fa563d884a9d","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"ec459564b1b8142c03a6491d7a83d8efd2bed87f","url":"https://github.com/az9713/talk-it-out-ai/commit/ec459564b1b8142c03a6491d7a83d8efd2bed87f","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"88140961ee8e174352ab7ce936c6f7e177f02cf4","url":"https://github.com/az9713/talk-it-out-ai/commit/88140961ee8e174352ab7ce936c6f7e177f02cf4","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"3bcbccc478c64aaead91973a91a6012931d35af8","url":"https://github.com/az9713/talk-it-out-ai/commit/3bcbccc478c64aaead91973a91a6012931d35af8","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"bb3cbae1826ae13cc5f6b34ca6aacf172539e669","url":"https://github.com/az9713/talk-it-out-ai/commit/bb3cbae1826ae13cc5f6b34ca6aacf172539e669","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"d4cf46cb76677bea11f25f62bf3bce8e3b8dd01c","url":"https://github.com/az9713/talk-it-out-ai/commit/d4cf46cb76677bea11f25f62bf3bce8e3b8dd01c","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"d4d68db2ab33b8b84975674dccbfad6925437701","url":"https://github.com/az9713/talk-it-out-ai/commit/d4d68db2ab33b8b84975674dccbfad6925437701","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"67784d0214283b9cc4d1489e2ad43f7ddedc8a2a","url":"https://github.com/az9713/talk-it-out-ai/commit/67784d0214283b9cc4d1489e2ad43f7ddedc8a2a","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"2fd0d4f7e7dad33e1a4f82d14a31c578535e9998","url":"https://github.com/az9713/talk-it-out-ai/commit/2fd0d4f7e7dad33e1a4f82d14a31c578535e9998","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"6b239172a0092d665848a5a19e29d430d5dbc78e","url":"https://github.com/az9713/talk-it-out-ai/commit/6b239172a0092d665848a5a19e29d430d5dbc78e","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"9463f54537a02eb23bfebfa69c345031a663ff0d","url":"https://github.com/az9713/talk-it-out-ai/commit/9463f54537a02eb23bfebfa69c345031a663ff0d","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"dd470bade04c1b08aac3a5a1f71627215f65e5af","url":"https://github.com/az9713/talk-it-out-ai/commit/dd470bade04c1b08aac3a5a1f71627215f65e5af","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: author email noreply@anthropic.com","ref":"a197243bc5e41bf50a84276126fe3c3959df5cf1","url":"https://github.com/az9713/talk-it-out-ai/commit/a197243bc5e41bf50a84276126fe3c3959df5cf1","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"53df39cff4ce6c4d5b8e478e026b31487144f5c2","url":"https://github.com/az9713/talk-it-out-ai/commit/53df39cff4ce6c4d5b8e478e026b31487144f5c2","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"9b439a3c71535d9713cb0684d64d05a0921671ef","url":"https://github.com/az9713/talk-it-out-ai/commit/9b439a3c71535d9713cb0684d64d05a0921671ef","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"b30411a8af9eb8620a39c41d7e644e564f2fbedb","url":"https://github.com/az9713/talk-it-out-ai/commit/b30411a8af9eb8620a39c41d7e644e564f2fbedb","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"2ca7f22c7ff6b5ee0474e3f01d074b4859d6b692","url":"https://github.com/az9713/talk-it-out-ai/commit/2ca7f22c7ff6b5ee0474e3f01d074b4859d6b692","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"5c041d299947361c7dd195c4054b46ab930ce4d6","url":"https://github.com/az9713/talk-it-out-ai/commit/5c041d299947361c7dd195c4054b46ab930ce4d6","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"3c4ba5672c068e2c8ea3ff857a78a165b6100702","url":"https://github.com/az9713/talk-it-out-ai/commit/3c4ba5672c068e2c8ea3ff857a78a165b6100702","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"95a71f9904608b94bb64f0b56c668815b0e6003c","url":"https://github.com/az9713/talk-it-out-ai/commit/95a71f9904608b94bb64f0b56c668815b0e6003c","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"c3335db3990a1f5f806260da5ac0f4e4f91c766b","url":"https://github.com/az9713/talk-it-out-ai/commit/c3335db3990a1f5f806260da5ac0f4e4f91c766b","weight":0.9}],"data":{"attributed_loc_by_commit":{"c3335db3990a1f5f806260da5ac0f4e4f91c766b":3724,"95a71f9904608b94bb64f0b56c668815b0e6003c":3,"3c4ba5672c068e2c8ea3ff857a78a165b6100702":40,"5c041d299947361c7dd195c4054b46ab930ce4d6":0,"2ca7f22c7ff6b5ee0474e3f01d074b4859d6b692":0,"b30411a8af9eb8620a39c41d7e644e564f2fbedb":7,"9b439a3c71535d9713cb0684d64d05a0921671ef":0,"53df39cff4ce6c4d5b8e478e026b31487144f5c2":0,"a197243bc5e41bf50a84276126fe3c3959df5cf1":0,"dd470bade04c1b08aac3a5a1f71627215f65e5af":758,"9463f54537a02eb23bfebfa69c345031a663ff0d":1307,"6b239172a0092d665848a5a19e29d430d5dbc78e":883,"2fd0d4f7e7dad33e1a4f82d14a31c578535e9998":789,"67784d0214283b9cc4d1489e2ad43f7ddedc8a2a":532,"d4d68db2ab33b8b84975674dccbfad6925437701":1426,"d4cf46cb76677bea11f25f62bf3bce8e3b8dd01c":788,"bb3cbae1826ae13cc5f6b34ca6aacf172539e669":1399,"3bcbccc478c64aaead91973a91a6012931d35af8":1399,"88140961ee8e174352ab7ce936c6f7e177f02cf4":1470,"ec459564b1b8142c03a6491d7a83d8efd2bed87f":0,"492f8055356db244b41c4cfb1f11fa563d884a9d":0,"3aa22dd257c4913e3d80ea9436ce538fc16e1165":0},"tools":{"claude-code":{"name":"Claude Code","commits":22,"loc":14525,"first_seen":1767641348,"last_seen":1767990195}},"monthly":{"2026-01":{"loc":14656,"attributed_loc":14525}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":1.0,"workflow_agents":0.0,"tools_configured":1.0,"earliest_adoption":1767648781.0},"findings":[],"evidence":[{"kind":"ai-artifact","description":"CLAUDE.md (claude-code configuration)","ref":"CLAUDE.md","url":"https://github.com/az9713/talk-it-out-ai/blob/a8bc35e90b042598d06066a0631a98babb58e853/CLAUDE.md","weight":0.5}],"data":{"artifacts":[{"tool":"claude-code","path":"CLAUDE.md","added_at":1767648781}],"workflows":[],"tools":["claude-code"]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"work_units":8.0,"flagged_units":3.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":10932.0,"flagged_loc":9993.0,"flagged_loc_share":0.9141053787047201,"max_loc_per_hour":1029.1530023747598,"median_loc_per_hour":569.3264248704663,"pr_timed_units":0.0,"excluded_import_loc":3724.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"5,056 lines of first-party code in ~4.9h (1,029 lines/hour, 4 commit session)","ref":"88140961ee8e174352ab7ce936c6f7e177f02cf4","url":"https://github.com/az9713/talk-it-out-ai/commit/88140961ee8e174352ab7ce936c6f7e177f02cf4","weight":0.3087459007124279},{"kind":"velocity-burst","description":"2,190 lines of first-party code in ~3.4h (641 lines/hour, 2 commit session)","ref":"6b239172a0092d665848a5a19e29d430d5dbc78e","url":"https://github.com/az9713/talk-it-out-ai/commit/6b239172a0092d665848a5a19e29d430d5dbc78e","weight":0.192183310311205},{"kind":"velocity-burst","description":"2,747 lines of first-party code in ~4.8h (569 lines/hour, 3 commit session)","ref":"d4d68db2ab33b8b84975674dccbfad6925437701","url":"https://github.com/az9713/talk-it-out-ai/commit/d4d68db2ab33b8b84975674dccbfad6925437701","weight":0.1707979274611399}],"data":{"flagged_loc_by_commit":{"9463f54537a02eb23bfebfa69c345031a663ff0d":1307,"6b239172a0092d665848a5a19e29d430d5dbc78e":883,"2fd0d4f7e7dad33e1a4f82d14a31c578535e9998":789,"67784d0214283b9cc4d1489e2ad43f7ddedc8a2a":532,"d4d68db2ab33b8b84975674dccbfad6925437701":1426,"d4cf46cb76677bea11f25f62bf3bce8e3b8dd01c":788,"bb3cbae1826ae13cc5f6b34ca6aacf172539e669":1399,"3bcbccc478c64aaead91973a91a6012931d35af8":1399,"88140961ee8e174352ab7ce936c6f7e177f02cf4":1470},"excluded_import_commits":["c3335db3990a1f5f806260da5ac0f4e4f91c766b"]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":14522.0,"index":0.275,"count:narrated_steps":0.0,"per_kloc:narrated_steps":0.0,"files:narrated_steps":0.0,"count:placeholder":0.0,"per_kloc:placeholder":0.0,"files:placeholder":0.0,"count:emoji_in_code":8.0,"per_kloc:emoji_in_code":0.551,"files:emoji_in_code":3.0,"count:assistant_voice":0.0,"per_kloc:assistant_voice":0.0,"files:assistant_voice":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-secrets","pillar":"security","status":"ok","tool_version":"gitleaks 8.30.1","metrics":{"secrets_current":0.0,"secrets_history":0.0,"secrets_nonprod":1.0,"secrets_low_confidence":0.0},"findings":[{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit 5c041d2999); removed from the current tree but still retrievable","path":"docs/BMAD_Tutorial.md","line":218,"fingerprint":"5c041d299947361c7dd195c4054b46ab930ce4d6:docs/BMAD_Tutorial.md:generic-api-key:218"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":2.0,"findings_high":0.0,"findings_medium":1.0,"findings_low":1.0,"weighted_findings":0.312,"scanned_lines":14522.0,"parse_errors":0.0},"findings":[{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"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). [confidence low]","path":"src/lib/email/index.ts","line":75,"fingerprint":"javascript.lang.security.html-in-template-string:src/lib/email/index.ts:75"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-formatstring","severity":"low","message":"Detected string concatenation with a non-literal variable in a util.format / console.log function. If an attacker injects a format specifier in the string, it will forge the log message. Try to use constant values for the format string. [confidence low]","path":"src/services/reminders.ts","line":179,"fingerprint":"javascript.lang.security.audit.unsafe-formatstring:src/services/reminders.ts:179"}],"evidence":[],"data":{"rulesets":["typescript","javascript"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"ok","tool_version":"osv-scanner version: 2.7.1","metrics":{"vulnerable_packages":28.0,"vulnerabilities":110.0,"vulns_critical":8.0,"vulns_high":60.0,"vulns_medium":38.0,"vulns_low":4.0,"vulns_unknown":0.0,"penalty":225.0},"findings":[{"rule_id":"osv/GHSA-7rqj-j65f-68wh","severity":"critical","message":"@auth/core@0.41.0 (npm) is affected by GHSA-7rqj-j65f-68wh","path":"package-lock.json","line":null,"fingerprint":"@auth/core@0.41.0 (npm):GHSA-7rqj-j65f-68wh"},{"rule_id":"osv/GHSA-7rqj-j65f-68wh","severity":"critical","message":"@auth/core@0.41.1 (npm) is affected by GHSA-7rqj-j65f-68wh","path":"package-lock.json","line":null,"fingerprint":"@auth/core@0.41.1 (npm):GHSA-7rqj-j65f-68wh"},{"rule_id":"osv/GHSA-2464-fhr4-w9xw","severity":"critical","message":"next@16.1.1 (npm) is affected by GHSA-2464-fhr4-w9xw","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-2464-fhr4-w9xw"},{"rule_id":"osv/GHSA-2xp9-vwfh-vxw4","severity":"critical","message":"next@16.1.1 (npm) is affected by GHSA-2xp9-vwfh-vxw4","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-2xp9-vwfh-vxw4"},{"rule_id":"osv/GHSA-673q-mjm6-r5xr","severity":"critical","message":"next@16.1.1 (npm) is affected by GHSA-673q-mjm6-r5xr","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-673q-mjm6-r5xr"},{"rule_id":"osv/GHSA-p293-qw3h-jr36","severity":"critical","message":"next@16.1.1 (npm) is affected by GHSA-p293-qw3h-jr36","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-p293-qw3h-jr36"},{"rule_id":"osv/GHSA-7rqj-j65f-68wh","severity":"critical","message":"next-auth@5.0.0-beta.30 (npm) is affected by GHSA-7rqj-j65f-68wh","path":"package-lock.json","line":null,"fingerprint":"next-auth@5.0.0-beta.30 (npm):GHSA-7rqj-j65f-68wh"},{"rule_id":"osv/GHSA-8fpg-xm3f-6cx3","severity":"critical","message":"next-auth@5.0.0-beta.30 (npm) is affected by GHSA-8fpg-xm3f-6cx3","path":"package-lock.json","line":null,"fingerprint":"next-auth@5.0.0-beta.30 (npm):GHSA-8fpg-xm3f-6cx3"},{"rule_id":"osv/GHSA-xmf8-cvqr-rfgj","severity":"high","message":"@auth/core@0.41.0 (npm) is affected by GHSA-xmf8-cvqr-rfgj","path":"package-lock.json","line":null,"fingerprint":"@auth/core@0.41.0 (npm):GHSA-xmf8-cvqr-rfgj"},{"rule_id":"osv/GHSA-xmf8-cvqr-rfgj","severity":"high","message":"@auth/core@0.41.1 (npm) is affected by GHSA-xmf8-cvqr-rfgj","path":"package-lock.json","line":null,"fingerprint":"@auth/core@0.41.1 (npm):GHSA-xmf8-cvqr-rfgj"},{"rule_id":"osv/GHSA-3jxr-9vmj-r5cp","severity":"high","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-3jxr-9vmj-r5cp","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-3jxr-9vmj-r5cp"},{"rule_id":"osv/GHSA-6j4f-fj2g-mc7p","severity":"high","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-6j4f-fj2g-mc7p","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-6j4f-fj2g-mc7p"},{"rule_id":"osv/GHSA-mh99-v99m-4gvg","severity":"high","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-mh99-v99m-4gvg","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-mh99-v99m-4gvg"},{"rule_id":"osv/GHSA-qhr7-859c-m2p7","severity":"high","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-qhr7-859c-m2p7","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-qhr7-859c-m2p7"},{"rule_id":"osv/GHSA-rgw5-rvv9-x895","severity":"high","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-rgw5-rvv9-x895","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-rgw5-rvv9-x895"},{"rule_id":"osv/GHSA-3jxr-9vmj-r5cp","severity":"high","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-3jxr-9vmj-r5cp","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-3jxr-9vmj-r5cp"},{"rule_id":"osv/GHSA-6j4f-fj2g-mc7p","severity":"high","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-6j4f-fj2g-mc7p","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-6j4f-fj2g-mc7p"},{"rule_id":"osv/GHSA-mh99-v99m-4gvg","severity":"high","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-mh99-v99m-4gvg","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-mh99-v99m-4gvg"},{"rule_id":"osv/GHSA-qhr7-859c-m2p7","severity":"high","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-qhr7-859c-m2p7","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-qhr7-859c-m2p7"},{"rule_id":"osv/GHSA-rgw5-rvv9-x895","severity":"high","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-rgw5-rvv9-x895","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-rgw5-rvv9-x895"},{"rule_id":"osv/GHSA-73wf-gq98-2v4g","severity":"high","message":"browserslist@4.28.1 (npm) is affected by GHSA-73wf-gq98-2v4g","path":"package-lock.json","line":null,"fingerprint":"browserslist@4.28.1 (npm):GHSA-73wf-gq98-2v4g"},{"rule_id":"osv/GHSA-c83g-rgw3-j3cx","severity":"high","message":"browserslist@4.28.1 (npm) is affected by GHSA-c83g-rgw3-j3cx","path":"package-lock.json","line":null,"fingerprint":"browserslist@4.28.1 (npm):GHSA-c83g-rgw3-j3cx"},{"rule_id":"osv/GHSA-gpj5-g38j-94v9","severity":"high","message":"drizzle-orm@0.45.1 (npm) is affected by GHSA-gpj5-g38j-94v9","path":"package-lock.json","line":null,"fingerprint":"drizzle-orm@0.45.1 (npm):GHSA-gpj5-g38j-94v9"},{"rule_id":"osv/GHSA-25h7-pfq9-p65f","severity":"high","message":"flatted@3.3.3 (npm) is affected by GHSA-25h7-pfq9-p65f","path":"package-lock.json","line":null,"fingerprint":"flatted@3.3.3 (npm):GHSA-25h7-pfq9-p65f"},{"rule_id":"osv/GHSA-rf6f-7fwh-wjgh","severity":"high","message":"flatted@3.3.3 (npm) is affected by GHSA-rf6f-7fwh-wjgh","path":"package-lock.json","line":null,"fingerprint":"flatted@3.3.3 (npm):GHSA-rf6f-7fwh-wjgh"},{"rule_id":"osv/GHSA-hmw2-7cc7-3qxx","severity":"high","message":"form-data@4.0.5 (npm) is affected by GHSA-hmw2-7cc7-3qxx","path":"package-lock.json","line":null,"fingerprint":"form-data@4.0.5 (npm):GHSA-hmw2-7cc7-3qxx"},{"rule_id":"osv/GHSA-2883-xcg3-v3hh","severity":"high","message":"js-yaml@4.1.1 (npm) is affected by GHSA-2883-xcg3-v3hh","path":"package-lock.json","line":null,"fingerprint":"js-yaml@4.1.1 (npm):GHSA-2883-xcg3-v3hh"},{"rule_id":"osv/GHSA-52cp-r559-cp3m","severity":"high","message":"js-yaml@4.1.1 (npm) is affected by GHSA-52cp-r559-cp3m","path":"package-lock.json","line":null,"fingerprint":"js-yaml@4.1.1 (npm):GHSA-52cp-r559-cp3m"},{"rule_id":"osv/GHSA-5p4m-2wfm-xmqj","severity":"high","message":"js-yaml@4.1.1 (npm) is affected by GHSA-5p4m-2wfm-xmqj","path":"package-lock.json","line":null,"fingerprint":"js-yaml@4.1.1 (npm):GHSA-5p4m-2wfm-xmqj"},{"rule_id":"osv/GHSA-23c5-xmqv-rm74","severity":"high","message":"minimatch@3.1.2 (npm) is affected by GHSA-23c5-xmqv-rm74","path":"package-lock.json","line":null,"fingerprint":"minimatch@3.1.2 (npm):GHSA-23c5-xmqv-rm74"},{"rule_id":"osv/GHSA-3ppc-4f35-3m26","severity":"high","message":"minimatch@3.1.2 (npm) is affected by GHSA-3ppc-4f35-3m26","path":"package-lock.json","line":null,"fingerprint":"minimatch@3.1.2 (npm):GHSA-3ppc-4f35-3m26"},{"rule_id":"osv/GHSA-7r86-cg39-jmmj","severity":"high","message":"minimatch@3.1.2 (npm) is affected by GHSA-7r86-cg39-jmmj","path":"package-lock.json","line":null,"fingerprint":"minimatch@3.1.2 (npm):GHSA-7r86-cg39-jmmj"},{"rule_id":"osv/GHSA-23c5-xmqv-rm74","severity":"high","message":"minimatch@9.0.5 (npm) is affected by GHSA-23c5-xmqv-rm74","path":"package-lock.json","line":null,"fingerprint":"minimatch@9.0.5 (npm):GHSA-23c5-xmqv-rm74"},{"rule_id":"osv/GHSA-3ppc-4f35-3m26","severity":"high","message":"minimatch@9.0.5 (npm) is affected by GHSA-3ppc-4f35-3m26","path":"package-lock.json","line":null,"fingerprint":"minimatch@9.0.5 (npm):GHSA-3ppc-4f35-3m26"},{"rule_id":"osv/GHSA-7r86-cg39-jmmj","severity":"high","message":"minimatch@9.0.5 (npm) is affected by GHSA-7r86-cg39-jmmj","path":"package-lock.json","line":null,"fingerprint":"minimatch@9.0.5 (npm):GHSA-7r86-cg39-jmmj"},{"rule_id":"osv/GHSA-28wg-ghj8-5hjv","severity":"high","message":"nanoid@3.3.11 (npm) is affected by GHSA-28wg-ghj8-5hjv","path":"package-lock.json","line":null,"fingerprint":"nanoid@3.3.11 (npm):GHSA-28wg-ghj8-5hjv"},{"rule_id":"osv/GHSA-2v37-7h3g-55p8","severity":"high","message":"nanoid@3.3.11 (npm) is affected by GHSA-2v37-7h3g-55p8","path":"package-lock.json","line":null,"fingerprint":"nanoid@3.3.11 (npm):GHSA-2v37-7h3g-55p8"},{"rule_id":"osv/GHSA-xwg4-73v4-xw9w","severity":"high","message":"nanoid@3.3.11 (npm) is affected by GHSA-xwg4-73v4-xw9w","path":"package-lock.json","line":null,"fingerprint":"nanoid@3.3.11 (npm):GHSA-xwg4-73v4-xw9w"},{"rule_id":"osv/GHSA-28wg-ghj8-5hjv","severity":"high","message":"nanoid@5.1.6 (npm) is affected by GHSA-28wg-ghj8-5hjv","path":"package-lock.json","line":null,"fingerprint":"nanoid@5.1.6 (npm):GHSA-28wg-ghj8-5hjv"},{"rule_id":"osv/GHSA-xwg4-73v4-xw9w","severity":"high","message":"nanoid@5.1.6 (npm) is affected by GHSA-xwg4-73v4-xw9w","path":"package-lock.json","line":null,"fingerprint":"nanoid@5.1.6 (npm):GHSA-xwg4-73v4-xw9w"},{"rule_id":"osv/GHSA-267c-6grr-h53f","severity":"high","message":"next@16.1.1 (npm) is affected by GHSA-267c-6grr-h53f","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-267c-6grr-h53f"},{"rule_id":"osv/GHSA-26hh-7cqf-hhc6","severity":"high","message":"next@16.1.1 (npm) is affected by GHSA-26hh-7cqf-hhc6","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-26hh-7cqf-hhc6"},{"rule_id":"osv/GHSA-36qx-fr4f-26g5","severity":"high","message":"next@16.1.1 (npm) is affected by GHSA-36qx-fr4f-26g5","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-36qx-fr4f-26g5"},{"rule_id":"osv/GHSA-492v-c6pp-mqqv","severity":"high","message":"next@16.1.1 (npm) is affected by GHSA-492v-c6pp-mqqv","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-492v-c6pp-mqqv"},{"rule_id":"osv/GHSA-6gpp-xcg3-4w24","severity":"high","message":"next@16.1.1 (npm) is affected by GHSA-6gpp-xcg3-4w24","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-6gpp-xcg3-4w24"},{"rule_id":"osv/GHSA-89xv-2m56-2m9x","severity":"high","message":"next@16.1.1 (npm) is affected by GHSA-89xv-2m56-2m9x","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-89xv-2m56-2m9x"},{"rule_id":"osv/GHSA-8h8q-6873-q5fj","severity":"high","message":"next@16.1.1 (npm) is affected by GHSA-8h8q-6873-q5fj","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-8h8q-6873-q5fj"},{"rule_id":"osv/GHSA-c4j6-fc7j-m34r","severity":"high","message":"next@16.1.1 (npm) is affected by GHSA-c4j6-fc7j-m34r","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-c4j6-fc7j-m34r"},{"rule_id":"osv/GHSA-cjq9-62q9-8jv4","severity":"high","message":"next@16.1.1 (npm) is affected by GHSA-cjq9-62q9-8jv4","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-cjq9-62q9-8jv4"},{"rule_id":"osv/GHSA-h25m-26qc-wcjf","severity":"high","message":"next@16.1.1 (npm) is affected by GHSA-h25m-26qc-wcjf","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-h25m-26qc-wcjf"},{"rule_id":"osv/GHSA-m99w-x7hq-7vfj","severity":"high","message":"next@16.1.1 (npm) is affected by GHSA-m99w-x7hq-7vfj","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-m99w-x7hq-7vfj"},{"rule_id":"osv/GHSA-mg66-mrh9-m8jx","severity":"high","message":"next@16.1.1 (npm) is affected by GHSA-mg66-mrh9-m8jx","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-mg66-mrh9-m8jx"},{"rule_id":"osv/GHSA-p3m5-59mp-jv5r","severity":"high","message":"next@16.1.1 (npm) is affected by GHSA-p3m5-59mp-jv5r","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-p3m5-59mp-jv5r"},{"rule_id":"osv/GHSA-p9j2-gv94-2wf4","severity":"high","message":"next@16.1.1 (npm) is affected by GHSA-p9j2-gv94-2wf4","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-p9j2-gv94-2wf4"},{"rule_id":"osv/GHSA-q4gf-8mx6-v5v3","severity":"high","message":"next@16.1.1 (npm) is affected by GHSA-q4gf-8mx6-v5v3","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-q4gf-8mx6-v5v3"},{"rule_id":"osv/GHSA-xmf8-cvqr-rfgj","severity":"high","message":"next-auth@5.0.0-beta.30 (npm) is affected by GHSA-xmf8-cvqr-rfgj","path":"package-lock.json","line":null,"fingerprint":"next-auth@5.0.0-beta.30 (npm):GHSA-xmf8-cvqr-rfgj"},{"rule_id":"osv/GHSA-c2c7-rcm5-vvqj","severity":"high","message":"picomatch@2.3.1 (npm) is affected by GHSA-c2c7-rcm5-vvqj","path":"package-lock.json","line":null,"fingerprint":"picomatch@2.3.1 (npm):GHSA-c2c7-rcm5-vvqj"},{"rule_id":"osv/GHSA-c2c7-rcm5-vvqj","severity":"high","message":"picomatch@4.0.3 (npm) is affected by GHSA-c2c7-rcm5-vvqj","path":"package-lock.json","line":null,"fingerprint":"picomatch@4.0.3 (npm):GHSA-c2c7-rcm5-vvqj"},{"rule_id":"osv/GHSA-6g55-p6wh-862q","severity":"high","message":"postcss@8.4.31 (npm) is affected by GHSA-6g55-p6wh-862q","path":"package-lock.json","line":null,"fingerprint":"postcss@8.4.31 (npm):GHSA-6g55-p6wh-862q"},{"rule_id":"osv/GHSA-r28c-9q8g-f849","severity":"high","message":"postcss@8.4.31 (npm) is affected by GHSA-r28c-9q8g-f849","path":"package-lock.json","line":null,"fingerprint":"postcss@8.4.31 (npm):GHSA-r28c-9q8g-f849"},{"rule_id":"osv/GHSA-6g55-p6wh-862q","severity":"high","message":"postcss@8.5.6 (npm) is affected by GHSA-6g55-p6wh-862q","path":"package-lock.json","line":null,"fingerprint":"postcss@8.5.6 (npm):GHSA-6g55-p6wh-862q"},{"rule_id":"osv/GHSA-r28c-9q8g-f849","severity":"high","message":"postcss@8.5.6 (npm) is affected by GHSA-r28c-9q8g-f849","path":"package-lock.json","line":null,"fingerprint":"postcss@8.5.6 (npm):GHSA-r28c-9q8g-f849"},{"rule_id":"osv/GHSA-f88m-g3jw-g9cj","severity":"high","message":"sharp@0.34.5 (npm) is affected by GHSA-f88m-g3jw-g9cj","path":"package-lock.json","line":null,"fingerprint":"sharp@0.34.5 (npm):GHSA-f88m-g3jw-g9cj"},{"rule_id":"osv/GHSA-rgj7-g3m4-5g8c","severity":"high","message":"sharp@0.34.5 (npm) is affected by GHSA-rgj7-g3m4-5g8c","path":"package-lock.json","line":null,"fingerprint":"sharp@0.34.5 (npm):GHSA-rgj7-g3m4-5g8c"},{"rule_id":"osv/GHSA-wq5f-xc86-pv6w","severity":"high","message":"sharp@0.34.5 (npm) is affected by GHSA-wq5f-xc86-pv6w","path":"package-lock.json","line":null,"fingerprint":"sharp@0.34.5 (npm):GHSA-wq5f-xc86-pv6w"},{"rule_id":"osv/GHSA-68fv-2mgg-jv7q","severity":"high","message":"source-map-js@1.2.1 (npm) is affected by GHSA-68fv-2mgg-jv7q","path":"package-lock.json","line":null,"fingerprint":"source-map-js@1.2.1 (npm):GHSA-68fv-2mgg-jv7q"},{"rule_id":"osv/GHSA-w5hq-g745-h8pq","severity":"high","message":"uuid@10.0.0 (npm) is affected by GHSA-w5hq-g745-h8pq","path":"package-lock.json","line":null,"fingerprint":"uuid@10.0.0 (npm):GHSA-w5hq-g745-h8pq"},{"rule_id":"osv/GHSA-mrhx-c7xc-m3w5","severity":"high","message":"zod@4.3.5 (npm) is affected by GHSA-mrhx-c7xc-m3w5","path":"package-lock.json","line":null,"fingerprint":"zod@4.3.5 (npm):GHSA-mrhx-c7xc-m3w5"},{"rule_id":"osv/GHSA-x445-f3h2-j279","severity":"medium","message":"@auth/core@0.41.0 (npm) is affected by GHSA-x445-f3h2-j279","path":"package-lock.json","line":null,"fingerprint":"@auth/core@0.41.0 (npm):GHSA-x445-f3h2-j279"},{"rule_id":"osv/GHSA-x445-f3h2-j279","severity":"medium","message":"@auth/core@0.41.1 (npm) is affected by GHSA-x445-f3h2-j279","path":"package-lock.json","line":null,"fingerprint":"@auth/core@0.41.1 (npm):GHSA-x445-f3h2-j279"},{"rule_id":"osv/GHSA-p498-v437-472g","severity":"medium","message":"@humanfs/node@0.16.7 (npm) is affected by GHSA-p498-v437-472g","path":"package-lock.json","line":null,"fingerprint":"@humanfs/node@0.16.7 (npm):GHSA-p498-v437-472g"},{"rule_id":"osv/GHSA-2g4f-4pwh-qvx6","severity":"medium","message":"ajv@6.12.6 (npm) is affected by GHSA-2g4f-4pwh-qvx6","path":"package-lock.json","line":null,"fingerprint":"ajv@6.12.6 (npm):GHSA-2g4f-4pwh-qvx6"},{"rule_id":"osv/GHSA-w5vr-8v7q-w6rv","severity":"medium","message":"baseline-browser-mapping@2.9.11 (npm) is affected by GHSA-w5vr-8v7q-w6rv","path":"package-lock.json","line":null,"fingerprint":"baseline-browser-mapping@2.9.11 (npm):GHSA-w5vr-8v7q-w6rv"},{"rule_id":"osv/GHSA-f886-m6hf-6m8v","severity":"medium","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-f886-m6hf-6m8v","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-f886-m6hf-6m8v"},{"rule_id":"osv/GHSA-q2hr-2g5m-vwhr","severity":"medium","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-q2hr-2g5m-vwhr","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-q2hr-2g5m-vwhr"},{"rule_id":"osv/GHSA-f886-m6hf-6m8v","severity":"medium","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-f886-m6hf-6m8v","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-f886-m6hf-6m8v"},{"rule_id":"osv/GHSA-q2hr-2g5m-vwhr","severity":"medium","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-q2hr-2g5m-vwhr","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-q2hr-2g5m-vwhr"},{"rule_id":"osv/GHSA-67mh-4wv8-2f99","severity":"medium","message":"esbuild@0.18.20 (npm) is affected by GHSA-67mh-4wv8-2f99","path":"package-lock.json","line":null,"fingerprint":"esbuild@0.18.20 (npm):GHSA-67mh-4wv8-2f99"},{"rule_id":"osv/GHSA-h67p-54hq-rp68","severity":"medium","message":"js-yaml@4.1.1 (npm) is affected by GHSA-h67p-54hq-rp68","path":"package-lock.json","line":null,"fingerprint":"js-yaml@4.1.1 (npm):GHSA-h67p-54hq-rp68"},{"rule_id":"osv/GHSA-g3hv-75wg-m249","severity":"medium","message":"minimatch@9.0.5 (npm) is affected by GHSA-g3hv-75wg-m249","path":"package-lock.json","line":null,"fingerprint":"minimatch@9.0.5 (npm):GHSA-g3hv-75wg-m249"},{"rule_id":"osv/GHSA-39w2-rjm5-chcv","severity":"medium","message":"next@16.1.1 (npm) is affected by GHSA-39w2-rjm5-chcv","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-39w2-rjm5-chcv"},{"rule_id":"osv/GHSA-3x4c-7xq6-9pq8","severity":"medium","message":"next@16.1.1 (npm) is affected by GHSA-3x4c-7xq6-9pq8","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-3x4c-7xq6-9pq8"},{"rule_id":"osv/GHSA-4633-3j49-mh5q","severity":"medium","message":"next@16.1.1 (npm) is affected by GHSA-4633-3j49-mh5q","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-4633-3j49-mh5q"},{"rule_id":"osv/GHSA-4c39-4ccg-62r3","severity":"medium","message":"next@16.1.1 (npm) is affected by GHSA-4c39-4ccg-62r3","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-4c39-4ccg-62r3"},{"rule_id":"osv/GHSA-4jqv-mc3x-m676","severity":"medium","message":"next@16.1.1 (npm) is affected by GHSA-4jqv-mc3x-m676","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-4jqv-mc3x-m676"},{"rule_id":"osv/GHSA-5f7q-jpqc-wp7h","severity":"medium","message":"next@16.1.1 (npm) is affected by GHSA-5f7q-jpqc-wp7h","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-5f7q-jpqc-wp7h"},{"rule_id":"osv/GHSA-68g3-v927-f742","severity":"medium","message":"next@16.1.1 (npm) is affected by GHSA-68g3-v927-f742","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-68g3-v927-f742"},{"rule_id":"osv/GHSA-955p-x3mx-jcvp","severity":"medium","message":"next@16.1.1 (npm) is affected by GHSA-955p-x3mx-jcvp","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-955p-x3mx-jcvp"},{"rule_id":"osv/GHSA-9g9p-9gw9-jx7f","severity":"medium","message":"next@16.1.1 (npm) is affected by GHSA-9g9p-9gw9-jx7f","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-9g9p-9gw9-jx7f"},{"rule_id":"osv/GHSA-f87g-xv8r-7p7x","severity":"medium","message":"next@16.1.1 (npm) is affected by GHSA-f87g-xv8r-7p7x","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-f87g-xv8r-7p7x"},{"rule_id":"osv/GHSA-ffhc-5mcf-pf4q","severity":"medium","message":"next@16.1.1 (npm) is affected by GHSA-ffhc-5mcf-pf4q","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-ffhc-5mcf-pf4q"},{"rule_id":"osv/GHSA-ggv3-7p47-pfv8","severity":"medium","message":"next@16.1.1 (npm) is affected by GHSA-ggv3-7p47-pfv8","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-ggv3-7p47-pfv8"},{"rule_id":"osv/GHSA-gx5p-jg67-6x7h","severity":"medium","message":"next@16.1.1 (npm) is affected by GHSA-gx5p-jg67-6x7h","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-gx5p-jg67-6x7h"},{"rule_id":"osv/GHSA-h27x-g6w4-24gq","severity":"medium","message":"next@16.1.1 (npm) is affected by GHSA-h27x-g6w4-24gq","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-h27x-g6w4-24gq"},{"rule_id":"osv/GHSA-h64f-5h5j-jqjh","severity":"medium","message":"next@16.1.1 (npm) is affected by GHSA-h64f-5h5j-jqjh","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-h64f-5h5j-jqjh"},{"rule_id":"osv/GHSA-mcj8-r9mp-w47p","severity":"medium","message":"next@16.1.1 (npm) is affected by GHSA-mcj8-r9mp-w47p","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-mcj8-r9mp-w47p"},{"rule_id":"osv/GHSA-mq59-m269-xvcx","severity":"medium","message":"next@16.1.1 (npm) is affected by GHSA-mq59-m269-xvcx","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-mq59-m269-xvcx"},{"rule_id":"osv/GHSA-q8wf-6r8g-63ch","severity":"medium","message":"next@16.1.1 (npm) is affected by GHSA-q8wf-6r8g-63ch","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-q8wf-6r8g-63ch"},{"rule_id":"osv/GHSA-wfc6-r584-vfw7","severity":"medium","message":"next@16.1.1 (npm) is affected by GHSA-wfc6-r584-vfw7","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-wfc6-r584-vfw7"},{"rule_id":"osv/GHSA-x445-f3h2-j279","severity":"medium","message":"next-auth@5.0.0-beta.30 (npm) is affected by GHSA-x445-f3h2-j279","path":"package-lock.json","line":null,"fingerprint":"next-auth@5.0.0-beta.30 (npm):GHSA-x445-f3h2-j279"},{"rule_id":"osv/GHSA-3v7f-55p6-f55p","severity":"medium","message":"picomatch@2.3.1 (npm) is affected by GHSA-3v7f-55p6-f55p","path":"package-lock.json","line":null,"fingerprint":"picomatch@2.3.1 (npm):GHSA-3v7f-55p6-f55p"},{"rule_id":"osv/GHSA-3v7f-55p6-f55p","severity":"medium","message":"picomatch@4.0.3 (npm) is affected by GHSA-3v7f-55p6-f55p","path":"package-lock.json","line":null,"fingerprint":"picomatch@4.0.3 (npm):GHSA-3v7f-55p6-f55p"},{"rule_id":"osv/GHSA-fxqj-rqcc-2cmp","severity":"medium","message":"postcss@8.4.31 (npm) is affected by GHSA-fxqj-rqcc-2cmp","path":"package-lock.json","line":null,"fingerprint":"postcss@8.4.31 (npm):GHSA-fxqj-rqcc-2cmp"},{"rule_id":"osv/GHSA-qx2v-qp2m-jg93","severity":"medium","message":"postcss@8.4.31 (npm) is affected by GHSA-qx2v-qp2m-jg93","path":"package-lock.json","line":null,"fingerprint":"postcss@8.4.31 (npm):GHSA-qx2v-qp2m-jg93"},{"rule_id":"osv/GHSA-fxqj-rqcc-2cmp","severity":"medium","message":"postcss@8.5.6 (npm) is affected by GHSA-fxqj-rqcc-2cmp","path":"package-lock.json","line":null,"fingerprint":"postcss@8.5.6 (npm):GHSA-fxqj-rqcc-2cmp"},{"rule_id":"osv/GHSA-qx2v-qp2m-jg93","severity":"medium","message":"postcss@8.5.6 (npm) is affected by GHSA-qx2v-qp2m-jg93","path":"package-lock.json","line":null,"fingerprint":"postcss@8.5.6 (npm):GHSA-qx2v-qp2m-jg93"},{"rule_id":"osv/GHSA-4x5r-pxfx-6jf8","severity":"low","message":"@babel/core@7.28.5 (npm) is affected by GHSA-4x5r-pxfx-6jf8","path":"package-lock.json","line":null,"fingerprint":"@babel/core@7.28.5 (npm):GHSA-4x5r-pxfx-6jf8"},{"rule_id":"osv/GHSA-3g8h-86w9-wvmq","severity":"low","message":"next@16.1.1 (npm) is affected by GHSA-3g8h-86w9-wvmq","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-3g8h-86w9-wvmq"},{"rule_id":"osv/GHSA-jcc7-9wpm-mj36","severity":"low","message":"next@16.1.1 (npm) is affected by GHSA-jcc7-9wpm-mj36","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-jcc7-9wpm-mj36"},{"rule_id":"osv/GHSA-vfv6-92ff-j949","severity":"low","message":"next@16.1.1 (npm) is affected by GHSA-vfv6-92ff-j949","path":"package-lock.json","line":null,"fingerprint":"next@16.1.1 (npm):GHSA-vfv6-92ff-j949"}],"evidence":[],"data":{"ecosystems":["npm"]},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-posture","pillar":"security","status":"ok","tool_version":null,"metrics":{"check:security_policy":0.0,"check:dependency_updates":0.0,"check:signed_commits":1.0,"check:lockfiles":1.0,"signed_commit_share":0.6087,"unpinned_manifests":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":0.0,"binary_assets":0.0,"suspicious":0.0},"findings":[],"evidence":[],"data":{"signals":[],"suspicious":false,"unusual_traction":false,"metadata":true},"error":null},{"analyzer":"qual-complexity","pillar":"quality","status":"ok","tool_version":"lizard 1.25.1","metrics":{"functions":650.0,"function_nloc":9307.0,"mean_ccn":2.41,"p90_ccn":5.0,"complex_functions":2.0,"long_functions":6.0,"many_param_functions":0.0,"risky_nloc_share":0.1059},"findings":[],"evidence":[{"kind":"complex-function","description":"analyzeThemes in src/services/insights.ts: complexity 36, 36 lines","ref":"src/services/insights.ts","url":"https://github.com/az9713/talk-it-out-ai/blob/a8bc35e90b042598d06066a0631a98babb58e853/src/services/insights.ts#L507","weight":0.6},{"kind":"complex-function","description":"getTopTopics in src/services/analytics.ts: complexity 23, 25 lines","ref":"src/services/analytics.ts","url":"https://github.com/az9713/talk-it-out-ai/blob/a8bc35e90b042598d06066a0631a98babb58e853/src/services/analytics.ts#L236","weight":0.38333333333333336},{"kind":"complex-function","description":"TemplatesPage in src/app/(dashboard)/dashboard/templates/page.tsx: complexity 14, 154 lines","ref":"src/app/(dashboard)/dashboard/templates/page.tsx","url":"https://github.com/az9713/talk-it-out-ai/blob/a8bc35e90b042598d06066a0631a98babb58e853/src/app/(dashboard)/dashboard/templates/page.tsx#L55","weight":0.23333333333333334},{"kind":"complex-function","description":"SessionPage in src/app/(dashboard)/dashboard/sessions/[id]/page.tsx: complexity 9, 114 lines","ref":"src/app/(dashboard)/dashboard/sessions/[id]/page.tsx","url":"https://github.com/az9713/talk-it-out-ai/blob/a8bc35e90b042598d06066a0631a98babb58e853/src/app/(dashboard)/dashboard/sessions/[id]/page.tsx#L34","weight":0.15},{"kind":"complex-function","description":"RemindersSettingsPage in src/app/(dashboard)/dashboard/settings/reminders/page.tsx: complexity 6, 211 lines","ref":"src/app/(dashboard)/dashboard/settings/reminders/page.tsx","url":"https://github.com/az9713/talk-it-out-ai/blob/a8bc35e90b042598d06066a0631a98babb58e853/src/app/(dashboard)/dashboard/settings/reminders/page.tsx#L42","weight":0.1},{"kind":"complex-function","description":"MediatorSettingsPage in src/app/(dashboard)/dashboard/settings/mediator/page.tsx: complexity 4, 228 lines","ref":"src/app/(dashboard)/dashboard/settings/mediator/page.tsx","url":"https://github.com/az9713/talk-it-out-ai/blob/a8bc35e90b042598d06066a0631a98babb58e853/src/app/(dashboard)/dashboard/settings/mediator/page.tsx#L38","weight":0.06666666666666667},{"kind":"complex-function","description":"SettingsPage in src/app/(dashboard)/dashboard/settings/page.tsx: complexity 3, 115 lines","ref":"src/app/(dashboard)/dashboard/settings/page.tsx","url":"https://github.com/az9713/talk-it-out-ai/blob/a8bc35e90b042598d06066a0631a98babb58e853/src/app/(dashboard)/dashboard/settings/page.tsx#L13","weight":0.05},{"kind":"complex-function","description":"LandingPage in src/app/page.tsx: complexity 1, 103 lines","ref":"src/app/page.tsx","url":"https://github.com/az9713/talk-it-out-ai/blob/a8bc35e90b042598d06066a0631a98babb58e853/src/app/page.tsx#L6","weight":0.016666666666666666}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":10607.0,"duplicated_lines":901.0,"duplicated_share":0.0849,"files":106.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: src/app/(auth)/login/page.tsx:15 and src/app/(auth)/signup/page.tsx:15","ref":"src/app/(auth)/login/page.tsx","url":"https://github.com/az9713/talk-it-out-ai/blob/a8bc35e90b042598d06066a0631a98babb58e853/src/app/(auth)/login/page.tsx#L15","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/app/(dashboard)/dashboard/analytics/page.tsx:31 and src/app/(dashboard)/dashboard/history/[id]/page.tsx:48","ref":"src/app/(dashboard)/dashboard/analytics/page.tsx","url":"https://github.com/az9713/talk-it-out-ai/blob/a8bc35e90b042598d06066a0631a98babb58e853/src/app/(dashboard)/dashboard/analytics/page.tsx#L31","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/app/(dashboard)/dashboard/analytics/page.tsx:38 and src/app/(dashboard)/dashboard/goals/page.tsx:165","ref":"src/app/(dashboard)/dashboard/analytics/page.tsx","url":"https://github.com/az9713/talk-it-out-ai/blob/a8bc35e90b042598d06066a0631a98babb58e853/src/app/(dashboard)/dashboard/analytics/page.tsx#L38","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/app/(dashboard)/dashboard/goals/page.tsx:20 and src/components/goal-tracking.tsx:421","ref":"src/app/(dashboard)/dashboard/goals/page.tsx","url":"https://github.com/az9713/talk-it-out-ai/blob/a8bc35e90b042598d06066a0631a98babb58e853/src/app/(dashboard)/dashboard/goals/page.tsx#L20","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/app/(dashboard)/dashboard/goals/page.tsx:168 and src/app/(dashboard)/dashboard/history/[id]/page.tsx:58","ref":"src/app/(dashboard)/dashboard/goals/page.tsx","url":"https://github.com/az9713/talk-it-out-ai/blob/a8bc35e90b042598d06066a0631a98babb58e853/src/app/(dashboard)/dashboard/goals/page.tsx#L168","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/app/(dashboard)/dashboard/goals/page.tsx:224 and src/app/(dashboard)/dashboard/goals/page.tsx:243","ref":"src/app/(dashboard)/dashboard/goals/page.tsx","url":"https://github.com/az9713/talk-it-out-ai/blob/a8bc35e90b042598d06066a0631a98babb58e853/src/app/(dashboard)/dashboard/goals/page.tsx#L224","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/app/(dashboard)/dashboard/history/page.tsx:202 and src/components/goal-tracking.tsx:74","ref":"src/app/(dashboard)/dashboard/history/page.tsx","url":"https://github.com/az9713/talk-it-out-ai/blob/a8bc35e90b042598d06066a0631a98babb58e853/src/app/(dashboard)/dashboard/history/page.tsx#L202","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/app/(dashboard)/dashboard/sessions/join/page.tsx:122 and src/app/(dashboard)/dashboard/sessions/join/page.tsx:170","ref":"src/app/(dashboard)/dashboard/sessions/join/page.tsx","url":"https://github.com/az9713/talk-it-out-ai/blob/a8bc35e90b042598d06066a0631a98babb58e853/src/app/(dashboard)/dashboard/sessions/join/page.tsx#L122","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/app/(dashboard)/dashboard/settings/reminders/page.tsx:1 and src/app/(dashboard)/dashboard/templates/page.tsx:1","ref":"src/app/(dashboard)/dashboard/settings/reminders/page.tsx","url":"https://github.com/az9713/talk-it-out-ai/blob/a8bc35e90b042598d06066a0631a98babb58e853/src/app/(dashboard)/dashboard/settings/reminders/page.tsx#L1","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/app/(dashboard)/dashboard/settings/reminders/page.tsx:20 and src/services/reminders.ts:232","ref":"src/app/(dashboard)/dashboard/settings/reminders/page.tsx","url":"https://github.com/az9713/talk-it-out-ai/blob/a8bc35e90b042598d06066a0631a98babb58e853/src/app/(dashboard)/dashboard/settings/reminders/page.tsx#L20","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":63.0,"weighted_findings":61.5,"scanned_lines":14522.0,"category:best-practice":61.0,"category:correctness":2.0},"findings":[{"rule_id":"opengrep/javascript.lang.best-practice.javascript-confirm","severity":"medium","message":"found confirm() call; should this be in production code?","path":"src/app/(dashboard)/dashboard/goals/page.tsx","line":131,"fingerprint":"javascript.lang.best-practice.javascript-confirm:src/app/(dashboard)/dashboard/goals/page.tsx:131"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-alert","severity":"medium","message":"found alert() call; should this be in production code?","path":"src/components/export-button.tsx","line":51,"fingerprint":"javascript.lang.best-practice.javascript-alert:src/components/export-button.tsx:51"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/avatar.tsx","line":19,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/avatar.tsx:19"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/avatar.tsx","line":32,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/avatar.tsx:32"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/avatar.tsx","line":48,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/avatar.tsx:48"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/badge.tsx","line":32,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/badge.tsx:32"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/button.tsx","line":57,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/button.tsx:57"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/card.tsx","line":13,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/card.tsx:13"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/card.tsx","line":26,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/card.tsx:26"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/card.tsx","line":36,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/card.tsx:36"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/card.tsx","line":46,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/card.tsx:46"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/card.tsx","line":59,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/card.tsx:59"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/card.tsx","line":69,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/card.tsx:69"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/card.tsx","line":79,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/card.tsx:79"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/dialog.tsx","line":12,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/dialog.tsx:12"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/dialog.tsx","line":18,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/dialog.tsx:18"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/dialog.tsx","line":24,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/dialog.tsx:24"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/dialog.tsx","line":30,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/dialog.tsx:30"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/dialog.tsx","line":44,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/dialog.tsx:44"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/dialog.tsx","line":66,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/dialog.tsx:66"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/dialog.tsx","line":88,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/dialog.tsx:88"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/dialog.tsx","line":101,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/dialog.tsx:101"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/dialog.tsx","line":114,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/dialog.tsx:114"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/dialog.tsx","line":127,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/dialog.tsx:127"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/dropdown-menu.tsx","line":12,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/dropdown-menu.tsx:12"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/dropdown-menu.tsx","line":19,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/dropdown-menu.tsx:19"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/dropdown-menu.tsx","line":29,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/dropdown-menu.tsx:29"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/dropdown-menu.tsx","line":48,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/dropdown-menu.tsx:48"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/dropdown-menu.tsx","line":58,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/dropdown-menu.tsx:58"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/dropdown-menu.tsx","line":80,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/dropdown-menu.tsx:80"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/dropdown-menu.tsx","line":99,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/dropdown-menu.tsx:99"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/dropdown-menu.tsx","line":117,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/dropdown-menu.tsx:117"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/dropdown-menu.tsx","line":134,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/dropdown-menu.tsx:134"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/dropdown-menu.tsx","line":161,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/dropdown-menu.tsx:161"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/dropdown-menu.tsx","line":174,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/dropdown-menu.tsx:174"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/dropdown-menu.tsx","line":190,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/dropdown-menu.tsx:190"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/dropdown-menu.tsx","line":198,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/dropdown-menu.tsx:198"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/dropdown-menu.tsx","line":217,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/dropdown-menu.tsx:217"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/dropdown-menu.tsx","line":236,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/dropdown-menu.tsx:236"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/input.tsx","line":16,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/input.tsx:16"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/label.tsx","line":19,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/label.tsx:19"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/progress.tsx","line":18,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/progress.tsx:18"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/scroll-area.tsx","line":17,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/scroll-area.tsx:17"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/scroll-area.tsx","line":48,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/scroll-area.tsx:48"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/select.tsx","line":12,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/select.tsx:12"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/select.tsx","line":18,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/select.tsx:18"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/select.tsx","line":24,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/select.tsx:24"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/select.tsx","line":43,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/select.tsx:43"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/select.tsx","line":72,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/select.tsx:72"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/select.tsx","line":98,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/select.tsx:98"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/select.tsx","line":115,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/select.tsx:115"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/select.tsx","line":138,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/select.tsx:138"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/select.tsx","line":154,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/select.tsx:154"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/select.tsx","line":172,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/select.tsx:172"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/switch.tsx","line":17,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/switch.tsx:17"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/tabs.tsx","line":16,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/tabs.tsx:16"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/tabs.tsx","line":32,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/tabs.tsx:32"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/tabs.tsx","line":48,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/tabs.tsx:48"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/tabs.tsx","line":61,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/tabs.tsx:61"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/textarea.tsx","line":13,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/textarea.tsx:13"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"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 actors a way to inject unexpected attributes.","path":"src/components/ui/tooltip.tsx","line":26,"fingerprint":"typescript.react.best-practice.react-props-spreading:src/components/ui/tooltip.tsx:26"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"src/lib/ai/prompts.ts","line":77,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:src/lib/ai/prompts.ts:77"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"src/lib/ai/prompts.ts","line":77,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:src/lib/ai/prompts.ts:77"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":0.0,"check:test_ratio":0.0,"check:ci_present":0.0,"check:ci_runs_tests":0.0,"check:ci_runs_lint":0.0,"check:tests_cochange":0.0,"test_lines":0.0,"source_lines":14522.0,"test_ratio":0.0,"ci_files":0.0,"cochange_share":0.0,"cochange_commits":15.0},"findings":[],"evidence":[],"data":{"test_commands":[],"lint_commands":[]},"error":null},{"analyzer":"qual-docs","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:readme":1.0,"check:license":0.0,"check:contributing":0.0,"check:changelog":0.0,"readme_lines":138.0},"findings":[],"evidence":[{"kind":"docs","description":"README.md","ref":"README.md","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"qual-type-safety","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:strict_config":1.0,"check:low_escape_density":1.0,"escapes":1.0,"escapes_per_kloc":0.069},"findings":[],"evidence":[{"kind":"typing","description":"TypeScript strict type checking: tsconfig.json","ref":"tsconfig.json","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"x-blame","pillar":"ai_provenance","status":"ok","tool_version":"git-blame","metrics":{"ai_lines":14450.0,"other_lines":72.0,"files_blamed":106.0,"blame_failures":0.0,"quality:ai_findings":63.0,"quality:ai_per_kloc":4.36,"quality:other_findings":0.0,"quality:other_per_kloc":0.0,"security:ai_findings":2.0,"security:ai_per_kloc":0.138,"security:other_findings":0.0,"security:other_per_kloc":0.0},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":false},"error":null}],"flags":["unreviewed-ai-risk"]}