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,454 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logic Flaw Detector Agent
|
|
3
|
+
*
|
|
4
|
+
* Finds business logic vulnerabilities that pattern-based scanners miss.
|
|
5
|
+
* Analyzes control flow, state management, and business rule implementations.
|
|
6
|
+
*
|
|
7
|
+
* Focus areas:
|
|
8
|
+
* - State inconsistency: Variables mutable when should be immutable
|
|
9
|
+
* - Race conditions: Check-then-act without locks
|
|
10
|
+
* - Boundary conditions: Off-by-one, integer overflow
|
|
11
|
+
* - Error handling: Swallowed exceptions, incomplete cleanup
|
|
12
|
+
* - Trust boundaries: Client-supplied data used unsafely
|
|
13
|
+
* - Business rule violations: Incorrect implementations of business logic
|
|
14
|
+
*
|
|
15
|
+
* @module agents/logic-flaw-detector
|
|
16
|
+
*/
|
|
17
|
+
import { readFile } from "fs/promises";
|
|
18
|
+
import * as path from "path";
|
|
19
|
+
import { glob } from "glob";
|
|
20
|
+
const LOGIC_PATTERNS = [
|
|
21
|
+
// State Inconsistency
|
|
22
|
+
{
|
|
23
|
+
id: "lfd-state-001",
|
|
24
|
+
title: "Mutable shared state in async context",
|
|
25
|
+
pattern: /let\s+\w+\s*=[\s\S]{0,50}(?:await|\.then|setTimeout|setInterval)/g,
|
|
26
|
+
severity: "medium",
|
|
27
|
+
category: "state-inconsistency",
|
|
28
|
+
cweIds: ["CWE-362", "CWE-820"],
|
|
29
|
+
description: "Mutable variable declared before async operation may lead to race conditions.",
|
|
30
|
+
impact: "Concurrent modifications can cause data corruption or unexpected behavior.",
|
|
31
|
+
recommendation: "Use const or atomic operations. Consider using immutable data structures.",
|
|
32
|
+
languages: ["typescript", "javascript"],
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
id: "lfd-state-002",
|
|
36
|
+
title: "Global state modification in function",
|
|
37
|
+
pattern: /(?:global|window|globalThis)\.\w+\s*=(?!=)/g,
|
|
38
|
+
severity: "medium",
|
|
39
|
+
category: "state-inconsistency",
|
|
40
|
+
cweIds: ["CWE-362"],
|
|
41
|
+
description: "Function modifies global state which can cause unexpected side effects.",
|
|
42
|
+
impact: "Global state mutations make code unpredictable and hard to test.",
|
|
43
|
+
recommendation: "Pass state as parameters or use dependency injection.",
|
|
44
|
+
languages: ["typescript", "javascript"],
|
|
45
|
+
},
|
|
46
|
+
// Boundary Violations
|
|
47
|
+
{
|
|
48
|
+
id: "lfd-boundary-001",
|
|
49
|
+
title: "Array access without bounds check",
|
|
50
|
+
pattern: /\[\s*(?:\w+\s*[-+]\s*\d+|\w+\s*\*\s*\w+)\s*\]/g,
|
|
51
|
+
severity: "medium",
|
|
52
|
+
category: "boundary-violation",
|
|
53
|
+
cweIds: ["CWE-129", "CWE-787"],
|
|
54
|
+
description: "Array index calculation without explicit bounds validation.",
|
|
55
|
+
impact: "Out-of-bounds access can cause crashes or security vulnerabilities.",
|
|
56
|
+
recommendation: "Add explicit bounds checking before array access.",
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
id: "lfd-boundary-002",
|
|
60
|
+
title: "Loop condition off-by-one risk",
|
|
61
|
+
pattern: /for\s*\([^;]+;\s*\w+\s*<=\s*\w+\.length[^;]*;/g,
|
|
62
|
+
severity: "medium",
|
|
63
|
+
category: "boundary-violation",
|
|
64
|
+
cweIds: ["CWE-193"],
|
|
65
|
+
description: "Loop condition uses <= with length, potential off-by-one error.",
|
|
66
|
+
impact: "Off-by-one errors can cause array out-of-bounds access.",
|
|
67
|
+
recommendation: "Use < instead of <= when iterating to array length.",
|
|
68
|
+
languages: ["typescript", "javascript"],
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
id: "lfd-boundary-003",
|
|
72
|
+
title: "Unchecked arithmetic in financial calculation",
|
|
73
|
+
pattern: /(?:price|amount|total|balance|cost|fee|rate)\s*(?:\*|\/)(?!\s*0)/g,
|
|
74
|
+
severity: "high",
|
|
75
|
+
category: "boundary-violation",
|
|
76
|
+
cweIds: ["CWE-190", "CWE-682"],
|
|
77
|
+
description: "Financial calculation without overflow/precision checking.",
|
|
78
|
+
impact: "Arithmetic errors in financial code can cause monetary losses.",
|
|
79
|
+
recommendation: "Use decimal libraries (decimal.js) for financial calculations.",
|
|
80
|
+
},
|
|
81
|
+
// Error Handling
|
|
82
|
+
{
|
|
83
|
+
id: "lfd-error-001",
|
|
84
|
+
title: "Empty catch block",
|
|
85
|
+
pattern: /catch\s*\([^)]*\)\s*\{\s*\}/g,
|
|
86
|
+
severity: "medium",
|
|
87
|
+
category: "error-handling",
|
|
88
|
+
cweIds: ["CWE-390"],
|
|
89
|
+
description: "Exception caught but not handled, silently ignoring errors.",
|
|
90
|
+
impact: "Errors are silently swallowed, making debugging difficult.",
|
|
91
|
+
recommendation: "Log the error or handle it appropriately. Use error monitoring.",
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
id: "lfd-error-002",
|
|
95
|
+
title: "Catch block only logs error",
|
|
96
|
+
pattern: /catch\s*\([^)]*\)\s*\{\s*(?:console\.(?:log|error)|logger\.\w+)\s*\([^)]+\)\s*;?\s*\}/g,
|
|
97
|
+
severity: "low",
|
|
98
|
+
category: "error-handling",
|
|
99
|
+
cweIds: ["CWE-755"],
|
|
100
|
+
description: "Exception caught and logged but execution continues as if successful.",
|
|
101
|
+
impact: "Application may continue in an invalid state after error.",
|
|
102
|
+
recommendation: "Consider re-throwing the error or returning an error result.",
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
id: "lfd-error-003",
|
|
106
|
+
title: "Missing cleanup in error path",
|
|
107
|
+
pattern: /try\s*\{[\s\S]{0,500}(?:open|connect|acquire|lock)[\s\S]{0,500}\}\s*catch[\s\S]{0,200}(?!\s*(?:close|disconnect|release|unlock))/g,
|
|
108
|
+
severity: "high",
|
|
109
|
+
category: "error-handling",
|
|
110
|
+
cweIds: ["CWE-404"],
|
|
111
|
+
description: "Resource acquired in try block may not be released in catch block.",
|
|
112
|
+
impact: "Resource leaks can cause denial of service or system instability.",
|
|
113
|
+
recommendation: "Use try-finally or resource management patterns (using, with).",
|
|
114
|
+
},
|
|
115
|
+
// Trust Boundary
|
|
116
|
+
{
|
|
117
|
+
id: "lfd-trust-001",
|
|
118
|
+
title: "User input used in object property access",
|
|
119
|
+
pattern: /\[\s*(?:req|request)\.(?:body|query|params)\.\w+\s*\]/g,
|
|
120
|
+
severity: "high",
|
|
121
|
+
category: "trust-boundary",
|
|
122
|
+
cweIds: ["CWE-915"],
|
|
123
|
+
description: "User-supplied key used for object property access enables prototype pollution.",
|
|
124
|
+
impact: "Attacker can access or modify unexpected object properties.",
|
|
125
|
+
recommendation: "Validate user input against allowlist of permitted keys.",
|
|
126
|
+
languages: ["typescript", "javascript"],
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
id: "lfd-trust-002",
|
|
130
|
+
title: "Client-provided value used for authorization",
|
|
131
|
+
pattern: /(?:req|request)\.(?:body|query|params)\.(?:role|admin|permission|isAdmin|userId|user_id)/gi,
|
|
132
|
+
severity: "critical",
|
|
133
|
+
category: "trust-boundary",
|
|
134
|
+
cweIds: ["CWE-807"],
|
|
135
|
+
description: "Authorization decision based on client-provided value.",
|
|
136
|
+
impact: "Attacker can elevate privileges by modifying request parameters.",
|
|
137
|
+
recommendation: "Derive authorization data from session/token, never from client input.",
|
|
138
|
+
languages: ["typescript", "javascript"],
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
id: "lfd-trust-003",
|
|
142
|
+
title: "Deserialization of untrusted data",
|
|
143
|
+
pattern: /(?:JSON\.parse|pickle\.loads?|yaml\.load|eval)\s*\([^)]*(?:req|request|input|data|body)/gi,
|
|
144
|
+
severity: "critical",
|
|
145
|
+
category: "trust-boundary",
|
|
146
|
+
cweIds: ["CWE-502"],
|
|
147
|
+
description: "Deserializing data from untrusted source without validation.",
|
|
148
|
+
impact: "Deserialization vulnerabilities can lead to remote code execution.",
|
|
149
|
+
recommendation: "Validate input schema before deserialization. Use safe parsers.",
|
|
150
|
+
},
|
|
151
|
+
// Business Logic
|
|
152
|
+
{
|
|
153
|
+
id: "lfd-biz-001",
|
|
154
|
+
title: "Price calculation after discount check",
|
|
155
|
+
pattern: /if\s*\([^)]*discount[^)]*\)[\s\S]{0,100}(?:price|total)\s*=/gi,
|
|
156
|
+
severity: "medium",
|
|
157
|
+
category: "business-logic",
|
|
158
|
+
cweIds: ["CWE-840"],
|
|
159
|
+
description: "Discount logic may be bypassable if not validated server-side.",
|
|
160
|
+
impact: "Attackers may manipulate pricing to get unauthorized discounts.",
|
|
161
|
+
recommendation: "Validate all pricing calculations server-side. Log anomalies.",
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
id: "lfd-biz-002",
|
|
165
|
+
title: "Quantity/amount not validated as positive",
|
|
166
|
+
pattern: /(?:quantity|amount|count)\s*[:=]\s*(?:parseInt|Number|parseFloat)\s*\([^)]+\)(?![\s\S]{0,50}(?:>|>=)\s*0)/gi,
|
|
167
|
+
severity: "medium",
|
|
168
|
+
category: "business-logic",
|
|
169
|
+
cweIds: ["CWE-20"],
|
|
170
|
+
description: "Numeric value from user input not validated as positive.",
|
|
171
|
+
impact: "Negative values may cause unexpected behavior or financial loss.",
|
|
172
|
+
recommendation: "Validate that quantities and amounts are positive numbers.",
|
|
173
|
+
},
|
|
174
|
+
// Null Safety
|
|
175
|
+
{
|
|
176
|
+
id: "lfd-null-001",
|
|
177
|
+
title: "Optional chaining followed by method call",
|
|
178
|
+
pattern: /\?\.\w+\s*\([^)]*\)\s*\./g,
|
|
179
|
+
severity: "low",
|
|
180
|
+
category: "null-safety",
|
|
181
|
+
cweIds: ["CWE-476"],
|
|
182
|
+
description: "Method called on potentially undefined result of optional chain.",
|
|
183
|
+
impact: "TypeError if the optional chain returns undefined.",
|
|
184
|
+
recommendation: "Add null check or continue optional chaining.",
|
|
185
|
+
languages: ["typescript", "javascript"],
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
id: "lfd-null-002",
|
|
189
|
+
title: "Nullable value used without check",
|
|
190
|
+
pattern: /:\s*\w+\s*\|\s*(?:null|undefined)[\s\S]{0,200}(?<!\?\.)\.\w+/g,
|
|
191
|
+
severity: "medium",
|
|
192
|
+
category: "null-safety",
|
|
193
|
+
cweIds: ["CWE-476"],
|
|
194
|
+
description: "Nullable type accessed without null check.",
|
|
195
|
+
impact: "Runtime error when accessing property of null/undefined.",
|
|
196
|
+
recommendation: "Add null check or use optional chaining.",
|
|
197
|
+
languages: ["typescript"],
|
|
198
|
+
},
|
|
199
|
+
// Resource Leaks
|
|
200
|
+
{
|
|
201
|
+
id: "lfd-resource-001",
|
|
202
|
+
title: "Event listener not removed",
|
|
203
|
+
pattern: /addEventListener\s*\([^)]+\)(?![\s\S]{0,500}removeEventListener)/g,
|
|
204
|
+
severity: "low",
|
|
205
|
+
category: "resource-leak",
|
|
206
|
+
cweIds: ["CWE-401"],
|
|
207
|
+
description: "Event listener added without corresponding removal.",
|
|
208
|
+
impact: "Memory leaks in long-running applications.",
|
|
209
|
+
recommendation: "Remove event listeners in cleanup/unmount lifecycle.",
|
|
210
|
+
languages: ["typescript", "javascript"],
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
id: "lfd-resource-002",
|
|
214
|
+
title: "Timer not cleared",
|
|
215
|
+
pattern: /(?:setInterval|setTimeout)\s*\([^)]+\)(?![\s\S]{0,300}clear(?:Interval|Timeout))/g,
|
|
216
|
+
severity: "low",
|
|
217
|
+
category: "resource-leak",
|
|
218
|
+
cweIds: ["CWE-401"],
|
|
219
|
+
description: "Timer created without being cleared.",
|
|
220
|
+
impact: "Timers may continue running after component/scope is destroyed.",
|
|
221
|
+
recommendation: "Store timer ID and clear in cleanup.",
|
|
222
|
+
languages: ["typescript", "javascript"],
|
|
223
|
+
},
|
|
224
|
+
// Invariant Violations
|
|
225
|
+
{
|
|
226
|
+
id: "lfd-inv-001",
|
|
227
|
+
title: "State modified without validation",
|
|
228
|
+
pattern: /this\.state\.\w+\s*=(?!=)/g,
|
|
229
|
+
severity: "medium",
|
|
230
|
+
category: "invariant-violation",
|
|
231
|
+
cweIds: ["CWE-20"],
|
|
232
|
+
description: "Direct state mutation may bypass validation invariants.",
|
|
233
|
+
impact: "Object may enter invalid state, causing downstream errors.",
|
|
234
|
+
recommendation: "Use setter methods with validation.",
|
|
235
|
+
languages: ["typescript", "javascript"],
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
id: "lfd-inv-002",
|
|
239
|
+
title: "Enum value not exhaustively checked",
|
|
240
|
+
pattern: /switch\s*\([^)]+\)\s*\{(?![\s\S]*default\s*:)/g,
|
|
241
|
+
severity: "low",
|
|
242
|
+
category: "invariant-violation",
|
|
243
|
+
cweIds: ["CWE-478"],
|
|
244
|
+
description: "Switch statement without default case may miss enum values.",
|
|
245
|
+
impact: "Unhandled enum values cause unexpected behavior.",
|
|
246
|
+
recommendation: "Add default case or exhaustive type checking.",
|
|
247
|
+
},
|
|
248
|
+
];
|
|
249
|
+
// ============================================================================
|
|
250
|
+
// Analysis Functions
|
|
251
|
+
// ============================================================================
|
|
252
|
+
/**
|
|
253
|
+
* Detect language from file extension
|
|
254
|
+
*/
|
|
255
|
+
function detectLanguage(file) {
|
|
256
|
+
const ext = path.extname(file).toLowerCase();
|
|
257
|
+
const langMap = {
|
|
258
|
+
".ts": "typescript",
|
|
259
|
+
".tsx": "typescript",
|
|
260
|
+
".js": "javascript",
|
|
261
|
+
".jsx": "javascript",
|
|
262
|
+
".py": "python",
|
|
263
|
+
".go": "go",
|
|
264
|
+
".java": "java",
|
|
265
|
+
};
|
|
266
|
+
return langMap[ext] || "unknown";
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Extract code snippet around a line
|
|
270
|
+
*/
|
|
271
|
+
function extractSnippet(content, lineNumber, context = 2) {
|
|
272
|
+
const lines = content.split("\n");
|
|
273
|
+
const start = Math.max(0, lineNumber - context - 1);
|
|
274
|
+
const end = Math.min(lines.length, lineNumber + context);
|
|
275
|
+
return lines.slice(start, end).join("\n");
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Find line number from character index
|
|
279
|
+
*/
|
|
280
|
+
function findLineNumber(content, index) {
|
|
281
|
+
return content.slice(0, index).split("\n").length;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Check if a finding is in a test file
|
|
285
|
+
*/
|
|
286
|
+
function isTestFile(file) {
|
|
287
|
+
return (file.includes(".test.") ||
|
|
288
|
+
file.includes(".spec.") ||
|
|
289
|
+
file.includes("__tests__") ||
|
|
290
|
+
file.includes("/test/") ||
|
|
291
|
+
file.includes("/tests/"));
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Run logic flaw detection on a single file
|
|
295
|
+
*/
|
|
296
|
+
function analyzeFile(file, content, categories) {
|
|
297
|
+
const findings = [];
|
|
298
|
+
const language = detectLanguage(file);
|
|
299
|
+
// Skip test files
|
|
300
|
+
if (isTestFile(file)) {
|
|
301
|
+
return findings;
|
|
302
|
+
}
|
|
303
|
+
let findingId = 1;
|
|
304
|
+
for (const pattern of LOGIC_PATTERNS) {
|
|
305
|
+
// Filter by category if specified
|
|
306
|
+
if (categories.length > 0 && !categories.includes(pattern.category)) {
|
|
307
|
+
continue;
|
|
308
|
+
}
|
|
309
|
+
// Filter by language if specified
|
|
310
|
+
if (pattern.languages && !pattern.languages.includes(language)) {
|
|
311
|
+
continue;
|
|
312
|
+
}
|
|
313
|
+
// Reset regex
|
|
314
|
+
pattern.pattern.lastIndex = 0;
|
|
315
|
+
let match;
|
|
316
|
+
while ((match = pattern.pattern.exec(content)) !== null) {
|
|
317
|
+
const lineNumber = findLineNumber(content, match.index);
|
|
318
|
+
const snippet = extractSnippet(content, lineNumber);
|
|
319
|
+
findings.push({
|
|
320
|
+
id: `lfd-${file.slice(-10).replace(/[^a-z0-9]/gi, "")}-${String(findingId++).padStart(3, "0")}`,
|
|
321
|
+
title: pattern.title,
|
|
322
|
+
description: pattern.description,
|
|
323
|
+
severity: pattern.severity,
|
|
324
|
+
confidence: 75,
|
|
325
|
+
category: pattern.category,
|
|
326
|
+
file,
|
|
327
|
+
line: lineNumber,
|
|
328
|
+
codeSnippet: snippet,
|
|
329
|
+
impact: pattern.impact,
|
|
330
|
+
cweIds: pattern.cweIds,
|
|
331
|
+
recommendation: pattern.recommendation,
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
return findings;
|
|
336
|
+
}
|
|
337
|
+
// ============================================================================
|
|
338
|
+
// Main Entry Point
|
|
339
|
+
// ============================================================================
|
|
340
|
+
/**
|
|
341
|
+
* Run logic flaw detection on a project
|
|
342
|
+
*/
|
|
343
|
+
export async function runLogicFlawDetector(projectPath, config) {
|
|
344
|
+
const absolutePath = path.resolve(projectPath);
|
|
345
|
+
const findings = [];
|
|
346
|
+
let filesAnalyzed = 0;
|
|
347
|
+
// Get files to analyze
|
|
348
|
+
let files;
|
|
349
|
+
if (config.focusFiles && config.focusFiles.length > 0) {
|
|
350
|
+
files = config.focusFiles;
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
const patterns = ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx", "**/*.py", "**/*.go", "**/*.java"];
|
|
354
|
+
const ignore = [
|
|
355
|
+
"**/node_modules/**",
|
|
356
|
+
"**/vendor/**",
|
|
357
|
+
"**/dist/**",
|
|
358
|
+
"**/build/**",
|
|
359
|
+
"**/*.test.*",
|
|
360
|
+
"**/*.spec.*",
|
|
361
|
+
"**/test/**",
|
|
362
|
+
"**/tests/**",
|
|
363
|
+
"**/__tests__/**",
|
|
364
|
+
];
|
|
365
|
+
files = await glob(patterns, {
|
|
366
|
+
cwd: absolutePath,
|
|
367
|
+
ignore,
|
|
368
|
+
nodir: true,
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
// Limit files based on depth
|
|
372
|
+
const maxFiles = config.maxFilesToAnalyze ||
|
|
373
|
+
(config.analysisDepth === "quick" ? 30 :
|
|
374
|
+
config.analysisDepth === "standard" ? 75 : 150);
|
|
375
|
+
const selectedFiles = files.slice(0, maxFiles);
|
|
376
|
+
const categories = config.categories || [];
|
|
377
|
+
// Analyze each file
|
|
378
|
+
for (const file of selectedFiles) {
|
|
379
|
+
const fullPath = path.join(absolutePath, file);
|
|
380
|
+
try {
|
|
381
|
+
const content = await readFile(fullPath, "utf-8");
|
|
382
|
+
const fileFindings = analyzeFile(file, content, categories);
|
|
383
|
+
findings.push(...fileFindings);
|
|
384
|
+
filesAnalyzed++;
|
|
385
|
+
}
|
|
386
|
+
catch {
|
|
387
|
+
// Skip unreadable files
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
// Generate recommendations
|
|
391
|
+
const recommendations = [];
|
|
392
|
+
const categoryCounts = {};
|
|
393
|
+
for (const finding of findings) {
|
|
394
|
+
categoryCounts[finding.category] = (categoryCounts[finding.category] || 0) + 1;
|
|
395
|
+
}
|
|
396
|
+
if (categoryCounts["trust-boundary"]) {
|
|
397
|
+
recommendations.push(`${categoryCounts["trust-boundary"]} trust boundary issues found. Implement strict input validation at all API boundaries.`);
|
|
398
|
+
}
|
|
399
|
+
if (categoryCounts["error-handling"]) {
|
|
400
|
+
recommendations.push(`${categoryCounts["error-handling"]} error handling issues found. Review exception handling patterns and ensure proper cleanup.`);
|
|
401
|
+
}
|
|
402
|
+
if (categoryCounts["boundary-violation"]) {
|
|
403
|
+
recommendations.push(`${categoryCounts["boundary-violation"]} boundary violations found. Add explicit bounds checking for array access and arithmetic.`);
|
|
404
|
+
}
|
|
405
|
+
if (categoryCounts["business-logic"]) {
|
|
406
|
+
recommendations.push(`${categoryCounts["business-logic"]} business logic issues found. Add server-side validation for all business rules.`);
|
|
407
|
+
}
|
|
408
|
+
const detectedCategories = Object.keys(categoryCounts);
|
|
409
|
+
return {
|
|
410
|
+
filesAnalyzed,
|
|
411
|
+
findings,
|
|
412
|
+
categories: detectedCategories,
|
|
413
|
+
recommendations,
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* Convert logic flaw findings to certification findings
|
|
418
|
+
*/
|
|
419
|
+
export function logicFlawToFindings(result) {
|
|
420
|
+
return result.findings.map((f) => ({
|
|
421
|
+
id: f.id,
|
|
422
|
+
severity: f.severity,
|
|
423
|
+
category: mapLogicCategory(f.category),
|
|
424
|
+
description: `${f.title}: ${f.description}`,
|
|
425
|
+
evidence: `File: ${f.file}:${f.line}\nCode: ${f.codeSnippet.slice(0, 200)}\nImpact: ${f.impact}`,
|
|
426
|
+
confidence: f.confidence,
|
|
427
|
+
verifications: [],
|
|
428
|
+
created_at: new Date().toISOString(),
|
|
429
|
+
scanner_source: "logic-flaw-detector",
|
|
430
|
+
metadata: {
|
|
431
|
+
cweIds: f.cweIds,
|
|
432
|
+
recommendation: f.recommendation,
|
|
433
|
+
relatedFunctions: f.relatedFunctions,
|
|
434
|
+
},
|
|
435
|
+
}));
|
|
436
|
+
}
|
|
437
|
+
/**
|
|
438
|
+
* Map logic flaw category to finding category
|
|
439
|
+
*/
|
|
440
|
+
function mapLogicCategory(category) {
|
|
441
|
+
const mapping = {
|
|
442
|
+
"state-inconsistency": "logic-flaw",
|
|
443
|
+
"race-condition": "race-condition",
|
|
444
|
+
"boundary-violation": "input-validation",
|
|
445
|
+
"error-handling": "error-handling",
|
|
446
|
+
"trust-boundary": "input-validation",
|
|
447
|
+
"business-logic": "logic-flaw",
|
|
448
|
+
"null-safety": "code-quality",
|
|
449
|
+
"resource-leak": "resource-management",
|
|
450
|
+
"invariant-violation": "logic-flaw",
|
|
451
|
+
};
|
|
452
|
+
return mapping[category] || "code-quality";
|
|
453
|
+
}
|
|
454
|
+
//# sourceMappingURL=logic-flaw-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logic-flaw-detector.js","sourceRoot":"","sources":["../../src/agents/logic-flaw-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zero-Day Hunter Agent
|
|
3
|
+
*
|
|
4
|
+
* AI agent that reasons about code semantics to find novel vulnerabilities.
|
|
5
|
+
* Uses Claude to analyze code for patterns that pattern-based scanners miss.
|
|
6
|
+
*
|
|
7
|
+
* Focus areas:
|
|
8
|
+
* - Logic Flaws: Inconsistent state handling, broken assumptions
|
|
9
|
+
* - Authentication Bypasses: Ways to skip auth checks
|
|
10
|
+
* - Authorization Issues: Privilege escalation paths
|
|
11
|
+
* - Cryptographic Weaknesses: Weak algorithms, key management
|
|
12
|
+
* - Injection Vectors: Novel injection patterns beyond OWASP
|
|
13
|
+
*
|
|
14
|
+
* @module agents/zero-day-hunter
|
|
15
|
+
*/
|
|
16
|
+
import type { Severity, Finding } from "../certification/types.js";
|
|
17
|
+
/**
|
|
18
|
+
* Configuration for zero-day hunter
|
|
19
|
+
*/
|
|
20
|
+
export interface ZeroDayHunterConfig {
|
|
21
|
+
model?: "claude-sonnet-4" | "claude-opus-4" | "claude-haiku";
|
|
22
|
+
analysisDepth: "quick" | "standard" | "thorough";
|
|
23
|
+
focusAreas: ZeroDayFocusArea[];
|
|
24
|
+
maxFilesToAnalyze?: number;
|
|
25
|
+
includePatterns?: string[];
|
|
26
|
+
excludePatterns?: string[];
|
|
27
|
+
}
|
|
28
|
+
export type ZeroDayFocusArea = "auth" | "crypto" | "injection" | "logic" | "state" | "access-control" | "data-validation" | "session" | "api";
|
|
29
|
+
/**
|
|
30
|
+
* Zero-day finding with AI analysis
|
|
31
|
+
*/
|
|
32
|
+
export interface ZeroDayFinding {
|
|
33
|
+
id: string;
|
|
34
|
+
title: string;
|
|
35
|
+
description: string;
|
|
36
|
+
severity: Severity;
|
|
37
|
+
confidence: number;
|
|
38
|
+
category: ZeroDayFocusArea;
|
|
39
|
+
file: string;
|
|
40
|
+
line: number;
|
|
41
|
+
endLine?: number;
|
|
42
|
+
codeSnippet: string;
|
|
43
|
+
attackScenario: string;
|
|
44
|
+
cweIds: string[];
|
|
45
|
+
recommendation: string;
|
|
46
|
+
exploitability: "proven" | "likely" | "possible" | "theoretical";
|
|
47
|
+
aiReasoning: string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Result of zero-day hunting
|
|
51
|
+
*/
|
|
52
|
+
export interface ZeroDayHunterResult {
|
|
53
|
+
filesAnalyzed: number;
|
|
54
|
+
findings: ZeroDayFinding[];
|
|
55
|
+
analysisDepth: string;
|
|
56
|
+
focusAreas: ZeroDayFocusArea[];
|
|
57
|
+
modelUsed: string;
|
|
58
|
+
totalTokensUsed?: number;
|
|
59
|
+
recommendations: string[];
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Run zero-day hunting on a project
|
|
63
|
+
*/
|
|
64
|
+
export declare function runZeroDayHunter(projectPath: string, config: ZeroDayHunterConfig): Promise<ZeroDayHunterResult>;
|
|
65
|
+
/**
|
|
66
|
+
* Convert zero-day findings to certification findings
|
|
67
|
+
*/
|
|
68
|
+
export declare function zeroDayToFindings(result: ZeroDayHunterResult): Finding[];
|
|
69
|
+
//# sourceMappingURL=zero-day-hunter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zero-day-hunter.d.ts","sourceRoot":"","sources":["../../src/agents/zero-day-hunter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAmB,MAAM,2BAA2B,CAAC;AAMpF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,iBAAiB,GAAG,eAAe,GAAG,cAAc,CAAC;IAC7D,aAAa,EAAE,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC;IACjD,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,QAAQ,GACR,WAAW,GACX,OAAO,GACP,OAAO,GACP,gBAAgB,GAChB,iBAAiB,GACjB,SAAS,GACT,KAAK,CAAC;AAEV;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAC;IACjE,WAAW,EAAE,MAAM,CAAC;CACrB;AAeD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AA8iBD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,mBAAmB,CAAC,CA6D9B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,EAAE,CAkBxE"}
|