attacklm 0.8.2__tar.gz → 0.8.3__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.3}/CHANGELOG.md +17 -0
  2. {attacklm-0.8.2 → attacklm-0.8.3}/PKG-INFO +19 -1
  3. {attacklm-0.8.2 → attacklm-0.8.3}/README.md +18 -0
  4. attacklm-0.8.3/scripts/evolve_pairs.py +1604 -0
  5. attacklm-0.8.3/scripts/evolved_mixer.py +383 -0
  6. attacklm-0.8.3/scripts/filter_evolved.py +801 -0
  7. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/train_all.py +90 -0
  8. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/train_template.py +89 -0
  9. attacklm-0.8.3/src/attacklm/__version__.py +1 -0
  10. {attacklm-0.8.2 → attacklm-0.8.3}/src/attacklm/_project_root.py +1 -0
  11. attacklm-0.8.3/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.3}/.github/workflows/release.yml +0 -0
  14. {attacklm-0.8.2 → attacklm-0.8.3}/.gitignore +0 -0
  15. {attacklm-0.8.2 → attacklm-0.8.3}/ATTRIBUTION.md +0 -0
  16. {attacklm-0.8.2 → attacklm-0.8.3}/CONTRIBUTING.md +0 -0
  17. {attacklm-0.8.2 → attacklm-0.8.3}/EVALUATION.md +0 -0
  18. {attacklm-0.8.2 → attacklm-0.8.3}/LICENSE +0 -0
  19. {attacklm-0.8.2 → attacklm-0.8.3}/MANIFEST.in +0 -0
  20. {attacklm-0.8.2 → attacklm-0.8.3}/Makefile +0 -0
  21. {attacklm-0.8.2 → attacklm-0.8.3}/NOTICE +0 -0
  22. {attacklm-0.8.2 → attacklm-0.8.3}/attacklm-gui/README.md +0 -0
  23. {attacklm-0.8.2 → attacklm-0.8.3}/attacklm-gui/pyproject.toml +0 -0
  24. {attacklm-0.8.2 → attacklm-0.8.3}/attacklm-gui/src/attacklm_gui/__init__.py +0 -0
  25. {attacklm-0.8.2 → attacklm-0.8.3}/attacklm-gui/src/attacklm_gui/app.py +0 -0
  26. {attacklm-0.8.2 → attacklm-0.8.3}/attacklm-gui/src/attacklm_gui/cli.py +0 -0
  27. {attacklm-0.8.2 → attacklm-0.8.3}/attacklm-gui/src/attacklm_gui/presets.py +0 -0
  28. {attacklm-0.8.2 → attacklm-0.8.3}/attacklm-gui/src/attacklm_gui/runner.py +0 -0
  29. {attacklm-0.8.2 → attacklm-0.8.3}/attacklm-gui/src/attacklm_gui/screens/__init__.py +0 -0
  30. {attacklm-0.8.2 → attacklm-0.8.3}/attacklm-gui/src/attacklm_gui/screens/command_forms.py +0 -0
  31. {attacklm-0.8.2 → attacklm-0.8.3}/attacklm-gui/src/attacklm_gui/screens/main_menu.py +0 -0
  32. {attacklm-0.8.2 → attacklm-0.8.3}/attacklm-gui/src/attacklm_gui/screens/train_form.py +0 -0
  33. {attacklm-0.8.2 → attacklm-0.8.3}/attacklm-gui/src/attacklm_gui/screens/train_live.py +0 -0
  34. {attacklm-0.8.2 → attacklm-0.8.3}/attacklm-gui/src/attacklm_gui/widgets/__init__.py +0 -0
  35. {attacklm-0.8.2 → attacklm-0.8.3}/attacklm-gui/tests/test_gui.py +0 -0
  36. {attacklm-0.8.2 → attacklm-0.8.3}/data/ATTRIBUTION.md +0 -0
  37. {attacklm-0.8.2 → attacklm-0.8.3}/data/LEGAL.md +0 -0
  38. {attacklm-0.8.2 → attacklm-0.8.3}/data/REMOVAL.md +0 -0
  39. {attacklm-0.8.2 → attacklm-0.8.3}/data/bench/questions.jsonl +0 -0
  40. {attacklm-0.8.2 → attacklm-0.8.3}/data/bench/speed_context.txt +0 -0
  41. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/acquisition_report.json +0 -0
  42. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/manifest.json +0 -0
  43. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/README.md +0 -0
  44. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/_index.json +0 -0
  45. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/atomic-red-team/LICENSE.md +0 -0
  46. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/atomic-red-team/SOURCE.md +0 -0
  47. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/atomic-red-team/base/collection/data.jsonl +0 -0
  48. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/atomic-red-team/base/discovery/data.jsonl +0 -0
  49. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/atomic-red-team/base/execution/data.jsonl +0 -0
  50. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/atomic-red-team/base/exfiltration/data.jsonl +0 -0
  51. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/atomic-red-team/base/persistence/data.jsonl +0 -0
  52. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/attacklm-synthetic/LICENSE.md +0 -0
  53. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/attacklm-synthetic/SOURCE.md +0 -0
  54. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/attacklm-synthetic/orchestrator/data.jsonl +0 -0
  55. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/azure-pyrit/LICENSE.md +0 -0
  56. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/azure-pyrit/SOURCE.md +0 -0
  57. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/cyberark-fuzzyai/LICENSE.md +0 -0
  58. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/cyberark-fuzzyai/SOURCE.md +0 -0
  59. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/elastic-rules/LICENSE.md +0 -0
  60. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/elastic-rules/SOURCE.md +0 -0
  61. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/elastic-rules/defensive/detection_engineering/data.jsonl +0 -0
  62. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/llm-generated/LICENSE.md +0 -0
  63. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/llm-generated/SOURCE.md +0 -0
  64. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/llm-generated/cloud/attacks/data_llm.jsonl +0 -0
  65. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/llm-generated/ics/attacks/data_llm.jsonl +0 -0
  66. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/llm-generated/social_engineering/phishing/data_llm.jsonl +0 -0
  67. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/llm-generated/wireless/attacks/data_llm.jsonl +0 -0
  68. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/metasploit-framework/LICENSE.md +0 -0
  69. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/metasploit-framework/SOURCE.md +0 -0
  70. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/metasploit-framework/base/collection/data.jsonl +0 -0
  71. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/metasploit-framework/base/credential_access/data.jsonl +0 -0
  72. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/metasploit-framework/base/defense_evasion/data.jsonl +0 -0
  73. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/metasploit-framework/base/discovery/data.jsonl +0 -0
  74. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/metasploit-framework/base/execution/data.jsonl +0 -0
  75. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/metasploit-framework/base/lateral_movement/data.jsonl +0 -0
  76. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/metasploit-framework/base/persistence/data.jsonl +0 -0
  77. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/metasploit-framework/base/privilege_escalation/data.jsonl +0 -0
  78. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/metasploit-framework/tools/metasploit/data.jsonl +0 -0
  79. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/mitre-atlas-arsenal/LICENSE.md +0 -0
  80. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/mitre-atlas-arsenal/SOURCE.md +0 -0
  81. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/mitre-atlas-arsenal/base/discovery/data.jsonl +0 -0
  82. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/mitre-stockpile/LICENSE.md +0 -0
  83. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/mitre-stockpile/SOURCE.md +0 -0
  84. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/mitre-stockpile/base/collection/data.jsonl +0 -0
  85. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/mitre-stockpile/base/discovery/data.jsonl +0 -0
  86. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/mitre-stockpile/base/execution/data.jsonl +0 -0
  87. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/mitre-stockpile/base/exfiltration/data.jsonl +0 -0
  88. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/mitre-stockpile/base/persistence/data.jsonl +0 -0
  89. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/mordor/LICENSE.md +0 -0
  90. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/mordor/SOURCE.md +0 -0
  91. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/mordor/defensive/threat_hunting/data.jsonl +0 -0
  92. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/nist-ir/LICENSE.md +0 -0
  93. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/nist-ir/SOURCE.md +0 -0
  94. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/nist-ir/defensive/incident_response/data.jsonl +0 -0
  95. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/nvidia-garak/LICENSE.md +0 -0
  96. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/nvidia-garak/SOURCE.md +0 -0
  97. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/nvidia-garak/ai/jailbreaking/data.jsonl +0 -0
  98. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/promptfoo/LICENSE.md +0 -0
  99. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/promptfoo/SOURCE.md +0 -0
  100. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/promptfoo/ai/prompt-injection/data.jsonl +0 -0
  101. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/promptmap/LICENSE.md +0 -0
  102. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/promptmap/SOURCE.md +0 -0
  103. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/promptmap/ai/prompt-injection/data.jsonl +0 -0
  104. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/replay-general/LICENSE.md +0 -0
  105. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/replay-general/SOURCE.md +0 -0
  106. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/replay-general/base/replay/data_code.jsonl +0 -0
  107. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/replay-general/base/replay/data_conversation.jsonl +0 -0
  108. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/replay-general/base/replay/data_factual.jsonl +0 -0
  109. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/replay-general/base/replay/data_reasoning.jsonl +0 -0
  110. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/sigma-hq/LICENSE.md +0 -0
  111. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/sigma-hq/SOURCE.md +0 -0
  112. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/sigma-hq/defensive/detection_engineering/data.jsonl +0 -0
  113. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/splunk-content/LICENSE.md +0 -0
  114. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/splunk-content/SOURCE.md +0 -0
  115. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/splunk-content/defensive/detection_engineering/data.jsonl +0 -0
  116. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/threathunter-playbook/LICENSE.md +0 -0
  117. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/threathunter-playbook/SOURCE.md +0 -0
  118. {attacklm-0.8.2 → attacklm-0.8.3}/data/datasets/buckets/sources/threathunter-playbook/defensive/threat_hunting/data.jsonl +0 -0
  119. {attacklm-0.8.2 → attacklm-0.8.3}/data/golden/prompts.jsonl +0 -0
  120. {attacklm-0.8.2 → attacklm-0.8.3}/data/reference/prompts.jsonl +0 -0
  121. {attacklm-0.8.2 → attacklm-0.8.3}/data/steering/prompts/opsec_aware.txt +0 -0
  122. {attacklm-0.8.2 → attacklm-0.8.3}/data/steering/prompts/opsec_unaware.txt +0 -0
  123. {attacklm-0.8.2 → attacklm-0.8.3}/data/steering/prompts/succinct.txt +0 -0
  124. {attacklm-0.8.2 → attacklm-0.8.3}/data/steering/prompts/verbose.txt +0 -0
  125. {attacklm-0.8.2 → attacklm-0.8.3}/experiments/README.md +0 -0
  126. {attacklm-0.8.2 → attacklm-0.8.3}/experiments/synthetic_dataset_mutator_evol_instruct.py +0 -0
  127. {attacklm-0.8.2 → attacklm-0.8.3}/hf/.gitattributes +0 -0
  128. {attacklm-0.8.2 → attacklm-0.8.3}/hf/README.md +0 -0
  129. {attacklm-0.8.2 → attacklm-0.8.3}/hf/data/manifest.json +0 -0
  130. {attacklm-0.8.2 → attacklm-0.8.3}/hf/dataset_infos.json +0 -0
  131. {attacklm-0.8.2 → attacklm-0.8.3}/hf/scripts/build_hf_dataset.py +0 -0
  132. {attacklm-0.8.2 → attacklm-0.8.3}/hf/scripts/push_to_hf.py +0 -0
  133. {attacklm-0.8.2 → attacklm-0.8.3}/hpo_runs/.gitkeep +0 -0
  134. {attacklm-0.8.2 → attacklm-0.8.3}/hpo_runs/hpo_state.json +0 -0
  135. {attacklm-0.8.2 → attacklm-0.8.3}/hpo_runs/hpo_trial_dataset.jsonl +0 -0
  136. {attacklm-0.8.2 → attacklm-0.8.3}/logs/.gitkeep +0 -0
  137. {attacklm-0.8.2 → attacklm-0.8.3}/pipeline.example.yaml +0 -0
  138. {attacklm-0.8.2 → attacklm-0.8.3}/presets/blue-team.json +0 -0
  139. {attacklm-0.8.2 → attacklm-0.8.3}/presets/purple-team.json +0 -0
  140. {attacklm-0.8.2 → attacklm-0.8.3}/presets/red-team.json +0 -0
  141. {attacklm-0.8.2 → attacklm-0.8.3}/pyproject.toml +0 -0
  142. {attacklm-0.8.2 → attacklm-0.8.3}/requirements.txt +0 -0
  143. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/_eval_loader.py +0 -0
  144. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/acquire_cloud_attack_dataset.py +0 -0
  145. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/acquire_ics_dataset.py +0 -0
  146. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/acquire_phishing_dataset.py +0 -0
  147. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/acquire_red_team_tactics.py +0 -0
  148. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/acquire_replay_general.py +0 -0
  149. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/acquire_supply_chain_dataset.py +0 -0
  150. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/acquire_web_attack_dataset.py +0 -0
  151. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/acquire_wireless_dataset.py +0 -0
  152. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/audit_dataset.py +0 -0
  153. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/balance_buckets.py +0 -0
  154. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/bucket_loader.py +0 -0
  155. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/build.py +0 -0
  156. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/clone_repos.sh +0 -0
  157. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/collect_reference.py +0 -0
  158. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/compare_scores.py +0 -0
  159. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/convert_to_gguf.py +0 -0
  160. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/demo.py +0 -0
  161. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/device_utils.py +0 -0
  162. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/domain_bench.py +0 -0
  163. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/eval_retention.py +0 -0
  164. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/extract_ai_tools_to_jsonl.py +0 -0
  165. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/extract_atomic_red_team_to_jsonl.py +0 -0
  166. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/extract_by_tactic.py +0 -0
  167. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/extract_caldera_plugins_to_jsonl.py +0 -0
  168. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/extract_elastic_rules.py +0 -0
  169. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/extract_infection_monkey_to_jsonl.py +0 -0
  170. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/extract_mordor.py +0 -0
  171. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/extract_nist_ir.py +0 -0
  172. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/extract_rta_to_jsonl.py +0 -0
  173. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/extract_sigma_defensive.py +0 -0
  174. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/extract_splunk_content.py +0 -0
  175. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/extract_threathunter_playbook.py +0 -0
  176. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/generate_synthetic_scarce.py +0 -0
  177. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/golden_vectors.py +0 -0
  178. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/hpo_runner.py +0 -0
  179. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/import_gguf.sh +0 -0
  180. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/import_to_lmstudio.sh +0 -0
  181. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/infer.py +0 -0
  182. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/init_pipeline.py +0 -0
  183. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/merge_adapter.py +0 -0
  184. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/mitre_tactic_lookup.py +0 -0
  185. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/package_dataset.py +0 -0
  186. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/parse_metasploit_to_jsonl.py +0 -0
  187. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/pipeline.py +0 -0
  188. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/rebuild_manifest.py +0 -0
  189. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/register_ollama.py +0 -0
  190. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/reorganize_buckets.py +0 -0
  191. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/replay_mixer.py +0 -0
  192. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/score_candidates.py +0 -0
  193. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/setup_buckets.py +0 -0
  194. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/speed_bench.py +0 -0
  195. {attacklm-0.8.2 → attacklm-0.8.3}/scripts/steering.py +0 -0
  196. {attacklm-0.8.2 → attacklm-0.8.3}/src/attacklm/__init__.py +0 -0
  197. {attacklm-0.8.2 → attacklm-0.8.3}/src/attacklm/cli.py +0 -0
  198. {attacklm-0.8.2 → attacklm-0.8.3}/tests/test_balance_buckets.py +0 -0
  199. {attacklm-0.8.2 → attacklm-0.8.3}/tests/test_collect_reference.py +0 -0
  200. {attacklm-0.8.2 → attacklm-0.8.3}/tests/test_compare_scores.py +0 -0
  201. {attacklm-0.8.2 → attacklm-0.8.3}/tests/test_domain_bench.py +0 -0
  202. {attacklm-0.8.2 → attacklm-0.8.3}/tests/test_eval_loader.py +0 -0
  203. {attacklm-0.8.2 → attacklm-0.8.3}/tests/test_eval_retention.py +0 -0
  204. {attacklm-0.8.2 → attacklm-0.8.3}/tests/test_golden_vectors.py +0 -0
  205. {attacklm-0.8.2 → attacklm-0.8.3}/tests/test_init_pipeline.py +0 -0
  206. {attacklm-0.8.2 → attacklm-0.8.3}/tests/test_replay_mixer.py +0 -0
  207. {attacklm-0.8.2 → attacklm-0.8.3}/tests/test_score_candidates.py +0 -0
  208. {attacklm-0.8.2 → attacklm-0.8.3}/tests/test_speed_bench.py +0 -0
  209. {attacklm-0.8.2 → attacklm-0.8.3}/tests/test_steering.py +0 -0
  210. {attacklm-0.8.2 → attacklm-0.8.3}/tests/test_thinking_models.py +0 -0
  211. {attacklm-0.8.2 → attacklm-0.8.3}/uv.lock +0 -0
