arksim 0.0.2__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 (245) hide show
  1. arksim-0.0.2/.editorconfig +18 -0
  2. arksim-0.0.2/.github/CODEOWNERS +1 -0
  3. arksim-0.0.2/.github/ISSUE_TEMPLATE/bug_report.yml +53 -0
  4. arksim-0.0.2/.github/ISSUE_TEMPLATE/config.yml +8 -0
  5. arksim-0.0.2/.github/ISSUE_TEMPLATE/feature_request.yml +23 -0
  6. arksim-0.0.2/.github/dependabot.yml +27 -0
  7. arksim-0.0.2/.github/pull_request_template.md +39 -0
  8. arksim-0.0.2/.github/workflows/ci.yml +42 -0
  9. arksim-0.0.2/.github/workflows/pr-checks.yml +108 -0
  10. arksim-0.0.2/.github/workflows/publish-pypi.yml +105 -0
  11. arksim-0.0.2/.gitignore +57 -0
  12. arksim-0.0.2/.pre-commit-config.yaml +25 -0
  13. arksim-0.0.2/CHANGELOG.md +71 -0
  14. arksim-0.0.2/CODE_OF_CONDUCT.md +42 -0
  15. arksim-0.0.2/CONTRIBUTING.md +87 -0
  16. arksim-0.0.2/LICENSE +191 -0
  17. arksim-0.0.2/Makefile +21 -0
  18. arksim-0.0.2/PKG-INFO +357 -0
  19. arksim-0.0.2/README.md +308 -0
  20. arksim-0.0.2/SECURITY.md +21 -0
  21. arksim-0.0.2/arksim/__init__.py +50 -0
  22. arksim-0.0.2/arksim/_version.py +34 -0
  23. arksim-0.0.2/arksim/cli.py +395 -0
  24. arksim-0.0.2/arksim/config/__init__.py +11 -0
  25. arksim-0.0.2/arksim/config/core/__init__.py +0 -0
  26. arksim-0.0.2/arksim/config/core/agent.py +128 -0
  27. arksim-0.0.2/arksim/config/types.py +8 -0
  28. arksim-0.0.2/arksim/config/utils.py +38 -0
  29. arksim-0.0.2/arksim/config_evaluate.yaml +39 -0
  30. arksim-0.0.2/arksim/config_simulate_evaluate.yaml +80 -0
  31. arksim-0.0.2/arksim/constants.py +4 -0
  32. arksim-0.0.2/arksim/evaluator/__init__.py +34 -0
  33. arksim-0.0.2/arksim/evaluator/base_metric.py +137 -0
  34. arksim-0.0.2/arksim/evaluator/builtin_metrics.py +194 -0
  35. arksim-0.0.2/arksim/evaluator/entities.py +175 -0
  36. arksim-0.0.2/arksim/evaluator/error_detection.py +136 -0
  37. arksim-0.0.2/arksim/evaluator/evaluate.py +241 -0
  38. arksim-0.0.2/arksim/evaluator/evaluator.py +670 -0
  39. arksim-0.0.2/arksim/evaluator/prompt_registry.py +151 -0
  40. arksim-0.0.2/arksim/evaluator/utils/__init__.py +0 -0
  41. arksim-0.0.2/arksim/evaluator/utils/constants.py +29 -0
  42. arksim-0.0.2/arksim/evaluator/utils/enums.py +57 -0
  43. arksim-0.0.2/arksim/evaluator/utils/error_messages.py +41 -0
  44. arksim-0.0.2/arksim/evaluator/utils/prompts.py +341 -0
  45. arksim-0.0.2/arksim/evaluator/utils/schema.py +21 -0
  46. arksim-0.0.2/arksim/llms/__init__.py +0 -0
  47. arksim-0.0.2/arksim/llms/chat/__init__.py +3 -0
  48. arksim-0.0.2/arksim/llms/chat/base/__init__.py +0 -0
  49. arksim-0.0.2/arksim/llms/chat/base/base_llm.py +94 -0
  50. arksim-0.0.2/arksim/llms/chat/base/types.py +17 -0
  51. arksim-0.0.2/arksim/llms/chat/llm.py +37 -0
  52. arksim-0.0.2/arksim/llms/chat/providers/azure_openai.py +132 -0
  53. arksim-0.0.2/arksim/llms/chat/providers/claude.py +122 -0
  54. arksim-0.0.2/arksim/llms/chat/providers/gemini.py +126 -0
  55. arksim-0.0.2/arksim/llms/chat/providers/openai.py +97 -0
  56. arksim-0.0.2/arksim/llms/chat/utils.py +64 -0
  57. arksim-0.0.2/arksim/llms/embedding/__init__.py +0 -0
  58. arksim-0.0.2/arksim/llms/utils/__init__.py +3 -0
  59. arksim-0.0.2/arksim/llms/utils/azure.py +39 -0
  60. arksim-0.0.2/arksim/py.typed +0 -0
  61. arksim-0.0.2/arksim/scenario/__init__.py +7 -0
  62. arksim-0.0.2/arksim/scenario/entities.py +33 -0
  63. arksim-0.0.2/arksim/simulation_engine/__init__.py +20 -0
  64. arksim-0.0.2/arksim/simulation_engine/agent/__init__.py +5 -0
  65. arksim-0.0.2/arksim/simulation_engine/agent/base.py +20 -0
  66. arksim-0.0.2/arksim/simulation_engine/agent/clients/a2a.py +113 -0
  67. arksim-0.0.2/arksim/simulation_engine/agent/clients/chat_completions.py +79 -0
  68. arksim-0.0.2/arksim/simulation_engine/agent/factory.py +17 -0
  69. arksim-0.0.2/arksim/simulation_engine/agent/utils.py +70 -0
  70. arksim-0.0.2/arksim/simulation_engine/core/__init__.py +15 -0
  71. arksim-0.0.2/arksim/simulation_engine/core/multi_knowledge_handling.py +198 -0
  72. arksim-0.0.2/arksim/simulation_engine/core/profile.py +83 -0
  73. arksim-0.0.2/arksim/simulation_engine/entities.py +139 -0
  74. arksim-0.0.2/arksim/simulation_engine/simulator.py +446 -0
  75. arksim-0.0.2/arksim/simulation_engine/utils/prompts.py +125 -0
  76. arksim-0.0.2/arksim/simulation_engine/utils/schema.py +8 -0
  77. arksim-0.0.2/arksim/simulation_engine/utils/utils.py +29 -0
  78. arksim-0.0.2/arksim/ui/__init__.py +0 -0
  79. arksim-0.0.2/arksim/ui/api/__init__.py +0 -0
  80. arksim-0.0.2/arksim/ui/api/routes_evaluate.py +137 -0
  81. arksim-0.0.2/arksim/ui/api/routes_filesystem.py +249 -0
  82. arksim-0.0.2/arksim/ui/api/routes_results.py +68 -0
  83. arksim-0.0.2/arksim/ui/api/routes_simulate.py +166 -0
  84. arksim-0.0.2/arksim/ui/api/state.py +162 -0
  85. arksim-0.0.2/arksim/ui/api/ws_logs.py +44 -0
  86. arksim-0.0.2/arksim/ui/app.py +75 -0
  87. arksim-0.0.2/arksim/ui/frontend/app.js +713 -0
  88. arksim-0.0.2/arksim/ui/frontend/index.html +800 -0
  89. arksim-0.0.2/arksim/utils/concurrency/__init__.py +6 -0
  90. arksim-0.0.2/arksim/utils/concurrency/workers.py +18 -0
  91. arksim-0.0.2/arksim/utils/html_report/__init__.py +5 -0
  92. arksim-0.0.2/arksim/utils/html_report/generate_html_report.py +530 -0
  93. arksim-0.0.2/arksim/utils/html_report/report_template.html +2437 -0
  94. arksim-0.0.2/arksim/utils/logger/__init__.py +5 -0
  95. arksim-0.0.2/arksim/utils/logger/logging.py +52 -0
  96. arksim-0.0.2/arksim/utils/output/__init__.py +13 -0
  97. arksim-0.0.2/arksim/utils/output/types.py +8 -0
  98. arksim-0.0.2/arksim/utils/output/utils.py +56 -0
  99. arksim-0.0.2/docs/CONTRIBUTING.md +128 -0
  100. arksim-0.0.2/docs/LICENSE +21 -0
  101. arksim-0.0.2/docs/README.md +162 -0
  102. arksim-0.0.2/docs/assets/arksim-flow.svg +1 -0
  103. arksim-0.0.2/docs/build-scenario.mdx +187 -0
  104. arksim-0.0.2/docs/contact-email.mdx +25 -0
  105. arksim-0.0.2/docs/docs.json +107 -0
  106. arksim-0.0.2/docs/e-commerce-customer-service-agent-evaluation.mdx +273 -0
  107. arksim-0.0.2/docs/evaluate-conversation.mdx +248 -0
  108. arksim-0.0.2/docs/favicon.svg +1 -0
  109. arksim-0.0.2/docs/images/a2a-docker-endpoint.png +0 -0
  110. arksim-0.0.2/docs/images/arksim-overview.svg +1 -0
  111. arksim-0.0.2/docs/images/arksim-workflow.svg +1 -0
  112. arksim-0.0.2/docs/images/checks-passed.png +0 -0
  113. arksim-0.0.2/docs/images/conv-evaluation.svg +1 -0
  114. arksim-0.0.2/docs/images/conv-simulation.svg +1 -0
  115. arksim-0.0.2/docs/images/evaluation.svg +1 -0
  116. arksim-0.0.2/docs/images/hero-dark.png +0 -0
  117. arksim-0.0.2/docs/images/hero-light.png +0 -0
  118. arksim-0.0.2/docs/images/scenario-building.svg +1 -0
  119. arksim-0.0.2/docs/images/scenarios.svg +1 -0
  120. arksim-0.0.2/docs/images/simulation.svg +1 -0
  121. arksim-0.0.2/docs/images/workflow-chart.svg +1 -0
  122. arksim-0.0.2/docs/installation.mdx +55 -0
  123. arksim-0.0.2/docs/insurance-customer-service-agent-evaluation.mdx +236 -0
  124. arksim-0.0.2/docs/logo/dark-mode.svg +1 -0
  125. arksim-0.0.2/docs/logo/dark.svg +21 -0
  126. arksim-0.0.2/docs/logo/light-mode.svg +1 -0
  127. arksim-0.0.2/docs/logo/light.svg +21 -0
  128. arksim-0.0.2/docs/overview.mdx +69 -0
  129. arksim-0.0.2/docs/personal-ai-assistant-openclaw-evaluation.mdx +186 -0
  130. arksim-0.0.2/docs/quickstart.mdx +185 -0
  131. arksim-0.0.2/docs/results.mdx +183 -0
  132. arksim-0.0.2/docs/schema-reference.mdx +229 -0
  133. arksim-0.0.2/docs/simulate-conversation.mdx +348 -0
  134. arksim-0.0.2/docs/snippets/snippet-intro.mdx +4 -0
  135. arksim-0.0.2/docs/styles.css +3 -0
  136. arksim-0.0.2/examples/bank-insurance/README.md +80 -0
  137. arksim-0.0.2/examples/bank-insurance/agent_server/a2a/agent_executor.py +34 -0
  138. arksim-0.0.2/examples/bank-insurance/agent_server/a2a/server.py +108 -0
  139. arksim-0.0.2/examples/bank-insurance/agent_server/chat_completions/server.py +111 -0
  140. arksim-0.0.2/examples/bank-insurance/agent_server/core/__init__.py +12 -0
  141. arksim-0.0.2/examples/bank-insurance/agent_server/core/agent.py +82 -0
  142. arksim-0.0.2/examples/bank-insurance/agent_server/core/loader.py +797 -0
  143. arksim-0.0.2/examples/bank-insurance/agent_server/core/retriever.py +208 -0
  144. arksim-0.0.2/examples/bank-insurance/agent_server/data/01_what_is_car_insurance.md +81 -0
  145. arksim-0.0.2/examples/bank-insurance/agent_server/data/02_what_is_home_insurance.md +58 -0
  146. arksim-0.0.2/examples/bank-insurance/agent_server/data/03_car_insurance_deductibles.md +58 -0
  147. arksim-0.0.2/examples/bank-insurance/agent_server/data/04_home_insurance_deductibles.md +46 -0
  148. arksim-0.0.2/examples/bank-insurance/agent_server/data/05_insurance_terminology.md +120 -0
  149. arksim-0.0.2/examples/bank-insurance/agent_server/data/06_what_to_do_after_car_accident.md +75 -0
  150. arksim-0.0.2/examples/bank-insurance/agent_server/data/07_filing_insurance_claims.md +91 -0
  151. arksim-0.0.2/examples/bank-insurance/agent_server/data/08_preventing_water_damage.md +59 -0
  152. arksim-0.0.2/examples/bank-insurance/agent_server/data/09_condo_insurance_guide.md +111 -0
  153. arksim-0.0.2/examples/bank-insurance/agent_server/data/10_tenant_insurance.md +109 -0
  154. arksim-0.0.2/examples/bank-insurance/agent_server/data/11_car_insurance_for_new_drivers.md +110 -0
  155. arksim-0.0.2/examples/bank-insurance/agent_server/data/12_how_car_insurance_premiums_calculated.md +129 -0
  156. arksim-0.0.2/examples/bank-insurance/agent_server/data/13_how_home_insurance_premiums_calculated.md +157 -0
  157. arksim-0.0.2/examples/bank-insurance/agent_server/data/14_bundling_insurance_policies.md +137 -0
  158. arksim-0.0.2/examples/bank-insurance/agent_server/data/15_liability_insurance_explained.md +146 -0
  159. arksim-0.0.2/examples/bank-insurance/agent_server/data/16_comprehensive_vs_collision_coverage.md +140 -0
  160. arksim-0.0.2/examples/bank-insurance/agent_server/data/17_accident_forgiveness.md +131 -0
  161. arksim-0.0.2/examples/bank-insurance/agent_server/data/18_winter_driving_safety.md +139 -0
  162. arksim-0.0.2/examples/bank-insurance/agent_server/data/19_protecting_home_from_fire.md +165 -0
  163. arksim-0.0.2/examples/bank-insurance/agent_server/data/20_motorcycle_rv_insurance.md +159 -0
  164. arksim-0.0.2/examples/bank-insurance/agent_server/data/21_identity_theft_protection.md +157 -0
  165. arksim-0.0.2/examples/bank-insurance/agent_server/data/22_small_business_insurance.md +191 -0
  166. arksim-0.0.2/examples/bank-insurance/agent_server/data/23_cottage_vacation_property_insurance.md +187 -0
  167. arksim-0.0.2/examples/bank-insurance/agent_server/data/24_emergency_preparedness.md +183 -0
  168. arksim-0.0.2/examples/bank-insurance/agent_server/data/25_insurance_savings_tips.md +206 -0
  169. arksim-0.0.2/examples/bank-insurance/agent_server/requirements.txt +23 -0
  170. arksim-0.0.2/examples/bank-insurance/config.yaml +80 -0
  171. arksim-0.0.2/examples/bank-insurance/config_a2a.yaml +65 -0
  172. arksim-0.0.2/examples/bank-insurance/config_chat_completions.yaml +71 -0
  173. arksim-0.0.2/examples/bank-insurance/custom_metrics.py +580 -0
  174. arksim-0.0.2/examples/bank-insurance/scenarios.json +246 -0
  175. arksim-0.0.2/examples/e-commerce/README.md +72 -0
  176. arksim-0.0.2/examples/e-commerce/agent_server/chat_completions/__init__.py +0 -0
  177. arksim-0.0.2/examples/e-commerce/agent_server/chat_completions/server.py +111 -0
  178. arksim-0.0.2/examples/e-commerce/agent_server/core/__init__.py +12 -0
  179. arksim-0.0.2/examples/e-commerce/agent_server/core/agent.py +83 -0
  180. arksim-0.0.2/examples/e-commerce/agent_server/core/loader.py +797 -0
  181. arksim-0.0.2/examples/e-commerce/agent_server/core/retriever.py +208 -0
  182. arksim-0.0.2/examples/e-commerce/agent_server/data/Baby_Diapers.md +35 -0
  183. arksim-0.0.2/examples/e-commerce/agent_server/data/Baby_Lotion.md +47 -0
  184. arksim-0.0.2/examples/e-commerce/agent_server/data/Baby_Set.md +34 -0
  185. arksim-0.0.2/examples/e-commerce/agent_server/data/Baby_Wear.md +46 -0
  186. arksim-0.0.2/examples/e-commerce/agent_server/data/Baby_Wipes.md +35 -0
  187. arksim-0.0.2/examples/e-commerce/agent_server/data/Canvas_Wall_Art.md +25 -0
  188. arksim-0.0.2/examples/e-commerce/agent_server/data/Carpet_Cleaner.md +37 -0
  189. arksim-0.0.2/examples/e-commerce/agent_server/data/Cat_Food.md +45 -0
  190. arksim-0.0.2/examples/e-commerce/agent_server/data/Christmas_Tree_Decoration.md +29 -0
  191. arksim-0.0.2/examples/e-commerce/agent_server/data/Christmas_Tree_Ornaments.md +28 -0
  192. arksim-0.0.2/examples/e-commerce/agent_server/data/Christmas_Wreath.md +29 -0
  193. arksim-0.0.2/examples/e-commerce/agent_server/data/Curtain_Decoration.md +31 -0
  194. arksim-0.0.2/examples/e-commerce/agent_server/data/Desk_Lamp.md +33 -0
  195. arksim-0.0.2/examples/e-commerce/agent_server/data/Dog_Food.md +35 -0
  196. arksim-0.0.2/examples/e-commerce/agent_server/data/Dog_Sausage.md +44 -0
  197. arksim-0.0.2/examples/e-commerce/agent_server/data/Fence_Yard_Sign.md +23 -0
  198. arksim-0.0.2/examples/e-commerce/agent_server/data/Furniture_Bed.md +30 -0
  199. arksim-0.0.2/examples/e-commerce/agent_server/data/LED_Strip_Lights.md +47 -0
  200. arksim-0.0.2/examples/e-commerce/agent_server/data/Laundry_Basket.md +54 -0
  201. arksim-0.0.2/examples/e-commerce/agent_server/data/Lysol_Cleaner.md +38 -0
  202. arksim-0.0.2/examples/e-commerce/agent_server/data/Mushroom_Scratching_Post.md +36 -0
  203. arksim-0.0.2/examples/e-commerce/agent_server/data/Pet_Feeder.md +25 -0
  204. arksim-0.0.2/examples/e-commerce/agent_server/data/Pet_House.md +30 -0
  205. arksim-0.0.2/examples/e-commerce/agent_server/data/Pet_Sweater.md +30 -0
  206. arksim-0.0.2/examples/e-commerce/agent_server/data/Photo_Clip_String_Lights.md +27 -0
  207. arksim-0.0.2/examples/e-commerce/agent_server/data/Plastic_Bin.md +31 -0
  208. arksim-0.0.2/examples/e-commerce/agent_server/data/Reading_Chair.md +50 -0
  209. arksim-0.0.2/examples/e-commerce/agent_server/data/Shelving_Rack.md +29 -0
  210. arksim-0.0.2/examples/e-commerce/agent_server/data/Shoe_Organizer_Box.md +22 -0
  211. arksim-0.0.2/examples/e-commerce/agent_server/data/Shower_Catty.md +33 -0
  212. arksim-0.0.2/examples/e-commerce/agent_server/data/Sleeper_Couch.md +66 -0
  213. arksim-0.0.2/examples/e-commerce/agent_server/data/Spiderman_Wall_Stickers.md +23 -0
  214. arksim-0.0.2/examples/e-commerce/agent_server/data/Storage_Organizer.md +49 -0
  215. arksim-0.0.2/examples/e-commerce/agent_server/data/TV_Stand.md +31 -0
  216. arksim-0.0.2/examples/e-commerce/agent_server/data/Toilet_Cleaner.md +46 -0
  217. arksim-0.0.2/examples/e-commerce/agent_server/data/Vaccuum_Cleaner.md +41 -0
  218. arksim-0.0.2/examples/e-commerce/agent_server/data/Village_House_Christmas_Decoration.md +27 -0
  219. arksim-0.0.2/examples/e-commerce/agent_server/data/Washer_Tablets.md +42 -0
  220. arksim-0.0.2/examples/e-commerce/agent_server/requirements.txt +20 -0
  221. arksim-0.0.2/examples/e-commerce/config.yaml +75 -0
  222. arksim-0.0.2/examples/e-commerce/config_chat_completions.yaml +71 -0
  223. arksim-0.0.2/examples/e-commerce/custom_metrics.py +275 -0
  224. arksim-0.0.2/examples/e-commerce/run_pipeline.py +126 -0
  225. arksim-0.0.2/examples/e-commerce/scenarios.json +215 -0
  226. arksim-0.0.2/examples/openclaw/README.md +74 -0
  227. arksim-0.0.2/examples/openclaw/config.yaml +73 -0
  228. arksim-0.0.2/examples/openclaw/scenarios.json +220 -0
  229. arksim-0.0.2/pyproject.toml +91 -0
  230. arksim-0.0.2/pytest.ini +22 -0
  231. arksim-0.0.2/scripts/check-changelog.sh +12 -0
  232. arksim-0.0.2/tests/__init__.py +0 -0
  233. arksim-0.0.2/tests/conftest.py +73 -0
  234. arksim-0.0.2/tests/test_data/fmted_test_simulate_data.json +149 -0
  235. arksim-0.0.2/tests/test_data/test_empty_responses.json +165 -0
  236. arksim-0.0.2/tests/test_data/test_simulate_data.json +158 -0
  237. arksim-0.0.2/tests/unit/__init__.py +0 -0
  238. arksim-0.0.2/tests/unit/test_agent_config.py +191 -0
  239. arksim-0.0.2/tests/unit/test_agent_factory.py +101 -0
  240. arksim-0.0.2/tests/unit/test_error_detection.py +202 -0
  241. arksim-0.0.2/tests/unit/test_evaluator_entities.py +340 -0
  242. arksim-0.0.2/tests/unit/test_html_report_integration.py +406 -0
  243. arksim-0.0.2/tests/unit/test_llm.py +101 -0
  244. arksim-0.0.2/tests/unit/test_output_utils.py +126 -0
  245. arksim-0.0.2/tests/unit/test_simulation_engine_entities.py +144 -0
