hackagent 0.13.1__tar.gz → 0.15.0__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 (626) hide show
  1. {hackagent-0.13.1 → hackagent-0.15.0}/.gitignore +3 -2
  2. {hackagent-0.13.1 → hackagent-0.15.0}/PKG-INFO +32 -16
  3. {hackagent-0.13.1 → hackagent-0.15.0}/README.md +19 -9
  4. hackagent-0.15.0/hackagent/__init__.py +33 -0
  5. hackagent-0.15.0/hackagent/attacks/__init__.py +12 -0
  6. hackagent-0.15.0/hackagent/attacks/_lib/__init__.py +22 -0
  7. hackagent-0.15.0/hackagent/attacks/_lib/graphviz.py +21 -0
  8. hackagent-0.15.0/hackagent/attacks/_lib/response.py +84 -0
  9. {hackagent-0.13.1/hackagent/attacks/generator → hackagent-0.15.0/hackagent/attacks/_lib}/templates.py +2 -2
  10. hackagent-0.15.0/hackagent/attacks/techniques/__init__.py +31 -0
  11. hackagent-0.15.0/hackagent/attacks/techniques/adaptive/__init__.py +10 -0
  12. hackagent-0.15.0/hackagent/attacks/techniques/adaptive/advprefix/__init__.py +12 -0
  13. hackagent-0.15.0/hackagent/attacks/techniques/adaptive/advprefix/attack.py +314 -0
  14. hackagent-0.15.0/hackagent/attacks/techniques/adaptive/advprefix/config.py +141 -0
  15. hackagent-0.15.0/hackagent/attacks/techniques/adaptive/advprefix/prompts.py +191 -0
  16. {hackagent-0.13.1/hackagent/attacks/techniques → hackagent-0.15.0/hackagent/attacks/techniques/adaptive}/autodan_turbo/__init__.py +3 -5
  17. hackagent-0.15.0/hackagent/attacks/techniques/adaptive/autodan_turbo/attack.py +215 -0
  18. hackagent-0.15.0/hackagent/attacks/techniques/adaptive/autodan_turbo/config.py +79 -0
  19. hackagent-0.15.0/hackagent/attacks/techniques/adaptive/autodan_turbo/library.py +122 -0
  20. hackagent-0.15.0/hackagent/attacks/techniques/adaptive/autodan_turbo/prompts.py +240 -0
  21. hackagent-0.15.0/hackagent/attacks/techniques/adaptive/bon/__init__.py +13 -0
  22. hackagent-0.15.0/hackagent/attacks/techniques/adaptive/bon/attack.py +121 -0
  23. hackagent-0.15.0/hackagent/attacks/techniques/adaptive/bon/augment.py +84 -0
  24. hackagent-0.15.0/hackagent/attacks/techniques/adaptive/bon/config.py +46 -0
  25. hackagent-0.15.0/hackagent/attacks/techniques/adaptive/pair/__init__.py +12 -0
  26. hackagent-0.15.0/hackagent/attacks/techniques/adaptive/pair/attack.py +257 -0
  27. hackagent-0.15.0/hackagent/attacks/techniques/adaptive/pair/config.py +86 -0
  28. hackagent-0.15.0/hackagent/attacks/techniques/adaptive/pair/prompts.py +201 -0
  29. hackagent-0.15.0/hackagent/attacks/techniques/adaptive/pap/__init__.py +19 -0
  30. hackagent-0.15.0/hackagent/attacks/techniques/adaptive/pap/attack.py +96 -0
  31. hackagent-0.15.0/hackagent/attacks/techniques/adaptive/pap/config.py +50 -0
  32. {hackagent-0.13.1/hackagent/attacks/techniques → hackagent-0.15.0/hackagent/attacks/techniques/adaptive}/pap/taxonomy.py +36 -1
  33. hackagent-0.15.0/hackagent/attacks/techniques/adaptive/tap/__init__.py +12 -0
  34. hackagent-0.15.0/hackagent/attacks/techniques/adaptive/tap/attack.py +306 -0
  35. hackagent-0.15.0/hackagent/attacks/techniques/adaptive/tap/config.py +94 -0
  36. hackagent-0.13.1/hackagent/attacks/techniques/tap/config.py → hackagent-0.15.0/hackagent/attacks/techniques/adaptive/tap/prompts.py +79 -84
  37. hackagent-0.15.0/hackagent/attacks/techniques/contract.py +104 -0
  38. hackagent-0.15.0/hackagent/attacks/techniques/indirect/__init__.py +13 -0
  39. hackagent-0.15.0/hackagent/attacks/techniques/indirect/rag/__init__.py +12 -0
  40. hackagent-0.15.0/hackagent/attacks/techniques/indirect/rag/attack.py +293 -0
  41. hackagent-0.15.0/hackagent/attacks/techniques/indirect/rag/config.py +92 -0
  42. hackagent-0.13.1/hackagent/attacks/techniques/rag/config.py → hackagent-0.15.0/hackagent/attacks/techniques/indirect/rag/prompts.py +120 -134
  43. hackagent-0.15.0/hackagent/attacks/techniques/indirect/rag/retrieval.py +63 -0
  44. hackagent-0.15.0/hackagent/attacks/techniques/indirect/tool_output_ipi/__init__.py +12 -0
  45. hackagent-0.15.0/hackagent/attacks/techniques/indirect/tool_output_ipi/attack.py +168 -0
  46. hackagent-0.15.0/hackagent/attacks/techniques/indirect/tool_output_ipi/config.py +79 -0
  47. hackagent-0.15.0/hackagent/attacks/techniques/indirect/tool_output_ipi/prompts.py +226 -0
  48. hackagent-0.15.0/hackagent/attacks/techniques/iterative.py +123 -0
  49. hackagent-0.15.0/hackagent/attacks/techniques/multi_turn/__init__.py +9 -0
  50. hackagent-0.15.0/hackagent/attacks/techniques/multi_turn/crescendo/__init__.py +12 -0
  51. hackagent-0.15.0/hackagent/attacks/techniques/multi_turn/crescendo/attack.py +167 -0
  52. hackagent-0.15.0/hackagent/attacks/techniques/multi_turn/crescendo/config.py +66 -0
  53. hackagent-0.15.0/hackagent/attacks/techniques/multi_turn/crescendo/prompts.py +177 -0
  54. hackagent-0.15.0/hackagent/attacks/techniques/registry.py +91 -0
  55. hackagent-0.15.0/hackagent/attacks/techniques/static/__init__.py +11 -0
  56. hackagent-0.15.0/hackagent/attacks/techniques/static/base.py +59 -0
  57. hackagent-0.15.0/hackagent/attacks/techniques/static/baseline/__init__.py +9 -0
  58. hackagent-0.15.0/hackagent/attacks/techniques/static/baseline/attack.py +19 -0
  59. hackagent-0.15.0/hackagent/attacks/techniques/static/baseline/config.py +10 -0
  60. hackagent-0.15.0/hackagent/attacks/techniques/static/cipherchat/__init__.py +9 -0
  61. hackagent-0.15.0/hackagent/attacks/techniques/static/cipherchat/attack.py +145 -0
  62. hackagent-0.15.0/hackagent/attacks/techniques/static/cipherchat/config.py +84 -0
  63. hackagent-0.13.1/hackagent/attacks/techniques/cipherchat/prompts_and_demonstrations.py → hackagent-0.15.0/hackagent/attacks/techniques/static/cipherchat/demonstrations.py +5 -65
  64. hackagent-0.15.0/hackagent/attacks/techniques/static/cipherchat/encodings/__init__.py +45 -0
  65. hackagent-0.15.0/hackagent/attacks/techniques/static/cipherchat/encodings/base.py +56 -0
  66. hackagent-0.15.0/hackagent/attacks/techniques/static/cipherchat/encodings/byte_escape.py +38 -0
  67. hackagent-0.15.0/hackagent/attacks/techniques/static/cipherchat/encodings/mapping.py +219 -0
  68. hackagent-0.15.0/hackagent/attacks/techniques/static/cipherchat/encodings/prompts.py +128 -0
  69. hackagent-0.15.0/hackagent/attacks/techniques/static/cipherchat/encodings/registry.py +49 -0
  70. hackagent-0.15.0/hackagent/attacks/techniques/static/fc/__init__.py +9 -0
  71. hackagent-0.15.0/hackagent/attacks/techniques/static/fc/attack.py +123 -0
  72. hackagent-0.15.0/hackagent/attacks/techniques/static/fc/config.py +64 -0
  73. {hackagent-0.13.1/hackagent/attacks/techniques → hackagent-0.15.0/hackagent/attacks/techniques/static}/fc/flowchart_renderer.py +31 -29
  74. hackagent-0.15.0/hackagent/attacks/techniques/static/flipattack/__init__.py +9 -0
  75. hackagent-0.15.0/hackagent/attacks/techniques/static/flipattack/attack.py +135 -0
  76. hackagent-0.15.0/hackagent/attacks/techniques/static/flipattack/config.py +43 -0
  77. hackagent-0.15.0/hackagent/attacks/techniques/static/flipattack/prompts.py +51 -0
  78. hackagent-0.15.0/hackagent/attacks/techniques/static/h4rm3l/__init__.py +20 -0
  79. hackagent-0.15.0/hackagent/attacks/techniques/static/h4rm3l/attack.py +37 -0
  80. hackagent-0.15.0/hackagent/attacks/techniques/static/h4rm3l/config.py +44 -0
  81. hackagent-0.15.0/hackagent/attacks/techniques/static/h4rm3l/decorators/__init__.py +110 -0
  82. hackagent-0.15.0/hackagent/attacks/techniques/static/h4rm3l/decorators/base.py +75 -0
  83. hackagent-0.15.0/hackagent/attacks/techniques/static/h4rm3l/decorators/compiler.py +265 -0
  84. hackagent-0.15.0/hackagent/attacks/techniques/static/h4rm3l/decorators/llm.py +291 -0
  85. hackagent-0.13.1/hackagent/attacks/techniques/h4rm3l/decorators.py → hackagent-0.15.0/hackagent/attacks/techniques/static/h4rm3l/decorators/static.py +36 -597
  86. hackagent-0.15.0/hackagent/attacks/techniques/static/h4rm3l/programs.py +67 -0
  87. hackagent-0.15.0/hackagent/attacks/techniques/static/mml/__init__.py +9 -0
  88. hackagent-0.15.0/hackagent/attacks/techniques/static/mml/attack.py +73 -0
  89. hackagent-0.15.0/hackagent/attacks/techniques/static/mml/config.py +55 -0
  90. {hackagent-0.13.1/hackagent/attacks/techniques → hackagent-0.15.0/hackagent/attacks/techniques/static}/mml/image_encoder.py +2 -1
  91. hackagent-0.15.0/hackagent/attacks/techniques/static/static_template/__init__.py +9 -0
  92. hackagent-0.15.0/hackagent/attacks/techniques/static/static_template/attack.py +32 -0
  93. hackagent-0.15.0/hackagent/attacks/techniques/static/static_template/config.py +77 -0
  94. hackagent-0.15.0/hackagent/attacks/techniques/static/static_template/templates.py +55 -0
  95. hackagent-0.15.0/hackagent/attacks/techniques/trace.py +246 -0
  96. hackagent-0.15.0/hackagent/catalog/__init__.py +4 -0
  97. hackagent-0.13.1/hackagent/cli/commands/attack/catalog.py → hackagent-0.15.0/hackagent/catalog/attacks.py +12 -2
  98. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/__init__.py +5 -5
  99. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/base.py +4 -4
  100. hackagent-0.15.0/hackagent/catalog/risks/craft_adversarial_data/__init__.py +18 -0
  101. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/craft_adversarial_data/profile.py +5 -3
  102. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/craft_adversarial_data/vulnerabilities.py +2 -2
  103. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/credential_exposure/__init__.py +3 -3
  104. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/credential_exposure/profile.py +5 -3
  105. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/credential_exposure/vulnerabilities.py +2 -2
  106. hackagent-0.15.0/hackagent/catalog/risks/excessive_agency/__init__.py +8 -0
  107. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/excessive_agency/profile.py +3 -3
  108. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/excessive_agency/vulnerabilities.py +2 -2
  109. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/input_manipulation_attack/__init__.py +3 -3
  110. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/input_manipulation_attack/profile.py +5 -3
  111. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/input_manipulation_attack/vulnerabilities.py +2 -2
  112. hackagent-0.15.0/hackagent/catalog/risks/jailbreak/__init__.py +8 -0
  113. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/jailbreak/profile.py +5 -5
  114. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/jailbreak/vulnerabilities.py +2 -2
  115. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/malicious_tool_invocation/__init__.py +3 -3
  116. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/malicious_tool_invocation/profile.py +5 -3
  117. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/malicious_tool_invocation/vulnerabilities.py +2 -2
  118. hackagent-0.15.0/hackagent/catalog/risks/misinformation/__init__.py +8 -0
  119. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/misinformation/profile.py +3 -3
  120. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/misinformation/vulnerabilities.py +2 -2
  121. hackagent-0.15.0/hackagent/catalog/risks/model_evasion/__init__.py +8 -0
  122. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/model_evasion/profile.py +3 -3
  123. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/model_evasion/vulnerabilities.py +2 -2
  124. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/profile_helpers.py +8 -8
  125. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/profile_types.py +2 -2
  126. hackagent-0.15.0/hackagent/catalog/risks/prompt_injection/__init__.py +14 -0
  127. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/prompt_injection/profile.py +3 -3
  128. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/prompt_injection/templates.py +1 -1
  129. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/prompt_injection/vulnerabilities.py +2 -2
  130. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/public_facing_application_exploitation/__init__.py +3 -3
  131. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/public_facing_application_exploitation/profile.py +3 -3
  132. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/public_facing_application_exploitation/vulnerabilities.py +2 -2
  133. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/registry.py +14 -14
  134. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/sensitive_information_disclosure/__init__.py +3 -3
  135. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/sensitive_information_disclosure/profile.py +3 -3
  136. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/sensitive_information_disclosure/vulnerabilities.py +2 -2
  137. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/system_prompt_leakage/__init__.py +3 -3
  138. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/system_prompt_leakage/profile.py +5 -3
  139. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/system_prompt_leakage/vulnerabilities.py +2 -2
  140. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/vector_embedding_weaknesses_exploit/__init__.py +3 -3
  141. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/vector_embedding_weaknesses_exploit/profile.py +3 -3
  142. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/vector_embedding_weaknesses_exploit/vulnerabilities.py +2 -2
  143. {hackagent-0.13.1/hackagent/attacks → hackagent-0.15.0/hackagent/catalog}/taxonomy.py +35 -12
  144. hackagent-0.15.0/hackagent/client.py +589 -0
  145. hackagent-0.15.0/hackagent/core/__init__.py +4 -0
  146. hackagent-0.15.0/hackagent/core/contracts/__init__.py +71 -0
  147. hackagent-0.15.0/hackagent/core/contracts/_base.py +9 -0
  148. hackagent-0.15.0/hackagent/core/contracts/completion.py +108 -0
  149. hackagent-0.15.0/hackagent/core/contracts/enums.py +144 -0
  150. hackagent-0.15.0/hackagent/core/contracts/judging.py +105 -0
  151. hackagent-0.15.0/hackagent/core/contracts/messages.py +39 -0
  152. hackagent-0.15.0/hackagent/core/contracts/protocols.py +67 -0
  153. hackagent-0.15.0/hackagent/core/contracts/specs.py +55 -0
  154. hackagent-0.15.0/hackagent/core/defaults.py +103 -0
  155. hackagent-0.15.0/hackagent/core/logging.py +16 -0
  156. hackagent-0.15.0/hackagent/core/settings.py +237 -0
  157. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/datasets/__init__.py +2 -0
  158. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/datasets/base.py +8 -1
  159. hackagent-0.15.0/hackagent/datasets/calibration.py +194 -0
  160. hackagent-0.15.0/hackagent/datasets/config.py +304 -0
  161. hackagent-0.15.0/hackagent/datasets/goals.py +111 -0
  162. hackagent-0.15.0/hackagent/datasets/intents.py +121 -0
  163. hackagent-0.15.0/hackagent/datasets/labelling.py +176 -0
  164. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/datasets/presets.py +1 -0
  165. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/datasets/providers/file.py +5 -1
  166. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/datasets/providers/huggingface.py +5 -1
  167. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/datasets/providers/url_json.py +5 -1
  168. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/datasets/registry.py +4 -3
  169. hackagent-0.15.0/hackagent/datasets/taxonomy.py +160 -0
  170. hackagent-0.15.0/hackagent/datasets/taxonomy.yaml +99 -0
  171. hackagent-0.15.0/hackagent/evaluation/__init__.py +66 -0
  172. hackagent-0.15.0/hackagent/evaluation/audit.py +430 -0
  173. hackagent-0.15.0/hackagent/evaluation/base.py +21 -0
  174. hackagent-0.15.0/hackagent/evaluation/config.py +54 -0
  175. hackagent-0.15.0/hackagent/evaluation/judges.py +504 -0
  176. hackagent-0.15.0/hackagent/evaluation/metrics.py +161 -0
  177. hackagent-0.15.0/hackagent/evaluation/panel.py +299 -0
  178. hackagent-0.13.1/hackagent/attacks/evaluator/pattern_evaluators.py → hackagent-0.15.0/hackagent/evaluation/patterns.py +1 -1
  179. hackagent-0.15.0/hackagent/examples/__init__.py +59 -0
  180. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/claude/README.md +25 -18
  181. hackagent-0.15.0/hackagent/examples/claude/flipattack-claude.yaml +43 -0
  182. hackagent-0.15.0/hackagent/examples/claude/flipattack-ollama.yaml +46 -0
  183. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/codex/README.md +10 -10
  184. hackagent-0.15.0/hackagent/examples/codex/h4rm3l-codex.yaml +41 -0
  185. hackagent-0.15.0/hackagent/examples/codex/h4rm3l-ollama.yaml +38 -0
  186. hackagent-0.15.0/hackagent/examples/google_adk/jailbreak_eval/advprefix-adk.yaml +59 -0
  187. hackagent-0.15.0/hackagent/examples/google_adk/multi_tool_agent/advprefix-multi-tool.yaml +47 -0
  188. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/hermes/README.md +2 -2
  189. hackagent-0.15.0/hackagent/examples/hermes/flipattack-hermes.yaml +39 -0
  190. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/langchain/rag/README.md +11 -6
  191. hackagent-0.15.0/hackagent/examples/langchain/rag/advprefix-corpbot.yaml +41 -0
  192. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/litellm_multi_provider/README.md +8 -8
  193. hackagent-0.15.0/hackagent/examples/litellm_multi_provider/tap-any-provider.yaml +64 -0
  194. hackagent-0.15.0/hackagent/examples/ollama/flipattack-local.yaml +43 -0
  195. hackagent-0.15.0/hackagent/examples/ollama/h4rm3l-demo.yaml +51 -0
  196. hackagent-0.15.0/hackagent/examples/ollama/risk-evaluation.yaml +78 -0
  197. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/openai_sdk/db_tool_sandbox/README.md +2 -2
  198. hackagent-0.15.0/hackagent/examples/openai_sdk/db_tool_sandbox/flipattack-sqldesk.yaml +48 -0
  199. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/openai_sdk/multi_judge/README.md +1 -1
  200. hackagent-0.15.0/hackagent/examples/openai_sdk/multi_judge/flipattack-multi-judge.yaml +70 -0
  201. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/openai_sdk/pc_tool_sandbox/README.md +3 -3
  202. hackagent-0.15.0/hackagent/examples/openai_sdk/pc_tool_sandbox/pair-vaultdesk.yaml +58 -0
  203. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/openai_sdk/quick_evaluation/README.md +3 -3
  204. hackagent-0.15.0/hackagent/examples/openai_sdk/quick_evaluation/h4rm3l-granite.yaml +59 -0
  205. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/openai_sdk/rag/README.md +9 -5
  206. hackagent-0.15.0/hackagent/examples/openai_sdk/rag/h4rm3l-corpbot.yaml +56 -0
  207. hackagent-0.15.0/hackagent/examples/rag/indirect-injection.yaml +66 -0
  208. hackagent-0.15.0/hackagent/examples/vllm/risk-evaluation.yaml +76 -0
  209. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/web/README.md +27 -42
  210. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/web/plan.py +1 -1
  211. hackagent-0.15.0/hackagent/examples/web/tap-site-chatbot.yaml +67 -0
  212. hackagent-0.15.0/hackagent/interfaces/__init__.py +9 -0
  213. hackagent-0.15.0/hackagent/interfaces/cli/banner.py +34 -0
  214. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/interfaces}/cli/bootstrap.py +4 -6
  215. hackagent-0.15.0/hackagent/interfaces/cli/commands/campaign.py +291 -0
  216. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/interfaces}/cli/commands/config.py +15 -15
  217. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/interfaces}/cli/commands/datasets.py +3 -5
  218. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/interfaces}/cli/commands/examples.py +205 -153
  219. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/interfaces}/cli/commands/results.py +20 -30
  220. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/interfaces}/cli/commands/web.py +23 -18
  221. hackagent-0.15.0/hackagent/interfaces/cli/config.py +157 -0
  222. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/interfaces}/cli/help_page.py +2 -2
  223. hackagent-0.13.1/hackagent/logger.py → hackagent-0.15.0/hackagent/interfaces/cli/logging_setup.py +7 -13
  224. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/interfaces}/cli/main.py +68 -66
  225. hackagent-0.15.0/hackagent/interfaces/cli/safe_stdio.py +127 -0
  226. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/interfaces}/cli/utils.py +12 -57
  227. {hackagent-0.13.1/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/__init__.py +1 -1
  228. {hackagent-0.13.1/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/app.py +140 -67
  229. {hackagent-0.13.1/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/base.py +30 -10
  230. {hackagent-0.13.1/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/events.py +1 -1
  231. hackagent-0.15.0/hackagent/interfaces/tui/logger.py +125 -0
  232. hackagent-0.15.0/hackagent/interfaces/tui/views/__init__.py +21 -0
  233. {hackagent-0.13.1/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/views/agents.py +15 -24
  234. hackagent-0.15.0/hackagent/interfaces/tui/views/audit.py +36 -0
  235. hackagent-0.15.0/hackagent/interfaces/tui/views/campaign/__init__.py +9 -0
  236. hackagent-0.15.0/hackagent/interfaces/tui/views/campaign/builder.py +1054 -0
  237. hackagent-0.15.0/hackagent/interfaces/tui/views/campaign/draft.py +219 -0
  238. hackagent-0.15.0/hackagent/interfaces/tui/views/campaign/form.py +229 -0
  239. hackagent-0.15.0/hackagent/interfaces/tui/views/campaign/outline.py +278 -0
  240. hackagent-0.15.0/hackagent/interfaces/tui/views/campaign/report.py +62 -0
  241. hackagent-0.15.0/hackagent/interfaces/tui/views/campaign/schema.py +502 -0
  242. hackagent-0.15.0/hackagent/interfaces/tui/views/campaign/screens.py +303 -0
  243. hackagent-0.15.0/hackagent/interfaces/tui/views/campaign/welcome.py +165 -0
  244. {hackagent-0.13.1/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/views/config.py +52 -23
  245. {hackagent-0.13.1/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/views/results/__init__.py +4 -4
  246. {hackagent-0.13.1/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/views/results/export.py +1 -1
  247. {hackagent-0.13.1/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/views/results/formatters/__init__.py +5 -5
  248. {hackagent-0.13.1/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/views/results/formatters/http.py +1 -1
  249. {hackagent-0.13.1/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/views/results/formatters/run_report.py +2 -2
  250. {hackagent-0.13.1/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/views/results/formatters/summaries.py +4 -4
  251. {hackagent-0.13.1/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/views/results/formatters/traces.py +2 -2
  252. hackagent-0.15.0/hackagent/interfaces/tui/views/results/tab.py +420 -0
  253. {hackagent-0.13.1/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/widgets/__init__.py +2 -2
  254. {hackagent-0.13.1/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/widgets/actions.py +3 -3
  255. {hackagent-0.13.1/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/widgets/logs.py +1 -1
  256. {hackagent-0.13.1/hackagent/server/webui → hackagent-0.15.0/hackagent/interfaces/web}/__init__.py +19 -21
  257. {hackagent-0.13.1/hackagent/server/webui → hackagent-0.15.0/hackagent/interfaces/web}/_local_api.py +25 -29
  258. {hackagent-0.13.1/hackagent/server/webui → hackagent-0.15.0/hackagent/interfaces/web}/_proxy.py +2 -12
  259. {hackagent-0.13.1/hackagent/server/webui → hackagent-0.15.0/hackagent/interfaces/web}/_serializers.py +15 -29
  260. {hackagent-0.13.1/hackagent/server/webui → hackagent-0.15.0/hackagent/interfaces/web}/_static.py +2 -2
  261. hackagent-0.15.0/hackagent/models/__init__.py +44 -0
  262. hackagent-0.15.0/hackagent/models/build.py +207 -0
  263. hackagent-0.15.0/hackagent/models/completions/__init__.py +22 -0
  264. {hackagent-0.13.1/hackagent/router/providers → hackagent-0.15.0/hackagent/models/completions}/adk.py +131 -226
  265. {hackagent-0.13.1/hackagent/router/discovery → hackagent-0.15.0/hackagent/models/completions}/browser.py +5 -5
  266. {hackagent-0.13.1/hackagent/router/providers → hackagent-0.15.0/hackagent/models/completions}/claude.py +32 -220
  267. hackagent-0.15.0/hackagent/models/completions/cli.py +196 -0
  268. {hackagent-0.13.1/hackagent/router/providers → hackagent-0.15.0/hackagent/models/completions}/codex.py +46 -236
  269. {hackagent-0.13.1/hackagent/router/providers → hackagent-0.15.0/hackagent/models/completions}/hermes.py +31 -216
  270. hackagent-0.15.0/hackagent/models/completions/litellm.py +136 -0
  271. {hackagent-0.13.1/hackagent/router/providers → hackagent-0.15.0/hackagent/models/completions}/web.py +69 -115
  272. hackagent-0.15.0/hackagent/models/config.py +264 -0
  273. hackagent-0.15.0/hackagent/models/connect.py +93 -0
  274. hackagent-0.13.1/hackagent/attacks/shared/embedding_utils.py → hackagent-0.15.0/hackagent/models/embeddings.py +32 -8
  275. hackagent-0.15.0/hackagent/models/factory.py +185 -0
  276. hackagent-0.15.0/hackagent/models/guardrail.py +229 -0
  277. hackagent-0.15.0/hackagent/models/model.py +118 -0
  278. {hackagent-0.13.1/hackagent/router → hackagent-0.15.0/hackagent/models}/provider_config.py +7 -7
  279. hackagent-0.15.0/hackagent/models/response.py +201 -0
  280. hackagent-0.15.0/hackagent/models/retry.py +35 -0
  281. hackagent-0.15.0/hackagent/models/target_params.py +46 -0
  282. hackagent-0.15.0/hackagent/orchestrator/__init__.py +13 -0
  283. hackagent-0.15.0/hackagent/orchestrator/campaign/__init__.py +75 -0
  284. hackagent-0.15.0/hackagent/orchestrator/campaign/audit.py +229 -0
  285. hackagent-0.15.0/hackagent/orchestrator/campaign/loader.py +28 -0
  286. hackagent-0.15.0/hackagent/orchestrator/campaign/overrides.py +231 -0
  287. hackagent-0.15.0/hackagent/orchestrator/campaign/preflight.py +122 -0
  288. hackagent-0.15.0/hackagent/orchestrator/campaign/resolve.py +278 -0
  289. hackagent-0.15.0/hackagent/orchestrator/campaign/results.py +315 -0
  290. hackagent-0.15.0/hackagent/orchestrator/campaign/runner.py +881 -0
  291. hackagent-0.15.0/hackagent/orchestrator/campaign/spec.py +552 -0
  292. hackagent-0.15.0/hackagent/orchestrator/campaign/tracking.py +204 -0
  293. hackagent-0.15.0/hackagent/orchestrator/planning/__init__.py +39 -0
  294. hackagent-0.15.0/hackagent/orchestrator/planning/catalog.py +153 -0
  295. hackagent-0.15.0/hackagent/orchestrator/planning/planner.py +339 -0
  296. hackagent-0.15.0/hackagent/orchestrator/planning/web.py +46 -0
  297. {hackagent-0.13.1/hackagent/attacks/techniques/rag → hackagent-0.15.0/hackagent/storage}/__init__.py +1 -3
  298. hackagent-0.15.0/hackagent/storage/_http/__init__.py +4 -0
  299. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/models.py +20 -14
  300. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/scripts/generate.py +10 -10
  301. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/scripts/generate.sh +10 -10
  302. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/scripts/openapi-python-client.yaml +2 -2
  303. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/errors.py +3 -3
  304. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent}/storage/local.py +184 -11
  305. hackagent-0.15.0/hackagent/storage/records.py +149 -0
  306. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent}/storage/remote.py +344 -86
  307. hackagent-0.13.1/hackagent/server/storage/base.py → hackagent-0.15.0/hackagent/storage/store.py +43 -103
  308. hackagent-0.15.0/hackagent/tracking/__init__.py +11 -0
  309. hackagent-0.15.0/hackagent/tracking/evaluation.py +108 -0
  310. hackagent-0.13.1/hackagent/router/tracking/utils.py → hackagent-0.15.0/hackagent/tracking/serialize.py +17 -1
  311. {hackagent-0.13.1 → hackagent-0.15.0}/pyproject.toml +108 -17
  312. hackagent-0.13.1/hackagent/__init__.py +0 -25
  313. hackagent-0.13.1/hackagent/agent.py +0 -567
  314. hackagent-0.13.1/hackagent/attacks/__init__.py +0 -67
  315. hackagent-0.13.1/hackagent/attacks/base.py +0 -92
  316. hackagent-0.13.1/hackagent/attacks/evaluator/__init__.py +0 -110
  317. hackagent-0.13.1/hackagent/attacks/evaluator/base.py +0 -985
  318. hackagent-0.13.1/hackagent/attacks/evaluator/evaluation_step.py +0 -1926
  319. hackagent-0.13.1/hackagent/attacks/evaluator/inline_step_judge.py +0 -205
  320. hackagent-0.13.1/hackagent/attacks/evaluator/judge_evaluators.py +0 -578
  321. hackagent-0.13.1/hackagent/attacks/evaluator/metrics.py +0 -403
  322. hackagent-0.13.1/hackagent/attacks/evaluator/sync.py +0 -329
  323. hackagent-0.13.1/hackagent/attacks/generator/__init__.py +0 -31
  324. hackagent-0.13.1/hackagent/attacks/objectives/__init__.py +0 -42
  325. hackagent-0.13.1/hackagent/attacks/objectives/base.py +0 -74
  326. hackagent-0.13.1/hackagent/attacks/objectives/harmful_behavior.py +0 -63
  327. hackagent-0.13.1/hackagent/attacks/objectives/jailbreak.py +0 -60
  328. hackagent-0.13.1/hackagent/attacks/objectives/policy_violation.py +0 -69
  329. hackagent-0.13.1/hackagent/attacks/objectives/rag.py +0 -55
  330. hackagent-0.13.1/hackagent/attacks/orchestrator.py +0 -2237
  331. hackagent-0.13.1/hackagent/attacks/registry.py +0 -139
  332. hackagent-0.13.1/hackagent/attacks/shared/__init__.py +0 -31
  333. hackagent-0.13.1/hackagent/attacks/shared/guardrail.py +0 -256
  334. hackagent-0.13.1/hackagent/attacks/shared/progress.py +0 -110
  335. hackagent-0.13.1/hackagent/attacks/shared/response_utils.py +0 -125
  336. hackagent-0.13.1/hackagent/attacks/shared/router_factory.py +0 -187
  337. hackagent-0.13.1/hackagent/attacks/shared/translation.py +0 -144
  338. hackagent-0.13.1/hackagent/attacks/shared/tui.py +0 -61
  339. hackagent-0.13.1/hackagent/attacks/techniques/__init__.py +0 -24
  340. hackagent-0.13.1/hackagent/attacks/techniques/advprefix/__init__.py +0 -33
  341. hackagent-0.13.1/hackagent/attacks/techniques/advprefix/attack.py +0 -353
  342. hackagent-0.13.1/hackagent/attacks/techniques/advprefix/completions.py +0 -502
  343. hackagent-0.13.1/hackagent/attacks/techniques/advprefix/config.py +0 -269
  344. hackagent-0.13.1/hackagent/attacks/techniques/advprefix/eval_pipeline.py +0 -483
  345. hackagent-0.13.1/hackagent/attacks/techniques/advprefix/generate.py +0 -932
  346. hackagent-0.13.1/hackagent/attacks/techniques/advprefix/utils.py +0 -210
  347. hackagent-0.13.1/hackagent/attacks/techniques/autodan_turbo/attack.py +0 -391
  348. hackagent-0.13.1/hackagent/attacks/techniques/autodan_turbo/autodan_eval.py +0 -127
  349. hackagent-0.13.1/hackagent/attacks/techniques/autodan_turbo/config.py +0 -275
  350. hackagent-0.13.1/hackagent/attacks/techniques/autodan_turbo/core.py +0 -606
  351. hackagent-0.13.1/hackagent/attacks/techniques/autodan_turbo/dashboard_tracing.py +0 -67
  352. hackagent-0.13.1/hackagent/attacks/techniques/autodan_turbo/lifelong.py +0 -487
  353. hackagent-0.13.1/hackagent/attacks/techniques/autodan_turbo/log_styles.py +0 -90
  354. hackagent-0.13.1/hackagent/attacks/techniques/autodan_turbo/strategy_library.py +0 -400
  355. hackagent-0.13.1/hackagent/attacks/techniques/autodan_turbo/summarizer.py +0 -194
  356. hackagent-0.13.1/hackagent/attacks/techniques/autodan_turbo/warm_up.py +0 -377
  357. hackagent-0.13.1/hackagent/attacks/techniques/base.py +0 -472
  358. hackagent-0.13.1/hackagent/attacks/techniques/baseline/__init__.py +0 -13
  359. hackagent-0.13.1/hackagent/attacks/techniques/baseline/attack.py +0 -199
  360. hackagent-0.13.1/hackagent/attacks/techniques/baseline/config.py +0 -16
  361. hackagent-0.13.1/hackagent/attacks/techniques/baseline/generation.py +0 -183
  362. hackagent-0.13.1/hackagent/attacks/techniques/bon/__init__.py +0 -16
  363. hackagent-0.13.1/hackagent/attacks/techniques/bon/attack.py +0 -283
  364. hackagent-0.13.1/hackagent/attacks/techniques/bon/config.py +0 -121
  365. hackagent-0.13.1/hackagent/attacks/techniques/bon/generation.py +0 -746
  366. hackagent-0.13.1/hackagent/attacks/techniques/cipherchat/__init__.py +0 -12
  367. hackagent-0.13.1/hackagent/attacks/techniques/cipherchat/attack.py +0 -212
  368. hackagent-0.13.1/hackagent/attacks/techniques/cipherchat/config.py +0 -54
  369. hackagent-0.13.1/hackagent/attacks/techniques/cipherchat/encode_experts.py +0 -366
  370. hackagent-0.13.1/hackagent/attacks/techniques/cipherchat/generation.py +0 -335
  371. hackagent-0.13.1/hackagent/attacks/techniques/config.py +0 -467
  372. hackagent-0.13.1/hackagent/attacks/techniques/crescendo/__init__.py +0 -19
  373. hackagent-0.13.1/hackagent/attacks/techniques/crescendo/attack.py +0 -906
  374. hackagent-0.13.1/hackagent/attacks/techniques/crescendo/config.py +0 -116
  375. hackagent-0.13.1/hackagent/attacks/techniques/fc/__init__.py +0 -19
  376. hackagent-0.13.1/hackagent/attacks/techniques/fc/attack.py +0 -479
  377. hackagent-0.13.1/hackagent/attacks/techniques/fc/config.py +0 -190
  378. hackagent-0.13.1/hackagent/attacks/techniques/fc/generation.py +0 -606
  379. hackagent-0.13.1/hackagent/attacks/techniques/flipattack/__init__.py +0 -21
  380. hackagent-0.13.1/hackagent/attacks/techniques/flipattack/attack.py +0 -513
  381. hackagent-0.13.1/hackagent/attacks/techniques/flipattack/config.py +0 -114
  382. hackagent-0.13.1/hackagent/attacks/techniques/flipattack/generation.py +0 -222
  383. hackagent-0.13.1/hackagent/attacks/techniques/h4rm3l/__init__.py +0 -15
  384. hackagent-0.13.1/hackagent/attacks/techniques/h4rm3l/attack.py +0 -310
  385. hackagent-0.13.1/hackagent/attacks/techniques/h4rm3l/config.py +0 -183
  386. hackagent-0.13.1/hackagent/attacks/techniques/h4rm3l/generation.py +0 -365
  387. hackagent-0.13.1/hackagent/attacks/techniques/indirect_prompt_injection/attack.py +0 -1414
  388. hackagent-0.13.1/hackagent/attacks/techniques/indirect_prompt_injection/config.py +0 -215
  389. hackagent-0.13.1/hackagent/attacks/techniques/mml/__init__.py +0 -18
  390. hackagent-0.13.1/hackagent/attacks/techniques/mml/attack.py +0 -345
  391. hackagent-0.13.1/hackagent/attacks/techniques/mml/config.py +0 -115
  392. hackagent-0.13.1/hackagent/attacks/techniques/mml/generation.py +0 -288
  393. hackagent-0.13.1/hackagent/attacks/techniques/pair/__init__.py +0 -15
  394. hackagent-0.13.1/hackagent/attacks/techniques/pair/attack.py +0 -1360
  395. hackagent-0.13.1/hackagent/attacks/techniques/pair/config.py +0 -154
  396. hackagent-0.13.1/hackagent/attacks/techniques/pap/__init__.py +0 -15
  397. hackagent-0.13.1/hackagent/attacks/techniques/pap/attack.py +0 -232
  398. hackagent-0.13.1/hackagent/attacks/techniques/pap/config.py +0 -157
  399. hackagent-0.13.1/hackagent/attacks/techniques/pap/generation.py +0 -518
  400. hackagent-0.13.1/hackagent/attacks/techniques/rag/attack.py +0 -1446
  401. hackagent-0.13.1/hackagent/attacks/techniques/rag/jailbreak.py +0 -439
  402. hackagent-0.13.1/hackagent/attacks/techniques/static_template/__init__.py +0 -20
  403. hackagent-0.13.1/hackagent/attacks/techniques/static_template/attack.py +0 -285
  404. hackagent-0.13.1/hackagent/attacks/techniques/static_template/config.py +0 -134
  405. hackagent-0.13.1/hackagent/attacks/techniques/static_template/generation.py +0 -359
  406. hackagent-0.13.1/hackagent/attacks/techniques/static_template/static_eval.py +0 -668
  407. hackagent-0.13.1/hackagent/attacks/techniques/tap/__init__.py +0 -3
  408. hackagent-0.13.1/hackagent/attacks/techniques/tap/attack.py +0 -337
  409. hackagent-0.13.1/hackagent/attacks/techniques/tap/generation.py +0 -975
  410. hackagent-0.13.1/hackagent/attacks/techniques/tap/tap_evaluation.py +0 -293
  411. hackagent-0.13.1/hackagent/attacks/types.py +0 -190
  412. hackagent-0.13.1/hackagent/cli/commands/agent.py +0 -101
  413. hackagent-0.13.1/hackagent/cli/commands/attack/__init__.py +0 -66
  414. hackagent-0.13.1/hackagent/cli/commands/attack/chain.py +0 -247
  415. hackagent-0.13.1/hackagent/cli/commands/attack/config.py +0 -109
  416. hackagent-0.13.1/hackagent/cli/commands/attack/display.py +0 -237
  417. hackagent-0.13.1/hackagent/cli/commands/attack/group.py +0 -119
  418. hackagent-0.13.1/hackagent/cli/commands/attack/info.py +0 -82
  419. hackagent-0.13.1/hackagent/cli/commands/attack/options.py +0 -82
  420. hackagent-0.13.1/hackagent/cli/commands/attack/runner.py +0 -175
  421. hackagent-0.13.1/hackagent/cli/commands/attack/strategies.py +0 -104
  422. hackagent-0.13.1/hackagent/cli/commands/claude.py +0 -288
  423. hackagent-0.13.1/hackagent/cli/commands/codex.py +0 -291
  424. hackagent-0.13.1/hackagent/cli/commands/scan/__init__.py +0 -47
  425. hackagent-0.13.1/hackagent/cli/commands/scan/command.py +0 -448
  426. hackagent-0.13.1/hackagent/cli/commands/scan/helpers.py +0 -120
  427. hackagent-0.13.1/hackagent/cli/commands/scan/quick.py +0 -181
  428. hackagent-0.13.1/hackagent/cli/config.py +0 -222
  429. hackagent-0.13.1/hackagent/cli/tui/attack_specs/__init__.py +0 -50
  430. hackagent-0.13.1/hackagent/cli/tui/attack_specs/registry.py +0 -41
  431. hackagent-0.13.1/hackagent/cli/tui/attack_specs/specs/__init__.py +0 -56
  432. hackagent-0.13.1/hackagent/cli/tui/attack_specs/specs/advprefix.py +0 -197
  433. hackagent-0.13.1/hackagent/cli/tui/attack_specs/specs/autodan_turbo.py +0 -150
  434. hackagent-0.13.1/hackagent/cli/tui/attack_specs/specs/baseline.py +0 -104
  435. hackagent-0.13.1/hackagent/cli/tui/attack_specs/specs/bon.py +0 -131
  436. hackagent-0.13.1/hackagent/cli/tui/attack_specs/specs/cipherchat.py +0 -215
  437. hackagent-0.13.1/hackagent/cli/tui/attack_specs/specs/fc.py +0 -65
  438. hackagent-0.13.1/hackagent/cli/tui/attack_specs/specs/flipattack.py +0 -107
  439. hackagent-0.13.1/hackagent/cli/tui/attack_specs/specs/h4rm3l.py +0 -100
  440. hackagent-0.13.1/hackagent/cli/tui/attack_specs/specs/mml.py +0 -121
  441. hackagent-0.13.1/hackagent/cli/tui/attack_specs/specs/pair.py +0 -142
  442. hackagent-0.13.1/hackagent/cli/tui/attack_specs/specs/pap.py +0 -139
  443. hackagent-0.13.1/hackagent/cli/tui/attack_specs/specs/static_template.py +0 -146
  444. hackagent-0.13.1/hackagent/cli/tui/attack_specs/specs/tap.py +0 -119
  445. hackagent-0.13.1/hackagent/cli/tui/attack_specs/specs/tfc.py +0 -80
  446. hackagent-0.13.1/hackagent/cli/tui/attack_specs/types.py +0 -182
  447. hackagent-0.13.1/hackagent/cli/tui/logger.py +0 -264
  448. hackagent-0.13.1/hackagent/cli/tui/views/__init__.py +0 -22
  449. hackagent-0.13.1/hackagent/cli/tui/views/attacks/__init__.py +0 -37
  450. hackagent-0.13.1/hackagent/cli/tui/views/attacks/executor.py +0 -429
  451. hackagent-0.13.1/hackagent/cli/tui/views/attacks/form.py +0 -531
  452. hackagent-0.13.1/hackagent/cli/tui/views/attacks/helpers.py +0 -131
  453. hackagent-0.13.1/hackagent/cli/tui/views/attacks/layout.py +0 -261
  454. hackagent-0.13.1/hackagent/cli/tui/views/attacks/runner.py +0 -287
  455. hackagent-0.13.1/hackagent/cli/tui/views/attacks/tab.py +0 -391
  456. hackagent-0.13.1/hackagent/cli/tui/views/results/details.py +0 -377
  457. hackagent-0.13.1/hackagent/cli/tui/views/results/tab.py +0 -400
  458. hackagent-0.13.1/hackagent/cli/tui/views/results/table.py +0 -212
  459. hackagent-0.13.1/hackagent/config.py +0 -170
  460. hackagent-0.13.1/hackagent/datasets/intents.py +0 -349
  461. hackagent-0.13.1/hackagent/examples/claude/hack_claude.py +0 -86
  462. hackagent-0.13.1/hackagent/examples/claude/hack_ollama.py +0 -80
  463. hackagent-0.13.1/hackagent/examples/codex/hack_codex.py +0 -89
  464. hackagent-0.13.1/hackagent/examples/codex/hack_ollama.py +0 -77
  465. hackagent-0.13.1/hackagent/examples/google_adk/jailbreak_eval/hack.py +0 -154
  466. hackagent-0.13.1/hackagent/examples/google_adk/multi_tool_agent/hack.py +0 -31
  467. hackagent-0.13.1/hackagent/examples/hermes/hack_hermes.py +0 -94
  468. hackagent-0.13.1/hackagent/examples/langchain/rag/hack.py +0 -61
  469. hackagent-0.13.1/hackagent/examples/litellm_multi_provider/demo.py +0 -245
  470. hackagent-0.13.1/hackagent/examples/ollama/demo.py +0 -117
  471. hackagent-0.13.1/hackagent/examples/ollama/hack.py +0 -154
  472. hackagent-0.13.1/hackagent/examples/ollama/local.py +0 -25
  473. hackagent-0.13.1/hackagent/examples/openai_sdk/db_tool_sandbox/hack.py +0 -101
  474. hackagent-0.13.1/hackagent/examples/openai_sdk/multi_judge/run_flipattack_multi_judge.py +0 -108
  475. hackagent-0.13.1/hackagent/examples/openai_sdk/pc_tool_sandbox/hack.py +0 -116
  476. hackagent-0.13.1/hackagent/examples/openai_sdk/quick_evaluation/run_h4rm3l.py +0 -96
  477. hackagent-0.13.1/hackagent/examples/openai_sdk/rag/hack.py +0 -72
  478. hackagent-0.13.1/hackagent/examples/rag/test_indirect_injection.py +0 -196
  479. hackagent-0.13.1/hackagent/examples/vllm/hack.py +0 -219
  480. hackagent-0.13.1/hackagent/examples/web/hack.py +0 -95
  481. hackagent-0.13.1/hackagent/risks/craft_adversarial_data/__init__.py +0 -14
  482. hackagent-0.13.1/hackagent/risks/excessive_agency/__init__.py +0 -8
  483. hackagent-0.13.1/hackagent/risks/jailbreak/__init__.py +0 -8
  484. hackagent-0.13.1/hackagent/risks/misinformation/__init__.py +0 -8
  485. hackagent-0.13.1/hackagent/risks/model_evasion/__init__.py +0 -8
  486. hackagent-0.13.1/hackagent/risks/prompt_injection/__init__.py +0 -14
  487. hackagent-0.13.1/hackagent/router/__init__.py +0 -32
  488. hackagent-0.13.1/hackagent/router/_chat_registration.py +0 -192
  489. hackagent-0.13.1/hackagent/router/agent.py +0 -607
  490. hackagent-0.13.1/hackagent/router/discovery/__init__.py +0 -53
  491. hackagent-0.13.1/hackagent/router/discovery/scanner.py +0 -489
  492. hackagent-0.13.1/hackagent/router/envelope.py +0 -344
  493. hackagent-0.13.1/hackagent/router/providers/__init__.py +0 -0
  494. hackagent-0.13.1/hackagent/router/router.py +0 -1256
  495. hackagent-0.13.1/hackagent/router/tracking/__init__.py +0 -46
  496. hackagent-0.13.1/hackagent/router/tracking/audit.py +0 -72
  497. hackagent-0.13.1/hackagent/router/tracking/category_classifier.py +0 -659
  498. hackagent-0.13.1/hackagent/router/tracking/context.py +0 -152
  499. hackagent-0.13.1/hackagent/router/tracking/coordinator.py +0 -820
  500. hackagent-0.13.1/hackagent/router/tracking/decorators.py +0 -305
  501. hackagent-0.13.1/hackagent/router/tracking/step.py +0 -540
  502. hackagent-0.13.1/hackagent/router/tracking/tracker.py +0 -872
  503. hackagent-0.13.1/hackagent/router/tracking_logger.py +0 -246
  504. hackagent-0.13.1/hackagent/router/types.py +0 -138
  505. hackagent-0.13.1/hackagent/server/__init__.py +0 -0
  506. hackagent-0.13.1/hackagent/server/storage/__init__.py +0 -0
  507. hackagent-0.13.1/hackagent/server/storage/enums.py +0 -34
  508. hackagent-0.13.1/hackagent/utils.py +0 -144
  509. {hackagent-0.13.1 → hackagent-0.15.0}/LICENSE +0 -0
  510. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/_version.py +0 -0
  511. {hackagent-0.13.1/hackagent/attacks/shared → hackagent-0.15.0/hackagent/attacks/_lib}/prompt_parser.py +0 -0
  512. /hackagent-0.13.1/hackagent/attacks/shared/utils.py → /hackagent-0.15.0/hackagent/attacks/_lib/transforms.py +0 -0
  513. {hackagent-0.13.1/hackagent/attacks/techniques → hackagent-0.15.0/hackagent/attacks/techniques/static}/fc/prompts.py +0 -0
  514. {hackagent-0.13.1/hackagent/attacks/techniques → hackagent-0.15.0/hackagent/attacks/techniques/static}/mml/prompts.py +0 -0
  515. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/craft_adversarial_data/types.py +0 -0
  516. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/credential_exposure/types.py +0 -0
  517. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/excessive_agency/types.py +0 -0
  518. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/input_manipulation_attack/types.py +0 -0
  519. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/jailbreak/types.py +0 -0
  520. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/malicious_tool_invocation/types.py +0 -0
  521. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/misinformation/types.py +0 -0
  522. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/model_evasion/types.py +0 -0
  523. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/prompt_injection/types.py +0 -0
  524. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/public_facing_application_exploitation/types.py +0 -0
  525. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/sensitive_information_disclosure/types.py +0 -0
  526. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/system_prompt_leakage/types.py +0 -0
  527. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/utils.py +0 -0
  528. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/vector_embedding_weaknesses_exploit/types.py +0 -0
  529. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/core}/async_utils.py +0 -0
  530. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/core}/errors.py +0 -0
  531. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/datasets/omnisafebench/dataset.json +0 -0
  532. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/datasets/providers/__init__.py +0 -0
  533. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/google_adk/jailbreak_eval/__init__.py +0 -0
  534. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/google_adk/jailbreak_eval/agent.py +0 -0
  535. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/google_adk/multi_tool_agent/__init__.py +0 -0
  536. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/google_adk/multi_tool_agent/agent.py +0 -0
  537. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/langchain/rag/agent_client.py +0 -0
  538. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/langchain/rag/agent_server.py +0 -0
  539. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/langchain/rag/ingest.py +0 -0
  540. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/langchain/rag/policies.pdf +0 -0
  541. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/langchain/rag/read_db.py +0 -0
  542. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/litellm_multi_provider/__init__.py +0 -0
  543. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/openai_sdk/db_tool_sandbox/agent.py +0 -0
  544. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/openai_sdk/db_tool_sandbox/sandbox.db +0 -0
  545. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/openai_sdk/pc_tool_sandbox/agent.py +0 -0
  546. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/openai_sdk/pc_tool_sandbox/confidential/db_credentials.txt +0 -0
  547. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/openai_sdk/rag/agent_server.py +0 -0
  548. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/openai_sdk/rag/ingest.py +0 -0
  549. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/openai_sdk/rag/policies.pdf +0 -0
  550. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/rag/.gitignore +0 -0
  551. {hackagent-0.13.1 → hackagent-0.15.0}/hackagent/examples/rag/test_data/gender_studies_overview.txt +0 -0
  552. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/interfaces}/cli/__init__.py +0 -0
  553. {hackagent-0.13.1/hackagent → hackagent-0.15.0/hackagent/interfaces}/cli/commands/__init__.py +0 -0
  554. {hackagent-0.13.1/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/theme.py +0 -0
  555. {hackagent-0.13.1/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/views/results/formatters/datetimes.py +0 -0
  556. {hackagent-0.13.1/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/views/results/formatters/text.py +0 -0
  557. {hackagent-0.13.1/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/widgets/clipboard.py +0 -0
  558. {hackagent-0.13.1/hackagent/server/webui → hackagent-0.15.0/hackagent/interfaces/web}/static/.gitignore +0 -0
  559. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/__init__.py +0 -0
  560. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/agent/__init__.py +0 -0
  561. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/agent/agent_create.py +0 -0
  562. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/agent/agent_destroy.py +0 -0
  563. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/agent/agent_list.py +0 -0
  564. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/agent/agent_partial_update.py +0 -0
  565. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/agent/agent_retrieve.py +0 -0
  566. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/agent/agent_update.py +0 -0
  567. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/apilogs/__init__.py +0 -0
  568. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/apilogs/apilogs_list.py +0 -0
  569. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/apilogs/apilogs_retrieve.py +0 -0
  570. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/apilogs/apilogs_summary_retrieve.py +0 -0
  571. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/attack/__init__.py +0 -0
  572. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/attack/attack_create.py +0 -0
  573. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/attack/attack_destroy.py +0 -0
  574. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/attack/attack_list.py +0 -0
  575. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/attack/attack_partial_update.py +0 -0
  576. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/attack/attack_retrieve.py +0 -0
  577. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/attack/attack_update.py +0 -0
  578. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/checkout/__init__.py +0 -0
  579. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/checkout/checkout_create.py +0 -0
  580. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/generate/__init__.py +0 -0
  581. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/generate/v1_chat_completions_create.py +0 -0
  582. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/judge/__init__.py +0 -0
  583. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/judge/judge_create.py +0 -0
  584. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/key/__init__.py +0 -0
  585. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/key/key_context_retrieve.py +0 -0
  586. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/key/key_create.py +0 -0
  587. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/key/key_destroy.py +0 -0
  588. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/key/key_list.py +0 -0
  589. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/key/key_retrieve.py +0 -0
  590. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/organization/__init__.py +0 -0
  591. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/organization/organization_create.py +0 -0
  592. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/organization/organization_destroy.py +0 -0
  593. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/organization/organization_list.py +0 -0
  594. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/organization/organization_me_retrieve.py +0 -0
  595. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/organization/organization_partial_update.py +0 -0
  596. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/organization/organization_retrieve.py +0 -0
  597. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/organization/organization_update.py +0 -0
  598. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/result/__init__.py +0 -0
  599. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/result/result_create.py +0 -0
  600. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/result/result_destroy.py +0 -0
  601. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/result/result_list.py +0 -0
  602. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/result/result_partial_update.py +0 -0
  603. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/result/result_retrieve.py +0 -0
  604. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/result/result_trace_create.py +0 -0
  605. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/result/result_update.py +0 -0
  606. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/run/__init__.py +0 -0
  607. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/run/run_create.py +0 -0
  608. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/run/run_destroy.py +0 -0
  609. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/run/run_list.py +0 -0
  610. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/run/run_partial_update.py +0 -0
  611. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/run/run_result_create.py +0 -0
  612. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/run/run_retrieve.py +0 -0
  613. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/run/run_run_tests_create.py +0 -0
  614. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/run/run_update.py +0 -0
  615. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/user/__init__.py +0 -0
  616. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/user/user_create.py +0 -0
  617. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/user/user_destroy.py +0 -0
  618. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/user/user_list.py +0 -0
  619. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/user/user_me_retrieve.py +0 -0
  620. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/user/user_me_update.py +0 -0
  621. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/user/user_partial_update.py +0 -0
  622. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/user/user_retrieve.py +0 -0
  623. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/user/user_update.py +0 -0
  624. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/client.py +0 -0
  625. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/types.py +0 -0
  626. {hackagent-0.13.1/hackagent/server → hackagent-0.15.0/hackagent}/storage/buckets.py +0 -0
@@ -1,5 +1,6 @@
1
1
  # Custom
2
2
  logs/
3
+ .logs/
3
4
  *.sbatch
4
5
  .ruff_cache/
5
6
  reports/
@@ -147,5 +148,5 @@ tests/e2e/attacks/
147
148
  snapshot_report.html
148
149
 
149
150
  # Web UI bundle (built by scripts/build_webui.sh)
150
- hackagent/server/webui/static/*
151
- !hackagent/server/webui/static/.gitignore
151
+ hackagent/interfaces/web/static/*
152
+ !hackagent/interfaces/web/static/.gitignore
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: hackagent
3
- Version: 0.13.1
3
+ Version: 0.15.0
4
4
  Summary: HackAgent is an open-source security toolkit to detect vulnerabilities of your AI Agents.
5
5
  Author-email: AI Security Lab <ais@ai4i.it>
6
6
  License: Apache-2.0
@@ -16,20 +16,26 @@ Classifier: Programming Language :: Python :: 3.12
16
16
  Classifier: Programming Language :: Python :: 3.13
17
17
  Requires-Python: >=3.10
18
18
  Requires-Dist: click>=8.1.0
19
- Requires-Dist: datasets>=2.14.0
20
- Requires-Dist: faiss-cpu>=1.13.2
21
- Requires-Dist: flask>=3.1.3
22
19
  Requires-Dist: httpx>=0.27.0
23
20
  Requires-Dist: litellm>=1.69.2
24
21
  Requires-Dist: openai>=1.0.0
25
- Requires-Dist: pillow>=10.0.0
26
- Requires-Dist: playwright>=1.40
27
22
  Requires-Dist: pydantic[email]>=2.0
28
23
  Requires-Dist: python-dateutil>=2.8.0
29
24
  Requires-Dist: pyyaml>=6.0.0
30
25
  Requires-Dist: rich>=14.0.0
31
- Requires-Dist: textual>=1.0.0
26
+ Provides-Extra: browser
27
+ Requires-Dist: playwright>=1.40; extra == 'browser'
28
+ Provides-Extra: hf
29
+ Requires-Dist: datasets>=2.14.0; extra == 'hf'
30
+ Provides-Extra: rag
31
+ Requires-Dist: faiss-cpu>=1.13.2; extra == 'rag'
32
+ Requires-Dist: numpy>=1.26; extra == 'rag'
33
+ Provides-Extra: tui
34
+ Requires-Dist: textual>=1.0.0; extra == 'tui'
35
+ Provides-Extra: vision
36
+ Requires-Dist: pillow>=10.0.0; extra == 'vision'
32
37
  Provides-Extra: web
38
+ Requires-Dist: flask>=3.1.3; extra == 'web'
33
39
  Requires-Dist: hackagent-webui<1.0,>=0.2; extra == 'web'
34
40
  Description-Content-Type: text/markdown
35
41
 
@@ -91,7 +97,17 @@ source .venv/bin/activate
91
97
  pip install hackagent
92
98
  ```
93
99
 
94
- No API key required: HackAgent works locally out of the box.
100
+ No API key required: HackAgent works locally out of the box. The base install
101
+ imports without the interface and technique extras:
102
+
103
+ ```bash
104
+ pip install 'hackagent[tui]' # textual
105
+ pip install 'hackagent[web]' # flask and the dashboard bundle
106
+ pip install 'hackagent[browser]' # playwright
107
+ pip install 'hackagent[rag]' # faiss and numpy
108
+ pip install 'hackagent[vision]' # Pillow
109
+ pip install 'hackagent[hf]' # HuggingFace datasets
110
+ ```
95
111
 
96
112
  ### Standalone binary (no Python required)
97
113
 
@@ -102,17 +118,16 @@ self-contained archive per platform:
102
118
  |----------|-------|
103
119
  | Linux x86_64 | `hackagent-<version>-linux-x86_64.tar.gz` |
104
120
  | macOS arm64 | `hackagent-<version>-macos-arm64.tar.gz` |
105
- | macOS x86_64 | `hackagent-<version>-macos-x86_64.tar.gz` |
106
121
  | Windows x86_64 | `hackagent-<version>-windows-x86_64.zip` |
107
122
 
108
123
  Extract the archive and run the `hackagent` launcher inside it — no Python, `pip`
109
124
  or `uv` install needed. Keep the extracted folder intact; the launcher loads the
110
125
  libraries next to it.
111
126
 
112
- > **Note:** the `WEB` provider drives a real browser through Playwright, whose
113
- > browser binaries cannot be embedded in the archive (or in the PyPI package).
114
- > Before using `hackagent web`-based targets, install them once with
115
- > `playwright install`.
127
+ > **Note:** the `WEB` provider drives a real browser through Playwright
128
+ > (`pip install 'hackagent[browser]'`). The browser binaries cannot be embedded
129
+ > in the archive (or in the PyPI package). Before using `hackagent web`-based
130
+ > targets, install them once with `playwright install`.
116
131
 
117
132
 
118
133
  Questions? Join [community discussions](https://github.com/AISecurityLab/hackagent/discussions) or email ais@ai4i.it.
@@ -140,8 +155,9 @@ HackAgent uses a modular pipeline to test agent robustness end-to-end.
140
155
 
141
156
  HackAgent supports both local and remote reporting.
142
157
 
143
- - Local mode stores test results in SQLite, readable offline.
144
- - Cloud mode syncs runs to the HackAgent remote platform when an API key is configured.
158
+ - A campaign records its results in local SQLite, readable offline.
159
+ - Set `execution.storage.backend: remote` (with `base_url` and `api_key_env`) to
160
+ send a run to a HackAgent server instead.
145
161
 
146
162
  `hackagent web` serves the HackAgent dashboard — the same app as
147
163
  [app.hackagent.dev](https://app.hackagent.dev) — from your own machine, against
@@ -153,7 +169,7 @@ is never exposed to the browser.
153
169
  hackagent web
154
170
  ```
155
171
 
156
- Install it with `pip install 'hackagent[web]'`; see the [web command docs](docs/docs/cli/web.md) for modes and options.
172
+ Install it with `pip install 'hackagent[web]'`; see the [web command docs](docs/docs/getting-started/dashboard.mdx) for modes and options.
157
173
 
158
174
  ## Responsible Use
159
175
 
@@ -56,7 +56,17 @@ source .venv/bin/activate
56
56
  pip install hackagent
57
57
  ```
58
58
 
59
- No API key required: HackAgent works locally out of the box.
59
+ No API key required: HackAgent works locally out of the box. The base install
60
+ imports without the interface and technique extras:
61
+
62
+ ```bash
63
+ pip install 'hackagent[tui]' # textual
64
+ pip install 'hackagent[web]' # flask and the dashboard bundle
65
+ pip install 'hackagent[browser]' # playwright
66
+ pip install 'hackagent[rag]' # faiss and numpy
67
+ pip install 'hackagent[vision]' # Pillow
68
+ pip install 'hackagent[hf]' # HuggingFace datasets
69
+ ```
60
70
 
61
71
  ### Standalone binary (no Python required)
62
72
 
@@ -67,17 +77,16 @@ self-contained archive per platform:
67
77
  |----------|-------|
68
78
  | Linux x86_64 | `hackagent-<version>-linux-x86_64.tar.gz` |
69
79
  | macOS arm64 | `hackagent-<version>-macos-arm64.tar.gz` |
70
- | macOS x86_64 | `hackagent-<version>-macos-x86_64.tar.gz` |
71
80
  | Windows x86_64 | `hackagent-<version>-windows-x86_64.zip` |
72
81
 
73
82
  Extract the archive and run the `hackagent` launcher inside it — no Python, `pip`
74
83
  or `uv` install needed. Keep the extracted folder intact; the launcher loads the
75
84
  libraries next to it.
76
85
 
77
- > **Note:** the `WEB` provider drives a real browser through Playwright, whose
78
- > browser binaries cannot be embedded in the archive (or in the PyPI package).
79
- > Before using `hackagent web`-based targets, install them once with
80
- > `playwright install`.
86
+ > **Note:** the `WEB` provider drives a real browser through Playwright
87
+ > (`pip install 'hackagent[browser]'`). The browser binaries cannot be embedded
88
+ > in the archive (or in the PyPI package). Before using `hackagent web`-based
89
+ > targets, install them once with `playwright install`.
81
90
 
82
91
 
83
92
  Questions? Join [community discussions](https://github.com/AISecurityLab/hackagent/discussions) or email ais@ai4i.it.
@@ -105,8 +114,9 @@ HackAgent uses a modular pipeline to test agent robustness end-to-end.
105
114
 
106
115
  HackAgent supports both local and remote reporting.
107
116
 
108
- - Local mode stores test results in SQLite, readable offline.
109
- - Cloud mode syncs runs to the HackAgent remote platform when an API key is configured.
117
+ - A campaign records its results in local SQLite, readable offline.
118
+ - Set `execution.storage.backend: remote` (with `base_url` and `api_key_env`) to
119
+ send a run to a HackAgent server instead.
110
120
 
111
121
  `hackagent web` serves the HackAgent dashboard — the same app as
112
122
  [app.hackagent.dev](https://app.hackagent.dev) — from your own machine, against
@@ -118,7 +128,7 @@ is never exposed to the browser.
118
128
  hackagent web
119
129
  ```
120
130
 
121
- Install it with `pip install 'hackagent[web]'`; see the [web command docs](docs/docs/cli/web.md) for modes and options.
131
+ Install it with `pip install 'hackagent[web]'`; see the [web command docs](docs/docs/getting-started/dashboard.mdx) for modes and options.
122
132
 
123
133
  ## Responsible Use
124
134
 
@@ -0,0 +1,33 @@
1
+ # Copyright 2026 - AI4I. All rights reserved.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ """A client library for HackAgent — AI Agent Security Testing.
5
+
6
+ The package root exports the facade and public types only. Importing it does
7
+ not install a logging handler and does not import interface toolkits.
8
+ """
9
+
10
+ from hackagent.client import HackAgent
11
+ from hackagent.core.contracts import AgentType
12
+ from hackagent.core.errors import ApiError, HackAgentError
13
+ from hackagent.core.settings import (
14
+ DEFAULT_REMOTE_BASE_URL,
15
+ Settings,
16
+ Source,
17
+ read_config_file,
18
+ resolve_ollama_base_url,
19
+ resolve_remote_base_url,
20
+ )
21
+
22
+ __all__ = (
23
+ "AgentType",
24
+ "ApiError",
25
+ "DEFAULT_REMOTE_BASE_URL",
26
+ "HackAgent",
27
+ "HackAgentError",
28
+ "Settings",
29
+ "Source",
30
+ "read_config_file",
31
+ "resolve_ollama_base_url",
32
+ "resolve_remote_base_url",
33
+ )
@@ -0,0 +1,12 @@
1
+ # Copyright 2026 - AI4I. All rights reserved.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ """
5
+ Attack techniques for the HackAgent security assessment framework.
6
+
7
+ Techniques live under ``techniques/``. The composition root that runs them
8
+ is :mod:`hackagent.orchestrator`. Judges live in ``hackagent.evaluation``.
9
+ Run records live in ``hackagent.tracking``.
10
+ """
11
+
12
+ __all__: list[str] = []
@@ -0,0 +1,22 @@
1
+ # Copyright 2026 - AI4I. All rights reserved.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ """Shared attack helpers.
5
+
6
+ Depth-0 techniques import only ``hackagent.core`` and this package — not
7
+ other depth-0 packages or sibling techniques. What remains here is the live
8
+ set: response extraction (shared with the model layer), prompt parsing,
9
+ templating transforms, and the graphviz helper.
10
+ """
11
+
12
+ from hackagent.attacks._lib.response import (
13
+ extract_response_content,
14
+ get_guardrail_info,
15
+ is_guardrail_response,
16
+ )
17
+
18
+ __all__ = [
19
+ "extract_response_content",
20
+ "get_guardrail_info",
21
+ "is_guardrail_response",
22
+ ]
@@ -0,0 +1,21 @@
1
+ # Copyright 2026 - AI4I. All rights reserved.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ """Graphviz bootstrap for flowchart rendering (FC-Attack).
5
+
6
+ ``ensure_graphviz()`` is the public entry point used by interfaces and
7
+ the FC renderer.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ from typing import Optional
13
+
14
+
15
+ def ensure_graphviz(allow_download: Optional[bool] = None) -> Optional[str]:
16
+ """Ensure Graphviz ``dot`` is available and return its resolved path."""
17
+ from hackagent.attacks.techniques.static.fc.flowchart_renderer import (
18
+ ensure_graphviz,
19
+ )
20
+
21
+ return ensure_graphviz(allow_download=allow_download)
@@ -0,0 +1,84 @@
1
+ # Copyright 2026 - AI4I. All rights reserved.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ """Response helpers for attack modules.
5
+
6
+ Prefer :class:`~hackagent.core.contracts.Completion` properties
7
+ (``text``, ``ok``, ``blocked``, ``guardrail_info``). These helpers keep
8
+ legacy envelope/dict and OpenAI-style objects working until every
9
+ technique calls ``LLM.complete``.
10
+ """
11
+
12
+ from __future__ import annotations
13
+
14
+ import logging
15
+ from typing import Any, Dict, Optional
16
+
17
+ from hackagent.core.contracts import Completion
18
+
19
+ logger = logging.getLogger("hackagent.attacks._lib.response")
20
+
21
+ GUARDRAIL_ADAPTER_TYPE = "guardrail"
22
+ GUARDRAIL_BLOCKED_MSG = "Blocked by guardrail"
23
+
24
+
25
+ def extract_response_content(
26
+ response: Any,
27
+ logger: Optional[logging.Logger] = None,
28
+ ) -> Optional[str]:
29
+ """Extract text content from a Completion or legacy LLM response."""
30
+ if response is None:
31
+ return None
32
+
33
+ log = logger or globals()["logger"]
34
+
35
+ if isinstance(response, Completion):
36
+ return response.text or None
37
+
38
+ # OpenAI-style object with choices attribute
39
+ if hasattr(response, "choices") and response.choices:
40
+ try:
41
+ message = response.choices[0].message
42
+ content = message.content if message else None
43
+ return content or None
44
+ except (AttributeError, IndexError) as e:
45
+ log.debug(f"Failed to extract from OpenAI-style response: {e}")
46
+
47
+ if isinstance(response, dict):
48
+ content = response.get("generated_text") or response.get("processed_response")
49
+ if content:
50
+ return content
51
+ error_msg = response.get("error_message")
52
+ if error_msg:
53
+ log.debug(f"Response contains error: {error_msg}")
54
+ return None
55
+
56
+ if isinstance(response, str):
57
+ return response if response else None
58
+
59
+ # Duck-typed Completion-like (e.g. FakeLLM extras)
60
+ text = getattr(response, "text", None)
61
+ if isinstance(text, str):
62
+ return text or None
63
+
64
+ return None
65
+
66
+
67
+ def is_guardrail_response(response: Any) -> bool:
68
+ """Return True if *response* is a guardrail-blocked response."""
69
+ if isinstance(response, Completion):
70
+ return response.blocked
71
+ if not isinstance(response, dict):
72
+ return False
73
+ return response.get("adapter_type") == GUARDRAIL_ADAPTER_TYPE
74
+
75
+
76
+ def get_guardrail_info(response: Any) -> Dict[str, Any]:
77
+ """Extract guardrail metadata from a blocked response."""
78
+ if isinstance(response, Completion):
79
+ return response.guardrail_info
80
+ if not is_guardrail_response(response):
81
+ return {}
82
+ if isinstance(response, dict):
83
+ return response.get("agent_specific_data") or {}
84
+ return {}
@@ -15,7 +15,7 @@ Constants:
15
15
  SUCCESS_PATTERNS: Regex patterns for detecting successful attacks
16
16
 
17
17
  Usage:
18
- from hackagent.attacks.generator.templates import (
18
+ from hackagent.attacks._lib.templates import (
19
19
  AttackTemplates,
20
20
  REFUSAL_PATTERNS,
21
21
  SUCCESS_PATTERNS,
@@ -25,7 +25,7 @@ Usage:
25
25
  import codecs
26
26
  from typing import List
27
27
 
28
- from hackagent.attacks.shared.utils import encode_base64
28
+ from hackagent.attacks._lib.transforms import encode_base64
29
29
 
30
30
 
31
31
  class AttackTemplates:
@@ -0,0 +1,31 @@
1
+ # Copyright 2026 - AI4I. All rights reserved.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ """
5
+ Attack techniques module.
6
+
7
+ Techniques define HOW we generate attacks. Each technique is a complete
8
+ implementation that can target different objectives.
9
+
10
+ Techniques are grouped by category, the same grouping the docs use:
11
+
12
+ - static/: fixed transforms, no attacker refinement loop (baseline,
13
+ static_template, flipattack, cipherchat, h4rm3l, mml, fc/tfc)
14
+ - adaptive/: independent attempts that refine or search (pair, tap, pap,
15
+ bon, advprefix, autodan_turbo)
16
+ - multi_turn/: one growing conversation with the target (crescendo)
17
+ - indirect/: payload delivered through retrieved content or tool output
18
+ (rag, tool_output_ipi)
19
+
20
+ The folder follows :mod:`hackagent.catalog.taxonomy`: the ``indirect`` tag
21
+ decides first, otherwise the primary category does.
22
+
23
+ Every technique package holds:
24
+ 1. attack.py - a ``StaticAttack`` or ``IterativeAttack`` subclass
25
+ 2. config.py - its ``AttackParams``: parameters and role fields
26
+
27
+ :mod:`.contract` holds what every attack depends on, :mod:`.registry` maps a
28
+ campaign's attack name to its class, and :mod:`.trace` records what a run did.
29
+ """
30
+
31
+ __all__ = []
@@ -0,0 +1,10 @@
1
+ # Copyright 2026 - AI4I. All rights reserved.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ """Adaptive techniques.
5
+
6
+ Many independent attempts that refine or search, without a shared growing
7
+ conversation: pair, tap, pap, bon, advprefix, and autodan_turbo.
8
+
9
+ Importing this package does not import the techniques in it.
10
+ """
@@ -0,0 +1,12 @@
1
+ # Copyright 2026 - AI4I. All rights reserved.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ """AdvPrefix: write the opening the target will finish.
5
+
6
+ Based on: https://arxiv.org/abs/2412.10321
7
+ """
8
+
9
+ from .attack import AdvPrefixAttack
10
+ from .config import AdvPrefixParams
11
+
12
+ __all__ = ["AdvPrefixAttack", "AdvPrefixParams"]