uneven-ai 1.1.9 → 1.2.2
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 +47 -0
- package/LICENSE +1 -1
- package/README.md +13 -14
- package/dist/application/analysis/active/helpers.d.ts +12 -0
- package/dist/application/analysis/active/helpers.d.ts.map +1 -1
- package/dist/application/analysis/active/helpers.js +78 -45
- package/dist/application/analysis/active/http.d.ts +11 -2
- package/dist/application/analysis/active/http.d.ts.map +1 -1
- package/dist/application/analysis/active/http.js +55 -41
- package/dist/application/analysis/active/index.d.ts +2 -2
- package/dist/application/analysis/active/index.d.ts.map +1 -1
- package/dist/application/analysis/active/network.d.ts +8 -2
- package/dist/application/analysis/active/network.d.ts.map +1 -1
- package/dist/application/analysis/active/network.js +52 -45
- package/dist/application/analysis/dashboard-generator.d.ts +9 -14
- package/dist/application/analysis/dashboard-generator.d.ts.map +1 -1
- package/dist/application/analysis/dashboard-generator.js +104 -233
- package/dist/application/analysis/data-analyst/analyzer.d.ts +4 -3
- package/dist/application/analysis/data-analyst/analyzer.d.ts.map +1 -1
- package/dist/application/analysis/data-analyst/analyzer.js +192 -125
- package/dist/application/analysis/data-analyst/index.d.ts +2 -2
- package/dist/application/analysis/data-analyst/index.d.ts.map +1 -1
- package/dist/application/analysis/data-analyst/index.js +1 -2
- package/dist/application/analysis/data-analyst/introspection.d.ts +1 -1
- package/dist/application/analysis/data-analyst/introspection.d.ts.map +1 -1
- package/dist/application/analysis/data-analyst/introspection.js +26 -35
- package/dist/application/analysis/data-analyst/query-gen.d.ts +1 -1
- package/dist/application/analysis/data-analyst/query-gen.d.ts.map +1 -1
- package/dist/application/analysis/data-analyst/query-gen.js +34 -48
- package/dist/application/analysis/data-security/context.d.ts +2 -2
- package/dist/application/analysis/data-security/context.d.ts.map +1 -1
- package/dist/application/analysis/data-security/context.js +13 -14
- package/dist/application/analysis/data-security/index.d.ts +2 -2
- package/dist/application/analysis/data-security/index.d.ts.map +1 -1
- package/dist/application/analysis/data-security/index.js +1 -2
- package/dist/application/analysis/dep-auditor.d.ts +10 -37
- package/dist/application/analysis/dep-auditor.d.ts.map +1 -1
- package/dist/application/analysis/dep-auditor.js +22 -71
- package/dist/application/analysis/excel-exporter.d.ts +5 -18
- package/dist/application/analysis/excel-exporter.d.ts.map +1 -1
- package/dist/application/analysis/excel-exporter.js +28 -45
- package/dist/application/analysis/llm-security-reviewer.d.ts +10 -23
- package/dist/application/analysis/llm-security-reviewer.d.ts.map +1 -1
- package/dist/application/analysis/llm-security-reviewer.js +35 -107
- package/dist/application/analysis/malware/analyzer.d.ts +4 -3
- package/dist/application/analysis/malware/analyzer.d.ts.map +1 -1
- package/dist/application/analysis/malware/analyzer.js +61 -30
- package/dist/application/analysis/malware/dep-scanner.d.ts +2 -2
- package/dist/application/analysis/malware/dep-scanner.d.ts.map +1 -1
- package/dist/application/analysis/malware/dep-scanner.js +48 -41
- package/dist/application/analysis/malware/file-scanner.d.ts +2 -2
- package/dist/application/analysis/malware/file-scanner.d.ts.map +1 -1
- package/dist/application/analysis/malware/file-scanner.js +45 -28
- package/dist/application/analysis/malware/index.d.ts +1 -1
- package/dist/application/analysis/malware/index.d.ts.map +1 -1
- package/dist/application/analysis/malware/index.js +0 -1
- package/dist/application/analysis/malware/rules.d.ts +1 -2
- package/dist/application/analysis/malware/rules.d.ts.map +1 -1
- package/dist/application/analysis/malware/rules.js +1 -125
- package/dist/application/analysis/malware/semantic.d.ts.map +1 -1
- package/dist/application/analysis/malware/semantic.js +2 -15
- package/dist/application/analysis/pentest-security-context.d.ts +7 -77
- package/dist/application/analysis/pentest-security-context.d.ts.map +1 -1
- package/dist/application/analysis/pentest-security-context.js +46 -215
- package/dist/application/analysis/report-packager.d.ts +6 -40
- package/dist/application/analysis/report-packager.d.ts.map +1 -1
- package/dist/application/analysis/report-packager.js +40 -165
- package/dist/application/analysis/sbom-generator.d.ts +12 -15
- package/dist/application/analysis/sbom-generator.d.ts.map +1 -1
- package/dist/application/analysis/sbom-generator.js +163 -161
- package/dist/application/analysis/security/analyzer.d.ts +11 -10
- package/dist/application/analysis/security/analyzer.d.ts.map +1 -1
- package/dist/application/analysis/security/analyzer.js +72 -55
- package/dist/application/analysis/security/config-scanner.d.ts +3 -3
- package/dist/application/analysis/security/config-scanner.d.ts.map +1 -1
- package/dist/application/analysis/security/config-scanner.js +56 -152
- package/dist/application/analysis/security/dependency-scanner.d.ts +3 -4
- package/dist/application/analysis/security/dependency-scanner.d.ts.map +1 -1
- package/dist/application/analysis/security/dependency-scanner.js +123 -192
- package/dist/application/analysis/security/header-scanner.d.ts +3 -3
- package/dist/application/analysis/security/header-scanner.d.ts.map +1 -1
- package/dist/application/analysis/security/header-scanner.js +96 -85
- package/dist/application/analysis/security/index.d.ts +5 -1
- package/dist/application/analysis/security/index.d.ts.map +1 -1
- package/dist/application/analysis/security/index.js +5 -2
- package/dist/application/analysis/security/owasp-scanner.d.ts +3 -3
- package/dist/application/analysis/security/owasp-scanner.d.ts.map +1 -1
- package/dist/application/analysis/security/owasp-scanner.js +25 -197
- package/dist/application/analysis/security/secrets-scanner.d.ts +5 -4
- package/dist/application/analysis/security/secrets-scanner.d.ts.map +1 -1
- package/dist/application/analysis/security/secrets-scanner.js +34 -124
- package/dist/application/analysis/security-reporter.d.ts +7 -16
- package/dist/application/analysis/security-reporter.d.ts.map +1 -1
- package/dist/application/analysis/security-reporter.js +32 -228
- package/dist/application/analysis/supply-chain-auditor.d.ts +11 -26
- package/dist/application/analysis/supply-chain-auditor.d.ts.map +1 -1
- package/dist/application/analysis/supply-chain-auditor.js +106 -198
- package/dist/application/development/analyst-job-manager.d.ts +5 -16
- package/dist/application/development/analyst-job-manager.d.ts.map +1 -1
- package/dist/application/development/analyst-job-manager.js +26 -6
- package/dist/application/development/fix/apply.d.ts +5 -1
- package/dist/application/development/fix/apply.d.ts.map +1 -1
- package/dist/application/development/fix/apply.js +76 -102
- package/dist/application/development/fix/context.d.ts +5 -49
- package/dist/application/development/fix/context.d.ts.map +1 -1
- package/dist/application/development/fix/context.js +5 -1
- package/dist/application/development/fix/index.d.ts +6 -0
- package/dist/application/development/fix/index.d.ts.map +1 -1
- package/dist/application/development/fix/index.js +9 -2
- package/dist/application/development/fix/strategies/go.d.ts +3 -0
- package/dist/application/development/fix/strategies/go.d.ts.map +1 -0
- package/dist/application/development/fix/strategies/go.js +67 -0
- package/dist/application/development/fix/strategies/java.d.ts +3 -0
- package/dist/application/development/fix/strategies/java.d.ts.map +1 -0
- package/dist/application/development/fix/strategies/java.js +80 -0
- package/dist/application/development/fix/strategies/legacy.d.ts +3 -0
- package/dist/application/development/fix/strategies/legacy.d.ts.map +1 -0
- package/dist/application/development/fix/strategies/legacy.js +32 -0
- package/dist/application/development/fix/strategies/linter.d.ts +3 -0
- package/dist/application/development/fix/strategies/linter.d.ts.map +1 -0
- package/dist/application/development/fix/strategies/linter.js +29 -0
- package/dist/application/development/fix/strategies/markup.d.ts +3 -0
- package/dist/application/development/fix/strategies/markup.d.ts.map +1 -0
- package/dist/application/development/fix/strategies/markup.js +53 -0
- package/dist/application/development/fix/strategies/node.d.ts +3 -0
- package/dist/application/development/fix/strategies/node.d.ts.map +1 -0
- package/dist/application/development/fix/strategies/node.js +52 -0
- package/dist/application/development/fix/strategies/php.d.ts +3 -0
- package/dist/application/development/fix/strategies/php.d.ts.map +1 -0
- package/dist/application/development/fix/strategies/php.js +62 -0
- package/dist/application/development/fix/strategies/python.d.ts +3 -0
- package/dist/application/development/fix/strategies/python.d.ts.map +1 -0
- package/dist/application/development/fix/strategies/python.js +41 -0
- package/dist/application/development/fix/strategies/ruby.d.ts +3 -0
- package/dist/application/development/fix/strategies/ruby.d.ts.map +1 -0
- package/dist/application/development/fix/strategies/ruby.js +71 -0
- package/dist/application/development/fix/strategies/runtime.d.ts +3 -0
- package/dist/application/development/fix/strategies/runtime.d.ts.map +1 -0
- package/dist/application/development/fix/strategies/runtime.js +29 -0
- package/dist/application/development/fix/strategies/rust.d.ts +3 -0
- package/dist/application/development/fix/strategies/rust.d.ts.map +1 -0
- package/dist/application/development/fix/strategies/rust.js +34 -0
- package/dist/application/development/fix/strategies/typescript.d.ts +3 -0
- package/dist/application/development/fix/strategies/typescript.d.ts.map +1 -0
- package/dist/application/development/fix/strategies/typescript.js +45 -0
- package/dist/application/development/fix/strategy-registry.d.ts +14 -0
- package/dist/application/development/fix/strategy-registry.d.ts.map +1 -0
- package/dist/application/development/fix/strategy-registry.js +46 -0
- package/dist/application/development/fix/suggest.d.ts +3 -0
- package/dist/application/development/fix/suggest.d.ts.map +1 -1
- package/dist/application/development/fix/suggest.js +33 -62
- package/dist/application/development/test-runner.d.ts +9 -38
- package/dist/application/development/test-runner.d.ts.map +1 -1
- package/dist/application/development/test-runner.js +41 -286
- package/dist/application/development/testing/detector.d.ts +18 -0
- package/dist/application/development/testing/detector.d.ts.map +1 -0
- package/dist/application/development/testing/detector.js +113 -0
- package/dist/application/development/testing/executor.d.ts +16 -0
- package/dist/application/development/testing/executor.d.ts.map +1 -0
- package/dist/application/development/testing/executor.js +58 -0
- package/dist/application/development/testing/parser.d.ts +21 -0
- package/dist/application/development/testing/parser.d.ts.map +1 -0
- package/dist/application/development/testing/parser.js +99 -0
- package/dist/application/notifications/formatter-registry.d.ts +17 -0
- package/dist/application/notifications/formatter-registry.d.ts.map +1 -0
- package/dist/application/notifications/formatter-registry.js +32 -0
- package/dist/application/notifications/formatters/discord.d.ts +3 -0
- package/dist/application/notifications/formatters/discord.d.ts.map +1 -0
- package/dist/application/notifications/formatters/discord.js +31 -0
- package/dist/application/notifications/formatters/generic.d.ts +3 -0
- package/dist/application/notifications/formatters/generic.d.ts.map +1 -0
- package/dist/application/notifications/formatters/generic.js +17 -0
- package/dist/application/notifications/formatters/slack.d.ts +3 -0
- package/dist/application/notifications/formatters/slack.d.ts.map +1 -0
- package/dist/application/notifications/formatters/slack.js +40 -0
- package/dist/application/notifications/webhook-notifier.d.ts +7 -35
- package/dist/application/notifications/webhook-notifier.d.ts.map +1 -1
- package/dist/application/notifications/webhook-notifier.js +26 -124
- package/dist/application/orchestration/engine/ask/brain.d.ts +14 -0
- package/dist/application/orchestration/engine/ask/brain.d.ts.map +1 -0
- package/dist/application/orchestration/engine/ask/brain.js +44 -0
- package/dist/application/orchestration/engine/ask/context-assembler.d.ts +23 -0
- package/dist/application/orchestration/engine/ask/context-assembler.d.ts.map +1 -0
- package/dist/application/orchestration/engine/ask/context-assembler.js +125 -0
- package/dist/application/orchestration/engine/ask/prompts.d.ts +6 -0
- package/dist/application/orchestration/engine/ask/prompts.d.ts.map +1 -0
- package/dist/application/orchestration/engine/ask/prompts.js +24 -0
- package/dist/application/orchestration/engine/ask.d.ts +5 -5
- package/dist/application/orchestration/engine/ask.d.ts.map +1 -1
- package/dist/application/orchestration/engine/ask.js +35 -161
- package/dist/application/orchestration/engine/context.d.ts +6 -3
- package/dist/application/orchestration/engine/context.d.ts.map +1 -1
- package/dist/application/orchestration/engine/context.js +2 -25
- package/dist/application/orchestration/engine/error-handler.d.ts +16 -6
- package/dist/application/orchestration/engine/error-handler.d.ts.map +1 -1
- package/dist/application/orchestration/engine/error-handler.js +71 -189
- package/dist/application/orchestration/engine/file/content-extractor.d.ts +22 -0
- package/dist/application/orchestration/engine/file/content-extractor.d.ts.map +1 -0
- package/dist/application/orchestration/engine/file/content-extractor.js +54 -0
- package/dist/application/orchestration/engine/file/file-scanner.d.ts +14 -0
- package/dist/application/orchestration/engine/file/file-scanner.d.ts.map +1 -0
- package/dist/application/orchestration/engine/file/file-scanner.js +66 -0
- package/dist/application/orchestration/engine/file/readers/csv-reader.d.ts +8 -0
- package/dist/application/orchestration/engine/file/readers/csv-reader.d.ts.map +1 -0
- package/dist/application/orchestration/engine/file/readers/csv-reader.js +53 -0
- package/dist/application/orchestration/engine/file/readers/excel-reader.d.ts +9 -0
- package/dist/application/orchestration/engine/file/readers/excel-reader.d.ts.map +1 -0
- package/dist/application/orchestration/engine/file/readers/excel-reader.js +63 -0
- package/dist/application/orchestration/engine/file/readers/pdf-reader.d.ts +8 -0
- package/dist/application/orchestration/engine/file/readers/pdf-reader.d.ts.map +1 -0
- package/dist/application/orchestration/engine/file/readers/pdf-reader.js +22 -0
- package/dist/application/orchestration/engine/file/readers/word-reader.d.ts +8 -0
- package/dist/application/orchestration/engine/file/readers/word-reader.d.ts.map +1 -0
- package/dist/application/orchestration/engine/file/readers/word-reader.js +22 -0
- package/dist/application/orchestration/engine/file-reader.d.ts +6 -6
- package/dist/application/orchestration/engine/file-reader.d.ts.map +1 -1
- package/dist/application/orchestration/engine/file-reader.js +50 -99
- package/dist/application/orchestration/engine/fix/fix-dispatcher.d.ts +21 -0
- package/dist/application/orchestration/engine/fix/fix-dispatcher.d.ts.map +1 -0
- package/dist/application/orchestration/engine/fix/fix-dispatcher.js +106 -0
- package/dist/application/orchestration/engine/fix/integrity-guard.d.ts +15 -0
- package/dist/application/orchestration/engine/fix/integrity-guard.d.ts.map +1 -0
- package/dist/application/orchestration/engine/fix/integrity-guard.js +29 -0
- package/dist/application/orchestration/engine/fix/user-prompter.d.ts +13 -0
- package/dist/application/orchestration/engine/fix/user-prompter.d.ts.map +1 -0
- package/dist/application/orchestration/engine/fix/user-prompter.js +51 -0
- package/dist/application/orchestration/engine/format-readers.d.ts +11 -1
- package/dist/application/orchestration/engine/format-readers.d.ts.map +1 -1
- package/dist/application/orchestration/engine/format-readers.js +22 -130
- package/dist/application/orchestration/engine/index/processors/database-processor.d.ts +14 -0
- package/dist/application/orchestration/engine/index/processors/database-processor.d.ts.map +1 -0
- package/dist/application/orchestration/engine/index/processors/database-processor.js +57 -0
- package/dist/application/orchestration/engine/index/processors/file-processor.d.ts +19 -0
- package/dist/application/orchestration/engine/index/processors/file-processor.d.ts.map +1 -0
- package/dist/application/orchestration/engine/index/processors/file-processor.js +66 -0
- package/dist/application/orchestration/engine/index/processors/web-processor.d.ts +12 -0
- package/dist/application/orchestration/engine/index/processors/web-processor.d.ts.map +1 -0
- package/dist/application/orchestration/engine/index/processors/web-processor.js +35 -0
- package/dist/application/orchestration/engine/index/utils.d.ts +32 -0
- package/dist/application/orchestration/engine/index/utils.d.ts.map +1 -0
- package/dist/application/orchestration/engine/index/utils.js +69 -0
- package/dist/application/orchestration/engine/indexer.d.ts.map +1 -1
- package/dist/application/orchestration/engine/indexer.js +29 -198
- package/dist/application/orchestration/engine/lifecycle.d.ts.map +1 -1
- package/dist/application/orchestration/engine/lifecycle.js +49 -47
- package/dist/application/orchestration/engine/pentest.d.ts.map +1 -1
- package/dist/application/orchestration/engine/pentest.js +38 -61
- package/dist/application/orchestration/engine/services/checkpoint/checkpoint-service.d.ts +54 -0
- package/dist/application/orchestration/engine/services/checkpoint/checkpoint-service.d.ts.map +1 -0
- package/dist/application/orchestration/engine/services/checkpoint/checkpoint-service.js +101 -0
- package/dist/application/orchestration/engine/watcher.d.ts.map +1 -1
- package/dist/application/orchestration/engine/watcher.js +29 -30
- package/dist/application/orchestration/incremental-index.d.ts.map +1 -1
- package/dist/application/orchestration/incremental-index.js +10 -0
- package/dist/application/orchestration/knowledge-retriever.d.ts +0 -35
- package/dist/application/orchestration/knowledge-retriever.d.ts.map +1 -1
- package/dist/application/orchestration/knowledge-retriever.js +13 -107
- package/dist/application/orchestration/retriever-utils.d.ts +13 -0
- package/dist/application/orchestration/retriever-utils.d.ts.map +1 -0
- package/dist/application/orchestration/retriever-utils.js +37 -0
- package/dist/application/remote-shell/server.d.ts +4 -12
- package/dist/application/remote-shell/server.d.ts.map +1 -1
- package/dist/application/remote-shell/server.js +25 -19
- package/dist/cli/commands/analyze/batch.d.ts +1 -2
- package/dist/cli/commands/analyze/batch.d.ts.map +1 -1
- package/dist/cli/commands/analyze/batch.js +30 -33
- package/dist/cli/commands/analyze/command.d.ts.map +1 -1
- package/dist/cli/commands/analyze/command.js +7 -7
- package/dist/cli/commands/ask.d.ts +0 -3
- package/dist/cli/commands/ask.d.ts.map +1 -1
- package/dist/cli/commands/ask.js +16 -26
- package/dist/cli/commands/askf.d.ts +0 -26
- package/dist/cli/commands/askf.d.ts.map +1 -1
- package/dist/cli/commands/askf.js +7 -66
- package/dist/cli/commands/chat.d.ts +0 -12
- package/dist/cli/commands/chat.d.ts.map +1 -1
- package/dist/cli/commands/chat.js +5 -24
- package/dist/cli/commands/ci.d.ts +0 -13
- package/dist/cli/commands/ci.d.ts.map +1 -1
- package/dist/cli/commands/ci.js +26 -58
- package/dist/cli/commands/diff.d.ts +0 -19
- package/dist/cli/commands/diff.d.ts.map +1 -1
- package/dist/cli/commands/diff.js +0 -26
- package/dist/cli/commands/docs.d.ts +0 -22
- package/dist/cli/commands/docs.d.ts.map +1 -1
- package/dist/cli/commands/docs.js +1 -27
- package/dist/cli/commands/explain.d.ts +0 -19
- package/dist/cli/commands/explain.d.ts.map +1 -1
- package/dist/cli/commands/explain.js +3 -28
- package/dist/cli/commands/index.d.ts +0 -3
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +2 -21
- package/dist/cli/commands/info.d.ts.map +1 -1
- package/dist/cli/commands/info.js +10 -12
- package/dist/cli/commands/init/command.d.ts.map +1 -1
- package/dist/cli/commands/init/command.js +33 -26
- package/dist/cli/commands/init/config-builder.d.ts +2 -2
- package/dist/cli/commands/init/config-builder.d.ts.map +1 -1
- package/dist/cli/commands/init/config-builder.js +6 -4
- package/dist/cli/commands/init/constants.d.ts +3 -5
- package/dist/cli/commands/init/constants.d.ts.map +1 -1
- package/dist/cli/commands/init/constants.js +124 -7
- package/dist/cli/commands/init/downloader.d.ts.map +1 -1
- package/dist/cli/commands/init/downloader.js +27 -39
- package/dist/cli/commands/init/model-selector.d.ts +3 -0
- package/dist/cli/commands/init/model-selector.d.ts.map +1 -0
- package/dist/cli/commands/init/model-selector.js +22 -0
- package/dist/cli/commands/init/types.d.ts +14 -0
- package/dist/cli/commands/init/types.d.ts.map +1 -0
- package/dist/cli/commands/license.d.ts +0 -7
- package/dist/cli/commands/license.d.ts.map +1 -1
- package/dist/cli/commands/license.js +0 -7
- package/dist/cli/commands/log.d.ts +0 -3
- package/dist/cli/commands/log.d.ts.map +1 -1
- package/dist/cli/commands/log.js +1 -4
- package/dist/cli/commands/pentest.d.ts +0 -3
- package/dist/cli/commands/pentest.d.ts.map +1 -1
- package/dist/cli/commands/pentest.js +39 -43
- package/dist/cli/commands/remote-shell.d.ts +0 -10
- package/dist/cli/commands/remote-shell.d.ts.map +1 -1
- package/dist/cli/commands/remote-shell.js +1 -13
- package/dist/cli/commands/reset.d.ts +0 -3
- package/dist/cli/commands/reset.d.ts.map +1 -1
- package/dist/cli/commands/reset.js +0 -8
- package/dist/cli/commands/restore.d.ts +0 -6
- package/dist/cli/commands/restore.d.ts.map +1 -1
- package/dist/cli/commands/restore.js +0 -10
- package/dist/cli/commands/review.d.ts +0 -15
- package/dist/cli/commands/review.d.ts.map +1 -1
- package/dist/cli/commands/review.js +3 -25
- package/dist/cli/commands/scan.d.ts +0 -3
- package/dist/cli/commands/scan.d.ts.map +1 -1
- package/dist/cli/commands/scan.js +10 -22
- package/dist/cli/commands/shell.d.ts +0 -14
- package/dist/cli/commands/shell.d.ts.map +1 -1
- package/dist/cli/commands/shell.js +12 -38
- package/dist/cli/commands/start.d.ts +0 -5
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +0 -7
- package/dist/cli/commands/test-cmd.d.ts +0 -6
- package/dist/cli/commands/test-cmd.d.ts.map +1 -1
- package/dist/cli/commands/test-cmd.js +0 -6
- package/dist/cli/commands/undo.d.ts +0 -6
- package/dist/cli/commands/undo.d.ts.map +1 -1
- package/dist/cli/commands/undo.js +1 -11
- package/dist/cli/commands/watch.d.ts +0 -25
- package/dist/cli/commands/watch.d.ts.map +1 -1
- package/dist/cli/commands/watch.js +1 -29
- package/dist/cli/help.js +1 -1
- package/dist/cli/shell/brain-classifier.d.ts +0 -20
- package/dist/cli/shell/brain-classifier.d.ts.map +1 -1
- package/dist/cli/shell/brain-classifier.js +8 -24
- package/dist/cli/shell/intent-classifier.d.ts +0 -10
- package/dist/cli/shell/intent-classifier.d.ts.map +1 -1
- package/dist/cli/shell/intent-classifier.js +38 -27
- package/dist/cli/theme.js +1 -1
- package/dist/domain/entities/session/constants.d.ts +1 -1
- package/dist/domain/entities/session/constants.js +1 -1
- package/dist/domain/entities/session/lock-manager.d.ts.map +1 -1
- package/dist/domain/entities/session/lock-manager.js +7 -4
- package/dist/domain/entities/session/manager.d.ts +0 -14
- package/dist/domain/entities/session/manager.d.ts.map +1 -1
- package/dist/domain/entities/session/manager.js +0 -24
- package/dist/domain/entities/snapshot.d.ts +0 -36
- package/dist/domain/entities/snapshot.d.ts.map +1 -1
- package/dist/domain/entities/snapshot.js +1 -42
- package/dist/domain/services/chunker.d.ts +0 -18
- package/dist/domain/services/chunker.d.ts.map +1 -1
- package/dist/domain/services/chunker.js +0 -29
- package/dist/domain/services/hardware-detector.d.ts +0 -9
- package/dist/domain/services/hardware-detector.d.ts.map +1 -1
- package/dist/domain/services/hardware-detector.js +1 -13
- package/dist/domain/services/index-planner.d.ts +0 -20
- package/dist/domain/services/index-planner.d.ts.map +1 -1
- package/dist/domain/services/index-planner.js +49 -43
- package/dist/domain/services/resource-guardian.d.ts +0 -15
- package/dist/domain/services/resource-guardian.d.ts.map +1 -1
- package/dist/domain/services/resource-guardian.js +5 -24
- package/dist/domain/services/safety-guard.d.ts +0 -16
- package/dist/domain/services/safety-guard.d.ts.map +1 -1
- package/dist/domain/services/safety-guard.js +4 -19
- package/dist/infrastructure/adapters/bridge.d.ts +0 -12
- package/dist/infrastructure/adapters/bridge.d.ts.map +1 -1
- package/dist/infrastructure/adapters/bridge.js +10 -33
- package/dist/infrastructure/adapters/providers/claude.js +1 -1
- package/dist/infrastructure/adapters/providers/gemini.js +1 -1
- package/dist/infrastructure/adapters/providers/ollama.js +1 -1
- package/dist/infrastructure/adapters/providers/openai.js +2 -2
- package/dist/infrastructure/io/db-loader.d.ts +0 -14
- package/dist/infrastructure/io/db-loader.d.ts.map +1 -1
- package/dist/infrastructure/io/db-loader.js +4 -18
- package/dist/infrastructure/io/file-watcher.d.ts +0 -22
- package/dist/infrastructure/io/file-watcher.d.ts.map +1 -1
- package/dist/infrastructure/io/file-watcher.js +3 -21
- package/dist/infrastructure/io/git-manager.d.ts +0 -52
- package/dist/infrastructure/io/git-manager.d.ts.map +1 -1
- package/dist/infrastructure/io/git-manager.js +3 -60
- package/dist/infrastructure/io/logger/index.d.ts +2 -49
- package/dist/infrastructure/io/logger/index.d.ts.map +1 -1
- package/dist/infrastructure/io/logger/index.js +12 -51
- package/dist/infrastructure/io/process-watcher.d.ts +1 -30
- package/dist/infrastructure/io/process-watcher.d.ts.map +1 -1
- package/dist/infrastructure/io/process-watcher.js +41 -56
- package/dist/infrastructure/io/web-scraper.d.ts +0 -30
- package/dist/infrastructure/io/web-scraper.d.ts.map +1 -1
- package/dist/infrastructure/io/web-scraper.js +10 -64
- package/dist/infrastructure/utils/config-loader.d.ts +0 -4
- package/dist/infrastructure/utils/config-loader.d.ts.map +1 -1
- package/dist/infrastructure/utils/config-loader.js +18 -7
- package/dist/infrastructure/utils/dossier.d.ts +20 -0
- package/dist/infrastructure/utils/dossier.d.ts.map +1 -0
- package/dist/infrastructure/utils/dossier.js +91 -0
- package/dist/infrastructure/utils/error-parser/index.d.ts +2 -2
- package/dist/infrastructure/utils/error-parser/index.d.ts.map +1 -1
- package/dist/infrastructure/utils/file-constants.d.ts +10 -0
- package/dist/infrastructure/utils/file-constants.d.ts.map +1 -0
- package/dist/infrastructure/utils/file-constants.js +31 -0
- package/dist/interfaces/active-analysis.d.ts +39 -0
- package/dist/interfaces/active-analysis.d.ts.map +1 -0
- package/dist/interfaces/analyst.d.ts +22 -0
- package/dist/interfaces/analyst.d.ts.map +1 -0
- package/dist/interfaces/common.d.ts +49 -0
- package/dist/interfaces/common.d.ts.map +1 -0
- package/dist/interfaces/common.js +4 -0
- package/dist/interfaces/data-analyst.d.ts +56 -0
- package/dist/interfaces/data-analyst.d.ts.map +1 -0
- package/dist/interfaces/data-analyst.js +4 -0
- package/dist/interfaces/data-security.d.ts +44 -0
- package/dist/interfaces/data-security.d.ts.map +1 -0
- package/dist/interfaces/data-security.js +4 -0
- package/dist/interfaces/dependency-audit.d.ts +22 -0
- package/dist/interfaces/dependency-audit.d.ts.map +1 -0
- package/dist/interfaces/dependency-audit.js +4 -0
- package/dist/interfaces/errors.d.ts +15 -0
- package/dist/interfaces/errors.d.ts.map +1 -0
- package/dist/interfaces/errors.js +1 -0
- package/dist/interfaces/excel-export.d.ts +18 -0
- package/dist/interfaces/excel-export.d.ts.map +1 -0
- package/dist/interfaces/excel-export.js +4 -0
- package/dist/interfaces/fix-engine.d.ts +56 -0
- package/dist/interfaces/fix-engine.d.ts.map +1 -0
- package/dist/interfaces/fix-engine.js +1 -0
- package/dist/interfaces/index.d.ts +18 -0
- package/dist/interfaces/index.d.ts.map +1 -0
- package/dist/interfaces/index.js +17 -0
- package/dist/{application/analysis/malware/types.d.ts → interfaces/malware-analysis.d.ts} +22 -10
- package/dist/interfaces/malware-analysis.d.ts.map +1 -0
- package/dist/interfaces/malware-analysis.js +1 -0
- package/dist/interfaces/notifications.d.ts +25 -0
- package/dist/interfaces/notifications.d.ts.map +1 -0
- package/dist/interfaces/notifications.js +1 -0
- package/dist/interfaces/pentest-security.d.ts +33 -0
- package/dist/interfaces/pentest-security.d.ts.map +1 -0
- package/dist/interfaces/pentest-security.js +4 -0
- package/dist/interfaces/report-packaging.d.ts +18 -0
- package/dist/interfaces/report-packaging.d.ts.map +1 -0
- package/dist/interfaces/report-packaging.js +4 -0
- package/dist/interfaces/reporting.d.ts +15 -0
- package/dist/interfaces/reporting.d.ts.map +1 -0
- package/dist/interfaces/reporting.js +4 -0
- package/dist/interfaces/sbom.d.ts +81 -0
- package/dist/interfaces/sbom.d.ts.map +1 -0
- package/dist/interfaces/sbom.js +4 -0
- package/dist/interfaces/security-review.d.ts +13 -0
- package/dist/interfaces/security-review.d.ts.map +1 -0
- package/dist/interfaces/security-review.js +1 -0
- package/dist/interfaces/testing.d.ts +27 -0
- package/dist/interfaces/testing.d.ts.map +1 -0
- package/dist/interfaces/testing.js +1 -0
- package/dist/utils/ai-prompts.d.ts +34 -0
- package/dist/utils/ai-prompts.d.ts.map +1 -0
- package/dist/utils/ai-prompts.js +99 -0
- package/dist/utils/dashboard-helpers.d.ts +18 -0
- package/dist/utils/dashboard-helpers.d.ts.map +1 -0
- package/dist/utils/dashboard-helpers.js +52 -0
- package/dist/utils/dashboard-templates.d.ts +27 -0
- package/dist/utils/dashboard-templates.d.ts.map +1 -0
- package/dist/utils/dashboard-templates.js +233 -0
- package/dist/utils/db-queries.d.ts +27 -0
- package/dist/utils/db-queries.d.ts.map +1 -0
- package/dist/utils/db-queries.js +68 -0
- package/dist/utils/dependency-helpers.d.ts +18 -0
- package/dist/utils/dependency-helpers.d.ts.map +1 -0
- package/dist/utils/dependency-helpers.js +60 -0
- package/dist/utils/excel-helpers.d.ts +13 -0
- package/dist/utils/excel-helpers.d.ts.map +1 -0
- package/dist/utils/excel-helpers.js +30 -0
- package/dist/utils/fix-helpers.d.ts +14 -0
- package/dist/utils/fix-helpers.d.ts.map +1 -0
- package/dist/utils/fix-helpers.js +40 -0
- package/dist/utils/malware-definitions.d.ts +8 -0
- package/dist/utils/malware-definitions.d.ts.map +1 -0
- package/dist/utils/malware-definitions.js +133 -0
- package/dist/utils/ports.d.ts +7 -0
- package/dist/utils/ports.d.ts.map +1 -0
- package/dist/{application/analysis/active/context.js → utils/ports.js} +14 -46
- package/dist/utils/sbom-helpers.d.ts +45 -0
- package/dist/utils/sbom-helpers.d.ts.map +1 -0
- package/dist/utils/sbom-helpers.js +119 -0
- package/dist/utils/security-definitions.d.ts +121 -0
- package/dist/utils/security-definitions.d.ts.map +1 -0
- package/dist/utils/security-definitions.js +538 -0
- package/dist/utils/security-helpers.d.ts +84 -0
- package/dist/utils/security-helpers.d.ts.map +1 -0
- package/dist/utils/security-helpers.js +348 -0
- package/package.json +4 -1
- package/prebuilds/darwin-arm64/uneven_core.node +0 -0
- package/prebuilds/linux-arm64/uneven_core.node +0 -0
- package/prebuilds/linux-x64/uneven_core.node +0 -0
- package/prebuilds/win32-x64/uneven_core.node +0 -0
- package/types/index.d.ts +0 -1
- package/dist/application/analysis/active/context.d.ts +0 -32
- package/dist/application/analysis/active/context.d.ts.map +0 -1
- package/dist/application/analysis/data-analyst/types.d.ts +0 -25
- package/dist/application/analysis/data-analyst/types.d.ts.map +0 -1
- package/dist/application/analysis/data-analyst/utils.d.ts +0 -11
- package/dist/application/analysis/data-analyst/utils.d.ts.map +0 -1
- package/dist/application/analysis/data-analyst/utils.js +0 -73
- package/dist/application/analysis/data-security/defaults.d.ts +0 -7
- package/dist/application/analysis/data-security/defaults.d.ts.map +0 -1
- package/dist/application/analysis/data-security/defaults.js +0 -51
- package/dist/application/analysis/data-security/types.d.ts +0 -26
- package/dist/application/analysis/data-security/types.d.ts.map +0 -1
- package/dist/application/analysis/data-security/utils.d.ts +0 -2
- package/dist/application/analysis/data-security/utils.d.ts.map +0 -1
- package/dist/application/analysis/data-security/utils.js +0 -3
- package/dist/application/analysis/malware/types.d.ts.map +0 -1
- package/dist/application/analysis/malware/utils.d.ts +0 -14
- package/dist/application/analysis/malware/utils.d.ts.map +0 -1
- package/dist/application/analysis/malware/utils.js +0 -75
- package/dist/application/analysis/security/types.d.ts +0 -21
- package/dist/application/analysis/security/types.d.ts.map +0 -1
- package/dist/application/analysis/security/types.js +0 -15
- package/dist/application/analysis/security/utils.d.ts +0 -26
- package/dist/application/analysis/security/utils.d.ts.map +0 -1
- package/dist/application/analysis/security/utils.js +0 -97
- package/dist/application/development/fix/patterns-compiled.d.ts +0 -12
- package/dist/application/development/fix/patterns-compiled.d.ts.map +0 -1
- package/dist/application/development/fix/patterns-compiled.js +0 -189
- package/dist/application/development/fix/patterns-runtime.d.ts +0 -10
- package/dist/application/development/fix/patterns-runtime.d.ts.map +0 -1
- package/dist/application/development/fix/patterns-runtime.js +0 -344
- /package/dist/{application/analysis/data-analyst → cli/commands/init}/types.js +0 -0
- /package/dist/{application/analysis/data-security/types.js → interfaces/active-analysis.js} +0 -0
- /package/dist/{application/analysis/malware/types.js → interfaces/analyst.js} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,53 @@ All notable changes to Uneven AI will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.2.2] - 2026-05-02
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **Local model path** — After `uneven-ai init`, commands such as `index` and `ask` failed with `Cannot open ./models/…: No such file or directory`. The Rust engine was resolving model files relative to `./models/` while the installer writes them to `.uneven/models/`. Both the inference loader (GGUF + tokenizer) and the embeddings module now read from `.uneven/models/` consistently.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## [1.2.1] - 2026-05-01
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- **Auto-fix rollback** — In certain error scenarios the engine would skip the rollback step, leaving partially applied changes on disk. Rollback is now reliably triggered on every failure path.
|
|
21
|
+
- **Shell crash on fix confirmation timeout** — When the auto-fix confirmation prompt timed out, Node.js could throw an unhandled rejection and exit. The prompt now degrades gracefully.
|
|
22
|
+
- **Fix engine context accuracy** — The code context sent to the AI for generating fixes was occasionally pulled from the wrong region of the file. The engine now uses an accurate line-based extraction window.
|
|
23
|
+
- **AI confidence out of range** — The fix engine could accept confidence scores outside the valid 0–1 range, skewing fix prioritization. Scores are now clamped correctly.
|
|
24
|
+
- **Knowledge Map file routing** — Files were occasionally matched incorrectly when two files share a similar suffix (e.g. `user.ts` and `power-user.ts`). Path boundary matching is now enforced.
|
|
25
|
+
- **Knowledge Map multi-line response parsing** — When the AI returned a formatted (multi-line) file list, the parser silently dropped all entries. Both compact and formatted responses are now handled correctly.
|
|
26
|
+
- **Knowledge Map path corruption** — A stray trailing comma in the fallback parser produced unresolvable paths, causing context retrieval to fail silently.
|
|
27
|
+
- **Knowledge Map context overflow** — On large projects with many indexed files, the full file list could overflow the AI context window. The map is now capped at 800 entries with a clear truncation notice.
|
|
28
|
+
- **Watcher stability** — An uncaught error during a proactive scan could bring down the file watcher. Errors are now isolated and logged without interrupting the watch loop.
|
|
29
|
+
- **Index integrity** — A failed file read during indexing could record an empty hash, causing the file to be treated as unchanged on the next run. Affected files are now skipped until readable.
|
|
30
|
+
- **Remote shell hardening** — Improved robustness of the built-in remote shell endpoint.
|
|
31
|
+
- **Session lock reliability** — A lock-timeout error could be silently swallowed under concurrent load. Errors are now surfaced to the logger.
|
|
32
|
+
- **Local model loader stability** — Under concurrent usage, the local model could be loaded more than once simultaneously. Loader now serializes concurrent requests correctly.
|
|
33
|
+
- **Symlink loop protection** — Directory indexing could enter an infinite loop when the project contained circular symbolic links. Symlinked directories are now skipped during traversal.
|
|
34
|
+
- **Large file context cap** — Files without a size cap could saturate the AI context window when used as reference material. Content is now capped at 8 000 characters with a truncation notice.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## [1.2.0] - 2026-04-29
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
- **Global Strategy Architecture**: Introduced `src/utils` and `src/interfaces` to centralize shared constants and contracts, significantly reducing circular dependencies and improving modularity.
|
|
42
|
+
- **Data Analyst Strategy Pattern**: Refactored the monolithic `analyzer.ts` into a decoupled architecture using a Strategy pattern. Database-specific logic is now isolated in `KnexAdapter` and `MongoAdapter`.
|
|
43
|
+
- **Centralized Security Definitions**: Created `src/utils/security-definitions.ts` to host all security constants (`PORTS`, `REQUIRED_HEADERS`) used by the analysis engines.
|
|
44
|
+
- **Legal Compliance Flow (Frontend)**: Implemented `LegalGateModal` with dynamic localized links (BRL/PT vs USD/EN) and mandatory consent interceptor in the pricing flow.
|
|
45
|
+
|
|
46
|
+
### Changed
|
|
47
|
+
- **Pentester Modernization**: Deep refactoring of the `active` analysis module. Procedural logic in `helpers.ts`, `http.ts`, and `network.ts` replaced with modern asynchronous patterns and functional programming (Map/Filter).
|
|
48
|
+
- **Interface Segregation**: Moved all domain-specific interfaces to `src/interfaces/data-analyst.ts` and `src/interfaces/active-analysis.ts`.
|
|
49
|
+
- **Infrastructure Cleanup**: Streamlined core context files (`context.ts`) by removing heavy data definitions and focusing on runtime configuration.
|
|
50
|
+
|
|
51
|
+
### Fixed
|
|
52
|
+
- **Mobile UX (Frontend)**: Resolved horizontal overflow issues hiding the mobile menu; fixed logo font-size and spacing constraints for small screens.
|
|
53
|
+
- **CSS Syntax Error**: Corrected invalid `items-center` property in the Legal Modal to proper `align-items: center`.
|
|
54
|
+
|
|
8
55
|
## [1.1.9] - 2026-04-27
|
|
9
56
|
|
|
10
57
|
### Added
|
package/LICENSE
CHANGED
|
@@ -24,7 +24,7 @@ contato@rileysolucoes.com.br
|
|
|
24
24
|
|
|
25
25
|
---
|
|
26
26
|
|
|
27
|
-
Uneven AI's "
|
|
27
|
+
Uneven AI's "Snatchy" agent is powered by Llama 3.2. Llama 3.2 is licensed under the Llama 3.2 Community License, Copyright © Meta Platforms, Inc. All Rights Reserved.
|
|
28
28
|
|
|
29
29
|
---
|
|
30
30
|
|
package/README.md
CHANGED
|
@@ -3,20 +3,19 @@
|
|
|
3
3
|

