attacklm 0.8.2__tar.gz → 0.8.4__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.
Files changed (211) hide show
  1. {attacklm-0.8.2 → attacklm-0.8.4}/CHANGELOG.md +26 -0
  2. {attacklm-0.8.2 → attacklm-0.8.4}/PKG-INFO +71 -5
  3. {attacklm-0.8.2 → attacklm-0.8.4}/README.md +70 -4
  4. attacklm-0.8.4/scripts/evolve_pairs.py +1604 -0
  5. attacklm-0.8.4/scripts/evolved_mixer.py +383 -0
  6. attacklm-0.8.4/scripts/filter_evolved.py +801 -0
  7. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/train_all.py +90 -0
  8. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/train_template.py +89 -0
  9. attacklm-0.8.4/src/attacklm/__version__.py +1 -0
  10. {attacklm-0.8.2 → attacklm-0.8.4}/src/attacklm/_project_root.py +1 -0
  11. attacklm-0.8.4/tests/test_evolve_pairs.py +1284 -0
  12. attacklm-0.8.2/src/attacklm/__version__.py +0 -1
  13. {attacklm-0.8.2 → attacklm-0.8.4}/.github/workflows/release.yml +0 -0
  14. {attacklm-0.8.2 → attacklm-0.8.4}/.gitignore +0 -0
  15. {attacklm-0.8.2 → attacklm-0.8.4}/ATTRIBUTION.md +0 -0
  16. {attacklm-0.8.2 → attacklm-0.8.4}/CONTRIBUTING.md +0 -0
  17. {attacklm-0.8.2 → attacklm-0.8.4}/EVALUATION.md +0 -0
  18. {attacklm-0.8.2 → attacklm-0.8.4}/LICENSE +0 -0
  19. {attacklm-0.8.2 → attacklm-0.8.4}/MANIFEST.in +0 -0
  20. {attacklm-0.8.2 → attacklm-0.8.4}/Makefile +0 -0
  21. {attacklm-0.8.2 → attacklm-0.8.4}/NOTICE +0 -0
  22. {attacklm-0.8.2 → attacklm-0.8.4}/attacklm-gui/README.md +0 -0
  23. {attacklm-0.8.2 → attacklm-0.8.4}/attacklm-gui/pyproject.toml +0 -0
  24. {attacklm-0.8.2 → attacklm-0.8.4}/attacklm-gui/src/attacklm_gui/__init__.py +0 -0
  25. {attacklm-0.8.2 → attacklm-0.8.4}/attacklm-gui/src/attacklm_gui/app.py +0 -0
  26. {attacklm-0.8.2 → attacklm-0.8.4}/attacklm-gui/src/attacklm_gui/cli.py +0 -0
  27. {attacklm-0.8.2 → attacklm-0.8.4}/attacklm-gui/src/attacklm_gui/presets.py +0 -0
  28. {attacklm-0.8.2 → attacklm-0.8.4}/attacklm-gui/src/attacklm_gui/runner.py +0 -0
  29. {attacklm-0.8.2 → attacklm-0.8.4}/attacklm-gui/src/attacklm_gui/screens/__init__.py +0 -0
  30. {attacklm-0.8.2 → attacklm-0.8.4}/attacklm-gui/src/attacklm_gui/screens/command_forms.py +0 -0
  31. {attacklm-0.8.2 → attacklm-0.8.4}/attacklm-gui/src/attacklm_gui/screens/main_menu.py +0 -0
  32. {attacklm-0.8.2 → attacklm-0.8.4}/attacklm-gui/src/attacklm_gui/screens/train_form.py +0 -0
  33. {attacklm-0.8.2 → attacklm-0.8.4}/attacklm-gui/src/attacklm_gui/screens/train_live.py +0 -0
  34. {attacklm-0.8.2 → attacklm-0.8.4}/attacklm-gui/src/attacklm_gui/widgets/__init__.py +0 -0
  35. {attacklm-0.8.2 → attacklm-0.8.4}/attacklm-gui/tests/test_gui.py +0 -0
  36. {attacklm-0.8.2 → attacklm-0.8.4}/data/ATTRIBUTION.md +0 -0
  37. {attacklm-0.8.2 → attacklm-0.8.4}/data/LEGAL.md +0 -0
  38. {attacklm-0.8.2 → attacklm-0.8.4}/data/REMOVAL.md +0 -0
  39. {attacklm-0.8.2 → attacklm-0.8.4}/data/bench/questions.jsonl +0 -0
  40. {attacklm-0.8.2 → attacklm-0.8.4}/data/bench/speed_context.txt +0 -0
  41. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/acquisition_report.json +0 -0
  42. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/manifest.json +0 -0
  43. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/README.md +0 -0
  44. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/_index.json +0 -0
  45. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/atomic-red-team/LICENSE.md +0 -0
  46. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/atomic-red-team/SOURCE.md +0 -0
  47. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/atomic-red-team/base/collection/data.jsonl +0 -0
  48. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/atomic-red-team/base/discovery/data.jsonl +0 -0
  49. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/atomic-red-team/base/execution/data.jsonl +0 -0
  50. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/atomic-red-team/base/exfiltration/data.jsonl +0 -0
  51. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/atomic-red-team/base/persistence/data.jsonl +0 -0
  52. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/attacklm-synthetic/LICENSE.md +0 -0
  53. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/attacklm-synthetic/SOURCE.md +0 -0
  54. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/attacklm-synthetic/orchestrator/data.jsonl +0 -0
  55. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/azure-pyrit/LICENSE.md +0 -0
  56. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/azure-pyrit/SOURCE.md +0 -0
  57. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/cyberark-fuzzyai/LICENSE.md +0 -0
  58. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/cyberark-fuzzyai/SOURCE.md +0 -0
  59. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/elastic-rules/LICENSE.md +0 -0
  60. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/elastic-rules/SOURCE.md +0 -0
  61. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/elastic-rules/defensive/detection_engineering/data.jsonl +0 -0
  62. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/llm-generated/LICENSE.md +0 -0
  63. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/llm-generated/SOURCE.md +0 -0
  64. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/llm-generated/cloud/attacks/data_llm.jsonl +0 -0
  65. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/llm-generated/ics/attacks/data_llm.jsonl +0 -0
  66. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/llm-generated/social_engineering/phishing/data_llm.jsonl +0 -0
  67. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/llm-generated/wireless/attacks/data_llm.jsonl +0 -0
  68. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/metasploit-framework/LICENSE.md +0 -0
  69. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/metasploit-framework/SOURCE.md +0 -0
  70. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/metasploit-framework/base/collection/data.jsonl +0 -0
  71. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/metasploit-framework/base/credential_access/data.jsonl +0 -0
  72. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/metasploit-framework/base/defense_evasion/data.jsonl +0 -0
  73. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/metasploit-framework/base/discovery/data.jsonl +0 -0
  74. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/metasploit-framework/base/execution/data.jsonl +0 -0
  75. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/metasploit-framework/base/lateral_movement/data.jsonl +0 -0
  76. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/metasploit-framework/base/persistence/data.jsonl +0 -0
  77. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/metasploit-framework/base/privilege_escalation/data.jsonl +0 -0
  78. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/metasploit-framework/tools/metasploit/data.jsonl +0 -0
  79. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/mitre-atlas-arsenal/LICENSE.md +0 -0
  80. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/mitre-atlas-arsenal/SOURCE.md +0 -0
  81. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/mitre-atlas-arsenal/base/discovery/data.jsonl +0 -0
  82. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/mitre-stockpile/LICENSE.md +0 -0
  83. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/mitre-stockpile/SOURCE.md +0 -0
  84. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/mitre-stockpile/base/collection/data.jsonl +0 -0
  85. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/mitre-stockpile/base/discovery/data.jsonl +0 -0
  86. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/mitre-stockpile/base/execution/data.jsonl +0 -0
  87. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/mitre-stockpile/base/exfiltration/data.jsonl +0 -0
  88. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/mitre-stockpile/base/persistence/data.jsonl +0 -0
  89. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/mordor/LICENSE.md +0 -0
  90. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/mordor/SOURCE.md +0 -0
  91. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/mordor/defensive/threat_hunting/data.jsonl +0 -0
  92. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/nist-ir/LICENSE.md +0 -0
  93. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/nist-ir/SOURCE.md +0 -0
  94. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/nist-ir/defensive/incident_response/data.jsonl +0 -0
  95. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/nvidia-garak/LICENSE.md +0 -0
  96. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/nvidia-garak/SOURCE.md +0 -0
  97. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/nvidia-garak/ai/jailbreaking/data.jsonl +0 -0
  98. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/promptfoo/LICENSE.md +0 -0
  99. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/promptfoo/SOURCE.md +0 -0
  100. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/promptfoo/ai/prompt-injection/data.jsonl +0 -0
  101. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/promptmap/LICENSE.md +0 -0
  102. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/promptmap/SOURCE.md +0 -0
  103. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/promptmap/ai/prompt-injection/data.jsonl +0 -0
  104. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/replay-general/LICENSE.md +0 -0
  105. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/replay-general/SOURCE.md +0 -0
  106. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/replay-general/base/replay/data_code.jsonl +0 -0
  107. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/replay-general/base/replay/data_conversation.jsonl +0 -0
  108. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/replay-general/base/replay/data_factual.jsonl +0 -0
  109. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/replay-general/base/replay/data_reasoning.jsonl +0 -0
  110. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/sigma-hq/LICENSE.md +0 -0
  111. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/sigma-hq/SOURCE.md +0 -0
  112. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/sigma-hq/defensive/detection_engineering/data.jsonl +0 -0
  113. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/splunk-content/LICENSE.md +0 -0
  114. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/splunk-content/SOURCE.md +0 -0
  115. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/splunk-content/defensive/detection_engineering/data.jsonl +0 -0
  116. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/threathunter-playbook/LICENSE.md +0 -0
  117. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/threathunter-playbook/SOURCE.md +0 -0
  118. {attacklm-0.8.2 → attacklm-0.8.4}/data/datasets/buckets/sources/threathunter-playbook/defensive/threat_hunting/data.jsonl +0 -0
  119. {attacklm-0.8.2 → attacklm-0.8.4}/data/golden/prompts.jsonl +0 -0
  120. {attacklm-0.8.2 → attacklm-0.8.4}/data/reference/prompts.jsonl +0 -0
  121. {attacklm-0.8.2 → attacklm-0.8.4}/data/steering/prompts/opsec_aware.txt +0 -0
  122. {attacklm-0.8.2 → attacklm-0.8.4}/data/steering/prompts/opsec_unaware.txt +0 -0
  123. {attacklm-0.8.2 → attacklm-0.8.4}/data/steering/prompts/succinct.txt +0 -0
  124. {attacklm-0.8.2 → attacklm-0.8.4}/data/steering/prompts/verbose.txt +0 -0
  125. {attacklm-0.8.2 → attacklm-0.8.4}/experiments/README.md +0 -0
  126. {attacklm-0.8.2 → attacklm-0.8.4}/experiments/synthetic_dataset_mutator_evol_instruct.py +0 -0
  127. {attacklm-0.8.2 → attacklm-0.8.4}/hf/.gitattributes +0 -0
  128. {attacklm-0.8.2 → attacklm-0.8.4}/hf/README.md +0 -0
  129. {attacklm-0.8.2 → attacklm-0.8.4}/hf/data/manifest.json +0 -0
  130. {attacklm-0.8.2 → attacklm-0.8.4}/hf/dataset_infos.json +0 -0
  131. {attacklm-0.8.2 → attacklm-0.8.4}/hf/scripts/build_hf_dataset.py +0 -0
  132. {attacklm-0.8.2 → attacklm-0.8.4}/hf/scripts/push_to_hf.py +0 -0
  133. {attacklm-0.8.2 → attacklm-0.8.4}/hpo_runs/.gitkeep +0 -0
  134. {attacklm-0.8.2 → attacklm-0.8.4}/hpo_runs/hpo_state.json +0 -0
  135. {attacklm-0.8.2 → attacklm-0.8.4}/hpo_runs/hpo_trial_dataset.jsonl +0 -0
  136. {attacklm-0.8.2 → attacklm-0.8.4}/logs/.gitkeep +0 -0
  137. {attacklm-0.8.2 → attacklm-0.8.4}/pipeline.example.yaml +0 -0
  138. {attacklm-0.8.2 → attacklm-0.8.4}/presets/blue-team.json +0 -0
  139. {attacklm-0.8.2 → attacklm-0.8.4}/presets/purple-team.json +0 -0
  140. {attacklm-0.8.2 → attacklm-0.8.4}/presets/red-team.json +0 -0
  141. {attacklm-0.8.2 → attacklm-0.8.4}/pyproject.toml +0 -0
  142. {attacklm-0.8.2 → attacklm-0.8.4}/requirements.txt +0 -0
  143. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/_eval_loader.py +0 -0
  144. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/acquire_cloud_attack_dataset.py +0 -0
  145. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/acquire_ics_dataset.py +0 -0
  146. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/acquire_phishing_dataset.py +0 -0
  147. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/acquire_red_team_tactics.py +0 -0
  148. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/acquire_replay_general.py +0 -0
  149. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/acquire_supply_chain_dataset.py +0 -0
  150. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/acquire_web_attack_dataset.py +0 -0
  151. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/acquire_wireless_dataset.py +0 -0
  152. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/audit_dataset.py +0 -0
  153. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/balance_buckets.py +0 -0
  154. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/bucket_loader.py +0 -0
  155. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/build.py +0 -0
  156. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/clone_repos.sh +0 -0
  157. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/collect_reference.py +0 -0
  158. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/compare_scores.py +0 -0
  159. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/convert_to_gguf.py +0 -0
  160. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/demo.py +0 -0
  161. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/device_utils.py +0 -0
  162. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/domain_bench.py +0 -0
  163. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/eval_retention.py +0 -0
  164. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/extract_ai_tools_to_jsonl.py +0 -0
  165. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/extract_atomic_red_team_to_jsonl.py +0 -0
  166. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/extract_by_tactic.py +0 -0
  167. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/extract_caldera_plugins_to_jsonl.py +0 -0
  168. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/extract_elastic_rules.py +0 -0
  169. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/extract_infection_monkey_to_jsonl.py +0 -0
  170. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/extract_mordor.py +0 -0
  171. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/extract_nist_ir.py +0 -0
  172. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/extract_rta_to_jsonl.py +0 -0
  173. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/extract_sigma_defensive.py +0 -0
  174. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/extract_splunk_content.py +0 -0
  175. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/extract_threathunter_playbook.py +0 -0
  176. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/generate_synthetic_scarce.py +0 -0
  177. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/golden_vectors.py +0 -0
  178. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/hpo_runner.py +0 -0
  179. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/import_gguf.sh +0 -0
  180. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/import_to_lmstudio.sh +0 -0
  181. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/infer.py +0 -0
  182. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/init_pipeline.py +0 -0
  183. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/merge_adapter.py +0 -0
  184. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/mitre_tactic_lookup.py +0 -0
  185. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/package_dataset.py +0 -0
  186. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/parse_metasploit_to_jsonl.py +0 -0
  187. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/pipeline.py +0 -0
  188. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/rebuild_manifest.py +0 -0
  189. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/register_ollama.py +0 -0
  190. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/reorganize_buckets.py +0 -0
  191. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/replay_mixer.py +0 -0
  192. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/score_candidates.py +0 -0
  193. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/setup_buckets.py +0 -0
  194. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/speed_bench.py +0 -0
  195. {attacklm-0.8.2 → attacklm-0.8.4}/scripts/steering.py +0 -0
  196. {attacklm-0.8.2 → attacklm-0.8.4}/src/attacklm/__init__.py +0 -0
  197. {attacklm-0.8.2 → attacklm-0.8.4}/src/attacklm/cli.py +0 -0
  198. {attacklm-0.8.2 → attacklm-0.8.4}/tests/test_balance_buckets.py +0 -0
  199. {attacklm-0.8.2 → attacklm-0.8.4}/tests/test_collect_reference.py +0 -0
  200. {attacklm-0.8.2 → attacklm-0.8.4}/tests/test_compare_scores.py +0 -0
  201. {attacklm-0.8.2 → attacklm-0.8.4}/tests/test_domain_bench.py +0 -0
  202. {attacklm-0.8.2 → attacklm-0.8.4}/tests/test_eval_loader.py +0 -0
  203. {attacklm-0.8.2 → attacklm-0.8.4}/tests/test_eval_retention.py +0 -0
  204. {attacklm-0.8.2 → attacklm-0.8.4}/tests/test_golden_vectors.py +0 -0
  205. {attacklm-0.8.2 → attacklm-0.8.4}/tests/test_init_pipeline.py +0 -0
  206. {attacklm-0.8.2 → attacklm-0.8.4}/tests/test_replay_mixer.py +0 -0
  207. {attacklm-0.8.2 → attacklm-0.8.4}/tests/test_score_candidates.py +0 -0
  208. {attacklm-0.8.2 → attacklm-0.8.4}/tests/test_speed_bench.py +0 -0
  209. {attacklm-0.8.2 → attacklm-0.8.4}/tests/test_steering.py +0 -0
  210. {attacklm-0.8.2 → attacklm-0.8.4}/tests/test_thinking_models.py +0 -0
  211. {attacklm-0.8.2 → attacklm-0.8.4}/uv.lock +0 -0
