attacklm 0.5.7__tar.gz → 0.5.8__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.7 → attacklm-0.5.8}/PKG-INFO +19 -34
- {attacklm-0.5.7 → attacklm-0.5.8}/README.md +18 -33
- attacklm-0.5.8/src/attacklm/__version__.py +1 -0
- attacklm-0.5.7/src/attacklm/__version__.py +0 -1
- {attacklm-0.5.7 → attacklm-0.5.8}/.github/workflows/release.yml +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/.gitignore +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/ATTRIBUTION.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/CHANGELOG.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/CONTRIBUTING.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/EVALUATION.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/LICENSE +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/MANIFEST.in +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/Makefile +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/NOTICE +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/QA_BEFORE_RELEASES.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/REPLAY_PLAN.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/ATTRIBUTION.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/LEGAL.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/REMOVAL.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/bench/questions.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/bench/speed_context.txt +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/ATTRIBUTION.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/GEMINI_RESEARCH_2026-06-11.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/acquisition_report.json +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/manifest.json +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/README.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/_index.json +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/atomic-red-team/LICENSE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/atomic-red-team/SOURCE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/atomic-red-team/base/collection/data.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/atomic-red-team/base/discovery/data.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/atomic-red-team/base/execution/data.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/atomic-red-team/base/exfiltration/data.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/atomic-red-team/base/persistence/data.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/attacklm-synthetic/LICENSE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/attacklm-synthetic/SOURCE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/attacklm-synthetic/orchestrator/data.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/azure-pyrit/LICENSE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/azure-pyrit/SOURCE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/cyberark-fuzzyai/LICENSE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/cyberark-fuzzyai/SOURCE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/elastic-rules/LICENSE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/elastic-rules/SOURCE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/llm-generated/LICENSE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/llm-generated/SOURCE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/llm-generated/cloud/attacks/data_llm.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/llm-generated/ics/attacks/data_llm.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/llm-generated/social_engineering/phishing/data_llm.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/llm-generated/wireless/attacks/data_llm.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/metasploit-framework/LICENSE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/metasploit-framework/SOURCE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/metasploit-framework/base/collection/data.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/metasploit-framework/base/credential_access/data.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/metasploit-framework/base/defense_evasion/data.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/metasploit-framework/base/discovery/data.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/metasploit-framework/base/execution/data.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/metasploit-framework/base/lateral_movement/data.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/metasploit-framework/base/persistence/data.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/metasploit-framework/base/privilege_escalation/data.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/metasploit-framework/tools/metasploit/data.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/mitre-atlas-arsenal/LICENSE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/mitre-atlas-arsenal/SOURCE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/mitre-atlas-arsenal/base/discovery/data.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/mitre-stockpile/LICENSE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/mitre-stockpile/SOURCE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/mitre-stockpile/base/collection/data.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/mitre-stockpile/base/discovery/data.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/mitre-stockpile/base/execution/data.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/mitre-stockpile/base/exfiltration/data.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/mitre-stockpile/base/persistence/data.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/mordor/LICENSE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/mordor/SOURCE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/nist-ir/LICENSE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/nist-ir/SOURCE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/nvidia-garak/LICENSE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/nvidia-garak/SOURCE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/nvidia-garak/ai/jailbreaking/data.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/promptfoo/LICENSE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/promptfoo/SOURCE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/promptfoo/ai/prompt-injection/data.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/promptmap/LICENSE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/promptmap/SOURCE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/promptmap/ai/prompt-injection/data.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/replay-general/LICENSE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/replay-general/SOURCE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/replay-general/base/replay/data_code.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/replay-general/base/replay/data_conversation.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/replay-general/base/replay/data_factual.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/replay-general/base/replay/data_reasoning.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/sigma-hq/LICENSE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/sigma-hq/SOURCE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/splunk-content/LICENSE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/splunk-content/SOURCE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/threathunter-playbook/LICENSE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/datasets/buckets/sources/threathunter-playbook/SOURCE.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/golden/prompts.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/reference/prompts.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/steering/prompts/opsec_aware.txt +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/steering/prompts/opsec_unaware.txt +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/steering/prompts/succinct.txt +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/data/steering/prompts/verbose.txt +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/experiments/README.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/experiments/synthetic_dataset_mutator_evol_instruct.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/hf/.gitattributes +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/hf/README.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/hf/data/manifest.json +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/hf/dataset_infos.json +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/hf/scripts/build_hf_dataset.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/hf/scripts/push_to_hf.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/hpo_runs/.gitkeep +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/hpo_runs/hpo_state.json +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/hpo_runs/hpo_trial_dataset.jsonl +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/logs/.gitkeep +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/notes/BLUE_TEAM_DESIGN_v0.5.0.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/notes/EVAL_DESIGN_v0.4.0.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/notes/STEERING_REVIEW_v0.4.0.md +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/presets/blue-team.json +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/presets/purple-team.json +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/presets/red-team.json +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/pyproject.toml +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/requirements.txt +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/_eval_loader.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/acquire_cloud_attack_dataset.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/acquire_ics_dataset.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/acquire_phishing_dataset.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/acquire_red_team_tactics.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/acquire_replay_general.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/acquire_supply_chain_dataset.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/acquire_web_attack_dataset.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/acquire_wireless_dataset.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/add_attribution.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/audit_dataset.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/augment_attribution.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/balance_buckets.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/bucket_loader.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/build.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/classify_unrouted_modules.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/clone_repos.sh +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/collect_reference.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/compare_scores.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/convert_to_gguf.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/dedupe_and_import_llm.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/demo.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/device_utils.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/domain_bench.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/eval_retention.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/extract_ai_tools_to_jsonl.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/extract_atomic_red_team_to_jsonl.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/extract_by_tactic.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/extract_caldera_plugins_to_jsonl.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/extract_elastic_rules.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/extract_infection_monkey_to_jsonl.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/extract_mordor.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/extract_nist_ir.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/extract_rta_to_jsonl.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/extract_sigma_defensive.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/extract_splunk_content.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/extract_threathunter_playbook.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/generate_dataset.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/generate_dataset_deterministic.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/generate_hybrid_dataset.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/generate_metasploit_dataset.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/generate_orchestrator.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/generate_prompt_injection.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/generate_source_layout.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/generate_synthetic_scarce.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/golden_vectors.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/hpo_runner.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/import_gguf.sh +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/import_to_lmstudio.sh +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/infer.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/init_pipeline.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/llm_generate_wrapper.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/merge_adapter.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/migrate_buckets_to_v021.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/migrate_v015_to_v020.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/mitre_tactic_lookup.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/parse_metasploit_to_jsonl.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/rebuild_manifest.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/register_ollama.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/reorganize_buckets.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/replay_mixer.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/run_all_acquisitions.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/score_candidates.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/scrub_bpl_callback.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/setup_buckets.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/speed_bench.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/stamp_and_reorg.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/steering.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/train_all.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/train_template.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/scripts/validate_per_category.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/src/attacklm/__init__.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/src/attacklm/cli.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/tests/test_balance_buckets.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/tests/test_collect_reference.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/tests/test_compare_scores.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/tests/test_domain_bench.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/tests/test_eval_loader.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/tests/test_eval_retention.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/tests/test_golden_vectors.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/tests/test_init_pipeline.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/tests/test_replay_mixer.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/tests/test_score_candidates.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/tests/test_speed_bench.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/tests/test_steering.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/tests/test_thinking_models.py +0 -0
- {attacklm-0.5.7 → attacklm-0.5.8}/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.8
|
|
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
|
|
@@ -273,19 +273,14 @@ curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
|
273
273
|
# 2. Install AttackLM with the full CUDA training stack
|
|
274
274
|
uv pip install "attacklm[all]"
|
|
275
275
|
|
|
276
|
-
# 3.
|
|
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
|
-
|
|
281
|
-
# 4. Clone the repo for the training data (the PyPI package is code-only)
|
|
276
|
+
# 3. Clone the repo for the training data (the PyPI package is code-only)
|
|
282
277
|
git clone https://github.com/Veedubin/AttackLM.git
|
|
283
278
|
cd AttackLM
|
|
284
279
|
|
|
285
|
-
#
|
|
280
|
+
# 4. Initialize the dataset (probes local `data/` first; falls back to git clone)
|
|
286
281
|
attacklm-init --yes
|
|
287
282
|
|
|
288
|
-
#
|
|
283
|
+
# 5. Train
|
|
289
284
|
attacklm-train-all --single-model \
|
|
290
285
|
--dataset base/ \
|
|
291
286
|
--base-model huihui-ai/Qwen2.5-Coder-3B-Instruct-abliterated \
|
|
@@ -305,13 +300,10 @@ cd AttackLM
|
|
|
305
300
|
# 3. Install as an editable Python package (gets you all `attacklm-*` commands)
|
|
306
301
|
uv pip install -e ".[all]"
|
|
307
302
|
|
|
308
|
-
# 4.
|
|
309
|
-
uv pip install -e ".[flash-attn]" --no-build-isolation
|
|
310
|
-
|
|
311
|
-
# 5. Initialize the dataset
|
|
303
|
+
# 4. Initialize the dataset
|
|
312
304
|
attacklm-init --yes
|
|
313
305
|
|
|
314
|
-
#
|
|
306
|
+
# 5. Train
|
|
315
307
|
attacklm-train-all --single-model \
|
|
316
308
|
--dataset base/ \
|
|
317
309
|
--base-model huihui-ai/Qwen2.5-Coder-3B-Instruct-abliterated \
|
|
@@ -341,11 +333,6 @@ build anything by hand.
|
|
|
341
333
|
# Full CUDA training stack (torch, bitsandbytes, trl, peft, transformers, etc.)
|
|
342
334
|
uv pip install "attacklm[all]"
|
|
343
335
|
|
|
344
|
-
# Optional: flash-attn for 2-3x faster training (Qwen3-Next, packing mode)
|
|
345
|
-
# --no-build-isolation is required because flash-attn needs torch at build time
|
|
346
|
-
# but doesn't declare it in its build-system.requires
|
|
347
|
-
uv pip install "attacklm[flash-attn]" --no-build-isolation
|
|
348
|
-
|
|
349
336
|
# Optional: Unsloth for 2-5x faster training + 70% less VRAM
|
|
350
337
|
# Must be separate because it conflicts with trl==1.5.1 (needs trl<=0.24.0)
|
|
351
338
|
uv pip install "attacklm[unsloth]"
|
|
@@ -357,6 +344,13 @@ uv pip install "attacklm[all-rocm]"
|
|
|
357
344
|
uv pip install "attacklm[infer]"
|
|
358
345
|
```
|
|
359
346
|
|
|
347
|
+
> **flash-attn is NOT included in [all].** It compiles CUDA kernels from
|
|
348
|
+
> source (no pre-built wheels) and can consume 20-30GB+ RAM during
|
|
349
|
+
> compilation — enough to OOM a 32GB system. The training code falls back
|
|
350
|
+
> to PyTorch's built-in `sdpa` attention, which works fine for Qwen2.5.
|
|
351
|
+
> flash-attn is only needed for Qwen3-Next models or `--packing` mode.
|
|
352
|
+
> If you have 64GB+ RAM and want it: `uv pip install "attacklm[flash-attn]" --no-build-isolation`
|
|
353
|
+
|
|
360
354
|
Then clone the repo for the training data: `git clone https://github.com/Veedubin/AttackLM.git`
|
|
361
355
|
|
|
362
356
|
**Install from source** (editable, for development):
|
|
@@ -373,25 +367,16 @@ cd AttackLM
|
|
|
373
367
|
|
|
374
368
|
# Full CUDA training stack (torch, bitsandbytes, trl, peft, transformers, etc.)
|
|
375
369
|
uv pip install -e ".[all]"
|
|
376
|
-
|
|
377
|
-
# Optional: flash-attn for 2-3x faster training (Qwen3-Next, packing mode)
|
|
378
|
-
# --no-build-isolation is required because flash-attn needs torch at build time
|
|
379
|
-
# but doesn't declare it in its build-system.requires
|
|
380
|
-
uv pip install -e ".[flash-attn]" --no-build-isolation
|
|
381
370
|
```
|
|
382
371
|
|
|
383
372
|
That installs everything: `torch` (CUDA wheel from PyPI), `bitsandbytes`,
|
|
384
|
-
`transformers`, `peft`, `trl`. The
|
|
385
|
-
`
|
|
386
|
-
`[flash-attn]` extra (they need torch at build time and can't be in `[all]`).
|
|
373
|
+
`transformers`, `peft`, `trl`. The training code uses PyTorch's built-in
|
|
374
|
+
`sdpa` attention by default — no flash-attn needed for Qwen2.5 models.
|
|
387
375
|
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
| `flash-attn` | Built from source via pip (~5 min, needs `--no-build-isolation`) |
|
|
393
|
-
| `causal-conv1d` | Pre-built wheel from PyPI |
|
|
394
|
-
| `flash-linear-attention` | Pre-built wheel from PyPI |
|
|
376
|
+
> **flash-attn is NOT included.** It compiles CUDA kernels from source
|
|
377
|
+
> (no pre-built wheels) and can consume 20-30GB+ RAM during compilation.
|
|
378
|
+
> If you have 64GB+ RAM and want it for Qwen3-Next or `--packing` mode:
|
|
379
|
+
> `MAX_JOBS=2 uv pip install -e ".[flash-attn]" --no-build-isolation`
|
|
395
380
|
|
|
396
381
|
---
|
|
397
382
|
|
|
@@ -75,19 +75,14 @@ curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
|
75
75
|
# 2. Install AttackLM with the full CUDA training stack
|
|
76
76
|
uv pip install "attacklm[all]"
|
|
77
77
|
|
|
78
|
-
# 3.
|
|
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
|
-
|
|
83
|
-
# 4. Clone the repo for the training data (the PyPI package is code-only)
|
|
78
|
+
# 3. Clone the repo for the training data (the PyPI package is code-only)
|
|
84
79
|
git clone https://github.com/Veedubin/AttackLM.git
|
|
85
80
|
cd AttackLM
|
|
86
81
|
|
|
87
|
-
#
|
|
82
|
+
# 4. Initialize the dataset (probes local `data/` first; falls back to git clone)
|
|
88
83
|
attacklm-init --yes
|
|
89
84
|
|
|
90
|
-
#
|
|
85
|
+
# 5. Train
|
|
91
86
|
attacklm-train-all --single-model \
|
|
92
87
|
--dataset base/ \
|
|
93
88
|
--base-model huihui-ai/Qwen2.5-Coder-3B-Instruct-abliterated \
|
|
@@ -107,13 +102,10 @@ cd AttackLM
|
|
|
107
102
|
# 3. Install as an editable Python package (gets you all `attacklm-*` commands)
|
|
108
103
|
uv pip install -e ".[all]"
|
|
109
104
|
|
|
110
|
-
# 4.
|
|
111
|
-
uv pip install -e ".[flash-attn]" --no-build-isolation
|
|
112
|
-
|
|
113
|
-
# 5. Initialize the dataset
|
|
105
|
+
# 4. Initialize the dataset
|
|
114
106
|
attacklm-init --yes
|
|
115
107
|
|
|
116
|
-
#
|
|
108
|
+
# 5. Train
|
|
117
109
|
attacklm-train-all --single-model \
|
|
118
110
|
--dataset base/ \
|
|
119
111
|
--base-model huihui-ai/Qwen2.5-Coder-3B-Instruct-abliterated \
|
|
@@ -143,11 +135,6 @@ build anything by hand.
|
|
|
143
135
|
# Full CUDA training stack (torch, bitsandbytes, trl, peft, transformers, etc.)
|
|
144
136
|
uv pip install "attacklm[all]"
|
|
145
137
|
|
|
146
|
-
# Optional: flash-attn for 2-3x faster training (Qwen3-Next, packing mode)
|
|
147
|
-
# --no-build-isolation is required because flash-attn needs torch at build time
|
|
148
|
-
# but doesn't declare it in its build-system.requires
|
|
149
|
-
uv pip install "attacklm[flash-attn]" --no-build-isolation
|
|
150
|
-
|
|
151
138
|
# Optional: Unsloth for 2-5x faster training + 70% less VRAM
|
|
152
139
|
# Must be separate because it conflicts with trl==1.5.1 (needs trl<=0.24.0)
|
|
153
140
|
uv pip install "attacklm[unsloth]"
|
|
@@ -159,6 +146,13 @@ uv pip install "attacklm[all-rocm]"
|
|
|
159
146
|
uv pip install "attacklm[infer]"
|
|
160
147
|
```
|
|
161
148
|
|
|
149
|
+
> **flash-attn is NOT included in [all].** It compiles CUDA kernels from
|
|
150
|
+
> source (no pre-built wheels) and can consume 20-30GB+ RAM during
|
|
151
|
+
> compilation — enough to OOM a 32GB system. The training code falls back
|
|
152
|
+
> to PyTorch's built-in `sdpa` attention, which works fine for Qwen2.5.
|
|
153
|
+
> flash-attn is only needed for Qwen3-Next models or `--packing` mode.
|
|
154
|
+
> If you have 64GB+ RAM and want it: `uv pip install "attacklm[flash-attn]" --no-build-isolation`
|
|
155
|
+
|
|
162
156
|
Then clone the repo for the training data: `git clone https://github.com/Veedubin/AttackLM.git`
|
|
163
157
|
|
|
164
158
|
**Install from source** (editable, for development):
|
|
@@ -175,25 +169,16 @@ cd AttackLM
|
|
|
175
169
|
|
|
176
170
|
# Full CUDA training stack (torch, bitsandbytes, trl, peft, transformers, etc.)
|
|
177
171
|
uv pip install -e ".[all]"
|
|
178
|
-
|
|
179
|
-
# Optional: flash-attn for 2-3x faster training (Qwen3-Next, packing mode)
|
|
180
|
-
# --no-build-isolation is required because flash-attn needs torch at build time
|
|
181
|
-
# but doesn't declare it in its build-system.requires
|
|
182
|
-
uv pip install -e ".[flash-attn]" --no-build-isolation
|
|
183
172
|
```
|
|
184
173
|
|
|
185
174
|
That installs everything: `torch` (CUDA wheel from PyPI), `bitsandbytes`,
|
|
186
|
-
`transformers`, `peft`, `trl`. The
|
|
187
|
-
`
|
|
188
|
-
`[flash-attn]` extra (they need torch at build time and can't be in `[all]`).
|
|
175
|
+
`transformers`, `peft`, `trl`. The training code uses PyTorch's built-in
|
|
176
|
+
`sdpa` attention by default — no flash-attn needed for Qwen2.5 models.
|
|
189
177
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
| `flash-attn` | Built from source via pip (~5 min, needs `--no-build-isolation`) |
|
|
195
|
-
| `causal-conv1d` | Pre-built wheel from PyPI |
|
|
196
|
-
| `flash-linear-attention` | Pre-built wheel from PyPI |
|
|
178
|
+
> **flash-attn is NOT included.** It compiles CUDA kernels from source
|
|
179
|
+
> (no pre-built wheels) and can consume 20-30GB+ RAM during compilation.
|
|
180
|
+
> If you have 64GB+ RAM and want it for Qwen3-Next or `--packing` mode:
|
|
181
|
+
> `MAX_JOBS=2 uv pip install -e ".[flash-attn]" --no-build-isolation`
|
|
197
182
|
|
|
198
183
|
---
|
|
199
184
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.5.8"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.5.7"
|
|
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.7 → attacklm-0.5.8}/data/datasets/buckets/sources/attacklm-synthetic/LICENSE.md
RENAMED
|
File without changes
|
{attacklm-0.5.7 → attacklm-0.5.8}/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.7 → attacklm-0.5.8}/data/datasets/buckets/sources/metasploit-framework/LICENSE.md
RENAMED
|
File without changes
|
{attacklm-0.5.7 → attacklm-0.5.8}/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.7 → attacklm-0.5.8}/data/datasets/buckets/sources/mitre-atlas-arsenal/LICENSE.md
RENAMED
|
File without changes
|
{attacklm-0.5.7 → attacklm-0.5.8}/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.7 → attacklm-0.5.8}/data/datasets/buckets/sources/threathunter-playbook/LICENSE.md
RENAMED
|
File without changes
|
{attacklm-0.5.7 → attacklm-0.5.8}/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
|
|
File without changes
|