|
|
4
4
|

|
|
5
5
|

|
|
6
|
-

|
|
7
6
|
|
|
8
7
|
> **Autonomous local development agent for Node.js.**
|
|
9
8
|
>
|
|
10
|
-
> Runs on your machine. Meets **
|
|
9
|
+
> Runs on your machine. Meets **Snatchy**, your autonomous senior engineer. She indexes your codebase, watches running terminals in real time, **autonomously fixes errors**, scans for **malicious code**, performs **security testing**, and manages your project via a **conversational shell**.
|
|
11
10
|
>
|
|
12
|
-
> Use your own API key or run 100% offline with **
|
|
11
|
+
> Use your own API key or run 100% offline with **Snatchy**. No telemetry. No cloud lock-in.
|
|
13
12
|
|
|
14
13
|
---
|
|
15
14
|
|
|
16
15
|
## Features
|
|
17
16
|
|
|
18
|
-
- **💬
|
|
19
|
-
- **🧠 Local Sovereignty** — Powered by **
|
|
17
|
+
- **💬 Snatchy Shell** — Run `uneven-ai` to talk with **Snatchy**, your local senior agent. She understands your intent in any language and dispatches commands automatically.
|
|
18
|
+
- **🧠 Local Sovereignty** — Powered by **Snatchy**, our built-in offline brain. Runs entirely on your machine — no API key, no cloud, no data leaving your environment.
|
|
20
19
|
- **⚡ Selective Knowledge Retrieval** — New **Knowledge Map Strategy** for massive projects. The AI identifies relevant files from a compact project map before reading content, reducing token costs by up to 90% and eliminating "context noise".
|
|
21
20
|
- **🔍 Semantic Knowledge Base** — Scalable indexing for codebase, databases, and docs. Optimized for surgical context delivery in v1.1.1.
|
|
22
21
|
- **👀 Terminal Watcher** — Monitors your dev workflow and catches execution errors in real time.
|
|
@@ -75,13 +74,13 @@ Requirements vary depending on the **brain provider** you choose.
|
|
|
75
74
|
| Disk | 200 MB + model size | Ollama stores models in its own directory |
|
|
76
75
|
| OS | Linux, macOS, Windows 11 | |
|
|
77
76
|
|
|
78
|
-
### Local brain (
|
|
77
|
+
### Local brain (Snatchy — no API, no cloud)
|
|
79
78
|
|
|
80
79
|
| Item | Minimum | Recommended |
|
|
81
80
|
|---|---|---|
|
|
82
81
|
| Node.js | v18 (ESM required) | v20+ |
|
|
83
82
|
| RAM | 4 GB | 8 GB+ |
|
|
84
|
-
| Disk | 200 MB (embeddings) | 2 GB+ (local
|
|
83
|
+
| Disk | 200 MB (embeddings) | 2 GB+ (local model) |
|
|
85
84
|
| OS | Linux, macOS, Windows 11 | Linux / macOS |
|
|
86
85
|
|
|
87
86
|
---
|
|
@@ -142,7 +141,7 @@ uneven-ai ci
|
|
|
142
141
|
|
|
143
142
|
`uneven-ai init` walks you through selecting a provider and downloading required models:
|
|
144
143
|
|
|
145
|
-
- **
|
|
144
|
+
- **Snatchy (Local)** — Downloads an optimized offline model. Detects your hardware automatically and installs the accelerated binary. Just run `init` and Snatchy handles the rest.
|
|
146
145
|
- **Ollama** — Connects to your existing Ollama infrastructure.
|
|
147
146
|
- **Cloud providers** — Requires environment API keys:
|
|
148
147
|
```bash
|
|
@@ -158,7 +157,7 @@ uneven-ai ci
|
|
|
158
157
|
Run `uneven-ai` with no arguments to open the interactive shell:
|
|
159
158
|
|
|
160
159
|
```
|
|
161
|
-
◈ Uneven AI v1.
|
|
160
|
+
◈ Uneven AI v1.2.0
|
|
162
161
|
────────────────────────────────────────────────────────────
|
|
163
162
|
Olá! O que posso fazer por você hoje?
|
|
164
163
|
(Escreva sua mensagem ou "sair" para encerrar)
|
|
@@ -204,8 +203,8 @@ import { UnevenConfig } from 'uneven-ai'
|
|
|
204
203
|
|
|
205
204
|
const config: UnevenConfig = {
|
|
206
205
|
brain: {
|
|
207
|
-
provider: 'local', // 'local' (
|
|
208
|
-
model: '
|
|
206
|
+
provider: 'local', // 'local' (Snatchy) | 'ollama' | 'gemini' | 'openai' | 'claude'
|
|
207
|
+
model: '', // set automatically by 'uneven-ai init'
|
|
209
208
|
apiKey: process.env.AI_KEY, // cloud providers only
|
|
210
209
|
temperature: 0.3,
|
|
211
210
|
maxTokens: 2048,
|
|
@@ -373,7 +372,7 @@ uneven-ai ci --github # Write GitHub Actions step summary
|
|
|
373
372
|
uneven-ai ci --output ./ci-out.json # Custom output path
|
|
374
373
|
```
|
|
375
374
|
|
|
376
|
-
Pipeline steps:
|
|
375
|
+
Pipeline steps: type check → malware scan → test suite. Exit code 0 = pass.
|
|
377
376
|
|
|
378
377
|
---
|
|
379
378
|
|
|
@@ -383,7 +382,7 @@ Pipeline steps: TypeScript typecheck → malware scan → test suite. Exit code
|
|
|
383
382
|
import { Uneven } from 'uneven-ai'
|
|
384
383
|
|
|
385
384
|
const ai = new Uneven({
|
|
386
|
-
brain: { provider: 'local', model
|
|
385
|
+
brain: { provider: 'local' }, // model set by 'uneven-ai init'
|
|
387
386
|
knowledge: { dirs: ['./src'] },
|
|
388
387
|
watch: { terminal: 'npm run dev', autoFix: true },
|
|
389
388
|
})
|
|
@@ -553,7 +552,7 @@ New to Uneven AI? Follow the step-by-step guide to verify each feature works cor
|
|
|
553
552
|
|
|
554
553
|
---
|
|
555
554
|
|
|
556
|
-
**©
|
|
555
|
+
**© 2026 KR Riley Soluções. All rights reserved.**
|
|
557
556
|
|
|
558
557
|
Uneven AI is developed and owned by **KR Riley Soluções** — a software engineering consultancy in Brazil.
|
|
559
558
|
|
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
import * as http from 'http';
|
|
2
|
+
/**
|
|
3
|
+
* Modern TCP connection check with clean promise handling
|
|
4
|
+
*/
|
|
2
5
|
export declare function tcpConnect(host: string, port: number, timeoutMs: number): Promise<boolean>;
|
|
6
|
+
/**
|
|
7
|
+
* Streamlined HTTP request with automatic dossier injection
|
|
8
|
+
*/
|
|
3
9
|
export declare function httpRequest(options: http.RequestOptions, useHttps: boolean): Promise<{
|
|
4
10
|
statusCode: number;
|
|
5
11
|
headers: Record<string, string | string[] | undefined>;
|
|
6
12
|
body: string;
|
|
7
13
|
}>;
|
|
14
|
+
/**
|
|
15
|
+
* Extracts and analyzes TLS certificate information
|
|
16
|
+
*/
|
|
8
17
|
export declare function parseTlsInfo(host: string, port: number): Promise<{
|
|
9
18
|
valid: boolean;
|
|
10
19
|
expired: boolean;
|
|
@@ -14,6 +23,9 @@ export declare function parseTlsInfo(host: string, port: number): Promise<{
|
|
|
14
23
|
subject: string;
|
|
15
24
|
issuer: string;
|
|
16
25
|
} | null>;
|
|
26
|
+
/**
|
|
27
|
+
* Resolves target string to host, port and protocol using native URL API
|
|
28
|
+
*/
|
|
17
29
|
export declare function resolveHostPort(target: string): {
|
|
18
30
|
host: string;
|
|
19
31
|
port: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../src/application/analysis/active/helpers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../src/application/analysis/active/helpers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAK5B;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBhG;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC;IAC1F,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAA;IACtD,IAAI,EAAE,MAAM,CAAA;CACb,CAAC,CAqCD;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACtE,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACf,GAAG,IAAI,CAAC,CAiCR;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAoB9F"}
|
|
@@ -2,81 +2,114 @@ import * as net from 'net';
|
|
|
2
2
|
import * as tls from 'tls';
|
|
3
3
|
import * as https from 'https';
|
|
4
4
|
import * as http from 'http';
|
|
5
|
-
import { CONNECT_TIMEOUT_MS, HTTP_TIMEOUT_MS } from '
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
5
|
+
import { CONNECT_TIMEOUT_MS, HTTP_TIMEOUT_MS } from '../../../utils/security-definitions.js';
|
|
6
|
+
import { getAttackerDossier } from '../../../infrastructure/utils/dossier.js';
|
|
7
|
+
import { PentestSecurityContext } from '../pentest-security-context.js';
|
|
8
|
+
/**
|
|
9
|
+
* Modern TCP connection check with clean promise handling
|
|
10
|
+
*/
|
|
11
|
+
export async function tcpConnect(host, port, timeoutMs) {
|
|
12
|
+
return new Promise((resolve) => {
|
|
13
|
+
const socket = net.createConnection({ host, port });
|
|
14
|
+
socket.setTimeout(timeoutMs);
|
|
15
|
+
socket.on('connect', () => {
|
|
16
|
+
socket.destroy();
|
|
17
|
+
resolve(true);
|
|
18
|
+
});
|
|
19
|
+
const onFail = () => {
|
|
20
|
+
socket.destroy();
|
|
21
|
+
resolve(false);
|
|
22
|
+
};
|
|
23
|
+
socket.on('timeout', onFail);
|
|
24
|
+
socket.on('error', onFail);
|
|
13
25
|
});
|
|
14
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Streamlined HTTP request with automatic dossier injection
|
|
29
|
+
*/
|
|
15
30
|
export async function httpRequest(options, useHttps) {
|
|
16
|
-
|
|
17
|
-
const
|
|
18
|
-
|
|
31
|
+
// Context management could be optimized outside this helper, but kept here for now
|
|
32
|
+
const ctx = new PentestSecurityContext();
|
|
33
|
+
const scope = await ctx.loadScope();
|
|
34
|
+
const dossier = await getAttackerDossier(scope);
|
|
35
|
+
const dossierBase64 = Buffer.from(JSON.stringify(dossier)).toString('base64');
|
|
36
|
+
const mergedHeaders = {
|
|
19
37
|
'User-Agent': 'Uneven-Pentester/1.1.9',
|
|
20
|
-
|
|
38
|
+
'X-Uneven-Dossier': dossierBase64,
|
|
39
|
+
...options.headers,
|
|
21
40
|
};
|
|
22
41
|
return new Promise((resolve, reject) => {
|
|
23
|
-
const
|
|
24
|
-
const req =
|
|
42
|
+
const client = useHttps ? https : http;
|
|
43
|
+
const req = client.request({ ...options, headers: mergedHeaders, rejectUnauthorized: false }, (res) => {
|
|
25
44
|
let body = '';
|
|
26
|
-
res.
|
|
45
|
+
res.setEncoding('utf-8');
|
|
46
|
+
res.on('data', chunk => { body += chunk; });
|
|
27
47
|
res.on('end', () => resolve({
|
|
28
48
|
statusCode: res.statusCode ?? 0,
|
|
29
49
|
headers: res.headers,
|
|
30
50
|
body: body.slice(0, 4096),
|
|
31
51
|
}));
|
|
32
52
|
});
|
|
33
|
-
req.setTimeout(HTTP_TIMEOUT_MS, () => {
|
|
53
|
+
req.setTimeout(HTTP_TIMEOUT_MS, () => {
|
|
54
|
+
req.destroy();
|
|
55
|
+
reject(new Error('Request timeout'));
|
|
56
|
+
});
|
|
34
57
|
req.on('error', reject);
|
|
35
58
|
req.end();
|
|
36
59
|
});
|
|
37
60
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
61
|
+
/**
|
|
62
|
+
* Extracts and analyzes TLS certificate information
|
|
63
|
+
*/
|
|
64
|
+
export async function parseTlsInfo(host, port) {
|
|
65
|
+
return new Promise((resolve) => {
|
|
66
|
+
const socket = tls.connect({ host, port, rejectUnauthorized: false, timeout: CONNECT_TIMEOUT_MS }, () => {
|
|
67
|
+
const cert = socket.getPeerCertificate();
|
|
43
68
|
if (!cert || !cert.valid_to) {
|
|
44
|
-
|
|
45
|
-
resolve(null);
|
|
46
|
-
return;
|
|
69
|
+
socket.destroy();
|
|
70
|
+
return resolve(null);
|
|
47
71
|
}
|
|
48
72
|
const expiry = new Date(cert.valid_to);
|
|
49
|
-
const
|
|
50
|
-
const daysToExpiry = Math.floor((expiry.getTime() - now.getTime()) / 86400000);
|
|
51
|
-
const selfSigned = cert.issuer?.CN === cert.subject?.CN;
|
|
73
|
+
const daysToExpiry = Math.floor((expiry.getTime() - Date.now()) / 86400000);
|
|
52
74
|
resolve({
|
|
53
|
-
valid:
|
|
75
|
+
valid: socket.authorized,
|
|
54
76
|
expired: daysToExpiry < 0,
|
|
55
|
-
selfSigned,
|
|
77
|
+
selfSigned: cert.issuer?.CN === cert.subject?.CN,
|
|
56
78
|
daysToExpiry,
|
|
57
|
-
protocol,
|
|
79
|
+
protocol: socket.getProtocol() ?? 'unknown',
|
|
58
80
|
subject: String(cert.subject?.CN ?? ''),
|
|
59
81
|
issuer: String(cert.issuer?.CN ?? ''),
|
|
60
82
|
});
|
|
61
|
-
|
|
83
|
+
socket.destroy();
|
|
84
|
+
});
|
|
85
|
+
socket.on('error', () => resolve(null));
|
|
86
|
+
socket.setTimeout(CONNECT_TIMEOUT_MS, () => {
|
|
87
|
+
socket.destroy();
|
|
88
|
+
resolve(null);
|
|
62
89
|
});
|
|
63
|
-
sock.setTimeout(CONNECT_TIMEOUT_MS, () => { sock.destroy(); resolve(null); });
|
|
64
|
-
sock.on('error', () => resolve(null));
|
|
65
90
|
});
|
|
66
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Resolves target string to host, port and protocol using native URL API
|
|
94
|
+
*/
|
|
67
95
|
export function resolveHostPort(target) {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
96
|
+
const hasProtocol = /^https?:\/\//i.test(target);
|
|
97
|
+
const normalizedTarget = hasProtocol ? target : `https://${target}`;
|
|
98
|
+
try {
|
|
99
|
+
const url = new URL(normalizedTarget);
|
|
100
|
+
return {
|
|
101
|
+
host: url.hostname,
|
|
102
|
+
port: url.port ? parseInt(url.port, 10) : (url.protocol === 'https:' ? 443 : 80),
|
|
103
|
+
https: url.protocol === 'https:'
|
|
104
|
+
};
|
|
75
105
|
}
|
|
76
|
-
|
|
77
|
-
|
|
106
|
+
catch {
|
|
107
|
+
// Fallback for non-URL compatible targets (like raw IPs)
|
|
108
|
+
const [host, port] = target.split(':');
|
|
109
|
+
return {
|
|
110
|
+
host: host || target,
|
|
111
|
+
port: port ? parseInt(port, 10) : 443,
|
|
112
|
+
https: true
|
|
113
|
+
};
|
|
78
114
|
}
|
|
79
|
-
const [host, portStr] = raw.split(':');
|
|
80
|
-
const port = portStr ? parseInt(portStr, 10) : defaultPort;
|
|
81
|
-
return { host: host ?? raw, port, https: useHttps };
|
|
82
115
|
}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
|
-
import type { SecurityFinding } from '
|
|
2
|
-
import type { ActiveCtx } from '
|
|
1
|
+
import type { SecurityFinding } from '../../../interfaces/index.js';
|
|
2
|
+
import type { ActiveCtx } from '../../../interfaces/active-analysis.js';
|
|
3
|
+
/**
|
|
4
|
+
* Audits HTTP headers for missing security controls and info disclosure
|
|
5
|
+
*/
|
|
3
6
|
export declare function doAuditHeaders(ctx: ActiveCtx, target: string): Promise<SecurityFinding[]>;
|
|
7
|
+
/**
|
|
8
|
+
* Tests CORS configuration for common misconfigurations
|
|
9
|
+
*/
|
|
4
10
|
export declare function doTestCORS(ctx: ActiveCtx, target: string): Promise<SecurityFinding[]>;
|
|
11
|
+
/**
|
|
12
|
+
* Tests for dangerous HTTP methods allowed by the server
|
|
13
|
+
*/
|
|
5
14
|
export declare function doTestDangerousMethods(ctx: ActiveCtx, target: string): Promise<SecurityFinding[]>;
|
|
6
15
|
//# sourceMappingURL=http.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../../src/application/analysis/active/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../../src/application/analysis/active/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAA;AAmBvE;;GAEG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAsD/F;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAgD3F;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAiCvG"}
|
|
@@ -1,14 +1,25 @@
|
|
|
1
|
-
import { REQUIRED_HEADERS } from '
|
|
1
|
+
import { REQUIRED_HEADERS } from '../../../utils/security-definitions.js';
|
|
2
2
|
import { httpRequest, resolveHostPort } from './helpers.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Checks if the target is allowed and logs the operation
|
|
5
|
+
*/
|
|
6
|
+
async function ensureTargetAllowed(ctx, target, op) {
|
|
7
|
+
const { host, port } = resolveHostPort(target);
|
|
8
|
+
await ctx.logger.info(`ActiveScan: ${op} → ${host}:${port}`);
|
|
7
9
|
const check = await ctx.ctx.checkTarget(target);
|
|
8
10
|
if (check.blocked) {
|
|
9
|
-
ctx.audit(`BLOCKED
|
|
10
|
-
return
|
|
11
|
+
ctx.audit(`BLOCKED ${op} ${target} — ${check.reason}`);
|
|
12
|
+
return false;
|
|
11
13
|
}
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Audits HTTP headers for missing security controls and info disclosure
|
|
18
|
+
*/
|
|
19
|
+
export async function doAuditHeaders(ctx, target) {
|
|
20
|
+
if (!await ensureTargetAllowed(ctx, target, 'Header Audit'))
|
|
21
|
+
return [];
|
|
22
|
+
const { host, port, https: useHttps } = resolveHostPort(target);
|
|
12
23
|
let res;
|
|
13
24
|
try {
|
|
14
25
|
res = await httpRequest({ host, port, path: '/', method: 'GET' }, useHttps);
|
|
@@ -16,20 +27,22 @@ export async function doAuditHeaders(ctx, target) {
|
|
|
16
27
|
catch {
|
|
17
28
|
return [];
|
|
18
29
|
}
|
|
19
|
-
ctx.audit(`HTTP
|
|
30
|
+
ctx.audit(`HTTP Header Audit ${host}:${port} — ${res.statusCode}`);
|
|
20
31
|
const h = res.headers;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
32
|
+
const findings = [];
|
|
33
|
+
// 1. Missing Security Headers
|
|
34
|
+
const missingHeaders = REQUIRED_HEADERS
|
|
35
|
+
.filter(rule => !h[rule.key])
|
|
36
|
+
.map(rule => ({
|
|
37
|
+
severity: rule.severity,
|
|
38
|
+
type: `ActiveScan: Missing ${rule.header}`,
|
|
39
|
+
message: rule.messageBuilder(host),
|
|
40
|
+
recommendation: rule.recommendation,
|
|
41
|
+
cvss: rule.cvss,
|
|
42
|
+
match: host,
|
|
43
|
+
}));
|
|
44
|
+
findings.push(...missingHeaders);
|
|
45
|
+
// 2. Information Disclosure: Server version
|
|
33
46
|
const server = h['server'];
|
|
34
47
|
if (server && /\/\d+\.\d+/.test(server)) {
|
|
35
48
|
findings.push({
|
|
@@ -40,6 +53,7 @@ export async function doAuditHeaders(ctx, target) {
|
|
|
40
53
|
match: server,
|
|
41
54
|
});
|
|
42
55
|
}
|
|
56
|
+
// 3. Information Disclosure: X-Powered-By
|
|
43
57
|
const powered = h['x-powered-by'];
|
|
44
58
|
if (powered) {
|
|
45
59
|
findings.push({
|
|
@@ -52,15 +66,13 @@ export async function doAuditHeaders(ctx, target) {
|
|
|
52
66
|
}
|
|
53
67
|
return findings;
|
|
54
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Tests CORS configuration for common misconfigurations
|
|
71
|
+
*/
|
|
55
72
|
export async function doTestCORS(ctx, target) {
|
|
56
|
-
|
|
57
|
-
await ctx.logger.info(`ActiveScan: CORS test → ${host}:${port}`);
|
|
58
|
-
const findings = [];
|
|
59
|
-
const check = await ctx.ctx.checkTarget(target);
|
|
60
|
-
if (check.blocked) {
|
|
61
|
-
ctx.audit(`BLOCKED CORS test ${target} — ${check.reason}`);
|
|
73
|
+
if (!await ensureTargetAllowed(ctx, target, 'CORS Test'))
|
|
62
74
|
return [];
|
|
63
|
-
}
|
|
75
|
+
const { host, port, https: useHttps } = resolveHostPort(target);
|
|
64
76
|
const EVIL_ORIGIN = 'https://evil.attacker-example.com';
|
|
65
77
|
let res;
|
|
66
78
|
try {
|
|
@@ -69,9 +81,10 @@ export async function doTestCORS(ctx, target) {
|
|
|
69
81
|
catch {
|
|
70
82
|
return [];
|
|
71
83
|
}
|
|
72
|
-
ctx.audit(`CORS test ${host}:${port} — ACAO=${res.headers['access-control-allow-origin']}`);
|
|
73
84
|
const acao = res.headers['access-control-allow-origin'];
|
|
74
85
|
const acac = res.headers['access-control-allow-credentials'];
|
|
86
|
+
ctx.audit(`CORS Test ${host}:${port} — ACAO=${acao ?? 'none'}`);
|
|
87
|
+
const findings = [];
|
|
75
88
|
if (acao === EVIL_ORIGIN) {
|
|
76
89
|
findings.push({
|
|
77
90
|
severity: 'high', cvss: 8.1,
|
|
@@ -81,7 +94,7 @@ export async function doTestCORS(ctx, target) {
|
|
|
81
94
|
match: acao,
|
|
82
95
|
});
|
|
83
96
|
}
|
|
84
|
-
if (acao === 'null') {
|
|
97
|
+
else if (acao === 'null') {
|
|
85
98
|
findings.push({
|
|
86
99
|
severity: 'high', cvss: 7.4,
|
|
87
100
|
type: 'ActiveScan: CORS Null Origin Allowed',
|
|
@@ -101,37 +114,38 @@ export async function doTestCORS(ctx, target) {
|
|
|
101
114
|
}
|
|
102
115
|
return findings;
|
|
103
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* Tests for dangerous HTTP methods allowed by the server
|
|
119
|
+
*/
|
|
104
120
|
export async function doTestDangerousMethods(ctx, target) {
|
|
105
|
-
|
|
106
|
-
await ctx.logger.info(`ActiveScan: HTTP methods → ${host}:${port}`);
|
|
107
|
-
const findings = [];
|
|
108
|
-
const check = await ctx.ctx.checkTarget(target);
|
|
109
|
-
if (check.blocked) {
|
|
110
|
-
ctx.audit(`BLOCKED method test ${target} — ${check.reason}`);
|
|
121
|
+
if (!await ensureTargetAllowed(ctx, target, 'Methods Test'))
|
|
111
122
|
return [];
|
|
112
|
-
}
|
|
123
|
+
const { host, port, https: useHttps } = resolveHostPort(target);
|
|
113
124
|
const DANGEROUS = [
|
|
114
125
|
{ method: 'TRACE', severity: 'medium', cvss: 4.8, reason: 'Cross-Site Tracing (XST) — can steal cookies/headers via JavaScript' },
|
|
115
126
|
{ method: 'PUT', severity: 'high', cvss: 7.5, reason: 'PUT method allowed — may permit arbitrary file upload' },
|
|
116
127
|
{ method: 'DELETE', severity: 'high', cvss: 7.5, reason: 'DELETE method allowed — may permit resource deletion' },
|
|
117
128
|
{ method: 'CONNECT', severity: 'medium', cvss: 5.8, reason: 'CONNECT method allowed — server may be used as HTTP proxy' },
|
|
118
129
|
];
|
|
119
|
-
await Promise.all(DANGEROUS.map(async ({ method, severity, cvss, reason }) => {
|
|
130
|
+
const results = await Promise.all(DANGEROUS.map(async ({ method, severity, cvss, reason }) => {
|
|
120
131
|
try {
|
|
121
132
|
const res = await httpRequest({ host, port, path: '/', method }, useHttps);
|
|
122
133
|
ctx.audit(`${method} ${host}:${port} — ${res.statusCode}`);
|
|
123
134
|
if (res.statusCode !== 405 && res.statusCode !== 501 && res.statusCode !== 0) {
|
|
124
|
-
|
|
135
|
+
return {
|
|
125
136
|
severity,
|
|
126
137
|
type: `ActiveScan: HTTP ${method} Method Allowed`,
|
|
127
138
|
message: `${host} accepts HTTP ${method} requests (${res.statusCode}) — ${reason}`,
|
|
128
139
|
recommendation: `Disable the ${method} method in your web server / API framework unless explicitly required.`,
|
|
129
140
|
cvss,
|
|
130
141
|
match: `${method} ${res.statusCode}`,
|
|
131
|
-
}
|
|
142
|
+
};
|
|
132
143
|
}
|
|
133
144
|
}
|
|
134
|
-
catch {
|
|
145
|
+
catch {
|
|
146
|
+
// Quietly ignore network errors during method probe
|
|
147
|
+
}
|
|
148
|
+
return null;
|
|
135
149
|
}));
|
|
136
|
-
return
|
|
150
|
+
return results.filter((f) => f !== null);
|
|
137
151
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Logger } from '../../../infrastructure/index.js';
|
|
2
2
|
import type { PentestSecurityContext } from '../pentest-security-context.js';
|
|
3
|
-
import type { SecurityFinding } from '
|
|
4
|
-
import type { ActiveCtx } from '
|
|
3
|
+
import type { SecurityFinding } from '../../../interfaces/index.js';
|
|
4
|
+
import type { ActiveCtx } from '../../../interfaces/active-analysis.js';
|
|
5
5
|
export declare class ActiveScanner implements ActiveCtx {
|
|
6
6
|
logger: Logger;
|
|
7
7
|
ctx: PentestSecurityContext;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/application/analysis/active/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AAC9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/application/analysis/active/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AAC9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAA;AAIvE,qBAAa,aAAc,YAAW,SAAS;IAC7C,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,sBAAsB,CAAA;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAK;gBAEX,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,sBAAsB;IAKvD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKlB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IASpC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IACrD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IACxD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IACpD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IACpD,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAE1D,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CAoBnE"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
import type { SecurityFinding } from '
|
|
2
|
-
import type { ActiveCtx } from '
|
|
1
|
+
import type { SecurityFinding } from '../../../interfaces/index.js';
|
|
2
|
+
import type { ActiveCtx } from '../../../interfaces/active-analysis.js';
|
|
3
|
+
/**
|
|
4
|
+
* Performs a stealthy port scan and generates security findings
|
|
5
|
+
*/
|
|
3
6
|
export declare function doScanPorts(ctx: ActiveCtx, target: string): Promise<SecurityFinding[]>;
|
|
7
|
+
/**
|
|
8
|
+
* Audits TLS certificate and protocol version
|
|
9
|
+
*/
|
|
4
10
|
export declare function doAuditTLS(ctx: ActiveCtx, target: string): Promise<SecurityFinding[]>;
|
|
5
11
|
//# sourceMappingURL=network.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../../src/application/analysis/active/network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../../../src/application/analysis/active/network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAA;AAoBvE;;GAEG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CA6B5F;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAmE3F"}
|