@@ -1,7 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.8.3] — 2026-07-01 — Training pair evolution
4
+
5
+ ### Added
6
+ - **Training pair evolution**: New `scripts/evolve_pairs.py` with 3 strategies to expand short training pairs into longer, richer examples
7
+ - **Evol-Instruct**: Rewrites answers with deeper reasoning, edge cases, and detection artifacts (3-5x longer)
8
+ - **Multi-turn Decomposition**: Breaks Q&A into 3-5 turn conversations for better training flow
9
+ - **Chain-of-Thought Injection**: Adds explicit reasoning steps before final answers
10
+ - **Quality filtering**: `scripts/filter_evolved.py` validates evolved pairs (structure, length, provenance, dedup)
11
+ - **`--evolved-ratio` flag**: Mix evolved pairs into training at configurable ratio in `train_all.py` and `train_template.py`
12
+ - **`scripts/evolved_mixer.py`**: Standalone mixer module for evolved pair integration
13
+
14
+ ### Changed
15
+ - **Agent models upgraded**: glm-5.1 → glm-5.2, minimax-m2.7 → minimax-m3, added kimi-k2.7-code
16
+
17
+ ---
18
+
3
19
  ## [0.8.1] — 2026-06-30 — Zero-config dataset init
4
20
 
21
+
5
22
  ### Added
