hackagent 0.14.0__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 (631) hide show
  1. {hackagent-0.14.0 → hackagent-0.15.0}/.gitignore +3 -2
  2. {hackagent-0.14.0 → hackagent-0.15.0}/PKG-INFO +32 -16
  3. {hackagent-0.14.0 → 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.14.0/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.14.0/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.14.0/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.14.0/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.14.0/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.14.0/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.14.0/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.14.0/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.14.0/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.14.0/hackagent/cli/commands/attack/catalog.py → hackagent-0.15.0/hackagent/catalog/attacks.py +8 -2
  98. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/__init__.py +5 -5
  99. {hackagent-0.14.0/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.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/craft_adversarial_data/profile.py +5 -3
  102. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/craft_adversarial_data/vulnerabilities.py +2 -2
  103. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/credential_exposure/__init__.py +3 -3
  104. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/credential_exposure/profile.py +5 -3
  105. {hackagent-0.14.0/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.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/excessive_agency/profile.py +3 -3
  108. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/excessive_agency/vulnerabilities.py +2 -2
  109. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/input_manipulation_attack/__init__.py +3 -3
  110. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/input_manipulation_attack/profile.py +5 -3
  111. {hackagent-0.14.0/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.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/jailbreak/profile.py +5 -5
  114. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/jailbreak/vulnerabilities.py +2 -2
  115. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/malicious_tool_invocation/__init__.py +3 -3
  116. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/malicious_tool_invocation/profile.py +5 -3
  117. {hackagent-0.14.0/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.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/misinformation/profile.py +3 -3
  120. {hackagent-0.14.0/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.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/model_evasion/profile.py +3 -3
  123. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/model_evasion/vulnerabilities.py +2 -2
  124. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/profile_helpers.py +8 -8
  125. {hackagent-0.14.0/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.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/prompt_injection/profile.py +3 -3
  128. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/prompt_injection/templates.py +1 -1
  129. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/prompt_injection/vulnerabilities.py +2 -2
  130. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/public_facing_application_exploitation/__init__.py +3 -3
  131. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/public_facing_application_exploitation/profile.py +3 -3
  132. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/public_facing_application_exploitation/vulnerabilities.py +2 -2
  133. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/registry.py +14 -14
  134. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/sensitive_information_disclosure/__init__.py +3 -3
  135. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/sensitive_information_disclosure/profile.py +3 -3
  136. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/sensitive_information_disclosure/vulnerabilities.py +2 -2
  137. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/system_prompt_leakage/__init__.py +3 -3
  138. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/system_prompt_leakage/profile.py +5 -3
  139. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/system_prompt_leakage/vulnerabilities.py +2 -2
  140. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/vector_embedding_weaknesses_exploit/__init__.py +3 -3
  141. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/vector_embedding_weaknesses_exploit/profile.py +3 -3
  142. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/vector_embedding_weaknesses_exploit/vulnerabilities.py +2 -2
  143. {hackagent-0.14.0/hackagent/attacks → hackagent-0.15.0/hackagent/catalog}/taxonomy.py +34 -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.14.0 → hackagent-0.15.0}/hackagent/datasets/__init__.py +2 -0
  158. {hackagent-0.14.0 → 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.14.0 → hackagent-0.15.0}/hackagent/datasets/presets.py +1 -0
  165. {hackagent-0.14.0 → hackagent-0.15.0}/hackagent/datasets/providers/file.py +5 -1
  166. {hackagent-0.14.0 → hackagent-0.15.0}/hackagent/datasets/providers/huggingface.py +5 -1
  167. {hackagent-0.14.0 → hackagent-0.15.0}/hackagent/datasets/providers/url_json.py +5 -1
  168. {hackagent-0.14.0 → 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.14.0/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.14.0 → 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.14.0 → 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.14.0 → 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.14.0 → 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.14.0 → 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.14.0 → 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.14.0 → 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.14.0 → 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.14.0 → 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.14.0 → 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.14.0 → hackagent-0.15.0}/hackagent/examples/web/README.md +27 -42
  210. {hackagent-0.14.0 → 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.14.0/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.14.0/hackagent → hackagent-0.15.0/hackagent/interfaces}/cli/commands/config.py +15 -15
  217. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/interfaces}/cli/commands/datasets.py +3 -5
  218. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/interfaces}/cli/commands/examples.py +205 -153
  219. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/interfaces}/cli/commands/results.py +20 -30
  220. {hackagent-0.14.0/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.14.0/hackagent → hackagent-0.15.0/hackagent/interfaces}/cli/help_page.py +2 -2
  223. hackagent-0.14.0/hackagent/logger.py → hackagent-0.15.0/hackagent/interfaces/cli/logging_setup.py +7 -13
  224. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/interfaces}/cli/main.py +56 -64
  225. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/interfaces}/cli/utils.py +12 -57
  226. {hackagent-0.14.0/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/__init__.py +1 -1
  227. {hackagent-0.14.0/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/app.py +140 -67
  228. {hackagent-0.14.0/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/base.py +30 -10
  229. {hackagent-0.14.0/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/events.py +1 -1
  230. hackagent-0.15.0/hackagent/interfaces/tui/logger.py +125 -0
  231. hackagent-0.15.0/hackagent/interfaces/tui/views/__init__.py +21 -0
  232. {hackagent-0.14.0/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/views/agents.py +15 -24
  233. hackagent-0.15.0/hackagent/interfaces/tui/views/audit.py +36 -0
  234. hackagent-0.15.0/hackagent/interfaces/tui/views/campaign/__init__.py +9 -0
  235. hackagent-0.15.0/hackagent/interfaces/tui/views/campaign/builder.py +1054 -0
  236. hackagent-0.15.0/hackagent/interfaces/tui/views/campaign/draft.py +219 -0
  237. hackagent-0.15.0/hackagent/interfaces/tui/views/campaign/form.py +229 -0
  238. hackagent-0.15.0/hackagent/interfaces/tui/views/campaign/outline.py +278 -0
  239. hackagent-0.15.0/hackagent/interfaces/tui/views/campaign/report.py +62 -0
  240. hackagent-0.15.0/hackagent/interfaces/tui/views/campaign/schema.py +502 -0
  241. hackagent-0.15.0/hackagent/interfaces/tui/views/campaign/screens.py +303 -0
  242. hackagent-0.15.0/hackagent/interfaces/tui/views/campaign/welcome.py +165 -0
  243. {hackagent-0.14.0/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/views/config.py +52 -23
  244. {hackagent-0.14.0/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/views/results/__init__.py +4 -4
  245. {hackagent-0.14.0/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/views/results/export.py +1 -1
  246. {hackagent-0.14.0/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/views/results/formatters/__init__.py +5 -5
  247. {hackagent-0.14.0/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/views/results/formatters/http.py +1 -1
  248. {hackagent-0.14.0/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/views/results/formatters/run_report.py +2 -2
  249. {hackagent-0.14.0/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/views/results/formatters/summaries.py +4 -4
  250. {hackagent-0.14.0/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/views/results/formatters/traces.py +2 -2
  251. hackagent-0.15.0/hackagent/interfaces/tui/views/results/tab.py +420 -0
  252. {hackagent-0.14.0/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/widgets/__init__.py +2 -2
  253. {hackagent-0.14.0/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/widgets/actions.py +3 -3
  254. {hackagent-0.14.0/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/widgets/logs.py +1 -1
  255. {hackagent-0.14.0/hackagent/server/webui → hackagent-0.15.0/hackagent/interfaces/web}/__init__.py +19 -21
  256. {hackagent-0.14.0/hackagent/server/webui → hackagent-0.15.0/hackagent/interfaces/web}/_local_api.py +25 -29
  257. {hackagent-0.14.0/hackagent/server/webui → hackagent-0.15.0/hackagent/interfaces/web}/_proxy.py +2 -12
  258. {hackagent-0.14.0/hackagent/server/webui → hackagent-0.15.0/hackagent/interfaces/web}/_serializers.py +15 -29
  259. {hackagent-0.14.0/hackagent/server/webui → hackagent-0.15.0/hackagent/interfaces/web}/_static.py +2 -2
  260. hackagent-0.15.0/hackagent/models/__init__.py +44 -0
  261. hackagent-0.15.0/hackagent/models/build.py +207 -0
  262. hackagent-0.15.0/hackagent/models/completions/__init__.py +22 -0
  263. {hackagent-0.14.0/hackagent/router/providers → hackagent-0.15.0/hackagent/models/completions}/adk.py +131 -226
  264. {hackagent-0.14.0/hackagent/router/discovery → hackagent-0.15.0/hackagent/models/completions}/browser.py +5 -5
  265. {hackagent-0.14.0/hackagent/router/providers → hackagent-0.15.0/hackagent/models/completions}/claude.py +32 -220
  266. hackagent-0.15.0/hackagent/models/completions/cli.py +196 -0
  267. {hackagent-0.14.0/hackagent/router/providers → hackagent-0.15.0/hackagent/models/completions}/codex.py +46 -236
  268. {hackagent-0.14.0/hackagent/router/providers → hackagent-0.15.0/hackagent/models/completions}/hermes.py +31 -216
  269. hackagent-0.15.0/hackagent/models/completions/litellm.py +136 -0
  270. {hackagent-0.14.0/hackagent/router/providers → hackagent-0.15.0/hackagent/models/completions}/web.py +69 -115
  271. hackagent-0.15.0/hackagent/models/config.py +264 -0
  272. hackagent-0.15.0/hackagent/models/connect.py +93 -0
  273. hackagent-0.14.0/hackagent/attacks/shared/embedding_utils.py → hackagent-0.15.0/hackagent/models/embeddings.py +32 -8
  274. hackagent-0.15.0/hackagent/models/factory.py +185 -0
  275. hackagent-0.15.0/hackagent/models/guardrail.py +229 -0
  276. hackagent-0.15.0/hackagent/models/model.py +118 -0
  277. {hackagent-0.14.0/hackagent/router → hackagent-0.15.0/hackagent/models}/provider_config.py +7 -7
  278. hackagent-0.15.0/hackagent/models/response.py +201 -0
  279. hackagent-0.15.0/hackagent/models/retry.py +35 -0
  280. hackagent-0.15.0/hackagent/models/target_params.py +46 -0
  281. hackagent-0.15.0/hackagent/orchestrator/__init__.py +13 -0
  282. hackagent-0.15.0/hackagent/orchestrator/campaign/__init__.py +75 -0
  283. hackagent-0.15.0/hackagent/orchestrator/campaign/audit.py +229 -0
  284. hackagent-0.15.0/hackagent/orchestrator/campaign/loader.py +28 -0
  285. hackagent-0.15.0/hackagent/orchestrator/campaign/overrides.py +231 -0
  286. hackagent-0.15.0/hackagent/orchestrator/campaign/preflight.py +122 -0
  287. hackagent-0.15.0/hackagent/orchestrator/campaign/resolve.py +278 -0
  288. hackagent-0.15.0/hackagent/orchestrator/campaign/results.py +315 -0
  289. hackagent-0.15.0/hackagent/orchestrator/campaign/runner.py +881 -0
  290. hackagent-0.15.0/hackagent/orchestrator/campaign/spec.py +552 -0
  291. hackagent-0.15.0/hackagent/orchestrator/campaign/tracking.py +204 -0
  292. hackagent-0.15.0/hackagent/orchestrator/planning/__init__.py +39 -0
  293. hackagent-0.15.0/hackagent/orchestrator/planning/catalog.py +153 -0
  294. hackagent-0.15.0/hackagent/orchestrator/planning/planner.py +339 -0
  295. hackagent-0.15.0/hackagent/orchestrator/planning/web.py +46 -0
  296. {hackagent-0.14.0/hackagent/attacks/techniques/rag → hackagent-0.15.0/hackagent/storage}/__init__.py +1 -3
  297. hackagent-0.15.0/hackagent/storage/_http/__init__.py +4 -0
  298. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/models.py +20 -14
  299. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/scripts/generate.py +10 -10
  300. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/scripts/generate.sh +10 -10
  301. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/scripts/openapi-python-client.yaml +2 -2
  302. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/errors.py +3 -3
  303. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent}/storage/local.py +184 -11
  304. hackagent-0.15.0/hackagent/storage/records.py +149 -0
  305. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent}/storage/remote.py +344 -86
  306. hackagent-0.14.0/hackagent/server/storage/base.py → hackagent-0.15.0/hackagent/storage/store.py +43 -103
  307. hackagent-0.15.0/hackagent/tracking/__init__.py +11 -0
  308. hackagent-0.15.0/hackagent/tracking/evaluation.py +108 -0
  309. hackagent-0.14.0/hackagent/router/tracking/utils.py → hackagent-0.15.0/hackagent/tracking/serialize.py +17 -1
  310. {hackagent-0.14.0 → hackagent-0.15.0}/pyproject.toml +108 -17
  311. hackagent-0.14.0/hackagent/__init__.py +0 -25
  312. hackagent-0.14.0/hackagent/agent.py +0 -569
  313. hackagent-0.14.0/hackagent/attacks/__init__.py +0 -67
  314. hackagent-0.14.0/hackagent/attacks/base.py +0 -92
  315. hackagent-0.14.0/hackagent/attacks/evaluator/__init__.py +0 -110
  316. hackagent-0.14.0/hackagent/attacks/evaluator/base.py +0 -985
  317. hackagent-0.14.0/hackagent/attacks/evaluator/evaluation_step.py +0 -1926
  318. hackagent-0.14.0/hackagent/attacks/evaluator/inline_step_judge.py +0 -205
  319. hackagent-0.14.0/hackagent/attacks/evaluator/judge_evaluators.py +0 -578
  320. hackagent-0.14.0/hackagent/attacks/evaluator/metrics.py +0 -403
  321. hackagent-0.14.0/hackagent/attacks/evaluator/sync.py +0 -329
  322. hackagent-0.14.0/hackagent/attacks/generator/__init__.py +0 -31
  323. hackagent-0.14.0/hackagent/attacks/objectives/__init__.py +0 -42
  324. hackagent-0.14.0/hackagent/attacks/objectives/base.py +0 -74
  325. hackagent-0.14.0/hackagent/attacks/objectives/harmful_behavior.py +0 -63
  326. hackagent-0.14.0/hackagent/attacks/objectives/jailbreak.py +0 -60
  327. hackagent-0.14.0/hackagent/attacks/objectives/policy_violation.py +0 -69
  328. hackagent-0.14.0/hackagent/attacks/objectives/rag.py +0 -55
  329. hackagent-0.14.0/hackagent/attacks/orchestrator.py +0 -2242
  330. hackagent-0.14.0/hackagent/attacks/registry.py +0 -143
  331. hackagent-0.14.0/hackagent/attacks/shared/__init__.py +0 -31
  332. hackagent-0.14.0/hackagent/attacks/shared/guardrail.py +0 -256
  333. hackagent-0.14.0/hackagent/attacks/shared/progress.py +0 -110
  334. hackagent-0.14.0/hackagent/attacks/shared/response_utils.py +0 -125
  335. hackagent-0.14.0/hackagent/attacks/shared/router_factory.py +0 -187
  336. hackagent-0.14.0/hackagent/attacks/shared/translation.py +0 -144
  337. hackagent-0.14.0/hackagent/attacks/shared/tui.py +0 -61
  338. hackagent-0.14.0/hackagent/attacks/techniques/__init__.py +0 -24
  339. hackagent-0.14.0/hackagent/attacks/techniques/advprefix/__init__.py +0 -33
  340. hackagent-0.14.0/hackagent/attacks/techniques/advprefix/attack.py +0 -353
  341. hackagent-0.14.0/hackagent/attacks/techniques/advprefix/completions.py +0 -502
  342. hackagent-0.14.0/hackagent/attacks/techniques/advprefix/config.py +0 -269
  343. hackagent-0.14.0/hackagent/attacks/techniques/advprefix/eval_pipeline.py +0 -483
  344. hackagent-0.14.0/hackagent/attacks/techniques/advprefix/generate.py +0 -932
  345. hackagent-0.14.0/hackagent/attacks/techniques/advprefix/utils.py +0 -210
  346. hackagent-0.14.0/hackagent/attacks/techniques/autodan_turbo/attack.py +0 -391
  347. hackagent-0.14.0/hackagent/attacks/techniques/autodan_turbo/autodan_eval.py +0 -127
  348. hackagent-0.14.0/hackagent/attacks/techniques/autodan_turbo/config.py +0 -275
  349. hackagent-0.14.0/hackagent/attacks/techniques/autodan_turbo/core.py +0 -606
  350. hackagent-0.14.0/hackagent/attacks/techniques/autodan_turbo/dashboard_tracing.py +0 -67
  351. hackagent-0.14.0/hackagent/attacks/techniques/autodan_turbo/lifelong.py +0 -487
  352. hackagent-0.14.0/hackagent/attacks/techniques/autodan_turbo/log_styles.py +0 -90
  353. hackagent-0.14.0/hackagent/attacks/techniques/autodan_turbo/strategy_library.py +0 -400
  354. hackagent-0.14.0/hackagent/attacks/techniques/autodan_turbo/summarizer.py +0 -194
  355. hackagent-0.14.0/hackagent/attacks/techniques/autodan_turbo/warm_up.py +0 -377
  356. hackagent-0.14.0/hackagent/attacks/techniques/base.py +0 -472
  357. hackagent-0.14.0/hackagent/attacks/techniques/baseline/__init__.py +0 -13
  358. hackagent-0.14.0/hackagent/attacks/techniques/baseline/attack.py +0 -199
  359. hackagent-0.14.0/hackagent/attacks/techniques/baseline/config.py +0 -16
  360. hackagent-0.14.0/hackagent/attacks/techniques/baseline/generation.py +0 -183
  361. hackagent-0.14.0/hackagent/attacks/techniques/bon/__init__.py +0 -16
  362. hackagent-0.14.0/hackagent/attacks/techniques/bon/attack.py +0 -283
  363. hackagent-0.14.0/hackagent/attacks/techniques/bon/config.py +0 -121
  364. hackagent-0.14.0/hackagent/attacks/techniques/bon/generation.py +0 -746
  365. hackagent-0.14.0/hackagent/attacks/techniques/cipherchat/__init__.py +0 -12
  366. hackagent-0.14.0/hackagent/attacks/techniques/cipherchat/attack.py +0 -212
  367. hackagent-0.14.0/hackagent/attacks/techniques/cipherchat/config.py +0 -54
  368. hackagent-0.14.0/hackagent/attacks/techniques/cipherchat/encode_experts.py +0 -366
  369. hackagent-0.14.0/hackagent/attacks/techniques/cipherchat/generation.py +0 -335
  370. hackagent-0.14.0/hackagent/attacks/techniques/config.py +0 -467
  371. hackagent-0.14.0/hackagent/attacks/techniques/crescendo/__init__.py +0 -19
  372. hackagent-0.14.0/hackagent/attacks/techniques/crescendo/attack.py +0 -906
  373. hackagent-0.14.0/hackagent/attacks/techniques/crescendo/config.py +0 -116
  374. hackagent-0.14.0/hackagent/attacks/techniques/fc/__init__.py +0 -19
  375. hackagent-0.14.0/hackagent/attacks/techniques/fc/attack.py +0 -479
  376. hackagent-0.14.0/hackagent/attacks/techniques/fc/config.py +0 -190
  377. hackagent-0.14.0/hackagent/attacks/techniques/fc/generation.py +0 -606
  378. hackagent-0.14.0/hackagent/attacks/techniques/flipattack/__init__.py +0 -21
  379. hackagent-0.14.0/hackagent/attacks/techniques/flipattack/attack.py +0 -513
  380. hackagent-0.14.0/hackagent/attacks/techniques/flipattack/config.py +0 -114
  381. hackagent-0.14.0/hackagent/attacks/techniques/flipattack/generation.py +0 -222
  382. hackagent-0.14.0/hackagent/attacks/techniques/h4rm3l/__init__.py +0 -15
  383. hackagent-0.14.0/hackagent/attacks/techniques/h4rm3l/attack.py +0 -310
  384. hackagent-0.14.0/hackagent/attacks/techniques/h4rm3l/config.py +0 -183
  385. hackagent-0.14.0/hackagent/attacks/techniques/h4rm3l/generation.py +0 -365
  386. hackagent-0.14.0/hackagent/attacks/techniques/indirect_prompt_injection/attack.py +0 -1414
  387. hackagent-0.14.0/hackagent/attacks/techniques/indirect_prompt_injection/config.py +0 -215
  388. hackagent-0.14.0/hackagent/attacks/techniques/mml/__init__.py +0 -18
  389. hackagent-0.14.0/hackagent/attacks/techniques/mml/attack.py +0 -345
  390. hackagent-0.14.0/hackagent/attacks/techniques/mml/config.py +0 -115
  391. hackagent-0.14.0/hackagent/attacks/techniques/mml/generation.py +0 -288
  392. hackagent-0.14.0/hackagent/attacks/techniques/pair/__init__.py +0 -15
  393. hackagent-0.14.0/hackagent/attacks/techniques/pair/attack.py +0 -1360
  394. hackagent-0.14.0/hackagent/attacks/techniques/pair/config.py +0 -154
  395. hackagent-0.14.0/hackagent/attacks/techniques/pap/__init__.py +0 -15
  396. hackagent-0.14.0/hackagent/attacks/techniques/pap/attack.py +0 -232
  397. hackagent-0.14.0/hackagent/attacks/techniques/pap/config.py +0 -157
  398. hackagent-0.14.0/hackagent/attacks/techniques/pap/generation.py +0 -518
  399. hackagent-0.14.0/hackagent/attacks/techniques/rag/attack.py +0 -1446
  400. hackagent-0.14.0/hackagent/attacks/techniques/rag/jailbreak.py +0 -439
  401. hackagent-0.14.0/hackagent/attacks/techniques/static_template/__init__.py +0 -20
  402. hackagent-0.14.0/hackagent/attacks/techniques/static_template/attack.py +0 -285
  403. hackagent-0.14.0/hackagent/attacks/techniques/static_template/config.py +0 -134
  404. hackagent-0.14.0/hackagent/attacks/techniques/static_template/generation.py +0 -359
  405. hackagent-0.14.0/hackagent/attacks/techniques/static_template/static_eval.py +0 -668
  406. hackagent-0.14.0/hackagent/attacks/techniques/tap/__init__.py +0 -3
  407. hackagent-0.14.0/hackagent/attacks/techniques/tap/attack.py +0 -337
  408. hackagent-0.14.0/hackagent/attacks/techniques/tap/generation.py +0 -975
  409. hackagent-0.14.0/hackagent/attacks/techniques/tap/tap_evaluation.py +0 -293
  410. hackagent-0.14.0/hackagent/attacks/techniques/tool_output_ipi/__init__.py +0 -47
  411. hackagent-0.14.0/hackagent/attacks/techniques/tool_output_ipi/attack.py +0 -263
  412. hackagent-0.14.0/hackagent/attacks/techniques/tool_output_ipi/config.py +0 -155
  413. hackagent-0.14.0/hackagent/attacks/techniques/tool_output_ipi/generation.py +0 -1007
  414. hackagent-0.14.0/hackagent/attacks/types.py +0 -190
  415. hackagent-0.14.0/hackagent/cli/commands/agent.py +0 -101
  416. hackagent-0.14.0/hackagent/cli/commands/attack/__init__.py +0 -66
  417. hackagent-0.14.0/hackagent/cli/commands/attack/chain.py +0 -247
  418. hackagent-0.14.0/hackagent/cli/commands/attack/config.py +0 -109
  419. hackagent-0.14.0/hackagent/cli/commands/attack/display.py +0 -237
  420. hackagent-0.14.0/hackagent/cli/commands/attack/group.py +0 -119
  421. hackagent-0.14.0/hackagent/cli/commands/attack/info.py +0 -82
  422. hackagent-0.14.0/hackagent/cli/commands/attack/options.py +0 -82
  423. hackagent-0.14.0/hackagent/cli/commands/attack/runner.py +0 -175
  424. hackagent-0.14.0/hackagent/cli/commands/attack/strategies.py +0 -108
  425. hackagent-0.14.0/hackagent/cli/commands/claude.py +0 -288
  426. hackagent-0.14.0/hackagent/cli/commands/codex.py +0 -291
  427. hackagent-0.14.0/hackagent/cli/commands/scan/__init__.py +0 -47
  428. hackagent-0.14.0/hackagent/cli/commands/scan/command.py +0 -448
  429. hackagent-0.14.0/hackagent/cli/commands/scan/helpers.py +0 -120
  430. hackagent-0.14.0/hackagent/cli/commands/scan/quick.py +0 -181
  431. hackagent-0.14.0/hackagent/cli/config.py +0 -222
  432. hackagent-0.14.0/hackagent/cli/tui/attack_specs/__init__.py +0 -50
  433. hackagent-0.14.0/hackagent/cli/tui/attack_specs/registry.py +0 -41
  434. hackagent-0.14.0/hackagent/cli/tui/attack_specs/specs/__init__.py +0 -58
  435. hackagent-0.14.0/hackagent/cli/tui/attack_specs/specs/advprefix.py +0 -197
  436. hackagent-0.14.0/hackagent/cli/tui/attack_specs/specs/autodan_turbo.py +0 -150
  437. hackagent-0.14.0/hackagent/cli/tui/attack_specs/specs/baseline.py +0 -104
  438. hackagent-0.14.0/hackagent/cli/tui/attack_specs/specs/bon.py +0 -131
  439. hackagent-0.14.0/hackagent/cli/tui/attack_specs/specs/cipherchat.py +0 -215
  440. hackagent-0.14.0/hackagent/cli/tui/attack_specs/specs/fc.py +0 -65
  441. hackagent-0.14.0/hackagent/cli/tui/attack_specs/specs/flipattack.py +0 -107
  442. hackagent-0.14.0/hackagent/cli/tui/attack_specs/specs/h4rm3l.py +0 -100
  443. hackagent-0.14.0/hackagent/cli/tui/attack_specs/specs/mml.py +0 -121
  444. hackagent-0.14.0/hackagent/cli/tui/attack_specs/specs/pair.py +0 -142
  445. hackagent-0.14.0/hackagent/cli/tui/attack_specs/specs/pap.py +0 -139
  446. hackagent-0.14.0/hackagent/cli/tui/attack_specs/specs/static_template.py +0 -146
  447. hackagent-0.14.0/hackagent/cli/tui/attack_specs/specs/tap.py +0 -119
  448. hackagent-0.14.0/hackagent/cli/tui/attack_specs/specs/tfc.py +0 -80
  449. hackagent-0.14.0/hackagent/cli/tui/attack_specs/specs/tool_output_ipi.py +0 -168
  450. hackagent-0.14.0/hackagent/cli/tui/attack_specs/types.py +0 -182
  451. hackagent-0.14.0/hackagent/cli/tui/logger.py +0 -264
  452. hackagent-0.14.0/hackagent/cli/tui/views/__init__.py +0 -22
  453. hackagent-0.14.0/hackagent/cli/tui/views/attacks/__init__.py +0 -37
  454. hackagent-0.14.0/hackagent/cli/tui/views/attacks/executor.py +0 -429
  455. hackagent-0.14.0/hackagent/cli/tui/views/attacks/form.py +0 -531
  456. hackagent-0.14.0/hackagent/cli/tui/views/attacks/helpers.py +0 -131
  457. hackagent-0.14.0/hackagent/cli/tui/views/attacks/layout.py +0 -261
  458. hackagent-0.14.0/hackagent/cli/tui/views/attacks/runner.py +0 -287
  459. hackagent-0.14.0/hackagent/cli/tui/views/attacks/tab.py +0 -391
  460. hackagent-0.14.0/hackagent/cli/tui/views/results/details.py +0 -377
  461. hackagent-0.14.0/hackagent/cli/tui/views/results/tab.py +0 -400
  462. hackagent-0.14.0/hackagent/cli/tui/views/results/table.py +0 -212
  463. hackagent-0.14.0/hackagent/config.py +0 -170
  464. hackagent-0.14.0/hackagent/datasets/intents.py +0 -349
  465. hackagent-0.14.0/hackagent/examples/claude/hack_claude.py +0 -86
  466. hackagent-0.14.0/hackagent/examples/claude/hack_ollama.py +0 -80
  467. hackagent-0.14.0/hackagent/examples/codex/hack_codex.py +0 -89
  468. hackagent-0.14.0/hackagent/examples/codex/hack_ollama.py +0 -77
  469. hackagent-0.14.0/hackagent/examples/google_adk/jailbreak_eval/hack.py +0 -154
  470. hackagent-0.14.0/hackagent/examples/google_adk/multi_tool_agent/hack.py +0 -31
  471. hackagent-0.14.0/hackagent/examples/hermes/hack_hermes.py +0 -94
  472. hackagent-0.14.0/hackagent/examples/langchain/rag/hack.py +0 -61
  473. hackagent-0.14.0/hackagent/examples/litellm_multi_provider/demo.py +0 -245
  474. hackagent-0.14.0/hackagent/examples/ollama/demo.py +0 -117
  475. hackagent-0.14.0/hackagent/examples/ollama/hack.py +0 -154
  476. hackagent-0.14.0/hackagent/examples/ollama/local.py +0 -25
  477. hackagent-0.14.0/hackagent/examples/openai_sdk/db_tool_sandbox/hack.py +0 -101
  478. hackagent-0.14.0/hackagent/examples/openai_sdk/multi_judge/run_flipattack_multi_judge.py +0 -108
  479. hackagent-0.14.0/hackagent/examples/openai_sdk/pc_tool_sandbox/hack.py +0 -116
  480. hackagent-0.14.0/hackagent/examples/openai_sdk/quick_evaluation/run_h4rm3l.py +0 -96
  481. hackagent-0.14.0/hackagent/examples/openai_sdk/rag/hack.py +0 -72
  482. hackagent-0.14.0/hackagent/examples/rag/test_indirect_injection.py +0 -196
  483. hackagent-0.14.0/hackagent/examples/vllm/hack.py +0 -219
  484. hackagent-0.14.0/hackagent/examples/web/hack.py +0 -95
  485. hackagent-0.14.0/hackagent/risks/craft_adversarial_data/__init__.py +0 -14
  486. hackagent-0.14.0/hackagent/risks/excessive_agency/__init__.py +0 -8
  487. hackagent-0.14.0/hackagent/risks/jailbreak/__init__.py +0 -8
  488. hackagent-0.14.0/hackagent/risks/misinformation/__init__.py +0 -8
  489. hackagent-0.14.0/hackagent/risks/model_evasion/__init__.py +0 -8
  490. hackagent-0.14.0/hackagent/risks/prompt_injection/__init__.py +0 -14
  491. hackagent-0.14.0/hackagent/router/__init__.py +0 -32
  492. hackagent-0.14.0/hackagent/router/_chat_registration.py +0 -192
  493. hackagent-0.14.0/hackagent/router/agent.py +0 -607
  494. hackagent-0.14.0/hackagent/router/discovery/__init__.py +0 -53
  495. hackagent-0.14.0/hackagent/router/discovery/scanner.py +0 -489
  496. hackagent-0.14.0/hackagent/router/envelope.py +0 -344
  497. hackagent-0.14.0/hackagent/router/providers/__init__.py +0 -0
  498. hackagent-0.14.0/hackagent/router/router.py +0 -1256
  499. hackagent-0.14.0/hackagent/router/tracking/__init__.py +0 -46
  500. hackagent-0.14.0/hackagent/router/tracking/audit.py +0 -72
  501. hackagent-0.14.0/hackagent/router/tracking/category_classifier.py +0 -659
  502. hackagent-0.14.0/hackagent/router/tracking/context.py +0 -152
  503. hackagent-0.14.0/hackagent/router/tracking/coordinator.py +0 -820
  504. hackagent-0.14.0/hackagent/router/tracking/decorators.py +0 -305
  505. hackagent-0.14.0/hackagent/router/tracking/step.py +0 -540
  506. hackagent-0.14.0/hackagent/router/tracking/tracker.py +0 -872
  507. hackagent-0.14.0/hackagent/router/tracking_logger.py +0 -246
  508. hackagent-0.14.0/hackagent/router/types.py +0 -138
  509. hackagent-0.14.0/hackagent/server/__init__.py +0 -0
  510. hackagent-0.14.0/hackagent/server/storage/__init__.py +0 -0
  511. hackagent-0.14.0/hackagent/server/storage/enums.py +0 -34
  512. hackagent-0.14.0/hackagent/utils.py +0 -144
  513. {hackagent-0.14.0 → hackagent-0.15.0}/LICENSE +0 -0
  514. {hackagent-0.14.0 → hackagent-0.15.0}/hackagent/_version.py +0 -0
  515. {hackagent-0.14.0/hackagent/attacks/shared → hackagent-0.15.0/hackagent/attacks/_lib}/prompt_parser.py +0 -0
  516. /hackagent-0.14.0/hackagent/attacks/shared/utils.py → /hackagent-0.15.0/hackagent/attacks/_lib/transforms.py +0 -0
  517. {hackagent-0.14.0/hackagent/attacks/techniques → hackagent-0.15.0/hackagent/attacks/techniques/static}/fc/prompts.py +0 -0
  518. {hackagent-0.14.0/hackagent/attacks/techniques → hackagent-0.15.0/hackagent/attacks/techniques/static}/mml/prompts.py +0 -0
  519. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/craft_adversarial_data/types.py +0 -0
  520. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/credential_exposure/types.py +0 -0
  521. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/excessive_agency/types.py +0 -0
  522. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/input_manipulation_attack/types.py +0 -0
  523. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/jailbreak/types.py +0 -0
  524. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/malicious_tool_invocation/types.py +0 -0
  525. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/misinformation/types.py +0 -0
  526. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/model_evasion/types.py +0 -0
  527. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/prompt_injection/types.py +0 -0
  528. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/public_facing_application_exploitation/types.py +0 -0
  529. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/sensitive_information_disclosure/types.py +0 -0
  530. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/system_prompt_leakage/types.py +0 -0
  531. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/utils.py +0 -0
  532. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/catalog}/risks/vector_embedding_weaknesses_exploit/types.py +0 -0
  533. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/core}/async_utils.py +0 -0
  534. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/core}/errors.py +0 -0
  535. {hackagent-0.14.0 → hackagent-0.15.0}/hackagent/datasets/omnisafebench/dataset.json +0 -0
  536. {hackagent-0.14.0 → hackagent-0.15.0}/hackagent/datasets/providers/__init__.py +0 -0
  537. {hackagent-0.14.0 → hackagent-0.15.0}/hackagent/examples/google_adk/jailbreak_eval/__init__.py +0 -0
  538. {hackagent-0.14.0 → hackagent-0.15.0}/hackagent/examples/google_adk/jailbreak_eval/agent.py +0 -0
  539. {hackagent-0.14.0 → hackagent-0.15.0}/hackagent/examples/google_adk/multi_tool_agent/__init__.py +0 -0
  540. {hackagent-0.14.0 → hackagent-0.15.0}/hackagent/examples/google_adk/multi_tool_agent/agent.py +0 -0
  541. {hackagent-0.14.0 → hackagent-0.15.0}/hackagent/examples/langchain/rag/agent_client.py +0 -0
  542. {hackagent-0.14.0 → hackagent-0.15.0}/hackagent/examples/langchain/rag/agent_server.py +0 -0
  543. {hackagent-0.14.0 → hackagent-0.15.0}/hackagent/examples/langchain/rag/ingest.py +0 -0
  544. {hackagent-0.14.0 → hackagent-0.15.0}/hackagent/examples/langchain/rag/policies.pdf +0 -0
  545. {hackagent-0.14.0 → hackagent-0.15.0}/hackagent/examples/langchain/rag/read_db.py +0 -0
  546. {hackagent-0.14.0 → hackagent-0.15.0}/hackagent/examples/litellm_multi_provider/__init__.py +0 -0
  547. {hackagent-0.14.0 → hackagent-0.15.0}/hackagent/examples/openai_sdk/db_tool_sandbox/agent.py +0 -0
  548. {hackagent-0.14.0 → hackagent-0.15.0}/hackagent/examples/openai_sdk/db_tool_sandbox/sandbox.db +0 -0
  549. {hackagent-0.14.0 → hackagent-0.15.0}/hackagent/examples/openai_sdk/pc_tool_sandbox/agent.py +0 -0
  550. {hackagent-0.14.0 → hackagent-0.15.0}/hackagent/examples/openai_sdk/pc_tool_sandbox/confidential/db_credentials.txt +0 -0
  551. {hackagent-0.14.0 → hackagent-0.15.0}/hackagent/examples/openai_sdk/rag/agent_server.py +0 -0
  552. {hackagent-0.14.0 → hackagent-0.15.0}/hackagent/examples/openai_sdk/rag/ingest.py +0 -0
  553. {hackagent-0.14.0 → hackagent-0.15.0}/hackagent/examples/openai_sdk/rag/policies.pdf +0 -0
  554. {hackagent-0.14.0 → hackagent-0.15.0}/hackagent/examples/rag/.gitignore +0 -0
  555. {hackagent-0.14.0 → hackagent-0.15.0}/hackagent/examples/rag/test_data/gender_studies_overview.txt +0 -0
  556. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/interfaces}/cli/__init__.py +0 -0
  557. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/interfaces}/cli/commands/__init__.py +0 -0
  558. {hackagent-0.14.0/hackagent → hackagent-0.15.0/hackagent/interfaces}/cli/safe_stdio.py +0 -0
  559. {hackagent-0.14.0/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/theme.py +0 -0
  560. {hackagent-0.14.0/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/views/results/formatters/datetimes.py +0 -0
  561. {hackagent-0.14.0/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/views/results/formatters/text.py +0 -0
  562. {hackagent-0.14.0/hackagent/cli → hackagent-0.15.0/hackagent/interfaces}/tui/widgets/clipboard.py +0 -0
  563. {hackagent-0.14.0/hackagent/server/webui → hackagent-0.15.0/hackagent/interfaces/web}/static/.gitignore +0 -0
  564. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/__init__.py +0 -0
  565. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/agent/__init__.py +0 -0
  566. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/agent/agent_create.py +0 -0
  567. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/agent/agent_destroy.py +0 -0
  568. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/agent/agent_list.py +0 -0
  569. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/agent/agent_partial_update.py +0 -0
  570. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/agent/agent_retrieve.py +0 -0
  571. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/agent/agent_update.py +0 -0
  572. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/apilogs/__init__.py +0 -0
  573. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/apilogs/apilogs_list.py +0 -0
  574. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/apilogs/apilogs_retrieve.py +0 -0
  575. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/apilogs/apilogs_summary_retrieve.py +0 -0
  576. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/attack/__init__.py +0 -0
  577. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/attack/attack_create.py +0 -0
  578. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/attack/attack_destroy.py +0 -0
  579. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/attack/attack_list.py +0 -0
  580. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/attack/attack_partial_update.py +0 -0
  581. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/attack/attack_retrieve.py +0 -0
  582. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/attack/attack_update.py +0 -0
  583. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/checkout/__init__.py +0 -0
  584. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/checkout/checkout_create.py +0 -0
  585. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/generate/__init__.py +0 -0
  586. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/generate/v1_chat_completions_create.py +0 -0
  587. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/judge/__init__.py +0 -0
  588. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/judge/judge_create.py +0 -0
  589. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/key/__init__.py +0 -0
  590. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/key/key_context_retrieve.py +0 -0
  591. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/key/key_create.py +0 -0
  592. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/key/key_destroy.py +0 -0
  593. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/key/key_list.py +0 -0
  594. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/key/key_retrieve.py +0 -0
  595. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/organization/__init__.py +0 -0
  596. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/organization/organization_create.py +0 -0
  597. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/organization/organization_destroy.py +0 -0
  598. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/organization/organization_list.py +0 -0
  599. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/organization/organization_me_retrieve.py +0 -0
  600. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/organization/organization_partial_update.py +0 -0
  601. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/organization/organization_retrieve.py +0 -0
  602. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/organization/organization_update.py +0 -0
  603. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/result/__init__.py +0 -0
  604. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/result/result_create.py +0 -0
  605. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/result/result_destroy.py +0 -0
  606. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/result/result_list.py +0 -0
  607. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/result/result_partial_update.py +0 -0
  608. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/result/result_retrieve.py +0 -0
  609. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/result/result_trace_create.py +0 -0
  610. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/result/result_update.py +0 -0
  611. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/run/__init__.py +0 -0
  612. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/run/run_create.py +0 -0
  613. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/run/run_destroy.py +0 -0
  614. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/run/run_list.py +0 -0
  615. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/run/run_partial_update.py +0 -0
  616. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/run/run_result_create.py +0 -0
  617. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/run/run_retrieve.py +0 -0
  618. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/run/run_run_tests_create.py +0 -0
  619. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/run/run_update.py +0 -0
  620. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/user/__init__.py +0 -0
  621. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/user/user_create.py +0 -0
  622. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/user/user_destroy.py +0 -0
  623. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/user/user_list.py +0 -0
  624. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/user/user_me_retrieve.py +0 -0
  625. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/user/user_me_update.py +0 -0
  626. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/user/user_partial_update.py +0 -0
  627. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/user/user_retrieve.py +0 -0
  628. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/api/user/user_update.py +0 -0
  629. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/client.py +0 -0
  630. {hackagent-0.14.0/hackagent/server → hackagent-0.15.0/hackagent/storage/_http}/types.py +0 -0
  631. {hackagent-0.14.0/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.14.0
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"]