attacklm 0.5.4__tar.gz → 0.5.6__tar.gz
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.
- {attacklm-0.5.4 → attacklm-0.5.6}/PKG-INFO +27 -26
- {attacklm-0.5.4 → attacklm-0.5.6}/README.md +22 -10
- {attacklm-0.5.4 → attacklm-0.5.6}/pyproject.toml +8 -1
- attacklm-0.5.6/src/attacklm/__version__.py +1 -0
- attacklm-0.5.4/src/attacklm/__version__.py +0 -1
- {attacklm-0.5.4 → attacklm-0.5.6}/.github/workflows/release.yml +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/.gitignore +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/ATTRIBUTION.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/CHANGELOG.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/CONTRIBUTING.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/EVALUATION.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/LICENSE +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/MANIFEST.in +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/Makefile +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/NOTICE +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/QA_BEFORE_RELEASES.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/REPLAY_PLAN.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/ATTRIBUTION.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/LEGAL.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/REMOVAL.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/bench/questions.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/bench/speed_context.txt +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/ATTRIBUTION.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/GEMINI_RESEARCH_2026-06-11.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/acquisition_report.json +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/manifest.json +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/README.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/_index.json +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/atomic-red-team/LICENSE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/atomic-red-team/SOURCE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/atomic-red-team/base/collection/data.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/atomic-red-team/base/discovery/data.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/atomic-red-team/base/execution/data.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/atomic-red-team/base/exfiltration/data.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/atomic-red-team/base/persistence/data.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/attacklm-synthetic/LICENSE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/attacklm-synthetic/SOURCE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/attacklm-synthetic/orchestrator/data.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/azure-pyrit/LICENSE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/azure-pyrit/SOURCE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/cyberark-fuzzyai/LICENSE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/cyberark-fuzzyai/SOURCE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/elastic-rules/LICENSE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/elastic-rules/SOURCE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/llm-generated/LICENSE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/llm-generated/SOURCE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/llm-generated/cloud/attacks/data_llm.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/llm-generated/ics/attacks/data_llm.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/llm-generated/social_engineering/phishing/data_llm.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/llm-generated/wireless/attacks/data_llm.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/metasploit-framework/LICENSE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/metasploit-framework/SOURCE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/metasploit-framework/base/collection/data.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/metasploit-framework/base/credential_access/data.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/metasploit-framework/base/defense_evasion/data.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/metasploit-framework/base/discovery/data.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/metasploit-framework/base/execution/data.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/metasploit-framework/base/lateral_movement/data.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/metasploit-framework/base/persistence/data.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/metasploit-framework/base/privilege_escalation/data.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/metasploit-framework/tools/metasploit/data.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/mitre-atlas-arsenal/LICENSE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/mitre-atlas-arsenal/SOURCE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/mitre-atlas-arsenal/base/discovery/data.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/mitre-stockpile/LICENSE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/mitre-stockpile/SOURCE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/mitre-stockpile/base/collection/data.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/mitre-stockpile/base/discovery/data.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/mitre-stockpile/base/execution/data.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/mitre-stockpile/base/exfiltration/data.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/mitre-stockpile/base/persistence/data.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/mordor/LICENSE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/mordor/SOURCE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/nist-ir/LICENSE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/nist-ir/SOURCE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/nvidia-garak/LICENSE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/nvidia-garak/SOURCE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/nvidia-garak/ai/jailbreaking/data.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/promptfoo/LICENSE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/promptfoo/SOURCE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/promptfoo/ai/prompt-injection/data.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/promptmap/LICENSE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/promptmap/SOURCE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/promptmap/ai/prompt-injection/data.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/replay-general/LICENSE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/replay-general/SOURCE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/replay-general/base/replay/data_code.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/replay-general/base/replay/data_conversation.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/replay-general/base/replay/data_factual.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/replay-general/base/replay/data_reasoning.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/sigma-hq/LICENSE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/sigma-hq/SOURCE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/splunk-content/LICENSE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/splunk-content/SOURCE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/threathunter-playbook/LICENSE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/threathunter-playbook/SOURCE.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/golden/prompts.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/reference/prompts.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/steering/prompts/opsec_aware.txt +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/steering/prompts/opsec_unaware.txt +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/steering/prompts/succinct.txt +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/data/steering/prompts/verbose.txt +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/experiments/README.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/experiments/synthetic_dataset_mutator_evol_instruct.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/hf/.gitattributes +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/hf/README.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/hf/data/manifest.json +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/hf/dataset_infos.json +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/hf/scripts/build_hf_dataset.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/hf/scripts/push_to_hf.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/hpo_runs/.gitkeep +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/hpo_runs/hpo_state.json +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/hpo_runs/hpo_trial_dataset.jsonl +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/logs/.gitkeep +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/notes/BLUE_TEAM_DESIGN_v0.5.0.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/notes/EVAL_DESIGN_v0.4.0.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/notes/STEERING_REVIEW_v0.4.0.md +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/presets/blue-team.json +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/presets/purple-team.json +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/presets/red-team.json +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/requirements.txt +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/_eval_loader.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/acquire_cloud_attack_dataset.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/acquire_ics_dataset.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/acquire_phishing_dataset.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/acquire_red_team_tactics.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/acquire_replay_general.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/acquire_supply_chain_dataset.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/acquire_web_attack_dataset.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/acquire_wireless_dataset.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/add_attribution.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/audit_dataset.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/augment_attribution.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/balance_buckets.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/bucket_loader.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/build.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/classify_unrouted_modules.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/clone_repos.sh +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/collect_reference.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/compare_scores.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/convert_to_gguf.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/dedupe_and_import_llm.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/demo.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/device_utils.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/domain_bench.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/eval_retention.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/extract_ai_tools_to_jsonl.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/extract_atomic_red_team_to_jsonl.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/extract_by_tactic.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/extract_caldera_plugins_to_jsonl.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/extract_elastic_rules.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/extract_infection_monkey_to_jsonl.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/extract_mordor.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/extract_nist_ir.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/extract_rta_to_jsonl.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/extract_sigma_defensive.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/extract_splunk_content.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/extract_threathunter_playbook.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/generate_dataset.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/generate_dataset_deterministic.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/generate_hybrid_dataset.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/generate_metasploit_dataset.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/generate_orchestrator.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/generate_prompt_injection.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/generate_source_layout.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/generate_synthetic_scarce.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/golden_vectors.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/hpo_runner.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/import_gguf.sh +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/import_to_lmstudio.sh +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/infer.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/init_pipeline.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/llm_generate_wrapper.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/merge_adapter.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/migrate_buckets_to_v021.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/migrate_v015_to_v020.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/mitre_tactic_lookup.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/parse_metasploit_to_jsonl.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/rebuild_manifest.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/register_ollama.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/reorganize_buckets.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/replay_mixer.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/run_all_acquisitions.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/score_candidates.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/scrub_bpl_callback.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/setup_buckets.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/speed_bench.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/stamp_and_reorg.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/steering.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/train_all.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/train_template.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/scripts/validate_per_category.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/src/attacklm/__init__.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/src/attacklm/cli.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/tests/test_balance_buckets.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/tests/test_collect_reference.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/tests/test_compare_scores.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/tests/test_domain_bench.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/tests/test_eval_loader.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/tests/test_eval_retention.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/tests/test_golden_vectors.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/tests/test_init_pipeline.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/tests/test_replay_mixer.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/tests/test_score_candidates.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/tests/test_speed_bench.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/tests/test_steering.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/tests/test_thinking_models.py +0 -0
- {attacklm-0.5.4 → attacklm-0.5.6}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: attacklm
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.6
|
|
4
4
|
Summary: QLoRA-fine-tuned Qwen2.5-Coder for offensive/defensive security and AI red-teaming
|
|
5
5
|
Project-URL: Homepage, https://github.com/Veedubin/AttackLM
|
|
6
6
|
Project-URL: Repository, https://github.com/Veedubin/AttackLM
|
|
@@ -25,10 +25,7 @@ Requires-Python: >=3.10
|
|
|
25
25
|
Provides-Extra: all
|
|
26
26
|
Requires-Dist: accelerate==1.13.0; extra == 'all'
|
|
27
27
|
Requires-Dist: bitsandbytes==0.49.2; extra == 'all'
|
|
28
|
-
Requires-Dist: causal-conv1d>=1.4; extra == 'all'
|
|
29
28
|
Requires-Dist: datasets==5.0.0; extra == 'all'
|
|
30
|
-
Requires-Dist: flash-attn>=2.7; extra == 'all'
|
|
31
|
-
Requires-Dist: flash-linear-attention>=0.2; extra == 'all'
|
|
32
29
|
Requires-Dist: gguf; extra == 'all'
|
|
33
30
|
Requires-Dist: gitpython; extra == 'all'
|
|
34
31
|
Requires-Dist: huggingface-hub==1.18.0; extra == 'all'
|
|
@@ -51,10 +48,7 @@ Requires-Dist: trl==1.5.1; extra == 'all'
|
|
|
51
48
|
Provides-Extra: all-cuda
|
|
52
49
|
Requires-Dist: accelerate==1.13.0; extra == 'all-cuda'
|
|
53
50
|
Requires-Dist: bitsandbytes==0.49.2; extra == 'all-cuda'
|
|
54
|
-
Requires-Dist: causal-conv1d>=1.4; extra == 'all-cuda'
|
|
55
51
|
Requires-Dist: datasets==5.0.0; extra == 'all-cuda'
|
|
56
|
-
Requires-Dist: flash-attn>=2.7; extra == 'all-cuda'
|
|
57
|
-
Requires-Dist: flash-linear-attention>=0.2; extra == 'all-cuda'
|
|
58
52
|
Requires-Dist: gguf; extra == 'all-cuda'
|
|
59
53
|
Requires-Dist: gitpython; extra == 'all-cuda'
|
|
60
54
|
Requires-Dist: huggingface-hub==1.18.0; extra == 'all-cuda'
|
|
@@ -95,9 +89,6 @@ Requires-Dist: bitsandbytes==0.49.2; extra == 'cuda'
|
|
|
95
89
|
Requires-Dist: torch==2.12.0; extra == 'cuda'
|
|
96
90
|
Requires-Dist: torchvision==0.27.0; extra == 'cuda'
|
|
97
91
|
Provides-Extra: cuda-extras
|
|
98
|
-
Requires-Dist: causal-conv1d>=1.4; extra == 'cuda-extras'
|
|
99
|
-
Requires-Dist: flash-attn>=2.7; extra == 'cuda-extras'
|
|
100
|
-
Requires-Dist: flash-linear-attention>=0.2; extra == 'cuda-extras'
|
|
101
92
|
Provides-Extra: dev
|
|
102
93
|
Requires-Dist: ipython; extra == 'dev'
|
|
103
94
|
Requires-Dist: mypy; extra == 'dev'
|
|
@@ -110,6 +101,10 @@ Provides-Extra: extract
|
|
|
110
101
|
Requires-Dist: gitpython; extra == 'extract'
|
|
111
102
|
Requires-Dist: pyyaml; extra == 'extract'
|
|
112
103
|
Requires-Dist: requests; extra == 'extract'
|
|
104
|
+
Provides-Extra: flash-attn
|
|
105
|
+
Requires-Dist: causal-conv1d>=1.4; extra == 'flash-attn'
|
|
106
|
+
Requires-Dist: flash-attn>=2.7; extra == 'flash-attn'
|
|
107
|
+
Requires-Dist: flash-linear-attention>=0.2; extra == 'flash-attn'
|
|
113
108
|
Provides-Extra: infer
|
|
114
109
|
Requires-Dist: bitsandbytes==0.49.2; extra == 'infer'
|
|
115
110
|
Requires-Dist: huggingface-hub==1.18.0; extra == 'infer'
|
|
@@ -151,10 +146,7 @@ Provides-Extra: rocm-extras
|
|
|
151
146
|
Provides-Extra: train
|
|
152
147
|
Requires-Dist: accelerate==1.13.0; extra == 'train'
|
|
153
148
|
Requires-Dist: bitsandbytes==0.49.2; extra == 'train'
|
|
154
|
-
Requires-Dist: causal-conv1d>=1.4; extra == 'train'
|
|
155
149
|
Requires-Dist: datasets==5.0.0; extra == 'train'
|
|
156
|
-
Requires-Dist: flash-attn>=2.7; extra == 'train'
|
|
157
|
-
Requires-Dist: flash-linear-attention>=0.2; extra == 'train'
|
|
158
150
|
Requires-Dist: huggingface-hub==1.18.0; extra == 'train'
|
|
159
151
|
Requires-Dist: kernels<0.13,>=0.12; extra == 'train'
|
|
160
152
|
Requires-Dist: peft==0.19.1; extra == 'train'
|
|
@@ -177,10 +169,7 @@ Requires-Dist: trl==1.5.1; extra == 'train-base'
|
|
|
177
169
|
Provides-Extra: train-cuda
|
|
178
170
|
Requires-Dist: accelerate==1.13.0; extra == 'train-cuda'
|
|
179
171
|
Requires-Dist: bitsandbytes==0.49.2; extra == 'train-cuda'
|
|
180
|
-
Requires-Dist: causal-conv1d>=1.4; extra == 'train-cuda'
|
|
181
172
|
Requires-Dist: datasets==5.0.0; extra == 'train-cuda'
|
|
182
|
-
Requires-Dist: flash-attn>=2.7; extra == 'train-cuda'
|
|
183
|
-
Requires-Dist: flash-linear-attention>=0.2; extra == 'train-cuda'
|
|
184
173
|
Requires-Dist: huggingface-hub==1.18.0; extra == 'train-cuda'
|
|
185
174
|
Requires-Dist: kernels<0.13,>=0.12; extra == 'train-cuda'
|
|
186
175
|
Requires-Dist: peft==0.19.1; extra == 'train-cuda'
|
|
@@ -281,12 +270,14 @@ The full per-source map:
|
|
|
281
270
|
# 1. Install uv (Python package manager, ~10MB)
|
|
282
271
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
283
272
|
|
|
284
|
-
# 2. Install
|
|
285
|
-
uv pip install torch==2.12.0 torchvision==0.27.0 triton
|
|
286
|
-
|
|
287
|
-
# 3. Install AttackLM from PyPI with the full CUDA training stack
|
|
273
|
+
# 2. Install AttackLM with the full CUDA training stack
|
|
288
274
|
uv pip install "attacklm[all]"
|
|
289
275
|
|
|
276
|
+
# 3. (Optional) Install flash-attn for 2-3x faster training on Qwen3-Next models
|
|
277
|
+
# --no-build-isolation is required because flash-attn needs torch at build time
|
|
278
|
+
# but doesn't declare it in its build-system.requires
|
|
279
|
+
uv pip install "attacklm[flash-attn]" --no-build-isolation
|
|
280
|
+
|
|
290
281
|
# 4. Clone the repo for the training data (the PyPI package is code-only)
|
|
291
282
|
git clone https://github.com/Veedubin/AttackLM.git
|
|
292
283
|
cd AttackLM
|
|
@@ -344,13 +335,23 @@ build anything by hand.
|
|
|
344
335
|
|
|
345
336
|
**Install from PyPI (recommended):**
|
|
346
337
|
```bash
|
|
347
|
-
#
|
|
348
|
-
uv pip install
|
|
338
|
+
# Full CUDA training stack (torch, bitsandbytes, trl, peft, transformers, etc.)
|
|
339
|
+
uv pip install "attacklm[all]"
|
|
340
|
+
|
|
341
|
+
# Optional: flash-attn for 2-3x faster training (Qwen3-Next, packing mode)
|
|
342
|
+
# --no-build-isolation is required because flash-attn needs torch at build time
|
|
343
|
+
# but doesn't declare it in its build-system.requires
|
|
344
|
+
uv pip install "attacklm[flash-attn]" --no-build-isolation
|
|
345
|
+
|
|
346
|
+
# Optional: Unsloth for 2-5x faster training + 70% less VRAM
|
|
347
|
+
# Must be separate because it conflicts with trl==1.5.1 (needs trl<=0.24.0)
|
|
348
|
+
uv pip install "attacklm[unsloth]"
|
|
349
|
+
|
|
350
|
+
# ROCm stack (AMD GPUs)
|
|
351
|
+
uv pip install "attacklm[all-rocm]"
|
|
349
352
|
|
|
350
|
-
#
|
|
351
|
-
uv pip install "attacklm[
|
|
352
|
-
uv pip install "attacklm[all-rocm]" # ROCm training stack
|
|
353
|
-
uv pip install "attacklm[infer]" # CPU / Apple Silicon (inference only)
|
|
353
|
+
# Inference only (CPU / Apple Silicon, no GPU needed)
|
|
354
|
+
uv pip install "attacklm[infer]"
|
|
354
355
|
```
|
|
355
356
|
|
|
356
357
|
Then clone the repo for the training data: `git clone https://github.com/Veedubin/AttackLM.git`
|
|
@@ -72,12 +72,14 @@ The full per-source map:
|
|
|
72
72
|
# 1. Install uv (Python package manager, ~10MB)
|
|
73
73
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
74
74
|
|
|
75
|
-
# 2. Install
|
|
76
|
-
uv pip install torch==2.12.0 torchvision==0.27.0 triton
|
|
77
|
-
|
|
78
|
-
# 3. Install AttackLM from PyPI with the full CUDA training stack
|
|
75
|
+
# 2. Install AttackLM with the full CUDA training stack
|
|
79
76
|
uv pip install "attacklm[all]"
|
|
80
77
|
|
|
78
|
+
# 3. (Optional) Install flash-attn for 2-3x faster training on Qwen3-Next models
|
|
79
|
+
# --no-build-isolation is required because flash-attn needs torch at build time
|
|
80
|
+
# but doesn't declare it in its build-system.requires
|
|
81
|
+
uv pip install "attacklm[flash-attn]" --no-build-isolation
|
|
82
|
+
|
|
81
83
|
# 4. Clone the repo for the training data (the PyPI package is code-only)
|
|
82
84
|
git clone https://github.com/Veedubin/AttackLM.git
|
|
83
85
|
cd AttackLM
|
|
@@ -135,13 +137,23 @@ build anything by hand.
|
|
|
135
137
|
|
|
136
138
|
**Install from PyPI (recommended):**
|
|
137
139
|
```bash
|
|
138
|
-
#
|
|
139
|
-
uv pip install
|
|
140
|
+
# Full CUDA training stack (torch, bitsandbytes, trl, peft, transformers, etc.)
|
|
141
|
+
uv pip install "attacklm[all]"
|
|
142
|
+
|
|
143
|
+
# Optional: flash-attn for 2-3x faster training (Qwen3-Next, packing mode)
|
|
144
|
+
# --no-build-isolation is required because flash-attn needs torch at build time
|
|
145
|
+
# but doesn't declare it in its build-system.requires
|
|
146
|
+
uv pip install "attacklm[flash-attn]" --no-build-isolation
|
|
147
|
+
|
|
148
|
+
# Optional: Unsloth for 2-5x faster training + 70% less VRAM
|
|
149
|
+
# Must be separate because it conflicts with trl==1.5.1 (needs trl<=0.24.0)
|
|
150
|
+
uv pip install "attacklm[unsloth]"
|
|
151
|
+
|
|
152
|
+
# ROCm stack (AMD GPUs)
|
|
153
|
+
uv pip install "attacklm[all-rocm]"
|
|
140
154
|
|
|
141
|
-
#
|
|
142
|
-
uv pip install "attacklm[
|
|
143
|
-
uv pip install "attacklm[all-rocm]" # ROCm training stack
|
|
144
|
-
uv pip install "attacklm[infer]" # CPU / Apple Silicon (inference only)
|
|
155
|
+
# Inference only (CPU / Apple Silicon, no GPU needed)
|
|
156
|
+
uv pip install "attacklm[infer]"
|
|
145
157
|
```
|
|
146
158
|
|
|
147
159
|
Then clone the repo for the training data: `git clone https://github.com/Veedubin/AttackLM.git`
|
|
@@ -150,7 +150,14 @@ rocm = [
|
|
|
150
150
|
# `causal_conv1d` and `flash_linear_attention` are CUDA C++ extensions.
|
|
151
151
|
# ROCm users can SKIP these — the Qwen3NextForCausalLM modeling has pure-PyTorch
|
|
152
152
|
# fallbacks (slower but works).
|
|
153
|
-
|
|
153
|
+
#
|
|
154
|
+
# IMPORTANT: flash-attn and causal-conv1d need torch at build time but don't
|
|
155
|
+
# declare it in their build-system.requires. They are NOT included in [all]
|
|
156
|
+
# or [train-cuda] — install them separately AFTER torch is in the environment:
|
|
157
|
+
# uv pip install attacklm[all]
|
|
158
|
+
# uv pip install attacklm[flash-attn]
|
|
159
|
+
cuda-extras = []
|
|
160
|
+
flash-attn = [
|
|
154
161
|
"flash-attn>=2.7", # requires CUDA dev tools to build
|
|
155
162
|
"causal-conv1d>=1.4", # CUDA-only
|
|
156
163
|
"flash-linear-attention>=0.2", # CUDA-only
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.5.6"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.5.4"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/attacklm-synthetic/LICENSE.md
RENAMED
|
File without changes
|
{attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/attacklm-synthetic/SOURCE.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/metasploit-framework/LICENSE.md
RENAMED
|
File without changes
|
{attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/metasploit-framework/SOURCE.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/mitre-atlas-arsenal/LICENSE.md
RENAMED
|
File without changes
|
{attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/mitre-atlas-arsenal/SOURCE.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/threathunter-playbook/LICENSE.md
RENAMED
|
File without changes
|
{attacklm-0.5.4 → attacklm-0.5.6}/data/datasets/buckets/sources/threathunter-playbook/SOURCE.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|