6
23
  - **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
24
  - **`--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.3
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
@@ -287,6 +287,14 @@ 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.
@@ -314,11 +322,20 @@ attacklm balance --profile 7b-16gb --preset red-team
314
322
  ### Model Training
315
323
  `attacklm train`
316
324
  The core training engine. Supports Qwen2.5-Coder 3B and 7B base models.
325
+
326
+ **Standard Training**
317
327
  ```bash
318
328
  # Train a single model on the entire balanced dataset
319
329
  attacklm train -- --dataset all --epochs 10 --lora-r 16 --use-galore
320
330
  ```
321
331
 
332
+ **Training with Evolved Pairs**
333
+ Use the `--evolved-ratio` flag to mix synthetically evolved high-reasoning pairs into your training set.
334
+ ```bash
335
+ # Train with 20% evolved pairs for better reasoning depth
336
+ attacklm train -- --dataset all --evolved-ratio 0.2 --epochs 10
337
+ ```
338
+
322
339
  ### Deployment & Testing
323
340
  `attacklm build`
324
341
  Merge LoRA adapters and convert to GGUF for local deployment.
@@ -384,6 +401,7 @@ This hierarchy ensures that the pipeline can be rebuilt from upstream sources wi
384
401
  | :--- | :--- |
385
402
  | `attacklm train` | Train a model (QLoRA, GaLore, Q-GaLore, Spectrum, PiSSA) |
386
403
  | `attacklm train --dataset all` | Train all buckets combined |
404
+ | `attacklm train --evolved-ratio 0.2` | Mix evolved reasoning pairs into training |
387
405
  | `attacklm train --hpo` | Run Hyper-Parameter Optimization sweep |
388
406
  | `attacklm init` | Initialize dataset: download pre-built or clone $\rightarrow$ extract $\rightarrow$ attribute |
389
407
  | `attacklm balance` | Build a balanced subset of buckets to prevent overfitting |
@@ -89,6 +89,14 @@ 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.
@@ -116,11 +124,20 @@ attacklm balance --profile 7b-16gb --preset red-team
116
124
  ### Model Training
117
125
  `attacklm train`
118
126
  The core training engine. Supports Qwen2.5-Coder 3B and 7B base models.
127
+
128
+ **Standard Training**
119
129
  ```bash