@@ -1,7 +1,33 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.8.4] — 2026-07-01 — Documentation overhaul
4
+
5
+ ### Changed
6
+ - **Tagline updated**: Now lists all 5 training methods (QLoRA, GaLore, Q-GaLore, Spectrum, PiSSA) instead of just QLoRA
7
+ - **GUI section expanded**: Added dedicated Terminal GUI section with live monitor screenshot, preset list, and screen-by-screen breakdown
8
+ - **AttackLM-Models README synced**: Updated pair count (16,027 → 24,652), added missing defensive sources, updated all hyphenated commands to unified CLI format
9
+
10
+ ---
11
+
12
+ ## [0.8.3] — 2026-07-01 — Training pair evolution
13
+
14
+ ### Added
15
+ - **Training pair evolution**: New `scripts/evolve_pairs.py` with 3 strategies to expand short training pairs into longer, richer examples
16
+ - **Evol-Instruct**: Rewrites answers with deeper reasoning, edge cases, and detection artifacts (3-5x longer)
17
+ - **Multi-turn Decomposition**: Breaks Q&A into 3-5 turn conversations for better training flow
18
+ - **Chain-of-Thought Injection**: Adds explicit reasoning steps before final answers
19
+ - **Quality filtering**: `scripts/filter_evolved.py` validates evolved pairs (structure, length, provenance, dedup)
20
+ - **`--evolved-ratio` flag**: Mix evolved pairs into training at configurable ratio in `train_all.py` and `train_template.py`
21
+ - **`scripts/evolved_mixer.py`**: Standalone mixer module for evolved pair integration
22
+
23
+ ### Changed
24
+ - **Agent models upgraded**: glm-5.1 → glm-5.2, minimax-m2.7 → minimax-m3, added kimi-k2.7-code
25
+
26
+ ---
27
+
3
28
  ## [0.8.1] — 2026-06-30 — Zero-config dataset init