@@ -0,0 +1,18 @@
1
+ root = true
2
+
3
+ [*]
4
+ charset = utf-8
5
+ end_of_line = lf
6
+ insert_final_newline = true
7
+ trim_trailing_whitespace = true
8
+ indent_style = space
9
+ indent_size = 4
10
+
11
+ [*.{yml,yaml,json,toml}]
12
+ indent_size = 2
13
+
14
+ [*.md]
15
+ trim_trailing_whitespace = false
16
+
17
+ [Makefile]
18
+ indent_style = tab
@@ -0,0 +1 @@
1
+ * @arklexai/arksim-maintainers
@@ -0,0 +1,53 @@
1
+ name: Bug Report
2
+ description: Report a bug in Arksim
3
+ labels: ["bug"]
4
+ body:
5
+ - type: textarea
6
+ id: description
7
+ attributes:
8
+ label: Describe the bug
9
+ description: A clear description of the bug.
10
+ validations:
11
+ required: true
12
+ - type: textarea
13
+ id: steps
14
+ attributes:
15
+ label: Steps to reproduce
16
+ description: Steps to reproduce the behavior.
17
+ placeholder: |
18
+ 1. Run `arksim simulate config.yaml`
19
+ 2. ...
20
+ validations:
21
+ required: true
22
+ - type: textarea
23
+ id: expected
24
+ attributes:
25
+ label: Expected behavior
26
+ description: What you expected to happen.
27
+ validations:
28
+ required: true
29
+ - type: textarea
30
+ id: logs
31
+ attributes:
32
+ label: Error output or logs
33
+ description: Paste any relevant error messages or logs.
34
+ render: shell
35
+ - type: input
36
+ id: version
37
+ attributes:
38
+ label: Arksim version
39
+ placeholder: "0.0.1"
40
+ validations:
41
+ required: true
42
+ - type: input
43
+ id: python
44
+ attributes:
45
+ label: Python version
46
+ placeholder: "3.11"
47
+ validations:
48
+ required: true
49
+ - type: input
50
+ id: os
51
+ attributes:
52
+ label: Operating system
53
+ placeholder: "macOS 15, Ubuntu 22.04, etc."
@@ -0,0 +1,8 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Documentation
4
+ url: https://docs.arklex.ai/overview
5
+ about: Check the docs before opening an issue.
6
+ - name: Discussions
7
+ url: https://github.com/arklexai/arksim/discussions
8
+ about: Ask questions and share ideas.
@@ -0,0 +1,23 @@
1
+ name: Feature Request
2
+ description: Suggest a new feature or improvement
3
+ labels: ["enhancement"]
4
+ body:
5
+ - type: textarea
6
+ id: problem
7
+ attributes:
8
+ label: Problem or motivation
9
+ description: What problem does this feature solve? Why is it needed?
10
+ validations:
11
+ required: true
12
+ - type: textarea
13
+ id: solution
14
+ attributes:
15
+ label: Proposed solution
16
+ description: Describe the feature or change you'd like.
17
+ validations:
18
+ required: true
19
+ - type: textarea
20
+ id: alternatives
21
+ attributes:
22
+ label: Alternatives considered
23
+ description: Any alternative approaches you've thought about.
@@ -0,0 +1,27 @@
1
+ version: 2
2
+
3
+ updates:
4
+ - package-ecosystem: pip
5
+ directory: "/"
6
+ schedule:
7
+ interval: weekly
8
+ day: monday
9
+ open-pull-requests-limit: 10
10
+ labels:
11
+ - dependencies
12
+ - skip-changelog
13
+ commit-message:
14
+ prefix: "deps"
15
+
16
+ - package-ecosystem: github-actions
17
+ directory: "/"
18
+ schedule:
19
+ interval: weekly
20
+ day: monday
21
+ open-pull-requests-limit: 5
22
+ labels:
23
+ - dependencies
24
+ - ci
25
+ - skip-changelog
26
+ commit-message:
27
+ prefix: "ci"
@@ -0,0 +1,39 @@
1
+ ## Summary
2
+
3
+ <!-- Brief description of what this PR does and why. Link any related issues. -->
4
+
5
+ Closes #
6
+
7
+ ## Changes
8
+
9
+ <!-- What changed? List the key modifications. -->
10
+
11
+ -
12
+
13
+ ## Documentation and Changelog
14
+
15
+ <!-- All PRs must account for docs and changelog. Check every box that applies. -->
16
+
17
+ - [ ] Added an entry to `CHANGELOG.md` under the `[Unreleased]` section
18
+ - [ ] Updated relevant docs in `docs/` (if behavior, config, or API changed)
19
+ - [ ] Updated `README.md` (if installation, quickstart, or usage changed)
20
+ - [ ] No docs or changelog needed (explain why below)
21
+
22
+ <!-- If "no docs needed", briefly explain: e.g. "internal refactor, no user-facing change" -->
23
+
24
+ ## How to Test
25
+
26
+ <!-- Steps a reviewer can follow to verify the changes. -->
27
+
28
+ - [ ] `ruff check .` passes
29
+ - [ ] `ruff format --check .` passes
30
+ - [ ] `pytest tests/` passes
31
+ - [ ] Manual verification: <!-- describe what you tested -->
32
+
33
+ ## Notes
34
+
35
+ <!-- Anything reviewers should know: trade-offs, follow-up work, migration steps, etc. -->
36
+
37
+ ## Reviewers
38
+
39
+ /cc @arklexai/arksim-maintainers
@@ -0,0 +1,42 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ lint:
11
+ name: Lint
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/checkout@v6
15
+ - uses: actions/setup-python@v6
16
+ with:
17
+ python-version: "3.13"
18
+ - name: Pre-commit checks
19
+ run: |
20
+ pip install pre-commit
21
+ SKIP=changelog-reminder pre-commit run --all-files
22
+ - name: Lint
23
+ run: |
24
+ pip install ruff
25
+ ruff check .
26
+ ruff format --check .
27
+
28
+ test:
29
+ name: Test (Python ${{ matrix.python-version }})
30
+ runs-on: ubuntu-latest
31
+ strategy:
32
+ matrix:
33
+ python-version: ["3.10", "3.11", "3.12", "3.13"]
34
+ steps:
35
+ - uses: actions/checkout@v6
36
+ - uses: actions/setup-python@v6
37
+ with:
38
+ python-version: ${{ matrix.python-version }}
39
+ - name: Install dependencies
40
+ run: pip install -e ".[dev]"
41
+ - name: Test
42
+ run: pytest tests/ -v --tb=short
@@ -0,0 +1,108 @@
1
+ name: PR checks
2
+
3
+ on:
4
+ pull_request:
5
+ types: [opened, edited, synchronize, reopened, labeled, unlabeled]
6
+ branches: [main]
7
+
8
+ permissions:
9
+ pull-requests: read
10
+
11
+ jobs:
12
+ pr-checks:
13
+ name: PR checks
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - name: Validate PR title format
17
+ uses: actions/github-script@v8
18
+ with:
19
+ script: |
20
+ const title = context.payload.pull_request.title;
21
+
22
+ if (title.length > 72) {
23
+ core.setFailed(
24
+ `PR title is ${title.length} characters (max 72).\n` +
25
+ `Title: "${title}"`
26
+ );
27
+ return;
28
+ }
29
+
30
+ // Format: <component>: <verb> <description>
31
+ const pattern = /^[a-z][a-z0-9_-]*: [a-z]+ .+$/;
32
+ if (!pattern.test(title)) {
33
+ core.setFailed(
34
+ `PR title does not match the required format.\n\n` +
35
+ `Expected: <component>: <verb> <description>\n` +
36
+ ` - component: lowercase, may contain digits, hyphens, underscores\n` +
37
+ ` - verb: lowercase imperative (add, fix, update, remove, ...)\n` +
38
+ ` - description: free text\n\n` +
39
+ `Examples:\n` +
40
+ ` arksim: add retry logic to evaluator\n` +
41
+ ` simulator: fix config loading for empty fields\n` +
42
+ ` ci: update python version in workflow\n\n` +
43
+ `Got: "${title}"`
44
+ );
45
+ }
46
+
47
+ - name: Validate PR description has content
48
+ uses: actions/github-script@v8
49
+ with:
50
+ script: |
51
+ const body = context.payload.pull_request.body || '';
52
+
53
+ // Strip HTML comments
54
+ let cleaned = body.replace(/<!--[\s\S]*?-->/g, '');
55
+
56
+ // Strip markdown headers (lines starting with #)
57
+ cleaned = cleaned.replace(/^#+\s.*$/gm, '');
58
+
59
+ // Strip empty checklist items (unchecked boxes with no real text)
60
+ cleaned = cleaned.replace(/^- \[ \]\s*$/gm, '');
61
+
62
+ // Strip template checklist items that are just tool commands
63
+ cleaned = cleaned.replace(/^- \[ \] `[^`]+`\s*(passes)?\s*$/gm, '');
64
+
65
+ // Strip blank "Closes #" lines
66
+ cleaned = cleaned.replace(/^Closes\s+#\s*$/gm, '');
67
+
68
+ // Strip lone list dashes (empty bullet points)
69
+ cleaned = cleaned.replace(/^-\s*$/gm, '');
70
+
71
+ // Collapse whitespace
72
+ cleaned = cleaned.replace(/\s+/g, ' ').trim();
73
+
74
+ if (cleaned.length < 20) {
75
+ core.setFailed(
76
+ `PR description is too short (${cleaned.length} characters of real content, minimum 20).\n\n` +
77
+ `Please fill out the PR template with a meaningful summary and description.\n` +
78
+ `Template headers, comments, and empty checkboxes do not count.`
79
+ );
80
+ }
81
+
82
+ - name: Check CHANGELOG.md was updated
83
+ uses: actions/github-script@v8
84
+ with:
85
+ script: |
86
+ const labels = context.payload.pull_request.labels.map(l => l.name);
87
+ if (labels.includes('skip-changelog')) {
88
+ core.info('skip-changelog label found, skipping check.');
89
+ return;
90
+ }
91
+
92
+ const { data: files } = await github.rest.pulls.listFiles({
93
+ owner: context.repo.owner,
94
+ repo: context.repo.repo,
95
+ pull_number: context.payload.pull_request.number,
96
+ per_page: 100,
97
+ });
98
+
99
+ const changelogUpdated = files.some(f => f.filename === 'CHANGELOG.md');
100
+ if (!changelogUpdated) {
101
+ core.setFailed(
102
+ `CHANGELOG.md was not updated in this PR.\n\n` +
103
+ `Please add an entry under the [Unreleased] section describing your change.\n` +
104
+ `Use the appropriate heading: Added, Changed, Fixed, Removed, etc.\n\n` +
105
+ `If this change does not need a changelog entry (e.g. internal refactor,\n` +
106
+ `CI-only change), add the "skip-changelog" label to this PR.`
107
+ );
108
+ }
@@ -0,0 +1,105 @@
1
+ # Publishes arksim to PyPI.
2
+ #
3
+ # Triggered by pushing a version tag (e.g. v1.2.3).
4
+
5
+ name: Publish to PyPI
6
+
7
+ on:
8
+ push:
9
+ tags: ["v*"]
10
+
11
+ jobs:
12
+ # ---------------------------------------------------------------------------
13
+ # 1. Build wheel and source distribution.
14
+ # ---------------------------------------------------------------------------
15
+ build:
16
+ name: Build distribution
17
+ runs-on: ubuntu-latest
18
+
19
+ steps:
20
+ - name: Checkout
21
+ uses: actions/checkout@v4
22
+ with:
23
+ fetch-depth: 0
24
+
25
+ - name: Set up Python
26
+ uses: actions/setup-python@v5
27
+ with:
28
+ python-version: "3.12"
29
+
30
+ - name: Build wheel and sdist
31
+ run: |
32
+ pip install build
33
+ python -m build
34
+
35
+ - name: Verify distribution
36
+ run: |
37
+ pip install twine
38
+ twine check --strict dist/*
39
+
40
+ - name: Upload dist artifact
41
+ uses: actions/upload-artifact@v4
42
+ with:
43
+ name: dist
44
+ path: dist/
45
+ if-no-files-found: error
46
+
47
+ # ---------------------------------------------------------------------------
48
+ # 2. Create GitHub Release with changelog and built dist files.
49
+ # ---------------------------------------------------------------------------
50
+ create-release:
51
+ name: Create GitHub Release
52
+ runs-on: ubuntu-latest
53
+ needs: build
54
+ permissions:
55
+ contents: write
56
+
57
+ steps:
58
+ - name: Checkout
59
+ uses: actions/checkout@v4
60
+ with:
61
+ fetch-depth: 0
62
+
63
+ - name: Download dist artifact
64
+ uses: actions/download-artifact@v4
65
+ with:
66
+ name: dist
67
+ path: dist/
68
+
69
+ - name: Generate changelog
70
+ id: changelog
71
+ uses: mikepenz/release-changelog-builder-action@v5
72
+ with:
73
+ toTag: ${{ github.ref_name }}
74
+ token: ${{ secrets.GITHUB_TOKEN }}
75
+
76
+ - name: Create GitHub Release
77
+ uses: softprops/action-gh-release@v2
78
+ with:
79
+ tag_name: ${{ github.ref_name }}
80
+ name: ${{ github.ref_name }}
81
+ body: ${{ steps.changelog.outputs.changelog }}
82
+ files: dist/*
83
+ # Mark as pre-release when the version contains "rc".
84
+ prerelease: ${{ contains(github.ref_name, 'rc') }}
85
+
86
+ # ---------------------------------------------------------------------------
87
+ # 3. Publish to PyPI via OIDC trusted publisher
88
+ # ---------------------------------------------------------------------------
89
+ publish-pypi:
90
+ name: Publish to PyPI
91
+ runs-on: ubuntu-latest
92
+ needs: [build, create-release]
93
+ environment: pypi
94
+ permissions:
95
+ id-token: write
96
+
97
+ steps:
98
+ - name: Download dist artifact
99
+ uses: actions/download-artifact@v4
100
+ with:
101
+ name: dist
102
+ path: dist/
103
+
104
+ - name: Publish to PyPI
105
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,57 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.egg-info/
6
+ *.egg
7
+ dist/
8
+ build/
9
+ *.whl
10
+
11
+ # Generated by hatch-vcs at build time
12
+ arksim/_version.py
13
+
14
+ # Environment variables
15
+ .env
16
+ .env.*
17
+
18
+ # Virtual environments
19
+ .venv/
20
+ venv/
21
+ env/
22
+
23
+ # IDE
24
+ .vscode/
25
+ .idea/
26
+ *.swp
27
+ *.swo
28
+ *~
29
+
30
+ # Testing
31
+ .pytest_cache/
32
+ .coverage
33
+ htmlcov/
34
+ .mypy_cache/
35
+
36
+ # Linting
37
+ .ruff_cache/
38
+
39
+ # OS
40
+ .DS_Store
41
+ Thumbs.db
42
+
43
+ # Index and vector store files
44
+ index/
45
+ *.pkl
46
+ *.faiss
47
+
48
+ # Simulation/evaluation outputs
49
+ conversation*/
50
+ evaluation*/
51
+ results/
52
+
53
+ # Lock files (generated per environment)
54
+ uv.lock
55
+
56
+ # Local config overrides
57
+ config_simulate.yaml
@@ -0,0 +1,25 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v5.0.0
4
+ hooks:
5
+ - id: trailing-whitespace
6
+ - id: end-of-file-fixer
7
+ - id: check-yaml
8
+ - id: check-added-large-files
9
+ args: ["--maxkb=500"]
10
+
11
+ - repo: https://github.com/astral-sh/ruff-pre-commit
12
+ rev: v0.11.2
13
+ hooks:
14
+ - id: ruff
15
+ args: [--fix]
16
+ - id: ruff-format
17
+
18
+ - repo: local
19
+ hooks:
20
+ - id: changelog-reminder
21
+ name: Check CHANGELOG.md updated
22
+ entry: scripts/check-changelog.sh
23
+ language: script
24
+ pass_filenames: false
25
+ always_run: true
@@ -0,0 +1,71 @@
1
+ # Changelog
2
+
3
+ All notable changes to Arksim will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ <!-- Add your changes here under the appropriate heading. -->
11
+ <!-- Use: Added, Changed, Deprecated, Removed, Fixed, Security -->
12
+
13
+ ### Added
14
+
15
+ - GitHub Actions workflow to build, release, and publish `arksim` to PyPI on `v*` tag pushes, with dynamic VCS-based versioning via `hatch-vcs`
16
+
17
+ ### Changed
18
+
19
+ - Refactored `bank-insurance` and `e-commerce` example agents to use the OpenAI Agents SDK and corrected the example server port from `8080` to `8888`
20
+ - Agent configuration is now defined inline in `config.yaml` under the `agent_config` key instead of in separate `agent_config.json` files
21
+ - Updated all documentation and examples to use inline agent configuration
22
+ - UI now passes `agent_config`, `custom_metrics_file_paths`, and `metrics_to_run` from loaded config YAML
23
+
24
+ ### Removed
25
+
26
+ - Separate `agent_config.json` files from all examples (replaced by inline YAML config)
27
+ - Knowledge Configuration and Data folder sections from agent configuration docs
28
+
29
+ ### Security
30
+
31
+ - Removed third-party client data from test fixtures and evaluator prompt examples
32
+ - Replaced with generic insurance-domain examples consistent with the public bank-insurance example
33
+
34
+ ### Fixed
35
+ - Example servers: added logging before HTTP error responses, filtered system messages from agent chat history, fixed wrong config filename in e-commerce README
36
+ - Documentation: end-of-file newlines in `docs/insurance-customer-service-agent-evaluation.mdx` and `docs/e-commerce-customer-service-agent-evaluation.mdx`
37
+ - Documentation: trailing whitespace and end-of-file in `docs/simulate-conversation.mdx` and `docs/evaluate-conversation.mdx`
38
+ - Trailing whitespace and missing EOF newlines across 81 files (docs, examples, tests, source)
39
+ - UI file browser: `PROJECT_ROOT` now uses `cwd` for PyPI installs, parent navigation works correctly, YAML files shown in browser
40
+ - Lint: replaced `try/except/pass` with `contextlib.suppress` in example loader
41
+
42
+ ### Added
43
+
44
+ - Dependabot for automated pip and GitHub Actions dependency updates
45
+ - Pre-commit hooks with ruff, trailing whitespace, end-of-file, YAML, and changelog checks
46
+ - `py.typed` marker for PEP 561 type checking support
47
+ - Top-level lazy exports (`from arksim import run_simulation, Evaluator, ...`)
48
+ - `.editorconfig` for consistent editor settings
49
+ - `Makefile` with common dev commands
50
+ - Issue template chooser linking to docs and discussions
51
+ - Documentation and Changelog checklist in PR template
52
+
53
+ - CI restructured: separate Lint job, test matrix on Python 3.10 through 3.13, PR checks (title, description, changelog) in one job
54
+ - Dependabot PRs now auto-labeled `skip-changelog` to bypass changelog CI check
55
+
56
+ ## [0.0.1] - 2026-03-02
57
+
58
+ ### Added
59
+
60
+ - Multi-turn conversation simulation with configurable scenarios
61
+ - Quantitative and qualitative evaluation metrics
62
+ - Chat Completions and A2A agent protocol support
63
+ - CLI (`arksim simulate`, `arksim evaluate`, `arksim simulate-evaluate`)
64
+ - Python SDK with `run_simulation()` and `run_evaluation()`
65
+ - Parallel execution with configurable worker count
66
+ - Example setups for e-commerce and bank insurance use cases
67
+ - OpenAI, Anthropic, Google Gemini, and Azure OpenAI provider support
68
+ - HTML report generation for evaluation results
69
+
70
+ [Unreleased]: https://github.com/arklexai/arksim/compare/v0.0.1...HEAD
71
+ [0.0.1]: https://github.com/arklexai/arksim/releases/tag/v0.0.1
@@ -0,0 +1,42 @@
1
+ # Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We as members, contributors, and leaders pledge to make participation in our
6
+ community a harassment-free experience for everyone, regardless of age, body
7
+ size, visible or invisible disability, ethnicity, sex characteristics, gender
8
+ identity and expression, level of experience, education, socio-economic status,
9
+ nationality, personal appearance, race, caste, color, religion, or sexual
10
+ identity and orientation.
11
+
12
+ We pledge to act and interact in ways that contribute to an open, welcoming,
13
+ diverse, inclusive, and healthy community.
14
+
15
+ ## Our Standards
16
+
17
+ Examples of behavior that contributes to a positive environment:
18
+
19
+ - Using welcoming and inclusive language
20
+ - Being respectful of differing viewpoints and experiences
21
+ - Gracefully accepting constructive criticism
22
+ - Focusing on what is best for the community
23
+ - Showing empathy towards other community members
24
+
25
+ Examples of unacceptable behavior:
26
+
27
+ - The use of sexualized language or imagery, and sexual attention or advances of any kind
28
+ - Trolling, insulting or derogatory comments, and personal or political attacks
29
+ - Public or private harassment
30
+ - Publishing others' private information without explicit permission
31
+ - Other conduct which could reasonably be considered inappropriate in a professional setting
32
+
33
+ ## Enforcement
34
+
35
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
36
+ reported to the project maintainers at **support@arklex.ai**. All complaints will
37
+ be reviewed and investigated promptly and fairly.
38
+
39
+ ## Attribution
40
+
41
+ This Code of Conduct is adapted from the
42
+ [Contributor Covenant](https://www.contributor-covenant.org/), version 2.1.