vaspera 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +184 -0
- package/LICENSE +21 -0
- package/README.md +809 -0
- package/dist/__tests__/integration/certification-flow.test.d.ts +5 -0
- package/dist/__tests__/integration/certification-flow.test.d.ts.map +1 -0
- package/dist/__tests__/integration/certification-flow.test.js +245 -0
- package/dist/__tests__/integration/certification-flow.test.js.map +1 -0
- package/dist/__tests__/integration/commands.test.d.ts +5 -0
- package/dist/__tests__/integration/commands.test.d.ts.map +1 -0
- package/dist/__tests__/integration/commands.test.js +93 -0
- package/dist/__tests__/integration/commands.test.js.map +1 -0
- package/dist/action/diff-mode.d.ts +34 -0
- package/dist/action/diff-mode.d.ts.map +1 -0
- package/dist/action/diff-mode.js +201 -0
- package/dist/action/diff-mode.js.map +1 -0
- package/dist/action/diff-mode.test.d.ts +5 -0
- package/dist/action/diff-mode.test.d.ts.map +1 -0
- package/dist/action/diff-mode.test.js +162 -0
- package/dist/action/diff-mode.test.js.map +1 -0
- package/dist/action/index.d.ts +10 -0
- package/dist/action/index.d.ts.map +1 -0
- package/dist/action/index.js +231 -0
- package/dist/action/index.js.map +1 -0
- package/dist/action/pr-comment.d.ts +30 -0
- package/dist/action/pr-comment.d.ts.map +1 -0
- package/dist/action/pr-comment.js +301 -0
- package/dist/action/pr-comment.js.map +1 -0
- package/dist/action/pr-comment.test.d.ts +5 -0
- package/dist/action/pr-comment.test.d.ts.map +1 -0
- package/dist/action/pr-comment.test.js +189 -0
- package/dist/action/pr-comment.test.js.map +1 -0
- package/dist/action/sarif-upload.d.ts +104 -0
- package/dist/action/sarif-upload.d.ts.map +1 -0
- package/dist/action/sarif-upload.js +188 -0
- package/dist/action/sarif-upload.js.map +1 -0
- package/dist/action/sarif-upload.test.d.ts +5 -0
- package/dist/action/sarif-upload.test.d.ts.map +1 -0
- package/dist/action/sarif-upload.test.js +206 -0
- package/dist/action/sarif-upload.test.js.map +1 -0
- package/dist/action/types.d.ts +104 -0
- package/dist/action/types.d.ts.map +1 -0
- package/dist/action/types.js +33 -0
- package/dist/action/types.js.map +1 -0
- package/dist/action/types.test.d.ts +5 -0
- package/dist/action/types.test.d.ts.map +1 -0
- package/dist/action/types.test.js +79 -0
- package/dist/action/types.test.js.map +1 -0
- package/dist/agents/agent-integrity.d.ts +111 -0
- package/dist/agents/agent-integrity.d.ts.map +1 -0
- package/dist/agents/agent-integrity.js +308 -0
- package/dist/agents/agent-integrity.js.map +1 -0
- package/dist/agents/agent-privacy.d.ts +68 -0
- package/dist/agents/agent-privacy.d.ts.map +1 -0
- package/dist/agents/agent-privacy.js +345 -0
- package/dist/agents/agent-privacy.js.map +1 -0
- package/dist/agents/exploit-chain.d.ts +64 -0
- package/dist/agents/exploit-chain.d.ts.map +1 -0
- package/dist/agents/exploit-chain.js +477 -0
- package/dist/agents/exploit-chain.js.map +1 -0
- package/dist/agents/exploit-chain.test.d.ts +5 -0
- package/dist/agents/exploit-chain.test.d.ts.map +1 -0
- package/dist/agents/exploit-chain.test.js +455 -0
- package/dist/agents/exploit-chain.test.js.map +1 -0
- package/dist/agents/index.d.ts +14 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +19 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/logic-flaw-detector.d.ts +55 -0
- package/dist/agents/logic-flaw-detector.d.ts.map +1 -0
- package/dist/agents/logic-flaw-detector.js +454 -0
- package/dist/agents/logic-flaw-detector.js.map +1 -0
- package/dist/agents/zero-day-hunter.d.ts +69 -0
- package/dist/agents/zero-day-hunter.d.ts.map +1 -0
- package/dist/agents/zero-day-hunter.js +591 -0
- package/dist/agents/zero-day-hunter.js.map +1 -0
- package/dist/certification/artifacts.d.ts +21 -0
- package/dist/certification/artifacts.d.ts.map +1 -0
- package/dist/certification/artifacts.js +275 -0
- package/dist/certification/artifacts.js.map +1 -0
- package/dist/certification/autofix.d.ts +122 -0
- package/dist/certification/autofix.d.ts.map +1 -0
- package/dist/certification/autofix.js +476 -0
- package/dist/certification/autofix.js.map +1 -0
- package/dist/certification/badge.d.ts +56 -0
- package/dist/certification/badge.d.ts.map +1 -0
- package/dist/certification/badge.js +155 -0
- package/dist/certification/badge.js.map +1 -0
- package/dist/certification/cache.d.ts +121 -0
- package/dist/certification/cache.d.ts.map +1 -0
- package/dist/certification/cache.js +275 -0
- package/dist/certification/cache.js.map +1 -0
- package/dist/certification/cache.test.d.ts +5 -0
- package/dist/certification/cache.test.d.ts.map +1 -0
- package/dist/certification/cache.test.js +270 -0
- package/dist/certification/cache.test.js.map +1 -0
- package/dist/certification/consensus.d.ts +105 -0
- package/dist/certification/consensus.d.ts.map +1 -0
- package/dist/certification/consensus.js +353 -0
- package/dist/certification/consensus.js.map +1 -0
- package/dist/certification/consensus.test.d.ts +5 -0
- package/dist/certification/consensus.test.d.ts.map +1 -0
- package/dist/certification/consensus.test.js +342 -0
- package/dist/certification/consensus.test.js.map +1 -0
- package/dist/certification/index.d.ts +14 -0
- package/dist/certification/index.d.ts.map +1 -0
- package/dist/certification/index.js +14 -0
- package/dist/certification/index.js.map +1 -0
- package/dist/certification/rules.d.ts +89 -0
- package/dist/certification/rules.d.ts.map +1 -0
- package/dist/certification/rules.js +317 -0
- package/dist/certification/rules.js.map +1 -0
- package/dist/certification/sarif.d.ts +107 -0
- package/dist/certification/sarif.d.ts.map +1 -0
- package/dist/certification/sarif.js +191 -0
- package/dist/certification/sarif.js.map +1 -0
- package/dist/certification/store.d.ts +255 -0
- package/dist/certification/store.d.ts.map +1 -0
- package/dist/certification/store.js +835 -0
- package/dist/certification/store.js.map +1 -0
- package/dist/certification/store.test.d.ts +5 -0
- package/dist/certification/store.test.d.ts.map +1 -0
- package/dist/certification/store.test.js +468 -0
- package/dist/certification/store.test.js.map +1 -0
- package/dist/certification/summary.d.ts +72 -0
- package/dist/certification/summary.d.ts.map +1 -0
- package/dist/certification/summary.js +296 -0
- package/dist/certification/summary.js.map +1 -0
- package/dist/certification/types.d.ts +138 -0
- package/dist/certification/types.d.ts.map +1 -0
- package/dist/certification/types.js +34 -0
- package/dist/certification/types.js.map +1 -0
- package/dist/commands/audits/api-check.d.ts +3 -0
- package/dist/commands/audits/api-check.d.ts.map +1 -0
- package/dist/commands/audits/api-check.js +71 -0
- package/dist/commands/audits/api-check.js.map +1 -0
- package/dist/commands/audits/deadcode.d.ts +3 -0
- package/dist/commands/audits/deadcode.d.ts.map +1 -0
- package/dist/commands/audits/deadcode.js +63 -0
- package/dist/commands/audits/deadcode.js.map +1 -0
- package/dist/commands/audits/deps.d.ts +3 -0
- package/dist/commands/audits/deps.d.ts.map +1 -0
- package/dist/commands/audits/deps.js +56 -0
- package/dist/commands/audits/deps.js.map +1 -0
- package/dist/commands/audits/errors.d.ts +3 -0
- package/dist/commands/audits/errors.d.ts.map +1 -0
- package/dist/commands/audits/errors.js +65 -0
- package/dist/commands/audits/errors.js.map +1 -0
- package/dist/commands/audits/index.d.ts +3 -0
- package/dist/commands/audits/index.d.ts.map +1 -0
- package/dist/commands/audits/index.js +15 -0
- package/dist/commands/audits/index.js.map +1 -0
- package/dist/commands/audits/perf.d.ts +3 -0
- package/dist/commands/audits/perf.d.ts.map +1 -0
- package/dist/commands/audits/perf.js +85 -0
- package/dist/commands/audits/perf.js.map +1 -0
- package/dist/commands/audits/secrets.d.ts +3 -0
- package/dist/commands/audits/secrets.d.ts.map +1 -0
- package/dist/commands/audits/secrets.js +71 -0
- package/dist/commands/audits/secrets.js.map +1 -0
- package/dist/commands/certification/certify.d.ts +3 -0
- package/dist/commands/certification/certify.d.ts.map +1 -0
- package/dist/commands/certification/certify.js +108 -0
- package/dist/commands/certification/certify.js.map +1 -0
- package/dist/commands/certification/index.d.ts +3 -0
- package/dist/commands/certification/index.d.ts.map +1 -0
- package/dist/commands/certification/index.js +17 -0
- package/dist/commands/certification/index.js.map +1 -0
- package/dist/commands/certification/performance.d.ts +3 -0
- package/dist/commands/certification/performance.d.ts.map +1 -0
- package/dist/commands/certification/performance.js +89 -0
- package/dist/commands/certification/performance.js.map +1 -0
- package/dist/commands/certification/quality.d.ts +3 -0
- package/dist/commands/certification/quality.d.ts.map +1 -0
- package/dist/commands/certification/quality.js +92 -0
- package/dist/commands/certification/quality.js.map +1 -0
- package/dist/commands/certification/redteam.d.ts +3 -0
- package/dist/commands/certification/redteam.d.ts.map +1 -0
- package/dist/commands/certification/redteam.js +114 -0
- package/dist/commands/certification/redteam.js.map +1 -0
- package/dist/commands/certification/reliability.d.ts +3 -0
- package/dist/commands/certification/reliability.d.ts.map +1 -0
- package/dist/commands/certification/reliability.js +93 -0
- package/dist/commands/certification/reliability.js.map +1 -0
- package/dist/commands/certification/security.d.ts +3 -0
- package/dist/commands/certification/security.d.ts.map +1 -0
- package/dist/commands/certification/security.js +90 -0
- package/dist/commands/certification/security.js.map +1 -0
- package/dist/commands/certification/typesafety.d.ts +3 -0
- package/dist/commands/certification/typesafety.d.ts.map +1 -0
- package/dist/commands/certification/typesafety.js +87 -0
- package/dist/commands/certification/typesafety.js.map +1 -0
- package/dist/commands/core/add-tests.d.ts +3 -0
- package/dist/commands/core/add-tests.d.ts.map +1 -0
- package/dist/commands/core/add-tests.js +29 -0
- package/dist/commands/core/add-tests.js.map +1 -0
- package/dist/commands/core/audit.d.ts +3 -0
- package/dist/commands/core/audit.d.ts.map +1 -0
- package/dist/commands/core/audit.js +64 -0
- package/dist/commands/core/audit.js.map +1 -0
- package/dist/commands/core/fix-critical.d.ts +3 -0
- package/dist/commands/core/fix-critical.d.ts.map +1 -0
- package/dist/commands/core/fix-critical.js +22 -0
- package/dist/commands/core/fix-critical.js.map +1 -0
- package/dist/commands/core/fix-high.d.ts +3 -0
- package/dist/commands/core/fix-high.d.ts.map +1 -0
- package/dist/commands/core/fix-high.js +32 -0
- package/dist/commands/core/fix-high.js.map +1 -0
- package/dist/commands/core/fix-medium.d.ts +3 -0
- package/dist/commands/core/fix-medium.d.ts.map +1 -0
- package/dist/commands/core/fix-medium.js +29 -0
- package/dist/commands/core/fix-medium.js.map +1 -0
- package/dist/commands/core/fix-rls.d.ts +3 -0
- package/dist/commands/core/fix-rls.d.ts.map +1 -0
- package/dist/commands/core/fix-rls.js +17 -0
- package/dist/commands/core/fix-rls.js.map +1 -0
- package/dist/commands/core/harden.d.ts +3 -0
- package/dist/commands/core/harden.d.ts.map +1 -0
- package/dist/commands/core/harden.js +19 -0
- package/dist/commands/core/harden.js.map +1 -0
- package/dist/commands/core/index.d.ts +3 -0
- package/dist/commands/core/index.d.ts.map +1 -0
- package/dist/commands/core/index.js +21 -0
- package/dist/commands/core/index.js.map +1 -0
- package/dist/commands/core/preflight.d.ts +3 -0
- package/dist/commands/core/preflight.d.ts.map +1 -0
- package/dist/commands/core/preflight.js +50 -0
- package/dist/commands/core/preflight.js.map +1 -0
- package/dist/commands/core/verify.d.ts +3 -0
- package/dist/commands/core/verify.d.ts.map +1 -0
- package/dist/commands/core/verify.js +32 -0
- package/dist/commands/core/verify.js.map +1 -0
- package/dist/commands/index.d.ts +28 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +37 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/types.d.ts +9 -0
- package/dist/commands/types.d.ts.map +1 -0
- package/dist/commands/types.js +5 -0
- package/dist/commands/types.js.map +1 -0
- package/dist/compliance/cis.d.ts +29 -0
- package/dist/compliance/cis.d.ts.map +1 -0
- package/dist/compliance/cis.js +316 -0
- package/dist/compliance/cis.js.map +1 -0
- package/dist/compliance/frameworks/eu-ai-act.d.ts +55 -0
- package/dist/compliance/frameworks/eu-ai-act.d.ts.map +1 -0
- package/dist/compliance/frameworks/eu-ai-act.js +621 -0
- package/dist/compliance/frameworks/eu-ai-act.js.map +1 -0
- package/dist/compliance/frameworks/index.d.ts +67 -0
- package/dist/compliance/frameworks/index.d.ts.map +1 -0
- package/dist/compliance/frameworks/index.js +97 -0
- package/dist/compliance/frameworks/index.js.map +1 -0
- package/dist/compliance/frameworks/iso-42001.d.ts +59 -0
- package/dist/compliance/frameworks/iso-42001.d.ts.map +1 -0
- package/dist/compliance/frameworks/iso-42001.js +719 -0
- package/dist/compliance/frameworks/iso-42001.js.map +1 -0
- package/dist/compliance/frameworks/mitre-atlas.d.ts +58 -0
- package/dist/compliance/frameworks/mitre-atlas.d.ts.map +1 -0
- package/dist/compliance/frameworks/mitre-atlas.js +686 -0
- package/dist/compliance/frameworks/mitre-atlas.js.map +1 -0
- package/dist/compliance/frameworks/nist-ai-rmf.d.ts +51 -0
- package/dist/compliance/frameworks/nist-ai-rmf.d.ts.map +1 -0
- package/dist/compliance/frameworks/nist-ai-rmf.js +677 -0
- package/dist/compliance/frameworks/nist-ai-rmf.js.map +1 -0
- package/dist/compliance/frameworks/owasp-llm.d.ts +58 -0
- package/dist/compliance/frameworks/owasp-llm.d.ts.map +1 -0
- package/dist/compliance/frameworks/owasp-llm.js +399 -0
- package/dist/compliance/frameworks/owasp-llm.js.map +1 -0
- package/dist/compliance/gdpr.d.ts +34 -0
- package/dist/compliance/gdpr.d.ts.map +1 -0
- package/dist/compliance/gdpr.js +319 -0
- package/dist/compliance/gdpr.js.map +1 -0
- package/dist/compliance/hipaa.d.ts +29 -0
- package/dist/compliance/hipaa.d.ts.map +1 -0
- package/dist/compliance/hipaa.js +205 -0
- package/dist/compliance/hipaa.js.map +1 -0
- package/dist/compliance/index.d.ts +18 -0
- package/dist/compliance/index.d.ts.map +1 -0
- package/dist/compliance/index.js +26 -0
- package/dist/compliance/index.js.map +1 -0
- package/dist/compliance/iso27001.d.ts +30 -0
- package/dist/compliance/iso27001.d.ts.map +1 -0
- package/dist/compliance/iso27001.js +332 -0
- package/dist/compliance/iso27001.js.map +1 -0
- package/dist/compliance/mapper.d.ts +42 -0
- package/dist/compliance/mapper.d.ts.map +1 -0
- package/dist/compliance/mapper.js +269 -0
- package/dist/compliance/mapper.js.map +1 -0
- package/dist/compliance/mapper.test.d.ts +5 -0
- package/dist/compliance/mapper.test.d.ts.map +1 -0
- package/dist/compliance/mapper.test.js +360 -0
- package/dist/compliance/mapper.test.js.map +1 -0
- package/dist/compliance/pci-dss.d.ts +29 -0
- package/dist/compliance/pci-dss.d.ts.map +1 -0
- package/dist/compliance/pci-dss.js +247 -0
- package/dist/compliance/pci-dss.js.map +1 -0
- package/dist/compliance/report.d.ts +25 -0
- package/dist/compliance/report.d.ts.map +1 -0
- package/dist/compliance/report.js +254 -0
- package/dist/compliance/report.js.map +1 -0
- package/dist/compliance/report.test.d.ts +5 -0
- package/dist/compliance/report.test.d.ts.map +1 -0
- package/dist/compliance/report.test.js +128 -0
- package/dist/compliance/report.test.js.map +1 -0
- package/dist/compliance/soc2.d.ts +30 -0
- package/dist/compliance/soc2.d.ts.map +1 -0
- package/dist/compliance/soc2.js +262 -0
- package/dist/compliance/soc2.js.map +1 -0
- package/dist/compliance/soc2.test.d.ts +5 -0
- package/dist/compliance/soc2.test.d.ts.map +1 -0
- package/dist/compliance/soc2.test.js +86 -0
- package/dist/compliance/soc2.test.js.map +1 -0
- package/dist/compliance/types.d.ts +125 -0
- package/dist/compliance/types.d.ts.map +1 -0
- package/dist/compliance/types.js +10 -0
- package/dist/compliance/types.js.map +1 -0
- package/dist/config/flags.d.ts +456 -0
- package/dist/config/flags.d.ts.map +1 -0
- package/dist/config/flags.js +464 -0
- package/dist/config/flags.js.map +1 -0
- package/dist/config/index.d.ts +10 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +10 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/severity-overrides.d.ts +209 -0
- package/dist/config/severity-overrides.d.ts.map +1 -0
- package/dist/config/severity-overrides.js +380 -0
- package/dist/config/severity-overrides.js.map +1 -0
- package/dist/cost/index.d.ts +11 -0
- package/dist/cost/index.d.ts.map +1 -0
- package/dist/cost/index.js +12 -0
- package/dist/cost/index.js.map +1 -0
- package/dist/cost/pricing.d.ts +57 -0
- package/dist/cost/pricing.d.ts.map +1 -0
- package/dist/cost/pricing.js +196 -0
- package/dist/cost/pricing.js.map +1 -0
- package/dist/cost/pricing.test.d.ts +5 -0
- package/dist/cost/pricing.test.d.ts.map +1 -0
- package/dist/cost/pricing.test.js +195 -0
- package/dist/cost/pricing.test.js.map +1 -0
- package/dist/cost/tracker.d.ts +100 -0
- package/dist/cost/tracker.d.ts.map +1 -0
- package/dist/cost/tracker.js +366 -0
- package/dist/cost/tracker.js.map +1 -0
- package/dist/cost/tracker.test.d.ts +5 -0
- package/dist/cost/tracker.test.d.ts.map +1 -0
- package/dist/cost/tracker.test.js +360 -0
- package/dist/cost/tracker.test.js.map +1 -0
- package/dist/cost/types.d.ts +135 -0
- package/dist/cost/types.d.ts.map +1 -0
- package/dist/cost/types.js +9 -0
- package/dist/cost/types.js.map +1 -0
- package/dist/enterprise/auth/oidc.d.ts +231 -0
- package/dist/enterprise/auth/oidc.d.ts.map +1 -0
- package/dist/enterprise/auth/oidc.js +372 -0
- package/dist/enterprise/auth/oidc.js.map +1 -0
- package/dist/enterprise/auth/oidc.test.d.ts +5 -0
- package/dist/enterprise/auth/oidc.test.d.ts.map +1 -0
- package/dist/enterprise/auth/oidc.test.js +435 -0
- package/dist/enterprise/auth/oidc.test.js.map +1 -0
- package/dist/enterprise/index.d.ts +14 -0
- package/dist/enterprise/index.d.ts.map +1 -0
- package/dist/enterprise/index.js +19 -0
- package/dist/enterprise/index.js.map +1 -0
- package/dist/enterprise/integrations/chat.d.ts +205 -0
- package/dist/enterprise/integrations/chat.d.ts.map +1 -0
- package/dist/enterprise/integrations/chat.js +624 -0
- package/dist/enterprise/integrations/chat.js.map +1 -0
- package/dist/enterprise/integrations/chat.test.d.ts +5 -0
- package/dist/enterprise/integrations/chat.test.d.ts.map +1 -0
- package/dist/enterprise/integrations/chat.test.js +557 -0
- package/dist/enterprise/integrations/chat.test.js.map +1 -0
- package/dist/enterprise/integrations/ticketing.d.ts +257 -0
- package/dist/enterprise/integrations/ticketing.d.ts.map +1 -0
- package/dist/enterprise/integrations/ticketing.js +548 -0
- package/dist/enterprise/integrations/ticketing.js.map +1 -0
- package/dist/enterprise/integrations/ticketing.test.d.ts +5 -0
- package/dist/enterprise/integrations/ticketing.test.d.ts.map +1 -0
- package/dist/enterprise/integrations/ticketing.test.js +693 -0
- package/dist/enterprise/integrations/ticketing.test.js.map +1 -0
- package/dist/enterprise/policy/opa.d.ts +194 -0
- package/dist/enterprise/policy/opa.d.ts.map +1 -0
- package/dist/enterprise/policy/opa.js +385 -0
- package/dist/enterprise/policy/opa.js.map +1 -0
- package/dist/enterprise/policy/opa.test.d.ts +5 -0
- package/dist/enterprise/policy/opa.test.d.ts.map +1 -0
- package/dist/enterprise/policy/opa.test.js +702 -0
- package/dist/enterprise/policy/opa.test.js.map +1 -0
- package/dist/enterprise/signing/kms.d.ts +211 -0
- package/dist/enterprise/signing/kms.d.ts.map +1 -0
- package/dist/enterprise/signing/kms.js +480 -0
- package/dist/enterprise/signing/kms.js.map +1 -0
- package/dist/enterprise/signing/kms.test.d.ts +5 -0
- package/dist/enterprise/signing/kms.test.d.ts.map +1 -0
- package/dist/enterprise/signing/kms.test.js +511 -0
- package/dist/enterprise/signing/kms.test.js.map +1 -0
- package/dist/eval/fixtures.d.ts +58 -0
- package/dist/eval/fixtures.d.ts.map +1 -0
- package/dist/eval/fixtures.js +571 -0
- package/dist/eval/fixtures.js.map +1 -0
- package/dist/eval/fixtures.test.d.ts +5 -0
- package/dist/eval/fixtures.test.d.ts.map +1 -0
- package/dist/eval/fixtures.test.js +193 -0
- package/dist/eval/fixtures.test.js.map +1 -0
- package/dist/eval/harness.d.ts +30 -0
- package/dist/eval/harness.d.ts.map +1 -0
- package/dist/eval/harness.js +221 -0
- package/dist/eval/harness.js.map +1 -0
- package/dist/eval/harness.test.d.ts +5 -0
- package/dist/eval/harness.test.d.ts.map +1 -0
- package/dist/eval/harness.test.js +314 -0
- package/dist/eval/harness.test.js.map +1 -0
- package/dist/eval/index.d.ts +15 -0
- package/dist/eval/index.d.ts.map +1 -0
- package/dist/eval/index.js +18 -0
- package/dist/eval/index.js.map +1 -0
- package/dist/eval/metrics.d.ts +56 -0
- package/dist/eval/metrics.d.ts.map +1 -0
- package/dist/eval/metrics.js +298 -0
- package/dist/eval/metrics.js.map +1 -0
- package/dist/eval/metrics.test.d.ts +5 -0
- package/dist/eval/metrics.test.d.ts.map +1 -0
- package/dist/eval/metrics.test.js +426 -0
- package/dist/eval/metrics.test.js.map +1 -0
- package/dist/eval/report.d.ts +30 -0
- package/dist/eval/report.d.ts.map +1 -0
- package/dist/eval/report.js +333 -0
- package/dist/eval/report.js.map +1 -0
- package/dist/eval/report.test.d.ts +5 -0
- package/dist/eval/report.test.d.ts.map +1 -0
- package/dist/eval/report.test.js +275 -0
- package/dist/eval/report.test.js.map +1 -0
- package/dist/eval/types.d.ts +234 -0
- package/dist/eval/types.d.ts.map +1 -0
- package/dist/eval/types.js +27 -0
- package/dist/eval/types.js.map +1 -0
- package/dist/http-server.d.ts +3 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +127 -0
- package/dist/http-server.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4120 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +46 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +131 -0
- package/dist/logger.js.map +1 -0
- package/dist/multimodel/consensus.d.ts +49 -0
- package/dist/multimodel/consensus.d.ts.map +1 -0
- package/dist/multimodel/consensus.js +454 -0
- package/dist/multimodel/consensus.js.map +1 -0
- package/dist/multimodel/consensus.test.d.ts +5 -0
- package/dist/multimodel/consensus.test.d.ts.map +1 -0
- package/dist/multimodel/consensus.test.js +415 -0
- package/dist/multimodel/consensus.test.js.map +1 -0
- package/dist/multimodel/index.d.ts +13 -0
- package/dist/multimodel/index.d.ts.map +1 -0
- package/dist/multimodel/index.js +14 -0
- package/dist/multimodel/index.js.map +1 -0
- package/dist/multimodel/runner.d.ts +95 -0
- package/dist/multimodel/runner.d.ts.map +1 -0
- package/dist/multimodel/runner.js +312 -0
- package/dist/multimodel/runner.js.map +1 -0
- package/dist/multimodel/runner.test.d.ts +5 -0
- package/dist/multimodel/runner.test.d.ts.map +1 -0
- package/dist/multimodel/runner.test.js +224 -0
- package/dist/multimodel/runner.test.js.map +1 -0
- package/dist/multimodel/types.d.ts +202 -0
- package/dist/multimodel/types.d.ts.map +1 -0
- package/dist/multimodel/types.js +10 -0
- package/dist/multimodel/types.js.map +1 -0
- package/dist/observability/index.d.ts +9 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +9 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/otel.d.ts +102 -0
- package/dist/observability/otel.d.ts.map +1 -0
- package/dist/observability/otel.js +284 -0
- package/dist/observability/otel.js.map +1 -0
- package/dist/plugins/index.d.ts +10 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +10 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/loader.d.ts +78 -0
- package/dist/plugins/loader.d.ts.map +1 -0
- package/dist/plugins/loader.js +470 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/types.d.ts +304 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +100 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/sbom/cyclonedx.d.ts +30 -0
- package/dist/sbom/cyclonedx.d.ts.map +1 -0
- package/dist/sbom/cyclonedx.js +392 -0
- package/dist/sbom/cyclonedx.js.map +1 -0
- package/dist/sbom/cyclonedx.test.d.ts +5 -0
- package/dist/sbom/cyclonedx.test.d.ts.map +1 -0
- package/dist/sbom/cyclonedx.test.js +244 -0
- package/dist/sbom/cyclonedx.test.js.map +1 -0
- package/dist/sbom/index.d.ts +13 -0
- package/dist/sbom/index.d.ts.map +1 -0
- package/dist/sbom/index.js +15 -0
- package/dist/sbom/index.js.map +1 -0
- package/dist/sbom/provenance.d.ts +37 -0
- package/dist/sbom/provenance.d.ts.map +1 -0
- package/dist/sbom/provenance.js +268 -0
- package/dist/sbom/provenance.js.map +1 -0
- package/dist/sbom/provenance.test.d.ts +5 -0
- package/dist/sbom/provenance.test.d.ts.map +1 -0
- package/dist/sbom/provenance.test.js +189 -0
- package/dist/sbom/provenance.test.js.map +1 -0
- package/dist/sbom/signing.d.ts +87 -0
- package/dist/sbom/signing.d.ts.map +1 -0
- package/dist/sbom/signing.js +354 -0
- package/dist/sbom/signing.js.map +1 -0
- package/dist/sbom/signing.test.d.ts +5 -0
- package/dist/sbom/signing.test.d.ts.map +1 -0
- package/dist/sbom/signing.test.js +170 -0
- package/dist/sbom/signing.test.js.map +1 -0
- package/dist/sbom/types.d.ts +384 -0
- package/dist/sbom/types.d.ts.map +1 -0
- package/dist/sbom/types.js +17 -0
- package/dist/sbom/types.js.map +1 -0
- package/dist/scanners/agent/credential-scope-audit.d.ts +40 -0
- package/dist/scanners/agent/credential-scope-audit.d.ts.map +1 -0
- package/dist/scanners/agent/credential-scope-audit.js +404 -0
- package/dist/scanners/agent/credential-scope-audit.js.map +1 -0
- package/dist/scanners/agent/exfil-path-graph.d.ts +50 -0
- package/dist/scanners/agent/exfil-path-graph.d.ts.map +1 -0
- package/dist/scanners/agent/exfil-path-graph.js +764 -0
- package/dist/scanners/agent/exfil-path-graph.js.map +1 -0
- package/dist/scanners/agent/index.d.ts +43 -0
- package/dist/scanners/agent/index.d.ts.map +1 -0
- package/dist/scanners/agent/index.js +616 -0
- package/dist/scanners/agent/index.js.map +1 -0
- package/dist/scanners/agent/manifest-audit.d.ts +43 -0
- package/dist/scanners/agent/manifest-audit.d.ts.map +1 -0
- package/dist/scanners/agent/manifest-audit.js +403 -0
- package/dist/scanners/agent/manifest-audit.js.map +1 -0
- package/dist/scanners/agent/payloads/index.d.ts +44 -0
- package/dist/scanners/agent/payloads/index.d.ts.map +1 -0
- package/dist/scanners/agent/payloads/index.js +184 -0
- package/dist/scanners/agent/payloads/index.js.map +1 -0
- package/dist/scanners/agent/permission-minimiser.d.ts +48 -0
- package/dist/scanners/agent/permission-minimiser.d.ts.map +1 -0
- package/dist/scanners/agent/permission-minimiser.js +551 -0
- package/dist/scanners/agent/permission-minimiser.js.map +1 -0
- package/dist/scanners/agent/prompt-injection-fuzzer.d.ts +39 -0
- package/dist/scanners/agent/prompt-injection-fuzzer.d.ts.map +1 -0
- package/dist/scanners/agent/prompt-injection-fuzzer.js +720 -0
- package/dist/scanners/agent/prompt-injection-fuzzer.js.map +1 -0
- package/dist/scanners/agent/sandbox-audit.d.ts +44 -0
- package/dist/scanners/agent/sandbox-audit.d.ts.map +1 -0
- package/dist/scanners/agent/sandbox-audit.js +425 -0
- package/dist/scanners/agent/sandbox-audit.js.map +1 -0
- package/dist/scanners/agent/supply-chain-mcp.d.ts +53 -0
- package/dist/scanners/agent/supply-chain-mcp.d.ts.map +1 -0
- package/dist/scanners/agent/supply-chain-mcp.js +479 -0
- package/dist/scanners/agent/supply-chain-mcp.js.map +1 -0
- package/dist/scanners/agent/tool-description-drift.d.ts +62 -0
- package/dist/scanners/agent/tool-description-drift.d.ts.map +1 -0
- package/dist/scanners/agent/tool-description-drift.js +365 -0
- package/dist/scanners/agent/tool-description-drift.js.map +1 -0
- package/dist/scanners/agent/types.d.ts +840 -0
- package/dist/scanners/agent/types.d.ts.map +1 -0
- package/dist/scanners/agent/types.js +149 -0
- package/dist/scanners/agent/types.js.map +1 -0
- package/dist/scanners/bandit.d.ts +25 -0
- package/dist/scanners/bandit.d.ts.map +1 -0
- package/dist/scanners/bandit.js +129 -0
- package/dist/scanners/bandit.js.map +1 -0
- package/dist/scanners/binary-analysis.d.ts +41 -0
- package/dist/scanners/binary-analysis.d.ts.map +1 -0
- package/dist/scanners/binary-analysis.js +587 -0
- package/dist/scanners/binary-analysis.js.map +1 -0
- package/dist/scanners/binary-analysis.test.d.ts +5 -0
- package/dist/scanners/binary-analysis.test.d.ts.map +1 -0
- package/dist/scanners/binary-analysis.test.js +291 -0
- package/dist/scanners/binary-analysis.test.js.map +1 -0
- package/dist/scanners/brakeman.d.ts +30 -0
- package/dist/scanners/brakeman.d.ts.map +1 -0
- package/dist/scanners/brakeman.js +271 -0
- package/dist/scanners/brakeman.js.map +1 -0
- package/dist/scanners/dependencies.d.ts +22 -0
- package/dist/scanners/dependencies.d.ts.map +1 -0
- package/dist/scanners/dependencies.js +202 -0
- package/dist/scanners/dependencies.js.map +1 -0
- package/dist/scanners/dependencies.test.d.ts +5 -0
- package/dist/scanners/dependencies.test.d.ts.map +1 -0
- package/dist/scanners/dependencies.test.js +185 -0
- package/dist/scanners/dependencies.test.js.map +1 -0
- package/dist/scanners/eslint.d.ts +25 -0
- package/dist/scanners/eslint.d.ts.map +1 -0
- package/dist/scanners/eslint.js +220 -0
- package/dist/scanners/eslint.js.map +1 -0
- package/dist/scanners/gosec.d.ts +25 -0
- package/dist/scanners/gosec.d.ts.map +1 -0
- package/dist/scanners/gosec.js +128 -0
- package/dist/scanners/gosec.js.map +1 -0
- package/dist/scanners/index.d.ts +128 -0
- package/dist/scanners/index.d.ts.map +1 -0
- package/dist/scanners/index.js +811 -0
- package/dist/scanners/index.js.map +1 -0
- package/dist/scanners/index.test.d.ts +5 -0
- package/dist/scanners/index.test.d.ts.map +1 -0
- package/dist/scanners/index.test.js +424 -0
- package/dist/scanners/index.test.js.map +1 -0
- package/dist/scanners/memory-safety.d.ts +44 -0
- package/dist/scanners/memory-safety.d.ts.map +1 -0
- package/dist/scanners/memory-safety.js +571 -0
- package/dist/scanners/memory-safety.js.map +1 -0
- package/dist/scanners/memory-safety.test.d.ts +5 -0
- package/dist/scanners/memory-safety.test.d.ts.map +1 -0
- package/dist/scanners/memory-safety.test.js +321 -0
- package/dist/scanners/memory-safety.test.js.map +1 -0
- package/dist/scanners/race-condition.d.ts +25 -0
- package/dist/scanners/race-condition.d.ts.map +1 -0
- package/dist/scanners/race-condition.js +443 -0
- package/dist/scanners/race-condition.js.map +1 -0
- package/dist/scanners/race-condition.test.d.ts +5 -0
- package/dist/scanners/race-condition.test.d.ts.map +1 -0
- package/dist/scanners/race-condition.test.js +428 -0
- package/dist/scanners/race-condition.test.js.map +1 -0
- package/dist/scanners/secrets.d.ts +25 -0
- package/dist/scanners/secrets.d.ts.map +1 -0
- package/dist/scanners/secrets.js +367 -0
- package/dist/scanners/secrets.js.map +1 -0
- package/dist/scanners/secrets.test.d.ts +5 -0
- package/dist/scanners/secrets.test.d.ts.map +1 -0
- package/dist/scanners/secrets.test.js +160 -0
- package/dist/scanners/secrets.test.js.map +1 -0
- package/dist/scanners/semgrep.d.ts +33 -0
- package/dist/scanners/semgrep.d.ts.map +1 -0
- package/dist/scanners/semgrep.js +350 -0
- package/dist/scanners/semgrep.js.map +1 -0
- package/dist/scanners/semgrep.test.d.ts +8 -0
- package/dist/scanners/semgrep.test.d.ts.map +1 -0
- package/dist/scanners/semgrep.test.js +254 -0
- package/dist/scanners/semgrep.test.js.map +1 -0
- package/dist/scanners/trivy.d.ts +26 -0
- package/dist/scanners/trivy.d.ts.map +1 -0
- package/dist/scanners/trivy.js +187 -0
- package/dist/scanners/trivy.js.map +1 -0
- package/dist/scanners/types.d.ts +210 -0
- package/dist/scanners/types.d.ts.map +1 -0
- package/dist/scanners/types.js +106 -0
- package/dist/scanners/types.js.map +1 -0
- package/dist/scanners/types.test.d.ts +5 -0
- package/dist/scanners/types.test.d.ts.map +1 -0
- package/dist/scanners/types.test.js +103 -0
- package/dist/scanners/types.test.js.map +1 -0
- package/dist/scanners/typescript.d.ts +32 -0
- package/dist/scanners/typescript.d.ts.map +1 -0
- package/dist/scanners/typescript.js +300 -0
- package/dist/scanners/typescript.js.map +1 -0
- package/dist/scanners/typescript.test.d.ts +5 -0
- package/dist/scanners/typescript.test.d.ts.map +1 -0
- package/dist/scanners/typescript.test.js +296 -0
- package/dist/scanners/typescript.test.js.map +1 -0
- package/dist/transcripts/index.d.ts +13 -0
- package/dist/transcripts/index.d.ts.map +1 -0
- package/dist/transcripts/index.js +17 -0
- package/dist/transcripts/index.js.map +1 -0
- package/dist/transcripts/logger.d.ts +190 -0
- package/dist/transcripts/logger.d.ts.map +1 -0
- package/dist/transcripts/logger.js +385 -0
- package/dist/transcripts/logger.js.map +1 -0
- package/dist/transcripts/logger.test.d.ts +5 -0
- package/dist/transcripts/logger.test.d.ts.map +1 -0
- package/dist/transcripts/logger.test.js +227 -0
- package/dist/transcripts/logger.test.js.map +1 -0
- package/dist/transcripts/redaction.d.ts +125 -0
- package/dist/transcripts/redaction.d.ts.map +1 -0
- package/dist/transcripts/redaction.js +416 -0
- package/dist/transcripts/redaction.js.map +1 -0
- package/dist/transcripts/redaction.test.d.ts +5 -0
- package/dist/transcripts/redaction.test.d.ts.map +1 -0
- package/dist/transcripts/redaction.test.js +267 -0
- package/dist/transcripts/redaction.test.js.map +1 -0
- package/dist/transcripts/signing.d.ts +108 -0
- package/dist/transcripts/signing.d.ts.map +1 -0
- package/dist/transcripts/signing.js +173 -0
- package/dist/transcripts/signing.js.map +1 -0
- package/dist/transcripts/verifier.d.ts +133 -0
- package/dist/transcripts/verifier.d.ts.map +1 -0
- package/dist/transcripts/verifier.js +489 -0
- package/dist/transcripts/verifier.js.map +1 -0
- package/dist/transcripts/verifier.test.d.ts +5 -0
- package/dist/transcripts/verifier.test.d.ts.map +1 -0
- package/dist/transcripts/verifier.test.js +330 -0
- package/dist/transcripts/verifier.test.js.map +1 -0
- package/dist/util/concurrency.d.ts +221 -0
- package/dist/util/concurrency.d.ts.map +1 -0
- package/dist/util/concurrency.js +339 -0
- package/dist/util/concurrency.js.map +1 -0
- package/dist/util/index.d.ts +12 -0
- package/dist/util/index.d.ts.map +1 -0
- package/dist/util/index.js +12 -0
- package/dist/util/index.js.map +1 -0
- package/dist/util/json.d.ts +63 -0
- package/dist/util/json.d.ts.map +1 -0
- package/dist/util/json.js +134 -0
- package/dist/util/json.js.map +1 -0
- package/dist/util/paths.d.ts +56 -0
- package/dist/util/paths.d.ts.map +1 -0
- package/dist/util/paths.js +128 -0
- package/dist/util/paths.js.map +1 -0
- package/dist/util/retry.d.ts +185 -0
- package/dist/util/retry.d.ts.map +1 -0
- package/dist/util/retry.js +338 -0
- package/dist/util/retry.js.map +1 -0
- package/package.json +79 -0
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Progressive Summary Tool
|
|
3
|
+
*
|
|
4
|
+
* Provides grouped and filtered views of certification findings
|
|
5
|
+
* to make large result sets more actionable.
|
|
6
|
+
*
|
|
7
|
+
* @module certification/summary
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Effort estimates per severity (in hours)
|
|
11
|
+
*/
|
|
12
|
+
const EFFORT_PER_SEVERITY = {
|
|
13
|
+
critical: 2,
|
|
14
|
+
high: 1,
|
|
15
|
+
medium: 0.5,
|
|
16
|
+
low: 0.25,
|
|
17
|
+
info: 0,
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Generate a comprehensive summary of certification findings
|
|
21
|
+
*/
|
|
22
|
+
export function generateSummary(certification) {
|
|
23
|
+
const allFindings = [];
|
|
24
|
+
// Collect all findings
|
|
25
|
+
for (const [agent, agentData] of Object.entries(certification.agents)) {
|
|
26
|
+
if (agentData) {
|
|
27
|
+
for (const finding of agentData.findings) {
|
|
28
|
+
allFindings.push({ agent: agent, finding });
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// Group by severity
|
|
33
|
+
const bySeverity = groupBySeverity(allFindings);
|
|
34
|
+
// Group by agent
|
|
35
|
+
const byAgent = groupByAgent(allFindings, certification);
|
|
36
|
+
// Group by file
|
|
37
|
+
const byFile = groupByFile(allFindings);
|
|
38
|
+
// Group by category
|
|
39
|
+
const byCategory = groupByCategory(allFindings);
|
|
40
|
+
// Calculate effort
|
|
41
|
+
const estimatedEffort = calculateEffort(allFindings);
|
|
42
|
+
// Get top priority findings (critical + high)
|
|
43
|
+
const topPriority = allFindings
|
|
44
|
+
.filter((f) => f.finding.severity === "critical" || f.finding.severity === "high")
|
|
45
|
+
.sort((a, b) => {
|
|
46
|
+
const severityOrder = {
|
|
47
|
+
critical: 0,
|
|
48
|
+
high: 1,
|
|
49
|
+
medium: 2,
|
|
50
|
+
low: 3,
|
|
51
|
+
info: 4,
|
|
52
|
+
};
|
|
53
|
+
return (severityOrder[a.finding.severity] - severityOrder[b.finding.severity] ||
|
|
54
|
+
b.finding.confidence - a.finding.confidence);
|
|
55
|
+
})
|
|
56
|
+
.slice(0, 10)
|
|
57
|
+
.map((f) => f.finding);
|
|
58
|
+
return {
|
|
59
|
+
totalFindings: allFindings.length,
|
|
60
|
+
bySeverity,
|
|
61
|
+
byAgent,
|
|
62
|
+
byFile,
|
|
63
|
+
byCategory,
|
|
64
|
+
estimatedEffort,
|
|
65
|
+
topPriority,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function groupBySeverity(findings) {
|
|
69
|
+
const result = {
|
|
70
|
+
critical: { count: 0, files: 0, findings: [], estimatedHours: "0" },
|
|
71
|
+
high: { count: 0, files: 0, findings: [], estimatedHours: "0" },
|
|
72
|
+
medium: { count: 0, files: 0, findings: [], estimatedHours: "0" },
|
|
73
|
+
low: { count: 0, files: 0, findings: [], estimatedHours: "0" },
|
|
74
|
+
info: { count: 0, files: 0, findings: [], estimatedHours: "0" },
|
|
75
|
+
};
|
|
76
|
+
const filesBySeverity = {
|
|
77
|
+
critical: new Set(),
|
|
78
|
+
high: new Set(),
|
|
79
|
+
medium: new Set(),
|
|
80
|
+
low: new Set(),
|
|
81
|
+
info: new Set(),
|
|
82
|
+
};
|
|
83
|
+
for (const { finding } of findings) {
|
|
84
|
+
result[finding.severity].count++;
|
|
85
|
+
result[finding.severity].findings.push(finding.id);
|
|
86
|
+
if (finding.file) {
|
|
87
|
+
filesBySeverity[finding.severity].add(finding.file);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
for (const severity of Object.keys(result)) {
|
|
91
|
+
result[severity].files = filesBySeverity[severity].size;
|
|
92
|
+
const hours = result[severity].count * EFFORT_PER_SEVERITY[severity];
|
|
93
|
+
result[severity].estimatedHours = formatHours(hours);
|
|
94
|
+
}
|
|
95
|
+
return result;
|
|
96
|
+
}
|
|
97
|
+
function groupByAgent(findings, certification) {
|
|
98
|
+
const result = {};
|
|
99
|
+
const byAgent = new Map();
|
|
100
|
+
for (const { agent, finding } of findings) {
|
|
101
|
+
if (!byAgent.has(agent))
|
|
102
|
+
byAgent.set(agent, []);
|
|
103
|
+
byAgent.get(agent).push(finding);
|
|
104
|
+
}
|
|
105
|
+
for (const [agent, agentFindings] of byAgent) {
|
|
106
|
+
result[agent] = {
|
|
107
|
+
count: agentFindings.length,
|
|
108
|
+
score: certification.consensus?.agent_scores[agent] ?? 0,
|
|
109
|
+
confidence: certification.consensus?.agent_confidences[agent] ?? 0,
|
|
110
|
+
topFindings: agentFindings
|
|
111
|
+
.sort((a, b) => {
|
|
112
|
+
const severityOrder = {
|
|
113
|
+
critical: 0,
|
|
114
|
+
high: 1,
|
|
115
|
+
medium: 2,
|
|
116
|
+
low: 3,
|
|
117
|
+
info: 4,
|
|
118
|
+
};
|
|
119
|
+
return severityOrder[a.severity] - severityOrder[b.severity];
|
|
120
|
+
})
|
|
121
|
+
.slice(0, 5)
|
|
122
|
+
.map((f) => f.id),
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
return result;
|
|
126
|
+
}
|
|
127
|
+
function groupByFile(findings) {
|
|
128
|
+
const byFile = new Map();
|
|
129
|
+
for (const { finding } of findings) {
|
|
130
|
+
const file = finding.file || "(no file)";
|
|
131
|
+
if (!byFile.has(file)) {
|
|
132
|
+
byFile.set(file, {
|
|
133
|
+
severities: { critical: 0, high: 0, medium: 0, low: 0, info: 0 },
|
|
134
|
+
findings: [],
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
byFile.get(file).severities[finding.severity]++;
|
|
138
|
+
byFile.get(file).findings.push(finding.id);
|
|
139
|
+
}
|
|
140
|
+
return Array.from(byFile.entries())
|
|
141
|
+
.map(([file, data]) => ({
|
|
142
|
+
file,
|
|
143
|
+
issueCount: data.findings.length,
|
|
144
|
+
severities: data.severities,
|
|
145
|
+
findings: data.findings,
|
|
146
|
+
}))
|
|
147
|
+
.sort((a, b) => {
|
|
148
|
+
// Sort by critical count, then high, then total
|
|
149
|
+
const critDiff = b.severities.critical - a.severities.critical;
|
|
150
|
+
if (critDiff !== 0)
|
|
151
|
+
return critDiff;
|
|
152
|
+
const highDiff = b.severities.high - a.severities.high;
|
|
153
|
+
if (highDiff !== 0)
|
|
154
|
+
return highDiff;
|
|
155
|
+
return b.issueCount - a.issueCount;
|
|
156
|
+
})
|
|
157
|
+
.slice(0, 20);
|
|
158
|
+
}
|
|
159
|
+
function groupByCategory(findings) {
|
|
160
|
+
const byCategory = new Map();
|
|
161
|
+
for (const { finding } of findings) {
|
|
162
|
+
const category = finding.category || "uncategorized";
|
|
163
|
+
if (!byCategory.has(category)) {
|
|
164
|
+
byCategory.set(category, { findings: [] });
|
|
165
|
+
}
|
|
166
|
+
byCategory.get(category).findings.push(finding);
|
|
167
|
+
}
|
|
168
|
+
return Array.from(byCategory.entries())
|
|
169
|
+
.map(([category, data]) => {
|
|
170
|
+
// Determine highest severity in category
|
|
171
|
+
const severityOrder = {
|
|
172
|
+
critical: 0,
|
|
173
|
+
high: 1,
|
|
174
|
+
medium: 2,
|
|
175
|
+
low: 3,
|
|
176
|
+
info: 4,
|
|
177
|
+
};
|
|
178
|
+
const highestSeverity = data.findings.reduce((highest, f) => severityOrder[f.severity] < severityOrder[highest] ? f.severity : highest, "info");
|
|
179
|
+
return {
|
|
180
|
+
category,
|
|
181
|
+
count: data.findings.length,
|
|
182
|
+
severity: highestSeverity,
|
|
183
|
+
findings: data.findings.map((f) => f.id),
|
|
184
|
+
};
|
|
185
|
+
})
|
|
186
|
+
.sort((a, b) => {
|
|
187
|
+
const severityOrder = {
|
|
188
|
+
critical: 0,
|
|
189
|
+
high: 1,
|
|
190
|
+
medium: 2,
|
|
191
|
+
low: 3,
|
|
192
|
+
info: 4,
|
|
193
|
+
};
|
|
194
|
+
return severityOrder[a.severity] - severityOrder[b.severity] || b.count - a.count;
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
function calculateEffort(findings) {
|
|
198
|
+
const hours = {
|
|
199
|
+
critical: 0,
|
|
200
|
+
high: 0,
|
|
201
|
+
medium: 0,
|
|
202
|
+
low: 0,
|
|
203
|
+
info: 0,
|
|
204
|
+
};
|
|
205
|
+
for (const { finding } of findings) {
|
|
206
|
+
hours[finding.severity] += EFFORT_PER_SEVERITY[finding.severity];
|
|
207
|
+
}
|
|
208
|
+
const total = Object.values(hours).reduce((sum, h) => sum + h, 0);
|
|
209
|
+
return {
|
|
210
|
+
totalHours: formatHours(total),
|
|
211
|
+
critical: formatHours(hours.critical),
|
|
212
|
+
high: formatHours(hours.high),
|
|
213
|
+
medium: formatHours(hours.medium),
|
|
214
|
+
low: formatHours(hours.low),
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
function formatHours(hours) {
|
|
218
|
+
if (hours === 0)
|
|
219
|
+
return "0 hours";
|
|
220
|
+
if (hours < 1)
|
|
221
|
+
return `${Math.round(hours * 60)} minutes`;
|
|
222
|
+
if (hours === 1)
|
|
223
|
+
return "1 hour";
|
|
224
|
+
if (hours < 8)
|
|
225
|
+
return `${hours.toFixed(1)} hours`;
|
|
226
|
+
const days = hours / 8;
|
|
227
|
+
if (days < 5)
|
|
228
|
+
return `${days.toFixed(1)} days`;
|
|
229
|
+
return `${Math.round(days / 5)} weeks`;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Filter findings by various criteria
|
|
233
|
+
*/
|
|
234
|
+
export function filterFindings(certification, options) {
|
|
235
|
+
const results = [];
|
|
236
|
+
for (const [agent, agentData] of Object.entries(certification.agents)) {
|
|
237
|
+
if (options.agents && !options.agents.includes(agent)) {
|
|
238
|
+
continue;
|
|
239
|
+
}
|
|
240
|
+
if (agentData) {
|
|
241
|
+
for (const finding of agentData.findings) {
|
|
242
|
+
// Filter by severity
|
|
243
|
+
if (options.severity && !options.severity.includes(finding.severity)) {
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
// Filter by category
|
|
247
|
+
if (options.categories && !options.categories.includes(finding.category)) {
|
|
248
|
+
continue;
|
|
249
|
+
}
|
|
250
|
+
// Filter by file
|
|
251
|
+
if (options.files && finding.file && !options.files.some((f) => finding.file.includes(f))) {
|
|
252
|
+
continue;
|
|
253
|
+
}
|
|
254
|
+
// Filter by confidence
|
|
255
|
+
if (options.minConfidence && finding.confidence < options.minConfidence) {
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
258
|
+
// Filter by instances
|
|
259
|
+
if (options.hasInstances && (!finding.instances || finding.instances.length === 0)) {
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
results.push(finding);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
return results;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Get actionable next steps based on findings
|
|
270
|
+
*/
|
|
271
|
+
export function getActionItems(certification) {
|
|
272
|
+
const summary = generateSummary(certification);
|
|
273
|
+
const actions = [];
|
|
274
|
+
if (summary.bySeverity.critical.count > 0) {
|
|
275
|
+
actions.push(`🚨 Fix ${summary.bySeverity.critical.count} critical issues immediately (${summary.bySeverity.critical.estimatedHours})`);
|
|
276
|
+
}
|
|
277
|
+
if (summary.bySeverity.high.count > 0) {
|
|
278
|
+
actions.push(`⚠️ Address ${summary.bySeverity.high.count} high-priority issues (${summary.bySeverity.high.estimatedHours})`);
|
|
279
|
+
}
|
|
280
|
+
// Top files needing attention
|
|
281
|
+
const topFiles = summary.byFile.slice(0, 3);
|
|
282
|
+
if (topFiles.length > 0) {
|
|
283
|
+
actions.push(`📁 Focus on these files first: ${topFiles.map((f) => `${f.file} (${f.issueCount} issues)`).join(", ")}`);
|
|
284
|
+
}
|
|
285
|
+
// Agent recommendations
|
|
286
|
+
for (const [agent, data] of Object.entries(summary.byAgent)) {
|
|
287
|
+
if (data.score < 70) {
|
|
288
|
+
actions.push(`🔧 ${agent}: Score ${data.score}/100 - needs attention`);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
if (actions.length === 0) {
|
|
292
|
+
actions.push("✅ No critical actions required");
|
|
293
|
+
}
|
|
294
|
+
return actions;
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary.js","sourceRoot":"","sources":["../../src/certification/summary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enterprise Certification System - Type Definitions
|
|
3
|
+
*/
|
|
4
|
+
export type AgentType = "security" | "reliability" | "typesafety" | "performance" | "quality" | "redteam" | "agent-redteam" | "agent-privacy" | "agent-integrity";
|
|
5
|
+
export type Severity = "critical" | "high" | "medium" | "low" | "info";
|
|
6
|
+
export type CertificationLevel = "CERTIFIED" | "APPROVED" | "REVIEW_REQUIRED" | "BLOCKED";
|
|
7
|
+
export type CertificationStatus = "not_started" | "in_progress" | "completed" | "failed";
|
|
8
|
+
export type VerificationVerdict = "confirmed" | "disputed" | "inconclusive";
|
|
9
|
+
/**
|
|
10
|
+
* Standard finding categories
|
|
11
|
+
*/
|
|
12
|
+
export type FindingCategory = "sql-injection" | "xss" | "auth-bypass" | "broken-access-control" | "session-management" | "cryptographic-failure" | "injection" | "insecure-design" | "security-misconfiguration" | "vulnerable-component" | "identification-failure" | "integrity-failure" | "logging-failure" | "ssrf" | "path-traversal" | "command-injection" | "code-injection" | "hardcoded-secret" | "weak-password" | "insecure-random" | "missing-encryption" | "pii-exposure" | "dependency-vuln" | "type-safety" | "error-handling" | "resource-exhaustion" | "race-condition" | "prompt-injection" | "insecure-output" | "training-data-poisoning" | "model-denial-of-service" | "supply-chain-vuln" | "sensitive-disclosure" | "insecure-plugin" | "excessive-agency" | "overreliance" | "model-theft" | "manifest-drift" | "exfil-path" | "overscoped-permission" | "missing-sandbox" | "credential-overscoped" | "tool-drift" | "unsigned-change" | "consensus-manipulation" | "binary-security" | "memory-safety" | "logic-flaw" | "exploit-chain" | "zero-day" | "authentication" | "authorization" | "cryptography" | "input-validation" | "api-security" | "resource-management" | "deserialization" | "open-redirect" | "secret-management" | "code-quality" | "other";
|
|
13
|
+
/**
|
|
14
|
+
* Location of a finding instance
|
|
15
|
+
*/
|
|
16
|
+
export interface FindingInstance {
|
|
17
|
+
file: string;
|
|
18
|
+
line?: number;
|
|
19
|
+
evidence?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface Finding {
|
|
22
|
+
id: string;
|
|
23
|
+
severity: Severity;
|
|
24
|
+
category: FindingCategory | string;
|
|
25
|
+
file?: string;
|
|
26
|
+
line?: number;
|
|
27
|
+
description: string;
|
|
28
|
+
evidence: string;
|
|
29
|
+
confidence: number;
|
|
30
|
+
cross_references?: string[];
|
|
31
|
+
verifications: Verification[];
|
|
32
|
+
created_at: string;
|
|
33
|
+
/** Multiple instances of the same finding (for deduplication) */
|
|
34
|
+
instances?: FindingInstance[];
|
|
35
|
+
/** Source scanner if this is a deterministic finding (confidence: 100) */
|
|
36
|
+
scanner_source?: "semgrep" | "npm-audit" | "gitleaks" | "tsc" | "eslint" | "bandit" | "gosec" | "brakeman" | "trivy" | "binary-analysis" | "memory-safety" | "race-condition" | "zero-day-hunter" | "logic-flaw-detector" | "exploit-chain-analyzer" | "manifest-audit" | "tool-description-drift" | "prompt-injection-fuzzer" | "exfil-path-graph" | "permission-minimiser" | "supply-chain-mcp" | "sandbox-audit" | "credential-scope-audit";
|
|
37
|
+
/** Original rule ID from the scanner */
|
|
38
|
+
scanner_rule_id?: string;
|
|
39
|
+
/** CWE IDs from scanner */
|
|
40
|
+
cwe_ids?: string[];
|
|
41
|
+
/** CVE IDs from scanner (for dependency vulns) */
|
|
42
|
+
cve_ids?: string[];
|
|
43
|
+
/** Additional metadata from scanner/agent */
|
|
44
|
+
metadata?: Record<string, unknown>;
|
|
45
|
+
}
|
|
46
|
+
export interface Verification {
|
|
47
|
+
verifying_agent: AgentType;
|
|
48
|
+
verdict: VerificationVerdict;
|
|
49
|
+
evidence: string;
|
|
50
|
+
adjusted_confidence?: number;
|
|
51
|
+
created_at: string;
|
|
52
|
+
}
|
|
53
|
+
export interface AgentSummary {
|
|
54
|
+
total_findings: number;
|
|
55
|
+
by_severity: Record<Severity, number>;
|
|
56
|
+
confidence_score: number;
|
|
57
|
+
coverage_areas: string[];
|
|
58
|
+
notes?: string;
|
|
59
|
+
}
|
|
60
|
+
export interface AgentFindings {
|
|
61
|
+
agent: AgentType;
|
|
62
|
+
started_at: string;
|
|
63
|
+
completed_at?: string;
|
|
64
|
+
status: "running" | "completed" | "failed";
|
|
65
|
+
findings: Finding[];
|
|
66
|
+
summary?: AgentSummary;
|
|
67
|
+
}
|
|
68
|
+
export interface RedTeamChallenge {
|
|
69
|
+
id: string;
|
|
70
|
+
target_agent: AgentType;
|
|
71
|
+
area: string;
|
|
72
|
+
challenge_type: "missed_issue" | "false_negative" | "incomplete_coverage" | "edge_case";
|
|
73
|
+
evidence: string;
|
|
74
|
+
severity_if_valid: Severity;
|
|
75
|
+
resolution?: {
|
|
76
|
+
accepted: boolean;
|
|
77
|
+
response: string;
|
|
78
|
+
};
|
|
79
|
+
created_at: string;
|
|
80
|
+
}
|
|
81
|
+
export interface CrossVerification {
|
|
82
|
+
finding_id: string;
|
|
83
|
+
verifying_agent: AgentType;
|
|
84
|
+
verdict: VerificationVerdict;
|
|
85
|
+
evidence: string;
|
|
86
|
+
adjusted_confidence?: number;
|
|
87
|
+
created_at: string;
|
|
88
|
+
}
|
|
89
|
+
export interface ConsensusResult {
|
|
90
|
+
overall_score: number;
|
|
91
|
+
certification_level: CertificationLevel;
|
|
92
|
+
agent_scores: Record<AgentType, number>;
|
|
93
|
+
agent_confidences: Record<AgentType, number>;
|
|
94
|
+
total_findings: number;
|
|
95
|
+
by_severity: Record<Severity, number>;
|
|
96
|
+
cross_verification_rate: number;
|
|
97
|
+
red_team_challenges_accepted: number;
|
|
98
|
+
red_team_challenges_total: number;
|
|
99
|
+
calculated_at: string;
|
|
100
|
+
}
|
|
101
|
+
export interface CertificationMetadata {
|
|
102
|
+
id: string;
|
|
103
|
+
project_name: string;
|
|
104
|
+
project_path: string;
|
|
105
|
+
started_at: string;
|
|
106
|
+
completed_at?: string;
|
|
107
|
+
status: CertificationStatus;
|
|
108
|
+
agents_requested: AgentType[];
|
|
109
|
+
agents_completed: AgentType[];
|
|
110
|
+
certification_level?: CertificationLevel;
|
|
111
|
+
final_score?: number;
|
|
112
|
+
expires_at?: string;
|
|
113
|
+
/** SHA-256 hash of project files at certification time */
|
|
114
|
+
project_hash?: string;
|
|
115
|
+
/** Whether deterministic scanners were run */
|
|
116
|
+
scanners_run?: boolean;
|
|
117
|
+
/** Timestamp when scanners completed */
|
|
118
|
+
scanners_completed_at?: string;
|
|
119
|
+
/** Count of findings from deterministic scanners */
|
|
120
|
+
scanner_findings_count?: number;
|
|
121
|
+
}
|
|
122
|
+
export interface Certification {
|
|
123
|
+
metadata: CertificationMetadata;
|
|
124
|
+
agents: Partial<Record<AgentType, AgentFindings>>;
|
|
125
|
+
cross_verifications: CrossVerification[];
|
|
126
|
+
red_team_challenges: RedTeamChallenge[];
|
|
127
|
+
consensus?: ConsensusResult;
|
|
128
|
+
}
|
|
129
|
+
export declare const AGENT_WEIGHTS: Record<AgentType, number>;
|
|
130
|
+
export declare const SEVERITY_PENALTIES: Record<Severity, number>;
|
|
131
|
+
export declare const CERTIFICATION_THRESHOLDS: {
|
|
132
|
+
CERTIFIED: number;
|
|
133
|
+
APPROVED: number;
|
|
134
|
+
REVIEW_REQUIRED: number;
|
|
135
|
+
BLOCKED: number;
|
|
136
|
+
};
|
|
137
|
+
export declare const CERTIFICATION_VALIDITY_DAYS = 30;
|
|
138
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/certification/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enterprise Certification System - Type Definitions
|
|
3
|
+
*/
|
|
4
|
+
// Agent weights for scoring
|
|
5
|
+
export const AGENT_WEIGHTS = {
|
|
6
|
+
security: 0.30,
|
|
7
|
+
reliability: 0.25,
|
|
8
|
+
typesafety: 0.15,
|
|
9
|
+
performance: 0.15,
|
|
10
|
+
quality: 0.10,
|
|
11
|
+
redteam: 0.05,
|
|
12
|
+
// M6: Agent-specific weights (used when certifying agent systems)
|
|
13
|
+
"agent-redteam": 0.30,
|
|
14
|
+
"agent-privacy": 0.25,
|
|
15
|
+
"agent-integrity": 0.20,
|
|
16
|
+
};
|
|
17
|
+
// Severity penalties for scoring
|
|
18
|
+
export const SEVERITY_PENALTIES = {
|
|
19
|
+
critical: 25,
|
|
20
|
+
high: 10,
|
|
21
|
+
medium: 3,
|
|
22
|
+
low: 1,
|
|
23
|
+
info: 0,
|
|
24
|
+
};
|
|
25
|
+
// Certification thresholds
|
|
26
|
+
export const CERTIFICATION_THRESHOLDS = {
|
|
27
|
+
CERTIFIED: 90,
|
|
28
|
+
APPROVED: 70,
|
|
29
|
+
REVIEW_REQUIRED: 40,
|
|
30
|
+
BLOCKED: 0,
|
|
31
|
+
};
|
|
32
|
+
// Certification validity period (30 days)
|
|
33
|
+
export const CERTIFICATION_VALIDITY_DAYS = 30;
|
|
34
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/certification/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AA4PH,4BAA4B;AAC5B,MAAM,CAAC,MAAM,aAAa,GAA8B;IACtD,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,kEAAkE;IAClE,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,IAAI;IACrB,iBAAiB,EAAE,IAAI;CACxB,CAAC;AAEF,iCAAiC;AACjC,MAAM,CAAC,MAAM,kBAAkB,GAA6B;IAC1D,QAAQ,EAAE,EAAE;IACZ,IAAI,EAAE,EAAE;IACR,MAAM,EAAE,CAAC;IACT,GAAG,EAAE,CAAC;IACN,IAAI,EAAE,CAAC;CACR,CAAC;AAEF,2BAA2B;AAC3B,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,SAAS,EAAE,EAAE;IACb,QAAQ,EAAE,EAAE;IACZ,eAAe,EAAE,EAAE;IACnB,OAAO,EAAE,CAAC;CACX,CAAC;AAEF,0CAA0C;AAC1C,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-check.d.ts","sourceRoot":"","sources":["../../../src/commands/audits/api-check.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,eAAO,MAAM,QAAQ,EAAE,gBAqEtB,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
export const apiCheck = {
|
|
2
|
+
name: "api-check",
|
|
3
|
+
description: "API contract validation — response types match reality, consistent patterns, complete error handling",
|
|
4
|
+
content: `Validate API contracts and consistency across all endpoints.
|
|
5
|
+
|
|
6
|
+
## 1. Type Safety Audit
|
|
7
|
+
For every API route and server action:
|
|
8
|
+
- Does the response type match what's actually returned?
|
|
9
|
+
- Are request body types accurate?
|
|
10
|
+
- Do error responses have typed shapes?
|
|
11
|
+
- Are there any as unknown as or type assertions hiding mismatches?
|
|
12
|
+
|
|
13
|
+
## 2. Response Shape Consistency
|
|
14
|
+
Check all API responses for:
|
|
15
|
+
- Consistent success shape: { data: T } or { result: T }
|
|
16
|
+
- Consistent error shape: { error: string, code: string, status: number }
|
|
17
|
+
- Consistent pagination: { data: T[], pagination: { page, limit, total } }
|
|
18
|
+
- No mixing of shapes (some routes return { user }, others { data: user })
|
|
19
|
+
|
|
20
|
+
## 3. HTTP Status Code Audit
|
|
21
|
+
For each API route, verify:
|
|
22
|
+
- 200 for successful GET
|
|
23
|
+
- 201 for successful POST creating a resource
|
|
24
|
+
- 204 for successful DELETE
|
|
25
|
+
- 400 for validation errors
|
|
26
|
+
- 401 for unauthenticated
|
|
27
|
+
- 403 for unauthorized (authenticated but not allowed)
|
|
28
|
+
- 404 for not found
|
|
29
|
+
- 500 for server errors
|
|
30
|
+
- No using 200 for errors with { success: false }
|
|
31
|
+
|
|
32
|
+
## 4. Input Validation Completeness
|
|
33
|
+
For every route accepting input:
|
|
34
|
+
- Is there Zod (or equivalent) schema validation?
|
|
35
|
+
- Are all fields validated (type, format, length, range)?
|
|
36
|
+
- Are optional fields properly marked?
|
|
37
|
+
- Is validation happening BEFORE any database/external calls?
|
|
38
|
+
|
|
39
|
+
## 5. Error Response Quality
|
|
40
|
+
For every error path:
|
|
41
|
+
- Does it return useful error messages?
|
|
42
|
+
- Does it NOT leak internal details (stack traces, SQL queries)?
|
|
43
|
+
- Does it include error codes for client-side handling?
|
|
44
|
+
- Are errors logged with context?
|
|
45
|
+
|
|
46
|
+
## 6. API Documentation
|
|
47
|
+
- Do routes have JSDoc or similar documentation?
|
|
48
|
+
- Are complex request/response shapes documented?
|
|
49
|
+
- Is there an OpenAPI spec or similar?
|
|
50
|
+
|
|
51
|
+
## Output: API-AUDIT.md
|
|
52
|
+
|
|
53
|
+
### Type Mismatches
|
|
54
|
+
| Route | Issue | Expected | Actual |
|
|
55
|
+
|-------|-------|----------|--------|
|
|
56
|
+
| POST /api/users | Missing field in response type | { id, email, name } | { id, email } |
|
|
57
|
+
|
|
58
|
+
### Inconsistent Patterns
|
|
59
|
+
- 5 routes return { data }, 3 routes return raw object
|
|
60
|
+
- Error shapes vary across 8 routes
|
|
61
|
+
|
|
62
|
+
### Missing Validation
|
|
63
|
+
- POST /api/orders - no input validation
|
|
64
|
+
- PUT /api/users/[id] - partial validation
|
|
65
|
+
|
|
66
|
+
### Recommendations (prioritized)
|
|
67
|
+
1. Create shared response type utilities
|
|
68
|
+
2. Add validation to X routes
|
|
69
|
+
3. Standardize error responses`
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=api-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-check.js","sourceRoot":"","sources":["../../../src/commands/audits/api-check.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAqB;IACxC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,sGAAsG;IACnH,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAiEoB;CAC9B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deadcode.d.ts","sourceRoot":"","sources":["../../../src/commands/audits/deadcode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,eAAO,MAAM,QAAQ,EAAE,gBA6DtB,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export const deadcode = {
|
|
2
|
+
name: "deadcode",
|
|
3
|
+
description: "Dead code detection — unused exports, unreachable code, orphaned files",
|
|
4
|
+
content: `Find and report all dead code in the codebase.
|
|
5
|
+
|
|
6
|
+
## 1. Unused Exports
|
|
7
|
+
For every file in src/, app/, lib/, components/, utils/:
|
|
8
|
+
- List all exported functions, classes, constants, types
|
|
9
|
+
- Search codebase for imports of each export
|
|
10
|
+
- Flag exports that are never imported anywhere
|
|
11
|
+
- Exclude: index.ts re-exports, public API files, test utilities
|
|
12
|
+
|
|
13
|
+
## 2. Unused Files
|
|
14
|
+
- Find files that are never imported by any other file
|
|
15
|
+
- Check: components, utilities, types, constants
|
|
16
|
+
- Exclude: entry points (page.tsx, layout.tsx, route.ts), config files, test files
|
|
17
|
+
|
|
18
|
+
## 3. Unreachable Code
|
|
19
|
+
Scan for:
|
|
20
|
+
- Code after return/throw statements
|
|
21
|
+
- Conditions that are always true/false (if (false), if (true && false))
|
|
22
|
+
- Switch cases that can never match
|
|
23
|
+
- Catch blocks that catch impossible errors
|
|
24
|
+
|
|
25
|
+
## 4. Commented-Out Code
|
|
26
|
+
- Find blocks of commented-out code (not documentation comments)
|
|
27
|
+
- 3+ consecutive lines of commented code = flag it
|
|
28
|
+
- These should be deleted, not commented
|
|
29
|
+
|
|
30
|
+
## 5. Unused Variables
|
|
31
|
+
- Variables declared but never read
|
|
32
|
+
- Parameters that are never used
|
|
33
|
+
- Destructured properties that are never used
|
|
34
|
+
|
|
35
|
+
## 6. Dead CSS/Styles
|
|
36
|
+
If using CSS modules, Tailwind, or styled-components:
|
|
37
|
+
- Classes defined but never applied
|
|
38
|
+
- Tailwind classes in safelist that aren't used
|
|
39
|
+
|
|
40
|
+
## Output: DEADCODE-REPORT.md
|
|
41
|
+
|
|
42
|
+
### Summary
|
|
43
|
+
- Unused exports: X
|
|
44
|
+
- Orphaned files: X
|
|
45
|
+
- Unreachable code blocks: X
|
|
46
|
+
- Commented code blocks: X
|
|
47
|
+
- Estimated dead code: X lines
|
|
48
|
+
|
|
49
|
+
### Unused Exports
|
|
50
|
+
| File | Export | Type |
|
|
51
|
+
|------|--------|------|
|
|
52
|
+
| src/utils/format.ts | formatCurrency | function |
|
|
53
|
+
|
|
54
|
+
### Orphaned Files (safe to delete)
|
|
55
|
+
- src/components/OldHeader.tsx
|
|
56
|
+
- src/utils/deprecated.ts
|
|
57
|
+
|
|
58
|
+
### Recommended Cleanup
|
|
59
|
+
Prioritized list of what to remove, starting with highest confidence.
|
|
60
|
+
|
|
61
|
+
DO NOT automatically delete anything. This is a report for human review.`
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=deadcode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deadcode.js","sourceRoot":"","sources":["../../../src/commands/audits/deadcode.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAqB;IACxC,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,wEAAwE;IACrF,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yEAyD8D;CACxE,CAAC"}
|