4
29
 
30
+
5
31
  ### Added
6
32
  - **Zero-config init**: `attacklm init` now downloads a pre-built dataset tarball (~50 MB) from GitHub releases by default. No git clone, no extractors, no manual setup required.
7
33
  - **`--from-source` flag**: `attacklm init --from-source` preserves the old clone+extract pipeline for developers who want to rebuild from upstream repos.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: attacklm
3
- Version: 0.8.2
3
+ Version: 0.8.4
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
@@ -203,7 +203,7 @@ Description-Content-Type: text/markdown
203
203
  [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
204
204
  [![Build Status](https://img.shields.io/badge/build-passing-brightgreen.svg)](#)
205
205
 
206
- **A high-performance QLoRA fine-tuning pipeline for creating MITRE ATT&CK-grounded security AI assistants.**
206
+ **A high-performance fine-tuning pipeline (QLoRA, GaLore, Q-GaLore, Spectrum, PiSSA) for creating MITRE ATT&CK-grounded security AI assistants.**
207
207
 
208
208
  ---
209
209
 
@@ -287,10 +287,24 @@ By default, AttackLM leverages PyTorch's built-in `torch.backends.cuda.enable_me
287
287
 
288
288
  - **Comprehensive Security Corpus**: 24,652 high-quality training pairs across 18 distinct security sources.
289
289
  - **Advanced Training Methods**: Support for QLoRA, GaLore, Q-GaLore, Spectrum, and PiSSA to enable training of large models on consumer hardware.
290
+ - **Training Pair Evolution**: New capability to synthetically expand short, factual pairs into complex reasoning examples using three specialized strategies:
291
+
292
+ | Strategy | Approach | Impact |
293
+ | :--- | :--- | :--- |
294
+ | **Evol-Instruct** | Rewrites responses with deeper reasoning and edge cases | 3-5x increase in response length/depth |
295
+ | **Multi-turn** | Decomposes Q&A into interactive conversations | Improved conversational flow and context |
296
+ | **CoT Injection** | Adds explicit "Chain-of-Thought" reasoning steps | Higher logical consistency in complex tasks |
297
+
290
298
  - **Zero-Config Setup**: One-shot `init` command that handles dataset retrieval, extraction, and bucket organization.
291
299
  - **Anti-Bias Balancing**: Integrated balancing engine to ensure the model learns diverse tactics rather than just the most voluminous sources.
292
300
  - **Provenance Tracking**: Strict per-source attribution and license tracking for every record in the dataset.
293
- - **Terminal GUI**: A professional Textual-based TUI for managing training runs without memorizing 40+ CLI flags.
301
+ - **Terminal GUI**: A professional Textual-based TUI that eliminates the need to memorize 40+ CLI flags. Features include:
302
+ - **Tabbed Training Form** — 40+ parameters organized across Basic, LoRA, GaLore, Advanced, and Hardware tabs
303
+ - **Live Training Monitor** — Real-time loss sparkline, VRAM gauge, token throughput, and scrolling log output
304
+ - **Built-in Presets** — One-click configurations for 3B/7B models (Q-GaLore Spectrum, QLoRA, etc.)
305
+ - **One-Click Commands** — Init, Balance, Infer, Build, and Eval all accessible from the main menu
306
+ - **Pause/Resume Controls** — SIGSTOP/SIGCONT the training process without losing progress
307
+ - **Zero Dependencies** — No X11, no GPU, no browser required. Works over SSH, WSL, and headless servers.
294
308
  - **Deployment Ready**: Built-in merge and conversion pipeline to export adapters to GGUF format for LM Studio or Ollama.
295
309
  - **Rock-Solid Stability**: 26/26 core tests passing.
296
310
 
@@ -314,11 +328,20 @@ attacklm balance --profile 7b-16gb --preset red-team
314
328
  ### Model Training
315
329
  `attacklm train`
316
330
  The core training engine. Supports Qwen2.5-Coder 3B and 7B base models.
331
+
332
+ **Standard Training**
317
333
  ```bash
318
334
  # Train a single model on the entire balanced dataset
319
335
  attacklm train -- --dataset all --epochs 10 --lora-r 16 --use-galore
320
336
  ```
321
337
 
338
+ **Training with Evolved Pairs**
339
+ Use the `--evolved-ratio` flag to mix synthetically evolved high-reasoning pairs into your training set.
340
+ ```bash
341
+ # Train with 20% evolved pairs for better reasoning depth
342
+ attacklm train -- --dataset all --evolved-ratio 0.2 --epochs 10
343
+ ```
344
+
322
345
  ### Deployment & Testing
323
346
  `attacklm build`
324
347
  Merge LoRA adapters and convert to GGUF for local deployment.
@@ -332,9 +355,51 @@ Perform a smoke-test of the trained model against representative security prompt
332
355
  attacklm infer -- --adapter models/attacklm-single_TIMESTAMP
333
356
  ```
334
357
 
335
- ### Specialized Tools
358
+ ### Terminal GUI
359
+
360
+ `attacklm gui`
361
+
362
+ Launch the Textual-based Terminal GUI for an interactive training experience. No memorizing 40+ CLI flags.
363
+
364
+ ```bash
365
+ attacklm gui
366
+ ```
367
+
368
+ The GUI provides:
369
+
370
+ | Screen | What it does |
371
+ |--------|-------------|
372
+ | **Train** | Tabbed form (Basic, LoRA, GaLore, Advanced, Hardware) with 5 built-in presets |
373
+ | **Init** | One-click dataset initialization (download, extract, organize) |
374
+ | **Balance** | Build balanced training subsets with configurable caps |
375
+ | **Inference** | Smoke-test trained models against security prompts |
376
+ | **Build** | Merge adapter → GGUF conversion → install to LM Studio/Ollama |
377
+ | **Eval** | Retention evaluation, reference collection, scoring, comparison |
378
+
379
+ **Live Training Monitor** — Once training starts, you get a real-time dashboard:
380
+
381
+ ```
382
+ ┌─────────────────────────────────────────────────────┐
383
+ │ Training: attacklm-3b-qgalore-spectrum │
384
+ │ Epoch 12/30 | Step 1896 | Elapsed: 1h 23m │
385
+ ├──────────────────────┬──────────────────────────────┤
386
+ │ Loss: 1.1143 ▂▃▅▆▇ │ VRAM: 5.9/15.6 GB (62%) │
387
+ │ Eval Loss: 1.176 │ alloc: 5.9 cache: 4.8 │
388
+ │ Trend: ↓ -0.0116 │ ████████░░░░ │
389
+ ├──────────────────────┴──────────────────────────────┤
390
+ │ [P]ause [S]top at checkpoint [Q]uit │
391
+ └─────────────────────────────────────────────────────┘
392
+ ```
393
+
394
+ **Built-in Presets:**
395
+ - `3B Q-GaLore Spectrum` — Full-parameter training on 16GB GPU
396
+ - `3B Q-GaLore Rank 128` — Higher quality variant
397
+ - `3B LoRA Default` — Standard QLoRA
398
+ - `7B Q-GaLore` — For 24GB GPUs
399
+ - `7B QLoRA Default` — Standard QLoRA for 7B
400
+
401
+ ### Other Tools
336
402
  - `attacklm eval`: Run the retention evaluation suite and score candidate models.
337
- - `attacklm gui`: Launch the Terminal GUI for an interactive training experience.
338
403
  - `attacklm demo`: Run the multi-agent orchestrator demo.
339
404
 
340
405
  ---
@@ -384,6 +449,7 @@ This hierarchy ensures that the pipeline can be rebuilt from upstream sources wi
384
449
  | :--- | :--- |
385
450
  | `attacklm train` | Train a model (QLoRA, GaLore, Q-GaLore, Spectrum, PiSSA) |
386
451
  | `attacklm train --dataset all` | Train all buckets combined |
452
+ | `attacklm train --evolved-ratio 0.2` | Mix evolved reasoning pairs into training |
387
453
  | `attacklm train --hpo` | Run Hyper-Parameter Optimization sweep |
388
454
  | `attacklm init` | Initialize dataset: download pre-built or clone $\rightarrow$ extract $\rightarrow$ attribute |
389
455
  | `attacklm balance` | Build a balanced subset of buckets to prevent overfitting |
@@ -5,7 +5,7 @@
5
5
  [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
6
6
  [![Build Status](https://img.shields.io/badge/build-passing-brightgreen.svg)](#)
7
7
 
8
- **A high-performance QLoRA fine-tuning pipeline for creating MITRE ATT&CK-grounded security AI assistants.**
8
+ **A high-performance fine-tuning pipeline (QLoRA, GaLore, Q-GaLore, Spectrum, PiSSA) for creating MITRE ATT&CK-grounded security AI assistants.**
9
9
 
10
10
  ---
11
11
 
@@ -89,10 +89,24 @@ By default, AttackLM leverages PyTorch's built-in `torch.backends.cuda.enable_me
89
89
 
90
90
  - **Comprehensive Security Corpus**: 24,652 high-quality training pairs across 18 distinct security sources.
91
91
  - **Advanced Training Methods**: Support for QLoRA, GaLore, Q-GaLore, Spectrum, and PiSSA to enable training of large models on consumer hardware.
92
+ - **Training Pair Evolution**: New capability to synthetically expand short, factual pairs into complex reasoning examples using three specialized strategies:
93
+
94
+ | Strategy | Approach | Impact |
95
+ | :--- | :--- | :--- |
96
+ | **Evol-Instruct** | Rewrites responses with deeper reasoning and edge cases | 3-5x increase in response length/depth |
97
+ | **Multi-turn** | Decomposes Q&A into interactive conversations | Improved conversational flow and context |
98
+ | **CoT Injection** | Adds explicit "Chain-of-Thought" reasoning steps | Higher logical consistency in complex tasks |
99
+
92
100
  - **Zero-Config Setup**: One-shot `init` command that handles dataset retrieval, extraction, and bucket organization.
93
101
  - **Anti-Bias Balancing**: Integrated balancing engine to ensure the model learns diverse tactics rather than just the most voluminous sources.
94
102
  - **Provenance Tracking**: Strict per-source attribution and license tracking for every record in the dataset.
95
- - **Terminal GUI**: A professional Textual-based TUI for managing training runs without memorizing 40+ CLI flags.
103
+ - **Terminal GUI**: A professional Textual-based TUI that eliminates the need to memorize 40+ CLI flags. Features include:
104
+ - **Tabbed Training Form** — 40+ parameters organized across Basic, LoRA, GaLore, Advanced, and Hardware tabs
105
+ - **Live Training Monitor** — Real-time loss sparkline, VRAM gauge, token throughput, and scrolling log output
106
+ - **Built-in Presets** — One-click configurations for 3B/7B models (Q-GaLore Spectrum, QLoRA, etc.)
107
+ - **One-Click Commands** — Init, Balance, Infer, Build, and Eval all accessible from the main menu
108
+ - **Pause/Resume Controls** — SIGSTOP/SIGCONT the training process without losing progress
109
+ - **Zero Dependencies** — No X11, no GPU, no browser required. Works over SSH, WSL, and headless servers.
96
110
  - **Deployment Ready**: Built-in merge and conversion pipeline to export adapters to GGUF format for LM Studio or Ollama.
97
111
  - **Rock-Solid Stability**: 26/26 core tests passing.
98
112
 
@@ -116,11 +130,20 @@ attacklm balance --profile 7b-16gb --preset red-team
116
130
  ### Model Training
117
131
  `attacklm train`
118
132
  The core training engine. Supports Qwen2.5-Coder 3B and 7B base models.
133
+
134
+ **Standard Training**
119
135
  ```bash
120
136
  # Train a single model on the entire balanced dataset
121
137
  attacklm train -- --dataset all --epochs 10 --lora-r 16 --use-galore
122
138
  ```
123
139
 
140
+ **Training with Evolved Pairs**
141
+ Use the `--evolved-ratio` flag to mix synthetically evolved high-reasoning pairs into your training set.
142
+ ```bash
143
+ # Train with 20% evolved pairs for better reasoning depth
144
+ attacklm train -- --dataset all --evolved-ratio 0.2 --epochs 10
145
+ ```
146
+
124
147
  ### Deployment & Testing
125
148
  `attacklm build`
126
149
  Merge LoRA adapters and convert to GGUF for local deployment.
@@ -134,9 +157,51 @@ Perform a smoke-test of the trained model against representative security prompt
134
157
  attacklm infer -- --adapter models/attacklm-single_TIMESTAMP
135
158
  ```
136
159
 
137
- ### Specialized Tools
160
+ ### Terminal GUI
161
+
162
+ `attacklm gui`
163
+
164
+ Launch the Textual-based Terminal GUI for an interactive training experience. No memorizing 40+ CLI flags.
165
+
166
+ ```bash
167
+ attacklm gui
168
+ ```
169
+
170
+ The GUI provides:
171
+
172
+ | Screen | What it does |
173
+ |--------|-------------|
174
+ | **Train** | Tabbed form (Basic, LoRA, GaLore, Advanced, Hardware) with 5 built-in presets |
175
+ | **Init** | One-click dataset initialization (download, extract, organize) |
176
+ | **Balance** | Build balanced training subsets with configurable caps |
177
+ | **Inference** | Smoke-test trained models against security prompts |
178
+ | **Build** | Merge adapter → GGUF conversion → install to LM Studio/Ollama |
179
+ | **Eval** | Retention evaluation, reference collection, scoring, comparison |
180
+
181
+ **Live Training Monitor** — Once training starts, you get a real-time dashboard:
182
+
183
+ ```
184
+ ┌─────────────────────────────────────────────────────┐
185
+ │ Training: attacklm-3b-qgalore-spectrum │
186
+ │ Epoch 12/30 | Step 1896 | Elapsed: 1h 23m │
187
+ ├──────────────────────┬──────────────────────────────┤
188
+ │ Loss: 1.1143 ▂▃▅▆▇ │ VRAM: 5.9/15.6 GB (62%) │
189
+ │ Eval Loss: 1.176 │ alloc: 5.9 cache: 4.8 │
190
+ │ Trend: ↓ -0.0116 │ ████████░░░░ │
191
+ ├──────────────────────┴──────────────────────────────┤
192
+ │ [P]ause [S]top at checkpoint [Q]uit │
193
+ └─────────────────────────────────────────────────────┘
194
+ ```
195
+
196
+ **Built-in Presets:**
197
+ - `3B Q-GaLore Spectrum` — Full-parameter training on 16GB GPU
198
+ - `3B Q-GaLore Rank 128` — Higher quality variant
199
+ - `3B LoRA Default` — Standard QLoRA
200
+ - `7B Q-GaLore` — For 24GB GPUs
201
+ - `7B QLoRA Default` — Standard QLoRA for 7B
202
+
203
+ ### Other Tools
138
204
  - `attacklm eval`: Run the retention evaluation suite and score candidate models.
139
- - `attacklm gui`: Launch the Terminal GUI for an interactive training experience.
140
205
  - `attacklm demo`: Run the multi-agent orchestrator demo.
141
206
 
142
207
  ---
@@ -186,6 +251,7 @@ This hierarchy ensures that the pipeline can be rebuilt from upstream sources wi
186
251
  | :--- | :--- |
187
252
  | `attacklm train` | Train a model (QLoRA, GaLore, Q-GaLore, Spectrum, PiSSA) |
188
253
  | `attacklm train --dataset all` | Train all buckets combined |
254
+ | `attacklm train --evolved-ratio 0.2` | Mix evolved reasoning pairs into training |
189
255
  | `attacklm train --hpo` | Run Hyper-Parameter Optimization sweep |
190
256
  | `attacklm init` | Initialize dataset: download pre-built or clone $\rightarrow$ extract $\rightarrow$ attribute |
191
257
  | `attacklm balance` | Build a balanced subset of buckets to prevent overfitting |