120
130
  # Train a single model on the entire balanced dataset
121
131
  attacklm train -- --dataset all --epochs 10 --lora-r 16 --use-galore
122
132
  ```
123
133
 
134
+ **Training with Evolved Pairs**
135
+ Use the `--evolved-ratio` flag to mix synthetically evolved high-reasoning pairs into your training set.
136
+ ```bash
137
+ # Train with 20% evolved pairs for better reasoning depth
138
+ attacklm train -- --dataset all --evolved-ratio 0.2 --epochs 10
139
+ ```
140
+
124
141
  ### Deployment & Testing
125
142
  `attacklm build`
126
143
  Merge LoRA adapters and convert to GGUF for local deployment.
@@ -186,6 +203,7 @@ This hierarchy ensures that the pipeline can be rebuilt from upstream sources wi
186
203
  | :--- | :--- |
187
204
  | `attacklm train` | Train a model (QLoRA, GaLore, Q-GaLore, Spectrum, PiSSA) |
188
205
  | `attacklm train --dataset all` | Train all buckets combined |
206
+ | `attacklm train --evolved-ratio 0.2` | Mix evolved reasoning pairs into training |
189
207
  | `attacklm train --hpo` | Run Hyper-Parameter Optimization sweep |
190
208
  | `attacklm init` | Initialize dataset: download pre-built or clone $\rightarrow$ extract $\rightarrow$ attribute |
191
209
  | `attacklm balance` | Build a balanced subset of buckets to prevent overfitting |